Tema 23 – Diseño de algoritmos.

Tema 23 – Diseño de algoritmos.

1. INTRODUCCIÓN.. 2

2. CARACTERÍSTICAS DE LOS ALGORITMOS. 2

3. ESTRUCTURA DE UN ALGORITMO.. 2

3.1 Datos. 2

3.2 Expresiones. 3

3.3 Instrucciones. 4

4. DIAGRAMAS DE FLUJO.. 7

4.1 Organigramas. 7

4.2 Ordinogramas. 7

5. PSEUDOCÓDIGO.. 8

5.1 Primitivas. 8

5.2 Sentencias de Control 9

6. OTRAS TÉCNICAS DESCRIPTIVAS. 12

6.1 Diagramas de cajas. 12

6.2 Tablas de decisión. 13

1. INTRODUCCIÓN

Algoritmo: Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. (Viene del árabe Al-Jwarizmi)

2. CARACTERÍSTICAS DE LOS ALGORITMOS

– Ser fiable. Resultados exactos y precisos.

– Ser eficiente. No ocupa memoria. Rápido en su ejecución.

– Ser robusto. Tener prevista una respuesta siempre.

– Ser transportable. Funcionar en cualquier ordenador y S.O.

– Interfaz amigable. Mensajes claros y concisos. Buena documentación.

3. ESTRUCTURA DE UN ALGORITMO

3.1 Datos
clip_image002
3.1.1 Datos de tipo numérico

§ Enteros: Números positivos o negativos. (+5) (-5) …

§ Reales: Números con decimales. (+3.14) …

3.1.2 Datos de tipo carácter

Letras, números, cadenas de caracteres…

Comillas dobles o simples

“A” “a” “+” “1” “23/88”

3.1.3 Datos de tipo lógico (booleanos)

2 valores (Verdadero o falso)

3.1.4 Estructura de datos (estructurados)

Definidos por el usuario

3.2 Expresiones

Unión de varios operandos (variables, constantes…) unidos por operadores que realizan acción sobre ellos.

3.2.1 Operandos

clip_image004Datos que intervienen en las expresiones. (constantes o variables)

3.2.1.1 Constantes

clip_image005Elementos que no varían durante la ejecución. Se les puede asignar nombre al principio del algoritmo para más comodidad.

3.2.1.2 Variables

Elementos cuyo contenido puede modificarse durante la ejecución de un programa. Trozos de memoria capaces de contener un solo dato, a los que el programador les asigna un nombre.

clip_image006Hay que indicar (nombre, tipo, valor inicial, longitud)

3.2.2 Operadores

clip_image008Unen los distintos operandos de una expresión.

3.3 Instrucciones

clip_image010

3.3.1 Simples
3.3.1.1 Declarativas

Sirven para declarar librerías, variables, constantes, arreglos, punteros, estructuras…

Por ejemplo:

Para librerías:

las librerías las declaramos porque vamos a usar recursos que contienen ellas.

#include <iostream.h> ——> cin , cout..

#include <conio.h> ——> funcion getch()..

3.3.1.2 Primitivas

Instrucciones que se ejecutan de forma inmediata.

§ Entrada: Toma datos del exterior y los guarda en variables.

§ Salida: Presentan en pantalla o impresora, comentarios, mensajes al operador, contenido de variables, valor de constantes…

§ Asignación: Asigna valores a las variables dentro del programa reemplazando el valor si ya contenía uno.

3.3.1.3 De control

Permiten controlar a las instrucciones que permiten controlar la ejecución de otras instrucciones bajo ciertas circunstancias.

§ Alternativas: Se ejecutarán una serie de instrucciones dependiendo de si cumple o no una determinada condición.

o Simples

Se utiliza cuando en un programa se quiere ejecutar un bloque de instrucciones sólo bajo una determinada condición.

clip_image012

o Dobles

Como el anterior pero doble.

clip_image014

o Múltiples

Se utilizan en casos donde la ejecución de un grupo de instrucciones u otro dependen de valores concretos y conocidos de una variable.

clip_image016

§ Repetitivas

Se denomina bucle o ciclo a un proceso que dentro de un programa se repite un cierto número de veces.

o Mientras (while) No entra al bucle si no se cumple

clip_image018

o Repetir…hasta (Do-while) Entra al menos 1 vez hasta que no se cumpla.

clip_image020

o Para (for)

Esta estructura ejecuta las acciones del cuerpo del bucle un número especificado de veces, y de modo automático controla el número de iteraciones o pasos.

clip_image022

o Iterar

Evalúa la condición en cualquier lugar del bucle.

3.3.1.4 Comentarios

Favorecen la comprensión del programa. No afectan al programa.

clip_image023

4. DIAGRAMAS DE FLUJO

· Herramienta para poder representar de forma clara y visual el flujo de datos y la secuencia de ejecución de un programa.

· Diagramas de flujo de sistema (Organigramas)

· Diagramas de flujo del programa (Ordinogramas)

4.1 Organigramas

Parte central el proceso, rodeado en la parte superior por los soportes de entrada que utilice y en la parte inferior por los soportes de salida y a sus lados soportes de E/S

clip_image025

clip_image027 EJEMPLO

4.2 Ordinogramas

clip_image029Representan con mucho más detalle la secuencia de acciones a realizar con los datos de entrada para la consecución de los datos de salida.

clip_image031

5. PSEUDOCÓDIGO

Se utilizarán distintos símbolos que indicarán todas las posibilidades de dicha instrucción.

5.1 Primitivas
5.1.1 Salida

clip_image032Muestra por pantalla el literal, el contenido de la variable, el valor de la constante o el resultado de la expresión aritmética que lleve como operando.

“literal”

ESCRIBIR Nombre variable

Nombre-constante

Expresión aritmética

5.1.2 Entrada

Permite la introducción por teclado de un valor que se almacenará en la variable que lleve como operando.

Leer nombre-variable

5.1.3 Asignación

clip_image033clip_image034clip_image035clip_image036Se asignará un valor a la variable destino. Podrá ser el contenido de otra variable, el valor de una constante, el resultado de una expresión aritmética, o un literal. = nombre-variable

Nombre-var-destino nombre-constante

Expresión aritmética

clip_image037 literal

5.2 Sentencias de Control
5.2.1 Alternativas

Permiten la ejecución de un bloque de instrucciones en el caso de que se cumpla una determinada condición.

clip_image038clip_image039clip_image040clip_image041clip_image042clip_image043 Literal < Literal

Variable > Variable

Constante <= Constante

Exp-aritmética >= Exp-aritmética <>

5.2.1.1 Simple

Esta instrucción provoca una evaluación de la condición, en el caso de que esta se cumpla se pasaría a ejecutar el grupo de instrucciones que están detrás de ENTONCES y a continuación las que estuvieran después del FIN-SI. SI no se cumple pasará a las instrucciones que estuvieran debajo del FIN-SI.

SI condición ENTONCES

Instrucción 1

Instrucción 2

Instrucción N

FIN-SI

5.2.1.2 Dobles

Después de evaluar la condición, si esta se cumple, se ejecutan el grupo de instrucciones del ENTONCES y si no se cumple se ejecutan el grupo de instrucciones del SINO.

SI condición ENTONCES

Instrucción 1

Instrucción N

SINO

Instrucción 1

Instrucción M

FIN-SI

5.2.1.3 Múltiple

Se basa en el conocimiento de antemano de los valores concretos que tomará la variable que se quiere evaluar, indicando para cada uno de estos valores la secuencia de instrucciones a realizar; en el que caso de que la variable no contenga ninguno de estos valore expresado, se ejecutaría el grupo de instrucciones en el EN OTRO CASO, en cualquiera de las circunstancias que se den y una vez ejecutadas el bloque de instrucciones correspondientes.

EN CASO DE (variable)

Valor 1: instrucción 1

Instrucción 2

Valor 2: instrucción 1

Instrucción 2

Valor N: instrucción 1

Instrucción 2

EN OTRO CASO: instrucción 1

Instrucción 2

FIN

5.2.2 Repetitivas

La condición se evalúa antes, durante o después de ejecutar el ciclo por primera vez.

5.2.2.1 Mientras

Antes de entrar al ciclo se evalúa la condición del bucle. Si no se cumple, se pasa a la instrucción que estuviera debajo de FIN-MIENTRAS.

MIENTRAS condición HACER

Instrucción 1

Instrucción N

FIN-MIENTRAS

5.2.2.2 Repetir… hasta

Una vez ejecutadas las instrucciones del ciclo por primera vez, si la condición se cumple, el control del programa pasará a la instrucción que estuviera debajo del HASTA, sino, se ejecuta el bucle hasta que se cumpla.

REPETIR

Instrucción 1

Instrucción N

HASTA condición

5.2.2.3 Parar

Necesita una variable numérica que se inicializa automáticamente al valor inicial que se indique en la instrucción. La condición se evalúa después del incremento o decremento. El bucle termina cuando la variable supera el valor final. Por defecto el incremento es de +1.

PARA variable DE valor-inicial A valor-final [INCREMENTO incremento] HACER

Instrucción 1

Instrucción N

FIN-PARA

5.2.2.4 Iterar

Se ejecuta la primera orden de instrucciones de forma incondicional. Se evalúa la condición al llegar a SALIR SI. Si la condición se cumple se ejecuta la instrucción que estuviera debajo del FIN-ITERAR. Sino, se siguen ejecutando las instrucciones del bucle hasta que se cumpla la condición salida.

ITERAR

Instrucción 1

Instrucción N

SALIR SI condición

Instrucción 1

Instrucción M

FIN-ITERAR

5.3 Acciones compuestas

Formadas por grupo de instrucciones simples. Deberán de definirse en un lugar aparte del resto de las instrucciones. Se las llama desde cualquier lugar del programa.

5.3.1 Declaración

SUBPROGRAMA nombre-acción-compuesta

Instrucción 1

Instrucción N

FIN-SUBPROGRAMA

5.3.2 Llamada

Para llamar a un subprograma basta con utilizar su nombre.

Nombre-acción-compuesta

5.4 Comentarios

En cualquier parte del programa. Basta con utilizar ** al comenzar la línea

**comentario

5.5 Ejemplo de pseudocódigo

Programa Signo

Variables

     num tipo entero

Empieza

Escribe “Ingresa numero”

Leer num

si num > 0 entonces

Escribe “El numero es positivo”

si_no

Escribe “El numero es negativo”

fin_si

Fin

6. OTRAS TÉCNICAS DESCRIPTIVAS

6.1 Diagramas de cajas

Representan las distintas instrucciones de forma de cajas, dentro de las cuales se describen las acciones

6.1.1 Descripción de una tarea
clip_image044
6.1.2 Instrucciones alternativas

clip_image046

clip_image048 6.1.3 Instrucciones repetitivas
6.1.4 Ejemplo de diagrama de cajas

clip_image049

6.2 Tablas de decisión

Técnicas que utilizan como herramientas para la descripción y representación de determinados módulos encargados de la evaluación de condiciones complejas.

clip_image051clip_image053