You are on page 1of 26

INGENIERA INDUSTRIAL

INFORMTICA I

PROGRAMACIN
Indice
Resolucin de problemas ................................................................................................................... 2
Introduccin .................................................................................................................................... 2
Resolucin de problemas ............................................................................................................... 2
Etapas en la resolucin de problemas con computadora .............................................................. 2
Del detalle de las etapas anteriores puede observarse que:...................................................... 3
Algoritmo ......................................................................................................................................... 3
Definicin..................................................................................................................................... 3
Caractersticas de un algoritmo .................................................................................................. 3
Pre y Poscondicin de un algoritmo ........................................................................................... 5
Algoritmos Computacionales.............................................................................................................. 6
Introduccin .................................................................................................................................... 6
Descripcin de los elementos presentes en el ejemplo.............................................................. 6
Elementos de un algoritmo computacional..................................................................................... 6
Constante .................................................................................................................................... 7
Variable ....................................................................................................................................... 7
Nombres o identificadores .......................................................................................................... 7
Expresin .................................................................................................................................... 7
Tipos de Informacin ...................................................................................................................... 7
Tipo Numrico ............................................................................................................................. 8
Tipo Caracter .............................................................................................................................. 9
Tipo Lgico ................................................................................................................................ 10
Acciones Algortmicas .................................................................................................................. 10
Primitivas ................................................................................................................................... 10
Acciones Primitivas de Estructura Secuencial .......................................................................... 11
Representacin Grfica de Algoritmos Computacionales ............................................................ 12
Prueba de escritorio o seguimiento de algoritmos ....................................................................... 14
Introduccin .................................................................................................................................. 15
Teorema Fundamental de la Programacin Estructurada ........................................................... 15
Estructura Bsicas de Control ...................................................................................................... 16
Estructura Secuencial ............................................................................................................... 16
Estructura Condicional Si-Entonces ......................................................................................... 16
Estructuras de control anidadas ................................................................................................... 22
Estructuras de Control Adicionales .............................................................................................. 23

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 1 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Resolucin de problemas
Introduccin
El objetivo de este tema es introducir al lector en una metodologa para abordar la resolucin de problemas mediante el empleo de algoritmos, los cuales permitirn (ms adelante) construir programas
que pueden ser ejecutados por una computadora.
Como primera medida se emplear el concepto de algoritmo en forma general usando un lenguaje
natural para plantear pasos o acciones, y considerando que el ejecutor de tales acciones puede ser
una persona. Luego en la prxima unidad, se formalizar un lenguaje algortmico planteando reglas
sintcticas similares a las de los lenguajes de programacin de alto nivel que pueden ser interpretados por una computadora.
El planteo sistemtico de un mtodo para la resolucin de problemas es una buena prctica para
hallar la solucin de problemas mediante algoritmos computacionales.

Resolucin de problemas
Si se piensa en la forma en que una persona indica a otra cmo resolver un problema, se ver que
habitualmente se utiliza un lenguaje comn y corriente para realizar la explicacin, quiz entremezclado con algunas palabras tcnicas. Esto es un riesgo muy grande. Los que tienen cierta experiencia
al respecto saben que es difcil transmitir el mensaje y por desgracia, con mucha frecuencia se malinterpretan las instrucciones y por lo tanto se ejecuta incorrectamente" la solucin, obtenindose errores.
Cuando de una computadora se trata, no pueden utilizarse indicaciones ambiguas. Ante cada orden
resulta fundamental tener una nica interpretacin de lo que hay que realizar. Una mquina no posee
la capacidad de decisin del ser humano para resolver situaciones no previstas.
Si al dar una orden a la computadora se produce una situacin no contemplada, ser necesario abortar esa tarea y recomenzar todo el procedimiento nuevamente.
Adems, para poder indicar a la computadora las rdenes que debe realizar es necesario previamente entender exactamente lo que se quiere hacer. Es fundamental conocer con qu informacin se
cuenta y qu tipo de transformacin se quiere hacer sobre ella.
A continuacin se analizarn en forma general las distintas etapas que deben seguirse para poder
llegar a resolver un problema utilizando una computadora como herramienta.

Etapas en la resolucin de problemas con computadora


La resolucin de problemas utilizando como herramienta una computadora no se resume nicamente
en la escritura de un programa, sino que se trata de una tarea ms compleja. El proceso abarca todos
los aspectos que van desde interpretar las necesidades del usuario hasta verificar que la respuesta
brindada es correcta. Las etapas son las siguientes:

1. Anlisis del problema


En esta primera etapa, se analiza el problema en su contexto del mundo real. Deben obtenerse los
requerimientos del usuario. El resultado de este anlisis es un modelo preciso del ambiente del problema y del objetivo a resolver. Dos componentes importantes de este modelo son los datos a utilizar
y las transformaciones de los mismos que llevan al objetivo.

2. Diseo de una solucin


La resolucin de un problema suele ser una tarea muy compleja para ser analizada como un todo.
Este aspecto puede facilitarse mediante la identificacin de las partes (subproblemas) que componen
el problema y la manera en que se relacionan. Cada uno de estos subproblemas debe tener un objetivo especfico, es decir, debe resolver una parte del problema original. La unin de todos los subproblemas es lo que permitir obtener la solucin buscada.

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 2 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

3. Especificacin de algoritmos
Cada uno de los subproblemas, que componen la solucin, deben ser especificados a travs de un
algoritmo. Esta etapa busca obtener la secuencia de pasos a seguir para resolver el problema. La
eleccin del algoritmo adecuado es fundamental para garantizar la eficiencia de la solucin.

4. Escritura de programas
Un algoritmo es una especificacin simblica que debe convertirse en un programa real sobre un
lenguaje de programacin concreto. A su vez, un programa escrito en un lenguaje de programacin
determinado (ej: Pascal, Ada, etc.) es traducido automticamente al lenguaje de mquina de la computadora que lo va a ejecutar. Esta traduccin, permite detectar y corregir los errores sintcticos que
se cometan en la escritura del programa.

5. Verificacin
Una vez que se tiene un programa escrito en un lenguaje real se debe verificar que su ejecucin conduce al resultado deseado, utilizando datos representativos del problema real. Ser deseable poder
afirmar que el programa es correcto, ms all de los datos particulares de una ejecucin. Sin embargo, en los casos reales es muy difcil realizar una verificacin exhaustiva de todas las posibles condiciones de ejecucin de un sistema de software. La facilidad de verificacin y la depuracin de errores
de funcionamiento del programa conducen a una mejor calidad del sistema y es un objetivo central de
la Ingeniera de Software.

Del detalle de las etapas anteriores puede observarse que:


El proceso de resolucin de problemas utilizando una computadora como herramienta comienza y
termina con una etapa de anlisis. La deteccin de errores en alguna de estas etapas puede llevar a
revisar aspectos de la solucin analizados previamente.
La programacin de la solucin en un lenguaje especfico es slo una pequea parte de toda la tarea
que hay que realizar.
Dada la sencillez de los problemas que vamos a resolver, la primera etapa correspondiente al anlisis
del problema, slo se ver reflejada en la interpretacin del enunciado a resolver.
Con respecto a la segunda etapa, vamos a trabajar con problemas simples que no necesitan ser descompuestos en otros ms elementales.

Algoritmo
Es comn encontrar el trmino de algoritmo como sinnimo de procedimiento, tcnica o mtodo. Pero
expresaremos su significado ms especficamente.

Definicin
Un algoritmo es un conjunto finito de pasos elementales (instrucciones-operaciones) que seguidos en
un determinado orden permiten resolver un problema.

Caractersticas de un algoritmo
Las caractersticas principales de todo algoritmo son:

FINITUD: permite arribar a la solucin de un problema despus de una cantidad finita de pasos.
Ejemplo: Llene esta zanja con ese montn de arena.
Algoritmo:
Tome una pala y empiece a echar arena en la zanja. Cuando se llene la zanja detngase.
Se est seguro que en algn momento parar, aunque no se sabe cuanto tardar.

PRECISION: cada paso debe expresarse en forma clara y precisa y no debe dar lugar a ambigedades (si se trabaja dentro de cierto marco o contexto, cada instruccin del algoritmo debe significar
slo una cosa.).

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 3 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Ejemplo: Determinar si el nmero 7317 es primo.


Malo:
Divida el 7317 entre sus anteriores buscando aquellos que lo dividan exactamente.
Bueno:
Divida el nmero 7317 entre cada uno de los nmeros 2, 3, 4, ..., 7315, 7316. Si una de las
divisiones es exacta, la respuesta es no. Si no es as, la respuesta es s.
Esta es una solucin muy segura y no ambigua para este problema. Existen otros algoritmos mucho
ms eficaces para dicho problema, pero esta es una de las soluciones correctas.

GENERALIDAD: la solucin debe ser aplicable a un conjunto de problemas del mismo tipo y no a un
problema particular.
Ejemplo: Hallar el rea de un tringulo rectngulo, cuya altura es 10cm y su base 5cm.
Malo:
Multiplicar 10 por 5 (Base por altura), Dividir 50 por 2 (rea de un tringulo), Informar el valor
del cociente
Bueno:
Conocer base y altura del tringulo, Multiplicar base por altura, Dividir el producto anterior por
2, Informar el valor del cociente.

FLEXIBILIDAD: permite abordar la solucin de problemas similares con pequeos cambios.


Para comprender totalmente la definicin anterior falta clarificar qu cosa es un paso elemental.
Ejemplo: Escriba un algoritmo que permita preparar una tortilla de papas de tres huevos.
El enunciado anterior basta para que un cocinero experto lo resuelva sin mayor nivel de detalle, pero
si este no es el caso, se deben describir los pasos necesarios para realizar la preparacin.
Esta descripcin puede ser:
Mezclar papas fritas, huevos y una pizca de sal en un recipiente.
Frer.
Esto podra resolver el problema, si el procesador o ejecutor del mismo no fuera una persona que da
sus primeros pasos en tareas culinarias, ya que el nivel de detalle del algoritmo presupone muchas
cosas.
Si este problema debe resolverlo una persona que no sabe cocinar, se debe detallar, cada uno de los
pasos mencionados, pues estos no son lo bastante simples para un principiante.
De esta forma, el primer paso puede descomponerse en:
Pelar las papas.
Cortarlas en cuadraditos.
Frer las papas.
Batir los huevos en un recipiente.
Verter las papas en un recipiente y echar una pizca de sal.
El segundo paso puede descomponerse en los siguientes tres:
Calentar el aceite en la sartn.
Verter el contenido del recipiente en la sartn.
Dorar la tortilla de ambos lados.
Ntese adems, que si la tortilla va a ser realizada por un nio, algunas tareas (por ejemplo batir los
huevos) pueden necesitar una mejor especificacin.

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 4 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

El ejemplo anterior slo pretende mostrar que la lista de pasos elementales que compongan nuestro
algoritmo depende de quien sea el encargado de ejecutarlo.
Si en particular, el problema va a ser resuelto utilizando una computadora, el conjunto de pasos elementales conocidos es muy reducido, lo que implica un alto grado de detalle para los algoritmos.
Se considera entonces como un paso elemental aquel que no puede volver a ser dividido en otros
ms simples. De ahora en adelante se utiliza la palabra instruccin como sinnimo de paso elemental.
Obsrvese que en la definicin y en las caractersticas no se hace mencin alguna de resolucin
computacional de un algoritmo. Efectivamente, existen ciertos problemas cuya solucin algortmica no
requiere para su ejecucin la presencia de una computadora. Por ejemplo:


Una receta de cocina.

Un manual de instalacin de un artefacto.

La multiplicacin de dos nmeros.

Comprar 1 Kg. de pan.

Como observacin, se puede decir que un algoritmo debe estar expresado en un lenguaje comprensible para el ejecutante. Y las acciones o pasos descriptos deben ser tales que el ejecutante sea capaz de realizarlas.
Tambin es observable que un problema determinado puede ser resuelto con varios algoritmos diferentes. Es deseable encontrar una solucin que resuelve el problema con un mnimo de recursos y en
el menor tiempo posible.
El ejecutante debe estar entrenado para reconocer y realizar las acciones descriptas. Los algoritmos
computacionales tienen la ventaja de proponer un conjunto de acciones, que cualquier computadora
puede ejecutar.

Pre y Poscondicin de un algoritmo


Precondicin es la informacin que se conoce como verdadera antes de comenzar el algoritmo.
Ejemplo: Indique la manera de salar una masa.
Algoritmo:
Agregarle una cucharadita de sal a la masa.
Se supone que se dispone de todos los elementos para llevar a cabo esta tarea. Por lo tanto, como
precondicin puede afirmarse que se cuenta con la cucharita, la sal y la masa.
Poscondicin es la informacin que se conoce como verdadera al concluir el algoritmo si se cumple
adecuadamente el requerimiento pedido.
Ejemplo: Determinar si el nmero 7317 es primo.
Algoritmo:
Divida el nmero 7317 entre cada uno de los nmeros 2, 3, 4, ..., 7315, 7316. Si una de las
divisiones es exacta, la respuesta es no. Si no es as, la respuesta es si.
La poscondicin es que se ha podido determinar si el nmero 7317 es primo o no.
Ejemplo: Llene esta zanja con ese montn de arena.
Algoritmo:
Tome una pala y empiece a echar arena en la zanja. Cuando se llene la zanja detngase.
Cules seran la precondicin y poscondicin del algoritmo?
La precondicin es que se cuenta con la pala, la arena y est ubicado cerca de la zanja que debe
llenar. Note que no es necesario que la zanja tenga capacidad para agregar alguna palada de arena
para que el algoritmo funcione. Por lo tanto, el estado de la zanja no forma parte de la precondicin.
La poscondicin es que la zanja estar tapada de arena al terminar el algoritmo.

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 5 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Algoritmos Computacionales
Introduccin
Los problemas y algoritmos desarrollados en la unidad anterior, reflejan situaciones de la vida diaria.
En la mayora de los casos fueron planteados para que los resuelva o ejecute una persona.
Pero el objetivo es desarrollar algoritmos que pueden ser interpretados por una computadora. Para
ello es necesario utilizar un lenguaje que interprete una computadora y que permita una descripcin
precisa de cada una de las acciones a emplear en la solucin del problema.
Esta unidad propone describir la formalizacin necesaria para el desarrollo de Algoritmos Computacionales empleando un pseudolenguaje similar a los empleados en la confeccin de programas.
De aqu en ms, cuando se mencione al ejecutante de un algoritmo, se estar haciendo referencia a
una computadora.
En el ejemplo que se propone a continuacin se desarrolla un algoritmo completo de acuerdo a la
formalizacin que se propone.
Ejemplo: plantear un algoritmo computacional que calcule la hipotenusa de un tringulo rectngulo.
Se conoce como informacin de entrada las longitudes de los catetos.
Anlisis del Problema:
Datos: Longitudes de los catetos.
Resultado a informar:

Hipotenusa.

Relaciones entre datos y resultados: Teorema de Pitgoras.


Algoritmo:
Proceso Hipotenusa
Leer A, B;
H RC(A2 + B2);
Escribir 'Hipotenusa =', H;
FINHipotenusa

Descripcin de los elementos presentes en el ejemplo


En el ejemplo A, B y H constituyen identificadores de variables; 2 e 'Hipotenusa' son constantes;
Leer, Escribir y son las acciones primitivas de la lectura, escritura y asignacin respectivamente;
RC(A 2 + B 2) es una expresin numrica y RC ( ) es la funcin cuadrada. En esta unidad se desarrollarn todos estos elementos que conforman un lenguaje algortmico formal que llamado pseudocdigo.
La forma general de un algoritmo escrito en pseudocdigo es la siguiente:
PROCESO nombre_del_proceso
accin 1;
accin 2;
. . .
FINNombreDelProceso
Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue una secuencia de instrucciones y finaliza con la palabra FinProceso. Una secuencia de instrucciones es una
lista de una o ms instrucciones, cada una terminada en punto y coma.
Las acciones incluyen operaciones de entrada y salida, asignaciones de variables, condicionales sientonces o de seleccin mltiple y/o lazos mientras, repetir.

Elementos de un algoritmo computacional

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 6 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Constante
Se define constante, como el valor que no puede alterarse en el transcurso de un algoritmo.
Ejemplos de constantes:
123

'Lpez'

Falso

3.1459

Esta informacin se expresa mediante un valor intrnseco y nico que no puede alterarse. Se utilizarn con frecuencia estos datos para asignarlos a variables o construir expresiones.

Variable
Una variable es una posicin de memoria capaz de almacenar un nico valor por vez. A medida que
se ejecuten las acciones que describe el algoritmo esa variable podr representar a nuevos valores.
En un algoritmo una variable se referencia a travs de nombres o identificadores.
En el ejemplo inicial del clculo de la hipotenusa:
Proceso Hipotenusa
Leer A, B;
H RC(A2 + B2);
Escribir 'Hipotenusa =', H;
FinHipotenusa
se observa que 2 e Hipotenusa = constituyen constantes. A, B y H son variables.

Nombres o identificadores
Para proponer el nombre o identificador de algn elemento del algoritmo (como las variables) el diseador tiene amplia libertad y solo debe respetar tres reglas simples:
1) Utilizar slo letras y/o dgitos, comenzando siempre con una letra.
2) No utilizar palabras claves para acciones primitivas que emplea el pseudocdigo: LEER, ESCRIBIR, MIENTRAS, HACER, SEGUN, etc., o para las funciones internas: RC, SEN, TRUNC, LN, etc., o
las palabras que corresponden a las constantes lgicas VERDADERO y FALSO
3) No hacer distincin entre maysculas y minsculas. Esto implica que VENTA, venta y Venta, constituyen en el algoritmo el mismo nombre.
Esta sintaxis y sus restricciones no representan inconvenientes para proponer nombres de cualquier
elemento del algoritmo: variables, algoritmos, procedimientos, funciones, archivos; pues se dispone
de un sinnmero de combinaciones diferentes de letras y dgitos.
Ejemplos de identificadores:
venta

x12

resultado

SUMA2

M3M

Se mencion que el diseador del algoritmo tiene total libertad para proponer nombres a sus elementos, aunque como consejo, es conveniente proponer identificadores que tengan alguna relacin con lo
que el elemento representa.
En nuestro ejemplo inicial del clculo de la hipotenusa de un tringulo rectngulo, se podra haber
empleado como nombres de variables CATETO1, CATETO2, HIPOT, en lugar A, B, H.

Expresin
Se define como expresin a un conjunto de operandos ligados por operadores cuya evaluacin arroja
un resultado.
En el ejemplo inicial RC (A 2 + B 2) es una expresin numrica (relacin de Pitgoras) que permite calcular el valor de la hipotenusa.
Ejemplos de expresiones:
2+a-x*5

45

A<B

TRUNC(R) + 1

Tipos de Informacin
LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 7 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Se puede clasificar la informacin que puede manejar una computadora a travs de un algoritmo en
los tipos siguientes:


tipo NUMERICO

tipo CARACTER

tipo LOGICO

Esta clasificacin nos define los tipos primitivos (simples) de la informacin. Se estudiar a cada uno
de ellos y su modo de empleo.
Los tipos de datos simples se determinan automticamente cuando se crean las variables. Las dos
acciones que pueden crear una variable son la lectura(LEER) y la asignacion(<-). Por ejemplo, la
asignacin "A<-0;" est indicando implcitamente que la variable A ser una variable numrica. Una
vez determinado el tipo de dato, deber permanecer constante durante toda la ejecucin del proceso;
en caso contrario el proceso ser interrumpido.

Tipo Numrico
Constantes Numricas
Los valores o constantes de tipo numrico son decimal y pueden estar precedidos por los signos '+ o
'-'. La ausencia de signo implica un nmero positivo. Se pueden subdividir en reales y enteros, o admitir clasificaciones ms detalladas, de acuerdo al lenguaje de programacin empleado. Para la formalizacin propuesta mediante el empleo de un pseudocdigo universal, no se harn distinciones de
esta clase y simplemente se hablar de tipo numrico.
Un detalle importante: los nmeros reales deben separar su parte entera de la fraccin decimal con
un punto en lugar de la coma. Se reserva la coma como separador. No se utilizar ningn smbolo
para separacin de miles.
Ejemplos de constantes numricas:
14

-12500

+1.9452

-567.91

1.3E+2

-0.94E-3

En los 2 ltimos ejemplos se indican constantes numricas con notacin cientfica. Donde la cifra a la
derecha de la E indica el exponente de la potencia de base 10. Es decir: 1.3 E+2 = 1.3*102= 130
Variables Numricas
Una posicin de memoria, que contenga cualquier valor de tipo numrico se denomina Variable
Numrica. Las variables se identifican en un algoritmo a travs de nombres o identificadores.
Expresiones Numricas
Las expresiones numricas se plantean en general con constantes numricas, variables numricas y
funciones; y los operadores algebraicos como nexo:
Operadores algebraicos
+

: suma

: resta

: multiplicacin

: divisin

: potenciacin

mod : mdulo (resto de la divisin entera, ej.: 4 mod 2 = 0; 7 mod 2 = 1)


Es de mencionar que ciertos lenguajes de programacin no disponen de todos los operadores antes
descritos, as como es posible hallar otros operadores algebraicos adicionales a los presentados.
La jerarqua de estos operadores es idntica a la planteada por el lgebra de nmeros y slo puede
ser alterada a travs de la intercalacin de niveles de parntesis.
Ejemplos de expresiones numricas
2+a*10^2-800/C

1-(2*TOT-30 )^(1+P)

AREA*(Y+1.34 /(X^2-T ))

Obsrvese que el operador de radicacin no existe; pero esto no es un problema porque esta operacin puede plantearse fcilmente a travs de la potenciacin de exponente fraccionario:

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 8 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

a =a
m

m
n

De todas maneras es comn hallar en casi todos los lenguajes de programacin una funcin que
realiza el clculo de la raz cuadrada. En pseudocdigo se utiliza para el ejemplo inicial y se llama
RC( ).
Adems se asume que el ejecutante del algoritmo, conoce y puede resolver ciertas funciones numricas. A estas funciones se las llama funciones predefinidas y tienen la propiedad de devolver un valor
o resultado, al ser aplicadas sobre un argumento que se indica entre parntesis.

Funciones Predefinidas
Algunas de las funciones predefinidas que incluye el pseudocdigo:
RC( ) :

Raz cuadrada

ABS( ) :

Valor absoluto

LN( ) :

Logaritmo natural

EXP( ) :

Funcin exponencial

SEN( ) :

Seno de un ngulo en radianes

COS( ) :

Coseno de un ngulo en radianes

ATAN( ) :

Arco Tangente del argumento

TRUNC( ) : Parte entera del argumento


REDON( ) : Entero mas cercano
Con estos nuevos elementos, se puede ampliar el uso de expresiones numricas.
Ejemplos de expresiones numricas
TRUNC(2/3)-ABS(X)-2*(X-1)

SEN(X)+1-TAN(C/2)

(-b+RC(b*b-4*a*c))/(2*a)

Nota: Los lenguajes de programacin suelen disponer de un nmero mucho mayor de funciones predefinidas.

Tipo Caracter
Constantes Tipo Caracter
Se incluyen aqu a todos los caracteres y smbolos del cdigo ASCII (Cdigo Standard Americano
para Intercambio de Informacin), los cuales pueden obtenerse de las teclas o combinaciones de
teclas de su computadora, es decir, las letras del alfabeto en minsculas y las letras maysculas, los
signos de puntuacin, los operadores aritmticos, parntesis, el espacio en blanco, caracteres especiales, etc.
Tambin se incluyen dentro de este tipo a las cadenas de caracteres, como los apellidos, nombres,
direcciones y tambin cadenas de caracteres numricos:
Ejemplos de constantes tipo carcter
'Luis Perez'

'Z'

'Resultado='

'25 de Mayo'

'3124'

'123/890-12'

Variables Tipo Caracter


Una posicin de memoria, que contenga cualquier dato de tipo caracter o cadena de caracteres se
denomina Variable Tipo Caracter.
Expresiones Tipo Caracter
En el pseudolenguaje que se emplear la operacin relacionada con caracteres o cadenas de caracteres ser la comparacin o diferencia.
Ejemplo de expresiones:
LETRAS = abc

A <> B

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

Codigo = A

PAGINA 9 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Tipo Lgico
Constantes de Tipo Lgico
Dentro de este tipo se incluye a solo dos constantes o valores posibles: VERDADERO y FALSO. Esto
implica tener en cuenta una nueva limitacin al proponer identificadores: no pueden utilizarse los
nombres VERDADERO y FALSO para evitar ambigedades.
Variables Lgicas
Una posicin de memoria, que contenga cualquier dato de tipo lgico es una Variable Lgica.
Expresiones Lgicas
Aqu cobran mucha importancia una serie de operadores que nos permiten plantear expresiones de
tipo lgico. Las expresiones ms simples son las relacionales que utilizan los operadores relacionales
matemticos para comparar operandos de igual tipo.
Operadores relacionales
Operador

Significado

>

Mayor que

<

Menor que

Igual que

<=

Menor o igual que

>=

Mayor o igual que

<>

Distinto que

Ejemplos de expresiones lgicas relacionales


23<45

A+2>=100

'a'<>LETRA

(2+B) =ABS(2+B)

7>M

Las expresiones lgicas simples mostradas en el ejemplo se conocen como expresiones relacionales,
pues permiten comparar o relacionar a 2 operandos del mismo tipo. Justamente, la ltima expresin
del ejemplo anterior no es valida, pues compara a una expresin numrica con un caracter.
La algortmica computacional, permite tambin formar expresiones lgicas ms complejas a travs de
los conectores que emplea la lgica proposicional:
Operadores lgicos
Significado

Operador

Conjuncin

Negacin

Disyuncin

Se observa entonces el valor de verdad de las expresiones lgicas propuestas en el ejemplo siguiente:
Ejemplo:
Expresin Lgica

('a' < 'c')


('A' < 'a') (12 > 19)
(7 < 10)

Resultado
VERDADERO
VERDADERO

(37 < 18)

FALSO

(SEN(x) <= 1)

VERDADERO

('MARIA' < 'MARTA')

VERDADERO

('MARIA' < 'MARTA')

(1 > 2)

FALSO

Acciones Algortmicas
Primitivas
LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 10 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

En el lenguaje algortmico (pseudocdigo), las primitivas se identifican con palabras claves o reservadas.
Se han empleado en el ejemplo inicial las primitivas: LEER, ESCRIBIR y (asignar).
La ejecucin de las acciones primitivas de un algoritmo suele ser diferente segn el caso, lo cual lleva
a plantear la siguiente clasificacin:

Primitivas de Estructura Secuencial

Primitivas de Estructura Condicional


Primitivas de Control
Primitivas de Estructura Repetitiva

En la prxima unidad se desarrollarn las estructuras algortmicas de control que implican el uso de
primitivas de estructura condicional y de estructura repetitiva.
Se plantea a continuacin, algunas acciones de estructura secuencial.

Acciones Primitivas de Estructura Secuencial


Asignacin
Esta accin, permite a un identificador de variable, representar o memorizar cierto valor. Para describirla se utilizar la notacin siguiente:
V E;
Donde V es el nombre de la variable (o simplemente la variable) a la cual el ejecutante debe asignar
el valor de la expresin E. El smbolo ' ' puede leerse toma el valor. En particular: V toma el valor E.
Los tipos de V y E deben ser coincidentes, en caso contrario ser causa de error. Segn el tipo de V y
E una asignacin puede ser:


Asignacin numrica.

Asignacin tipo caracter.

Asignacin lgica.

Si V es una variable numrica y E cualquier expresin de tipo numrica la asignacin es numrica.


Ejemplos de Asignaciones Numricas
A 43;

(A toma el valor 43)

X A;

(X toma el valor contenido en A)

NUM 3*X/A+2;

(NUM toma el valor del resultado de hacer 3*X/A+2 )

Importante: Ntese que para poder realizar una asignacin aritmtica se debe evaluar primero la
expresin de la derecha, por lo tanto es perfectamente vlida la accin: NN+1; que puede leerse:
tomar el valor actual de N, sumarle 1, y asignar ese resultado a la variable N. Por ejemplo, si antes de
la accin, N contena el valor 8, luego de dicha accin contendr 9. Obsrvese que esta accin algortmica no tiene nada que ver con los conceptos asimilados en matemticas, donde N=N+1 es una
expresin incompatible.
Del mismo modo se definen las asignaciones tipo caracter y tipo lgica.
Ejemplos de Asignaciones tipo caracter
LETRA 'A;

(LETRA toma el valor 'A')

X3 A;

(X toma el valor contenido en A)

NOMBRE 'Jorge';

(NOMBRE toma el valor de 'Jorge')

Ejemplos de Asignaciones Lgicas

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 11 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

M FALSO;

(M toma el valor FALSO)

CIERTO 34 <= 78;

(CIERTO toma el valor VERDADERO)

G (A < 2)

(C = 10);

(G toma el valor lgico resultante de la expresin (A < 2)

(C = 10))

Entrada
Todo algoritmo tiene por objetivo principal producir resultados, pudiendo o no incorporar informacin
del medio externo (datos), al ambiente o sistema que observa. Esta incorporacin de valores desde el
exterior, nos lleva a definir una accin algortmica primitiva de Lectura o Entrada. Se usar para ello la
palabra clave LEER que permitir al ejecutante identificar esta accin, seguida de la variable o lista
de variables, que representan en el algoritmo la los valores que deben ser ingresados.
Ejemplos de entrada de datos
LEER Dat;
LEER Nombre, Apellido, DNI;
Esta accin tiene el mismo efecto que una asignacin, solo que esta ltima utiliza valores del ambiente del algoritmo; en cambio la lectura asigna valores desde el exterior.
Tambin esta accin contribuye a hacer a los algoritmos de uso general, pues permite incorporar
informacin nueva para producir nuevos resultados. Sin esta accin, la ejecucin de un algoritmo
producir siempre la misma respuesta.
Las acciones de lectura y asignacin permiten definir variables en un algoritmo.
Salida
La accin primitiva que permite a un algoritmo comunicar resultados o salida de informacin al medio
exterior, se representar con la palabra clave ESCRIBIR; y a continuacin una variable, una constante, una lista de variables y/o constantes o expresiones.
Ejemplos
ESCRIBIR Dat, Nombre;
ESCRIBIR 23;
ESCRIBIR Dato=, X;
ESCRIBIR Resultado= , 3*X+(X-1)/2;
Se destacan algunas diferencias entre las acciones de lectura y escritura. La lectura se realiza solamente a travs de variables; y por lo tanto, si se lee una variable que ya fue definida en el algoritmo,
implicara 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 travs de variables el ejecutante realizara un acceso no destructivo a dichas variables, pues solo necesita conocer su contenido, para ejecutar la escritura. Aqu las variables conservan sus valores despus de la accin.
En el ejemplo inicial para calcular la hipotenusa la expresin utilizada era:
H RC(A^2 + B^2); en ese caso se accede a los valores A y B en forma no destructiva (se usan sus
valores para el clculo sin modificarlos).
Las acciones de lectura y escritura son conocidas como acciones de entrada/salida o abreviadamente
E/S.

Representacin Grfica de Algoritmos Computacionales


Las acciones descritas antes corresponden a un lenguaje algortmico denominado pseudocdigo. El
pseudocdigo es una de las formas que se puede emplear para representar algoritmos. Adems, se
disearn algoritmos en forma grfica a travs de los llamados Diagramas de Flujo.
En un Diagrama de Flujo, las estructuras de las primitivas del pseudocdigo se representan con una
forma geomtrica identificatoria o bloque. Estos bloques se unen con flechas que nos indican la secuencia u orden en que deben ejecutarse las instrucciones, es decir el flujo o recorrido que ha de
seguirse en el diagrama.

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 12 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Por ejemplo, para las acciones de lectura y escritura se emplear un paralelogramo con una pequea
flecha que apunta hacia adentro o hacia afuera del bloque, respectivamente. Para la accin de asignacin, se utilizar un rectngulo.
Una de las ventajas del empleo de diagramas de flujo, es la visualizacin plana de las acciones que
forman el algoritmo, permitiendo seguir fcilmente su lgica. Estas ventajas se apreciaran ms adelante, cuando se describan primitivas de estructura condicional y repetitiva.
Se observan ahora, algunas de las formas geomtricas que identifican acciones en un Diagrama de
Flujo. En las prximas unidades se incorporarn nuevas acciones con su simbologa correspondiente:

Inicio o fin de proceso

Asignacin

Escritura o salida de informacin

Lectura o entrada de datos

Ejemplo
Problema: Intercambiar los valores de 2 variables numricas que se leen como datos.
Algoritmo (en pseudocdigo)
Proceso Intercambio
Leer A, B;
AUX A;
A B;
B AUX;
Escribir A, B;
FinIntercambio
Algoritmo (diagrama de flujo)
Intercambio

A, B

AUX  A

AB

B  AUX

A, B

Intercambio

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 13 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Prueba de escritorio o seguimiento de algoritmos


En las etapas de resolucin de problemas se propuso la etapa de Verificacin luego de escribir la
codificacin (algoritmo). Probar un algoritmo es ejecutar cada una de las acciones incluidas en l;
pero cmo efectuar una prueba en un algoritmo escrito en pseudocdigo o mediante un diagrama de
flujo?
La prueba de escritorio o seguimiento de un algoritmo puede efectuarse de la siguiente manera:
Proponga un conjunto de datos. Estos datos deben coincidir en cantidad y tipo con las variables que
aparecen en las acciones de lectura.
Construya una tabla y coloque, encabezando cada columna de la tabla, cada una de las variables que
aparezcan en el algoritmo.
Escriba SALIDA en el encabezado de la ltima columna de la tabla. Aqu se anotarn los resultados
que produzca el algoritmo como consecuencia de la accin de Escribir.
Comience a ejecutar las acciones del algoritmo. Cuando encuentre una asignacin de una variable
coloque el valor o dato a asignar en la columna correspondiente a esa variable.
Si lee una variable, tome el dato de prueba propuesto para esa variable y colquelo en la columna de
esa variable.
Si vuelve a asignar o a leer una variable ya creada, contine anotando en la columna correspondiente.
Al terminar de ejecutar las acciones, los resultados o salida del algoritmo deben aparecer en la columna de SALIDA.
Ejemplo:
El siguiente algoritmo calcula el promedio de 3 nmeros utilizando una sola variable para leer los
datos de entrada.
Proceso Promediar
1

Sum 0;

Leer X;

Sum Sum+X;

Leer X;

Sum Sum+X;

Leer X;

Sum Sum+X;

Prom Sum/3;

Escribir Promedio= , Prom;

FinPromediar
Se realizar la prueba o seguimiento para los datos 15, 40 y 35.
Cada accin del algoritmo se halla numerada para poder seguir en detalle la modificacin de cada
variable.
Sum
x
Prom
Salida
Cada fila de la tabla se corresponde con una accin
1
0
algortmica. La tabla con las variables sera la indica2
15
da a la derecha
3
15
Obsrvese en la fila 1, se ha asignado 0 a la variable
4
40
sum. En la fila 2 la accin es Leer X y como el primer
5
55
dato propuesto para la prueba es 15, se coloca 15 en
6
35
la columna de la x. En el paso 3 se debe sumar
7
90
sum+x, para lo cual se observa en la tabla que el
8
30
9
Promedio= 30
LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 14 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

valor actual de sum es cero y el de x es 15 con lo cual la operacin arroja 15; luego, se asigna ese
resultado a sum. Es decir que en el paso 3 la variable sum cambi tomando un nuevo valor (15) y
perdiendo el anterior(0).
As sucesivamente hasta llegar a la accin de salida en el paso 9, donde se refleja el resultado de
dicha accin en la ltima columna de la derecha de la tabla.

Estructuras de control
Introduccin
La formalizacin algortmica que se comenz a desarrollar en el tema anterior, ha permitido resolver
algunos problemas sencillos empleando algoritmos computacionales.
El objetivo de este tema es desarrollar nuevas herramientas algortmicas para resolver problemas
ms complejos, mediante el diseo de algoritmos estructurados. Esto sentar las bases para facilitar
ms adelante el desarrollo de programas en un lenguaje estructurado.
En nuestros primeros diseos de algoritmos slo se utilizaron tres acciones primitivas fundamentales:
lectura, asignacin y escritura. Estos algoritmos fueron resueltos en base a una estructura secuencial
de acciones: los pasos o acciones indicados se ejecutan uno tras otro, a medida que van apareciendo; es decir, secuencialmente.
Pero en el diseo de algoritmos, generalmente es necesario modificar el orden secuencial de ejecucin del conjunto de acciones. El diseo estructurado de algoritmos brinda recursos para resolver
este tipo de situaciones.

Teorema Fundamental de la Programacin Estructurada


Baum y Jacopini demostraron que: "Todo problema computacional (sin
importar su complejidad) puede resolverse empleando solo tres
estructuras bsicas de control. Estas son: una de tipo SECUENCIAL, otra
de tipo CONDICIONAL y una de tipo REPETITIVO".

Cada una de esas estructuras conforma un segmento algortmico perfectamente identificable de acceso y salida nicos.

Un algoritmo estructurado est conformado por segmentos de cdigo.


Cada uno de estos segmentos tiene un nico punto de
entrada y un nico punto de salida.

Los algoritmos as diseados son ms legibles, y permiten seguir ms fcilmente su lgica, ayudando
a la deteccin de errores, modificacin y mantenimiento.
De acuerdo a lo mencionado, las acciones algortmicas se encuadran en alguna de las estructuras
bsicas de control siguientes:


Secuenciales

Condicionales

Repetitivas

Se analizarn (a continuacin) cada una de ellas.

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 15 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Estructura Bsicas de Control


Estructura Secuencial
Las acciones correspondientes a esta estructura se van ejecutando en el orden en que aparecen, es
decir secuencialmente. Esta estructura puede representarse esquemticamente:
accin A

accin B

accin C
Por convencin, tales acciones al escribirlas en pseudocdigo deben ser finalizadas con el signo de
puntuacin " ; " punto y coma.

Estructura Condicional Si-Entonces


Esta estructura implica una toma de decisin en el algoritmo, donde el ejecutante (la computadora)
puede seguir un camino u otro, segn el valor de verdad de una expresin lgica.
El esquema representativo de esta estructura es el siguiente:
Donde <exp. lgica> es cualquier
proposicin que arroje un resultado
lgico: Verdadero o Falso.

E
Falso

Verdadero
<exp. lg.>

La presencia de esta estructura en


un algoritmo le indica al ejecutante
que:
 debe evaluar la expresin lgica
planteada.

accin B

accin A

 si es verdadera, debe ejecutar las


acciones indicadas en A. Luego ir al
fin de la estructura.
 si es falsa, resolver el bloque B.
Luego ir al fin de la estructura.

En el diagrama sealado, tanto el bloque A, como el B, pueden representar acciones primitivas elementales o alguna otra estructura de control. En el caso de B, es opcional, pudiendo no existir acciones en el caso de ser Falsa la evaluacin lgica.
Ntese que esta estructura condicional tiene un solo punto de entrada y un nico punto de salida
representados por un pequeo crculo con una E y una S respectivamente.
En pseudocdigo se expresar esta estructura de la manera siguiente:
Si <exp. lgica> entonces
accin A;
. . .
sino
accin B;
. . .
FinSi
Donde las palabras claves Si y FinSi representan respectivamente la entrada y el fin de la estructura.

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 16 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Aqu tambin, si la expresin lgica arroja Verdadero, el ejecutante realiza A y luego va a FinSi; si la
expresin lgica arroja Falso realiza B y pasa a FinSi.
Ejemplo: Determinar el valor de la funcin arbitraria y = f(x) que se indica a continuacin para un
valor de la variable x que se lee como dato.
y=

3 ln (x) 5x
2x 1

si x > 2
si x <= 2

Solucin empleando pseudocdigo:


Proceso FArbitraria
Leer X;
Si X > 2 entonces
y 3*ln(x) - 5*x;
sino
y 2*x - 1;
FinSi
Escribir 'Valor de la funcin: y = ', y;
FinFArbitraria
Solucin empleando diagrama de flujo:
FArbitraria

Falso

Verdadero
X>2

y  2*x - 1

y  3*ln(x) 5*x

Valor de la funcin: y = , y

FArbitraria
Obsrvese que la visualizacin bidimensional que ofrece el diagrama permite una mejor legibilidad de
la lgica del algoritmo respecto del pseudocdigo.
En una estructura condicional, la salida por Verdadero, siempre tendr al menos una accin para
ejecutar; pero es posible que no haya acciones en la salida por Falso de la expresin lgica. Esta
variante de la estructura condicional se expresar en pseudocdigo de la manera siguiente:
Si <exp. lgica> entonces
accin A;
. . .
FinSi

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 17 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Y en un diagrama de flujo:
E
Falso

Verdadero
<exp. lg.>

accin A

S
Es recomendable respetar la forma grfica del esquema, tal como se propone. Esto es porque la forma de diamante o rombo se emplear para otras estructuras, y si se altera el esquema, puede resultar confuso el seguimiento de su lgica.

Estructura Repetitiva Repetir


Esta estructura permite ejecutar una accin o grupo de acciones en forma reiterada, un nmero X de
veces. El esquema grfico que se emplear en los diagramas de flujo ser el siguiente:
E

<X>

accin A

accin B

S
El pequeo crculo con la E indica la entrada o ingreso a la estructura. Luego se ejecutan las acciones
all encerradas; en el ejemplo propuesto: A, y B. En S se indica la salida luego de realizar la cantidad
determinada de veces.
Al ingresar a la estructura Repetir se fija la cantidad de repeticiones que se realizar el bucle. Esta
tarea se puede realizar a travs de un valor numrico, una variable numrica o una operacin matemtica cuyo resultado sea un valor numrico. En el caso de ser una variable, si el valor de la misma
es modificado dentro del bucle, no modifica la cantidad de veces que se realizar el bucle, ya que una
vez ledo el valor no se vuelve a leer.
La sintaxis correspondiente en pseudocdigo es:
Repetir X
accin A;
accin B;
. . .
FinRepetir

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 18 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Su utilidad est relacionada a la repeticin de un conjunto de acciones, una cantidad determinada con
anterioridad de veces.
Ejemplo: Determinar el promedio de 10 nmeros ingresados por el usuario y mostrarlo por pantalla.
Solucin empleando pseudocdigo:
Proceso Promedio
Suma  0;
Repetir 10
Leer Nro;
Suma  Suma + Nro;
FinRepetir
Prom  Suma / 10;
Escribir 'El promedio es: ', Prom;
FinPromedio

Solucin empleando diagrama de flujo:


Promedio

Suma  0

10

Nro

Suma  Suma + Nro

Prom  Suma / 10

El promedio es: , Prom

Promedio

Estructura Repetitiva Mientras-Hacer


Esta estructura permite ejecutar una accin o grupo de acciones en forma reiterada, un nmero indeterminado de veces, mientras se cumpla una condicin. El esquema grfico que se emplear en los
diagramas de flujo ser el siguiente:

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 19 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

<exp. lg.>

Falso

Verdadero
accin A

accin B

El pequeo crculo con la E indica la entrada o ingreso a la estructura, donde debe evaluarse una
expresin lgica. Si el valor obtenido es Verdadero el control de ejecucin permanece dentro de la
estructura y se ejecutan las acciones all encerradas; en el ejemplo propuesto: A y B.
Cada vez que ingresa a la expresin lgica, la misma se evala para decidir el ingreso o no al bucle.
El valor de verdad que se obtenga determinar si el control de ejecucin permanece o sale del esquema.
La sintaxis correspondiente en pseudocdigo es:
Mientras <exp. lgica> hacer
accin A;
accin B;
. . .
FinMientras

El punto S del diagrama se corresponde con el delimitador FinMientras. En ese lugar se indica al ejecutante que debe volver a observar el valor de verdad de la proposicin lgica. Si esta arroja verdadero se vuelven a ejecutar las acciones A, y B; si arroja falso, el control escapa de la estructura para
pasar a ejecutar la prxima accin despus del FinMientras.
Como en la estructura condicional, aqu tambin se tiene un nico punto de entrada y un nico punto
de salida.
Dos caractersticas particulares de la estructura repetitiva Mientras:
 Es posible que en un algoritmo las acciones encerradas en la estructura nunca lleguen
a ejecutarse, si la expresin lgica arroja un falso en la primer evaluacin.

En el grupo de acciones que abarca la estructura es necesaria la presencia de cierta


accin, que permita alguna vez, modificar el valor de verdad de la expresin lgica que
controla el Mientras. De lo contrario se estara en presencia de un bucle infinito.

Ejemplo: Leer una serie de datos numricos, cuya cantidad se desconoce, correspondientes a las
edades de personas. Obtener e informar el valor de la cantidad de edades ingresadas y la media
(promedio) de dicho conjunto de datos. La carga de valores se detiene ingresando el valor cero (0).

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 20 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Solucin en pseudocdigo
Proceso Media
Conteo  0;
Suma  0;
Leer Edad;
Mientras Edad > 0 hacer
Conteo  Conteo + 1;
Suma  Suma + Edad;
Leer Edad;
FinMientras
Media  Suma / Conteo;
Escribir 'Cantidad de edades: ', Conteo;
Escribir 'Promedio: ', Media;
FinMedia
Solucin empleando Diagrama de Flujo
Media
Conteo  0
Suma  0
Edad

Edad > 0

Conteo  Conteo + 1
Suma  Suma + Edad
Edad

Media  Suma / Conteo


Cantidad de edades: , Conteo
Promedio: , Media

Media
Ntese que la accin Conteo Conteo + 1 permite contar la cantidad de edades ingresadas, siendo
que las mismas no se pueden saber con anticipacin.
LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 21 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Estructuras de control anidadas


En el diseo de algoritmos, es usual el empleo de estructuras lgicas de control en situaciones ms
complejas, las cuales se resuelven combinando las estructuras bsicas y adicionales.
Ejemplo: Realice un programa que permita ingresar nmeros enteros y muestre por pantalla que
cantidad de ellos son pares e impares. La cuenta termina al ingresar 0.
Proceso ParImpar
pares  0;
impares  0;
Leer numero;
Mientras numero <> 0 hacer
Si (numero mod 2) = 0 entonces
pares  pares + 1;
Sino
impares  impares + 1;
FinSi
Leer numero;
FinMientras
Escribir Cant de nmeros pares: , pares, e impares: , impares;
FinParImpar
ParImpar
pares  0
impares  0
numero

numero <> 0

Falso

Verdadero
(numero mod 2) = 0

impares  impares + 1

pares  pares + 1

numero

Cant de nmeros pares: , pares, e impares: , impares

ParImpar

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 22 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Estructuras de Control Adicionales


De acuerdo al Teorema Fundamental de la Programacin Estructurada enunciado por Baum y Jacopini seran suficientes las estructuras hasta aqu planteadas para resolver cualquier problema computacional. Pero en diversas situaciones (limitados por tan pocas herramientas) es posible encontrar
diseos de algoritmos algo intrincados, engorrosos, o faltos de claridad.
Por tal motivo, se estudiar el uso de estructuras adicionales, que no son sino variantes de las ya
vistas y pueden ayudar a clarificar el diseo de ciertas soluciones.

Estructura Condicional de Seleccin Mltiple


En varias situaciones se presentar el caso de que la decisin a tomar para bifurcar el flujo o control
de ejecucin en un algoritmo no se basa en una proposicin lgica nica con dos posibles alternativas, sino, que los caminos posibles a seguir sern: 3, 4, ..,10 o ms. Tal situacin puede resolverse
con la Estructura Condicional Si-Entonces. Se analizar en un ejemplo la resolucin de un caso.
Ejemplo: Una empresa vende 5 productos (A, B, C, D y E). La misma quiere realizar un programa
que presente en pantalla el monto a abonar por un cliente. El programa debe permitir el ingreso del
cdigo del producto (A, B, C, D, y E), la cantidad de productos a comprar y al finalizar (se ingresa S
como cdigo, muestra el monto a cobrar. Los costos de cada producto son: 15, 25, 30, 28 y 42 pesos
respectivamente. Adems, los productos A y E tienen un descuento de 15 y 20 % respectivamente.
Proceso Cobro
ACobrar  0;
Leer Codigo;
Mientras Codigo <> S hacer
Leer Cant;
Si Codigo = A entonces
ACobrar  ACobrar + 15 * Cant * 0.85;
Sino
Si Codigo = B entonces
ACobrar  ACobrar + 25 * Cant;
Sino
Si Codigo = C entonces
ACobrar  ACobrar + 30 * Cant;
Sino
Si Codigo = D entonces
ACobrar  ACobrar + 28 * Cant;
Sino
ACobrar  ACobrar + 42 * Cant* 0.80;
FinSi
FinSi
FinSi
FinSi
Leer Codigo;
FinMientras
Escribir El monto a cobrar es de: $ , ACobrar;
FinCobro
Como se puede observar en la solucin planteada para el ejemplo, el empleo de la estructura condicional Si-Entonces resuelve el caso; pero a pesar de la sencillez del problema, el seguimiento de la
lgica es confuso.

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 23 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Para tal situacin se propone una estructura que contempla la posibilidad de establecer una seleccin
entre varias posibilidades clarificado el algoritmo. Esta estructura se denomina Estructura Condicional
de Seleccin Mltiple, y se trata de una generalizacin de la estructura condicional.
En ella, en lugar de evaluar una condicin o expresin lgica, se coteja el valor de cierta variable,
llamada variable de control de la estructura, con una lista de valores posibles. El valor determinar
cual es la prxima accin a ejecutar.
Segn <variable> hacer
<elemento de comparacin 1>: accin A;
. . .
<elemento de comparacin 2>: accin B;
. . .
<elemento de comparacin 3, 4>: accin C;
. . .
. . .
<elemento de comparacin n>: accin Q;
FinSegn
Al encontrar esta estructura, el ejecutante (la computadora) realiza lo siguiente:


Observa el valor de la <variable>.

Buscar en la lista de <elementos de comparacin> propuestos el valor que coincida con el de la variable.

 Si encuentra dicho valor, ejecutar las acciones indicadas para esa opcin. Luego, va al fin de la estructura
(FinSegn).

Si el valor asignado a la variable, no coincide con ningn valor de la lista propuesta, salta al FinSegn sin
ejecutar acciones.

Opcionalmente, pueden plantearse acciones para el caso de que la variable de control no coincida
con ningn valor de la lista. La sintaxis alternativa es la siguiente:
Segn <variable> hacer
<elemento de comparacin 1>: accin A;
. . .
<elemento de comparacin 2>: accin B;
. . .
<elemento de comparacin 3, 4>: accin C;
. . .
. . .
<elemento de comparacin n>: accin N;
De otro modo: accin Z;
. . .
FinSegn
Si para ms de un valor, se debe realizar la misma accin (o grupo de acciones), tales valores pueden agruparse en la misma lnea, separados por coma. Es el caso de los valores 3 y 4 indicados ms
arriba al describir la sintaxis.
El esquema que se emplear en un diagrama de flujo para la estructura Segn es el siguiente:

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 24 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

<variable>
e.c.1

e.c.2

accin A

e.c.3,4

...

e.c.n

accin C

De otro modo

accin N

accin B

accin Z

S
e.c. = elemento de comparacin.
Al igual que la estructura condicional, se tiene aqu, un nico punto de entrada y un nico punto de
salida que en el grfico se indican con los pequeos crculos que encierran una E y una S.
Aplicaremos ahora esta nueva estructura al problema anterior.
Proceso Cobro
ACobrar  0;
Leer Codigo;
Mientras Codigo <> S hacer
Leer Cant;
Segn Codigo hacer
A:

ACobrar  ACobrar + 15 * Cant * 0.85;

B:

ACobrar  ACobrar + 25 * Cant;

C:

ACobrar  ACobrar + 30 * Cant;

D:

ACobrar  ACobrar + 28 * Cant;

E:

ACobrar  ACobrar + 42 * Cant * 0.80;

FinSegn
Leer Codigo;
FinMientras
Escribir El monto a cobrar es de: $ , ACobrar;
FinCobro
Compare ambas soluciones del problema, con y sin la estructura de seleccin mltiple, y podr observar la diferente legibilidad en favor del ltimo ejemplo donde se ha empleado la estructura Segn.

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 25 DE 26

INGENIERA INDUSTRIAL
INFORMTICA I

Cobro

ACobrar  0

Codigo

Codigo <> S

Cant

Codigo
A

ACobrarACobrar+15*Cant*0.85

ACobrarACobrar+42*Cant*0.80

ACobrarACobrar+15*Cant

ACobrarACobrar+28*Cant

ACobrarACobrar+30*Cant

Codigo

El monto a cobrar es de: $ , ACobrar

Cobro

LAVAISSE 610 TEL.: 4601579/4602390 - FAX: 4690348 www.frsf.utn.edu.ar

PAGINA 26 DE 26

You might also like