• No se han encontrado resultados

Universidad Rafael Urdaneta Escuela de Ingeniería de Computación. MSc Jaime Soto. Problemas, algoritmos y programas

N/A
N/A
Protected

Academic year: 2021

Share "Universidad Rafael Urdaneta Escuela de Ingeniería de Computación. MSc Jaime Soto. Problemas, algoritmos y programas"

Copied!
49
0
0

Texto completo

(1)

• Problemas, algoritmos y programas

• Paradigmas y Lenguajes de programación • Desarrollo sistemático de aplicaciones • Un modelo de computador

MSc Jaime Soto

Universidad Rafael Urdaneta

Escuela de Ingeniería de Computación

(2)

¿En qué consiste la programación?

Es la planificación, proyección o ejecución de una

tarea o proceso

Para nosotros, describir lo que debe hacer la

computadora para resolver un

problema concreto

utilizando un lenguaje de programación

¿Qué es un programa?

Secuencia de instrucciones que indica las acciones

(3)

Fases para la resolución de problemas con una computadora:

1. Análisis: comprender y definir el problema

2. Desarrollo de la solución (algoritmo): secuencia lógica de pasos

para resolver el problema

3. Trascripción de la solución: a un lenguaje de programación 4. Prueba: seguir los pasos para verificar que la solución resuelve

verdaderamente el problema

(4)

¿Qué es un problema?

 Planteamiento de una situación cuya respuesta desconocida

debe obtenerse a través de métodos científicos

Tipos de problemas:Sin solución

Determinado: Con una solución, o más de una en número

fijo.

Indeterminado: Con indefinido número de soluciones.

(5)

Establecimiento del problema

Análisis: Consiste en conocer de manera exacta y

precisa en qué consiste el problema

Especificación: descripción precisa del problema

 Datos de partida  Resultado

.

lenguaje natural

lenguajes formales

puede resultar impreciso

lógica, matemáticas

(6)

Ejemplo

Problema: División euclídea  Especificación:

Datos

 2 enteros, dividendo y divisor (D,d)  d no nulo

Resultado

 2 enteros, cociente y resto (C,R)  0  R < d, tal que D = d * C + R

(7)

Etimología

 Alhuarizmí: sobrenombre del árabe Muhamed ibn Musa

(al-Jwarizmi), matemático persa

Definición de Algoritmo

(I) Procedimiento paso a paso para resolver un problema en una

cantidad finita de tiempo

(II) Una secuencia de instrucciones paso a paso para realizar

alguna tarea (normalmente un cálculo)

(8)

Características de los algoritmos

Precisión:

 Orden de cada paso

 Operación que se realiza en cada paso

Definición o determinismo:

 El algoritmo responderá de la misma forma en las mismas

condiciones

Finitud

 En el número de pasos

 En el tiempo de ejecución

(9)

Características de los algoritmos

La definición de un algoritmo debe describir tres

partes:

Entrada: datos necesarios  Proceso: instrucciones  Salida: resultados

.

Entrada

Proceso

Salida

Ejemplo: Suma

b

a

c

c

b

a

N

N

N

,

(10)

Lenguajes algorítmicos

 Sirven para describir algoritmos

 Son más precisos que el lenguaje natural pero menos rígidos

que un lenguaje de programación

 Son un paso intermedio en la descripción de algoritmos  Ejemplos: pseudocódigo, diagramas de flujo

(11)

Ejemplo de algoritmo en pseudocódigo: Suma

lenta

Suma lenta: consiste en ir pasando de a a b

una unidad cada vez, de forma que cuando

a=0, el resultado será el valor de b

.

1. Sean a, b

N

2. Leer a y b

b

b+1

3. Mientras a

0 hacer

(12)

Definición formal de algoritmo

Es una cuádrupla que contiene los siguientes

elementos:

Conjunto de los estados que se pueden presentar

en cada momento

Identificación de estados iniciales

Identificación de estados finales

Función de transición entre estados

(13)

Un estado está definido por cuatro elementos:

 Marca de la posición del algoritmo en la que se

define el estado

 Valores de las variables que entran en juego  Datos de entrada

 Resultados emitidos

(14)

Ejemplo: Estados de cómputo del algoritmo

suma-lenta

Posición Entrada Salida Valores de los datos

a b 1 [2 3 ] [] 2 3 2 [] [] 2 3 3 [] [] 1 3 4 [] [] 1 4 5 [] [] 0 4 6 [] [] 0 5 7 [] [5] 0 5

(15)

Aspectos de un algoritmo:

Necesarios:

Corrección:

respecto a las especificaciones.

Complejidad:

recursos que un algoritmo necesita

Deseables:

Generalidad:

es deseable que sirva para una clase

de problemas lo más amplia posible

Eficiencia:

será más eficiente cuanto menos pasos

(16)

Dado un determinado problema, pueden

existir varios algoritmos que lo resuelvan

Ejemplo:

suma de dos números enteros

No todos los problemas tienen solución

algorítmica

Ejemplo:

problema de parada (consistente en

encontrar un algoritmo que determine si otro

algoritmo finaliza o no con unos determinados

datos de entrada)

(17)

¿Qué es un programa?

Conjunto de instrucciones precisas escritas en

un lenguaje entendible por una computadora

¿Qué es la programación?

Es el proceso de construcción de programas.

En general consta de las siguientes fases:

 Análisis del problema

 Solución conceptual del problema

 Escritura del algoritmo a un lenguaje de programación  Comprobación de resultados

(18)

Ejemplo: Suma-lenta en Pascal

PROGRAM SumaLenta (input,output);

{Se suman dos enteros positivos, pasando unidades de uno a otro} VAR a,b:integer; BEGIN Readln(a,b); WHILE a <> 0 DO BEGIN a:=a-1; b:=b+1 END; {while} Writeln(b) END. {SumaLenta}

(19)

Definición de lenguaje de

programación:

Lenguaje artificial, diseñado para representar

algoritmos de forma inteligible por el

computador

Los lenguajes de programación son más

rigurosos que el lenguaje natural y además

tienen una sintaxis y semántica más sencilla

(20)

Las características más relevantes son:

Sintaxis

Semántica

Traducción y ejecución

(21)

Especifica inequívocamente la forma de construir

los programas en un determinado LP

La especificación de la sintaxis se realiza

mediante:

 Gramáticas BNF  Diagramas sintácticos

Número

entero

+

(22)

Asigna un significado a cada tipo de construcción

de un LP

Formas de especificación:

– Definiciones formales

– Ejemplos en los manuales

Write(‘hola’);

Write(‘hola’);

Produce en pantalla:

holahola

Y no:

hola

hola

(23)

El lenguaje de programación debe traducirse al

lenguaje de la máquina

Las formas de traducción son:

Compilación:

Todo el código fuente (en un archivo) se traduce al

código ejecutable (y se guarda en otro archivo)

El archivo ejecutable queda listo para su ejecución

Programa

Fuente

Compilación

Programa

Objeto

(24)

Interpretación:

 Se traduce una instrucción de código fuente  Se ejecuta dicha instrucción

Se repiten estos dos pasos con todas las instrucciones del código fuente

(25)

Errores de compilación

 Surgen durante la traducción (compilación) del código

fuente

 Son errores sintácticos, de tipo, etc

Errores de ejecución

 Surgen al ejecutar el código

 Son operaciones ilegales (división por cero), de tipo

(26)

Los motores que impulsan el desarrollo de los

lenguajes de programación son:

AbstracciónEncapsulaciónModularidadJerarquía

(27)

Abstracción

 Proceso mental por el que el ser humano extrae las

características esenciales de algo, e ignora los detalles superfluos.

Encapsulación

 Proceso por el que se ocultan los detalles de las

(28)

Modularización

 Proceso de descomposición de un sistema en un

conjunto de elementos poco acoplados (independientes) y cohesivos

Jerarquía

 Proceso de estructuración por el que se organizan un

conjunto de elementos en diferentes niveles atendiendo a unos criterios determinados

(29)

Leng. o código máquinaLeng. Ensamblador

Leng de alto nivel

Prog. EstructuradaProg. Modular

Prog. Con TAD’s (Tipos Abstractos de Datos)Prog. Orientada a Objetos

(30)

Se define como una colección de patrones

conceptuales que moldean la forma de

razonar sobre problemas, de formular

algoritmos y de estructurar programas

Paradigmas:

Programación imperativaProgramación funcionalProgramación lógica

(31)

Basada en comandos que actualizan variables que

están en almacenamiento

Permite cierto nivel de abstracción: variables,

expresiones, instrucciones

Para programar:

 declarar las variables necesarias

 Diseñar una secuencia (algoritmo) adecuada de

(32)

Ejemplo: Mayor de dos números en Pascal.

PROGRAM mayorDeDosNumeros;

VAR x,y, mayor;

BEGIN

Read (x,y);

if x > y then

mayor := x

else

mayor := y;

Write (mayor);

END.

(33)

Tiene su base en el concepto de función matemática:

f: dominio  rango

Para programar:

– Se construyen funciones sencillas

– Se construyen funciones más complejas a partir de las

sencillas

(34)

Ejemplo: Mayor de tres números en funcional

Definición de funciones max2 y max3:

max2(x,y) := if x > y then x else y max3(x,y,z) := max2(max2(x,y),z)

(35)

Tiene su base en cálculo de predicados de primer

orden:

Para programar:

– Se definen hechos (o predicados básicos)

– Se diseñan implicaciones para definir predicados

complejos

– Se determina la veracidad de los predicados para

(36)

Ejemplo: Parentescos madre(ana,luis) padre(josé,ana) abuelo(X,Z):-padre(X,Y),padre(Y,Z) abuelo(X,Z):-padre(X,Y),madre(Y,Z) Consultas: ?- abuelo(josé,luis). SI ?- abuelo(josé,ana). NO ?- abuelo(X,luis) X=josé

(37)

Prog. Imperativa Prog. Lógica (P.Declarativa) Prog. Funcional (P.Declarativa) Prog. orientada a objetos Prolog++ CLOS Smalltalk C++ Java Eiffel Prog. Concurrente Ada-95 Haskel Dephi LISP Prolog Pascal FC C PASCAL Fortran COBOL Ada Hope Ciao-Prolog

(38)

Definición-1 (Bauer, 1969):

el establecimiento y uso de principios robustos

de la ingeniería a fin de obtener

económicamente software que sea fiable y que

funcione eficientemente sobre máquinas reales

Definición-2 (IEEE, 1993):

la aplicación de un enfoque sistemático,

disciplinado y cuantificable hacia desarrollo,

operación y mantenimiento de software

(39)

Planificación

Análisis

Diseño

Codificación

Validación

Mantenimiento

(40)

Evaluación del interés del proyecto

Valoración de los recursos técnicos y humanos

Predicción del coste económico y del tiempo de

ejecución

(41)

 Establecimiento de las funciones que debe cumplir la aplicación  Planificación del trabajo conjunto de los diferentes módulos

 Elaboración de un sistema de pruebas para detección de errores  Resultado: especificaciones del funcionamiento general del

(42)

Diseño de los bloques

División en partes

Asignación de tareas a equipos de trabajo

(43)

Escritura del algoritmo en un lenguaje de programación

Resultado: algoritmos escritos en lenguaje algorítmico

(44)

Aplicación del sistema de pruebas a:

– los módulos

– las conexiones entre los módulos (prueba de integración) – la aplicación completa (prueba de validación)

Resultado: generación de la aplicación corregidos

(45)

 Redacción de la documentación actualizada para usuario y

programador

 Inicio de la explotación de la aplicación

 Detección y corrección de errores no detectados en las fases

anteriores

(46)

Unidad Central de

Proceso (UCP o CPU)

Memoria Principal

Dispositivos

Periféricos

(47)

Dispositivo de

almacenamiento

Instrucciones

Datos de entrada

Datos de salida

Elementos:

Dirección

Información

(48)

Dispositivo de procesamiento

Operaciones de control

Operaciones artiméticas y lógicas

Elementos:

Unidad de control

(49)

• Dispositivos periféricos: Intercambio de información con el exterior

– De entrada: Teclado, ratón, scanner …

– De salida: Pantalla, impresora, …

– De estrada/salida: Disco duro, Pendrive, LAN, …

Referencias

Documento similar

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

En estos últimos años, he tenido el privilegio, durante varias prolongadas visitas al extranjero, de hacer investigaciones sobre el teatro, y muchas veces he tenido la ocasión

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

En junio de 1980, el Departamento de Literatura Española de la Universi- dad de Sevilla, tras consultar con diversos estudiosos del poeta, decidió propo- ner al Claustro de la

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

El diseño abierto de esta plataforma permite al alumno centrarse, bien en el desarrollo de algoritmos y pruebas de software, utilizando cualquier lenguaje y bajo cualquier SO o

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. En términos de programación, un algoritmo es una secuencia de pasos lógicos que permiten