49
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

Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

  • Upload
    doduong

  • View
    228

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

• 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

Page 2: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

¿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

que han de ser ejecutadas por una computadora

Page 3: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

.

Page 4: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

¿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.

.

Page 5: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Descripción:

Page 6: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Page 7: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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)

.

Page 8: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

.

Page 9: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Características de los algoritmos

La definición de un algoritmo debe describir tres

partes:

Entrada: datos necesarios

Proceso: instrucciones

Salida: resultados

.

Entrada SalidaProceso

Ejemplo: Suma

baccba

NNN

,

Page 10: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

.

Page 11: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

4. Escribir b a a-1

Page 12: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

.

Page 13: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

.

Page 14: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Ejemplo: Estados de cómputo del algoritmo suma-

lentaPosició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

Page 15: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

necesite

Page 16: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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)

Page 17: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

¿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

Page 18: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Ejemplo: Suma-lenta en PascalPROGRAM 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}

Page 19: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Page 20: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Las características más relevantes son:

Sintaxis

Semántica

Traducción y ejecución

Errores y cómo subsanarlos

Page 21: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

+

-

Entero sin signo

Page 22: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

• 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

Page 23: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Programa Objeto

Compilación

Código fuente Código ejecutable

Page 24: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Page 25: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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 lógico, etc

Page 26: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Los motores que impulsan el desarrollo de los

lenguajes de programación son:

Abstracción

Encapsulación

Modularidad

Jerarquía

Page 27: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

características de una abstracción

Page 28: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Page 29: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Leng. o código máquina

Leng. Ensamblador

Leng de alto nivel

Prog. Estructurada

Prog. Modular

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

Prog. Orientada a Objetos

Tiempo

Page 30: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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 imperativa

Programación funcional

Programación lógica

Page 31: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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 instrucciones (asignaciones)

Page 32: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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.

Page 33: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

• 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

– Se evalúan las funciones sobre los datos de entrada

Page 34: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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)

NOTA: “:=“ en este caso significa “se define como”

Page 35: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

• 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 individuos concretos

Page 36: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Ejemplo: Parentescosmadre(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é

Page 37: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Page 38: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Page 39: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

• Planificación

• Análisis

• Diseño

• Codificación

• Validación

• Mantenimiento

Page 40: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Resultado: aprobar o descartar el proyecto

Page 41: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

software

Page 42: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Diseño de los bloques

División en partes

Asignación de tareas a equipos de trabajo

Resultado: algoritmos escritos en lenguaje algorítmico

Page 43: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Escritura del algoritmo en un lenguaje de programación

Resultado: algoritmos escritos en lenguaje algorítmico

Page 44: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

• 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

todos los errores detectados

Page 45: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

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

Resultado: explotación de la aplicación

Page 46: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Unidad Central de

Proceso (UCP o CPU)

Memoria Principal

Dispositivos

Periféricos

BUS

Page 47: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Dispositivo de

almacenamiento

Instrucciones

Datos de entrada

Datos de salida

Elementos:

Dirección

Información

Page 48: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

Dispositivo de procesamiento

Operaciones de control

Operaciones artiméticas y lógicas

Elementos:

Unidad de control

Unidad Arimético - Lógica

Page 49: Universidad Rafael Urdaneta Escuela de Ingeniería de ... · Escuela de Ingeniería de Computación ... –la aplicación completa (prueba de validación) ... –De salida: Pantalla,

• 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, …

• BUS: comunicación de los elementos internos