71
Diego Gutiérrez Tema 3. Algoritmos y programas

Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

  • Upload
    lephuc

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

Diego Gutiérrez

Tema 3. Algoritmos y programas

Page 2: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

2Diego Gutiérrez

Qué son los computadores? Son las máquinas programables que se utilizan como herramientas para resolver de forma automática problemas de tratamiento de información.

De forma muy simplificada podemos decir que un computador consta de:• Memoria que permite almacenar programas (datos y acciones).• Unidad central de proceso (CPU) cuya función es ejecutar las

acciones descritas en un programa. • Un conjunto de dispositivos períféricos que permiten comunicar el

computador con el exterior (teclados, pantallas, impresoras, altavoces, plotters, digitalizadores o scanners, etc.) y potenciar las capacidades de almacenamiento de información

Page 3: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

3Diego Gutiérrez

Sistema OperativoConjunto de programas que tienen por misión facilitar la utilización del computador

Acceso a los usuarios autorizadosEdición de ficheros de textoPuesta a punto y ejecución de programasSeguridad y protecciónFacturación y contabilidad de uso de recursosEtc.

Gestión óptima de la máquinaGestión de memoriaControl de dispositivos periféricosAcceso a ficherosAsignación de recursos y ordenación de tareasEtc.

Page 4: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

4Diego Gutiérrez

Un entorno de programación es un programa cuya misión es facilitar el desarrollo de programas utilizando un determinado lenguaje como, por ejemplo, Ada, C, C++, Java, Módula-2 o Pascal.

Integra un conjunto de herramientas para facilitar:• La edición de programas fuente• La compilación de programas fuente• La depuración de programas• La ejecución y prueba de programas• La construcción de programas ejecutables y de bibliotecas

Page 5: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

5Diego Gutiérrez

Cuestiones generales sobre el software:

El avance espectacular del hardware no ha ido acompañado por el software en cuanto a calidad y costeAumento de la demanda del software: cantidad, prestaciones, calidadLa capacidad de mantenimiento está amenazada por el mal diseño y el uso inadecuado de recursosLa parte principal del coste de una solución informática es el software

Page 6: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

6Diego Gutiérrez

Al buscar una solución:

Construcción sistemática frente a artísticaConstrucción usando componentes: reusabilidad, libreríasUso de herramientas de alto nivel: que construyen programas.

Page 7: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

7Diego Gutiérrez

EspecificaciónAnálisis

Diseño

Codificación

Pruebas

Mantenimiento

Mantenimiento:En general el software sufrirá cambios:

Errores detectadosAparición de nuevos requisitos:

Externos: periféricos, sistema operativoNuevas prestaciones…

Page 8: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

8Diego Gutiérrez

1) Fase de resolución:

ANÁLISIS : comprender y definir el problema.

DISEÑO (algoritmo) : desarrollar una secuencia lógica de pasos para resolver el problema.

PRUEBA : seguir los pasos exactos de la solución general para ver si realmente solucionamos el problema.

Un programa de ordenador hace lo que le ordenas que haga,no lo que quieres que haga

.

Page 9: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

9Diego Gutiérrez

2) Fase de implementación:

SOLUCIÓN ESPECÍFICA (programa) : traducir el algoritmo a un lenguaje de programación (código). Documentación!

PRUEBA: hacer que el computador siga las instrucciones. Comprobar los resultados y hacer las correcciones precisas hasta que las respuestas sean correctas.

MANTENIMIENTO: correcciones o actualizaciones al utilizar el programa.

Page 10: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

10Diego Gutiérrez

Un problema puede tener ninguna, una, varias o infinitas soluciones

Validación: ¿estamos resolviendo el problema correcto?

Verificación: ¿estamos resolviendo el problema de la manera correcta?

Page 11: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

11Diego Gutiérrez

Ejemplo: algoritmo de puesta en marchar de un coche (I)

1. Poner la llave.2. Asegurarse de que se está en punto muerto.3. Presionar el acelerador.4. Girar la llave hasta la posición de arranque.5. Si el motor arranca antes de seis segundos, dejar la llave en

posición de ignición.6. Si el motor no arranca antes de seis segundos, esperar seis

segundos y repetir los pasos del 3 al 6.7. Si el coche no arranca, llamar a la grúa.

Page 12: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

12Diego Gutiérrez

Ejemplo: algoritmo de puesta en marcha de un coche (II)

1. Poner la llave.2. Asegurarse de que se está en punto muerto.3. Presionar el acelerador.4. Girar la llave hasta la posición de arranque.5. Si el motor arranca antes de seis segundos, dejar la llave en

posición de ignición.6. Si el motor no arranca antes de seis segundos, esperar diez

segundos y repetir los pasos del 3 al 6 (un máximo de cinco veces).7. Si el coche no arranca, llamar a la grúa.

¡NO HAY QUE DAR NADA POR SUPUESTO!Un programa de ordenador hace lo que le ordenas que haga,

no lo que quieres que haga

Page 13: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

13Diego Gutiérrez

Lavar, aclarar, repetir

Page 14: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

14Diego Gutiérrez

El comportamiento de un computador viene regido por un programa cuya ejecución permite la resolución del problema considerado.

A partir de un problema de tratamiento de información ¿cómo escribir el programa que, al ser ejecutado en un computador, lo resuelva?

Page 15: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

15Diego Gutiérrez

El primer paso es la identificación de uno o más métodos que permitan resolver el problema en cuestión.

A continuación habrá que seleccionar uno de ellos atendiendo a consideraciones como su eficiencia o su sencillez.

Page 16: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

16Diego Gutiérrez

El siguiente paso será la formalización por escrito, del método seleccionado, incluyendo una descripción de la información relevante asociada al problema y una descripción del modo en que debe ser tratada esa información para resolverlo: la descripción de una secuencia ordenada y finita de pasos, exenta de ambigüedades, cuya ejecución proporcione una solución al problema considerado.

El resultado de esta formalización recibe el nombre de algoritmo.

Page 17: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

17Diego Gutiérrez

¿Cómo se va a la Puerta del Sol?

Idioma

Grado de detalle Recursos disponibles

… … … …

Page 18: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

18Diego Gutiérrez

¿Cómo se va a la Puerta del Sol?

Madrid, España Tiahuanaco, Perú

Page 19: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

19Diego Gutiérrez

Utilizando notación algorítmica, la definición de un algoritmo responde al siguiente esquema general:

algoritmo nombre [(lista_de_parámetros)] [devuelve nombreTipo]{ Especificación }Definición de elementos internos del algoritmo tales como constantes, tipos de

datos, variables, bibliotecas, procedimientos y funcionesprincipioDescripción de acciones

fin

Page 20: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

20Diego Gutiérrez

Un algoritmo consta de:

1. Una descripción de la información asociada al problema.2. Una descripción del modo de tratamiento de esa información.

Se caracteriza por el nombre y la descripción de parámetros.

Page 21: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

21Diego Gutiérrez

Especificación de un algoritmo:

Al definir un algoritmo debe incluirse una especificación que describa de forma clara y concisa el comportamiento del algoritmo, es decir, qué es lo que hace el algoritmo cuando es ejecutado y en qué condiciones:

1. Precondición: una descripción de las condiciones que deben satisfacer los datos de entrada al algoritmo.

2. Postcondición: una descripción de las condiciones que deben satisfacer los datos de salida o resultados del algoritmo.

Page 22: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

22Diego Gutiérrez

Page 23: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

23Diego Gutiérrez

El diseño interno del algoritmo, es decir, el cómo lo hace, tiene dos partes bien diferenciadas.

En la primera se definen los elementos auxiliares que el algoritmo va a utilizar. Estos elementos pueden ser datos constantes, tipos de datos, datos variables, bibliotecas, procedimientos o funciones (parte declarativa)

En la segunda se describen las acciones que deberán realizarse sobre los datos del algoritmo cuando éste sea invocado (parte ejecutiva)

Page 24: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

24Diego Gutiérrez

Propiedades de los algoritmos:

Condiciones Necesarias:

Su corrección: debe proporcionar una solución correcta del problema planteado en su especificación (finitud, no ambigüedad…).

Su legibilidad: el documento que describe el algoritmo ha de ser fácil de entender no sólo por su autor, sino por otras personas que posean unos conocimientos suficientes de programación (por ejemplo, por otros programadores).

Page 25: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

25Diego Gutiérrez

Propiedades de los algoritmos:

Propiedades deseables:

Su generalidad: no debe limitarse a resolver problemas muy específicos si con un esfuerzo suplementario asumible es capaz de resolver una más amplia gama de problemas.

Su reusabilidad: debe procurarse que cada algoritmo que se diseña en el contexto de un trabajo de programación pueda ser utilizado sin cambios o con mínimas modificaciones en otros trabajos.

Page 26: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

26Diego Gutiérrez

Propiedades de los algoritmos:

Propiedades deseables:

Su eficiencia, es decir, los recursos que consume el algoritmo, especialmente su tiempo de ejecución y la cantidad de memoria que requiere, deben ser razonables para el tipo de problema que resuelve.

Su independencia del lenguaje de programación, del computador y del sistema operativo de éste. El algoritmo debe poder ser traducido con sencillez a diferentes lenguajes de programación para poder ser ejecutado en diferentes computadores que, eventualmente, pueden estar gestionados por sistemas operativos distintos.

Page 27: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

27Diego Gutiérrez

ejemplo de algoritmo

Algoritmo saludar (pantalla);{ Este algoritmo muestra un mensaje de bienvenida }{ Pre: ---- }{ Post: en pantalla HOLA }{ Definición de los elementos internos usados }Principio

mostrarMensaje("HOLA colega")Fin

Page 28: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

28Diego Gutiérrez

HOLA colegaAlgoritmo saludar (pantalla);{ Este algoritmo muestra un mensaje de bienvenida }{ Pre: ---- }{ Post: en pantalla HOLA }{ Definición de los elementos internos usados }Principio

mostrarMensaje("HOLA colega")Fin

ejemplo de algoritmo

Page 29: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

29Diego Gutiérrez

HOLA colegaAlgoritmo saludar (pantalla);{ Este algoritmo muestra un mensaje de bienvenida }{ Pre: ---- }{ Post: en pantalla HOLA }{ Definición de los elementos internos usados }Principio

mostrarMensaje("HOLA colega")Fin

ejemplo de algoritmo

Page 30: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

30Diego Gutiérrez

En un curso introductorio de programación es recomendable tomar una cierta distancia de cualquier lenguaje de programación concreto.

Para comprender y saber aplicar los conceptos básicos de la programación es preferible utilizar una notación de algoritmos o notación algorítmica que no se ciña estrictamente a ningún lenguaje de programación comercial y que además utilice unos términos y una sintaxis que sea próxima a nuestra lengua materna.

Page 31: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

31Diego Gutiérrez

A partir de un algoritmo escrito en una determinada notación algorítmica se debe abordar su codificación, tarea consistente en reescribir el algoritmo utilizando un lenguaje de programación (Ada, C, C++, Java, Módula-2, Pascal, etc.)

El resultado de la codificación es un programa (escrito en un determinado lenguaje) que, al igual que un algoritmo, consta de una descripción de objetos informáticos (tipos de datos, datos constantes, datos variables, bibliotecas, procedimientos, funciones, etc.) y de una descripción de las acciones que debe ejecutar

Este será procesado (interpretado o compilado) en el sistema informático del que se dispone.

Page 32: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

32Diego Gutiérrez

Transformación de un problema en un programa ejecutable por un ordenador

Problema Algoritmo Programa

Análisis /Diseño

Codificación

Lenguaje Natural Lenguaje Algorítmico / pseudocódigo

PASCAL, C, Ada, Basic, Fortran, COBOL, Java,

C++, Lisp, ...

Page 33: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

33Diego Gutiérrez

Noción de algoritmo:

Acción: Es un acontecimiento producido por un actor (o ejecutante de una acción) que tiene lugar durante un periodo de tiempo finito y que tiene como consecuencia o resultado una nueva situación bien definida y previsible.

Estado: Es el conjunto de objetos (con sus circunstancias) disponibles en un instante determinado.

Algoritmo: Es la descripción de una sucesión finita de acciones que permite transformar el entorno del estado inicial dado en el final deseado.

Page 34: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

34Diego Gutiérrez

Algoritmo para calcular el factorial de un número:

Iremos calculandofactorial de n =

1* 2 * ...*i * ... npara valores crecientes de i hasta n

i:=1;

factorial:=1;

Mientras Que i < n hacer

i:= i+1;

factorial:= factorial * i

FinMientrasQue;

Solución informalen lenguaje natural

Algoritmo enlenguaje algorítmico

Page 35: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

35Diego Gutiérrez

Programa: Es un algoritmo escrito en términos que pueda interpretar (ejecutar) un computador. A él se llega tras codificar el algoritmo en algún lenguaje de programación.

i:=1;

factorial:=1;

Mientras Que i < n hacer

i:= i+1;

factorial:= factorial * i

FinMientrasQue;

i:=1; factorial:=1;

While i < n do

begin

i:= i+1;

factorial:= factorial * i

end;

i=1; factorial=1;

While (i < n) factorial*=++i;

Page 36: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

36Diego Gutiérrez

Elementos de un lenguaje:SIMBOLOS

Palabras clave o reservadas = {IF, THEN, WHILE, …}Caracteres = {‘a’,..’z’,’A’..’Z’,’#’,’?’,……. }Dígitos = {0,..,9}Otros símbolos = {‘.’ , ’,’ , ‘;’ ,…}

SINTAXISConjunto de reglas sintácticas Notaciones para expresar las reglas:

• Backus-Naur• Grafo Sintáctico

SEMANTICASignificado de los programas, cómo se comportan al ser ejecutados

Page 37: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

37Diego Gutiérrez

Símbolos. Un algoritmo o programa consta de una secuencia de símbolos que pueden pertenecer a las siguientes categorías:

• Palabras claves o palabras reservadas por la propia notación algorítmica (o por el lenguaje de progamación): algoritmo, principio, fin, si, entonces, si_no, finSi, tabla, registro, fichero, mod, div, cierto, falso, etc.• Identificadores: nombres que se asocian a objetos informáticos que el programador define en los algoritmos o programas que escribe: i, cuenta, nombre, n, saludar, etc.• Operadores: denotados por símbolos constituidos por uno o dos caracteres: + - * / > ≥ = ≠ < ≤ ¬ AND OR etc.• Separadores: denotados por símbolos constituidos por un único carácter, como los siguientes: , ; . : ( ) [ ] etc.

Page 38: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

38Diego Gutiérrez

Sintaxis: Conjunto de reglas que indican cómo encadenar símbolos para formar “frases” correctas.

Ejemplos identificadores válidos: P3Q numero_PIEjemplo identificadores no válidos: 3PQ _numero

<identificador>::= <letra> {<letra> | <digito> | ’_’}

alternativa0 o más veces

letra

letra

digito

_

identificador

Page 39: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

39Diego Gutiérrez

Sintaxis:

digitoentero sin signo

digitoenterosin signo

enterosin signo. E

+

-

numerosinsigno

Page 40: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

40Diego Gutiérrez

Sintaxis:

expresiónbooleana sentencia

sentencia

THEN

ELSE

IFsentenciaIF

<Sentencia IF> ::= IF <expresion booleana> THEN <bloque>

[ELSE <bloque>]

0 o 1 vez

Page 41: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

41Diego Gutiérrez

Semántica: determina el significado que tiene cada “frase” para el computador y, por lo tanto, para el programador.

La semántica de la instrucción condicional cuya sintaxis se acaba de presentar, determina que debe evaluarse, en primer lugar, <expresión>. Si el resultado es igual al valor lógico cierto entonces se ejecutará la <intrucción> descrita tras el símbolo entonces, mientras que en el caso contrario, es decir, cuando el resultado de evaluar <expresión> es falso, se ejecutará la <intrucción> descrita tras el símbolo si_no.Cuando en una instrucción condicional ha sido omitida la cláusula si_no y <expresión> es evaluada a falso, entonces no se ejecuta ninguna <instrucción>.

Page 42: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

42Diego Gutiérrez

Estilo de Programación

Programación imperativaLenguajes orientados a instruccionesProgramas = Receta

Se encadenan de forma explicita las instrucciones.

Describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea. Influenciado por la arquitectura de la máquina

Prácticamente todo el hardware de los computadores está diseñado para ejecutar código de máquina, que es nativo al computador, escrito en una forma imperativa

Page 43: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

43Diego Gutiérrez

Metodología de Programación

Programación EstructuradaUtilización de mecanismos de abstracción (funcional y de datos) como herramienta para dominar la complejidad.Utilización de una metodología de diseño descendente (abstracción funcional)Reducido número de estructuras de control:

Composición secuencialComposición condicionalComposición iterativa

Énfasis en los mecanismos de estructuración de datos. Se introduce la idea de tipo abstracto de dato: Separación de los aspectos ligados a la especificación de un tipo de los de la implementación.

Definición de métodos que garanticen la corrección de programas (verificación formal)Notación independiente del lenguaje de programación.

Page 44: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

44Diego Gutiérrez

Metodología de Programación

Programas = Algoritmos + Estructuras de datos

Estructuras de datos = Abstracciones de la realidad que nos permiten representar el conjunto de situaciones esperables al resolver el problema.

Algoritmos = Esquemas de composición finita de instrucciones que permiten representar de forma no ambigua el flujo de control (Elorden en el que se ejecutarán las instrucciones)

Page 45: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

45Diego Gutiérrez

Pensamiento humano.

Lenguaje natural (inglés, francés, alemán, etc.)

Lenguaje de alto nivel (Pascal, FORTRAN, COBOL, etc.)

Lenguaje de bajo nivel

Lenguaje ensamblador

Código Máquina (computadora)

Page 46: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

46Diego Gutiérrez

Niveles de lenguajes de programacion:

Maquina

Page 47: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

47Diego Gutiérrez

Niveles de lenguajes de programacion:Alto Nivel

Mas fáciles de programarIndependencia de la maquinaNecesidad de traductores compiladoresMenor coste de desarrolloMas fácilmente manteniblesDetección de erroresTransportablesSon un compromiso entre eficiencia y manejabilidad

Maquina

Page 48: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

48Diego Gutiérrez

Niveles de lenguajes de programacion:Bajo Nivel

Programas específicos para un tipo de máquinaPueden permitir hacer cosas de forma más eficiente

Maquina

Page 49: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

49Diego Gutiérrez

Lenguajes de programación:

FORTRAN (1956): FORmula TRANslator. Calculo científico.COBOL (1959). Ideal para gestión: Pocas estructuras de control, muchas capacidades de manejo de dato.ALGOL (1960): Primer intento de formalizar la resolución de problemas. Programas estructurados con tipos de datos.Lisp (1960): Sigue en uso. Estructura de datos simple (La lista). Tratamiento simbólico de la información. Su éxito se debe a que soporta más estrategias de descomposición modular que cualquier otro lenguaje.BASIC (1965): Beginners All Purpose Symbolic Language. Lenguaje interpretado, sin énfasis en tipos de datos.PASCAL (1971): Desciende de ALGOL. Paradigma de la programación estructurada.C (1972): Desarrollado por Dennis Ritchie de AT&T Bell Laboratories para ofrecer un lenguaje de alto nivel en el cual se pudiera programar UNIX.Lenguajes orientados a objetos (C++, Eiffel, C#,…): A la hora de organizar el software se focaliza en las abstracciones de datos en lugar de en la funcionalidad.JAVA: Lenguaje orientado a objeto, que se puede ejecutar en cualquier máquina Idea de máquina virtual.

Page 50: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

50Diego Gutiérrez

El procesador “tractor”

MI A R MD A R

1 1 0 1 1 0 Avanza 1 m

1 0 1 1 0 1 Retrocede 1 m

1 1 0 0 0 0 Gira Derecha 90º

0 0 0 1 1 0 Gira Izquierda 90º

Page 51: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

51Diego Gutiérrez

El procesador “tractor”

ProblemaEl tractor se encuentra en A, mirando al norte, y tengo que llevarlo

a B

Page 52: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

52Diego Gutiérrez

El procesador “tractor”

AlgoritmoSigue recto hasta el fondoGira a la derechaSigue recto hasta el fondo

ProgramaMI A R MD A R1 1 0 1 1 01 1 0 1 1 01 1 0 0 0 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 0

Lo lleva a I

Lo direcciona hacia B

Lo lleva a B

Page 53: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

53Diego Gutiérrez

El procesador “tractor”

ProgramaMI A R MD A R1 1 0 1 1 01 1 0 1 1 01 1 0 0 0 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 0

Lo lleva a I

Lo direcciona hacia B

Lo lleva a B

Es farragoso programar a nivel MAQUINAEs farragoso programar a nivel MAQUINA

Page 54: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

54Diego Gutiérrez

El procesador “tractor”Para facilitar la programación nos inventamos:

NemotécnicosAV Avanza 1 1 0 1 1 0GD Giro Derecha 1 1 0 0 0 0RE Retrocede 1 0 1 1 0 1GI Giro Izquierda 0 0 0 1 1 0

Page 55: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

55Diego Gutiérrez

El procesador “tractor”Para facilitar la programación nos inventamos:

Esquemas de composición

Hemos mejorado en ABSTRACCION, pero nos hemos alejado de lo que “interpreta la máquina”.

NECESIDAD DE TRADUCCION

Page 56: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

56Diego Gutiérrez

El procesador “tractor”Supongamos otro procesador: un tractor con un solo motor que puede:

Avanzar 1 m 0 1Retroceder 1 m 1 0Girar Izquierda 90 1 1

Problema: El mismoAlgoritmo: El mismoPrograma: 01 01 11 11 11 01 01 01 01 01 01

DISTINTO

Pero el programa, en alto nivel, puede ser el mismo, basta con el traductor adecuado

Page 57: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

57Diego Gutiérrez

El procesador “tractor”

ProgramaAvanza 2 Derecha 1Avanza 6

1 1 0 1 1 01 1 0 1 1 01 1 0 0 0 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 01 1 0 1 1 0

0 1 0 1 1 11 1 1 1 0 10 1 0 1 0 1 0 1 0 1

Código parael primertractor

Código parael tractor conun solo giro

Page 58: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

58Diego Gutiérrez

Estructura general de un programa.Cabecera

Tipos

Constantes y Variables

Procedimientos

y Funciones

Declaraciones

Algoritmo nombre_alg (lista de parámetros);{Descripción del algoritmo}{Pre: Descripción de los parámetros de entrada}{Post: Descripción de los parámetros de salida}

TiposConstantes y VariablesProcedimientos y Funciones

AsignacionesInstrucciones de entrada-salida,Instrucciones de control,Llamadas a procedimientos y funciones,…

Asignaciones,Instrucciones de entrada-salida,Instrucciones de control,Llamadas a procedimientos y funciones,…

Principio

Instrucciones

Fin.

Algoritmo nombre_alg (Lista de parámetros);{Descripción del algoritmo}{Pre: Descripción de los parámetros de entrada}{Post: Descripción de los parámetros de salida}

Page 59: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

59Diego Gutiérrez

Page 60: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

60Diego Gutiérrez

Identificador:

LETRA

LETRA

DÍGITO

DÍGITO

Entero sin signos:

Page 61: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

61Diego Gutiérrez

. Dígito E

-

+Entero

sin signo

Real sin signo:

Identificadorde constante

Número sin signo

nil

‘ Carácter ´

Constante sin signo:

Enterosin signo

Page 62: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

62Diego Gutiérrez

+

-

Identificadorde constante

Carácter

Número sinsigno

´

Constante:

`

Page 63: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

63Diego Gutiérrez

Identificadorde variable

Identificadorde campo [ Expresión ]

,

. Identificadorde campo

Variable:

Page 64: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

64Diego Gutiérrez

]

Constante sin signo

Variable

Identificadorde función ( Expresión )

,

( Expresión )

not Factor

[

Expresión .. Expresión

,

Factor:

Page 65: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

65Diego Gutiérrez

factor

*

factor

/ div mod and

Término:

*

*término

-+ or

término

Expresión simple:

Page 66: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

66Diego Gutiérrez

= V= V VI V

I in

Expresiónsimple

Expresiónsimple

Expresión:

Page 67: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

67Diego Gutiérrez

( Identificador :Identificador

de tipo

,

fuction

var

procedure Identificador

,

)

;

Lista de parámetros:

Page 68: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

68Diego Gutiérrez

Identificadorde tipo

( Identificador )

,

Constante .. Constante

Tipo simple:

Page 69: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

69Diego Gutiérrez

Tipo simple

Identificador de tipo

Packed

array [ Tipo simple

,

of] tipo

file of tipo

set of Tipo simple

Lista de camposrecord end

Tipo:

Page 70: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

70Diego Gutiérrez

Identificador : Tipo

,

;

case Identificador : Identificador de tipo of

,

(: Lista de campos )

;

Constante

Lista de campos:

Page 71: Tema 3. Algoritmos y programas - Gigagiga.cps.unizar.es/~diegog/ficheros/teaching/03_Algoritmos_y... · ¾Aumento de la demanda del software: ... seguir los pasos exactos de la solución

71Diego Gutiérrez

Entero sin signo

;

const identificador = constante

;type identificador = tipo

;

var identificador : tipo

;,

; bloque ;

procedure identificador Lista de parámetros

function Ident. tipoidentificador Lista parámetros :

begin instruccion end

label