TEORIAFP1AS - Doc 1648584522297

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 52

Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –

(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)


Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
UNIDAD
Omar I : NOCIÓN DE ALGORITMO
Práctica: An: Matilde Dalzotto
RESOLUCIÓN DE PROBLEMAS COMPUTACIONALES

En la vida diaria nos enfrentamos continuamente a problemas que debemos resolver,


en lo posible felizmente. Así como cada individuo tiene formas de encarar un problema y
su propia manera de solucionarlo, cuando nos referimos a problemas que vamos a
solucionar utilizando a la computadora como herramienta, podemos hacer un paralelo.
Ante la presentación de un problema encarar la mejor forma de resolverlo para arribar al
resultado esperado y correcto es un desafío. Para ello debemos comprender exactamente
qué se pide, qué resultados se pretenden y que restricciones y/o condiciones existen.
Para realizar lo antes dicho dividiremos la resolución de un problema en etapas, las
cuales enunciamos y definimos a continuación.

Etapas

a. Definición del problema

Está dada por la formulación del problema en forma correcta y completa.


Esta enunciación de lo que se desea es primordial para el éxito de la
resolución.

b. Análisis del problema

A partir del estudio del problema se deberá identificar y conocer las partes principales
del mismo y de esa manera determinar los siguientes conjuntos:

* de DATOS : que son los elementos con que contamos.


* de RESULTADOS : a qué se quiere llegar.
* de CONDICIONES: una o más relaciones que vinculan los dos conjuntos
anteriores

que permitirán plantear la solución del problema.

c. Programación

Esta etapa consiste en obtener el programa que es solución del problema dado. Se
divide en dos subetapas, siendo la primera la más dificil y de mayor creatividad:

c.1.Elección y creación del método

Se trata de buscar un procedimiento, método general o modelo que permita resolver


el problema planteado utilizando un computador. Es muy factible que se encuentren
varios métodos para hacerlo, lo importante es determinar la “mejor alternativa”, de
acuerdo a distintos parámetros que se establezcan para esta selección. Esta puede ser la
que produzca los resultados esperados en el menor tiempo y al menor costo o sólo en el
menor tiempo u otros.

c.2. Codificación

Consiste en expresar el método elegido en un lenguaje, llamado lenguaje de

Pág. Nro. 1
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
programación, 1er año
que pueda SubSede Chajarí
se interpretado Prof. Teoría:
por la computadora. An. Ma.será
Esta subetapa Carolina
objeto
de estudio
Omar en años superiores.
Práctica: An: Matilde Dalzotto
d. Prueba

Esta etapa consiste en la ejecución de la codificación del método elegido, es decir,


suministrar los datos al computador, y obtener los resultados. Luego se analizarán los
mismos determinando si son realmente los esperados. Caso contrario, deberán
analizarse las etapas previas, comenzando por la última hacia atrás, y realizar las
modificaciones necesarias, repitiendo esta proceso hasta obtener los resultados
esperados.

Observemos gráficamente las etapas descriptas

Resolución de problemas
por computador

Definición Análisis del Programaci Prueba


del problema ón
problema

Elección y Codificació
creación del n
método

La etapa de elección y creación del método se puede dividir a su vez en el diseño


de la estrategia y la definición del algoritmo, y puede graficarse de la siguiente manera :

Elección y
aplicación del
método

Diseño de la Definición
estrategia del algoritmo

Ahora definamos el concepto de estrategia y de algoritmo.

ESTRATEGIA

Por lo visto anteriormente el primer paso para resolver un problema es comprender el


enunciado correctamente, en muchos casos hay ambigüedades por el simple hecho de
que está enunciado en lenguaje humano.
Luego de un cuidadoso análisis de la descripción original del mismo, se debe
asegurar la comprensión exacta de lo que se pide, llegando a identificar las distintas

Pág. Nro. 2
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
partes quedeloSistemas
componen.1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
OmarLa siguiente etapa consiste en encontrar un método que nos permita llegar a resolver
el problema planteado. Como primer paso de esta etapa, debemos preparar un plan o
Práctica: An: Matilde Dalzotto
esquema general de las tareas que deben realizarse para llegar a la solución. Este
esquema se denomina estrategia y debe ser una lista de QUE hacer.
Por lo dicho diseñar una estrategia consiste en dividir o descomponer el problema
original en una sucesión de problemas más simples, de tamaño suficientemente pequeño
como para que cada uno de ellos pueda ser comprendido en su totalidad. Esto, permitirá
atacar la solución de cada problema simple por separado e independientemente de los
demás, volviendo a aplicar este enfoque a cada uno de los subproblemas hasta llegar a
subproblemas de solución simple. Una vez que todos ellos han sido resueltos, se puede
decir que el problema original ha sido resuelto.
Este proceso de descomposición de un problema partiendo de la formulación
completa del problema hasta llegar a problemas elementales de simple solución, se llama
diseño descendente , también conocido como top - down , método de refinamiento
sucesivos o diseño compuesto.

Gráficamente, dado el problema P lo dividiremos en subproblemas Pi. Cada


subdivisión implica un descenso de nivel.

nivel 0 P

nivel 1 P1 P2 P3 P4

P3 P3 P3
nivel 2

Cada Pi representa un enunciado o subproblema. Para cada uno existen 2 posibilidades:


* que Pi sea una tarea simple, dando por finalizada la descomposición
* que Pi sea una tarea compuesta y por lo tanto sea posible su descomposición
en una nueva secuencia de subproblemas

Las características generales de este tipo de diseño se basan en:


* ir de lo general a lo particular
* no existe una única descomposición de subproblemas
* en cada nivel puede verificarse que el esquema sea el correcto
* finalmente se realiza un trabajo de recomposición del esquema completo,
resolviendo cada subproblema hasta lograr la solución del problema.

El diseño de una estrategia y su posterior refinamiento, constituyen las etapas más


creativas y quizás más dificultosas de todo el proceso de resolución de un problema.

ALGORITMO

Pág. Nro. 3
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
Planteada 1er añoindicando
una estrategia SubSede Chajarí
QUE Prof.
tareas hacer, Teoría:especificar
debemos An. Ma. Carolina
una lista
detallada
Omar de COMO hacerlas, llegando así a definir una solución paso a paso del
problema llamada algoritmo. La descripción de la solución detallado por medio de un
Práctica: An: Matilde Dalzotto
algoritmo constituye el segundo paso en la etapa de elección del método.
La palabra algoritmo se utiliza, en general, como sinónimo de procedimiento, método
o técnica. Pero en el área de computación tiene un significado más específico.
Un algoritmo es un conjunto finito de operaciones (instrucciones - pasos) que
seguidos en un determinado orden permiten resolver un problema dado.
Las características principales de un algoritmo son :
* Finito : permite arribar a la solución de un problema después de la ejecución
de un número finito de pasos.
* Definido : cada paso debe ser enunciado en forma clara y precisa, y no debe
dar lugar a ambigüedades
* General : debe ser la solución aplicable a un tipo de problemas y no un
problema particular.

Teniendo en cuenta las características mencionadas previamente podemos decir que


un algoritmo es una secuencia ordenada y finita de pasos que constituyen un método
general para resolver un tipo de problemas.
Es de notar que esta definición, se refiere a ‘...resolver un tipo de problemas .....’ y no
hace hincapié en el uso del computador como herramienta para su resolución. Esto se
debe a que el concepto de algoritmo se aplica a problemas computacionales que van a
ser resueltos por medio de un computador y a problemas no computacionales, en cuya
resolución no interviene esta herramienta. En ambos casos el lenguaje usado en la
descripción del algoritmo debe ser comprensible para el destinatario o para quien lo va a
ejecutar. Por lo visto, para cualquier problema para el que pueda especificarse un método
finito de solución puede definirse un algoritmo.
Ejemplos que se pueden presentar en la vida diaria :
* una receta de cocina
* las instrucciones para utilizar un aparato electrónico
* el camino para llegar a un lugar determinado desde un punto de partida

Ejemplos de algoritmos computacionales


* Calcular los sueldos de los empleados de una empresa
* Actualizar el stock de un comercio
* Calcular las raíces de una ecuación

Desarrollemos un problema de la vida diaria, por ejemplo, preparar un taza de café


instantáneo
El grado de detalle que deberemos usar en la definición del método, dependerá de la
persona que sea la ejecutante de la solución. Si el ejecutante es un ama de casa,
probablemente con el enunciado sea suficiente, pero si se trata de alguien que nunca
preparó un café podríamos detallar los siguientes pasos:
* Calentar una taza de agua sin llegar al punto del hervor
* Poner en un taza tres cucharaditas de azúcar , dos de café instantáneo y media
cucharadita de soda.
* Batir hasta que la mezcla se torne marrón claro
* Llenar con el agua caliente la taza
* Revolver para disolver la mezcla en el agua

Obsérvese que los pasos han sido lo suficientemente simples para un principiante en
el arte de preparar café.
Otro aspecto que es importante considerar es los elementos con que contamos para
poder preparar el café, como por ejemplo : recipiente para calentar el agua, azúcar, café,
cucharita, taza, soda. Supongamos que no se tiene la certeza de que en el momento de

Pág. Nro. 4
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
hacer el de Sistemas
café se tenga1er soda,
año SubSede
se podráChajarí Prof.agua,
reemplazar con Teoría:
el An. Ma. Carolina
algoritmo, deberá
contemplar
Omar esta situación, por lo tanto será:
* Calentar una taza de agua sin llegar al punto del hervor
Práctica: An: Matilde Dalzotto
* Poner en un taza tres cucharaditas de azúcar , dos de café instantáneo
* Si se tiene soda
agregar en la taza media cucharadita de soda
sino agregar en la taza media cucharadita de agua fría
* Batir hasta que la mezcla se torne marrón claro
* Llenar con el agua caliente la taza
* Revolver para disolver la mezcla en el agua

En este caso el algoritmo cubre ya mayor cantidad de posibilidades, no previstas en


la versión anterior.
A partir de esto se pueden realizar las siguientes observaciones:
* El algoritmo debe estar compuesto por acciones tales que el ejecutante sea
capaz de realizar
* El algoritmo debe ser enunciado en un lenguaje comprensible para el
ejecutante, hombre o computador. En este último caso, estará restringido a un
juego de instrucciones perfectamente determinado.
* El algoritmo deberá representar todo el conjunto de posibles resultados del
problema, inclusive el caso de que no tenga solución
* Para un mismo problema se pueda describir más de un algoritmo y con
cualquiera de ellos se deberá llegar a la/s misma/s solución/ es ; un algoritmo
será más eficaz que otro. La eficacia del algoritmo depende de los recursos
con que se cuente y los factores que se consideren : costos, tiempo, etc..

Ejemplos de resolución de problemas de la vida cotidiana

Ejemplo 1 : Llamar al 113 una sola vez desde un teléfono familiar que funciona para
averiguar la hora.
Datos : teléfono familiar funcionando. El número telefónico conocido

Algoritmo :

PROCESO conocer la hora por medio del teléfono


Levantar el auricular
Escuchar el tono de la señal de marcar
Marcar el número
SI el teléfono comunica
ENTONCES escuchar la hora
colgar el auricular
SINO colgar el auricular
FINSI
FINPROCESO

Observaciones :
* para indicar el inicio y el fin del algoritmo se han utilizado las palabras
PROCESO Y FINPROCESO respectivamente.
* las tres primeras acciones : Levantar, Escuchar, Marcar, se ejecutan una a
continuación de otra .
* Luego se presentan dos alternativas :
a) que se comunique, en cuyo caso escucha la hora y cuelga

Pág. Nro. 5
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er
b) que el año SubSede
teléfono Chajarí
esté ocupado y cuelgue.Prof. Teoría: An. Ma. Carolina
Omar Para describirlas se ha usado las palabras SI ENTONCES SINO
FINSI que se estudiarán en detalle más adelante.
Práctica: An: Matilde Dalzotto
Ejemplo 2 : Preparar un licuado de frutas
Datos : Licuadora. Fruta con cáscara. Taza con leche. Taza con azúcar. Cuchillo. Plato.
Todos los elementos están sobre la mesada. Se cuenta con las medidas necesarias de
todos los ingredientes.

Algoritmo :

PROCESO : Preparar licuado


Tomar el vaso de la licuadora
Colocar el vaso de la licuadora en la base
SI la licuadora no está enchufada
ENTONCES enchufarla
FINSI
Tomar el cuchillo
REPETIR
tomar la fruta
pelarla
cortarla sobre el plato
colocar la fruta cortada en el vaso de la licuadora
HASTA QUE no haya más frutas
Dejar el cuchillo
Tomar la taza con la leche
Echar la leche en el vaso de la licuadora
Dejar la taza de la leche sobre la mesada
Tomar la taza con el azúcar
Colocar el azúcar en el vaso de la licuadora
Dejar la taza del azúcar sobre la mesada
Tapar el vaso de la licuadora
Mover la perilla de encendido hacia la derecha
REPETIR
esperar
HASTA QUE la mezcla esté licuada
Mover la perilla de encendido hacia la izquierda
FINPROCESO

En este caso ciertas acciones como la de Tomar la fruta, pelarla, cortarla, colocar.....
se repiten mientras se tiene fruta para hacerlo. Aparecen aquí las palabras REPETIR y
HASTA QUE, que estudiaremos más adelante en detalle.

FORMALIZACIÓN

Hemos mencionado que la forma de enunciar la solución a un problema planteado


depende del ejecutante o también llamado procesador. Por lo tanto llamaremos así a
toda entidad capaz de entender un enunciado y ejecutar los pasos descriptos en un
algoritmo. Si bien en los ejemplos vistos el ejecutante se trataba de un persona en la
resolución de problemas computacionales debemos pensar que el procesador será la
computadora.
También hemos notado que para poder realizar su tarea el ejecutante debe contar con
los recursos adecuados. El conjunto de estos recursos existentes en el momento de la
ejecución de un trabajo constituye el ambiente del problema.

Pág. Nro. 6
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
El de Sistemas
ambiente 1er año dado,
para un ejecutante SubSede Chajarí
es propio Prof. aTeoría:
del problema resolverAn. Ma.él,
y de Carolina
o sea de
los
Omarelementos con que se cuenta, depende el método que se elija para proponer la
solución del mismo como ya se ha visto anteriormente.
Práctica: An: Matilde Dalzotto

Cuando definimos algoritmo hemos hablado de un conjunto de pasos o acciones.


Una acción es un evento que modifica el ambiente y puede ser:
* primitiva
* no-primitiva

Una acción es primitiva cuando para un ejecutante dado su enunciado es suficiente


para que pueda ser ejecutada sin información adicional.
Una acción no-primitiva es aquella que puede ser descompuesta en acciones
primitivas par un ejecutante dado.
También hemos visto que en los ejemplos se nos presentan situaciones que
indicaban alternativas : si el teléfono comunica ..........., Si se tiene soda........ Estas no son
acciones porque no modifican el ambiente, pero son elementos que el ejecutante debe
saber interpretar. A estos enunciados se los denomina condición. Por lo tanto una
condición es una afirmación lógica sobre el estado de algún recurso del ambiente, que
puede tomar valor verdadero o falso en el momento de la observación. El ejecutante
determina en el momento de la ejecución del algoritmo las acciones a seguir,
dependiendo de que la condición sea satisfecha o no.

PROGRAMACIÓN MODULAR

Es un método de diseño y tiende a dividir el problema en partes perfectamente


diferenciadas que puedan ser analizadas, resueltas y puestas a punto por separado.
Para atacar el análisis de un problema, y siguiendo el diseño Top-Down, se pueden
utilizar criterios de programación modular para dividirlos en partes independientes,
probando cada uno por separado y realizando su recomposición ascendente.
Cada una de las partes independientes se llama Módulo y para su determinación se
deben tener en cuenta los siguientes criterios:
* un módulo debe corresponder a una función lógica perfectamente bien
definida.
* los módulos deben ser pequeños para que sean claros y de poca complejidad.
* un módulo debe tener una estructura de caja negra, es decir la salida debe ser
exclusivamente función de la entrada.
* cada módulo deber tener un único punto de entrada y un único punto de salida.

Objetivos de la programación modular.

La programación modular tiende a :

* disminuir complejidad: disminuye la complejidad del problema original, dividiendo


un problema en partes más simples.
* aumentar la claridad: el problema original es planteado ahora como un sucesión
de módulos que resulta más fácil de comprender inclusive para terceras personas.
* aumentar la fiabilidad: como consecuencia de los dos puntos anteriores, aumenta
la confiabilidad en todo proceso de resolución.
* facilitar modificaciones y conexiones: cada módulo puede realizarse y probarse
por separado, minimizándose los problemas de puesta a punto al final.

UNIDAD 2: FORMALIZACION DE ALGORITMOS

Pág. Nro. 7
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
ALGORITMOSde Sistemas 1er año SubSede Chajarí
COMPUTACIONALES Prof. Teoría: An. Ma. Carolina
Omar
Los problemas desarrollados hasta el momento, se resolvieron empleando
Práctica: An: coloquiales
instrucciones Matilde Dalzotto
y se basaban en situaciones de la vida diaria. Los algoritmos
así desarrollados son fáciles de entender para cualquier persona, definida como su
ejecutante.
Pero nuestro objetivo en la materia es llegar a desarrollar algoritmos que puedan ser
interpretados por una computadora. Para ello, es necesario una descripción clara y
carente de ambigüedades de cada una de las acciones que llevan a la solución del
problema por medio de órdenes comprensibles para la computadora .
En esta unidad, justamente, nos ocuparemos de describir la formalización necesaria
para el desarrollo de Algoritmos Computacionales.
De aquí en más cuando mencionemos al ejecutante de un algoritmo, nos estaremos
refiriendo concretamente a una computadora.
En el ejemplo que planteamos a continuación se desarrolla un algoritmo completo de acuerdo a la
formalización que propondremos.
Ejemplo: Plantear un algoritmo computacional que calcule la hipotenusa de un triángulo
rectángulo. Se conoce como información de entrada las longitudes de los catetos.
Análisis del problema:
* Datos: Longitudes de los catetos.
* Condiciones: Hipotenusa mediante Teorema de Pitágoras
* Resultado a informar: Longitud de la hipotenusa
Algoritmo:
PROCESO: HIPOTENUSA
Leer A,B;
H:=RC(A ( 2 + B ( 2);
Escribir 'Hipotenusa =';
Escribir H
FINPROCESO
En este ejemplo A, B y H constituyen variables; 2 e 'Hipotenusa' son constantes; Leer,
Escribir y := son las acciones primitivas de lectura, escritura y asignación
respectivamente; RC(A ( 2 + B ( 2) es una expresión numérica y RC( ) es la función raíz
cuadrada. El signo ; (punto y coma) es el separador de acciones.
En esta unidad iremos desarrollando todos estos elementos, que conforman un lenguaje algorítmico
que llamaremos PSEUDOCODIGO.
La forma general de un algoritmo escrito en pseudocódigo es la siguiente:
PROCESO <nombre del proceso>
acción 1;
acción 2; acción 3;
.
.
acción n
FINPROCESO
donde las acciones van separadas por el signo punto y coma (;), excepto la última - antes

Pág. Nro. 8
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
de de Sistemas
FINPROCESO - ; y 1er año pueden
además, SubSede Chajarí variasProf.
escribirse Teoría:
en una mismaAn. Ma. Carolina
línea.
Omar
Práctica: An: Matilde Dalzotto
CONSTANTES, VARIABLES Y EXPRESIONES

Definimos constante, como un elemento cuyo valor no puede alterarse en el


transcurso de la ejecución de un algoritmo.
Ejemplos: 123 'López' 3.14459
Pero además en un algoritmo existen otros elementos, llamados variables o
identificadores, cuyos valores cambian durante la ejecución del mismo. En el ejemplo
inicial A, B y H son variables - correspondientes a los catetos y a la hipotenusa del
triángulo, respectivamente - que adquieren un valor en el momento de la ejecución del
algoritmo.
Una variable o identificador es un elemento cuyo valor puede variar conforme se
ejecuta el algoritmo, que se representa por un nombre que identifica a una posición de
memoria donde puede asignarse o almacenarse un único valor por vez. Para proponer
el nombre de una variable observaremos tres reglas simples:
* Utilizar sólo letras y/o dígitos, comenzando siempre con una letra.
* No utilizar las palabras claves para acciones primitivas que emplea el
pseudocódigo: LEER, ESCRIBIR, MIENTRAS, HACER, SEGUN, etc.; o para las
funciones internas: RC, SEN, TRUNC, LN, etc.
* No hacer distinción entre mayúsculas y minúsculas. Esto implica que VENTA,
venta y Venta, constituyen en el algoritmo la misma variable.
Esta sintaxis y sus restricciones no presentan inconvenientes para proponer nombres
de variables, pues disponemos de un sinnúmero de combinaciones diferentes de letras y
dígitos.
Ejemplos: NOMBRE DIRECCION Res1 MONTO
Ejercicio: En los siguientes ejemplos de nombres de variables, indique si son válidas;
caso contrario especifique la causa:
a) venta b) x12 c) (total) d) resultado e) *PRODU f) pro medio

El diseñador del algoritmo tiene total libertad para proponer nombres a sus variables,
aunque como consejo, es conveniente proponer identificadores que tengan alguna
relación con el dato que representan. En nuestro ejemplo inicial, podríamos haber
empleado CATETO1, CATETO2, HIPOT, en lugar de A, B, H.
Por último, definimos expresión a un conjunto de operandos ligados por operadores, que
describe una operación o cálculo arrojando un único resultado. En nuestro primer
ejemplo RC(A 2 + B 2) es una expresión que permite obtener el valor de la hipotenusa.
Algunos ejemplos de expresiones:
2+a-x*5 A<B TRUNC( R ) + 1

TIPOS DE DATOS
Un algoritmo computacional puede emplear los siguientes tipos de datos:
* Numérico
* Caracter
* Lógico

Pág. Nro. 9
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
Esta clasificación nos 1er añolosSubSede
define Chajaríde datos.
tipos primitivos Prof. Teoría: An. a
Estudiaremos Ma. Carolina
cada uno de
Omar
ellos y su modo de empleo.
Práctica: An: Matilde Dalzotto

a) Tipo numérico
Es el conjunto formado por los valores numéricos que pueden incluir un punto decimal y
pueden estar precedidos por los signos '+' o '-'.La ausencia de signo implica un valor
positivo.
Se clasifican a su vez en tipo entero o tipo real, pero no haremos distinciones en su
empleo.
Los datos de tipo numérico pueden representarse como constantes, variables y/o
expresiones .

a.1. Constantes numéricas

Una constante numérica es un valor formado por una combinación de elementos del
conjunto numérico.
Veamos algunos ejemplos de constantes numéricas que puedan emplearse en un
algoritmo computacional:

12 -25000 +1.2345 -2345 -23576.998 0.45E+02

En el último ejemplo se indica una constante numérica con notación científica, donde
E+02 indica la potencia de base diez, es decir:

0.45E+02 = 0.45 * 10 ( 2 = 45

a.2. Variables numéricas

Cualquier identificador o variable que represente a un valor numérico se denomina


variable numérica. Si una variable se define en un algoritmo como numérica, no podrá
adoptar valores de tipo no numérico.

a.3. Expresiones numéricas

Una expresión numérica es aquella que combina operandos numéricos (constantes


numéricas, variables numéricas u otras expresiones numéricas) con los operadores
algebraicos.
Los operadores algebraicos y su función son:

Operador Función

Pág. Nro. 10
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
+ Suma
Omar
- Matilde
Práctica: An: Resta
Dalzotto
* Producto
/ Cociente
( Potencia

La jerarquía de estos operadores es la misma que plantea el álgebra de los números, y


podrá ser alterada con la intercalación de niveles de paréntesis.

Ejemplos: 2 + a * 10 ( 2 - 800 / C
1 - (2 * TOT - 30) ( P)
4 * (VENTA / 5 ( 2 - 25)

donde a, C, TOT, P, VENTA son todas variables numéricas. En cada caso, al evaluar la
expresión se obtiene un único resultado.
El operador de radicación no existe, ya que esta operación puede plantearse a través de
la potenciación de exponente fraccionario. De todas maneras utilizaremos una función
para el cálculo de la raiz cuadrada, como se indica en el ejemplo inicial.

Supondremos además, que el ejecutante de nuestro algoritmo (la computadora ) conoce y


puede resolver ciertas funciones numéricas. A estas funciones las llamaremos "funciones
internas" y, tienen la propiedad de devolver un valor o resultado al ser aplicadas sobre un
argumento indicado entre paréntesis.
Las funciones internas tienen prioridad sobre las operaciones vistas cuando aparecen en
una expresión.

Función Significado
RC( ) Raíz cuadrada
ABS( ) Valor absoluto
EXP( ) Exponenciación
SEN( ) Seno
COS( ) Coseno
TAN( ) Tangente
ATAN( ) Arco tangente
TRUNC( ) Parte entera
LN( ) Logaritmo natural
REDON( ) Redondeo

Pág. Nro. 11
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
Estas funciones 1er año
permiten SubSede
ampliar el usoChajarí Prof.numéricas
de expresiones Teoría: An. Ma. lo
y por Carolina
tanto la
Omar
capacidad de cálculo.
Práctica: An: Matilde Dalzotto

Ejemplos: TRUNC(2/3) - ABS(A) * 3


SEN(X) + 1 - TAN(C/2)
12/ RC(TAN(3.1416 / 4))

b) Tipo Caracter

El tipo caracter incluye a un conjunto formado por todos los caracteres o símbolos que
pueden encontrarse en el teclado de una computadora, es decir, las letras de nuestro
alfabeto en mayúscula, en minúscula, los dígitos, los operadores relacionales: '<', '>', '=',
el espacio en blanco ' ',los operadores aritméticos: '+', '-', '*', '/', los caracteres de
puntuación y otros especiales : '!', '@', '%', '(', etc.

Una aclaración importante sobre este tipo de datos, es que el conjunto de caracteres
incluído aquí, es un conjunto ordenado, y por lo tanto, existe una relación de precedencia
u orden entre sus elementos (de menor a mayor). Por convención utitlizaremos la
siguiente relación de precedencia:

* El espacio en blanco
* Los dígitos '0', '1', '2',.........'9'.
* Las letras mayúsculas 'A', 'B',......'Z'.
* Las letras minúsculas 'a', 'b',......'z'.
⦁ Operadores aritméticos y relacionales '+', '-', '*', '<', '=', '>'.
* Signos especiales y de puntuación.

Los datos de tipo caracter pueden representarse como constantes y/o variables.

b.1. Constantes tipo caracter

Una constante tipo caracter es una constante cuyo valor pertenece al conjunto
mencionado anteriormente delimitada por apóstrofes. (‘ ‘).
De acuerdo a la relación de orden establecida, podemos afirmar que son verdaderas las
siguientes proposiciones:
La letra 'a' es mayor que la letra 'B'.
El caracter '5' es menor que la letra 'A'.

Dentro de este tipo incluiremos a las cadenas de caracteres: secuencia finita de

Pág. Nro. 12
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista deencerrados
caracteres Sistemas 1er añoapóstrofes
entre SubSede y Chajarí Prof.una
por lo tanto tienen Teoría: An. Ma.
longitud que Carolina
está dada
por
Omarla cantidad de caracteres que la forman.
Práctica:
Por An: los
ejemplo, Matilde Dalzotto
nombres, apellidos y direcciones, constituyen información formada con
sucesiones o cadenas finitas de los caracteres mencionados anteriormente.

Ejemplos:

'Jorge Fernández' 'Resultado=' 'San Martín 2377 - Dpto. 5'


'043-234558' 'HIPOTENUSA' '*************'

Aquí también es válido establecer una relación de orden basada en la precedencia entre
caracteres ya señalada. Para establecer dicho orden entre dos cadenas, se compara
caracter por caracter hasta encontrar una desigualdad.
Entonces son válidas las proposiciones:
'Mario' es mayor que 'Mariana'
'043-553456' es menor que 'TE:043-553456'
'mesa' es menor que 'mesas'

Observemos que en nuestra formalización algorítmica, los datos de tipo caracter o las
cadenas de caracteres se indican siempre entre apóstrofos. Esto es para evitar
confusiones con otros elementos algorítmicos que desarrollaremos más adelante.

b.2. Variables tipo caracter

Una variable o identificador que represente a un caracter o a una cadena de caracteres es


una variable de tipo caracter.

c) Tipo Lógico

Es el conjunto formado por 2 (dos) valores lógicos: verdadero y falso.


Los datos de tipo lógico pueden representarse como constantes, variables y/o
expresiones .

c.1.Constantes Lógicas
Representaremos a las constantes lógicas con los símbolos V (verdadero) y F (falso). El
subrayado es para evitar ambigüedades con las variables V y F.

c.2. Variables Lógicas


Una variable lógica será cualquier identificador que represente a alguno de los dos

Pág. Nro. 13
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analistalógicas:
valores de Sistemas
V o F. 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
Práctica: An: Matilde
c.3. Expresiones Dalzotto
lógicas

Las expresiones lógicas más sencillas que se plantean resultan de la combinación de


operandos del mismo tipo con los operadores relacionales matemáticos. El resultado
de cualquier expresión lógica es siempre un valor lógico: V o F.

Operador Significado
< Menor que
> Mayor que
= Igual que
>= Mayor o igual que
<= Menor o igual que
<> Distinto

Ejemplos:

Expresión Lógica Resultado

45 > 12 V
56 <= 30 F
´Andrea' > 'Mariana' F
'Andrea' > 'Ana' V
60 < '23' expresión no válida

Las expresiones lógicas simples mostradas en el ejemplo, también son conocidas como
expresiones relacionales, pues permiten comparar a dos operandos del mismo tipo.
Justamente, la última expresión del ejemplo anterior no es válida pues compara a una
constante numérica con una constante de tipo caracter.
La algorítmica computacional, permite también formar expresiones lógicas más
complejas, a través de operandos lógicos y de los operadores que emplea la lógica
proposicional:
Conector Lógico Significado
( Conjunción
V Disyunción
~ Negación

Pág. Nro. 14
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
Observemos entonces 1er año deSubSede
el valor Chajarí
verdad de Prof.
las siguientes Teoría: An.
expresiones Ma. Carolina
lógicas:
Omar
Práctica: An: Matilde Dalzotto

Pág. Nro. 15
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
Expresión Lógica 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Resultado
Omar
Práctica: An: Matilde Dalzotto
(7 < 10) ('a' < 'c') V

('Ana' < 'Angel') (12 > 19) V

(37 > 18) F

(VENTA > X) V (SEN(X) <= 1) V

PRIMITIVAS

En la unidad anterior definimos a primitiva como la acción algorítmica cuyo enunciado


es suficiente para que el ejecutante pueda realizarla sin ningún tipo de información
adicional.
En el lenguaje algorítmico (pseudocódigo), las primitivas se identifican con palabras
claves o reservadas. Nosotros empleamos en el ejemplo inicial las primitivas: LEER,
ESCRIBIR, y := (asignar).

En algorítmica computacional las acciones primitivas se clasifican en:

* Secuenciales
* Condicionales
* Repetitivas

Desarrollaremos a continuación algunas acciones primitivas fundamentales de tipo


Secuencial.

ASIGNACIÓN

Esta acción permite a un identificador o variable, representar o memorizar cierto valor.


Para describirla utilizaremos la notación siguiente:

V:=E

Donde V es la variable a la cual el ejecutante debe asignar el valor de E. El símbolo ':='


puede leerse 'toma el valor'.

Pág. Nro. 16
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
Según sean 1er
los tipos de V año SubSede
y E una Chajarí
asignación puede ser:Prof. Teoría: An. Ma. Carolina
Omar
* aritmética
Práctica: An: Matilde Dalzotto
* caracter
* lógica

a. Asignación aritmética

La asignación V:=E es aritmética si V es una variable numérica y E es una constante


numérica, una variable numérica o cualquier expresión de tipo numérico.

Ejemplos:
A:=43; (A toma el valor 43)

X:=A; (X toma el valor contenido en la variable A)

NUM:= 3*X+2; (NUM toma el valor que resulta de evaluar la


expresión 3*X+2)

Notemos que para poder realizar una asignación aritmética debemos evaluar la
expresión de la derecha y luego ese resultado se almacena en la variable que figura a
la izquierda. Por lo tanto es perfectamente válida la acción:
N:= N+1;

que equivale a: tomar el valor actual de N, sumarle 1 y asignarle ese resultado a la


variable N. Por ejemplo, si antes de la acción N contenía el valor 8, luego de dicha
acción contendrá 9. Observemos que esta acción algorítmica no tiene nada que ver con
los conceptos asimilados en matemática, donde N= N+1 es una expresión incompatible.
b. Asignación tipo caracter
La asignación V:= E es una asignación de tipo caracter si V es una variable tipo caracter
y E es un constante caracter o una variable tipo caracter
Ejemplos:
A:= '7'; (A toma el valor '7')
X3:= A; (X3 toma el valor almacenado en la variable A)
APELLIDO:= 'López'; (APELLIDO toma el valor 'López')

Pág. Nro. 17
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
c. de Sistemas
Asignación lógica 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
Práctica: An: Matilde Dalzotto
La asignación V:= E es una asignación lógica si V es una variable de tipo lógico y E es
una constante lógica (V o F), una variable lógica o una expresión lógica.

Ejemplos:

M:= F; (M toma el valor lógico F)

TRUE:= 34 <= 78 (TRUE toma el valor lógico V)

G:= (A < 2) ^ (C = 10) (G toma el valor lógico resultante de la


expresión (A<2) ^ (C=10) )

ENTRADA Y SALIDA

Todo algoritmo tiene por objetivo principal producir resultados, pudiendo o no incorporar
información del medio externo (datos), al ambiente o sistema que observa.
Esta incorporación de valores desde el exterior al ambiente del algoritmo, nos lleva a
definir una acción primitiva de lectura o entrada. Usaremos para ello la palabra clave
LEER que permitirá al ejecutante identificar a esta acción.
El formato de la acción de lectura es:

LEER V donde V es una variable


LEER lista-variables donde lista-variables es una lista de variables
separadas por el signo coma (, ).

De esta manera, la acción LEER nos permite ingresar, desde el medio externo, uno o
más valores los cuales son asignados a la variable V, en el primer caso, o a las
variables que figuran a continuación de LEER, en el segundo.

Ejemplos:
LEER DAT;
LEER NOMBRE, APELLIDO, DNI;

Esta acción tiene el mismo efecto que una asignación, sólo que ésta utiliza valores del
ambiente del algoritmo; en cambio la lectura asigna valores desde el medio exterior.
Esta acción contribuye a hacer a los algoritmos de uso general, pues permite incorporar
datos nuevos para producir nuevos resultados. Sin esta acción, la ejecución de un
algoritmo producirá siempre la misma respuesta.
La acción primitiva que permite a un algoritmo comunicar resultados o salida de

Pág. Nro. 18
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
información al medio 1er año la
exterior, SubSede Chajarí con la Prof.
describiremos Teoría:
palabra claveAn. Ma. Carolina
ESCRIBIR y a
continuación
Omar una variable, una constante, o una lista de variables y/o constantes.
Práctica:
Su formatoAn: Matilde
general es:Dalzotto

ESCRIBIR C donde C representa una constante


ESCRIBIR V donde V representa una variable
ESCRIBIR lista-variables-constantes donde lista-variable-constante es una
secuencia de variables y/o constantes.
En esta acción el valor almacenado en una variable o el de una constante es
comunicado al mundo exterior.
Ejemplos:
ESCRIBIR APELLIDO;
ESCRIBIR DAT, NOMBRE;
ESCRIBIR '23';
ESCRIBIR 'Total=', X;
Destaquemos algunas diferencias entre las acciones de lectura y escritura. La lectura se
realiza solamente a través de variables y, por lo tanto, si se lee una variable que ya fue
definida en el algoritmo, implicará un acceso destructivo, esto es, la variable perderá su
valor para tomar el del nuevo dato que se ingresa. En cambio, si se escriben resultados
a través de variables el ejecutante realizará un acceso no destructivo a dichas
variables, pues sólo necesita conocer su contenido para ejecutar la escritura. Aquí las
variables conservan sus valores después de la acción.
Las acciones de lectura y escritura son conocidas como acciones de entrada/salida o
abreviadamente E/S.

DIAGRAMAS DE FLUJO

Las acciones antes descriptas corresponden a un lenguaje algorítmico que llamaremos


pseudocódigo. Además, diseñaremos algoritmos en forma gráfica a través de los
llamados Diagramas de Flujo.
En un diagrama de flujo, las estructuras de las primitivas del pseudocódigo se
identifican con una forma geométrica definida 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.
Para las acciones de lectura y escritura emplearemos un paralelogramo con una
pequeña flecha que apunta hacia adentro o hacia afuera del bloque respectivamente.
Para la acción de asignación usaremos un rectángulo.
Cada bloque se corresponde con una única acción.
Una de las ventajas del empleo de diagramas de flujo, es la visualización plana de las
acciones que forman el algoritmo, permitiendo seguir fácilmente su lógica.
Estas ventajas se apreciarán más adelante, cuando desarrollemos primitivas de
estructura condicional y repetitiva.

Pág. Nro. 19
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
Veamos ahora 1erdeaño
algunas las SubSede Chajarí
formas geométricas queProf. Teoría:como
usaremos An. Ma. Carolina
bloques que
Omar
identifican acciones en un diagrama de flujo:
Práctica: An: Matilde Dalzotto
Bloque Significado o Uso
Inicio o fin de proceso

Asignación

Lectura o ingreso de datos

Escritura o salida

Expresión lógica con una salida


por V y otra por F

Subalgoritmo

Conectores

MODELO PARA LA RESOLUCION DE PROBLEMAS


Propondremos ahora para este curso, un modelo para la presentación del planteo y
diseño de un algoritmo, que permita resolver un problema dado.
Para ello, y habiendo abordado las etapas de Definición del problema y del Análisis
del problema - vistas en la unidad anterior - nos centraremos en la etapa de Elección y
creación del método, en la cual debemos considerar tres elementos:
* Estrategia y refinamiento de la misma.
* Ambiente.
* Algoritmo .
Hemos desarrollado en la unidad anterior el objetivo de la estrategia. En el ambiente se

Pág. Nro. 20
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analistayde
definen Sistemas
describen las1er año SubSede
variables Chajarí indicando
que se emplearán, Prof. Teoría: An.
por cada Ma.
una suCarolina
nombre,
su tipo,
Omar su clase (por el momento solamente Simples) y su significado. Y por último, se
define el algoritmo escrito en un lenguaje algorítmico. En el curso emplearemos como
Práctica: An: Matilde Dalzotto
lenguajes algorítmicos el PSEUDOCODIGO y los DIAGRAMAS DE FLUJO.
En estas primeras unidades, en la resolución de problemas no incluiremos al estrategia
y su posterior refinamiento.
Veamos en un ejemplo como aplicamos nuestro modelo de resolución de problemas.

Problema: intercambiar los valores de dos variables numéricas que se leen como datos.

Ambiente:

Variable Numérica Carácter Lógica Clase Significado


A X Simple Dato
B X Simple Dato
Aux X Simple Auxiliar

Algoritmo: (en pseudocódigo)


PROCESO Intercambio
LEER A,B; AUX:= A;
A:= B;
B:= AUX;
ESCRIBIR A,B
FINPROCESO

Algoritmo: (en diagrama de flujo)

Intercambio
(Inicio)

A, B (Leer A y B)

AUX := A
(Asignar el valor de A a AUX)

A := B
(Asignar el valor de B a A)

Pág. Nro. 21
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar B := AUX
(Asignar el valor de AUX a B )
Práctica: An: Matilde Dalzotto

A, B (Informar los contenidos de A y B)

FIN (Bloque de finalización)

CONCLUSION
Los conceptos tratados hasta aquí, contribuyen a formalizar la metodología de la
definición de algoritmos. Quien los diseñe dispone ahora de reglas claras y formales,
eliminando acciones ambiguas o carentes de precisión.
Esto no quiere decir que, planteado un problema, el algoritmo que describe la solución
del mismo sea único. Al contrario, el diseño de los algoritmos requiere una gran dosis
de creatividad y, es común, hallar varios caminos para la obtención de un resultado.
Sólo se trata de establecer pautas claras y precisas para que distintos ejecutantes que
interpreten dichas pautas, puedan realizar la secuencia de acciones que conforman el
algoritmo.

Pág. Nro. 22
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
UNIDAD de 3:
Sistemas 1er año SubSede
ESTRUCTURAS Chajarí DE Prof.
BÁSICAS Teoría: An. Ma. Carolina
DIAGRAMACIÓN
Omar
ESTRUCTURADA
Práctica: An: Matilde Dalzotto

INTRODUCCIÓN

La formalización algorítmica que comenzamos a desarrollar en la unidad anterior, nos ha


permitido diseñar algunos algoritmos computacionales, en los cuales empleamos tres acciones
primitivas fundamentales: asignación, lectura y escritura, para resolver problemas sencillos, con la
característica además, de que las acciones que lo formaban se ejecutaban secuencialmente, en el
orden en que aparecían, una a continuación de otra.
Pero en el diseño de algoritmos, para la resolución de problemas más complejos, es necesario
contar con herramientas que nos permitan modificar el orden secuencial de ejecución de las
acciones, donde el ejecutante pueda tomar decisiones y determinar qué acción realizar en el
momento de ejecución del algoritmo.
Para ello, la diagramación estructurada nos brinda recursos propios. En rigor, esta metodología

establece que todo algoritmo puede elaborarse mediante el uso de sólo tres estructuras lógicas de

control:

⦁ secuencia
⦁ selección
⦁ iteración
que, combinadas describen la solución de un problema planteado.
Estas estructuras presentan la características de tener un único punto de entrada y
un único punto de salida.
Un algoritmo definido en base a esta metodología, es mas fácil de entender, y
permite, por lo tanto, detectar los errores de lógica rápidamente.

ESTRUCTURAS LÓGICAS DE CONTROL

SECUENCIA
Es un conjunto de acciones que se ejecutan en el mismo orden en que aparecen en
el algoritmo, una a continuación de la otra.
La representación gráfica en un diagrama de flujo es:

Los bloques A, B, C representan una acción elemental o un módulo; cada uno de ellos,
con un único punto de entrada y un único punto de salida.
En pseudocódigo la secuencia se especifica indicando las acciones en el orden en que
deben ser ejecutadas, separadas entre sí por el signo de puntuación ";", (escritas en el
mismo renglón o en diferente):
A; B;

Pág. Nro. 23
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er
C; año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
Ambas representaciones indican la ejecución primero del bloque A, luego del B, y
Práctica: An: Matilde Dalzotto
finalmente del C.

SELECCIÓN

La necesidad de una estructura de SELECCION que nos permita tomar decisiones en un


algoritmo, se nos planteó en los primeros problemas, en los algoritmos no
computacionales, donde usamos condiciones que permitían al ejecutante decidir qué
grupo de acciones ejecutar y cuáles no. Ej.

Si el teléfono comunica
Entonces escuchar la hora
colgar el auricular
Sino colgar el auricular

Las estructuras de selección permiten, al ejecutante, alterar el flujo lineal de control


de las acciones de un algoritmo. Permiten tomar decisiones y elegir un camino a seguir
en base a ciertos valores específicos del algoritmo, ya sean datos que se ingresan o
resultados de cálculos que se realizan.

Observamos 2 tipos de estructuras de selección :


* condicional o de decisión
* selección múltiple

a. Estructura condicional o de decisión

Esta estructura permite elegir el camino a seguir según el valor de verdad de una
condición.

Pág. Nro. 24
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
La de Sistemas
estructura 1er año
condicional SubSede
permite Chajarí
al ejecutante Prof. elegir
o procesador Teoría:lasAn. Ma. Carolina
acciones a seguir
entre
Omar 2 alternativas específicas, de acuerdo al valor de una condición en el momento
de ejecución del algoritmo.
Práctica: An: Matilde Dalzotto
La representación de esta estructura en un diagrama es:

V F
condición

A B

donde condición es cualquier elemento del ambiente del algoritmo que arroje un
resultado lógico V o F, es decir que el elemento condición puede ser una variable o
expresión lógica. Tanto A como B representan una acción primitiva o un conjunto de
acciones.

La presencia de esta estructura en un algoritmo, le indica al procesador que debe:

* evaluar la condición planteada


* si la condición toma un valor V, ejecutar el bloque A; y finaliza la estructura
condicional indicada con el punto.
* si la condición toma un valor F, ejecutar el bloque B; y finaliza la estructura
condicional indicada con el punto.
* En ambos casos, luego continúa la ejecución del algoritmo con la acción
posterior al punto.

En pseudocódigo, la sintaxis correspondiente es:

SI condición
ENTONCES A
SINO B
FINSI
donde las palabras claves SI y FINSI indican, respectivamente, el comienzo y fin de la
estructura de selección.
De acuerdo al valor de la condición, el procesador ejecuta A (alternativa verdadera) o B
(alternativa falsa) y luego continúa con la acción que sigue al FINSI .
Esta estructura se la considera como una unidad, con un único punto de entrada y un
único punto de salida. Su punto de entrada es la evaluación de la condición y su punto de
salida, luego de haberse ejecutado el camino correspondiente, es la acción que sigue al
punto (en el diagrama) o al finsi (en pseudocódigo).
Ejemplo 1: Una compañía de turismo ha definido una política de promoción de sus
empresa para lo cual ha fijado descuentos para sus clientes en función de los viajes
anteriores realizados. El valor del descuento es del 20% para aquellos clientes que,
considerando los viajes realizados en el último año y el que desean realizar, han
recorrido más de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra.
Se desea realizar un algoritmo que calcule el importe a pagar por un cliente, si se
ingresa su nombre y apellido, el total de Kms. recorridos hasta el momento, y los datos

Pág. Nro. 25
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
del viaje de Sistemasprecio,
a contratar: 1er añodestino,
SubSede
Kms.Chajarí Prof. Teoría:
a recorrer. Informar An.ingresados,
los datos Ma. Carolinael
monto
Omar del descuento y el monto a pagar por el cliente.
Ambiente:
Práctica: An: Matilde Dalzotto
Variable Num Carac. Lóg Clase Significado
NYA X Simple Nombre y Apellido del Cliente
TACUM X Simple Kms. acumulados hasta la fecha
PRECIO X Simple Precio del viaje
KMS X Simple Kms. a recorrer
DEST X Simple Destino del Viaje
TOTAL X Simple Kms.Tot. incluídos los del viaje actual
DESC X Simple Descuento a realizar
IMP X Simple Importe Total

Algoritmo – En diagrama de flujo

Turismo

NYA, TACUM, PRECIO,


DEST, KMS

TOTAL:= TACUM + KMS

TOTAL > 300

DESC:= PRECIO * 0.20 DESC:= PREIO * 0.05

IMP:= PRECIO - DESC

‘Cliente:’, NYA, ‘Acumulados:’, TACUM

‘Datos del viaje:$’, PRECIO, KMS,


‘Kms.’, DEST

‘Descuento: $’, DESC, ‘Importe: $’,


IMP

FINPROCESO

Pseudocódigo

PROCESO: TURISMO

Pág. Nro. 26
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
AnalistaLEER
de Sistemas 1er año
NYA, TACUM, SubSede
PRECIO, Chajarí
DEST, KMS; Prof. Teoría: An. Ma. Carolina
Omar
TOTAL := TACUM + KMS
Práctica: An: Matilde Dalzotto
SI TOTAL > 3000
ENTONCES DESC := PRECIO * 0.20
SINO DESC := PRECIO * 0.05
FINSI
IMP := PRECIO - DESC;
ESCRIBIR ‘ Cliente: ‘, NYA, ‘ Acumulados: ‘, TACUM;
ESCRIBIR ‘ Datos del viaje: $’ , PRECIO, KMS, ‘Kms.’, DEST;
ESCRIBIR ‘Descuento: $‘, DESC, ‘Importe: $‘, IMP
FINPROCESO

Observación: no se coloca punto y coma (;):

* en la acción que precede a la estructura de selección


* después de la palabra clave FINSI
* en la acción que precede a las palabras claves ENTONCES, SINO y
FINSI

Seguimiento

Datos: ‘ Juan Perez’, 3100, 350, ‘Misiones’, 800

NYA TACUM PRECIO KMS DEST TOTAL DESC IMP Acciones de Escritura
‘Juan 3100 350 800 ‘Misiones’ 3900 70 280 Cliente: Juan Pérez Acumulados: 3100
Pérez’ Datos del Viaje: $350 800 Kms. Misiones
Descuento: $70 Importe: $280

Además, la estructura condicional brinda la posibilidad de plantear que por la


alternativa falsa no se especifiquen acciones a ejecutar. De esta manera, en el
condicional, la salida por VERDADERO deberá presentar al menos una acción a
ejecutar, mientras que por el camino de la condición FALSA no se plantea ninguna
acción. Esta variante de la estructura condicional se representa en diagrama de la
siguiente manera:

V condición F

En pseudocódigo la sintaxis equivalente a este caso es:


SI condición
ENTONCES A
FINSI

Pág. Nro. 27
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Ejemplo
Omar 2: Realizar un algoritmo que ingrese como datos, el precio unitario y la cantidad
de unidades vendidas de un artículo e informe el monto neto de venta, sabiendo que para
Práctica: An: Matilde Dalzotto
cantidades superiores a 500, se efectúa un descuento del 20 %.

Ambiente:

Variable Num Carac. Lóg Clase Significado


PRECIO X Simple Precio de venta del artículo
CANT X Simple Cantidad de artículos vendidos
MONTO X Simple Monto de la venta
CUESTIO X Simple Valor de la condición Cant > 500
N

Algoritmo - Diagrama Venta

Precio, Cant

Monto:= Precio * Cant

Cuestion:= Cant > 500

V F
Cuestion

Monto:= Monto – 0.2 * Monto

‘Monto Neto Venta:’, Monto

FinProceso

Pseudocódigo:

PROCESO: VENTA
LEER PRECIO, CANT;

Pág. Nro. 28
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
MONTO de:=Sistemas
PRECIO1er año SubSede Chajarí
* CANT; Prof. Teoría: An. Ma. Carolina
Omar
CUESTION := CANT > 500
Práctica: An: Matilde Dalzotto
SI CUESTION
ENTONCES MONTO := MONTO - 0.20 * MONTO
FINSI
ESCRIBIR 'Monto neto venta:', MONTO
FINPROCESO

Ejercicio propuesto: Una compañía de turismo ha definido una política de promoción de


sus empresa para lo cual ha fijado un descuento del 20% para aquellos clientes que,
considerando los viajes realizados en el último año y el que desean realizar, superen
los 3000 Kms. de recorrido.
Se desea realizar un algoritmo que calcule el importe a pagar por un cliente, si se
ingresa su nombre y apellido, el total de Kms. recorridos hasta el momento, y los datos
del viaje a contratar: precio, destino, Kms. a recorrer. Informar los datos ingresados, el
monto del descuento y el monto a pagar por el cliente.

ESTRUCTURAS CONDICIONALES ANIDADAS

En una estructura condicional, tanto la alternativa verdadera como la falsa pueden presentar a su
vez, otras estructuras condicionales, dando lugar a esquemas como el siguiente:

En Pseudocódigo:
SI condición1
ENTONCES A
SINO SI condición2
ENTONCES B
SINO C
FINSI
FINSI

En este esquema hablamos de condicionales anidados, con un condicional externo- el


primero que se plantea ( evalúa la condición1) - y condicionales internos ( en este csao,
aparece uno sólo que evalúa la condición2).
Este esquema puede complicarse, si en A, B, y/o C planteamos otros condicionales
internos, pero debe tenerse en cuenta que cada condicional debe corresponder al
esquema SI-FINSI.

En diagrama de flujo:

Pág. Nro. 29
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar V F
Condición 1
Práctica: An: Matilde Dalzotto
V F
A
Condición 2
B C

Ejemplo 3: Una compañía de turismo ha definido una política de promoción de sus


empresa para lo cual ha fijado descuentos para sus clientes en función de los viajes
anteriores realizados. El valor del descuento es del 30% para aquellos clientes que,
considerando los viajes realizados en el último año y el que desean realizar, han
recorrido más de 3500 Kms. , del 15 % si han sumado más de 1500 kms., del 5% para
aquellos que han superado los 500 kms..
Se desea realizar un algoritmo que calcule el importe a pagar por un cliente, si se
ingresa su nombre y apellido, el total de kms. recorridos hasta el momento, y los datos
del viaje a contratar: precio, destino, kms. a recorrer. Informar los datos ingresados, el
monto del descuento y el monto a pagar por el cliente.
Ambiente:
En este caso el ambiente es el mismo que el realizado para el Ejemplo 1.

Pág. Nro. 30
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de
Algoritmo Sistemas
- En 1er año SubSede Chajarí
Diagrama Prof. Teoría: An. Ma. Carolina
Omar
TURISMO
Práctica: An: Matilde Dalzotto

NYA, TOTACUM, PRECIO, DEST, KMS

TOTAL = TOTACUM + KMS

V F
TOTAL > 3500

DESC:= PRECIO * 0.3


V TOTAL > F
2000
DESC: = PRECIO * 0.15
V
TOTAL > 500

DESC := PRECIO * 0.05 DESC: = 0

IMP: = PRECIO - DESC

‘Cliente:’, NYA, ‘Kms.acumulados:’,


TOTACUM

‘Datos del viaje: $’,


PRECIO, KMS, DEST

‘Descuento:’, DESC,
‘Importe:’, IMP

FinProceso

Pág. Nro. 31
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí
Pseudocódigo Prof. Teoría: An. Ma. Carolina
Omar
Práctica: An:TURISMO
PROCESO: Matilde Dalzotto
LEER NYA, TOTACUM, PRECIO, DEST, KMS;
TOTAL := TOTACUM + KMS
SI TOTAL > 3500
ENTONCES DESC := PRECIO * 0.30
SINO SI TOTAL > 2000
ENTONCES DESC := PRECIO * 0.15
SINO SI TOTAL > 500
ENTONCES DESC : = PRECIO 0.05
SINO DESC : = 0
FINSI
FINSI
FINSI
IMP := PRECIO - DESC;
ESCRIBIR ‘ Cliente: ‘, NYA, ‘ Kms. acumulados: ‘, TOTACUM;
ESCRIBIR ‘ Datos del viaje:’ , PRECIO, KMS, DEST;
ESCRIBIR ‘Descuento: ‘, DESC, ‘Importe: ‘, IMP
FINPROCESO

b. Estructura de selección múltiple

Esta estructura es una generalización de la estructura condicional y brinda la posibilidad


de elegir entre más de dos alternativas de acuerdo al valor de una variable de control
numérica, previamente fijado. En diagrama de flujo se representa de la siguiente
manera:

E
1 2 .......... N Otros

A R

B U

donde E es la variable de control, numérica, que toma todos los valores enteros positivos,
acotados dentro de un rango preestablecido, de 1 a N.

Pág. Nro. 32
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
En presencia de esta estructura el procesador deberá:
Práctica: An: Matilde Dalzotto

* observar el valor de la variable E


* decidir el camino a ejecutar de acuerdo al valor de E:
* Si E toma el valor 1, realizará la acción A
⦁ Si E toma el valor 2, ejecutará la acción B y así sucesivamente para cada uno
de los valores posibles de E que se hayan indicado.
* Si E toma valores fuera del rango 1 a N, deberá ejecutar la acción U, indicada
en "otros".
* en todos los casos, ejecutada la acción asociada, deberá salir de la estrucutra
y continuar con la acción siguiente especificada después del punto.

A, B, ... U representan una acción elemental.

La estructura de decisión múltiple, mantiene las características vistas en las anteriores, de


tener un único punto de entrada y un único punto de salida.
La sintaxis equivalente en pseudocódigo es la siguiente:

SEGUN E HACER
1: A
2: B
. .
. .
n: R
DEOTROMODO: U
FINSEGUN
El comienzo y el fin de la estructura están identificados por las palabras claves SEGÚN y
FINSEGÚN, respectivamente. Ejecutada la acción asociada al valor de la variable E, el
ejecutante finaliza la estructura y continúa con la acción siguiente a la palabra clave
FinSegún.
Puede suceder que para alguno de los caminos indicados se deba ejecutar más de una
acción.

En este caso en el diagrama de flujo se graficarán las acciones a realizar:

E
1 2 .......... N Otros

Pág. Nro. 33
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
Práctica: An: Matilde
A Dalzotto R

B U
C D

En pseudocódigo, la sintaxis correspondiente es:

SEGUN E HACER
1: COMENZAR
A;
C
FINCOM
2: B
. .
. .
n: COMENZAR
R;
D
FINCOM
DEOTROMODO: U
FINSEGUN

Observación: no se coloca punto y coma (;):

* en la acción que precede a la estructura de decisión múltiple


* después de la palabra clave FINSEGUN
* en la acción que precede a la palabra clave FINSEGUN y a cada uno de los
valores que puede tomar la variable de control

Otros formatos de la estructura de selección múltiple:

a) Si cuando la variable de control toma valores mayores a los especificados no existe


acción a realizar, esta estructura permite omitir la rama correspondiente a "otros" ( o
"deotromodo" en el pseudocódigo).
Esta alternativa en el diagrama nos queda:

E
1 2 .......... N

A R

Pág. Nro. 34
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
Práctica: An: Matilde Dalzotto
En pseudocódigo:

SEGUN E HACER
1: A
2: B
. .
. .
n: R
FINSEGUN

b) Cuando para distintos valores de la variable de control se deban ejecutar la/s misma/s
acción/es, la estructura permite agrupar dichos valores indicando el camino de acciones a
realizar, por única vez.

En el diagrama nos queda: En el pseudocódigo:

SEGUN E HACER
1, 2, 3: A
E 4: B
. .
1,2 ,3 4 ......... N Otro . .
n: R
DEOTROMODO: T
A R FINSEGUN

B T

En este caso se consideró que para los valores de E igual a 1, 2 o 3 se debe ejecutar la
acción A.

Ejemplo 4:

Se desea calcular el sueldo de un empleado, conociendo como datos su legajo, nombre y


apellido, categoría (1, 2, 3, ó 4) y sueldo básico. Se le paga además, una bonificación
que depende de la categoría. Para la categoría 1 y 3, la bonificación es del 30 % del
sueldo básico, para la categoría 2, del 20 % y para la categoría 4, del 15 %. Informar
legajo, sueldo básico, bonificación y sueldo a cobrar. (en el dato categoría, sólo pueden
venir los valores indicados).

Ambiente:

Variable Num Carac. Lóg Clase Significado

Pág. Nro. 35
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de
LEG X Sistemas 1er año SubSede
Simple Chajarí Prof. Teoría: An. Ma. Carolina
Legajo del empleado
Omar
NYA X Simple Nombre y apellido del empleado
CAT
Práctica: An: Matilde Dalzotto Simple Categoría del empleado
X
SB X Simple Sueldo básico del empleado
BON X Simple Bonificación que cobra
TOT X Simple Sueldo neto a cobrar

Algoritmo- En Pseudocódigo

PROCESO: SUELDO
LEER LEG, NYA, CAT, SB
SEGUN CAT HACER
1, 3: BON := 0.30 * SB
2: BON := 0.20 * SB
4: BON := 0.15 * SB
FINSEGUN
TOT := SB + BON;
ESCRIBIR LEG, SB, BON;
ESCRIBIR 'Sueldo a cobrar:', TOT
FINPROCESO

En diagrama
Sueldo

LEG, NYA, CAT,


SB

CAT
1,3 2 4

Pág. Nro. 36
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar BON : = 0.3 * SB BON : = 0.15 * SB
Práctica: An: Matilde Dalzotto
BON : = 0.2 * SB

TOT : = SB + BON

LEG, SB, BON

‘Sueldo a Cobrar: ‘, TOT

FINPROCESO

NOTA:
En el ejemplo las acciones a realizar para 2 valores de la variable CAT, son las mismas.
En estos casos, es posible agrupar dichos valores e indicar una única vez las acciones a
realizar.
UNIDAD 3 ESTRUCTURAS BÁSICAS DE DIAGRAMACIÓN ESTRUCTURADA. (2ª
Parte)

ITERACION

Analizaremos ahora las diferentes formas de plantear, en la construcción de algoritmos,


la repetición de la ejecución de una o varias acciones, a través de las estructuras de
Iteración.
Las estructuras de iteración son aquellas nos permiten ejecutar una acción o un conjunto
de acciones varias veces, dependiendo de una condición.
En la solución de problemas computacionales, se presentan casos, en los que no se
conoce de antemano la cantidad de veces que se quiere repetir un conjunto de
acciones, en otros, ese número de repeticiones es conocido. Definiremos estructuras
algorítmicas que nos permitan describir ambas situaciones.

Dentro de las estructuras de iteración, veremos dos esquemas:

* Mientras-FinMientras
* Repetir-HastaQue

ESTRUCTURA MIENTRAS-FINMIENTRAS

Pág. Nro. 37
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
En una diagrama , esta estructura se representa como:
Práctica: An: Matilde Dalzotto

F
Condición

donde condición puede ser una variable o expresión lógica y A representa cualquier
acción primitiva o conjunto de estructuras, llamado rango del ciclo.
Como en las estructuras vistas anteriormente - secuencia y de selección - la iteración se
considera una unidad, con un sólo punto de entrada y un sólo punto de salida.
Cuando el procesador encuentra esta estructura deberá:

* Observar la condición
* Si la condición es V ( ejecutar A
⦁ Observar nuevamente la condición
* Si es V , ejecutar A y volver a evaluar la condición y así sucesivamente
hasta que de la observación de la condición se obtenga un valor falso
* Si es F, finaliza la ejecución
* Si la condición es F ( salir de la estructura

Debemos notar que:


* El bloque A puede no llegar a ejecutarse, si al principio, la condición es falsa.
* Entre el conjunto de acciones de A, deberá existir una acción que permita modificar,
en determinado momento, su valor de verdad; sino el bloque A se repetirá
indefinidamente.
* No es necesario conocer de antemano el número de repeticiones, o bien no es
necesario expresarlo en forma directa.

En pseudocódigo la sintaxis equivalente al diagrama es:

MIENTRAS condición HACER


A
FINMIENTRAS

Pág. Nro. 38
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
Las palabras claves 1er año SubSede
MIENTRAS Chajarí
y FINMIENTRAS Prof. Teoría:respectivamente,
identifican, An. Ma. Carolina el
Omar
principio y fin de la estructura.
Práctica: An: Matilde Dalzotto

Notación: No se coloca punto y coma (;):

* en la acción que precede a la estructura de iteración


* después de la palabra clave FINMIENTRAS
* en la acción que precede a la palabra clave FINMIENTRAS

Ejemplo 1: Una compañía de turismo ha definido una política de promoción de sus


empresa para lo cual ha fijado descuentos para sus clientes en función de los viajes
anteriores realizados. El valor del descuento es del 20% para aquellos clientes que,
considerando los viajes realizados en el último año y el que desean realizar, han
recorrido más de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra.

Se desea realizar un algoritmo que calcule la recaudación de la compañía en un día.


Para ello, por cada cliente se ingresa su nombre y apellido , el total de Kms.
recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, Kms. a
recorrer. El fin de datos se produce al ingresar como nombre y apellido un valor ´ ZZZ `
Para cada cliente informar los datos ingresados, el monto del descuento y el monto a
pagar. Informar además el total recaudado y el total de descuentos realizados por la
Compañía, con leyendas alusivas.

Ambiente:

Variable Num Carac. Lóg Clase Significado


NYA X Simple Nombre y Apellido del Cliente
TACUM X Simple Kms. acumulados hasta la fecha
PRECIO X Simple Precio del viaje
KMS X Simple Kms. a recorrer
DEST X Simple Destino del Viaje
TOTAL X Simple Kms.Tot. incluídos los del viaje actual
DESC X Simple Descuento a realizar
IMP X Simple Importe a Pagar
TOTDES X Simple Total de Decuentos
TOTIMP X Simple Total recaudado por la Compañía

Pseudocódigo

PROCESO: TURISMO
TOTDES : = 0; TOTIMP := 0;
LEER NYA
MIENTRAS NYA ( ( ‘ZZZ ’ HACER
LEER TACUM, PRECIO, DEST, KMS;

Pág. Nro. 39
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas
TOTAL 1er año SubSede
:= TACUM + KMS Chajarí Prof. Teoría: An. Ma. Carolina
Omar
SI TOTAL > 3000
Práctica: An: Matilde Dalzotto
ENTONCES DESC := PRECIO * 0.20
SINO DESC := PRECIO * 0.05
FINSI
IMP := PRECIO - DESC;
ESCRIBIR ‘ Cliente: ‘, NYA, ‘ Acumulados: ‘, TACUM;
ESCRIBIR ‘ Datos del viaje: $’ , PRECIO, KMS, ‘Kms.’, DEST;
ESCRIBIR ‘Descuento: $‘, DESC, ‘Importe: $‘, IMP;
TOTDES : = TOTDES + DESC;
TOTIMP : = TOTIMP + IMP;
LEER NYA
FIMIENTRAS
ESCRIBIR ‘Recaudación de la Cia: $ ‘, TOTIMP;
ESCRIBIR ‘Total de Descuentos: $ ‘, TOTDES
FINPROCESO

Algoritmo- En Diagrama
Turismo

TOTDES: = 0

TOTIMP: = 0

NYA

Pág. Nro. 40
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar F
Práctica: An: Matilde Dalzotto NYA <>

TACUM, PRECIO, DEST, KMS

TOTAL:= TACUM + KMS

V F
TOTAL > 300

DESC:= PRECIO * 0.20 DESC:= PRECIO * 0.05

IMP:= PRECIO - DESC

‘Cliente:’, NYA, ‘Acumulados:’, TACUM


2
3 1

3 1 2

‘Datos del viaje:$’, PRECIO, KMS,


‘Kms.’, DEST

‘Descuento: $’, DESC, ‘Importe: $’, IMP

TOTDES: = TOTDES + DESC

TOTIMP: = TOTIMP + IMP

NYA

Pág. Nro. 41
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
Práctica: An: Matilde Dalzotto
‘Recaudación de la Cia: $’,
TOTIMP

‘Total de Descuentos: $’,


TOTDES

FIN

Seguimiento -

a) Datos: ‘ Juan Perez’, 3100, 350, ‘Misiones’, 800


‘ José Diaz’, 300, 500, ‘Mendoza’, 956
‘ ZZZ’

NYA TACUM PRECIO KMS DEST TOTAL DESC IMP TOTDES TOTIMP
‘Juan 3100 350 800 ‘Misiones 3900 70 280 0 0
Perez’
70 280

‘José 300 500 956 ‘Mendoza’ 1256 25 475 95 755


Diaz’

‘ZZZ’

Acciones de escritura
Cliente: Juan Perez Acumulados: 3100
Datos del viaje: $350 800 Kms. Misiones
Descuento: $70 Importe: $280
Cliente: José Diaz Acumulados: 3000
Datos del viaje: $500 956 Kms. Mendoza
Descuento: $25 Importe: $475
Recaudación de la Cia: $ 755
Total de Descuentos: $ 95

b) Datos: ‘ZZZ’

NYA TACUM PRECIO KMS DEST TOTAL DESC IMP TOTDES TOTIMP
0 0
‘ZZZ’

Acciones de escritura
Recaudación de la Cia: $ 0
Total de Descuentos: $ 0

Pág. Nro. 42
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
Observación: Debemos notar que en este ejemplo se desconoce a priori la cantidad de
Práctica:
veces queAn: Matilde
se repite DalzottoSin embargo, el mismo algoritmo puede utilizarse para el
el proceso.
caso de `ningún’ cliente ( ejemplo b) , para un sólo cliente, para 2 (ejemplo a) o para
más.

ESTRATEGIAS

En la unidad 1, definimos ESTRATEGIA y ubicamos a la Definición de una estrategia


como una etapa dentro de la Resolución de problemas, que debe realizarse previa a la
Definición de algoritmos.
Comenzaremos a aplicar estos conceptos y los vistos en esa unidad referidos a diseño
descendente, en la resolución de problemas que se nos plantean.

Ejemplo 2: Una compañía paga a cada uno de sus vendedores una bonificación anual
basada en el sueldo del vendedor y en su total de ventas durante el año. El valor de la
bonificación es del 3 % del total de las ventas si las ventas son inferiores a 4 veces el
sueldo del vendedor, o del 5 % si son mayores o iguales a ese monto.
Realizar un algoritmo que ingrese por cada vendedor el nombre y apellido, el sueldo y el
total de ventas. El fin de datos se produce al ingresar como nombre y apellido 'ZZZZ'.
Para cada empleado informar el nombre y apellido y la bonificación correspondiente, y
además informar el total que debe pagar la compañía en concepto de bonificaciones, con
leyenda indicativa.
Para resolver este problema, luego de realizar el análisis del mismo, debemos plantear
la estrategia, definiendo las etapas que deben seguirse para arribar a la solución del
problema, indicando QUÉ debe hacerse y no el CÓMO.

En el enunciado planteado una alternativa de Estrategia es:

Compañía

Inicializar Acumulador Vendedor * Informar Total Bonif.

Ingresar Datos Determinar Informar Datos Acumular


Vendedor Bonificación Vendedor Bonificación

Pág. Nro. 43
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
Omar
Práctica:Calcular Bonif.Dalzotto
An: Matilde 5% ( Calcular Bonif. 3% º

Notación:

Representa un proceso iterativo. Debajo de él pueden


* graficarse los módulos que forman el ciclo.

º Representa una alternativa cuya ejecución dependerá de una


condición.

ESTRUCTURA REPETIR-HASTAQUE

En un diagrama la estructura se grafica de la siguiente manera:

F Condici

donde condición puede ser una variable o expresión lógica y A representa cualquier
acción primitiva o conjunto de estructuras, de la misma manera que en el esquema
anterior.

Esta estructura plantea la ejecución del bloque A, reiteradamente, hasta que se cumpla la
condición.
En presencia de este esquema, el procesador deberá:

* ejecutar el bloque A
* Observar la condición
* Si la condición es F (ejecutar A
⦁ Observar nuevamente la condición
* Si es F , ejecutar A y vuelve a evaluar la condición y así
sucesivamente hasta que de la observación de la condición se obtenga
un valor verdadero
* Si es V, sale de la estructura
* Si la condición es V ( finaliza la ejecución de la estructura

Pág. Nro. 44
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
Observamosde Sistemas 1er año esSubSede
que la condición evaluadaChajarí Prof. ejecución
después de cada Teoría: An.
delMa. Carolina
bloque A, por
Omar
lo tanto éste será ejecutado al menos una vez.
Práctica: An: Matilde Dalzotto
La diferencia entre la estructura básica y ésta, reside en el punto de evaluación de la
condición. Esto hace que en la estructura básica el bloque A pueda ser ejecutado desde
0 a n veces, mientras que en la adicional desde 1 a n veces.
En pseudocódigo, la sintaxis es:

REPETIR
A
HASTAQUE condición
donde el principio y el fin de la estructura están dados por las palabra claves REPETIR y
HASTAQUE.
Tal como en el caso anterior, esta estructura es considerada como una unidad, con un
único punto de entrada y un único punto de salida.

NOTACIÓN : no se coloca punto y coma (;):

* en la acción que precede a la estructura de iteración


* después del predicado HASTAQUE condición
* en la acción que precede al predicado HASTAQUE condición

Ejemplo 3: Una compañía de turismo ha definido una política de promoción de su


empresa para lo cual ha fijado descuentos para sus clientes en función de los viajes
anteriores realizados. El valor del descuento es del 20% para aquellos clientes que,
considerando los viajes realizados en el último año y el que desean realizar, han
recorrido más de 3000 Kms. y del 5% para aquellos que no han alcanzado dicha cifra.
Se desea definir un algoritmo que calcule la recaudación diaria de la compañía para
sus N clientes. Para ello, por cada cliente se ingresa su nombre y apellido, el total de
Kms. recorridos hasta el momento, y los datos del viaje a contratar: precio, destino, Kms.
a recorrer.
Para cada cliente informar los datos ingresados, el monto del descuento y el monto a
pagar. Informar además el total recaudado y el total de descuentos efectuados por la
Compañía, con leyendas alusivas. El valor N se ingresa como primer dato.
Ambiente:

Num Carac. Lóg Clase Significado


Variable
N X Simple Cantidad de Clientes
NYA X Simple Nombre y Apellido del Cliente
TACUM X Simple Kms. acumulados hasta la fecha
PRECIO X Simple Precio del viaje
KMS X Simple Kms. a recorrer
DEST X Simple Destino del Viaje
TOTAL X Simple Kms.Tot. incluídos los del viaje actual

Pág. Nro. 45
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de
DESC X Sistemas 1er año SubSede
Simple Chajarí
Descuento aProf. Teoría: An. Ma. Carolina
realizar
Omar
IMP X Simple Importe a Pagar
TOTDES
Práctica: An: Matilde Dalzotto Simple Total de Decuentos
X
TOTIMP X Simple Total recaudado por la Compañía
CONT X Simple Contador de Clientes

Algoritmo - En Diagrama

Turismo2

TOTDES: = 0

TOTIMP: = 0

CONT : = 0

NYA, TACUM, PRECIO,


2
DEST, KMS

TOTAL:= TACUM + KMS

V TOTAL > 300 F

DESC:= PRECIO * 0.20 DESC:= PRECIO * 0.05

IMP:= PRECIO - DESC

‘Cliente:’, NYA, ‘Acumulados:’,


TACUM

Pág. Nro. 46
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
‘Datos del viaje:$’, PRECIO, KMS,
Omar
‘Kms.’, DEST
Práctica: An: Matilde Dalzotto
‘Descuento: $’, DESC, ‘Importe: $’,
IMP

TOTDES: = TOTDES + DESC

TOTIMP: = TOTIMP + IMP


2
CONT: = CONT + 1

F CONT =
N

V
‘Recaudación de la Cia: $’,
TOTIMP

‘Total de Descuentos: $’,


TOTDES

FIN

Algoritmo - Pseudocódigo

PROCESO: TURISMO2
TOTDES : = 0; TOTIMP := 0; CONT : = 0; LEER N
REPETIR
LEER NYA, TACUM, PRECIO, DEST, KMS;
TOTAL := TACUM + KMS
SI TOTAL > 3000
ENTONCES DESC := PRECIO * 0.20
SINO DESC := PRECIO * 0.05
FINSI
IMP := PRECIO - DESC;
ESCRIBIR ‘ Cliente: ‘, NYA, ‘ Acumulados: ‘, TACUM;

Pág. Nro. 47
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er ‘año
ESCRIBIR SubSede
Datos del viaje:Chajarí
$’ , PRECIO,Prof.
KMS,Teoría: An. Ma. Carolina
‘Kms.’, DESTINO;
Omar
ESCRIBIR ‘Descuento: $‘, DESC, ‘Importe: $‘, IMP;
Práctica: An: Matilde Dalzotto
TOTDES : = TOTDES + DESC;
TOTIMP : = TOTIMP + IMP;
CONT : = CONT + 1
HASTAQUE CONT = N
ESCRIBIR ‘Recaudación de la Cia: $ ‘, TOTIMP;
ESCRIBIR ‘Total de Descuentos: $ ‘, TOTDESC
FINPROCESO

* Seguimiento -

Datos: 2, ‘ Juan Perez’, 3100, 350, ‘Misiones’, 800


‘ José Diaz’, 300, 500, ‘Mendoza’, 956

NYA TACUM PRECIO KMS DEST TOTAL DES IMP TOTDES TOTIMP N CONT
C
‘Juan 3100 350 800 ‘Misiones’ 3900 70 280 0 0 2 0
Perez

70 280 1

‘José 300 500 956 ‘Mendoza’ 1256 25 475 95 755 2


Diaz’

Las acciones de escritura son las mismas que en el ejemplo anterior.

Vemos en este ejemplo , que conocemos de antemano la cantidad de clientes a procesar a través de la
variable N.

ESTRUCTURAS ANIDADAS

En el diseño de algoritmos, es común la utilización de estructuras lógicas de control


complejas, las que se basan en la combinación de estructuras básicas.
Así vimos, en las estructuras de decisión que era posible formar condicionales
anidados, es decir incluir dentro de una estructura de decisión otra estructura de
decisión, siempre que el condicional interno esté totalmente comprendido por el
condicional externo.
De la misma manera pueden presentarse ciclos anidados, es decir, estructuras de
iteración incluídas dentro de otras siguiendo las mismas reglas: la estructura interna
debe está totalmente incluída en la estructura externa.

Veremos algunos ejemplos de ambos casos:

Pág. Nro. 48
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
a)
Omar
V F
Práctica: An: Matilde
Y Dalzotto

A C

El diagrama representa una selección en base a una condición Y. Cuando ésta es


verdadera se ejecutan las acciones A, B y luego finaliza la estructura.cuando no se
cumple la condición se ejecuta la acción C, y luego finaliza la estructura.

Pág. Nro. 49
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí
b) Prof. Teoría: An. Ma. Carolina
Omar
V F
Práctica: An: Matilde
Y Dalzotto

A V F
Q

M
B R

El diagrama plantea una selección en base a la condición Y. Cuando Y es verdadera, se


presenta el caso dado en a). Cuando Y es falsa, se ingresa en una estructurade
selección, que depende de la condición Q. Se evalúa Q, y si Q es verdadera se ejecuta la
acción M, se va al fin de la estructura de selección de Q, se ejecuta W y se finaliza la
estructura de selección de Y. Si Q es falsa, se ejecutan las acciones R y S, se va al fin de
la estructura que depende de Q, se ejecuta W, y se finaliza la estructura de selección de
Y.

c) MIENTRAS P HACER Este ejemplo presenta una iteración con


SI Q la condición logica P. El bloque de
ENTONCES X acción que se debe ejecutar cuando P es
SINO Y verdadero, esta formado por una
FINSI estructura de selección regido por la
FINMIENTRAS condición Q.

d)

V P F

R F
Q

S V
Z
T

El diagrama plantea una selección que depende de la condición logica P. Si P es


verdadera, se ejecuta una secuencia de acciones: R, S, T. Si P es falsa,se ejecuta una
iteración regida por Q

Pág. Nro. 50
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista de Sistemas 1er año SubSede Chajarí Prof. Teoría: An. Ma. Carolina
e)
Omar
Práctica: An: Matilde Dalzotto
F
Z

Y A

El diagrama plantea una iteración que depende de la condición logica Z. Las acciónes
que se deben ejecutar para Z verdadera , plantean una selección que depende de X, a su
vez si esta es verdadera, plantea una selección regida por Y. Si X es falsa se ejecuta una
acción A.

Ejercicios propuestos: Realizar el pseudocódigo de los diagramas planteados.

INDENTACIÓN:

En el pseudocódigo, hemos utilizado una presentación de la escritura, en forma


escalonada o indentada . Esto en si, no es obligatorio, pero ayuda notablemente a leer un
algoritmo y a determinar a simple vista que grupo de acciones se encierra dentro de otras.

Pág. Nro. 51
Apuntes: Facultad de Ciencia y Tecnología - Fundamentos de Programación –
(Creados por: FCYT – Equipo docente: Sede Oro Verde – Paraná)
Analista
Ej. de Sistemas
pseudocódigo 1er año SubSede Chajarí
indentado Prof.sin
Teoría: An. Ma. Carolina
indentar
Omar
Práctica: An: Matilde Dalzotto
acción A; Acción A;
acción B Acción B
Si P Si P
entonces entonces
acción C acción C
Repetir Repetir
acción D; acción D;
acción E acción E
Hastaque Q Hastaque Q
sino sino
acción F acción F
finsi finsi
acción G acción G

Pág. Nro. 52

También podría gustarte