You are on page 1of 22

Algoritmos

INDICE DE CONTENIDO CAPTULO I. CONCEPTOS GENERALES.......................................................................1 CAPITULO II. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS ........................................................................................................................................... 3 CAPTULO III. ESTRUCTURAS ALGORITMICAS............................................................7 CAPITULO iV. ALGORITMOS DE EJEMPLO...............................................................18 ANEXO - Convenciones de Pseudocdigo a utilizar ..................................................22 El desarrollo de algoritmos es un tema fundamental en el diseo de programas por lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de manera fcil y rpida sus programas. Estos apuntes servirn de apoyo a los alumnos del Curso introductorio de la Carrera de Analista de Sistemas de la U.T.N., y al estudiante le facilitar desarrollar su capacidad analtica y creadora, para de esta manera mejorar su destreza en la elaboracin de algoritmos que sirven como base para la codificacin de los diferentes programas que tendr que desarrollar a lo largo de su carrera. CAPTULO I. CONCEPTOS GENERALES 1.1 Introduccin La computadora no solamente es una maquina que puede realizar procesos para darnos resultados, sin que tengamos la nocin exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora adems de lo anterior tambin podemos disear soluciones a la medida, de problemas especficos que se nos presenten. Mas aun, si estos involucran operaciones matemticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos. El diseo de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodologa que nos ensee de manera gradual, la forma de llegar a estas soluciones. A las soluciones creadas por computadora se les conoce como programas y no son mas que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos especficos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especifico. Para poder realizar programas, adems de conocer la metodologa mencionada, tambin debemos de conocer, de manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma. Computadora: Es un dispositivo electrnico utilizado para procesar informacin y obtener resultados. Los datos y la informacin se pueden introducir en la computadora como entrada (input) y a continuacin se procesan para producir una salida (output). Proceso de informacin en la computadora

Datos de entrada

Proceso

Datos de salida

Programa: Es el conjunto de instrucciones escritas de algn lenguaje de programacin y que ejecutadas secuencialmente resuelven un problema especifico. 1.2 Definicin de Lenguaje Lenguaje: Es una serie de smbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A la transmisin de mensajes se le conoce comnmente como comunicacin. La comunicacin es un proceso complejo que requiere una serie de reglas simples, pero indispensables para poderse llevar a cabo. Las dos principales son las siguientes: Los mensajes deben correr en un sentido a la vez. Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicacin y Mensaje. Lenguajes de Programacin Es un conjunto de smbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora. Los lenguajes de programacin tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulacin de textos, lgica/comparacin y almacenamiento/recuperacin. 1.3 Definicin de Algoritmo La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solucin a un problema especifico. Es un mtodo para resolver un problema mediante una serie de pasos precisos, definidos y finitos. Preciso: no se presta a interpretaciones ambiguas Definido: si se siguen 2 o ms veces los pasos, se obtiene el mismo resultado cada vez Finito: tiene comienzo y fin; tiene un nmero determinado de pasos Son ejemplos de algoritmos las instrucciones para hacer una receta de cocina, para usar un electrodomstico, para obtener el m.c.m. de 2 nmeros, etc. Los algoritmos se pueden expresar en forma de diagramas, por frmulas y en PSEUDOCDIGO. Esta ltima herramienta es la ms usada en lenguajes estructurados ( como lenguaje C ).

ALGORITMO

formado por

Preciso Definido Finito

SENTENCIAS

Acciones que pueden ser ejecutadas

1.4 Tipos de Algoritmos Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del proceso. 2

1.5 Lenguajes Algoritmicos. Pseudocdigo Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que se emplea, dentro de la programacin estructurada, para realizar el diseo de un algoritmo. En esencial, el Pseudocdigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un problema determinado. El Pseudocdigo utiliza palabras que indican el proceso a realizar. Ventajas de utilizar un Pseudocdigo Permite representar en forma fcil operaciones repetitivas complejas Es muy fcil pasar de Pseudocdigo a un programa en algn lenguaje de programacin. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin. Diseo del Algoritmo Las caractersticas de un buen algoritmo son: Debe tener un punto particular de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la definicin del problema. Debe ser finito en tamao y tiempo de ejecucin. Existen varias herramientas para hacerlo, entre ellas Pseudocdigo. CAPITULO II. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS 2.1 Tipos De Datos Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carcter, tal como b, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable. 2.2 Expresiones Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y nombres de funciones especiales. Por ejemplo: a+(b + 3)/c Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operadores y operandos. Segn sea el tipo de datos que manipulan, se clasifican las expresiones en: - Aritmticas - Relacinales - Lgicas 2.3 Operadores y Operandos Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores. Tipos de Operadores Aritmticos Relacinales Lgicos

2.3.1 Operadores Aritmticos. Los operadores aritmticos permiten la realizacin de operaciones matemticas con los valores (variables y constantes).

Los operadores aritmticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Operando (Operador) Operando Valor (constante o variable) Operadores Aritmticos + Suma Resta * Multiplicacin / Divisin Mod Modulo (residuo de la divisin entera) Ejemplos: Expresin Resultado 7*2 14 12 mod 7 5 4 +2*5 14 Prioridad de los Operadores Aritmticos Todas las expresiones entre parntesis se evalan primero. Las expresiones con parntesis anidados se evalan de dentro a fuera, el parntesis mas interno se evala primero. Dentro de una misma expresin los operadores se evalan en el siguiente orden. 1.- ^ Exponenciacin 2.- *, /, Multiplicacin, divisin, modulo. 3.- +, - Suma y resta. Los operadores en una misma expresin con igual nivel de prioridad se evalan de izquierda a derecha. 2.3.2 Operadores Relacinales: Se utilizan para establecer una relacin entre dos valores. Compara estos valores entre si y esta comparacin produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relacinales comparan valores del mismo tipo (numricos o cadenas) Tienen el mismo nivel de prioridad en su evaluacin. Los operadores relacinales tiene menor prioridad que los aritmticos. Operadores Relacinales > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que <> Diferente = Igual Ejemplos: Si a = 10, b = 20 y c = 30 a+b>c a-b<c a-b=c a*b<>c Falso Verdadero Falso Verdadero

2.3.3 Operadores Lgicos: Estos operadores se utilizan para establecer relaciones entre valores lgicos. Estos valores pueden ser resultado de una expresin relacional. And Or Not Operadores Lgicos Y O Negacin Operador OR Operando1 Operando2 Resultado V V V V F V F V V F F F Operador NOT Operando Resultado T F F T

Operador AND Operando1 Operando2 Resultado V V V V F F F V F F F F

Ejemplos: Si a = 10, b = 20 y c = 30 (a < b) and (b < c) V and V V Prioridad de los Operadores Lgicos Not And Or Prioridad de los Operadores en General 1.- ( ) 2.- ^ 3.- *, /, Mod, Not 4.- +, -, And 5.- >, <, > =, < =, < >, =, Or Ejemplos: Si a = 10, b = 12, c = 13 y d =10 1) ((a > b)or(a < c)) and ((a = c) or (a > = b)) F V F F V F F not (a = c) and (c > b) F V V V

2)

2.4 Identificadores Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posicin en la memoria de la computadora, que nos permite acceder a su contenido. Ejemplo: Nombre Num_hrs Calif2

Reglas para formar un Identificador 5

Debe comenzar con una letra (A a Z, maysculas o minsculas) y no deben contener espacios en blanco. Letras, dgitos y el carcter guin ( - ) estn permitidos despus del primer carcter. La longitud de identificadores. El nombre de un identificador debe ser descriptivo de aquello que representa, y considerando adems la practicidad de su invocacin durante el desarrollo del algoritmo. Si es muy extenso estaremos ms expuestos a errores al nombrarlo. 2.5 Constantes y Variables 2.5.1 Variables. Son objetos de un programa cuyo valor puede cambiar durante la ejecucin del mismo. Datos que pueden sufrir modificaciones a lo largo de un programa. El cambio se produce mediante sentencias ejecutables como por ejemplo la asignacin o el ingreso de datos. Es en realidad una porcin (o posicin) de memoria con nombre que permite almacenar temporalmente un dato durante la ejecucin de un proceso. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo (a esto se lo denomina Declaracin de variables). Al declararlas se reserva una posicin de memoria para la misma, donde se almacenar el valor que toma cada variable en cada momento del programa. El nombre de la posicin es el NOMBRE DE LA VARIABLE y el valor almacenado es el VALOR DE LA VARIABLE. Las variables pueden ser de todos los tipos de datos conocidos: entero, decimal, carcter, cadena de carcter. Variables y constantes se unen por medio de los operadores aritmticos, relacionales y lgicos constituyendo lo que se denomina una EXPRESIN. 2.5.2 Constante Dato invariable a lo largo del programa. Es un valor que no puede cambiar durante la ejecucin del programa; recibe un valor en el momento de la compilacin del programa y este valor no puede ser modificado. Literales: es un valor de cualquier tipo que se utiliza como tal Ejemplo: sup-triangulo base * altura * 1/2 1 y 2 son constantes literales numricas: 5 , 3.14 , 4/3 carcter: S , N cadena: Positivo Nota: las constantes de carcter se escriben entre apstrofes o comillas simples y las de cadena entre comillas. De este modo se las diferencia de los nombre de las variables. Con nombre o declaradas. Se les asigna un nombre y un valor y no se lo modifica durante el transcurso del porgrama. En C se acostumbra nombrar esta clase de constantes con maysculas Ejemplo: Define constante PI valor 3.14 sup-circulo PI * r * r El uso de constantes literales limita la flexibilidad del programa. Es conveniente el uso de constantes con nombre. Tipeadas. Nos referimos a los textos que aparecen como mensajes de salida en un programa. Dichos mensajes son inalterables. Ejemplo: Mostrar ("Hola")

CAPTULO III. ESTRUCTURAS ALGORITMICAS Las estructuras de operacin de programas son un grupo de formas de trabajo, que permiten, mediante la manipulacin de variables, realizar ciertos procesos especficos que nos lleven a la solucin de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:

Secuenciales

Asignacin Entrada Salida Simples Compuestas Mltiples Repetir hasta (Hacer mientras) Mientras Para

Estructuras algortmicas

Condicionales

Cclicas o repetitivas

3.1. Estructuras Secuenciales La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: Comienzo Accion1 Accion2 . . AccionN Fin 3.1.1 Asignacin La asignacin consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. variable expresin ( puede ser una variable, una constante, una expresin o frmula a evaluar) Ejemplos: promedio suma /5 alumno nombre cantidad-de-notas 5 Ejemplo de funcionamiento de la asignacin: en las variables transfiero el valor de B a A 20 A (receptora) AB 50 B (emisora)

50 A

50 B

ASIGNACIN: la emisora mantiene su valor y la receptora lo modifica, el dato de la emisora reemplaza al valor anterior

Se pueden asignar operaciones Ej. A B * 2 La asignacin se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constante a una variable (a 15) Contador: Es una variable que se incrementa, cuando se ejecuta, en una unidad o en una cantidad constante contador contador + 1 multiplo multiplo + 3 Acumulador: Es una variable que se incrementa en una cantidad variable suma suma + numero Donde numero es una variable que recibe distintos valores Considerar: Una variable del lado derecho debe tener valor antes de que la sentencia se ejecute. Si numero no tiene valor antes de: suma suma + numero Se produce un Error LGICO. Se dice que numero no se ha inicializado. A la izquierda de una sentencia de asignacin slo puede haber variables. No puede haber operaciones. Nota: la operacin de asignacin es una operacin destructiva debido a que el valor almacenado en una variable se pierde o destruye y se sustituye por el nuevo valor de asignacin. Ejemplo numero 16 numero -23 numero conservar el ltimo valor asignado, en este caso -23 3.1.2 Entrada La entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operacin se representa en pseudocodigo como sigue: Leer (a ) Leer ( b ) Donde a y b son las variables que recibirn los valores 3.1.3 Salida Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en pseudocodigo como sigue: Mostrar ( El resultado es:, R ) Donde El resultado es: es un mensaje que se desea aparezca y R es una variable que contiene un valor. 3.2 Estilo de programacin Antes de escribir los algoritmos de los ejercicios en Pseudocdigo considerar: Un programa legible y comprensible Ms fcil de: Seguir las siguientes sugerencias: - Entender - Corregir - Mantener

1. SANGRADO O INDENTACIN. En cada estructura, y alineando las instrucciones (sentencias) dentro de cada una de ellas y dentro de todo el algoritmo (Comienzo, Fin) 2. LNEAS EN BLANCO. Dejarlas entre partes importantes o que estn lgicamente separadas. Recomendable luego de cada estructura (Repetitiva o Selectiva), luego de declaracin de variables. 3. COMENTARIOS. Parte importante de la documentacin de un programa que permite mayor comprensin del mismo. (luego lo haremos en C) En Pseudocdigo entre { } 4. NOMBRES SIGNIFICATIVOS DE IDENTIFICADORES. que representen aquello que estamos tratando. Si son palabras compuestas usar guin comn. Todos deben comenzar con una letra. 5. CADA SENTENCIA EN UNA LNEA DISTINTA. Al colocar una nueva sentencia comenzar una nueva lnea, incluso las palabras claves de las estructuras en lneas separadas. 6. ESPACIOS ENTRE ELEMENTOS DE UNA SENTENCIA. lo hace ms legible. Por ejemplo: suma suma + numero Problemas Secuenciales 1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara despus de un mes si el banco paga a razn de 2% mensual. Comienzo Leer ( capital ) ganancia capital * 0.02 Mostrar ( ganancia ) Fin 2) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deber pagar finalmente por su compra. Comienzo Leer ( total-compra) descuento total-compra * 0.15 total-a-pagar total-compra - descuento Mostrar ( total-a-pagar ) Fin 3) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. Comienzo Leer ( nun-hombres ) Leer ( num-mujeres ) total-alumnos nun-hombres + num-mujeres porcen-hombres nun-hombres * 100 / total-alumnos porcen-mujeres num-mujeres * 100 / total-alumnos Mostrar ( porcen-hombres ) Mostrar (porcen-mujeres ) Fin 3.3 Estructuras de Condicionales Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que, en base al resultado de esta comparacin, se siga un curso de accin dentro del programa. Cabe mencionar que la comparacin se puede hacer contra otra variable o contra una constante, segn se necesite. Existen dos tipos bsicos, las simples y las mltiples. 3.3.1 Simples Las estructuras condicionales simples se les conoce como Tomas de decisin. Estas tomas de decisin tienen la siguiente forma:

Si <condicin> entonces Accin(es) Fin-si 3.3.2. Dobles Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en funcin del cumplimiento o no de una determinada condicin. Se representa de la siguiente forma: Si <condicin> entonces Accin(es) Fin-entonces Sino Accin(es) Fin-si Donde: Si Condicin entonces.. accin(es) sino condicin Indica el comando de comparacin Indica la condicin a evaluar Precede a las acciones a realizar cuando se cumple la condicin Son las acciones a realizar cuando se cumple o no la condicin Precede a las acciones a realizar cuando no se cumple la

Dependiendo de si la comparacin es cierta o falsa, se pueden realizar una o mas acciones. 3.3.3 Mltiples Las estructuras de comparacin mltiples, son tomas de decisin especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma comn es la siguiente: LEER (variable) CON-SELECCIN (VARIABLE) HACER CASO constante1: Sentencias ROMPER CASO constante2: Sentencias ROMPER CASO constanteN: Sentencias ROMPER OTROS CASOS: Sentencias FIN-SELECCIN La estructura de seleccin mltiple slo compara por igualdad el valor de la variable con cada una de las constantes de cada caso. Al encontrar una coincidencia comienza a ejecutar las sentencias en forma secuencial hasta encontrar el fin de la estructura o una instruccin que rompa la misma. Puede tener hasta 257 casos. No puede haber 2 casos con el mismo valor en la constante. Slo se pueden utilizar variables de tipo carcter o enteras. Si la variable que se est seleccionando es de tipo carcter, las constantes de tipo carcter se colocan entre comillas simples o apstrofes, para el caso de variables de tipo enteras, las constantes numricas se colocan directamente. Puede contener casos vacos. 10

Ejemplo COMIENZO I1 MIENTRAS ( I < 7 ) HACER CON-SELECCIN ( I ) HACER CASO 2: CASO 4: CASO 6: MOSTRAR(I ES PAR) ROMPER CASO 1: CASO 3: CASO 5: MOSTRAR(I ES IMPAR) ROMPER OTROS CASOS: MOSTRAR(I VALE 0) FIN-SELECCIN II+1 FIN-MIENTRAS FIN 3.3.4 Uso de estructuras selectivas Razonemos a partir de un ejemplo. Realizar un algoritmo que permita ingresar un nmero e informe Nmero mayor a cero o Nmero menor o igual a cero segn corresponda. Anlisis del problema. El algoritmo deber: 1. Leer el nmero que ingresa el usuario 2. Seleccionar mediante una condicin si ese numero es o no mayor a cero 3. Informar con una de las leyendas enunciadas Desarrollo del algoritmo en pseudocdigo COMIENZO { declaro las variables a utilizar} NUMERO { Ingreso de datos} MOSTRAR (Ingrese un nmero:) LEER (NUMERO) { Proceso de seleccin} SI ( NUMERO > 0) ENTONCES MOSTRAR(Nmero mayor a cero) FIN-ENTONCES SINO MOSTRAR(Nmero menor o igual a cero) FIN-SI FIN Problemas Condicionales Problemas Selectivos Simples 1) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 7; reprueba en caso contrario. Comienzo Leer ( nota1 ) Leer ( nota2 ) 11

Leer ( nota3 ) prom nota1 +nota2 + nota3 )/3 Si ( prom >= 7 ) entonces Mostrar ( alumno aprobado ) Fin-entonces si no Mostrar ( alumno reprobado ) Fin-si Fin 2) En un almacn se hace un 20% de descuento a los clientes cuya compra supere los $1000 Cual ser la cantidad que pagara una persona por su compra? Comienzo Leer ( compra ) Si ( compra > 1000 ) entonces desc compra * 0.20 fin-entonces si no desc 0 fin-si tot_pag compra - desc Mostrar ( tot_pag ) fin. 3) Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera: Si trabaja 40 horas o menos se le paga $16 por hora Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra. Comienzo Leer (horas-trab ) Si ( horas-trab > 40 ) entonces horas-extras horas-trab - 40 salario-sem horas-extras * 20 + 40 * 16 fin-entonces si no salario-sem horas-trab * 16 Fin-si Mostrar ( salario-sem ) Fin 4) Que lea dos nmeros y los imprima en forma ascendente Comienzo Leer ( num1 ) Leer ( num2 ) Si ( num1 < num2 ) entonces Mostrar ( num1, num2 ) Fin-entonces si no Mostrar ( num2, num1 ) fin-si fin

12

5) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si se compran tres camisas o mas se aplica un descuento del 20% sobre el total de la compra y si son menos de tres camisas un descuento del 10% Comienzo Leer ( num_camisas ) Leer ( prec ) tot_comp num_camisas * prec Si ( num_camisas > = 3 ) entonces tot_pag tot_comp - tot_comp * 0.20 fin-entonces si no tot_pag tot_comp - tot_comp * 0.10 fin-si Mostrar ( tot_pag ) fin Problemas Selectivos Compuestos 1) Leer 2 nmeros; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume. Comienzo Leer ( num1 ) Leer ( num2 ) si ( num1 = num2 ) entonces resul num1 * num2 fin-entonces si no si ( num1 > num2 ) entonces resul num1 - num2 fin-entonces si no resul num1 + num2 fin-si fin-si fin 2) Leer tres nmeros diferentes e imprimir el numero mayor de los tres. Comienzo Leer ( num1 ) Leer ( num2 ) Leer ( num3 ) Si ( (num1 > num2) and (num1 > num3) ) entonces mayor num1 fin-entonces si no Si ( (num2 > num1) and (num2 > num3) ) entonces mayor num2 fin-entonces si no mayor num3 fin-si fin-si Mostrar ( mayor ) 13

fin 3.4. Estructuras Cclicas o Repetitivas Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en funcin de algn dato dentro del programa).Los ciclos se clasifican en: 3.4.1 Ciclos con un Numero Indeterminado de Iteraciones (Mientras, HacerMientras) Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya que esta dado en funcin de un dato dentro del programa. Mientras: Esta es una estructura que repetir un proceso durante N veces, donde N puede ser fijo o variable. Para esto, la instruccin se vale de una condicin que es la que debe cumplirse para que se siga ejecutando. Cuando la condicin ya no se cumple, entonces ya no se ejecuta el proceso. La forma de esta estructura es la siguiente: Mientras <condicin> Hacer Accion1 Accion2 . . AccionN Fin-mientras 3.4.2 Uso de estructuras repetitivas Realizar un algoritmo que permita realizar 3 veces lo siguiente: ingresar 2 nmeros calcular su suma e informar el resultado. El algoritmo deber: 1. Leer el nmero que ingresa el usuario 2. Efectuar la suma y almacenarla 3. Mostrar el resultado almacenado Para efectuar esto una sola vez bastara con el siguiente algoritmo: COMIENZO { Ingreso de datos} MOSTRAR (Ingrese primer nmero:) LEER (NUMERO1) MOSTRAR (Ingrese segundo nmero:) LEER (NUMERO2) { Proceso de suma} RESULTADO NUMERO1 + NUMERO2 { Informe por pantalla} MOSTRAR (El resultado de la suma es:) MOSTRAR (RESULTADO) FIN Pero el algoritmo anterior slo efecta una vez la suma de dos nmeros, para que pueda hacerlo ms veces deberamos repetir las sentencias de entrada, proceso y salida de datos tantas veces como se solicite. { Ingreso de datos} MOSTRAR (Ingrese primer nmero:) LEER (NUMERO1) MOSTRAR (Ingrese segundo nmero:) LEER (NUMERO2) { Proceso de suma} 14

RESULTADO NUMERO1 + NUMERO2 { Informe por pantalla} MOSTRAR (El resultado de la suma es:) MOSTRAR (RESULTADO) Para realizar esto utilizamos una estructura repetitiva que ejecute 3 iteraciones COMIENZO { Inicializacin de variables } CONTADOR 0 { la variable contador debe tener valor inicial para que sepa a partir de que valor comienza a contar} MIENTRAS ( CONTADOR < 4 ) HACER { Ingreso de datos} MOSTRAR (Ingrese primer nmero:) LEER (NUMERO1) MOSTRAR (Ingrese segundo nmero:) LEER (NUMERO2) { Proceso de suma} RESULTADO NUMERO1 + NUMERO2 { Informe por pantalla} MOSTRAR (El resultado de la suma es:) MOSTRAR (RESULTADO) { cuento la realizacin de las operaciones 1 vez ms } CONTADOR CONTADOR + 1 FINMIENTRAS FIN Combinacin de estructuras selectivas y repetitivas Realizar un algoritmo que permita ingresar 5 nmeros e informe cuantos nmero ingresados son mayores a cero y cuantos menores a cero. El algoritmo deber: 1. Leer el nmero que ingresa el usuario 2. Comparar el valor del nmero ingresado con cero, en caso de ser mayor deber contar uno ms de la cantidad que tena 3. Comparar el valor del nmero ingresado con cero, en caso de ser menor deber contar uno ms de la cantidad que tena 4. Informar con una de las leyendas enunciadas Para realizar los pasos 2 y 3 se debe usar estructuras SELECTIVAS. La lectura de nmeros como las distintas comparaciones se debern ejecutar 5 veces, por lo tanto es necesaria una estructura REPETITIVA que abarque esas sentencias. Slo el informe se realiza una vez. COMIENZO { Inicializacin de variables } CONTAR 0 { variable que contar hasta 5 para controlar la cantidad de nmeros ingresados } MAYOR 0 { variable que contar la cantidad de nmeros mayores a cero} MENOR 0 { variable que contar la cantidad de nmeros menores a cero} { Ingreso de datos y proceso de seleccin} MIENTRAS ( CONTAR < 5 ) HACER MOSTRAR (Ingrese un nmero:) LEER (NUMERO) { Proceso de seleccin}

15

{ utilizamos 2 SI pues en caso de ingresarse un CERO no debemos contarlo} SI ( NUMERO > 0) ENTONCES MAYOR MAYOR +1 { cuenta un nmero ms mayor a cero } FINSI SI ( NUMERO < 0) ENTONCES MENOR MENOR +1 { cuenta un nmero ms menor a cero } FINSI CONTAR CONTAR +1 { cuenta un nmero ms ingresado } FINMIENTRAS { informe final del proceso } MOSTRAR(Los nmeros mayores a cero fueron: ) MOSTRAR( MAYOR) MOSTRAR(Los nmeros menores a cero fueron:) MOSTRAR( MENOR) FIN 3.4.3 Hacer - mientras Esta es una estructura similar en algunas caractersticas, a la anterior. Repite un proceso una cantidad de veces, pero a diferencia del Mientras, el Hacer - mientras permite realizar el proceso cuando menos una vez, ya que la condicin se evala al final del proceso, mientras que en el Mientras puede ser que nunca llegue a entrar si la condicin no se cumple desde un principio. La forma de esta estructura es la siguiente: HACER Accion1 Accion2 . . AccionN MIENTRAS <condicin> 3.4.4 Ciclos con un Numero Determinado de Iteraciones (Para) Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura es la siguiente: Para (variable desde a hasta incremento) Hacer Accion1 Accion2 . AccionN Fin-para Donde: Variable: Variable de control del ciclo ( un contador ) Desde: Limite inferir Hasta: Limite superior Incremento: indica de que modo se incrementa la variable de control (de 1 en 1, de 2 en 2, etc.) En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de control llegue al limite superior. La cantidad de repeticiones que tenga depende del lmite superior y del incremento de la variable

16

Ejemplo Para - Hacer 1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseo Estructurado de Algoritmos Comienzo Sum0 Leer (Nom) Para (c 1 a 7 ) Hacer Leer calif Sum sum + calif Fin-para prom sum /7 Mostrar (prom) Fin. 2) Leer 10 nmeros y obtener su cubo y su cuarta. Comienzo Para ( n 1 a 10 ) hacer Leer ( num ) cubo num * num * num cuarta cubo * num Mostrar ( cubo ) Mostrar ( cuarta ) Fin-para Fin. 3) Leer 10 nmeros e imprimir solamente los nmeros positivos Comienzo Para ( n 1 a 10 ) Hacer Leer ( num ) Si ( num > 0 ) entonces Mostrar ( num ) fin-si Fin-para Fin. 4) Leer 15 nmeros negativos y convertirlos a positivos e imprimir dichos nmeros. Comienzo Para ( x 1 a 15 ) Hacer Leer ( num ) pos num * -1 Mostrar ( num, pos ) Fin-para Fin. 5) Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos. Realizar un algoritmo para calcular la calificacin media y la calificacin mas baja de todo el grupo. Comienzo sum 0 baja 9999 Para ( a 1 a 40 ) Hacer Leer ( calif ) sum sum + calif Si ( calif < baja ) entonces baja calif fin-si Fin-para

17

media sum / 2 Mostrar ( media, baja ) fin 6) Calcular e imprimir la tabla de multiplicar de un numero cualquiera. Imprimir el multiplicando, el multiplicador y el producto. Comienzo Leer ( num ) Para ( X 1 a 10 ) Hacer resul num * x Mostrar ( num, * , X, = , resul ) Fin-para fin. CAPITULO iV. ALGORITMOS DE EJEMPLO 4.1 Ejemplo de uso de contadores y acumuladores Ingresar 10 nmeros distintos de cero e informar el resultado de la suma de los positivos y el producto de los negativos COMIENZO CONTADOR 0 SUMA 0 PRODUCTO 1 BORRAR PANTALLA MIENTRAS(CONTADOR<10) HACER MOSTRAR("Ingrese nmero:") LEER(NUM) { bucle mientras que valida que el numero no sea cero} MIENTRAS( NUM = 0) HACER MOSTRAR("ERROR. Vuelva a ingresar") LEER(NUM) FINMIENTRAS SI(NUM>0) ENTONCES SUMA SUMA+NUM FIN-ENTONCES SINO PRODUCTOPRODUCTO*NUM FINSI CONTARCONTAR+1 FINMIENTRAS MOSTRAR("Suma de positivos:", SUMA) MOSTRAR("Producto de negativos:", PRODUCTO) FIN 4.2 Uso de distintas estructuras repetitivas Ingresar 10 nmeros distintos de cero. Sumar los positivos y obtener el producto de los negativos 1. Uso de la estructura MIENTRAS COMIENZO canti0 suma0 18

prod1 MIENTRAS( canti<10) HACER MOSTRAR("Ingrese un nmero") LEER(num) MIENTRAS(num=0) HACER MOSTRAR("Error. Vuelva a ingresar:") LEER(num) FINMIENTRAS SI(num>0) ENTONCES Suma suma+num FIN-ENTONCES SINO Prod prod*num FINSI canticanti+1 FINMIENTRAS MOSTRAR("La suma de los positivos es:",suma) MOSTRAR("El producto de los negativos es:",prod) FIN 2. Uso de la estructura HACER...MIENTRAS COMIENZO canti0 suma0 prod1 HACER MOSTRAR("Ingrese un nmero") LEER(num) MIENTRAS(num=0) HACER MOSTRAR("Error. Vuelva a ingresar:") LEER(num) FINMIENTRAS SI(num>0) ENTONCES Suma suma+num FIN-ENTONCES SINO Prod prod*num FINSI canticanti+1 MIENTRAS( canti<10) MOSTRAR("La suma de los positivos es:",suma) MOSTRAR("El producto de los negativos es:",prod) FIN 3. Uso de la estructura PARA COMIENZO suma0

19

prod1 PARA(canti 0; canti<10;canti canti+1) HACER MOSTRAR("Ingrese un nmero") LEER(num) MIENTRAS(num=0) HACER MOSTRAR("Error. Vuelva a ingresar:") LEER(num) FINMIENTRAS SI(num>0) ENTONCES Suma suma+num FIN-ENTONCES SINO Prod prod*num FINSI FINPARA MOSTRAR("La suma de los positivos es:",suma) MOSTRAR("El producto de los negativos es:",prod) FIN 4. Ingresar nmeros distintos de 0 (no se sabe cuntos). Sumar los positivos y multiplicar los negativos. COMIENZO seguir 'S' suma0 prod1 MIENTRAS( seguir = 'S' ) HACER MOSTRAR("Ingrese un nmero") LEER(num) MIENTRAS(num=0) HACER MOSTRAR("Error. Vuelva a ingresar:") LEER(num) FINMIENTRAS SI(num>0) ENTONCES Suma suma+num FIN-ENTONCES SINO Prod prod*num FINSI {sentencias de validacin de seguir} HACER MOSTRAR("Desea continuar(S/N):") LEER(seguir) MIENTRAS(seguir<>'S' AND seguir <> 'N') FINMIENTRAS MOSTRAR("La suma de los positivos es:",suma) MOSTRAR("El producto de los negativos es:",prod) FIN

20

4.3 Obtencin de mximos y mnimos Se ingresa de 30 alumnos su nombre y promedio. Se pide informar el nombre del mejor alumno y su promedio COMIENZO MEJOR-PROM 0 { variable que guarda el promedio mayor. Como se usa para comparar debe tener un valor inicial} MEJOR-NOMBRE { variable que guarda el nombre del alumno de mejor promedio} CUENTA { contador usado como variable de control del para} { la carga se realiza dentro de una estructura para pues conozco el nmero de iteraciones que tendr el bucle} PARA (CUENTA 0; CUENTA < 30; CUENTA CUENTA +1) HACER MOSTRAR("INGRESE NOMBRE DEL ALUMNO:") LEER(NOMBRE) MOSTRAR("INGRESE PORMEDIO:") LEER(PROM) { sentencias para validar que el promedio sea un valor correcto} MIENTRAS(PROM <1 O PROM>10) HACER MOSTRAR("ERROR. VUELVA A INGRESAR") LEER(PROM) FINMIENTRAS { compara el promedio ingresado con el mejor promedio almacenado hasta el momento} SI (PROM > MEJOR-PROM) ENTONCES MEJOR-PROM PROM MEJOR-NOMBRE NOMBRE FINSI FINPARA { escribe el informe de datos requeridos por el ejercicio} MOSTRAR ("EL ALUMNO DE MEJOR PROMEDIO ES:") MOSTRAR (MEJOR-NOMBRE) MOSTRAR ("SU PORMEDIO ES :")) MOSTRAR (MEJOR-PROM) FIN

21

ANEXO - Convenciones de Pseudocdigo a utilizar


SENTENCIAS/ ESTRUCTURAS ASIGNACIN OPERADORES ARITMTICOS PSEUDOCDIGO

- (resta) + (suma) / (divisin) (multiplicacin) Mod (resto de divisin entre enteros) OPERADORES < (menor) (menor o igual) RELACIONALES > (mayor) (mayor o igual) = (igual) < > (distinto) OPERADORES Y (and) LGICOS O (or) NO (not) ENTRADA / SALIDA MOSTRAR (nombre de variable o constante) LEER (nombre de variable) ESTRUCTURA SI ( condicin ) SELECTIVA SIMPLE ENTONCES Sentencias FINSI ESTRUCTURA SI ( condicin ) SELECTIVA COMPUESTA ENTONCES Sentencias SINO Sentencias FINSI ESTRUCTURAS MIENTRAS ( condicin ) HACER REPETITIVAS Sentencias FIN MIENTRAS HACER ESTRUCTURA DE SELECCIN MLTIPLE Sentencias MIENTRAS ( condicin ) CON-SELECCIN ( variable ) HACER CASO constante1: Sentencias ROMPER CASO constante2: Sentencias ROMPER CASO constante3: Sentencias ROMPER OTROS-CASOS: Sentencias FIN-SELECCIN BORRAR PANTALLA Las constantes de tipo carcter se colocan entre apstrofes (comillas simples) y las constantes de cadena entre comillas. Es para diferenciar las constantes de las variables Para salir de una estructura repetitiva antes de que finalice (por su condicin) o alcance el nmero de iteraciones indicados (en el para) utilizamos la sentencia ROMPER. Los comentarios los consignamos entre llaves { .... }

MANEJO DE PANTALLA OTRAS NOTAS

22

You might also like