fundamentos de pogramación

34
FUNDAMENTOS DE PROGRAMACIÓN

Upload: bleoav100

Post on 05-Dec-2014

444 views

Category:

Documents


4 download

DESCRIPTION

 

TRANSCRIPT

FUNDAMENTOS DE PROGRAMACIÓ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.