Sie sind auf Seite 1von 22

Lenguaje de Programacin: Algoritmo

Captulo 2 : ALGORITMOS
La primera fase en la construccin de programas la determina el algoritmo a utilizar, que nos indica una serie de pasos ordenados y lgicos para resolver un problema dado. 2.1 REQUISITOS, DISEO, PROGRAMACIN Y PRUEBAS. Pueden ser identificadas dos etapas en el proceso de resolucin de problemas : 1. Fase de solucin 2. Fase de implementacin (realizacin) en algn lenguaje de programacin. La fase de solucin incluye, a su vez el anlisis del problema, el diseo y la verificacin del algoritmo. Anlisis de Requerimientos Verificacin del Algoritmo Diseo (Traducir) Se puede definir lo que es Algoritmo, como la secuencia ordenada de pasos, no ambiguos, que conducen a la solucin del problema planteado. Todo algoritmo debe ser : Preciso. Indicando el orden de realizacin de cada uno de los pasos. Definido. Si se sigue el algoritmo varias veces proporcionndole los mismos datos, se deben obtener siempre los mismos resultados. Finito. Al seguir el algoritmo, ste debe terminar en algn momento, es decir, tener un nmero finito de pasos. Para disear un algoritmo se tienen dos mtodos: Descendente (Top-down): Diseo de los algoritmos en etapas, donde se va conceptos generales a los detalles. Este mtodo de diseo es el ms recomendable. Ascendente (Bottom-up): Ir de lo particular a los general. (No recomendado) de los

Lenguaje de Programacin: Algoritmo

Ejemplo diseo de un firewall


Una vez que se tiene el algoritmo concluido, se pasa a la Fase de Implementacin, en sta, se lleva a cabo la Codificacin del mismo (traduccin del algoritmo a algn lenguaje de programacin), la ejecucin y comprobacin del programa. El paso de comprobacin es muy importante, en este, se ejecuta el programa varias veces, con distintos datos, para verificar que se obtengan los resultados que se esperaban. 2.2 TCNICAS DE PROGRAMACIN ALGORITMICA PROGRAMACIN ESTRUCTURADA

La programacin estructurada es un conjunto de tcnicas para desarrollar algoritmos fciles de escribir, verificar, leer y modificar. Utiliza: Diseo descendente. Consiste en disear los algoritmos en etapas, partiendo de los conceptos generales hacia los detalles. El diseo descendente se ver completado y ampliado con el modular. Recursos abstractos. En cada descomposicin de una accin compleja se supone que todas las partes resultantes estn ya resueltas, posponiendo su realizacin para el siguiente refinamiento. Estructuras bsicas. Los algoritmos debern ser escritos utilizando nicamente tres tipos de estructuras bsicas: secuenciales, decisin e iteracin, las cuales se describen ms adelante. TEOREMA DE BHM Y JACOPINI Para que la programacin sea estructurada, los programas han de ser propios. Un programa se define como propio si cumple las siguientes caractersticas: Tiene un solo punto de entrada y uno de salida Toda accin del algoritmo es accesible, es decir, existe al menos un camino que va desde el inicio hasta el fin del algoritmo, se puede seguir y pasa a travs de dicha accin. No posee lazos o bucles infinitos. El teorema de Bhm y Jacopini dice que:

Un programa propio puede ser escrito utilizando nicamente tres tipos de estructuras: secuencial, selectiva y repetitiva.

Lenguaje de Programacin: Algoritmo

De este teorema se deduce que se han de disear los algoritmos empleando exclusivamente dichas estructuras, las cuales, como tiene un nico punto de entrada y nico punto de salida, harn que nuestros programas sean propios. 2.3 ELEMENTOS BSICOS Un algoritmo puede ser escrito en lenguaje natural, pero esta descripcin puede ser ambigua, por lo que se utilizan diferentes mtodos de representacin, que permiten evitar dicha ambigedad y permitir al mismo tiempo que sea fcilmente codificable. Los mtodos ms usuales para la representacin de algoritmos son: Descripcin narrada Diagrama de flujo Pseudocdigo DESCRIPCIN NARRADA Es la forma ms sencilla de describir o expresar un algoritmo. Consiste en dar un relato de la solucin en lenguaje natural. Por ejemplo: Algoritmo en descripcin narrada para la suma de 2 nmeros. 1. obtener los nmeros a sumar 2. sumar los nmeros 3. anotar el resultado El uso del lenguaje natural provoca frecuentemente que la descripcin sea imprecisa y poco confiable, por lo que este tipo de representacin no es recomendable.

Lenguaje de Programacin: Algoritmo

DIAGRAMA DE FLUJO Es la representacin grfica de un algoritmo. Utiliza smbolos normalizados, con los pasos del algoritmo escritos en el smbolo adecuado y los smbolos unidos por flechas, denominadas lneas de flujo, que indican el orden en que los pasos deben ser ejecutados. Los smbolos principales son:

De manera general un diagrama de flujo esta constituido de la siguiente manera: inicia, recibe datos, realiza el procesamiento, muestra resultados y finaliza.

Lenguaje de Programacin: Algoritmo

PSEUDOCDIGO El pseudocdigo en un lenguaje de especificacin de algoritmos que utiliza palabras reservadas y exige la tabulacin, o sea, sangra en el margen izquierdo, de algunas lneas. Se concibi para superar las dos principales desventajas de los diagramas de flujo: Lento de crear y difcil de modificar sin un nuevo redibujo. Es una herramienta muy efectiva para el seguimiento de la lgica de un algoritmo y para transformar con facilidad los algoritmos a programas.

Lenguaje de Programacin: Algoritmo

Las distintas estructuras de control se representan de la siguiente forma: Secuenciales: Decisin simple: Leer (Lista_de_variables) Escribir (Lista_de_resultados) si <condicin > entonces accin_si fin_si doble: si <condicin> entonces accin_si si_no accin_no fin_si mltiple: segn <expresin> sea <valor1> : accin1 <valor2>: accin2 ........... <valorn>: accin n [si_no accin_sino] fin_segn

Repetitivas: mientras <condicin>hacer acciones fin_mientras repetir acciones hasta <condicin> para <Variable de control> fin_para <valor_inicial> hasta <valor_final> hacer acciones

Lenguaje de Programacin: Algoritmo

2.4 DATOS Y EXPRESIONES Dato es la expresin general que describe a los elementos con los cuales opera un programa. Los datos pueden estar expresados como Variables o como Constantes. CONSTANTES Las constantes son elementos cuyo valor no cambia durante todo el desarrollo del algoritmo. Pueden ser literales o simblicas. Las constantes simblicas tienen un valor asignado y se identifican por un nombre. Una constante literal es un valor que se utiliza como tal. Ejemplos de Constante simblica: Ejemplos de Constante simblica: Las constantes pueden ser: Numricas enteras: En el rango de los nmeros enteros positivos o negativos. Ejemplos: 0, 2, -3, -8, etc. Numricas reales: En el rango de los nmeros reales positivos o negativos Ejemplos: 3.1416, 0.5, -4.3, etc. Lgicas: con valores True o False nicamente. Carcter: Alfabtico (a, b, ..., z) en mayscula o minscula Numrico (0,1,...,9) Carcter especial (+,?,etc) Cadena: Sucesin de caracteres encerrados entre apstrofes. Ejemplo: Hola Mundo

= 3.141592654.....
= 3.141592654.....

Lenguaje de Programacin: Algoritmo

VARIABLES Las variables son elementos cuyo valor puede cambiar durante el desarrollo del algoritmo. Se identifican por un nombre y un tipo. El tipo determina el conjunto de valores que la variable puede tomar. Ejemplos: Variable A B Radio Carac1 Carac2 Valor 2 5 2.5 a c Tipo Entero Entero Real carcter carcter

Las variables pueden ser de tipo: entero, real, carcter, lgico o cadena. La evaluacin de los operadores con la misma prioridad se realiza siempre de izquierda a derecha. Si una expresin contiene subexpresiones encerrada entre parntesis, dichas expresiones se evalan primero. Las constantes y variables se utilizan para formar expresiones. EXPRESIONES Una expresin es una combinacin de operadores y operandos. Los operandos pueden ser constantes, variables u otras expresiones. Los operadores pueden aritmticos, lgicos o relacionales. Los operadores aritmticos son : Operador * / + Significado operador unario menos multiplicacin divisin suma resta Prioridad 3 2 2 1 1

La evaluacin de las expresiones se realiza de izquierda a derecha cuidando la prioridad de los operadores, los de prioridad mayor se evalan primero.

Lenguaje de Programacin: Algoritmo

La evaluacin de los operadores con la misma prioridad se realiza siempre de izquierda a derecha. Si una expresin contiene subexpresiones encerrada entre parntesis, dichas expresiones se evalan primero.

Ejemplo:
Si A=2, B=3 y C=4, A+B*C=14 (A+B)*C=20 Hay Otros Operadores que corresponden a los Lgicos y Operacionales 2.5 Estructuras Secuenciales Se caracterizan porque una accin se ejecuta detrs de la otra. El flujo del programa coincide con el orden fsico en el que se han ido poniendo las instrucciones. Es decir, es una secuencia de acciones, donde se ejecuta primero la accin uno, despus la dos, luego la tres, etc. Dichas acciones pueden consistir en acciones simples tales como: Leer datos Realizar operaciones Escribir resultados

Estas estructuras se representan de la siguiente forma: Diagrama de Flujo


Accin 1

Pseudolenguaje Accin 1 Accin 2

Accin 2

Funcionamiento 1. Se lleva a cabo la Accin 1 2. Se lleva a cabo la Accin 2

Lenguaje de Programacin: Algoritmo

Ejemplo: Para sumar 2 Nmeros Diagrama de Flujo


inicio

Pseudolenguaje Inicio Leer (A,B) C A+B Escribir (C) Fin

A, B

A+B

Fin

El smbolo

significa asignacin

2.6 ESTRUCTURAS SELECTIVAS Permiten controlar la ejecucin de acciones que requieran ciertas condiciones para su realizacin, es decir, se ejecutan unas acciones u otras segn se cumpla o no una determinada condicin. Estas estructuras son utilizadas cuando: Se tienen acciones que son excluyentes, es decir, que slo tiene que ejecutarse una o la otra, pero no ambas. Cuando es necesario elegir la accin a realizar de entre un conjunto de acciones existentes. Cuando es necesario verificar que lo datos sean vlidos para la aplicacin en cuestin, por ejemplo: no es posible dividir entre 0, la cuota por hora que se le paga a un trabajador no puede ser negativa, etc.

10

Lenguaje de Programacin: Algoritmo

Las estructuras selectivas pueden ser: simples, dobles o mltiples. SIMPLES. Se evala la condicin y si sta da como resultado verdad se ejecuta una determinada accin o grupo de acciones; en caso contrario no se ejecuta dicho grupo de acciones y se continua con el flujo. Esta estructura se representa de la siguiente forma: Diagrama de Flujo Pseudolenguaje

si

Condicin

no

Si <condicin> entonces accin Fin_si

Accin

11

Lenguaje de Programacin: Algoritmo

Ejemplo: Para dividir 2 nmeros considerando que el divisor no puede ser 0. Diagrama de Flujo
Inicio

Pseudolenguaje Inicio Leer (A,B) Si B 0 entonces C AB Escribir (C) Fin_si Fin

A, B

si

B=0

no

A/B

Fin

Se leen los datos a emplear A y B, y como se va a dividir A B, se vlida el valor de B a travs de la condicin B0, si la condicin se cumple (si la evaluacin de la condicin da verdad) entonces se realiza la divisin y se muestra el resultado, en otro caso se va al final sin efectuar accin alguna. DOBLES. Cuando el resultado de evaluar la condicin es verdad se ejecutar una determinada accin o grupo de acciones y si el resultado es falso se ejecutar otra accin o grupo de acciones diferentes. En ambos casos las sentencias podrn ser simples o compuestas. Esta estructura se representa de la siguiente forma:
12

Lenguaje de Programacin: Algoritmo

Diagrama de Flujo
si Accin_si Condicin no Accin_no

Pseudolenguaje Si <condicin > entonces accin_si sino accin_no Fin_si


.

Ejemplo 1: Para determinar el mayor de dos nmeros, considerando el hecho de que sean iguales. Diagrama de Flujo Pseudolenguaje
Inicio

A, B

si

A=B

no A>B no

son iguales

si son iguales

Inicio Leer (A,B) Si A = B entonces Escribir son iguales sino Si A > B entonces Escribir (A Mayor) sino Escribir (B Mayor) Fin_si Fin

B Mayor

Inicio

13

Lenguaje de Programacin: Algoritmo

Ejemplo 2: Para dividir 2 nmeros considerando que el divisor no puede ser 0. Diagrama de Flujo
Inicio

Pseudolenguaje

A, B

si C A/B

B=0 Error

no

Inicio Leer (A,B) Si B 0 entonces C B Escribir (C) sino Escribir (Error !!) Fin_si Fin

Inicio

MULTIPLES. Las estructuras selectivas mltiples permiten controlar la ejecucin de acciones cuando se tienen ms de dos opciones alternativas de seleccin. Aqu se ejecutarn unas acciones u otras segn el resultado que se obtenga al evaluar una expresin. Diagrama de Flujo
Expresin

Pseudolenguaje Segn <expresin> sea <valorl>:Accin1 <valor2>:Accin2 . . [sino Accin n] fin_segn

Accin 1

Accin 2

Accin n

14

Lenguaje de Programacin: Algoritmo

Ejemplo: Para realizar alguna de las siguientes operaciones: suma, resta, multiplicacin o divisin, segn la eleccin del usuario. Diagrama de Flujo
Inicio

Pseudolenguaje
Inicio Escribir Proprcione A y B Leer (A y B) Escribir Opciones: Escribir 1.- Suma Escribir 2.- Resta Escribir 3.- Multiplicacin Escribir 4.- Divisin Escribir Opcin ? Leer Opcin Segn Opcin sea 1: C A+B Escribir Suma=,C 2: C A-B Escribir Resta=,C 3: Si B 0 entonces C A B Escribir Divisin=,C sino Escribir Error !! Fin_si 4: C A x B Escribir Multiplicacin = Fin_segn Fin

Proporcione A y B:

A, B

Opraciones: 1- Suma 2 Resta 3- Multiplicacin 4- Divisin opcin?

Opcin

15

Lenguaje de Programacin: Algoritmo

1 3 1 Opcin 2 Multiplicacin=C C A+B C A-B 4

A*B

B=0
Suma=C Resta=C

A/B

Error !

Divisin=C

FIN

Expresiones Lgicas Las expresiones Lgicas sirven para plantear condiciones, que dan como resultado un valor booleano (Algebra de Bool) verdadero o falso, es decir se cumple o no se cumple la condicin. Las expresiones Lgicas se pueden clasificar en Simples y Compuestas. Las expresiones Lgicas Simples se forman relacionando operando (Variables y/o Constantes) mediante operadores relacionales. As, tienen la siguiente forma: Operando 1 Operando Relacional Operando 2

16

Lenguaje de Programacin: Algoritmo

Los operadores relacionales son: Operador > < = >= <= Ejemplos: A>B B0

Significado Mayor que Menor que Igual a diferente de Mayor o igual que Menor o igual que

Las Expresiones Lgicas Compuestas se forman relacionando operandos booleanos (expresiones lgicas que proporcionan un valor verdadero o falso) con operadores lgicos. Tienen la siguiente forma: Operando Booleano1 Operador Lgico Los operadores lgicos son: Operador Significado Not (no) Negacin And (y) Conjuncin Or (o) Disyuncin Ejemplo: (A B) y (B > C) 2.7 Estructuras de Repeticin Iterar o ciclar es repetir una tarea: hacer algo y luego regresar y hacerlo una y otra vez hasta terminar la tarea. Las aplicaciones tpicas que requieren iteracin son: La introduccin de muchos datos, uno tras otro, para efectuar diversos clculos (por ejemplo obtener el promedio de calificaciones de un alumno). La clasificacin peridica de una gran coleccin de datos (por ejemplo la clasificacin de cheques procesados por sucursal bancaria, y para cada sucursal por nmero de cuenta del cliente cada da de la semana). La bsqueda de un dato en una gran coleccin de ellos(por ejemplo encontrar el precio actual de un articulo o el estado de una cuenta de depsito). Y muchas formulas cientficas que slo se pueden calcular por aproximaciones sucesivas (reduciendo el intervalo de la respuesta con cada ciclo).
17

Operando Booleano2

Lenguaje de Programacin: Algoritmo

Existen tres clases de mecanismos de iteracin: 1. Para todos los valores de la progresin. 2. Mientras se valida una condicin. 3. Repetir- hasta que se satisfaga una condicin. A continuacin se Explica cada uno de ellos: 2.7.1 PARA. (for)

Es usado cuando se conoce de antemano, el nmero de veces que debe repetirse una instruccin o conjunto de ellas. Es un ciclo incondicional, que abarca todos los valores de una progresin, empieza con el primer valor y termina con el ultimo de ellos, los valores de la progresin deben ser asignados a una variable, la cual se denomina variable de control.

18

Lenguaje de Programacin: Algoritmo

Diagrama de Flujo

VI

Condicin V Accin

F Sale del ciclo

Incremento o Decremento
para <Variable de control> hacer accin 1 . . . accin n fin_para Pseudolenguaje <valor_inicial> hasta <valor_final>

Funcionamiento 1. Se inicia la condicin de control, se verifica la condicin de paro si no se cumple entra al ciclo y ejecuta la accin. 2. Al llegar al fin regresa el control al encabezado de ciclo, actualizando el valor del contador de acuerdo al incremento o decremento. 3. Al volver el control del encabezado se pregunta si la variable de control lleg al valor final:

19

Lenguaje de Programacin: Algoritmo

a. Si se cumple, entonces se sale del ciclo, dirigindose a la siguiente instruccin despus del fin. b. Si no ha tomado el valor final, entra al ciclo a ejecutar la instruccin. Ejemplo. Para sumar los 5 primero enteros positivos: Inicio 0 1 a 5 hacer suma suma + j fin_para escribir(suma) Fin Aqu a la variable de control J se le asigna originalmente el valor 1. La variable SUMA, que antes de entrar al ciclo tena un 0, aumentar por el valor de J. En la segunda pasada la J tendr un 2, y SUMA, aumentar a 3. En la tercera vuelta J llegar a 3, y esto incrementar SUMA a 6, y as sucesivamente hasta que J se le asigne el ltimo valor de la progresin, 5, despus de los cuales SUMA contendr la suma de los 5 primeros enteros positivos, es decir, 15. CICLO PARA ANIDADO. Al igual que todas las estructuras de control, es posible que un ciclo PARA contenga anidado otro ciclo y ste a otro; veamos, el siguiente ciclo: Ejemplo. Algoritmo ilustra el uso de un PARA anidado. inicio para i 1 a 5 hacer escribir (i =,i) para j 1 a 3 hacer escribir (j =,j) fin_para fin_para fin suma para j

20

Lenguaje de Programacin: Algoritmo

2.7.2

MIENTRAS (while)

La instruccin Mientras... hacer continuar repitindose mientras la condicin continu siendo vlida (es decir, su valor de verdad sea verdadero). Diagrama de Flujo

Pseudolenguaje mientras <condicin>hacer <acciones> fin_mientras Ejemplo: Elaborar un algoritmo que calcule e imprima el sueldo de varios empleados utilizando MIENTRAS inicio escribir ( hay empleado (s/n)?) leer (otro) mientras otro = s hacer escribir (proporcione nombre, nmero de horas tra-bajadas y cuota) leer (nombre,hrstrab,cuotahr) sueldo hrstrab*cuotahr escribir (nombre, sueldo) escribir( desea procesar otro empleado (s/n)?) leer (otro) fin_mientras fin

21

Lenguaje de Programacin: Algoritmo

2.7.3

REPETIR (Do-While)

La instruccin Repitir...hasta continuar repitindose mientras no se satisfaga la condicin (su valor de verdad sea falso). Esta instruccin tiene el siguiente diagrama de flujo: Diagrama de Flujo

Accin a repetir

Condicin La condicin es Verdadera Condicin an no satisfecha

Pseudolenguaje repetir <accion> hasta <condicin> Ejemplo: Elaborar un algoritmo que calcule e imprima el sueldo de varios empleados utilizando REPETIR inicio repetir escribir (proporcione nombre, nmero de horas trabajadas y cuota ) leer (nombre,hrstrab,cuotahr) sueldo =hrstrab*cuotahr escribir (nombre, sueldo) escribir ( desea procesar otro empleado (s/n)?) leer (desea) hasta desea = n fin

22

Das könnte Ihnen auch gefallen