Download - Fundamentos de pogramación
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
1
1. FUNDAMENTOS DE PROGRAMACION
1.1 Introducción
En la vida diaria nos enfrentamos continuamente a problemas que debemos resolver en lo posible felizmente, ante la presentación de un problema encarar la mejor forma de resolverlo para arribar al resultado esperado y correcto es un desafío, para ello debemos comprender exactamente qué se pide, qué resultados se pretenden y que restricciones y/o condiciones existen. Para realizar lo antes dicho dividiremos la resolución de un problema en etapas, las cuales enunciamos y definimos a continuación.
1.2 Etapas para la resolución de problemas
a. Definición del problema
Está dada por la formulación del problema en forma correcta y completa, esta enunciación de lo que se desea es primordial para el éxito de la resolución.
b. Análisis del problema
A partir del estudio del problema se deberá identificar y conocer las partes principales del mismo y de esa manera determinar los siguientes conjuntos:
de DATOS: es la información con que contamos para resolver el problema.
de RESULTADOS: es lo que se desea obtener.
de CONDICIONES: una o más relaciones que vinculan los dos conjuntos anteriores y que permitirán plantear la solución del problema.
c. Programación
Esta etapa consiste en obtener la solución del problema dado. Se divide en dos sub-etapas:
1. Elección y creación del método
Se trata de buscar un procedimiento o método general que permita resolver el problema planteado utilizando una computadora. Es muy factible que se encuentren varios métodos para hacerlo, lo importante es determinar la “mejor alternativa”, de acuerdo a distintos parámetros que se establezcan para esta selección. Esta puede ser la que produzca los resultados esperados en el menor tiempo y al menor costo o sólo en el menor tiempo u otras.
2. Codificación
Consiste en expresar el método elegido en un lenguaje, llamado lenguaje de programación, que pueda ser interpretado por la computadora.
d. Prueba
Esta etapa consiste en la ejecución del código del método elegido, es decir, suministrar los datos al computador, y obtener los resultados. Luego se analizarán los mismos determinando si son realmente los esperados. Caso contrario, deberán analizarse las etapas previas, comenzando por la última hacia atrás, y realizar las modificaciones necesarias, repitiendo este proceso hasta obtener los resultados esperados.
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
2
Observemos gráficamente las etapas descriptas
La etapa de elección y creación del método se puede dividir a su vez en el diseño de la estrategia y la definición del algoritmo, y puede graficarse de la siguiente manera:
Ahora definamos el concepto de estrategia y de algoritmo.
ESTRATEGIA
El diseño de la estrategia consiste en encontrar un método que nos permita llegar a resolver el problema planteado. Como primer paso de esta etapa, debemos preparar un plan o esquema general de las tareas que deben realizarse para llegar a la solución. Este esquema se denomina estrategia y debe ser una lista de QUÉ hacer.
¿Cómo se diseña una estrategia?
Por lo dicho, diseñar una estrategia consiste en dividir o descomponer el problema original en una sucesión de problemas más simples, de tamaño suficientemente pequeño como para que cada uno de ellos pueda ser comprendido en su totalidad. Esto, permitirá atacar la solución de cada problema simple por separado e independientemente de los demás, volviendo a aplicar este enfoque a cada uno de los subproblemas hasta llegar a subproblemas de solución simple. Una vez que todos ellos han sido resueltos, se puede decir que el problema original ha sido resuelto.
Resolución de problemas
Definición del problema
Análisis del problema
Programación Prueba
Elección y creación del
método
Codificación
Elección y creación del
método
Diseño de la
estrategia Definición del
algoritmo
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
3
Este proceso de descomposición de un problema partiendo de la formulación completa del problema hasta llegar a problemas elementales de simple solución, se llama diseño descendente, también conocido como top-down, método de refinamiento sucesivo o diseño compuesto.
Gráficamente, dado el problema P lo dividiremos en subproblemas Pi. Cada subdivisión implica un descenso de nivel.
nivel 0
nivel 1
nivel 2
Cada Pi representa un enunciado o subproblema. Para cada uno existen 2 posibilidades:
que Pi sea un subproblema o una tarea simple, dando por finalizada la descomposición
que Pi sea un subproblema o una tarea compuesta y por lo tanto sea posible su descomposición en una nueva secuencia de subproblemas
Las características generales de este tipo de diseño se basan en:
ir de lo general a lo particular
no existe una única descomposición de subproblemas
en cada nivel puede verificarse que el esquema sea el correcto
Finalmente se realiza un trabajo de recomposición del esquema completo, resolviendo cada subproblema hasta lograr la solución del problema.
El diseño de una estrategia y su posterior refinamiento, constituyen las etapas más creativas y quizás más dificultosas de todo el proceso de resolución de un problema.
P
P1 P2 P3 P4
P31 P32 P33
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
4
1.3 Algoritmo
Planteada una estrategia indicando QUÉ tareas hacer, debemos especificar una lista detallada de CÓMO hacerlas, llegando así a definir una solución paso a paso del problema llamada algoritmo. La descripción de la solución detallada por medio de un algoritmo constituye el segundo paso en la etapa de elección del método.
La palabra algoritmo se utiliza, en general, como sinónimo de procedimiento, método o técnica. Pero en el área de computación tiene un significado más específico.
Un algoritmo es un conjunto finito de operaciones (instrucciones - pasos) que seguidos en un determinado orden permiten resolver un tipo de problema.
Las características principales de un algoritmo son:
Finito: permite arribar a la solución de un problema después de la ejecución de un número finito de pasos.
Definido: cada paso debe ser enunciado en forma clara y precisa, y no debe dar lugar a ambigüedades. Para los mismos datos el algoritmo debe dar siempre los mismos resultados
General: la solución debe ser aplicable a un tipo de problemas y no a un problema particular.
Teniendo en cuenta las características mencionadas previamente podemos decir que: un algoritmo es una secuencia ordenada y finita de pasos que constituyen un método general para resolver un tipo de problemas.
Es de notar que esta definición, se refiere a ‘...resolver un tipo de problemas.....’ y no hace hincapié en el uso del computador como herramienta para su resolución. Esto se debe a que el concepto de algoritmo se aplica a problemas computacionales que van a ser resueltos por medio de un computador y a problemas no computacionales, en cuya resolución no interviene esta herramienta. En ambos casos el lenguaje usado en la descripción del algoritmo debe ser comprensible para el destinatario o para quien lo va a ejecutar. Por lo visto, para cualquier problema para el que pueda especificarse un método finito de solución puede definirse un algoritmo.
Ejemplos que se pueden presentar en la vida diaria:
una receta de cocina
las instrucciones para utilizar un aparato electrónico
el camino para llegar a un lugar determinado desde un punto de partida
Ejemplos de algoritmos computacionales:
Calcular los sueldos de los empleados de una empresa
Actualizar el stock de un comercio
Calcular las raíces de una ecuación
Desarrollemos el siguiente ejemplo de la vida diaria
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
5
Problema: Preparar un taza de café instantáneo
El grado de detalle que deberemos usar en la definición del método, dependerá de la persona que sea la ejecutante de la solución.
Si el ejecutante es un ama de casa, probablemente con el enunciado sea suficiente, pero si se trata de alguien que nunca preparó un café podríamos detallar los siguientes pasos:
Obsérvese que para indicar el inicio y el fin del algoritmo se han utilizado las palabras PROCESO Y FINPROCESO respectivamente y que los pasos han sido lo suficientemente simples para un principiante en el arte de preparar café.
Otro aspecto que es importante considerar es que contamos con una serie de elementos para poder preparar el café como por ejemplo: azúcar, café, cucharita, taza.
Supongamos que no se tiene la certeza de que hay café, por ende, este elemento se podrá reemplazar con chocolate, con lo cual el algoritmo será:
Las dos primeras instrucciones se ejecutan una a continuación de otra, luego se presentan dos alternativas: o se agrega media cucharadita de café o se agrega media cucharadita de chocolate. Para describirlas se ha usado las palabras SI ENTONCES SINO FINSI.
En este caso el algoritmo cubre ya mayor cantidad de posibilidades, no previstas en la versión anterior.
PROCESO Cafe1
Calentar una taza de agua;
Poner en un taza tres cucharaditas de azúcar, dos de café instantáneo;
Revolver para disolver la mezcla en el agua
FINPROCESO
PROCESO Cafe2
Calentar una taza de agua;
Poner en un taza tres cucharaditas de azúcar;
SI se tiene café
ENTONCES agregar en la taza media cucharadita de café
SINO agregar en la taza media cucharadita de chocolate
FINSI
Revolver para disolver la mezcla en el agua
FINPROCESO
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
6
A partir de esto se pueden realizar las siguientes observaciones:
El algoritmo debe estar compuesto por acciones tales que el ejecutante sea capaz de realizar
El algoritmo debe ser enunciado en un lenguaje comprensible para el ejecutante, hombre o computador. En este último caso, estará restringido a un juego de instrucciones perfectamente determinado.
El algoritmo deberá representar todo el conjunto de posibles resultados del problema, inclusive el caso de que no tenga solución
Para un mismo problema se pueda describir más de un algoritmo y con cualquiera de ellos se deberá llegar a la/s misma/s solución/es; un algoritmo será más eficaz que otro. La eficacia del algoritmo depende de los recursos con que se cuente y los factores que se consideren: costos, tiempo, etc.
Ejemplo de resolución de problemas de la vida cotidiana
Ejemplo: Preparar un licuado de frutas
Recursos: Licuadora. Fruta con cáscara. Taza con leche. Taza con azúcar. Cuchillo. Plato. Todos los elementos están sobre la mesada. Se cuenta con las medidas necesarias de todos los ingredientes.
Algoritmo:
En este caso ciertas acciones como la de Tomar la fruta, pelarla, cortarla, colocar..... se repiten mientras se tiene fruta para hacerlo. Aparecen aquí las palabras REPETIR y HASTAQUE, que veremos en capítulos posteriores.
PROCESO Licuado
Tomar el vaso de la licuadora
Colocar el vaso en la base
SI la licuadora no está enchufada
ENTONCES enchufarla
FINSI
Tomar el cuchillo
REPETIR
tomar la fruta
pelarla
cortarla sobre el plato
colocar la fruta cortada en el vaso
HASTAQUE no haya más frutas
Dejar el cuchillo
Tomar la taza con la leche
Echar la leche en el vaso
Dejar la taza de la leche sobre la mesa
Tomar la taza con el azúcar
Colocar el azúcar en el vaso
Dejar la taza del azúcar sobre la mesa
Tapar el vaso
Prender la licuadora
REPETIR
esperar
HASTAQUE la mezcla esté licuada
Apagar la licuadora
FINPROCESO
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
7
FORMALIZACIÓN
La forma de enunciar la solución a un problema planteado depende del ejecutante.
Para poder realizar una tarea, el ejecutante debe contar con los recursos o elementos adecuados, estos recursos constituye el ambiente del problema.
El método que se elija para proponer la solución de un problema depende del ejecutante.
Cuando definimos algoritmo hemos hablado de un conjunto de pasos o acciones.
Se presentan situaciones que indican alternativas: “SI se tiene café...”, esta no es una acción porque no modifica el ambiente, a estos enunciados se los denomina condición.
Una condición es una afirmación lógica sobre el estado de algún recurso del ambiente, que puede tomar valor verdadero o falso en el momento de la observación.
El ejecutante determina las acciones a seguir, dependiendo si la condición sea satisfecha o no.
PROGRAMACIÓN MODULAR
Es un método de diseño y tiende a dividir el problema en partes perfectamente diferenciadas que puedan ser analizadas, resueltas y puestas a punto por separado.
Cada una de las partes independientes se llama Módulo y para su determinación se deben tener en cuenta los siguientes criterios:
un módulo debe corresponder a una función lógica perfectamente bien definida.
los módulos deben ser pequeños para que sean claros y de poca complejidad.
un módulo debe tener una estructura de caja negra, es decir la salida debe ser exclusivamente función de la entrada.
cada módulo deber tener una única entrada y una única salida.
Objetivos de la programación modular
La programación modular tiende a:
disminuir complejidad: disminuye la complejidad del problema original, dividiendo un problema en partes más simples.
aumentar la claridad: el problema original es planteado ahora como una sucesión de módulos que resulta más fácil de comprender inclusive para terceras personas.
aumentar la fiabilidad: como consecuencia de los dos puntos anteriores, aumenta la confiabilidad en todo proceso de resolución.
facilitar modificaciones y conexiones: cada módulo puede realizarse y probarse por separado, minimizándose los problemas de puesta a punto al final.
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
8
1.4 Algoritmos Computacionales
Los problemas desarrollados hasta el momento, se resolvieron empleando instrucciones orales y se basaban en situaciones de la vida diaria. Los algoritmos así desarrollados son fáciles de entender para cualquier persona o ejecutante.
Pero nuestro objetivo es llegar a desarrollar algoritmos que puedan ser interpretados por una computadora. Para ello, es necesaria una descripción clara y carente de ambigüedades de cada una de las acciones que llevan a la solución del problema, por medio de órdenes comprensibles para la computadora.
En el siguiente ejemplo planteamos un algoritmo completo de acuerdo a la formalización que propondremos posteriormente.
Ejemplo: Plantear un algoritmo computacional que calcule la hipotenusa de un triángulo rectángulo. Se conocen las longitudes de los catetos.
Análisis del problema:
Datos: Longitudes de los catetos
Resultados: Hipotenusa
Relación: Teorema de Pitágoras
Algoritmo:
En este ejemplo:
A, B y H constituyen variables;
2 e 'Hipotenusa = ' son constantes;
Leer, Escribir y son las acciones de lectura, escritura y asignación respectivamente;
RC (A 2 + B 2) es una expresión numérica y RC ( ) es la función raíz cuadrada.
El signo; (punto y coma) es el separador de acciones, todos estos elementos, que conforman un lenguaje algorítmico que llamaremos PSEUDOCODIGO.
La forma general de un algoritmo escrito en pseudocódigo es la siguiente:
Donde las acciones van separadas por el signo punto y coma (;) y pueden ir varias acciones en una misma línea.
PROCESO <nombre del proceso> acción 1; acción 2; acción 3; : acción n-1; acción n FINPROCESO
PROCESO: Hipotenusa
Leer A, B;
H RC( A 2 + B 2);
Escribir ‘Hipotenusa = ‘;
Escribir H
FINPROCESO
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
9
1.5 Constantes, Variables y Expresiones
Definimos constante, como un elemento cuyo valor no puede alterarse en el transcurso de la ejecución de un algoritmo. Por ejemplo: 123, 'López', 3.14459
Pero además en un algoritmo existen otros elementos cuyo valor cambia durante la ejecución del mismo, llamados variables. En el ejemplo inicial A, B y H son variables -correspondientes a los catetos y a la hipotenusa del triángulo, respectivamente- que adquieren un valor en el momento de la ejecución del algoritmo.
Una variable es un elemento asociado a un valor que puede variar conforme se ejecuta el algoritmo, se representa por un nombre que identifica a una posición de memoria donde puede asignarse o almacenarse un único valor por vez.
Para proponer el nombre de una variable observaremos tres reglas simples:
1. Utilizar sólo letras y/o dígitos, comenzando siempre con una letra. 2. No utilizar las palabras claves o reservadas en el pseudocódigo, como: LEER, ESCRIBIR,
PROCESO, FINPROCESO, etc.; 3. No hacer distinción entre mayúsculas y minúsculas. Esto implica que VENTA, venta y
Venta, constituyen en el algoritmo la misma variable.
Esta sintaxis y sus restricciones no presentan inconvenientes para proponer nombres de variables, pues disponemos de un sinnúmero de combinaciones diferentes de letras y dígitos
por ejemplo NOMBRE, DIRECCION, Res1, MONTO.
Ejercicio: En los siguientes ejemplos de variables, indique si son válidas; caso contrario especifique la causa:
a) venta b) x12 c) (total) d) resultado e) *PRODU f) promedio
El diseñador del algoritmo tiene total libertad para proponer nombres a sus variables, aunque como consejo, es conveniente proponer identificadores que tengan alguna relación con el dato que representan. En nuestro ejemplo inicial, podríamos haber empleado CATETO1, CATETO2, HIPOT, en lugar de A, B, H.
Por último:
Definimos expresión a un conjunto de operandos ligados por operadores, que describen una operación o cálculo arrojando un único resultado. En nuestro primer
ejemplo RC (A 2 + B 2) es una expresión que permite obtener el valor de la hipotenusa.
Algunos ejemplos de expresiones: 1) 2+a-x*5, 2) A < B, 3) TRUNC( R ) + 1
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
10
1.6 Tipos de Datos
Un algoritmo computacional puede emplear los siguientes tipos de datos:
Numérico
Caracter
Lógico
1.6.1 Tipo Numérico
Es el conjunto formado por los valores numéricos que pueden incluir un punto decimal y pueden estar precedidos por los signos '+' o '-'. La ausencia de signo implica un valor positivo.
Se clasifican a su vez en tipo entero o tipo real, pero no haremos distinciones en su empleo.
Los datos de tipo numérico pueden representarse como constantes, variables y /o expresiones.
Constantes numéricas
Una constante numérica es un valor formado por algún elemento del conjunto numérico.
Veamos algunos ejemplos de constantes numéricas que puedan emplearse en un algoritmo computacional:
12 -25000 +1.2345 -2345 -23576.998 0.45E+02
En el último ejemplo se indica una constante numérica con notación científica, donde E+02 indica la potencia de base diez, es decir:
0.45E+02 = 0.45 * 10 2 = 45
Variables numéricas
Cualquier identificador o variable que represente a un dato numérico se denomina variable numérica. Si una variable se define en un algoritmo como numérica, no podrá adoptar valores de tipo no numérico.
Expresiones numéricas
Una expresión numérica es aquella que combina operandos numéricos (constantes numéricas, variables numéricas u otras expresiones numéricas) con los operadores algebraicos.
Los operadores algebraicos y su función son:
Operador Función
+ Suma
- Resta
* Producto
/ Cociente
Potencia
La jerarquía de estos operadores es la misma que plantea el álgebra de los números, y podrá ser alterada con la intercalación de niveles de paréntesis.
Ejemplos: 2 + a * 10 2 - 800 / C
1 - (2 * TOT - 30) P)
4 * (VENTA / 5 2 - 25)
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
11
donde a, C, TOT, P, VENTA son todas variables numéricas. En cada caso, al evaluar la expresión se obtiene un único resultado.
El operador de radicación no existe, ya que esta operación puede plantearse a través de la potenciación de exponente fraccionario. De todas maneras utilizaremos una función para el cálculo de la raíz cuadrada, como se indica en el ejemplo inicial.
Supondremos además, que el ejecutante de nuestro algoritmo (la computadora) conoce y puede resolver ciertas funciones numéricas. A estas funciones las llamaremos "funciones internas" y, tienen la propiedad de devolver un valor o resultado al ser aplicadas sobre un argumento indicado entre paréntesis.
Función Significado
RC( ) Raíz cuadrada
ABS( ) Valor absoluto
EXP( ) Exponenciación
SEN( ) Seno
COS( ) Coseno
TAN( ) Tangente
ATAN( ) Arco tangente
TRUNC( ) Parte entera
LN( ) Logaritmo natural
REDON( ) Redondeo
Con esto podemos ampliar el uso de las expresiones numéricas antes mencionadas.
Ejemplos: TRUNC(2/3) - ABS(A) * 3
SEN(X) + 1 - TAN(C/2)
12/ RC(TAN(3.1416 / 4))
1.6.2 Tipo Caracter
El tipo caracter incluye al conjunto formado por todos los caracteres o símbolos de código ASCII (Código Estándar Americano para el Intercambio de Información). La mayoría de ellos se generan en el teclado de una computadora, es decir, las letras de nuestro alfabeto en mayúscula, en minúscula, los dígitos, los operadores relacionales '<', '>', '=', el espacio en blanco ' ',los operadores aritméticos '+', '-', '*', '/', los caracteres de puntuación y otros especiales '!', '@', '%', '(', etc.
Este conjunto de 256 caracteres es un conjunto ordenado, y por lo tanto, existe una relación de precedencia u orden entre sus elementos (de menor a mayor) determinado por su número de código. El orden lo establece el código ASCII (ver la tabla con algunos de los códigos).
Tener en cuenta que en el orden de precedencia del código ASCII, los siguientes grupos se hallan propuestos de menor a mayor:
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
12
El espacio en blanco
Los dígitos '0', '1', '2',.........'9'.
Las letras mayúsculas 'A', 'B',......'Z'.
Las letras minúsculas 'a', 'b',......'z'.
Algunos caracteres del código ASCII con su número de orden correspondiente
32 ' ' 48 '0' 64 '@' 80 'P' 96 '`' 112 'p'
33 '!' 49 '1' 65 'A' 81 'Q' 97 'a' 113 'q'
34 '"' 50 '2' 66 'B' 82 'R' 98 'b' 114 'r'
35 '#' 51 '3' 67 'C' 83 'S' 99 'c' 115 's'
36 '$' 52 '4' 68 'D' 84 'T' 100 'd' 116 't'
37 '%' 53 '5' 69 'E' 85 'U' 101 'e' 117 'u'
38 '&' 54 '6' 70 'F' 86 'V' 102 'f' 118 'v'
39 ''' 55 '7' 71 'G' 87 'W' 103 'g' 119 'w'
40 '(' 56 '8' 72 'H' 88 'X' 104 'h' 120 'x'
41 ')' 57 '9' 73 'I' 89 'Y' 105 'i' 121 'y'
42 '*' 58 ':' 74 'J' 90 'Z' 106 'j' 122 'z'
43 '+' 59 ';' 75 'K' 91 '[' 107 'k' 123 '{'
44 ',' 60 '<' 76 'L' 92 '\' 108 'l' 124 '|'
45 '-' 61 '=' 77 'M' 93 ']' 109 'm' 125 '}'
46 '.' 62 '>' 78 'N' 94 '^' 110 'n' 126 '~'
47 '/' 63 '?' 79 'O' 95 '_' 111 'o' 127 '•'
Constantes caracter
Una constante tipo caracter es una constante cuyo valor pertenece al conjunto mencionado anteriormente delimitada por apóstrofos (‘ ‘).
De acuerdo a la relación de orden establecida, podemos afirmar que son verdaderas las siguientes proposiciones:
La letra 'a' es mayor que la letra 'B'.
El caracter '5' es menor que la letra 'A'.
Variables caracter
Una variable o identificador que represente a un caracter o a una cadena de caracteres es una variable de tipo caracter.
1.6.3 Tipo Lógico
El tipo lógico nos permite expresar un valor de verdad en un algoritmo a través de constantes, variables y/o expresiones.
Constantes Lógicas
Las constantes lógicas son sólo 2 y están representadas por los valores Verdadero y Falso.
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
13
Representaremos a las constantes lógicas con los símbolos V y F. El subrayado es para evitar ambigüedades con las variables V y F. Esta información se produce como resultado de cualquier expresión lógica.
Variables Lógicas
Una variable lógica es una variable que representa a alguno de los dos valores lógicos: V o F.
Expresiones lógicas
Las expresiones lógicas más sencillas se plantean con la combinación de operandos del mismo tipo y los operadores relacionales matemáticos.
Operador Significado
< Menor que
> Mayor que
= Igual que
>= Mayor o igual que
<= Menor o igual que
<> Distinto
Ejemplos:
Expresión Lógica Resultado 45 > 12 V
56 <= 30 F 60 < '23' expresión no válida
Las expresiones lógicas simples mostradas en el ejemplo, también son conocidas como expresiones relacionales pues permiten comparar o relacionar a dos operandos del mismo tipo. Justamente, la última expresión del ejemplo anterior no es válida pues compara a una constante numérica con una constante de tipo caracter.
1.7 Asignación
Esta acción permite a un identificador o variable, representar o memorizar cierto valor. Para describirla utilizaremos la notación siguiente:
Donde V es la variable a la cual el ejecutante debe asignar el valor de E. El símbolo ' ' puede leerse 'toma el valor'.
Según sean los tipos de V y E una asignación puede ser:
aritmética
caracter
lógica
V E
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
14
1.7.1 Asignación aritmética
La asignación V E es aritmética si V es una variable numérica y E es una constante numérica, una variable numérica o cualquier expresión de tipo numérico.
Ejemplos:
A 43; (A toma el valor 43)
X A; (X toma el valor contenido en la variable A)
NUM 3*X+2; (NUM toma el valor que resulta de evaluar la expresión 3*X+2)
Notemos que para poder realizar una asignación aritmética debemos evaluar la expresión de la derecha y luego ese resultado se almacena en la variable que figura a la izquierda. Por lo tanto es perfectamente válida la acción: N N+1; que equivale a: tomar el valor actual de N, sumarle 1 y asignarle ese resultado a la variable N. Por ejemplo, si antes de la acción N contenía el valor 8, luego de dicha acción contendrá 9. Observemos que esta acción algorítmica no tiene nada que ver con los conceptos asimilados en matemática, donde N = N+1 es una expresión incompatible.
1.7.2 Asignación tipo caracter
La asignación V E es una asignación de tipo caracter si V es una variable tipo caracter y E es un constante caracter o una variable tipo caracter
Ejemplos:
A '7'; (A toma el valor '7')
X3 A; (X3 toma el valor contenido almacenado en la variable A)
APELLIDO 'López'; (APELLIDO toma el valor 'López')
1.7.3 Asignación lógica
La asignación V E es una asignación lógica si V es una variable de tipo lógico y E es una constante lógica (Verdadero o Falso), una variable lógica o una expresión lógica.
Ejemplos:
M F ; (M toma el valor F)
TRUE 34 <= 78; (TRUE toma el valor lógico V)
G (A < 2) (C = 10) (G toma el valor lógico resultante de la expresión (A<2) (C=10))
1.8 Entrada y Salida
Todo algoritmo produce resultados, esto nos lleva a definir una acción primitiva de lectura o entrada. Usaremos para ello la palabra clave LEER.
El formato de la acción de lectura es:
LEER V LEER lista-variables
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
15
Dónde:
V es una variable o
lista-variables es una lista de variables separadas por el signo coma (,).
De esta manera, la acción LEER nos permite ingresar, desde el medio externo, uno o más valores los cuales son asignados a la variable V o a las variables que figuran a continuación de LEER.
Ejemplos:
LEER DAT
LEER NOMBRE, APELLIDO, DNI
Esta acción tiene el mismo efecto que una asignación, sólo que ésta utiliza valores del ambiente del algoritmo; en cambio la lectura asigna valores desde el medio exterior. Esta acción contribuye a hacer a los algoritmos de uso general, pues permite incorporar datos nuevos para producir nuevos resultados.
La acción que permite a un algoritmo comunicar resultados o salida de información al medio exterior, la describiremos con la palabra clave ESCRIBIR; y a continuación una variable, una constante, o una lista de variables y/o constantes.
Su formato general es:
donde C representa una constante, V, una variable del ambiente y lista-variable-constante es una secuencia de variables y/o constantes.
Ejemplos:
ESCRIBIR APELLIDO ESCRIBIR DAT, NOMBRE ESCRIBIR '23' ESCRIBIR 'Total =', X
La lectura se realiza solamente a través de variables y, por lo tanto, si se lee una variable que ya fue definida en el algoritmo, implicará un acceso destructivo, esto es, la variable perderá su valor para tomar el del nuevo dato que se ingresa.En cambio, si se escriben resultados a través de variables, el ejecutante realizará un acceso no destructivo a dichas variables, pues sólo necesita conocer su contenido para ejecutar la escritura. Aquí las variables conservan sus valores después de la acción.
Las acciones de lectura y escritura son conocidas como acciones de entrada/salida o abreviadamente E/S.
ESCRIBIR C ESCRIBIR V ESCRIBIR lista-variables-constantes
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
16
1.9 Estructuras Lógicas de Control
Para la resolución de problemas más complejos, es necesario contar con herramientas que nos permitan modificar el orden lineal de ejecución de las acciones, donde el ejecutante pueda tomar decisiones y determinar qué acción realizar en el momento de ejecución del algoritmo, por más complejo que sea, todo algoritmo puede elaborarse mediante el uso de sólo tres estructuras lógicas de control:
Secuencia
Selección
Iteración
Estas estructuras presentan la característica de tener un único punto de entrada y una única salida. Un algoritmo definido en base a estas estructuras, es más fácil de entender, y permite, por lo tanto, detectar los errores de lógica más rápidamente.
1.9.1 Secuencia
Es un conjunto de acciones que se ejecutan en el mismo orden en que aparecen en el algoritmo, una a continuación de la otra.
La representación gráfica en un diagrama de flujo es:
Los bloques A, B, C representan una acción elemental o un módulo; cada uno de ellos, con un único punto de entrada y un único punto de salida.
En pseudocódigo la secuencia se especifica indicando las acciones en el orden en que deben ser ejecutadas, separadas entre sí por el signo de puntuación ";", (escritas en el mismo renglón o en diferente):
1.9.2 Selección
La necesidad de contar con una estructura de SELECCION que nos permita tomar decisiones en un algoritmo, se nos planteó en los primeros problemas, en los algoritmos no computacionales, donde usábamos condiciones que permitían al ejecutante decidir qué grupo de acciones ejecutar y cuáles no.
Ejemplo:
SI se tiene café
ENTONCES agregar en la taza media cucharadita de café
SINO agregar en la taza media cucharadita de chocolate
FINSI
A
B
C
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
17
Las estructuras de selección permiten, al ejecutante, alterar el flujo lineal de control de las acciones de un algoritmo. Permiten tomar decisiones y elegir un camino a seguir en base a ciertos valores específicos del algoritmo, ya sean datos que se ingresan o resultados de cálculos que se realizan.
Observamos 2 tipos de estructuras de selección:
condicional o de decisión
selección múltiple
a. Estructura condicional o de decisión
Esta estructura permite elegir el camino a seguir según el valor de verdad de una condición.
La estructura condicional permite elegir las acciones a seguir entre dos alternativas específicas, de acuerdo al valor de una condición en el momento de ejecución del algoritmo.
La representación de esta estructura en un diagrama es:
Donde condición es cualquier elemento del ambiente del algoritmo que arroje un resultado lógico V o F, es decir que el elemento condición puede ser una variable o expresión lógica. Tanto A como B representan una acción o un conjunto de acciones.
La presencia de esta estructura en un algoritmo, le indica al procesador que debe:
1) evaluar la condición planteada a) si la condición toma un valor V, ejecutar el bloque A; y finaliza la estructura
condicional indicada con el punto. b) si la condición toma un valor F, ejecutar el bloque B; y finaliza la estructura
condicional indicada con el punto. 2) En ambos casos, luego continúa la ejecución del algoritmo con la acción posterior al
punto.
En pseudocódigo, la sintaxis correspondiente es:
Donde las palabras claves SI y FINSI indican, respectivamente, el comienzo y fin de la estructura de selección.
A B
Condición V F
SI condición ENTONCES A SINO B FINSI
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
18
Ejemplo 1: Una compañía de turismo ha fijado descuentos para sus clientes en función de los viajes realizados. El valor del descuento es del 20% para aquellos clientes que han recorrido más de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra.
Se desea realizar un algoritmo que calcule el costo a pagar por un cliente, si se ingresa total de kilómetros recorridos hasta el momento y valor del viaje.
Datos:
VARIABLE SIGNIFICADO
KA Kilómetros acumulados hasta la fecha
VALOR Valor de viaje
DESC Descuento a realizar
COSTO Costo Total del viaje
Algoritmo: (en pseudocódigo)
PROCESO TURISMO LEER KA, VALOR; SI KA > 3000
ENTONCES DESC VALOR * 0.20 SINO DESC VALOR * 0.05
FINSI COSTO VALOR - DESC ESCRIBIR ‘ KILÓMETROS ACUMULADOS: ‘, KA; ESCRIBIR ‘ VALOR DEL VIAJE: $’ , VALOR, ‘ DESCUENTO: $‘, DESC; ESCRIBIR ‘ COSTO TOTAL: $‘, COSTO
FINPROCESO
Observación: no se coloca punto y coma (;):
en la acción que precede a la estructura de selección
después de la palabra clave FINSI
en la acción que precede a las palabras claves ENTONCES, SINO y FINSI
Además, la estructura condicional brinda la posibilidad de plantear que por la alternativa falsa no se especifiquen acciones a ejecutar. De esta manera, en el condicional, la salida por VERDADERO deberá presentar al menos una acción a ejecutar, mientras que por el camino de la condición FALSA no se plantea ninguna acción. Esta variante de la estructura condicional se representa en diagrama de la siguiente manera:
En pseudocódigo la sintaxis equivalente a este caso es:
A
Condición V F
SI condición ENTONCES A FINSI
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
19
Ejemplo 2: Realizar un algoritmo que ingrese como datos, el precio unitario y la cantidad de unidades vendidas de un artículo e informe el monto de la venta, sabiendo que para cantidades superiores a 500, se efectúa un descuento del 20 %.
Datos:
Variable Significado
PRECIOU Precio de venta del artículo
CANT Cantidad de artículos vendidos
MONTO Monto de la venta
VALOR Valor de la condición Cant > 500
Algoritmo: (en pseudocódigo)
PROCESO VENTA LEER PRECIOU, CANT; MONTO PRECIOU * CANT SI CANT > 500 ENTONCES MONTO MONTO - 0.20 * MONTO FINSI ESCRIBIR 'Monto de la venta:', MONTO FINPROCESO
Estructuras Condicionales Anidadas
En una estructura condicional, tanto la alternativa verdadera como la falsa pueden presentar a su vez, otras estructuras condicionales, dando lugar a esquemas como el siguiente:
En pseudocódigo:
En este esquema hablamos de condicionales anidados, con un condicional externo - el primero que se plantea (evalúa la condición1) - y condicionales internos (en este caso, aparece uno solo que evalúa la condición2).
Este esquema puede complicarse, si en A, B, y/o C planteamos otros condicionales internos, pero debe tenerse en cuenta que cada condicional debe corresponder al esquema SI-FINSI.
SI condición1 ENTONCES A SINO SI condición2 ENTONCES B SINO C FINSI FINSI
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
20
En diagrama de flujo:
Ejemplo 3:
Una compañía de turismo ha fijado descuentos para sus clientes en función de los viajes realizados. El valor del descuento es del 30% para aquellos clientes que han recorrido más de 3500 Kms., del 15 % si han sumado más de 2000 Kms., y del 5% para aquellos que han superado los 500 kms..
Se desea realizar un algoritmo que calcule el costo a pagar por un cliente, si se ingresa total de kilómetros recorridos hasta el momento y valor del viaje.
Datos: En este caso los datos o el ambiente es el mismo que el realizado para el Ejemplo 1.
Algoritmo: (en pseudocódigo)
PROCESO TURISMO LEER KA, VALOR; SI KA > 3500
ENTONCES DESC VALOR * 0.30 SINO SI KA > 200
ENTONCES DESC VALOR * 0.15 SINO SI KA > 500
ENTONCES DESC VALOR * 0.05 SINO DESC 0
FINSI FINSI
FINSI COSTO VALOR - DESC ESCRIBIR ‘ KILÓMETROS ACUMULADOS: ‘, KA; ESCRIBIR ‘ VALOR DEL VIAJE: $’ , VALOR, ‘ DESCUENTO: $‘, DESC; ESCRIBIR ‘ COSTO TOTAL: $‘, COSTO
FINPROCESO
Condición 1
A
Condición 2
B C
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
21
b. Estructura de selección múltiple
Esta estructura es una generalización de la estructura condicional y brinda la posibilidad de elegir entre más de dos alternativas de acuerdo al valor de una variable de control numérica, previamente fijado.
En diagrama de flujo se representa de la siguiente manera:
La sintaxis equivalente en pseudocódigo es la siguiente:
Donde E es la variable de control numérica, que toma todos los valores enteros positivos, acotados dentro de un rango preestablecido, generalmente de 1 a N.
A, B, ..R,. U representan una acción elemental.
En presencia de esta estructura el procesador deberá:
observar el valor de la variable E
decidir el camino a ejecutar de acuerdo al valor de E:
Si E toma el valor 1, realizará la acción A
Si E toma el valor 2, ejecutará la acción B y así sucesivamente para cada uno de los valores posibles de E que se hayan indicado.
Si E toma valores fuera del rango 1 a N, deberá ejecutar la acción U, indicada en "otros".
en todos los casos, ejecutada la acción asociada, deberá salir de la estructura y continuar con la acción siguiente especificada después del punto.
La estructura de decisión múltiple, mantiene las características vistas en las anteriores, de tener un único punto de entrada y un único punto de salida.
El comienzo y el fin de la estructura están identificados por las palabras claves SEGÚN y FINSEGÚN, respectivamente. Ejecutada la acción asociada al valor de la variable E, el ejecutante finaliza la estructura y continúa con la acción siguiente a la palabra clave FINSEGÚN.
1 2 .... . N Otros
A
E
BA
RA
UA
SEGUN E HACER 1: A 2: B . . . . n: R DEOTROMODO: U FINSEGUN
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
22
Puede suceder que para alguno de los caminos indicados se deba ejecutar más de una acción. En este caso en el diagrama de flujo las acciones a realizar se graficarán de esta forma:
En pseudocódigo, la sintaxis correspondiente es:
Observación: no se coloca punto y coma (;):
en la acción que precede a la estructura de selección múltiple
después de la palabra clave FINSESUN
en la acción que precede a la palabra clave FINSEGUN y a cada uno de los valores que puede tomar la variable de control
Otros formatos de la estructura de selección múltiple:
a) Cuando para distintos valores de la variable de control se deban ejecutar la/s misma/s acción/es, la estructura permite agrupar dichos valores.
En diagrama: En pseudocódigo:
En este caso se consideró que para los valores de E igual a 1, 2 ó 3 se debe ejecutar la acción A.
1 2 .. . N Otros
A
E
BA
RA
UA
CA
RA
DR
SEGUN E HACER 1: COMENZAR A; C FINCOM 2: B . . . . n: COMENZAR R; D FINCOM DEOTROMODO: U FINSEGUN
1,2 ,3 4 ......... N Otro
A
B
R
T
E
SEGUN E HACER 1, 2, 3: A 4: B … … n: R DEOTROMODO: T FINSEGUN
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
23
Ejemplo 4:
Se desea calcular el sueldo de un empleado, conociendo datos como nombre, categoría (1, 2, 3, ó 4) y sueldo básico. Se le paga además, una bonificación que depende de la categoría. Para la categoría 1 y 3, la bonificación es del 30 % del sueldo básico, para la categoría 2, del 20 % y para la categoría 4, del 15 %. Informar sueldo básico, bonificación y sueldo a cobrar.
Datos:
Variable Significado
NOMBRE Nombre y apellido del empleado
CAT Categoría del empleado
SB Sueldo básico del empleado
BON Bonificación que cobra
TOT Sueldo neto a cobrar
Algoritmo: (en pseudocódigo)
PROCESO SUELDO LEER NOMBRE, CAT, SB SEGUN CAT HACER 1, 3: BON 0.30 * SB 2: BON 0.20 * SB 4: BON 0.15 * SB FINSEGUN TOT SB + BON; ESCRIBIR NOMBRE, CAT, SB, BON; ESCRIBIR 'SUELDO A COBRAR:', TOT
FINPROCESO
NOTA: En el ejemplo las acciones a realizar para 2 valores de la variable CAT, son las mismas. En estos casos, es posible agrupar dichos valores e indicar una única vez las acciones a realizar.
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
24
1.9.3 Iteración
Las estructuras de iteración son aquellas que nos permiten ejecutar una acción o un conjunto de acciones varias veces, dependiendo de una condición.
En la solución de problemas computacionales, se presentan casos en los que no se conoce de antemano la cantidad de veces que se quiere repetir un conjunto de acciones, en otros, ese número de repeticiones es conocido.
Dentro de las estructuras de iteración, veremos tres esquemas:
MIENTRAS
REPETIR
PARA
a. Estructura Mientras
Esta estructura se representa como:
condición
A
F
V
Donde condición puede ser una variable o expresión lógica y A representa cualquier acción o conjunto de estructuras, llamado rango del ciclo.
Cuando el procesador encuentra esta estructura deberá:
Observar la condición
Si la condición es V ejecutar A
Observar nuevamente la condición
Si es V , ejecutar A y volver a evaluar la condición y así sucesivamente hasta que de la observación de la condición se obtenga un valor falso
Si es F, finaliza la ejecución
Si la condición es F salir de la estructura
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
25
Debemos notar que:
El bloque A puede no llegar a ejecutarse, si la condición es falsa.
Entre el conjunto de acciones de A, deberá existir una acción que permita modificar, en determinado momento, su valor de verdad; sino el bloque A se repetirá indefinidamente.
No es necesario conocer de antemano el número de repeticiones, o bien no es necesario expresarlo en forma directa.
En pseudocódigo la sintaxis equivalente al diagrama es:
Las palabras claves MIENTRAS y FINMIENTRAS identifican, respectivamente, el principio y fin de la estructura.
Ejemplo 5:
Una compañía de turismo ha fijado descuentos para sus clientes en función de los viajes anteriores realizados. El valor del descuento es del 20% para aquellos clientes que han recorrido más de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra.
Se desea realizar un algoritmo que calcule la recaudación de la compañía en un día. Para ello, por cada cliente se ingresa su nombre y apellido, el total de Kms., recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, Kms. a recorrer. El fin de ingreso de datos se produce al ingresar como nombre y apellido un valor ´ ZZZ ` .
Para cada cliente informar los datos ingresados, el monto del descuento y el monto a pagar. Informar además el total recaudado y el total de descuentos realizados por la Compañía, con leyendas alusivas.
Datos:
Variable Significado
NOMBRE Nombre y Apellido del Cliente
KACUM Kms. acumulados hasta la fecha
PRECIO Precio del viaje
KMS Kms. a recorrer
DEST Destino del Viaje
TOTAL Kms. Tot. incluidos los del viaje actual
DESC Descuento a realizar
VALOR Valor a Pagar
TOTDESC Total de Descuentos
TOTREC Total recaudado por la Compañía
MIENTRAS condición HACER Acciones FINMIENTRAS
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
26
Algoritmo: (en pseudocódigo)
PROCESO TURISMO TOTDESC 0; TOTREC 0; ESCRIBIR ‘Ingrese el Nombre y Apellido del cliente’; LEER NOMBRE
MIENTRAS NOMBRE ‘ ZZZ ’ HACER ESCRIBIR ‘Ingrese el total de KM acumulados’; LEER KACUM; ESCRIBIR ‘Ingrese el precio del viaje’; LEER PRECIO; ESCRIBIR ‘Ingrese el destino del viaje’; LEER DEST; ESCRIBIR ‘Ingrese los KMS a recorrer’’; LEER KMS; SI KACUM > 3000
ENTONCES DESC PRECIO * 0.20 SINO DESC PRECIO * 0.05
FINSI VALOR PRECIO - DESC; ESCRIBIR ‘ Cliente: ‘,NOMBRE, ‘ KM Acumulados: ‘, KACUM; ESCRIBIR ‘ Destino del viaje: ‘, DEST, ’ Precio : $ ’ , PRECIO, ‘Distancia: ’, KMS, ‘Kms.’; ESCRIBIR ‘ Descuento: $ ‘, DESC; TOTREC TOTREC + VALOR; TOTDESC TOTDESC + DESC; LEER NOMBRE
FIMIENTRAS ESCRIBIR ‘Recaudación Total del día: $ ‘, TOTREC; ESCRIBIR ‘Total de Descuentos: $ ‘, TOTDESC
FINPROCESO
b. Estructura Repetir
En diagrama la estructura se grafica de la siguiente manera:
A
condición
V
F
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
27
Donde condición puede ser una variable o expresión lógica y A representa cualquier acción o conjunto de estructuras.
En esta estructura el bloque A, se ejecuta reiteradamente, hasta que se cumpla la condición.
En presencia de este esquema, el procesador deberá:
ejecutar el bloque A
Observar la condición
Si la condición es F ejecutar A
Observar nuevamente la condición
Si es F , ejecutar A y vuelve a evaluar la condición y así sucesivamente hasta que de la observación de la condición se obtenga un valor verdadero
Si es V , sale de la estructura
Si la condición es V finaliza la ejecución de la estructura
Debemos notar que:
La condición es evaluada después de cada ejecución del bloque A, por lo tanto éste será ejecutado al menos una vez.
En la estructura Mientras el bloque A pueda ser ejecutado desde 0 a n veces, mientras que en el Repetir desde 1 a n veces.
Entre el conjunto de acciones de A, deberá existir una acción que permita modificar, en determinado momento, su valor de verdad; sino el bloque A se repetirá indefinidamente.
En pseudocódigo la sintaxis equivalente al diagrama es:
Donde el principio y el fin de la estructura están dados por las palabra claves REPETIR y HASTAQUE.
Ejemplo 6:
Una compañía de turismo ha fijado descuentos para sus clientes en función de los viajes anteriores realizados. El valor del descuento es del 20% para aquellos clientes que han recorrido más de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra.
Se desea definir un algoritmo que calcule la recaudación diaria de la compañía para sus N clientes. Para ello, por cada cliente se ingresa su nombre y apellido, el total de Kms. recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, Kms. a recorrer.
Para cada cliente informar los datos ingresados, el monto del descuento y el monto a pagar. Informar además el total recaudado y el total de descuentos efectuados por la Compañía, con leyendas alusivas.
El valor N se ingresa como primer dato.
REPETIR A HASTAQUE condición
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
28
Datos
Variable Significado
N Cantidad de Clientes
NOMBRE Nombre y Apellido del Cliente
KACUM Kms. acumulados hasta la fecha
PRECIO Precio del viaje
KMS Kms. a recorrer
DEST Destino del Viaje
TOTAL Kms. Tot. incluidos los del viaje actual
DESC Descuento a realizar
VALOR Importe a Pagar
TOTDESC Total de Descuentos
TOTREC Total recaudado por la Compañía
CONT Contador de Clientes
Algoritmo: (en pseudocódigo)
PROCESO TURISMO2 TOTDESC 0; TOTREC 0; CONT 0; ESCRIBIR ‘Ingrese el número de clientes’; LEER N; REPETIR
ESCRIBIR ‘Ingrese el Nombre y Apellido del cliente’; LEER NOMBRE ESCRIBIR ‘Ingrese el total de KM acumulados’; LEER KACUM; ESCRIBIR ‘Ingrese el precio del viaje’; LEER PRECIO; ESCRIBIR ‘Ingrese el destino del viaje’; LEER DEST; ESCRIBIR ‘Ingrese los KMS a recorrer’’; LEER KMS; SI KACUM > 3000
ENTONCES DESC PRECIO * 0.20 SINO DESC PRECIO * 0.05
FINSI VALOR PRECIO - DESC; ESCRIBIR ‘ Cliente: ‘,NOMBRE, ‘ KM Acumulados: ‘, KACUM; ESCRIBIR ‘ Destino del viaje: ‘, DEST, ’ Precio : $ ’ , PRECIO, ‘Distancia: ’, KMS, ‘Kms.’; ESCRIBIR ‘ Descuento: $ ‘, DESC; TOTREC TOTREC + VALOR; TOTDESC TOTDESC + DESC; CONT CONT + 1
HASTAQUE CONT = N ESCRIBIR ‘Recaudación Total del día: $ ‘, TOTREC; ESCRIBIR ‘Total de Descuentos: $ ‘, TOTDESC
FINPROCESO
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
29
Ciclos Anidados
Pueden presentarse ciclos anidados, es decir, estructuras de iteración incluidas dentro de otras siguiendo las mismas reglas: la estructura interna debe estar totalmente incluida en la estructura externa.
Veamos algunos ejemplos:
Ejemplo 1
P
X Y
Q
F
V
V F
Ejemplo 2
P
R
S
Q
Z
F V
F
T
V
Ejemplo 3
Z
X
A
F
V
F
Y
B
V
V F
MIENTRAS P HACER SI Q
ENTONCES X SINO Y
FINSI FINMIENTRAS
SI P ENTONCES R; S; T SINO MIENTRAS Q HACER
Z FINMIENTRAS
FINSI
MIENTRAS Z HACER SI X
ENTONCES SI Y ENTONCES B
FINSI SINO A
FINSI FINMIENTRAS
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
30
c. Estructura Para
La estructura de repetición llamada PARA nos permite ejecutar un conjunto de acciones un número determinado de veces.
Formato general
Acción 1
Acción 2
Acción 3
Acción n
V
VI VF P
Dónde:
V : es una variable numérica llamada variable de control
VI: es una constante, variable o expresión numérica, que es el valor inicial que toma V
VF: es una constante, variable o expresión numérica, que indica el valor final que toma V
P: es una variable o constante numérica que representa el paso o incremento de la variable V. El valor de P puede ser positivo o negativo pero no puede ser cero.
A diferencia de las estructuras REPETIR y MIENTRAS, en esta estructura iterativa el procesador tiene a su cargo la variación de la variable de control ya que se incrementa su valor automáticamente de acuerdo a P, hasta llegar a VF.
El procesador ejecutará las acciones en el siguiente orden:
1. A la variable V le asigna el valor de VI. 2. Ejecuta las acciones previstas (acción 1 hasta acción n). 3. Incrementa la variable V sumándole P. 4. Evalúa si el valor de la variable V de control es menor o igual a VF en ese caso continúa a
partir de 2. 5. Si la variable V es mayor a VF finaliza la ejecución de la estructura y continúa con la
ejecución del algoritmo.
Para V desde VI hasta VF con Paso P Hacer Acción 1; Acción 2; Acción 3; …… …… Acción n
Finpara
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
31
Cuando P = 1 el formato se reduce a:
Acción 1
Acción 2
Acción 3
Acción n
V
VI VF
Debemos notar que:
Cuando P > 0 el valor de VF debe ser mayor o igual a VI.
Cuando P < 0 el valor de VF debe ser menor o igual a VI
Las acciones 1 a n se ejecutan siempre al menos una vez
Ejemplo 7:
Informar los primeros veinte números pares, a partir del número 2.
Nro
2 40 2
Pares
Nro
Finproceso
Anidamiento de estructuras PARA
El anidamiento de estas estructuras es una forma más de ciclos anidados, por lo tanto se siguen las mismas reglas, es decir la estructura interna debe estar completamente incluida dentro de la estructura externa, no permitiéndose el cruce de estructuras.
Además es posible anidar distintas estructuras iterativas, estructuras Repetir, Mientras y Para, siempre y cuando se respeten las reglas antes indicadas.
Observemos algunos ejemplos:
Para V desde VI hasta VF Hacer Acción 1; Acción 2; Acción 3; …… …… Acción n
Finpara
Proceso Pares Para Nro desde 2 hasta 40 con Paso 2 Hacer
Escribir Nro Finpara
Finproceso
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
32
Ejemplo 1
I
1 10
J
1 5
A
B
C
Ejemplo 2
M
S
1 n
P
Q
R
CondicF
V
Ejemplo 3
N
1 50
D
E
R
Condic 2F
V
Condic 1
V
F
Para I desde 1 hasta 10 hacer A Para J desde 1 hasta 5 hacer
B; C
Finpara Finpara
Repetir M Para S desde 1 hasta n hacer
P; Q; R
Finpara Hastaque Condic
Repetir Para N desde 1 hasta 50 hacer
D; E Mientras Condic 1 Hacer
R Finmientras
Finpara Hastaque Condic 2
Fundamentos de Programación Escuela de Informática Aplicada a la Educación
33
1.10 Ejercicios
1. Calcular el promedio de 10 números.
Secuencial Mientras
Proceso Promedio
Escribir "Ingrese un numero 1:";
Leer n1;
Escribir "Ingrese un numero 2:";
Leer n2;
Escribir "Ingrese un numero 3:";
Leer n3;
Escribir "Ingrese un numero 4:";
Leer n4;
Escribir "Ingrese un numero 5:";
Leer n5;
Escribir "Ingrese un numero 6:";
Leer n6;
Escribir "Ingrese un numero 7:";
Leer n7;
Escribir "Ingrese un numero 8:";
Leer n8;
Escribir "Ingrese un numero 9:";
Leer n9;
Escribir "Ingrese un numero 10:";
Leer n10;
promedio<-
(n1+n2+n3+n4+n5+n6+n7+n8+n9+n10)/10;
Escribir "El promedio es: ",promedio;
FinProceso
Proceso Promedio
n<-1;
acumulador<-0;
Mientras n<=10 Hacer
Escribir "Ingrese un numero:",n;
Leer numero;
n<-n+1;
acumulador<-acumulador+numero;
FinMientras
promedio<-acumulador/10;
Escribir "El promedio es: ",promedio;
FinProceso
Repetir Para
Proceso Promedio
n<-1;
acumulador<-0;
Repetir
Escribir "Ingrese un numero:",n;
Leer numero;
n<-n+1;
acumulador<-acumulador+numero;
Hasta Que n>=11
promedio<-acumulador/10;
Escribir "El promedio es: ",promedio;
FinProceso
Proceso Promedio
acumulador<-0;
Para n<-1 Hasta 10 Hacer
Escribir "Ingrese un numero:",n;
Leer numero;
acumulador<-acumulador+numero;
FinPara
promedio<-acumulador/10;
Escribir "El promedio es: ",promedio;
FinProceso
Ejercicios propuestos N.1
Diseñar un algoritmo que pida por teclado tres números; si el primero es negativo, debe imprimir el producto de los tres y si no lo es, imprimirá la suma.
Un colegio desea saber qué porcentaje de niños y qué porcentaje de niñas hay en el curso actual. Diseñar un algoritmo para este propósito (recuerda que para calcular el porcentaje puedes hacer una regla de 3).
Una tienda ofrece un descuento del 15% sobre el total de la compra durante el mes de octubre. Dado un mes y un importe, calcular cuál es la cantidad que se debe cobrar al cliente.