Professional Documents
Culture Documents
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
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.
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.
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.).
PAGINA 3 DE 26
INGENIERA INDUSTRIAL
INFORMTICA I
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.
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:
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.
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.
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
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:
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( ) :
COS( ) :
ATAN( ) :
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'
A <> B
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
<=
>=
<>
Distinto que
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
Resultado
VERDADERO
VERDADERO
FALSO
(SEN(x) <= 1)
VERDADERO
VERDADERO
(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:
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.
Asignacin numrica.
Asignacin lgica.
X A;
NUM 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;
X3 A;
NOMBRE 'Jorge';
PAGINA 11 DE 26
INGENIERA INDUSTRIAL
INFORMTICA I
M FALSO;
G (A < 2)
(C = 10);
(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.
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:
Asignacin
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
PAGINA 13 DE 26
INGENIERA INDUSTRIAL
INFORMTICA I
Sum 0;
Leer X;
Sum Sum+X;
Leer X;
Sum Sum+X;
Leer X;
Sum Sum+X;
Prom Sum/3;
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.
Cada una de esas estructuras conforma un segmento algortmico perfectamente identificable de acceso y salida nicos.
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
PAGINA 15 DE 26
INGENIERA INDUSTRIAL
INFORMTICA I
accin B
accin C
Por convencin, tales acciones al escribirlas en pseudocdigo deben ser finalizadas con el signo de
puntuacin " ; " punto y coma.
E
Falso
Verdadero
<exp. lg.>
accin B
accin A
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.
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
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
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.
<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
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
Suma 0
10
Nro
Prom Suma / 10
Promedio
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.
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).
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
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
numero <> 0
Falso
Verdadero
(numero mod 2) = 0
impares impares + 1
pares pares + 1
numero
ParImpar
PAGINA 22 DE 26
INGENIERA INDUSTRIAL
INFORMTICA I
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:
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:
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:
B:
C:
D:
E:
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.
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
Cobro
PAGINA 26 DE 26