Está en la página 1de 13

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO

Apuntes:

Algorítmica
Impartido en semestre 2011B CARRERA: Ingeniería de Software Elaborado por: Dra. Yulia Nikolaevna Ledeneva

Santiago Tianguistenco, Agosto de 2011

una secuencia después de otra. Sin embargo. … } El control fluye de la instrucciónA a la instrucciónB. es decir. Los algoritmos definidos hasta este punto se ejecutan de modo secuencial. cada una de las cuales se ejecuta una sola vez.1 Estructuras de control. Las estructuras o construcciones de control controlan la secuencia o flujo de ejecución de las sentencias. Las estructuras de control se dividen en tres grandes categorías en función del flujo de ejecución: secuencia selección repetición (iteración). Una sentencia compuesta es un conjunto de sentencias encerradas entre llaves ({ y }) que se utiliza para especificar un flujo secuencial. para la resolución de problemas de tipo general se necesita la capacitad de controlar cuáles son las sentencias que se ejecutan en qué momentos. Las estructuras de control permiten combinar instrucciones o sentencias individuales en una simple unidad lógica con un punto de entrada y un punto de salida. existen problemas que requieren etapas con dos o más opciones o alternativas a elegir en función del valor de una condición o expresión. Estructuras básicas de control y tipos de datos simples 2. La ejecución comienza con la primera sentencia del algoritmo y sigue hasta la última sentencia. { instrucciónA. . Sin embargo. y así sucesivamente. Esta forma de programación es adecuada para la resolución de problemas sencillos.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO II. instrucciónB.

Cuando se alcanza la sentencia SI dentro de un programa. se ejecuta Acción (en su formato más simple. Si Condición es verdadera. si la Condición es falsa (FALSE). Acción es una sentencia simple.1. Diagrama de flujo de una sentencia básica SI: Un segundo formato de la sentencia SI es la sentencia SI-SINO (en inglés IF-ELSE). es una sentencia compuesta). En otro caso. Si ésta es verdadera (TRUE). se evalúa la Condición entre paréntesis que viene a continuación de SI. se ejecuta la Acción A. La sentencia SI (en inglés IF) La sentencia SI tiene dos alternativas. La ejecución de esta sentencia consiste en evaluar primero la Condición.2 Estructuras de selección. Siempre se ejecuta alguna acción. o bien A o bien B. pero nunca ambas.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO 2. se ejecuta la Acción B. SI Condición ENTONCES Acción A SINO Acción B . En cualquier caso la ejecución del programa continúa con la siguiente sentencia del programa. El formato más sencillo tiene la siguiente sintaxis: SI (Condición) ENTONCES Acción FINSI La secuencia SI funciona de la siguiente manera. y en los restantes formatos.

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FINSI En inglés: IF Condición THEN Acción A ELSE Acción B ENDIF El diagrama de flujo correspondiente es: La sentencia SEGUN La sentencia de selección múltiple se utiliza para ejecutar distintas sentencias en función de los distintos valores que pueda tomar una expresión. El esquema de esta sentencia es: SEGUN Expresión HACER Lista de valores: Acción A Lista de valores: Acción B DE OTRO MODO: Acción por defecto FINSEGUN .

FINSEGUN A cada caso se puede asociar más de un valor.4) .. DE OTRO MODO: ESCRIBE (“Error: día no válido”). se ejecuta la acción por defecto. 3. 5 : ESCRIBE (“Viernes”). A continuación. Esto puede hacerse de tres formas: Separando distintos valores con comas (por ejemplo.3) Escribiendo dos valores separados por dos puntos. se inspeccionan las distintas listas de valores. Si el resultado de la expresión no aparece en ninguna de las listas. 6 : ESCRIBE (“Sábado”).2. 3 : ESCRIBE (“Miercoles”). La Acción. se ejecuta.5) Combinando estas dos formas (por ejemplo. 4 : ESCRIBE (“Jueves”). El siguiente ejemplo muestra el código para un trozo de programa que escribe el nombre del día de la semana almacenado en la variable Dia: SEGUN Dia HACER 1 : ESCRIBE (“Lunes”). 1.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En inglés: CASE Expresión OF Lista de valores: Acción A Lista de valores: Acción B ELSE Acción por defecto FINCASE Para ejecutar esta sentencia. En este caso se está especificando un rango de valores (por ejemplo. 1.. correspondiente a ese valor. 2 : ESCRIBE (“Martes”). se evalúa primero la expresión. hasta encontrar una con un valor que coincida con el resultado de la expresión. 7 : ESCRIBE (“Domingo”). 1.

7 : ESCRIBE (“Festivo”). no son suficientes para describir cualquier algoritmo.3 Estructuras de iteración. 6 : ESCRIBE (“Depende”). El tipo de la expresión y de los distintos valores debe coincidir.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO La siguiente sentencia escribe si el número almacenado en la variable Dia corresponde a un día laborable o no: SEGUN Dia HACER 1. Un mismo valor nunca puede aparecer en distintas alternativas. el programa acabará con un error. CARACTER. Es habitual que ciertas partes de un algoritmo deban repetirse varias veces con objeto de resolver un problema. Los distintos valores en las alternativas son expresiones constantes (no pueden intervenir variables). Debe de ser ENTERO. 2. Los lenguajes de programación disponen de una serie de sentencias que . BOOLEANO. estudiadas en el tema anterior.5 : ESCRIBE (“Laborable”).1. pero si el resultado de la expresión no coincide con ninguno de los casos.. DE OTRO MODO: ESCRIBE (“Error: día no válido”) FINSEGUN Algunas reglas relativas a esta sentencia son: La alternativa DE OTRO MODO puede no aparecer. El tipo de la expresión a evaluar no puede ser FLOTANTE o CADENA. Las estructuras de selección. La repetición es un concepto importante a la hora de describir algoritmos.

El algoritmo debe calcular la suma total de los números leídos y mostrar el resultado por pantalla. pero no sabemos cuántas veces es necesario repetir el bucle para que la condición se alcance.1. Podemos distinguir dos tipos de bucles: Bucles deterministas: son aquellos para los cuales el número de repeticiones es conocido a priori.2. Ejemplo: Supongamos que tenemos una computadora que sólo es capaz de sumar una unidad a un número. Leer un número desde el teclado 3. Escribir el valor de la variable suma . Mientras que el valor del número leído sea distinto de cero 3. Leer un número desde el teclado 2. Bucles (Ciclos) Un bucle es un segmento de algoritmo que se repite varias veces.1. A este tipo de sentencias se les denomina sentencias iterativas (o sentencias de repetición). Sumar uno al valor del número 3. Escribir un algoritmo que lea un número del teclado. le sume diez y muestre el resultado por pantalla.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO permiten repetir varias veces algunos segmentos del programa. Un posible algoritmo que utiliza un bucle determinista para resolver este problema es el siguiente: 1. Volver a leer el número desde el teclado 4. Sumar el valor del número leído a la variable suma 3. Guardar el valor cero en la variable suma 2. Repetir 10 veces 2. Ejemplo: Escribir un algoritmo que lea números desde teclado hasta que se lea un valor cero. El bucle se repite hasta que se alcanza cierta condición. Un algoritmo que utiliza un bucle no determinista para resolver este problema es el siguiente: 1. La condición es conocida a priori. Escribir el valor del número Bucles no deterministas o indeterministas: son aquellos para los cuales no se conoce a priori el número de veces que se van a repetir.

El valor de esta variable se modifica en cada repetición del bucle. un número de veces conocido a priori.Valor_inicial HASTA Valor_final HACER <a> CON PASO 1 FINPARA Valor_final HACER <a> PARA Variable = Valor1 HASTA Valor2 HACER Acciones En inglés: FOR Variable = Valor1 TO Valor2 DO Acciones ENDFOR Las palabras PARA (FOR). El significado de la sentencia PARA es el siguiente: se ejecutan las acciones entre las palabras HACER y FIN tantas veces como indique la expresión (Valor2-Valor1+1). La segunda vez que se ejecuten las acciones. El valor de la variable de control es incrementado en una unidad tras cada repetición. La forma más simple que toma esta sentencia es la siguiente: Pseudocódigo Herramienta PSeInt PARAVariable = Valor_inicial HASTA PARA Variable <. sabemos que dichos pasos dejarán de repetirse en el momento en que se lea un valor cero desde el teclado. el valor de la variable de control es Valor1+1. de modo que la última vez que se ejecuten las acciones el valor de la variable de control es Valor2. una serie de instrucciones. Sin embargo. Conocemos a priori la condición pero no el número de repeticiones. DO (HACER) y FINPARA (ENDFOR) son palabras reservadas del lenguaje y delimitan cada una de las partes de la sentencia.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En este caso. .2. el valor de la variable de control es Valor1.1 y 3. La sentencia PARA (en inglés FOR) La sentencia PARA permite repetir. La primera vez que se ejecuten estas acciones. no sabemos a priori cuántas veces se repetirán los pasos 3. El conjunto de acciones que aparecen entre las palabras HACER y FIN constituyen el cuerpo del bucle. HASTA (TO). La variable que aparece a la izquierda del signo de asignación se llama variable de control del bucle.

FINPARA . FINPARA Ejemplo: El cuerpo del siguiente bucle se ejecuta dos veces (con valores para la variable i de uno y tres) ya que la condición de salida es cierta la tercera vez. Ejemplo: El cuerpo del siguiente bucle se ejecuta cero veces. ya que la condición de salida es cierta la primera vez. PARA i = 1 HASTA 4 POR 2 HACER ESCRIBE “i”. PARA i = 1 HASTA 0 HACER Escribe “i”. (b) Bucle PARA con paso negativo. (a) Bucle PARA con paso positivo.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO El diagrama de flujo que representa la sentencia PARA depende del signo de la expresión constante Paso: (a) (b) Figura 4.

.’Z’] en la tabla ASCII). 3) Una variable importada de otro módulo (ver tema sobre módulos). FINPARA. Ejemplo: No sabemos qué valor se escribe por pantalla tras del siguiente bucle. FINPARA Algunas consideraciones sobre la sentencia PARA son las siguientes: El tipo de la variable de control puede ser básico (excepto REAL y LONGREAL).. 4) Un parámetro formal (ver tema sobre subprogramas). Ejemplo: El siguiente bucle muestra por pantalla todas las letras mayúsculas (excepto la letra eñe mayúscula que está fuera del rango [‘A’. PARA Letra = ‘A’ HASTA ‘Z’ HACER ESCRIBE “Letra”. El tipo de la expresión constante Paso debe ser entero.. . PARA i = 1 HASTA 2*Fin HACER ESCRIBE “i”. El valor de la variable de control está indefinido tras la finalización del bucle PARA. PARA i = 1 HASTA 10 HACER . Fin = 5. El programador no debe escribir en el cuerpo del bucle ninguna sentencia que modifique el valor de la variable de control. FINPARA Los tipos de las expresiones Valor1 y Valor2 deben ser compatibles con el tipo de la variable de control. enumerado o subrango (ver tema sobre tipos definidos por el programador). ESCRIBE “i”. La variable de control no puede ser: 1) Una componente de una variable estructurada (ver tema sobre arreglos).UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO Ejemplo: El cuerpo del siguiente bucle se ejecuta diez veces (con valores para la variable i entre uno y diez) ya que el valor para la expresión que aparece tras la palabra TO es calculado una única vez y no se vuelve a calcular tras cada repetición. 2) Una variable anónima (ver tema sobre punteros).

La sentencia MIENTRAS debe utilizarse exclusivamente para expresar bucles indefinidos. . HACER (DO) y FINMIENTRAS (ENDWHILE) son palabras reservadas del lenguaje y delimitan cada una de las partes de la sentencia. mientras que sea cierta una condición.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO La sentencia MIENTRAS (WHILE) La sentencia MIENTRAS permite repetir. una serie de instrucciones. La condición que aparece entre las palabras MIENTRAS y HACER es denominada condición de permanencia del bucle. El diagrama de flujo correspondiente a esta sentencia es el siguiente: Figura 5. La forma que toma esta sentencia es la siguiente: MIENTRAS Condición HACER Acciones FINMIENTRAS (En inglés) WHILE Condición DO Acciones ENDWHILE Las palabras MIENTRAS (WHILE). La sentencia MIENTRAS (WHILE). La condición de permanencia debe ser una expresión de tipo booleano. El conjunto de acciones que aparecen entre las palabras HACER y FIN constituyen el cuerpo del bucle.

Guardar el valor cero en la variable 4. Podría ocurrir que el cuerpo del bucle no llegara a ejecutarse. Escribir el valor de la variable . Sumar uno a la variable 4. para cada repetición del bucle.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO Obsérvese que la condición se vuelve a evaluar. calcule el mínimo valor de tal que 0 + 1 + 2 + .2. Un posible algoritmo para resolver este problema es el siguiente: 1.. Ejemplo: Escribir un programa que.. Guardar el valor cero en la variable Suma 3. Mientras que el valor de la variable Suma sea menor al de la variable Tope 4. dado un número natural Tope. antes de ejecutar el cuerpo. + (N . Leer del teclado el valor de la variable Tope 2. Sumar a la variable Suma 5.1. en caso de que la condición fuese falsa la primera vez que se comprueba. Se permanece dentro del bucle mientras que la condición sea cierta (es por esto que la condición se llama de permanencia).1) + N >= Tope.

El conjunto de acciones que aparecen entre las palabras REPEAT y UNTIL constituyen el cuerpo del bucle. La sentencia REPEAT debe utilizarse exclusivamente para expresar bucles indefinidos. Obsérvese que la condición se vuelve a evaluar. El diagrama de flujo correspondiente a esta sentencia es el siguiente: Figura 6. . Se sale del bucle una vez que la condición sea cierta (es por esto que la condición se llama de salida). La forma que toma esta sentencia es la siguiente: REPETIR Acciones HASTA Condición En inglés: REPEAT Acciones UNTIL Condición Las palabras REPEAT y UNTIL son palabras reservadas del lenguaje y delimitan cada una de las partes de la sentencia. La condición que aparece tras la palabra UNTIL es denominada condición de salida del bucle. para cada repetición del bucle. La condición de salida debe ser una expresión de tipo booleano. El cuerpo del bucle se ejecuta al menos una vez. La sentencia REPETIR (REPEAT). después de ejecutar el cuerpo.UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO La sentencia REPETIR (en inglés REPEAT) La sentencia REPEAT permite repetir una serie de instrucciones hasta que cierta condición sea cierta.