Está en la página 1de 48

Tema V.

Fundamentos de algoritmos
Objetivo: El alumno explicar la importancia de llevar un mtodo formal para resolver problemas en la computadora;

asimismo aplicar dicho mtodo en la resolucin de problemas matemticos sencillos.

5.1 La computabilidad y concepto de mquina de Turing Partes de un programa


Todo programa esta constituido por un conjunto de rdenes o instrucciones capaces de manipular un conjunto de datos. stas rdenes o instrucciones pueden ser divididas en tres grandes bloques claramente diferenciados, correspondientes cada uno de ellos a una parte del diseo de un programa.

Terrestre

Marino

Areo Ing. Tanya Arteaga Ricci

5.1 La computabilidad y concepto de mquina de Turing

Ing. Tanya Arteaga Ricci

5.1 La computabilidad y concepto de mquina de Turing Teora de la computabilidad


Es la parte de la computacin que estudia los problemas de decisin que pueden ser resueltos con un algoritmo o equivalentemente con una mquina de Turing.

http://www.bletchleypark.org.uk/

Mquina ENIGMA Segunda Guerra Mundial

Ing. Tanya Arteaga Ricci

5.1 La computabilidad y concepto de mquina de Turing Mquina de Turing


La Mquina de Turing se introdujo en 1936 por Alan M. Turing para resolver problemas computables. Es la base de las computadoras modernas.

Alan Mathison Turing (1912 1954)

Ing. Tanya Arteaga Ricci

5.1 La computabilidad y concepto de mquina de Turing Mquina de Turing


Una mquina de Turing esta formada por tres componentes: Una Cinta, Un Controlador y Una Cabeza de lectura/escritura.

Ing. Tanya Arteaga Ricci

5.1 La computabilidad y concepto de mquina de Turing Cinta


Aun cuando las computadoras modernas utilizan un dispositivo de acceso aleatorio con capacidad finita, la memoria de la mquina de Turing es infinita. La cinta, en cualquier momento mantiene una secuencia de caracteres del conjunto de caracteres aceptado por la mquina.

Cinta o Banda de Moebius August Ferdinand Mbius y Johann Benedict Listing en 1858

Ing. Tanya Arteaga Ricci

5.1 La computabilidad y concepto de mquina de Turing Cabeza de Lectura / Escritura


La cabeza de lectura/escritura en cualquier momento seala a un smbolo en la cinta. Llamamos a este smbolo el smbolo actual. La cabeza de lectura/escritura lee y escribe un smbolo a la vez desde la cinta. Despus de leer y escribir se mueve a la izquierda, a la derecha o permanece en su lugar. La lectura, la escritura y el desplazamiento, todos se realizan bajo instrucciones del controlador.

Ing. Tanya Arteaga Ricci

5.1 La computabilidad y concepto de mquina de Turing Controlador


El controlador es la contraparte terica de la unidad central de proceso (CPU) en las computadoras modernas. Es un autmata de estado finito, una mquina que tiene un nmero finito predeterminado de estados y se mueve de un estado a otro con base en la entrada. En cualquier momento puede estar en uno de estos estados.

Ing. Tanya Arteaga Ricci

5.1 La computabilidad y concepto de mquina de Turing Mquina de Turing

Ing. Tanya Arteaga Ricci

5.2 Elementos de los algoritmos y tipos de datos


Fundamentos de Algoritmos
Uno de los algoritmos ms antiguos conocidos es el algoritmo de Euclides. El trmino algoritmo proviene del matemtico Muhammad ibn Musa alKhwarizmi, que vivi aproximadamente entre los aos 780 y 850 d.C. en la actual nacin iran. Describi la realizacin de operaciones elementales en el sistema de numeracin decimal. De al-Khwarizmi se obtuvo la derivacin algoritmo.

Mohammed Ibn Musa Al-Khwarizmi (780 850)

Ing. Tanya Arteaga Ricci

5.2 Elementos de los algoritmos y tipos de datos


Fundamentos de Algoritmos
Un algoritmo se puede definir como un conjunto pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema de un cierto tipo. Por tanto debe ser:

Precisin Determinismo Finitud


Ing. Tanya Arteaga Ricci

5.2 Elementos de los algoritmos y tipos de datos


Caractersticas de los algoritmos
Precisin: Los pasos a seguir en el algoritmo deben ser precisados claramente.

Determinismo: El algoritmo, dado un conjunto de datos idnticos de entrada, siempre debe arrojar los mismos resultados.
Finitud: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de longitud finita.
Ing. Tanya Arteaga Ricci

5.2 Elementos de los algoritmos y tipos de datos


Caractersticas de los algoritmos
Conciso y Detallado: Debe reflejar con el mximo detalle el orden de ejecucin de cada accin u operacin que vaya a realizar la computadora. Claro y Sencillo: Con el objetivo de facilitar su entendimiento y compresin por parte del programador.

Ing. Tanya Arteaga Ricci

5.2 Elementos de los algoritmos y tipos de datos


Mdulos de un algoritmo

Algoritmo

Datos de Entrada

Procesamiento de los datos

Impresin de resultados

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Diagrama de Flujo
Para el diseo de algoritmos se utilizan tcnicas de representacin. Una de estas tcnicas son los denominados Diagramas de Flujo, que se definen como la representacin grfica que, mediante el uso de smbolos estndar conectados o unidos mediante lneas de flujo, muestran la secuencia lgica de las operaciones o acciones que deben realizar las computadoras, as como la corriente o flujo de datos en la resolucin de un programa.
Guernica versin Los Simpson Temporada 21: Homer the Whopper

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Construccin de los Diagramas de Flujo
Su correcta construccin es sumamente importante porque a partir del mismo se puede escribir un programa en algn lenguaje de programacin.

Es importante mantener un estndar para la realizacin de dichos diagramas, esto con el fin de facilitar el intercambio de algoritmos mediante su esquematizacin grfica. Es por eso que a continuacin se muestran los smbolos a ocupar durante el curso.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Smbolos para los Diagramas de Flujo
Smbolo utilizado para marcar el inicio o fin del diagrama de flujo. Smbolo utilizado para representar un proceso. En su interior se expresan asignaciones, operaciones aritmticas, cambios de valor de celdas en memoria, etc. Smbolo utilizado para representar una decisin. En su interior se almacena una condicin, y dependiendo del resultado de la evaluacin de la misma se sigue por una de las ramas o caminos alternativos. Smbolo utilizado para introducir los datos de entrada. Expresa lectura. Smbolo utilizado para representar la impresin de un resultado. Expresa escritura. Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Smbolo utilizado para expresar una decisin mltiple. En su interior se almacena un selector, y dependiendo del valor de dicho selector se sigue por una de las ramas o caminos alternativos. Este smbolo se utiliza en la estructura selectiva mltiple.

Flujo de datos

Conector dentro de la misma pgina

Conexin entre pginas diferentes

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)

Cinta magntica

Pantalla

Disco magntico

Teclado

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Reglas para la construccin de Diagramas de Flujo
INICIO

1. Todo diagrama de flujo debe tener un inicio y un fin


FIN

2. Las lneas utilizadas para indicar la direccin del flujo del diagrama deben ser rectas, verticales y horizontales.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Reglas para la construccin de Diagramas de Flujo
3. Todas las lneas utilizadas para indicar la direccin del flujo del diagrama deben estar conectadas. La conexin puede ser a un smbolo que exprese lectura, proceso, decisin, impresin, conexin o fin de diagrama.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Reglas para la construccin de Diagramas de Flujo
4. El diagrama de flujo debe ser construido de arriba hacia abajo y de izquierda a derecha. 5. La notacin utilizada en el diagrama de flujo debe ser independiente del lenguaje de programacin. 6. Es conveniente cuando realizamos una tarea compleja poner comentarios que expresen o ayuden a entender lo que hicimos. 7. Si el diagrama de flujo requiriera ms de una hoja para su construccin, debemos utilizar los conectores adecuados y enumerar las pginas convenientemente. 8. No puede llegar ms de una lnea a un smbolo.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Tipos de Instrucciones
Una instruccin puede ser considerada como un hecho o suceso de duracin limitada que genera unos cambios previstos en la ejecucin de un programa, por lo que debe ser una accin previamente estudiada y definida.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Instrucciones de definicin de datos
Son aquellas instrucciones utilizadas para informar al procesador del espacio que debe reservar en memoria, con la finalidad de almacenar un dato mediante el uso de variables simples o estructuras de datos ms complejas como, por ejemplo, tablas. La definicin consiste en indicar un nombre a travs del cual haremos referencia al dato y un tipo a travs del cual informaremos al procesador de las caractersticas y espacio que deber reservar en memoria.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Instrucciones primitivas
Se consideran como tal las instrucciones de asignacin y las instrucciones de entrada/salida.

Instrucciones de entrada
Son aquellas instrucciones encargadas de recoger el dato de un dispositivo de entrada, y seguidamente almacenarlo en memoria en una variable previamente definida, para la cual se ha reservado suficiente espacio en memoria.
Leer Variable Leer Var1, Var2, , VarN

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Instrucciones de asignacin
Son aquellas instrucciones cuyo cometido es almacenar un dato o valor simple obtenido como resultado al evaluar una expresin en una variable previamente definida y declarada.
Variable = Expresin

Instrucciones de salida
Son aquellas instrucciones encargadas de recoger los datos procedentes de variables evaluadas y depositarlos en un dispositivo de salida.
Ing. Tanya Arteaga Ricci

Escribir Resultado

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Tipos de datos:
Los datos a procesar por una computadora pueden clasificarse en: Simples Estructurados

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Datos Simples
La principal caracterstica es que solo ocupan slo una casilla de memoria, por lo tanto, una variable simple hace referencia a un nico valor a la vez. Dentro de este grupo se encuentran: enteros, reales, caracteres, booleanos, enumerados y subrangos.

Datos Estructurados
Se caracterizan por el hecho de que con un nombre (identificador de variable estructurada) se hace referencia a un grupo de casillas de memoria. Es decir un dato estructurado tiene varios componentes.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Datos numricos
Dentro de los tipos de datos numricos encontramos los enteros y los reales. Los enteros son nmeros que pueden estar precedidos del signo + -, y que no tienen parte decimal.
27 45 00101101
-27 1 0011011

0011011

nmeros enteros sin signo

nmeros enteros con signo

Los reales son nmeros que pueden ser precedidos del signo + -, y que tienen una parte decimal.
Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Datos alfanumricos
Dentro de este tipo de datos encontramos los de tipo caracter (simple) y cadena de caracteres (estructurado). Son datos cuyo contenido pueden ser letras del abecedario (a,b,c,z), dgitos (0,1,2,9) o smbolos especiales (#, $, ^, *, %, , etc). Debemos remarcar que aunque este tipo de datos puede contener nmeros, no pueden ser utilizados para realizar operaciones aritmticas. Un dato tipo cadena de caracteres contiene un conjunto de caracteres, y se escribe entre comillas. La longitud de una cadena depende de los lenguajes de programacin.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Datos lgicos Dentro de este tipo de datos encontramos los booleanos. Son datos que slo pueden tomar dos valores: verdadero (true) y falso (false). Constantes Las constantes son datos que no cambian durante la ejecucin de un programa. Para nombrar las constantes utilizamos identificadores. Existen tipos de constantes como tipos de datos, por lo tanto, puede haber constantes de tipo entero, real, carcter, cadena de caracteres, etc.
Ing. Tanya Arteaga Ricci

Variables Las variables son objetos que pueden cambiar su valor durante la ejecucin de un programa. Al igual que las constantes, pueden existir tipos de variables como tipos de datos.

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Operaciones aritmticas Los operadores son smbolos que sirven para conectar los datos facilitando la realizacin de diversas clases de operaciones.

Ing. Tanya Arteaga Ricci

OPERADOR

SMBOLO

SIGNIFICADO

Parntesis

()
**, ^ * / %, mod + + = =, = !=, < > < <= > >= !, NOT &&, AND ||, OR

Parntesis
Potencia Producto Divisin Mdulo Signo positivo o suma Signo negativo o resta Concatenacin Concatenacin eliminando espacios Igual a Distinto a Menor que Menor o igual que Mayor que Mayor o igual que Negacin Conjuncin Disyuncin

Aritmticos

Alfanumricos

Relacionales

Lgicos

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


E jercicios
Realizar los siguientes diagramas de flujo Algoritmo que calcule la suma de los 20 primeros nmeros pares y el producto de los 20 primeros nmeros impares simultneamente. Algoritmo que lee dos valores numricos X e Y, determina si son iguales y, en caso de no serlo, indica cul de ellos es mayor. Algoritmo que calcule la potencia de un nmero dada la base y el exponente Algoritmo que lee N nmeros y determina cules son pares y positivos.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


INICIO

Algoritmo que lee N nmeros y termina cuando encuentra un nmero par positivo o llega a N.

LEER N

C=0 C=C+1
LEER A

R=A/2 R>0
SI NO SI

R=0

NO

A ES POSITIVO Y PAR FIN

C<N
NO

SI

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


INICIO

Algoritmo que calcule la suma de los 20 primeros nmeros pares y el producto de los 20 primeros nmeros impares simultneamente.

SP 0 PI 1 C0 SW 0

C C +1
NO

SW = 0

SI

SP SP + C SW 0

PI PI * C SW 1

C<= 40
NO

SI

SUMA = , SP PRODUCTO = , PI

FIN

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Pseudocdigo
Se puede definir como el lenguaje intermedio entre el lenguaje natural y el lenguaje de programacin seleccionado. Esta notacin se encuentra sujeta a unas determinadas reglas que permiten y facilitan el diseo de algoritmos. El pseudocdigo surge como mtodo para la representacin de instrucciones en una metodologa estructurada y naci como un lenguaje similar al ingls, que utilizaba palabras reservadas de este idioma (start, end, stop, while, repeat, for, if, ifelse, etc.) y que posteriormente se fue adaptando a otros lenguajes de habla hispana.

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Pseudocdigo
CABECERA

Programa: Nombre del programa Mdulo: Nombre del mdulo

CUERPO INICIO

DATOS: Parmetros Constantes Variables

ALGORITMO: Descripcin detallada de rdenes

FIN

Ing. Tanya Arteaga Ricci

5.3 Representacin de los algoritmos (diagrama de flujo y pseudocdigo)


Prueba de Escritorio
La prueba de escritorio es una herramienta til para entender que hace un determinado algoritmo, o para verificar que un algoritmo cumple con la especificacin sin necesidad de ejecutarlo. Bsicamente, una prueba de escritorio es una ejecucin a mano del algoritmo, por lo tanto se debe llevar registro de los valores que va tomando cada una de las variables involucradas en el mismo. Esta prueba consiste en que dar diferentes datos de entrada al programa y seguir la secuencia indicada en el diagrama, hasta obtener los resultados.
Ing. Tanya Arteaga Ricci

5.4 Estructuras bsicas (secuencia, condicional e iteracin)


CICLO ITERATIVO
Se entiende por ciclo iterativo la unin de smbolos grficos que en su conjunto indica cmo repetir cierto proceso; las estructuras bsicas ms comunes son:

EXPRESIN LGICA

NO
Se opta por repetir n veces el proceso que se indica en el rectngulo

PROCESO

SI PROCESO

SI

EXPRESIN LGICA

NO

Ing. Tanya Arteaga Ricci

5.4 Estructuras bsicas (secuencia, condicional e iteracin)


INICIO

Es conveniente realizar la solucin de problemas con la computadora de manera conversacional, es decir, que el programa de computadora nos vaya indicando mediante mensajes las opciones y si se desea repetir el proceso con otros datos. El bosquejo general de un diagrama de flujo conversacional puede ser el siguiente:

DAME DATOS
VALORES

PROCESO REPITE PROCESO RESP SI/NO FIN FIN

Ing. Tanya Arteaga Ricci

5.4 Estructuras bsicas (secuencia, condicional e iteracin)


1

INICIO
Da temperatura en C
Otra conversin S/N

Resp C
SI

Resp = SI
NO

F = (1.8 * C ) + 32 Temp en Farenheit, F

Fin de proceso

FIN

Ing. Tanya Arteaga Ricci

5.4 Estructuras bsicas (secuencia, condicional e iteracin)


Aplicaciones del Ciclo Iterativo Calcular el valor de la expresin y almacenar en la variable indicada a la izquierda del signo igual, se genera el concepto de contador o expresin que permite contar (que consta de un ciclo iterativo que ejecuta varias veces la instruccin de reemplazo: C=C+1):
C=0
C=C+1 NO

C >= N SI Ing. Tanya Arteaga Ricci

5.4 Estructuras bsicas (secuencia, condicional e iteracin)

Aplicaciones del Ciclo Iterativo Otro de los conceptos de programacin de gran utilidad es la estructura que nos permite llevar a cabo sumatorias (en ellas el proceso que se repite es la acumulacin de expresiones similares, por ejemplo sumar n dgitos o sumar una y otra vez el valor de una variable X elevada a un exponente que crece en cada ocasin)

C=0 S=0 C=C+1 S=S+C NO C >= N SI

Ing. Tanya Arteaga Ricci

5.4 Estructuras bsicas (secuencia, condicional e iteracin)


Otro elemento til para el clculo de frmulas es el que resulta de aplicar el concepto de reemplazo del valor de la variable a lo que se llamar una multiplicacin reiterada, la cual permite obtener factoriales de tipo descendente o ascendente. Obtnganse el factorial de: 5! Se sabe que su factorial ascendente es: 1 x 2 x 3 x 4 x 5 De dicha multiplicacin se observa la presencia del elemento llamado contador, que multiplica su valor por el de la variable del factorial obtenido en el paso anterior, en efecto: F=1 Valor inicial de la variable del factorial F=1x2 F=1x2x3 F=1x2x3x4 F=1x2x3x4x5 Valor anterior de F multiplicado por 2, es decir, F = F x 2 Valor anterior de F multiplicado por 3, es decir, F = F x 3 Valor anterior de F multiplicado por 4, es decir, F = F x 4 Valor anterior de F multiplicado por 5, es decir, F = F x 5 Ing. Tanya Arteaga Ricci

5.4 Estructuras bsicas (secuencia, condicional e iteracin)


Contador N=5 K=0 K=0+1 F=1x1 K=1+1 F=1x2 K=2+1 K=1 F=1 K=2 F=2 K=3

F=1
K=K+1 F=F*K

F=2x3
K=3+1 F=6x4

F=6
K=4 F = 24 K=5

SI

K >= N

K=4+1

NO

F = 24 x 5

F = 120
Ing. Tanya Arteaga Ricci

5.4 Estructuras bsicas (secuencia, condicional e iteracin)


INICIO

INICIO

Dame N N K=0 F=1 K=K+1 F=F*K


SI

Dame N N

F=1

K = 0 ; K >= N ; K=K+1

F=F*K
K >= N

NO

F = ,F
FIN

F = ,F
FIN

Ing. Tanya Arteaga Ricci

También podría gustarte