Sie sind auf Seite 1von 60

Unidad 1: Algoritmos

Algoritmos y Resolucin de Problemas


1
Unidad 1: Algoritmos
1.1 Introduccin
Constantemente el hombre se enfrenta a innumerables problemas que debe resolver. Muchas
soluciones las logra apelando a lo aprendido con su experiencia que con el correr del tiempo ha
logrado internalizar. Para otras necesita el apoyo de herramientas aportadas por de diversas ramas
de la tecnologa, siendo la computadora una de las de mayor
Resulta complicado expresar instrucciones en el lenguaje binario de la mquina, mediante ceros y
unos, por lo que fue necesario generar un canal de comunicacin hombre-mquina, que permitiera
a sta interpretar nuestras solicitudes y a nosotros comprender sus resultados y mensajes. de esta
manera los lenguajes de programacin.
La computadora no puede resolver nada sin que el hombre determine la forma, y recursos
necesarios para hacerlo. Es claro, que dar respuesta a un problema exige conocimiento, reflexin,
razonamiento lgico y alguna dosis de ingenio y sagacidad. La experiencia indica que aprender un
lenguaje de programacin no resulta una tarea complicada, lo complejo es encontrar el camino
adecuado para la resolucin de la problemtica planteada.
Algunas personas aplican, generalmente de forma inconsciente, una serie de mtodos y
mecanismos que suelen resultar adecuados para abordar problemas. Estas operaciones mentales
se conocen como procesos heursticos. Una heurstica es una regla prctica basada en la
experiencia, sobre la cual no existe garanta de llegar a una solucin.
Una persona puede aprender estrategias que aumenten su capacidad para resolver problemas, que
de otra manera le hubieran resultado difciles. Una estrategia es un mtodo general, una gua que
puede aplicarse para hallar la resolucin de muchas clases de problemas. Existen diferentes
estrategias para enfrentar la resolucin de un problema.
Este captulo comienza con algunas estrategias para resolver problemas utilizando computadoras,
para lo cual se emplea un seudo-lenguaje, que no es interpretado por ellas. Este seudo-lenguaje
llamado seudocdigo, tiene la caracterstica de tener una sintaxis sencilla que resulta familiar al
hombre. Esto tiene dos ventajas visibles, por un lado permite a quien intenta resolver un problema
centrar su atencin en su resolucin sin preocuparse por reglas rigurosas, y por otro la posibilidad de
codificar los algoritmos construidos en cualquier lenguaje de programacin.
Se analizan adems los tipos de datos y estructuras de control que permitirn expresar las rdenes
adecuadas para realizar luego dicha codificacin.

1.2 Qu es un Problema?
Un problema es un desafo intelectual, ya que para llegar a una solucin se deben desarrollar
actitudes, hbitos y formas de pensamiento; se requiere aplicar y vincular conocimientos previos,
probablemente de reas diferentes, buscando nuevas relaciones.
Es importante definir qu se entiende por problema, considerando que esta palabra es usada en
contextos diferentes y con matices diversos.
Etimolgicamente, la palabra problema deriva del griego proballein y significa algo lanzado hacia
delante. Un problema es un asunto o un conjunto de cuestiones que se plantean para ser resueltas.
El diccionario de la Real Academia Espaola da cinco acepciones diferentes para la palabra
problema, pero la ms adecuada para lo que se tratar en este documento es: Planteamiento de
una situacin cuya respuesta desconocida debe obtenerse a travs de mtodos cientficos.
Otras definiciones son:
"Tener un problema significa buscar, conscientemente, alguna accin apropiada para alcanzar o
lograr el propsito claramente concebido; pero no inmediatamente alcanzable. Resolver un problema
significa encontrar tal accin." (Polya, 1965)
"...es una situacin en la cual un individuo acta con el propsito de alcanzar una meta utilizando
para ello una estrategia particular " (Chi y Glaser, 1983)
En este ltimo caso, lograr una meta significa alcanzar una solucin. Resolver el problema significa
realizar actividades que operen sobre un estado inicial para lograr la solucin.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
2
En general se habla de un problema, cuando se plantea una situacin cuya solucin representa un
obstculo, no es evidente.
En los problemas se pueden distinguir cuatro componentes (Mayer, 1983):
Meta: lo que se desea lograr.
Datos: informacin disponible para comenzar a analizar la situacin problemtica. Esto es, el
conjunto de elementos que representa el conocimiento relacionado con el problema.
Restricciones: factores que limitan la va para llegar a la solucin.
Mtodos: se refieren a los procedimientos utilizados para resolver el problema.









Existen problemas de distinta naturaleza: matemticos, qumicos, filosficos, etc. La resolucin de
un problema requiere aplicar y vincular conocimientos previos, buscando nuevas relaciones.
En este documento, se analizarn problemas cuyas soluciones se deben obtener utilizando una
serie de rdenes que se introducen a la computadora para que sta las ejecute.

1.3 Pautas a tener en cuenta en la resolucin de Problemas
Buscar la solucin de problemas es una tarea difcil de sistematizar, puede pensarse como un
proceso de bsqueda en un espacio de soluciones potenciales, y para ello se pueden tener en
cuenta ciertas pautas para facilitarla.
As, George Polya, considerado el padre de las Estrategias para la Solucin de Problemas fue un
matemtico hngaro cuyos aportes incluyen documentos y libros que promueven un acercamiento
al conocimiento y desarrollo de estrategias en la solucin de problemas. Su famoso libro Cmo
Plantear y Resolver Problemas, introduce su mtodo de cuatro pasos y estrategias especficas tiles
en la solucin de problemas.
Los cuatro pasos propuestos por Polya son los siguientes:
1. Entender el problema.
2. Configurar un plan.
3. Ejecutar el plan.
4. Mirar hacia atrs (verificar procedimientos y comprobar resultados)
En base a esta propuesta se pueden considerar las siguientes fases para resolver problemas:

Fase Objetivo
Interpretacin del problema
Ayudan a la comprensin del
problema
Representacin del problema
Planificacin Permiten explorar soluciones y
seleccionar la que se considere ms
adecuada
Ejecucin del plan
Verificacin de pasos y
Comprobacin de resultados
Permite validar la solucin obtenida

Figura 1.1 Componentes de un Problema
Datos + Restri -
cciones








































Meta








































Mtodos

para alcanzar










































utilizando






































Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
3
Estas fases no necesariamente se siguen en forma estrictamente secuencial. Muchas veces, se
elige una estrategia, que al aplicarla no resulta adecuada o por lo menos no es suficiente para
alcanzar la solucin. Entonces, en este proceso de resolucin, conviene retroceder y volver a
empezar.

A continuacin se describen brevemente estas fases.
1.3.1 Interpretacin del problema
El primer inconveniente que se presenta cuando se debe resolver un problema es su interpretacin.
El formato, que en general se utiliza para enunciar un problema son textos narrativos y expositivos.
La comprensin de estos textos requiere establecer una serie de relaciones, para identificar la meta,
es decir lo que se desea obtener, con qu datos se cuenta, y cmo deben ser organizados dichos
datos para proponer una alternativa de solucin.
Salvo algunas excepciones, antes de ingresar a la universidad se acostumbra resolver problemas
clsicos, cuyos enunciados son textos breves en los que no faltan ni sobran datos; cuya secuencia
lgica responde claramente a la sucesin de operaciones que deben realizarse o con pistas u
orientaciones, que facilitan la tarea para resolverlos. Sin embargo, esto no es lo que ocurre en la
realidad, en la que los problemas son realmente obstculos, desafos que implican movilizar ideas
que permiten encontrar un camino para resolverlos, en general su solucin no es obvia.
Para resolver problemas se requiere la adquisicin de ciertas capacidades, tales como organizar la
informacin, formular preguntas, identificar los datos y considerar si ellos son suficientes o es
necesario obtener otros a partir de clculos intermedios, analizar la posibilidad de distintas
alternativas de solucin y en este caso proponer la que se considere ptima.

En esta etapa, algunas preguntas bsicas que debiera responder quien intenta resolver un
problema:
Qu se debe obtener?
Con que datos se cuenta?
Existen restricciones?


1.3.2 Representacin del problema
Una vez interpretado el problema, en muchas ocasiones es conveniente representarlo. El proceso
de anlisis del mundo real que permite identificar los aspectos esenciales de un problema y sus
relaciones, se denomina abstraccin. El resultado de este proceso se expresa a travs de un
modelo que contempla los requerimientos del problema.
Algunos mtodos que facilitan la representacin de un problema, , son las descripciones grficas y
las representaciones simblicas, ya que permiten visualizar la informacin relevante contenida en su
enunciado.

Descripciones Grficas:
Para la resolucin de problemas lineales, que implican por ejemplo comparacin de los valores de
una variable, se puede utilizar una recta, colocando los elementos en el orden que les corresponde.
Para el caso de problemas en los que estn relacionadas ms de una variable, suele ser adecuado
el uso de representaciones tabulares.
Tambin los diagramas de Venn pueden ser de utilidad en problemas en los que se deban
relacionar conjuntos o para resolver situaciones que impliquen razonamientos lgicos , los
Diagramas de Flujo para representar situaciones que pueden depender de condiciones o que sean
cambiantes en el tiempo, otra forma de representacin son los diagramas de Nassi Schneiderman
(N-S).
Los Diagramas de Flujo, tambin conocido como ordinogramas o flujogramas, utilizan una serie de
smbolos, que se muestran en la siguiente figura.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
4
Smbolo Aplicacin

Lectura de Datos y Escritura de resultados

Terminador: Comienzo o fin de una tarea


Procesos

Decisin


Por su parte, la representacin que usan los diagramas de Nassi-Schneiderman (N-S), tambin
conocido como diagrama de Chapin o estructogramas, es una tcnica de especificacin de
algoritmos que combina la descripcin textual, propia del pseudocdigo, con la representacin
grfica del diagrama de flujo.
Los smbolos utilizados son:
















Las representaciones simblicas son tiles para el caso de problemas matemticos. Consiste en
encontrar la ecuacin que represente una determinada situacin, cuya solucin contribuye a
alcanzar el objetivo propuesto.

Los siguientes son ejemplos de problemas muy sencillos, que pueden ser fcilmente representados
utilizando algunas de las herramientas enunciadas.
Ejemplo 1: En 1959 la Argentina, junto con otros once pases, firm el Tratado Antrtico, que
garantiza la ocupacin pacfica de la Antrtida y su no militarizacin, prohbe las explosi ones
nucleares y el almacenamiento de desechos radiactivos.
Con este espritu, la base Argentina Vicecomodoro Marambio, fundada el 29 de octubre de 1969,
trabaja contra la contaminacin ambiental en todos sus aspectos, colabora con la actividad de los
cientficos y controla el centro Meteorolgico Antrtico. Esta base se encuentra en el punto ms alto
de la isla Marambio, a 200 m sobre el nivel del mar. En invierno cuando la temperatura es menor
al promedio de -18C, el mar se congela hasta una profundidad de 4m.
Figura 1.2 Smbolos utilizados en Diagramas de Flujo

SI - FinSi Segn - FinSegun
Secuencia
Para-FinPara
Mientras- FinMientras
Hacer - Mientras
Figura 1.3 Smbolos utilizados en Diagramas de Chapin (N-S)
entonces sino
condicin
variable
condicin
condicin
v1 v2
...
vn
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
5
La temperatura ms clida registrada hasta 1993 en la Antrtida fue de 14 C en la base Argentina
Esperanza, y la ms fra fue de 89 C bajo cero en la estacin rusa Vostok.
Se est elaborando un informe en el cual se debe indicar la distancia entre la base Marambio y el
mar no congelado en invierno y la diferencia entre la temperatura promedio y las temperaturas
extremas
1

Para resolver este problema, respondamos las tres preguntas bsicas que nos permiten
interpretarlo:
- Qu se debe obtener?:
1. distancia entre la base Marambio y el mar no congelado en invierno y
2. diferencia entre la temperatura promedio y las temperaturas extremas
- Con que datos se cuenta?
Para calcular la distancia entre la base Marambio y el mar no congelado en invierno:
- Ubicacin de Base Marambio: 200 m sobre el nivel del mar.
- El mar se congela hasta una profundidad de 4m.
Para calcular la diferencia entre la temperatura promedio y las temperaturas extremas:
- Temperatura ms clida
- Temperatura ms fra
- Temperatura promedio
- Existen restricciones? No
Como ambos tems consisten en la comparacin de valores de una variable, se puede utilizar una
representacin lineal para cada una de las variables consideradas.
Variable distancia Variable temperatura












Ejemplo 2: En el marco del Proyecto de Prevencin de Enfermedades Cardiovasculares, un
investigador mdico desea medir la eficacia de un tratamiento para dejar de fumar. El tratamiento
tuvo una duracin de 6 meses, y al finalizar el mismo se obtuvo una muestra de 100 pacientes que
lo realizaron en distintas unidades hospitalarias de la provincia. La muestra ha sido organizada,
teniendo en cuenta la edad de los pacientes, en tres categoras:
Categora 1: pacientes menores de 40 aos.
Categora 2: entre 41 y 55 aos, con gran riesgo de sufrir insuficiencias cardacas.
Categora 3: pacientes mayores de 55 aos.
De los 60 encuestados correspondientes a la segunda categora, 20 no pudieron dejar de fumar. En
cambio de los 30 pacientes encuestados de la categora 1 slo el 40% sigue fumando.
Si en total dejaron de fumar 63 personas, de las cuales 5 tienen ms de 55 aos, el investigador
necesita informar, el porcentaje de pacientes para los que el tratamiento tuvo xito en cada una de
las categoras de anlisis.

1
Extrado de Matemtica. Santillana EGB 8. pg 25
Nivel del mar

Base Marambio

100m

200m

-4m

0 C
Temperatura
Promedio

50 C


14 C

-18 C

-50 C

-89 C



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
6
Los cuestionamientos seran para este caso:
- Qu se debe obtener? Porcentaje de pacientes para los que el tratamiento tuvo xito en
cada una de las categoras de anlisis
- Con que datos se cuenta?
Una representacin adecuada de de los datos para este tipo de problema, en el que se manejan dos
variables, edad y resultado del tratamiento (xito, fracaso), es una tabla de doble entrada, como la
siguiente:
Resultados Tratam.
Edad
xito Fracaso Total
Menores de 40 ? 12 30
41-55 ? 20 60
Mayores de 55 5 ? ?
Total 63 ? 100
Los resultados se pueden obtener ahora en forma inmediata.

Ejemplo 3:
En los ltimos aos, el rendimiento escolar de los alumnos del nivel medio de la provincia de San
Juan ha sido bajo, y en general los docentes lo atribuyen a la falta de contencin en sus hogares.
Para contrastar esta hiptesis, el Ministerio de Educacin ha solicitado a su Departamento de
Investigacin Educativa, un estudio para determinar si la falta de rendimiento est relacionada con
problemas de los alumnos en el mbito familiar.
Se tom una muestra de 2000 alumnos, en la que estaban representados todos los colegios de la
provincia. Se consensu en considerar que un alumno tiene problemas de rendimiento, si no
alcanz los objetivos en ms de 3 materias de la currcula en el ltimo ao.
Los alumnos fueron seleccionados en forma aleatoria en los distintos establecimientos, siendo las
fuentes de informacin el boletn de calificaciones, y la ficha de opinin del asesor pedaggico del
colegio, respecto de la situacin familiar de los alumnos seleccionados. De la muestra obtenida,
1200 alumnos tienen problemas en su rendimiento escolar pero 400 de ellos no tienen problemas
familiares, y adems se ha contabilizado un total de 900 alumnos con problemas en sus hogares
El ministro debe confeccionar un informe para ser enviado a los directivos y tomar en forma conjunta
las acciones pertinentes, que contenga:
- Porcentaje de alumnos encuestados que no tienen ninguno de los problemas analizados.
- Porcentaje de alumnos que tienen problemas de rendimiento y familiares
- Porcentaje de alumnos que sin tener problemas en sus hogares presentan dificultades en sus
estudios
Se puede representar el total de los alumnos encuestados por medio del conjunto T, con el conjunto
R a los alumnos con problemas de rendimiento y con F al conjunto de los alumnos con problemas
familiares. Teniendo en cuenta que los conjuntos de los alumnos con problemas no son disjuntos, el
uso de diagramas de Venn puede ayudar a representar la situacin problemtica y a los asesores
del ministro a proporcionar los valores solicitados.









F

800

400

100

700

R

T

Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
7
Ejemplo 4:
La profesora de fsica de un curso de EGB, quiere realizar una experiencia para lo cual ha solicitado
a sus alumnos recortar en una cartulina un tringulo rectngulo, cuyos medidas sean tres nmeros
enteros consecutivos. Cunto debe medir cada lado del tringulo?
Para resolver esta situacin problemtica los alumnos debern encontrar la ecuacin que
represente la situacin solicitada por la profesora, esto es, debern obtener una representacin
simblica.
Si se nombra con x, y, z a cada uno de los lados:






Y teniendo en cuenta el teorema de Pitgoras, se obtiene la expresin que representa la situacin
planteada:

Resolviendo esta ecuacin se encontrar un valor para el lado x, a partir del cual se encontrarn los
otros dos lados, teniendo en cuenta las condiciones iniciales del problema.

1.3.3 Planificacin
En esta fase se debe seleccionar la estrategia ms adecuada que permita a partir de los datos,
encontrar la respuesta al problema.
Las estrategias son procedimientos que guan a quien debe resolver el problema, en la eleccin de
las tcnicas, conceptos y procesos que debe poner en accin para obtener una solucin.
En esta etapa el alumno debe plantear hiptesis, determinar si los datos son suficientes o si necesita
calcular otros para resolver el problema.
Las estrategias para la resolucin de problemas incluyen, entre otros, mtodos heursticos y
algoritmos.
Los mtodos heursticos son estrategias generales de resolucin y reglas de decisin, utilizadas
para solucionar problemas basados en la experiencia previa, con problemas similares. Mediante un
proceso heurstico se puede llegar a la solucin ptima, pero tambin puede conducir a una
solucin no muy buena e incluso a ninguna solucin.
Algunos autores indican
2
que los procedimientos heursticos, son acciones que comportan un cierto
grado de variabilidad y su ejecucin no garantiza la obtencin de un resultado ptimo.
Los mtodos heursticos, que se basan en un conocimiento intuitivo sobre un determinado
problema, pueden variar en el grado de generalidad. Algunos son muy generales y se pueden
aplicar a gran cantidad de dominios, otros pueden ser ms especficos y se limitan a un rea
particular de conocimiento.
Los algoritmos, a diferencia de los procedimientos heursticos, consisten de un conjunto de pasos,
cuya ejecucin correcta garantiza una solucin a un problema.
Es importante, destacar que el diseo de algoritmos no solo requiere conocer metodologas de
representacin, sino tambin desarrollar el pensamiento lgico para generar soluciones
La planificacin para resolver el problema: Determinar si un nmero es par consistira en aplicar
procesos que permitan realizar la evaluacin correspondiente. Una representacin sencilla de los
pasos que conforman un algoritmo, son los diagramas de Chapin o N-S que por su combinacin de
texto e imagen son fciles de interpretar. Estos diagramas constituyen una herramienta que favorece
la programacin estructurada.


2
Enseando a Aprender. Lisette Poggioli.http://www.fpolar.org.ve/poggioli/poggio05.htm
z
2
= x
2
+ y
2
(x+2)
2
= (x)
2
+(x+1)
2
x
2
+4.x+ 4 = x
2
+ x
2
+ 2.x+1 x
2
- 2.x 3= 0

Siendo y= x+1
z= x+2

z

x

y

Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
8
El diagrama siguiente representa la solucin del problema utilizando un algoritmo posible de
resolucin:
Inicio
entero:num
Leer num
(num resto 2)==0
SI NO
Escribir Nmero par Escribir Numero impar
Fin
Si se retoma el ejemplo 4 enunciado, la planificacin consistira en aplicar el algoritmo que permite
resolver una ecuacin de segundo grado, que como se sabe, si tiene solucin, no es nica. Esto
lleva a tener que decidir si ambas son soluciones de la situacin planteada o debe seleccionarse la
que corresponda.
El siguiente es un esquema grfico de las acciones que se deben realizar para resolver la ecuacin
de segundo grado de la forma ax
2
+ b.x +c= 0 y determinar la longitud de los lados del tringulo
rectngulo.

























1.3.4 Ejecucin del plan
En esta fase se aplica la estrategia planificada, analizando si los distintos pasos intermedios que se
realizan conducen realmente al objetivo propuesto, tratando de determinar incluso si el camino
seleccionado es el ms adecuado.
Para el caso del ejemplo que se viene considerando, el valor obtenido para el discriminante es 16:
D = (-2)
2
- 4*1*(-3)= 16 >0, esto implica que la ecuacin tiene dos races distintas 3 y 1.
Dos races reales distintas



Seleccionar raz solucin



Comienzo

Calcular discriminante
D = b
2
- 4*a*c

V

D > 0

Leer coefic.a,b,c


Sin solucin real





Races coincidentes


Calcular lados del tringulo


Fin



F



V



D< 0


F



Mostrar resultado:
Problema sin solucin


Mostrar resultado de ecuacin

Mostrar valores de los lados

Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
9
De esta dos races, y atendiendo al contexto del problema, se selecciona el nmero positivo,
obtenindose como valores de los lados del tringulo 3 , 4 y 5 cm respectivamente.

1.3.5 Verificacin de pasos y comprobacin de resultados
En general esta fase conduce a una mejor comprensin del problema o a encontrar soluciones
alternativas.
Para el caso del ejemplo, se verifica si se cumplen las condiciones iniciales del problema esto es,
los lados deben ser consecutivos y corresponder a un tringulo rectngulo. Es evidente que son
consecutivos, para determinar si corresponden a un tringulo rectngulo deben verificar el teorema
de Pitgoras, 5
2
=3
2
+

4
2
.
Como se observa, las fases I y II ayudan a la comprensin del problema, las fases III y IV a explorar
soluciones y aplicar la que se considere ms adecuada, finalmente la fase V permite valorar la
solucin obtenida.

1.4 Modelizacin de problemas del mundo real.
Hasta el momento se han analizado problemas sencillos, que se pudieron resolver sin dificultad
utilizando estrategias para interpretar las problemticas expresadas en enunciados precisos.
Hay que tener en cuenta que, resolver un problema requiere de tiempo y esfuerzo. El proceso de
resolucin puede resultar una experiencia placentera y motivadora, ya que tiene algo de
descubrimiento, aumenta el conocimiento, aporta nuevos puntos de vista, y mejora las capacidades
bsicas de un individuo para desenvolverse no slo en el mbito acadmico, sino tambin en la vida
cotidiana.
Ahora bien, los problemas que se analizarn en esta asignatura sern aquellos cuya solucin pueda
ser representada a travs de algoritmos computarizables, para lo cual los conceptos analizados se
adecuarn a esta situacin.

1.4.1 Etapas para la resolucin de problemas usando como herramienta la computadora.
Un programador es una persona que resuelve problemas a usuarios, utilizando como herramienta
una computadora. Para llegar a ser un programador eficaz se necesita aprender a resolverlos de un
modo riguroso y sistemtico. De las estrategias descriptas, mtodos heursticos y algoritmos, la que
se adecua es la de algoritmos.
Basados en el aporte de Polya, se puede decir que la actividad de resolucin de problemas
utilizando una computadora es un proceso que involucra las siguientes etapas:

Etapas resolucin de
problemas utilizando
computadoras
Fases resolucin de
problemas
Objetivo
Anlisis del problema
Interpretacin del problema
Ayudan a la comprensin del
problema
Representacin del problema
Diseo del Algoritmo
Planificacin Permiten explorar soluciones y
seleccionar la que se considere
ms adecuada
Codificacin
Compilacin y ejecucin

Ejecucin del plan
Validacin
Verificacin de pasos y
comprobacin de resultados
Permite validar la solucin
obtenida
Documentacin
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
10
Brevemente describiremos en que consiste cada una de ellas, si bien la propuesta de este
documento es centrarse en las dos primeras etapas que conforman el objetivo de este curso:
1.4.1.1 Anlisis del problema
La primera condicin al momento de resolver un problema, es contar con un enunciado preciso y
claro, que no contenga ningn tipo de ambigedades. Esto es fundamental ya que la correcta
resolucin de un problema viene determinada en gran medida por el planteamiento inicial, no se
puede abordar una solucin mientras no se tenga claro a donde se quiere llegar. El programador,
no comenzar a intentar solucin alguna hasta que no tenga claro las especificaciones y
requerimientos del usuario. Un planteamiento correcto evitar perder tiempo en la implementacin
de algoritmos incorrectos.
1.4.1.2 Diseo del Algoritmo
En la etapa de anlisis se determina qu hacer, en la etapa de diseo se debe determinar cmo se
debe hacer.
El procedimiento elegido para la solucin se debe expresar como una secuencia ordenada de
acciones, que el procesador deber ejecutar para obtener los resultados pretendidos. Esta
secuencia de acciones expresadas en un lenguaje simblico se conoce con el nombre de
Algoritmo.
Inicialmente, el algoritmo se expresa en lenguaje natural, el que se usa habitualmente para
comunicarse con otras personas, este seudolenguaje recibe el nombre de Seudocdigo.
1.4.1.3 Codificacin
Un algoritmo es una especificacin simblica que debe traducirse a un lenguaje de programacin
para que pueda ser interpretado por la computadora, obtenindose de esta manera lo que se conoce
como programa fuente. El proceso de de traduccin del algoritmo a un lenguaje de programacin
se conoce como codificacin.
1.4.1.4 Compilacin y ejecucin
Utilizando un editor del lenguaje seleccionado, se podr depurar el programa fuente de los errores
de sintaxis. Si el cdigo contiene errores debidos a que el programador no respet la sintaxis del
lenguaje, es decir errores de compilacin, el compilador los detecta y especifica por medio de
mensajes.
El programa ejecutable se crear una vez solucionados estos errores.
1.4.1.5. Validacin
La validacin permite comprobar que un programa cumple con sus especificaciones, es decir
resuelve correctamente el problema para el que fue diseado.
Los mtodos de validacin se pueden clasificar en dos grandes grupos:
Validacin mediante pruebas
Validacin mediante verificacin o Validacin formal
La Validacin mediante pruebas consiste en ejecutar el programa con lotes de prueba para
comprobar si los resultados obtenidos coinciden con los esperados.
Los resultados anmalos debern ser analizados para detectar su causa, los cuales se eliminan en
la etapa de depuracin del programa. El procedimiento de prueba-depuracin se repite hasta que no
se detectan errores y se tenga confianza que el programa fue lo suficientemente probado. El
problema de este tipo de verificacin es determinar si el juego de pruebas es lo suficientemente
confiable. Lo ideal sera contar con el caso de pruebas perfecto que permita asegurar que el
programa se ejecutar correctamente para cualquier entrada posible. Algunos autores sugieren
definir juegos de prueba que aseguren, que la ejecucin del programa pase por todos los caminos
posibles (juegos de prueba mnimamente perfectos), y que se ejecuten todas las instrucciones
(juegos de prueba mnimamente buenos).
La Validacin por verificacin consiste en demostrar formalmente que el programa es correcto. Se
realiza un anlisis sin ejecutar el programa.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
11
Una vez que el programa es depurado de los errores de sintaxis, puede ocurrir que al ejecutarse no
realice lo que se pretenda, que no se llegue al objetivo propuesto. El programa puede tener errores
de lgica, stos pueden resultar difciles de detectar, se producen cuando el algoritmo est mal
implementado y deben ser corregidos por el programador. Se debe recordar que la computadora
realiza lo que se le indica, aunque estas acciones estn incorrectas.
En general para la verificacin se utilizan datos vlidos representativos del problema. Si bien es
imposible realizar una verificacin exhaustiva, se debe tratar de incluir algunos casos excepcionales
vlidos y datos no vlidos, para los que el algoritmo debe dar una respuesta adecuada.
La facilidad de verificacin y depuracin de errores de funcionamiento del programa, conducen a
mejorar su calidad, este es uno de los objetivos de la ingeniera de Software.
En este curso comenzaremos en las primeras unidades realizando validacin por prueba, e
introduciendo conceptos de la Validacin mediante verificacin, los cuales sern formalizados en la
Unidad IV.
1.4.1.6 Documentacin
Consiste en agregar al programa comentarios que faciliten su comprensin, se consiguen de esta
manera programas ms fciles de interpretar y mantener.
Para el caso de programas de una envergadura importante, es conveniente colocar un comentario
que especifique en forma general el objetivo del programa, si est dividido en partes indicar la
funcin de cada una, el autor, fecha de realizacin y toda informacin que pueda resultar de inters.
Estos comentarios sern de utilidad para un programador que debe utilizar un programa despus de
un cierto perodo de tiempo o si el mismo debe ser utilizado por otros programadores.

En este curso nos centraremos en las dos primeras etapas.
1.5 Anlisis del problema
Dada la sencillez de los problemas a resolver en este curso, la etapa correspondiente al
anlisis del problema, consistir solamente de la interpretacin del enunciado a resolver. A lo
largo de la carrera, en diferentes asignaturas, se estudiarn tcnicas necesarias para hacer
frente a problemas de gran envergadura
Como se ha dicho en numerosas expresiones en este texto, en primer lugar se debe comprender el
problema planteado. Comprender un problema implica identificar claramente los resultados o
salida, y los datos con que se cuenta para resolverlo.
En un problema se pueden distinguir tres componentes: los datos (entrada), el o los resultados
(salida), y un conjunto de reglas o restricciones que vinculan a los datos con los resultados a
obtener. El anlisis de un problema comienza identificando estas componentes.
Un problema se plantea por lo general mediante un enunciado, el cual se define como una
secuencia finita de palabras que conforman frases, que pueden estar constituida por una o varias
oraciones.
En general, interpretar los enunciados de los problemas para reconocer sus componentes, es el
mayor obstculo con que se enfrenta el programador al momento de encontrar el algoritmo de
resolucin de un problema.
Una estrategia para interpretar enunciados de problemas, podra ser
3
:
- Leer con detenimiento TODO el enunciado.
- Comprender claramente el significado de cada palabra y cada frase.
- Poner especial atencin a los signos de puntuacin.
- Identificar la salida o resultados del problema.
- Identificar datos explcitos (pueden ser relevantes o irrelevantes).
- Identificar datos implcitos (pueden ser relevantes o irrelevantes) y hacerlos explcitos.
- Detectar imprecisiones o ambigedades antes de avanzar con la solucin.

3
Adecuacin de la estrategia propuesta por Sonia V. Rueda Alejandro J. Garca, en Programa de Ingreso 2003. Anlisis
y Comprensin de Problemas.Fundamentos, Problemas Resueltos y Problemas Propuestos. UNS. Noviembre de 2002

Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
12
Veamos en que consiste cada una de estas etapas. Para identificar las componentes se recomienda
en un principio la lectura del enunciado del problema como un todo, sin detenerse demasiado en
los detalles. Una vez que se tiene una idea global del problema, se realiza una segunda lectura
determinando las partes principales del mismo, para evaluar qu se pide y con qu datos se cuenta.
El problema se debe descomponer y luego recomponer, as lo manifiesta George Polya:
4

Examina usted un objeto que despierta su inters o mueve su curiosidad: una casa que tiene
intencin de alquilar, un telegrama importante pero enigmtico, un objeto cuyo uso y origen le
intrigan o un problema que quiere resolver. Considera el objeto como un todo, pero esa impresin
quiz no es muy precisa. Un detalle le llama la atencin. Despus se concentra en otro detalle, y
ms tarde, sobre otro nuevamente. Diversas combinaciones de detalles se pueden presentar y al
cabo de un momento, mira de nuevo el objeto como un todo, pero lo ve de una manera diferente.
Usted ha descompuesto el todo en sus diversas partes y ha recompuesto dichas partes en un todo
ms o menos diferente .De esto se deduce que el enunciado debe leerse por lo menos dos veces.
La primera lectura permite acercarnos al problema y conocer el contexto donde se plantea: lugar,
actores, acciones. Ejemplo: Una fbrica de electrodomsticos, un supermercado posee informacin,
una empresa de colectivos de larga distancia, entre otros.
Una segunda lectura permite detectar qu datos son relevantes para procesar. La importancia de
los datos est en funcin de las especificaciones del enunciado.
Es necesario poner especial atencin a los signos de puntuacin, ya que de ellos depende el
significado de cada frase. Y sobre todo, destacar que un cambio sintctico leve, puede provocar una
variacin semntica fundamental. Por ejemplo la mitad de: 20 ms 4 respecto a: la mitad de 20, ms
4 o Esteban vive con Matas y estudia Programacin respecto a: Esteban vive con Matas, que
estudia Programacin.
Se ha hablado de datos relevantes y datos explcitos, Qu significan estos conceptos?
A veces, se tiene la sensacin de que el enunciado no brinda suficientes datos. La clave, est en
obtener informacin til a partir de ciertos datos que pueden estar ocultos. Otras veces, los
problemas proveen muchos datos y es importante distinguir los datos relevantes de aquellos que no
lo son.
Los datos pueden estar expresados en forma explcita o implcita, y a su vez ser relevantes o no
para un contexto determinado.
Un dato est expresado en forma explcita, cuando es claramente identificable en el contexto que se
usa. En cambio est implcito cuando es parte del problema aunque no se lo exprese directamente.
Algunos datos no estn explcitos y deben ser calculados a partir de otros, es decir se deben reali zar
inferencias a partir de datos detectados y transformarlos en explcitos.
Si ahora se quiere calcular la cantidad de metros de piso cermico grantico de alto trnsito, que se
necesita para una habitacin cuadrada de un departamento en la calle 25 de mayo 150 (O).
La habitacin tiene 1 puerta de 85 cm de ancho, y una ventana en la pared opuesta de 1,25 metros
de ancho. El ancho de la habitacin es de 3 metros.
Aqu est explcito que el piso es cermico grantico de alto trnsito, que la habitacin es cuadrada y
tiene 3 m de ancho, implcitamente se indica que la superficie que se necesita cubrir se calcula
como lado por lado.
Por otro lado, un dato es relevante cuando es necesario para obtener la solucin del problema, en
caso contrario se dice que es un dato irrelevante o distractor.
En el ejemplo anterior, el ancho de la habitacin es relevante. Sin embargo, el tipo de piso, la
direccin del departamento, y que la habitacin tiene una puerta son datos irrelevantes.
En casos de problemas sobre especificados, puede haber varios conjuntos de datos relevantes
alternativos, los que llevaran contemplar distintos caminos hacia la solucin.




4
Cmo Plantear y Resolver Problemas. Polya G. pg 73

Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
13
Actividad 1:
Identificar los datos relevantes e irrelevantes en los siguientes enunciados:
a) En las ltimas vacaciones Lucila viaj a Mar del Plata con sus amigas y quiere saber cuntas
fotos sac. El ltimo rollo que compr era de 12 fotos y todava le quedan 5 fotos en la cmara.
Tiene para revelar dos rollos de 36 fotos de 400 asas y 1 rollo de 24 de 100 asas.
b) Tres jvenes matrimonios salieron a bailar. Una de las chicas vesta de rojo, otra de verde, y la
tercera, de azul. Sus maridos vestan tambin de estos mismos colores. Ya estaban las parejas en la
pista cuando Carlos, el chico de rojo casado con la chica de verde, le dijo: Te has dado cuenta
Ana? Ninguno de nosotros tiene pareja vestida de su mismo color. Con esta informacin, se podr
deducir de qu color viste el compaero de baile de la chica de rojo?
c) Tres hombres tienen dos trabajos cada uno. El chofer se burla del msico por su pelo largo. El
msico y el jardinero acostumbran a ir de pesca con Juan. El pintor le compr una botella de ginebra
al asesor. El chofer est de novio con la hermana del pintor. Jorge debe al jardinero 1000 pesos.
Javier venci a Jorge y al pintor jugando al tejo. Uno de ellos es peluquero y no hay dos que tengan
el mismo trabajo. Qu hace cada uno?

Actividad 2:
Identificar las salidas y los datos relevantes en los siguientes enunciados:
a) Cuando Rogelio llega al peaje recuerda que debe informar el peso de la carga que lleva, su
camin vaco pesa 2000 kg. y cargado pesa 4000 kg.
b) De cuantas maneras distintas puede un empleado de una panadera ubicada en una calle
cntrica, con 200 m
2
cubiertos, acomodar 600 alfajores en cajas de 6 y 12 unidades de manera que
todas queden llenas.

El siguiente es un ejemplo de un problema algebraico, en cuya solucin se aplican las distintas
etapas propuestas en la estrategia de anlisis de enunciados.
Ejemplo 5: Un quiosquero tiene su quiosco en la esquina de Alem y Crdoba; todos los das abre a
las 8 y cierra a las 22 horas. El quiosquero sabe con certeza que va a vender 350 alfajores la
prxima semana y como no quiere perder ningn cliente, no puede dejar de comprar menos de esa
cantidad. Antes de ir a comprar los alfajores, se pregunta cunto dinero tiene que gastar si quiere
invertir la menor cantidad posible. En el supermercado, cada bolsa de 8 alfajores cuesta $3. En el
mayorista, cada caja de 60 alfajores cuesta $20.
En una primera lectura, el problema no parece fcil de resolver. Para llegar a una solucin se
pueden usar los pasos propuestos para el anlisis del enunciado; lo que permitir resolverlo muy
fcilmente.
- Leer con detenimiento TODO el enunciado.
- Comprender claramente el significado de cada palabra y cada frase.
- Interpretar cada prrafo considerando particularmente el significado que depende de los signos
de puntuacin.
- Identificar la salida o resultados del problema. Cunto dinero tiene que gastar si quiere invertir
la menor cantidad posible.
- Identificar datos explcitos (pueden ser relevantes o irrelevantes).
Se anotan todos los datos explcitos en el enunciado, y se identifican cules a nuestro criterio son
relevantes para resolver la incgnita y cules no.
o Tiene su quiosco en la esquina de Alem y Crdoba, (irrelevante)
o Abre todos los das (irrelevante)
o Abre a las 8 y cierra a las 22 horas. (irrelevante)
o Necesita comprar 350 alfajores (relevante)
o No puede comprar menos de 350, o perder clientes (relevante)
o En el supermercado, cada bolsa de 8 alfajores cuesta $3. (relevante)
o En el mayorista, cada caja de 60 alfajores cuesta $20. (relevante)
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
14
Identificar datos implcitos y hacerlos explcitos. Hay algunos otros datos que no estn en forma
explcita en el enunciado, pero que se deducen rpidamente de l.
o El quiosquero puede hacer sus compras en el supermercado o en un mayorista.
o Debe comprar tantas bolsas o cajas para cubrir 350.
o Puede comprar ms de 350 si es necesario.
o En el mayorista debe comprar por cajas de 60, as que siempre comprar mltiplos de 60.
Es decir comprar como mnimo 360 alfajores.
o En el supermercado las bolsas son de 8 alfajores. As que slo puede comprar mltiplos
de 8. Como mnimo comprar 352 alfajores.
Detectar imprecisiones o ambigedades, y resolverlas antes de seguir avanzando. Una posible
ambigedad es si tiene que comprar exactamente 350 alfajores. La respuesta es no, ya que tiene
que comprar una cantidad que puede ser mayor.
Hacer inferencias a partir de los datos detectados y hacerlos explcitos: para esto vamos haciendo
preguntas sencillas que guiarn a la solucin de la incgnita.
o Cuntas bolsas de supermercado necesitara comprar para tener al menos 350 alfajores?
La solucin matemtica es: 350 / 8 = 43,75 bolsas, pero como no puede comprar 0,75 de
bolsa, entonces necesita comprar 44 bolsas.
o Cuntas cajas del mayorista necesitara comprar?
Respuesta: ahora la solucin es 350 / 60 = 5.83. Por lo tanto necesitara comprar 6 cajas.
o Cunto gastara en el supermercado?
Respuesta: 44 x $3 = $132
o Cunto gastara en el mayorista?
Respuesta: 6 x $20 = $120
Ahora, se puede dar respuesta a la incgnita planteada. Fcilmente, se ve cual es la solucin: El
quiosquero invierte $120.
Esta es una de las posibles alternativas de solucin, se podra tambin haber determinado el costo
del alfajor por unidad y realizar un anlisis similar al anterior.

Actividad 3:
Buscar la solucin a los siguientes problemas, teniendo en cuenta los pasos planteados en la
estrategia para anlisis de enunciados:
a) Deduzca las edades de las personas que intervienen en el siguiente dilogo.
- Cul es tu edad Pedro?
- Es fcil Juan, dentro de dos aos, tendr el triple que tu edad actual.
- Es cierto, y dentro de cuatro aos, yo tendr la mitad de tu edad actual.
- Cul es la edad de tu mam?
- Tiene 45.
- Cuntos aos sumamos entre los dos?


Sintetizando podemos decir que en la etapa de anlisis, algunas preguntas bsicas que debe
responder quien intenta resolver un problema son:
Qu se debe obtener?
Con que datos se cuenta?
Existen condiciones?
El proceso que permite determinar en forma clara y precisa el objetivo que se desea es decir los
requisitos del cliente (profesor o enunciado del problema) se llama especificacin del problema.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
15
Un problema est definido por un estado inicial o de partida. Resolver un problema requiere
transformar mediante un proceso, los datos de entrada para obtener la salida.



Para representar la solucin del problema se puede utilizar alguna descripcin grfica o
representacin simblica de las vistas, que nos ayude a sistematizar la informacin.
En sntesis, en la etapa de anlisis se determina Qu Hacer, lo que se especifica al responder las
preguntas: Qu salidas se deben generar?, Qu entradas se ofrecen para ello?

Esquemticamente:
Anlisis
Qu hacer?
Especificacin de Salidas
Especificacin de Entradas

1.6 Diseo del Algoritmo
En esta etapa se debe determinar cmo se debe hacer, es decir, especificar el proceso
seleccionado para resolver el problema.
En este momento la pregunta adecuada es Cul es el /los mtodo(s) a usar para llegar a la
solucin deseada?

Recordemos, que la secuencia ordenada de acciones que permiten expresar una posible solucin al
problema, se conoce como Algoritmo.

Esquemticamente:

Diseo
Cmo hacer?
Especificacin de procedimientos
Construccin del algoritmo

En esta fase se convierte la especificacin de requisitos establecida en la fase de anlisis en un
diseo, ms o menos detallado estableciendo el comportamiento paso a paso, o la secuencia lgica
de acciones capaz de resolver el problema planteado en un tiempo finito. Esto es lo que se
denomina realizar un algoritmo. Distintos estilos de programadores a la hora de obtener la resolucin
del problema, puede dar lugar a algoritmos diferentes pero igualmente vlidos
5


1.6.1 Especificacin de procedimientos antes de la construccin del algoritmo
A continuacin se muestran algunos tipos de procesos:
1.6.1.1 Procesos Secuenciales
Ejemplo 6:
La mutual de los empleados de la Universidad de San Juan, ha elaborado un proyecto, a llevarse a
cabo en un plazo de 6 meses, con el objeto de realizar algunas refacciones en su predio ubicado en
el departamento de Pocito.
En un terreno rectangular cuyas dimensiones se conocen, est construida una piscina circular de
dimetro igual a la mitad del largo del terreno.

5
Criado Clavero, M Asuncin..Programacin en Lenguajes Estructurados. Captulo 1. Pag 9
Entrada



Proceso -
Algoritmo
Salida



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
16
Debido a algunos accidentes ocurridos en las ltimas temporadas de verano, se desea cubrir el
fondo con un material especial que evite dichas contingencias. Con el mismo objetivo se colocarn
dos hileras de mosaico antideslizante en el contorno de la pileta.
Por otra parte, una vez finalizada la obra, se quiere parquizar nuevamente los alrededores de la
piscina.
Se ha solicitado al departamento construcciones de la universidad, un informe que especifique la
superficie a cubrir con cada uno de los materiales mencionados, con el objeto de realizar la licitacin
para la compra de los mismos.
Una vez que se tienen claros los objetivos del problema, se puede realizar su representacin:








Ahora se debe determinar qu hacer, respondiendo por ejemplo a las preguntas: Qu salidas se
deben generar?Qu entradas se tienen?.Cul es el proceso que permite a partir de los datos de
entrada obtener la solucin del problema?

Se puede hacer un anlisis del enunciado, y una manera de ayudarnos en esta tarea es sistematizar
la informacin especificando:

Salida Datos de Entrada Proceso
1.Superficie del fondo de la
pileta
2.Permetro de la pileta
3.Superficie a cubrir de cs-
ped (superficie sombreada
en la figura)
Largo y ancho del terreno

Clculo de Superficie pileta
Clculo del Permetro
Clculo de la Superficie de csped.
Informar resultados
Llamaremos datos de entrada a aquellos que son conocidos y deben ser proporcionados por el
programador desde un dispositivo externo tal como el teclado.
Del anlisis vemos que existen tres procesos diferentes que deben ser especificados ms
detalladamente. Si bien los interrogantes que pueden ayudarnos en la tarea de utilizar los procesos
adecuados varan de acuerdo al problema a resolver, veamos los que podramos realizar para el
caso planteado:
1. Proceso Clculo de Superficie de la pileta
El primer interrogante que podemos hacernos es: Cmo calcular la superficie de la pileta? Si la
pileta es circular, Cul es la frmula de la superficie de un crculo?


Ahora bien, conocida la frmula, Qu datos se necesitan para resolver la ecuacin planteada?
El valor 3.14 es un dato dado, no debe ser calculado. Se conoce el valor del radio?
La respuesta debe obtenerse del enunciado del problema: En un terreno rectangular, est
construida una piscina circular de dimetro igual a la mitad del largo del terreno.
Como se observa el radio no es un dato dado explcitamente, sino que debe ser calculado a partir
del dimetro, que es conocido.
radio = dimetro/2, como dimetro la mitad del largo del terreno,
SupPileta = 3.14 * radio
2


c.




d



ancho



largo


a.
donde d = largo/2


b.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
17
Entonces: radio = (largo /4)
De esta manera: SupPileta= 3.14 * (largo /4)
2
2. Proceso Clculo Permetro de la pileta
Cul es la frmula que resuelve la longitud de la circunferencia?
La longitud de la circunferencia se puede expresar como:


Qu datos estn identificados para poder resolver la ecuacin?
Igual que en el proceso 1, el dato que debe ser calculado es el radio.
LongPileta = 2 * 3.14 * (largo/4)
3. Proceso Clculo de Superficie a cubrir de csped
Cul es la frmula que permite calcular la superficie sombreada de la figura?
La superficie a cubrir con csped, se obtiene como la diferencia entre la superficie del terreno y la
superficie ocupada por la pileta. Ahora es necesario determinar: Los valores de las superficies son
datos de entrada, han sido calculados o se debe utilizar alguna frmula para obtenerlos?


De estas dos superficies, la superficie de la pileta ha sido calculada, slo falta determinar la del
terreno:
SupTerreno = largo * ancho
Dado que largo y ancho son datos de entrada, pueden ser usados directamente.
Los procesos, como el visto, que consisten de un conjunto de acciones que se ejecutan en forma
consecutiva, una sola vez, se denominan procesos secuenciales.

1.6.1.2 Procesos con alternativas de accin
Ejemplo 7:
El Ministerio de Educacin de la Nacin, luego de la reunin paritaria con los gremios
correspondientes, ha decidido otorgar un aumento salarial a los agentes de las Universidades
Nacionales del pas. El aumento se realiza discriminando categoras y antigedad de los empleados.
Los agentes universitarios se clasifican en las categoras de: Docentes, No docentes y Auxiliares
alumnos.
Segn el acuerdo, el aumento otorgado a Docentes con ms de 10 aos de antigedad es del 15% y
con menos antigedad es del 10%. Para los agentes No docentes el aumento es del 20% para los
que poseen ms de 10 aos de antigedad y 15% en caso contrario. Los Auxiliares alumnos,
recibirn un aumento del 30%. Todos los porcentajes se calculan sobre el sueldo bsico.
Se debe determinar el monto del aumento para el agente y el monto del sueldo bruto a cobrar,
teniendo en cuenta que es la suma del sueldo bsico y el aumento otorgado.

Representacin del problema
Categoras Antigedad
Aumento
(sobre sueldo bsico)
Docentes
>10 aos
10 aos
15%
10%
No Docentes
>10 aos
10 aos
20%
15%
Auxiliar alumno --- 30%
LongPileta = 2 * 3.14 * radio


d.
SupCesped = SupTerreno SupPileta


Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
18
Especificacin del problema
Salida Datos de Entrada Proceso
Monto del aumento
Sueldo bruto a cobrar
Sueldo bsico
Categora
Antigedad
Porcentaje aumento
Calcular el monto del aumento
(proceso con alternativa)
Determinar el sueldo bruto
Informar resultados obtenidos
1. Proceso Calcular monto del aumento (proceso con alternativa)
Segn lo expresado en el problema: el aumento otorgado a Docentes con ms de 10 aos de
antigedad es del 15% y con menos antigedad es del 10%. Para los agentes No docentes el
aumento es del 20% para los que poseen ms de 10 aos de antigedad y 15% en caso contrario.
Los Auxiliares alumnos, recibirn un aumento del 30%. Todos los porcentajes se calculan sobre el
sueldo bsico.
Este proceso requiere de dos instancias:
A - Identificar la categora del empleado
Comparando la categora del empleado surgen las siguientes alternativas:
- El empleado es docente
- El empleado es no docente
- El empleado es auxiliar alumno.
B - Anlisis de la antigedad del agente
- La antigedad es mayor a 10 aos, calcular el porcentaje sobre sueldo bsico, segn la
categora.
- La antigedad es menor o igual a 10 aos en ese caso corresponde aplicar otro porcentaje
sobre el bsico.
2. Proceso Determinar el sueldo bruto, calcular dicho importe:
El sueldo bruto se calcula mediante la suma de la suma del sueldo bsico y el aumento otorgado.
Sueldo_Bruto = Sueldo_Basico + Aumento
En la frmula que permite calcular el Sueldo_Bruto el valor Sueldo_Basico es un dato de entrada, es
decir deber ser ledo y Aumento es el resultado del proceso anterior.
A diferencia del ejemplo 6, cuya resolucin consiste de una serie de acciones que se realizan en
forma secuencial, en ste, la aparicin de una condicin cuyo resultado determina las acciones a
seguir, interrumpe la secuencia. Se puede entonces decir que, la alternativa rompe el flujo
secuencial del proceso que gua la resolucin del problema.
Las siguientes actividades permitirn aplicar los conceptos hasta aqu analizados. En todos los
casos, es necesario realizar la tabla de Especificacin del problema, determinando: Salida, Datos
de Entrada y Procesos (indicando el tipo).
Actividad 4:
Se ha realizado una prueba a interesados en participar en un programa televisivo de canto. Para
cada participante se registran los siguientes datos: edad, cdigo de sexo y tres puntuaciones
correspondientes a las pruebas de evaluacin a las que fueron sometidos: afinacin, ritmo y aptitud
artstica. Se debe calificar a un participante como Aprobado, No aprobado Convocatoria en
suspenso. Se designan como aprobados a todos los participantes que obtuvieron ms de 90
puntos en la prueba de afinacin y un puntaje promedio mayor que 85 puntos en las otras dos
pruebas.
Se considerarn en la categora convocatoria en suspenso aquellos participantes que habiendo
obtenido ms de 90 puntos en afinacin, no alcanzaron el puntaje promedio en las otras dos
pruebas.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
19
Actividad 5:
La emergencia energtica por la que atraviesa nuestro pas debido a la falta de inversin de las
empresas responsables de esa rea en los ltimos aos, ha llevado a que en la actualidad deba
tomarse medidas que afectan directamente al usuario. Ante la necesidad de un ahorro de energa en
los domicilios particulares, para no perjudicar el normal desarrollo de las industrias, Energa San
Juan ha implementado un sistema de castigos. Se ha puesto en vigencia una disposicin que
consiste aplicar a aquellos usuarios que incrementaron su consumo en ms de 100KW, un recargo
del 20% al subtotal correspondiente a energa.
El total a pagar que figura en una boleta de energa, est constituido por la suma de tres subtotales:
Subtotal Energa, Subtotal Impuestos y Contribuciones y Subtotal subsidio y/o Bonificacin.
El subtotal energa est constituido por la suma de un Cargo Fijo mensual de $9.05 y un Cargo
variable que se obtiene de multiplicar la mitad del consumo bimestral registrado, por el precio
unitario correspondiente al KW/hora, que en la actualidad es de $0.0699. Se necesita informar a un
usuario, del cual se conoce los consumos bimestrales del mismo perodo en los dos ltimos aos, el
importe a pagar y en caso de haber sido sancionado especificar el valor del recargo aplicado.

1.6.1.3 Procesos Iterativos
Hasta ahora los ejemplos considerados requieren de acciones que se ejecutan una sola vez, sin
embargo en muchas situaciones puede ocurrir que las mismas deban repetirse en ms de una
oportunidad. Como ejemplo, se considera nuevamente el ejemplo 6 y se supone que en lugar de
informar el sueldo de un empleado de la Universidad, el informe debe realizarse para los 5000
agentes de la Universidad Nacional de San Juan.
Se puede inferir que la lectura de datos, la salida y el proceso deben repetirse para cada uno de los
usuarios en forma idntica. En este caso se habla de un proceso iterativo o ciclo.
En los procesos iterativos debe tenerse en cuenta cuales son las acciones que deben repetirse y
que por tanto se colocan dentro del ciclo y cuales van fuera de l.
Algunas preguntas pueden ayudarnos en esta determinacin:
Qu datos se necesitan?
Cuntas veces deben leerse o calcularse?
Los resultados deben informarse en las distintas ejecuciones del ciclo?
Existen tantos resultados como pasadas o ejecuciones tenga el ciclo?
Existen clculos que se van realizando en las distintas iteraciones pero cuyo resultado deben
informarse una nica vez al finalizar las iteraciones?
En el ejemplo planteado, las acciones de lectura de datos, clculos y el informe deben repetirse para
cada uno de los usuarios, por ello todos se incluyen dentro del ciclo. Pero qu ocurre si se
solicitara el importe total que necesita la Universidad Nacional de San Juan para el pago de
sueldos? En ese caso se deben sumar los importes de cada uno de los usuarios dentro el proceso
iterativo y una vez finalizado se informa dicho importe fuera del ciclo.
En cada una de las siguientes actividades indicar en las especificaciones de los procesos, aquellos
que se deban incluir dentro del ciclo y los que van fuera de l.
Actividad 6:
En una fbrica de artculos del hogar se ha sistematizado la informacin correspondiente a los
productos que comercializa. Por cada producto se almacena tipo, cdigo, detalle, costo de
fabricacin y stock.
Los tipos de productos se codifican:
A para identificar productos de Refrigeracin.
C. para identificar productos de Calefaccin.
E. para identificar Electrodomsticos.
Un ejemplo de cdigo que identifica un producto es E-231-Licuadora Brown-50-180, donde E
indica el tipo de producto, en este caso un electrodomstico, 231 el cdigo, Licuadora Brown el
detalle, 50 el costo de fabricacin y 180 es el stock.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
20
Si en total se comercializan 150 productos, es necesario informar el importe total en stock de cada
una de las categoras de productos fabricados y el importe que demanda la fabricacin de todos los
productos.

Actividad 7:
Una inmobiliaria necesita calcular el valor de cada uno de los inmuebles que tiene para la venta.
Para ello conoce el nmero de identificacin del inmueble, nombre del propietario, tipo de inmueble,
metros cubiertos y zona.
Los tipos de inmueble se clasifican en: D Departamentos, L Loft, C Casa
Las Zonas estn discriminadas en tres categoras.
El valor del metro cuadrado en la zona 1 es de $1500, en la zona 2 un 20% menos que en la 1 y la
zona 3 un 30 % menos que la 1.
Se han determinado adems los importes bsicos para cada tipo de inmueble como se detalla: si el
inmueble es tipo D el bsico es de $10.000, el tipo L tiene un bsico de $12.000 y si se trata del tipo
C este valor es de $16.000.
El Valor del inmueble se calcula adicionando al bsico, el importe que surge de considerar el tamao
y ubicacin del inmueble.
El dueo de la inmobiliaria est realizando un balance y ha solicitado al responsable de la seccin
administracin un detalle que contenga un listado en donde figure el identificador del inmueble, su
propietario y el importe de venta para cada inmueble. Tambin desea determinar el importe total
que posee la inmobiliaria con relacin a los 120 bienes que tiene para la venta y el nombre de los
propietarios de casas ubicadas en la zona 1.

Actividad 8:
La fbrica de cartn Zucamor San Juan evala la situacin habitacional de sus 350 empleados con
el fin de realizar, en un futuro inmediato, un proyecto de planes de vivienda acorde a sus
presupuestos. Para ello el personal directivo de la empresa ha confeccionado una encuesta, que
tiene los siguientes tems:
Posee casa propia?
Tiene otra actividad laboral?
Algn integrante de su familia aporta dinero a la economa familiar?
Las respuestas debern ser contestadas con s o no segn corresponda.
De esta encuesta se quiere determinar la cantidad de empleados que tienen actividad extra a la
organizacin, cantidad de empleados que reciben ayuda econmica de otro integrante de la familia
y porcentaje de empleados que no poseen casa propia y son la nica fuente de ingreso familiar.

Q Qu u c co on nc ce ep pt to os s s se e t tr ra ab ba aj ja ar ro on n h ha as st ta a e el l m mo om me en nt to o? ?
En una primera instancia se trat de identificar los tres componentes fundamentales que determinan
un problema: Salida, Datos de Entrada y Procesos.
Se realiz una clasificacin de los procesos en Secuenciales, Alternativos e Iterativos, segn si
la ejecucin de las acciones sigue una lnea consecutiva, caminos alternativos de accin o se
repetan un nmero determinado de veces respectivamente.

1.7 Formalizacin de conceptos para la construccin de algoritmos
Ahora se tratar de formalizar algunos conceptos, que nos conducirn a la expresin de los
procesos representados grficamente, utilizando un seudolenguaje llamado seudocdigo.
1.7.1 Concepto de Algoritmo
La palabra "algoritmo" deriva del nombre latinizado del matemtico rabe Mohamed Ibn Moussa Al
Kow Rizmi, el cual escribi entre los aos 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se
recoga el sistema de numeracin hind y el concepto del cero. Fue Fibonacci, el que tradujo su obra
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
21
al latn y la inici con las palabras: Algoritmi dicit. As, de la palabra algorismo, que originalmente
haca referencia a las reglas de uso de la aritmtica utilizando dgitos rabes, se evolucion a la
palabra latina, derivacin de al-Khwarizmi, algobarismus, que ms tarde mutara a algoritmo en el
siglo XVIII.
Un algoritmo es un mtodo para resolver problemas, que consiste de una secuencia
ordenada y finita de acciones o pasos elementales, cada una de las cuales con un significado
preciso, que debe ejecutarse en un tiempo finito.
Se considera como un paso elemental aquel que no puede volver a ser dividido en otros ms
simples. De ahora en adelante se utiliza la palabra accin simple como sinnimo de paso
elemental.
De esta definicin se desprenden importantes condiciones que debe cumplir un algoritmo:
Precisin: Cada accin debe tener un significado preciso, esto es, su interpretacin no debe dar
lugar a ambigedades.
Finitud: Debe ejecutarse con una cantidad finita de pasos.
Efectividad: Un algoritmo es efectivo si sus acciones conducen al resultado buscado y se realizan
en un tiempo finito. Se debe tener en cuenta que un algoritmo puede ser finito y no efectivo.
Otras caractersticas que debera poseer un algoritmo son:
Robustez: significa que un algoritmo debe contemplar todas las posibles facetas del problema que
se quiere resolver, es decir, debe ser flexible a cambios. Si se logra construir un algoritmo robusto,
cualquier giro inesperado del problema ser controlado por l.
Correctitud: un algoritmo es correcto cuando da una solucin al problema, cumple con todos las
especificaciones y alcanza los objetivos planteados.
Completitud: significa que el algoritmo cuenta con todos los recursos para poder llegar a una
solucin satisfactoria
Eficacia: un algoritmo es eficaz cuando da una solucin al problema planteado
Eficiencia: un algoritmo es eficiente cuando logra llegar a sus objetivos planteados utilizando la
menor cantidad de recursos posibles, es decir, minimizando el uso memoria y tiempo de resolucin.
Puede ser que exista un algoritmo eficaz pero no eficiente, en lo posible se deben manejar estos dos
conceptos en forma conjunta.
Para los mismos datos de entrada puede producirse o no, siempre los mismos datos de salida. En el
caso en que se produzcan siempre los mismos datos de salida el algoritmo se llama determinista y
en caso contrario no determinista.
Un algoritmo se define como una funcin f: E S, pero si es no determinista es probable que no
se encuentre una funcin como en el caso de programacin concurrente y paralela, donde en
muchos casos la salida puede depender no slo de la entrada sino tambin de factores temporales.
En este documento se considerarn algoritmos deterministas, que son independientes tanto del
lenguaje de programacin en que se expresan, como de la computadora que los ejecuta. Es como
una receta de cocina que se puede expresar en distintos idiomas, pero el resultado ser el mismo
independientemente del lenguaje del cocinero.
Es importante hacer notar, que el concepto de algoritmo, aunque similar y obviamente relacionado,
no debe confundirse con el concepto de programa. Algoritmo, es la especificacin de un conjunto de
pasos orientados a la resolucin de un problema, mientras que un programa es ese conjunto de
operaciones especificadas en un determinado lenguaje de programacin.
Un algoritmo constituye la documentacin principal que se necesita para iniciar la fase de
codificacin y para representarlo se utilizan dos tipos de notacin: pseudocdigo y diagramas de
flujo. El diseo de un algoritmo es independiente del lenguaje que se utilice en la codificacin.
Un algoritmo escrito en pseudocdigo siempre se suele organizar en tres secciones: cabecera,
declaraciones y cuerpo.
En la seccin de cabecera se escribe el nombre del algoritmo.
En la seccin de declaraciones se declaran algunos objetos (variables, constantes,...) que va a
utilizar el programa.
En el cuerpo estn descriptas las acciones necesarias para resolver el problema planteado.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
22
1.7.2 Diseo de Algoritmos
Disear un algoritmo es una tarea donde la creatividad y experiencia del programador juega un
papel importante y que difcilmente podr ser del todo automatizada. Es necesario tener en cuenta
algunas consideraciones a la hora de construir un algoritmo.
Como se dijo, los algoritmos sern escritos utilizando un lenguaje simblico llamado seudocdigo.
Si bien es cercano al lenguaje natural, utiliza un conjunto de acciones y reglas expresadas en un
vocabulario limitado, de tal manera que pueda ser interpretado por la comunidad de programadores.
Tambin se dijo que resolver un problema requiere transformar mediante un proceso, los datos de
entrada para obtener la meta, a la que se llama salida.




El proceso de anlisis del mundo real para identificar los aspectos esenciales de un problema se
llama abstraccin y la expresin de estos aspectos, atendiendo a las especificaciones del problema
se denomina modelizacin.
Los elementos que participan en ese modelado se llaman datos.
Ahora bien, es bueno precisar un conjunto de conceptos que ayudarn a la interpretacin de esta
unidad. Se observa que la palabra datos, datos de entrada y datos de salida son vocablos muy
utilizados hasta el momento, por lo que es oportuno definirlos.

1.7.3 Datos
Cuando se resuelven problemas con computadora, los objetos reales se deben modelar
mediante objetos abstractos, representables y entendibles sobre una computadora
Un dato es un elemento u objeto de la realidad que los algoritmos representan y son capaces de
modificar y procesar
Los datos pueden ser de diversos tipos, as en los ejemplos presentados en esta unidad, se
consideran temperaturas, distancias, edades, lados de un tringulo, objetos que son representados
por cdigos preestablecidos, como el rendimiento acadmico de un alumno, el xito o fracaso de un
tratamiento para dejar de fumar. Tambin se podra haber solicitado el nombre de los colegios en los
que hay mayor porcentaje de bajo de rendimiento, o el nombre de los pacientes que deben continuar
con el tratamiento para dejar de fumar, entre otros.
El tratamiento de los datos que pueden ser nmeros, nombres, cdigos, requiere de una
transformacin desde el mundo real a alguna forma de representacin binaria, para su
almacenamiento en la computadora.

Un dato tiene asociado: un Nombre, un Valor y un Tipo, y ocupar un espacio en la memoria de la
computadora. En general simbolizaremos lo expresado as:




Un dato podr ser el nombre de un paciente.
Entonces:
Nombre del dato Paciente
Valor del dato Luciana Gmez
Tipo de dato Conjunto de caracteres alfabticos

Es importante destacar que todo dato a ser procesado por la computadora debe estar almacenado
en la memoria principal. Se puede considerar conceptualmente, que la memoria est constituida por
un segmento en donde se almacenan los datos y otro en donde se almacenan las acciones del
algoritmo.

Luciana
Gmez


Paciente



Entrada



Proceso -
Algoritmo
Salida



Dato
Nombre
Valor
Tipo
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
23










1.7.3.1 Variables y Constantes
En general, durante la ejecucin de un algoritmo es necesario manipular informacin que pueda
cambiar continuamente, esto es posible utilizando elementos llamados variables.
Las Variables son los elementos que permiten almacenar datos que modifican su valor mientras
se procesa el algoritmo.
.
Cuando los datos tienen asociado un valor que no cambia durante el procesamiento del algoritmo,
se habla de Constantes.

1.7.3.2 Identificador
El nombre con que se designa un dato, se llama tambin identificador y en general est
representado por una secuencia de uno o ms caracteres: letras, dgitos y/o algunos caracteres
especiales. El primer carcter debe ser una letra y el nombre no debe contener espacios en blanco.
Se aconseja seleccionar nombres representativos de los objetos para facilitar su interpretacin y/o
su posterior modificacin, se dice que los nombres deben ser autoexplicativos.
En los problemas planteados, se asignaron nombres para identificar los datos utilizados. As, para
representar los lados del tringulo se design con x, y, z a cada uno de ellos.
Para el caso de la encuesta realizada por el investigador mdico, la edad del paciente y el resultado
del tratamiento se pueden identificar con edad y result respectivamente. En el ejemplo 6 se utilizan
los identificadores largo y ancho y en la actividad 5 los datos se representan con los nombres
consumo_actual, consumo_anterior, Precio_KW, Cargo fijo.

1.7.4 Tipos de Datos
Los datos que utilizan los programas se pueden clasificar en base a diferentes criterios. Uno de los
ms significativos, es aquel que dice que todos los datos que utilizan los programas son simples o
estructurados. Si un dato contiene un valor que siempre se trabaja como una unidad, se dice que es
un dato simple. Cuando el dato est formado por una coleccin de otros datos, se dice que es una
estructura de datos o un tipo de dato estructurado.
Un tipo de dato define el rango de valores que puede tomar un dato y las operaciones que se
pueden realizar con l.
Para determinar el proceso que permitir obtener el resultado o salida requerida de un problema
que debe ser resuelto por una computadora, es necesario conocer el tipo de datos que sta puede
manipular.
Esto permite visualizar una primera clasificacin de los datos en:










Memoria de
acciones



Memoria de
datos



Memoria
Principal



Tipos de
datos
Simples


Estructurados



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
24
1.7.4.1 Tipos de Datos Simples
Un dato simple es indivisible (atmico), es decir, no se puede descomponer.
Los tipos de datos simples que definen la mayora de los lenguajes de programacin son:








1.7.4.1.1 Tipo de Dato Numrico
Tipo entero: este tipo permite representar los valores enteros, por lo tanto son tiles para simbolizar
edades, cdigos numricos, nmeros de calles, resultados provenientes de procesos de conteo, etc.
Tipo real: este tipo permite representar valores con punto decimal. Ejemplos de variables de tipo real
son las que representan notas, temperaturas, presin arterial, altura, peso, costos, etc.
Ejemplo:
Un ao es un dato simple.
Anio: 2013
Un ao se expresa con un nmero entero, el cual no se puede descomponer.
Sin embargo, una fecha es un dato compuesto porque est formado por otros tres datos simples
(da, mes, ao).
Fecha:
Da: 30
Mes: 11
Anio: 2013
Las siguientes son las declaraciones de algunas variables de los problemas presentados:
real largo , ancho
entero edad
real x,y,z
Toda variable que se utilice en un algoritmo debe ser declarada, esto es, se debe especificar su
nombre y el tipo de dato asociado. La declaracin de variables permite a la computadora reservar el
espacio de memoria necesario para el almacenamiento de la misma, como as tambin verificar si
las operaciones que se realizan con ella corresponden al tipo declarado. Por convencin y para
adecuarnos a la forma en que trabaja el lenguaje C, para declarar una variable colocaremos el
identificador de la misma precedido por su tipo.

1.7.4.1.2 Tipo de Dato Carcter
Muchos problemas requieren trabajar con variables cuyos valores son caracteres, tal es el caso de
la variable result utilizada para identificar el resultado del tratamiento iniciado por un paciente, que
puede tomar los valores E o F por ejemplo, que representa el xito o fracaso del mismo en cada uno
de los pacientes.
En el ejemplo referido al rendimiento acadmico de los alumnos se puede utilizar la variable rendim,
que puede tomar los valores S y N, para representar si tuvo o no problemas de rendimiento.
Un variable de tipo carcter es aquella que puede tomar uno de los caracteres del cdigo ASCII. La
sigla que ASCII refiere a Cdigo Estndar Americano para el Intercambio de Informacin, es un
cdigo normalizado que cuenta con 128 caracteres, que incluye nmeros, letras maysculas,
minsculas y caracteres especiales. Actualmente, la mayora de los procesadores utilizan el cdigo
ASCII ampliado que cuenta de 256 caracteres, entre los que se han agregado los caracteres del
alfabeto griego.
Numricos


Lgico



Entero
Real


e.
Tipos de
Datos simples


f.
Lgico o Booleano
Carcter
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
25
Estos caracteres estn ordenados de 0 a 255, caracterstica que permite la comparacin entre ellos.
Los dgitos estn ordenados en su propia secuencia numrica y las letras estn dispuestas acorde al
orden alfabtico, precediendo las maysculas a las minsculas.
En general, todas las computadoras manipulan los siguientes caracteres:
Letras maysculas: A..Z. (excepto CH, , LL)
Letras minsculas: a..z. (excepto ch, , ll)
Dgitos decimales: 0..9.
Carcter de espacio en blanco.
Caracteres especiales: +, -, %,...@,. ., o
Signos de puntuacin: , ; :
Como se dijo, las variables de tipo carcter pueden tomar uno de los valores de este conjunto, el
que se debe escribir entre apstrofes , para evitar confundirlo con el nombre de una variable,
operador o nmero.

Entonces, para el caso del rendimiento de un alumno, la variable se deber declarar de la siguiente
forma:
caracter rendim
Nombre del dato rendim
Tipo de dato Caracter
Valor N

1.7.4.1.3 Tipo de Dato Lgico
Existen variables que pueden tomar los valores Falso o Verdadero, corresponden al tipo de dato
lgico o Booleano.
La variable result, puede ser tambin considerada de tipo booleano.
booleano result
Nombre del dato result
Tipo de dato booleano
Valor Falso
El valor Falso de la variable result, indica que el tratamiento no dio resultado a ese paciente.
Se llaman tipos ordinales, aquellos cuyos elementos estn ordenados discretamente, esto es, para
cada elemento, salvo el primero y el ltimo, existe un anterior y otro posterior. De los tipos de datos
estudiados, el nico que no es ordinal es el conjunto de los nmeros reales. Dado un nmero real no
se puede determinar el anterior ni el siguiente, ya que entre dos nmeros reales siempre existe otro
nmero real.

1.7.4.2 Tipos de Datos Estructurados
1.7.4.2.1 Tipo de Dato Cadena
En muchos casos es necesario trabajar con variables cuyos valores son un conjunto de caracteres,
por ejemplo las que se utilizan para representar nombres. En estos casos no es posible el uso del
tipo carcter, por ello la mayora de los lenguajes de programacin cuentan con el tipo de dato
cadena, que permite resolver la situacin planteada.
Un dato tipo cadena puede tomar como valor una cadena de caracteres, esto es, una secuencia
finita de caracteres encerrada entre comillas .
Si la variable nomb es utilizada para representar los nombres de las carreras que se cursan en la
Facultad de Ciencias Exactas, se puede declarar:
cadena nomb
Nombre del dato nomb
Tipo de dato Cadena
Valor Licenciatura en Ciencias de la Computacin
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
26
1.7.5 Expresiones
Una expresin es la descripcin formal de un clculo, que al ser resuelto tiene un nico resultado.
Se construyen con la combinacin de operandos y operadores.
Los operadores indican el tipo de clculo a realizar y los operandos son constantes, variables u
otras expresiones que se calculan con los operadores correspondientes.
Segn los operadores utilizados las expresiones se clasifican en:
- Aritmticas
- Relacionales
- Lgicas

1.7.5.1 Expresiones aritmticas
Una expresin aritmtica es la descripcin de un clculo matemtico donde los operandos son
variables o constantes numricas, los operadores son aritmticos y el resultado es un nmero.
Operandos Operadores Tipo de Resultado
Variables o
Constantes
numricas

+ suma
- resta
* multiplicacin
/ divisin real
div divisin entera
Raiz
Resto

Numrico

La suma, resta y multiplicacin admiten operandos enteros y reales, por lo que su resultado puede
ser entero o real.
La divisin retorna un resultado entero o real, dependiendo del operador utilizado.
Los operadores Raz y Resto se aplican slo a operandos enteros, siendo su resultado entero.

Dadas las declaraciones:
entero a,b,c, d
real r

Expresiones aritmticas vlidas:
1. a+b+5+d resultado entero
2. a-b* (r/2 ) resultado real
3. a/b+c-3.6 resultado real
4. (a+b)*(c-d)/e resultado real

El resultado de las expresiones es nico, pero depende de los valores asignados a las variables.
As, para a=10, b=9 y r=6, el resultado de la evaluacin de la segunda expresin es 17.0.
para a=30, b=9 y r=5, el resultado de la evaluacin de la segunda expresin es 7.5.
Reglas de evaluacin de una expresin aritmtica
Son las mismas reglas que se utilizan en matemtica. La expresin se comienza a evaluar de
izquierda a derecha, si contiene un clculo entre parntesis, ste se resuelve primero. Si los
parntesis estn anidados, un par de parntesis dentro de otro, primero se resuelve la expresin del
parntesis interior.
Tabla 1.1 Expresiones Aritmticas



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
27
Los operadores de una expresin aritmtica tienen un orden de precedencia, esto es, prioridad de
ejecucin en caso que la expresin contenga distintos operadores sin especificacin de parntesis:

Orden de precedencia Operador
1 * / div
2 + -
3 Raz, Resto


En caso de operadores con la misma prioridad, las operaciones se realizan de izquierda a derecha.
Si se desea alterar el orden natural, se deber utilizar parntesis.
As, la expresin matemtica debe escribirse (A+B) / (C+D)
Cul es la expresin que resulta si no se colocan los parntesis?
En la expresin a-b*(r/2), primero resuelve el parntesis, luego el producto y finalmente la resta.
En cambio en la expresin a-b*r/2, se resuelve primero el producto, su resultado se divide en 2 y
finalmente se realiza la resta.
Si los operandos de la expresin aritmtica son del mismo tipo, el resultado es del mismo tipo.
Si son de distinto tipo, se trabaja a mxima precisin. As por ejemplo, si un operando es entero y
otro real, el resultado es real.

1.7.5.2 Expresiones relacionales
Las expresiones relacionales describen formalmente predicados lgicos que al asignar valores a las
variables, se convierten en proposiciones verdaderas o falsas.
Por ejemplo
Alumnos mayores de 18 aos se puede expresar formalmente utilizando la variable edad como:
edad > 18.
Si la variable edad toma el valor 20, podemos decir la proposicin resultante es verdadera.
Por lo tanto, una expresin relacional es una comparacin de dos operandos del mismo tipo, cuyo
resultado es un valor lgico.
Los operadores que intervienen en la expresin son los operadores relacionales.
Los operandos deben ser del mismo tipo, por lo tanto se puede comparar
- datos numricos (constantes, variables o expresiones numricas),
- caracteres
- cadenas
Operandos Operadores Tipo de Resultado
Datos del mismo tipo:
ambos numricos,
carcter, cadena , lgico.
Expresiones numricas

> Mayor
< Menor
== Igual
<> , != Distinto
> = Mayor o Igual
< = Menor o Igual

Booleano



Tabla 1.3 Expresiones Relacionales
g.
h.

Tabla 1.2 Orden de precedencia Operadores Aritmticos



D C
B A
+
+
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
28
Ejemplos de expresiones relacionales vlidas:
entero m,n
caracter t, r
1. m <= n
2. (m+n) > (n*2)
3. r < t
4. t !=a
Para el lote de prueba: m=-5, n=-17, r= d , t=A los resultados de las expresiones son:
Expresin 1: Falso
Expresin 2: Verdadero
Expresin 3: Falso
Expresin 4: Verdadero
Se debe recordar que la evaluacin de las expresiones 3 y 4 es posible debido al orden de los
caracteres en el cdigo ASCII.

1.7.5.3 Expresiones lgicas
A partir de las expresiones relacionales podemos construir expresiones lgicas, utilizando los
conectores de la Lgica de proposiciones.
De este modo una expresin lgica es la descripcin formal de un predicado lgico compuesto con
conectores lgicos, que tiene como resultado un valor lgico verdadero o falso.
Por lo tanto en una expresin lgica:
- Los operadores son los conectores lgicos: conjuncin (y)), disyuncin (o) y negacin (no).
- Los operandos son predicados lgicos, estos predicados pueden ser: expresiones relacionales,
variables o constantes de tipo lgico.
- El resultado es un valor de tipo lgico ( verdadero o falso)

Operandos Operadores Tipo de Resultado
Expresiones relacionales,
variables o constantes de
tipo lgico.

NO negacin
Y conjuncin
O disyuncin

Booleano

Para obtener el valor booleano que resulta de la evaluacin de una expresin lgica, se utilizan las
tablas de verdad de la Lgica de Proposiciones. Estas se construyen combinando los valores
posibles que pueden tomar los operandos A y B:

A B A y B A o B NO A
V V V V F
V F F V F
F V F V V
F F F F V

Como se puede inferir de la Tabla de verdad anterior:
- La conjuncin de dos operandos es verdadera nicamente en el caso en que ambos operandos
lo sean
Tabla 1.4 Expresiones Lgicas
i.
j.

Tabla 1.5 Tabla de Verdad
k.
l.

Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
29
- La disyuncin entre dos operandos es verdadera cuando al menos una de dichos operandos lo
es.
- La negacin transforma un operando verdadero en falso y viceversa.
Los operadores lgicos, tienen el siguiente orden de precedencia.
Orden de Precedencia Operador
1 NO
2 Y
3 O

Ejemplos
Dado los siguientes enunciado
Alumnos varones mayores de 18 aos
Si consideramos las variables edad de tipo entero y sexo de tipo carcter, podemos definir
foemalmente la siguiente expresin lgica:
( sexo == M ) Y ( edad >18)
Operando Operando

Expresin relacional Expresin relacional
Operador
Esta expresin lgica est compuesta por dos expresiones relacionales conectadas con el operador
lgico Y.
Si las variables toman los valores edad=20 y sexo=F
La evaluacin de la expresin lgica es la siguiente:
sexo==M Y edad >18

falso verdadero

falso
Dada la declaracin:
entero p, q
caracter c,d,e
booleano r, a
y el lote de prueba p=12 ; q=3 ; c= b ; d=m ; a=Falso ; r=Verdadero
Las siguientes son expresiones lgicas vlidas:







1. Conectivo lgico

(p<= q) y ( q > 0)

expresin relacional expresin relacional

Expresin lgica


n.
Tabla 1.6 Orden de precedencia Operadores Lgicos


m.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
30
El resultado para los valores del lote es Falso:





2. (c < d) y (c != d) Verdadero

V V

V






Si su valor de verdad, para el lote de prueba es:
(a) O ( NO r) Falso

F F
F
Evaluacin por cortocircuito de expresiones lgicas
La mayora de los compiladores utilizan evaluacin por cortocircuito, esto significa que detienen la
evaluacin cuando se tiene certeza del resultado de la expresin.
La evaluacin se realiza con los operadores Y y O, de la siguiente manera:
Si la expresin lgica tiene la forma:
Si ( ( exp 1) Y ( exp 2) )
Se evala exp2 slo cuando exp1 es verdadera, ya que si exp1 es falsa el resultado de la expresin
lgica es falso independientemente del valor de exp 2.
Si la expresin lgica tiene la forma:
Si ( ( exp 1) O ( exp 2) )
Si exp1 es verdadera no evala exp2, ya que el resultado de la expresin lgica es verdadero, sin
importar el valor de exp2.

1.8 Acciones
Para construir un algoritmo son necesarias dos tareas:
- Elegir la representacin adecuada para que los datos puedan ser manipulados por la
computadora.
- Determinar el conjunto de acciones, cuya ejecucin conducir a la solucin del problema
planteado.
Para determinar el ambiente, esto es los recursos con que cuenta el procesador, se han estudiado
los tipos de datos y las operaciones permitidas para cada uno de ellos. Se necesita conocer ahora
las acciones que puede realizar una computadora.

3. Conectivo lgico

( a ) O ( NO r )

Variable lgica Variable lgica
(p<= q) y ( q > 0)

F V
F



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
31
El procesador puede realizar las siguientes acciones:
1. Almacenar los datos en memoria.
2. Realizar operaciones aritmticas, relacionales y lgicas, mediante un subsistema conocido como
Unidad Aritmtico-Lgica (UAL).
3. Reconocer y ejecutar acciones simples, como las de lectura y escritura, y acciones estructuradas.
Se llama accin a cada uno de los pasos que el procesador ejecuta para resolver el problema.
Cada accin tiene la caracterstica de modificar el ambiente del algoritmo.
Una accin simple es un paso que es entendido en forma inmediata por el procesador y no puede
ser descompuesto en otros pasos ms sencillos.
Una accin estructurada es un paso compuesto por otras acciones simples.








Antes de comenzar este estudio, se indicar la convencin adoptada para especificar los formatos
de las acciones y otros elementos que constituyen el seudocdigo, para evitar ambigedades en su
interpretacin.
- Los corchetes angulares <> indican que la expresin que encierran, debe ser sustituida a
eleccin del programador.
- Los trminos no encerrados entre corchetes angulares, deben ser escritos tal cual se muestran
en el formato.
- Los smbolos /*. */, indican que la expresin que encierran es un comentario que se utilizar
para realizar las aclaraciones que se consideren pertinentes en el algoritmo.

1.8.1 Acciones Simples
1.8.1.1 Lectura
La accin de lectura permite almacenar en una variable, un valor especificado desde un dispositivo
externo, como el teclado. Es decir, que esta accin permite introducir al ambiente valores desde el
mundo exterior.
El formato de esta accin es:


Donde <nombre de variable> representa uno o ms nombres de variables del ambiente.
En caso de varias variables, sus identificadores se separan con coma.
Dada la declaracin de variables:
cadena nomb /* Ambiente del algoritmo */
entero edad
real x,y,z
caracter result
Leer nomb /* acciones de lectura */
Leer edad, result
Leer x,y,z
Estas acciones permiten que variables nombradas se instancien con los valores ingresados.
Leer <nombre de variable, ... , ... >



Lectura
Simples Asignacin
Escritura
Acciones

Estructuradas
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
32
1.8.1.2 Asignacin
La accin de asignacin permite almacenar en una variable un valor que proviene de una
constante, de otra variable o del resultado de una expresin.
El formato de esta accin es:


Donde:
<nombre de variable> es el nombre de la variable a la que el procesador le asignar un valor
= representa el smbolo de asignacin
<valor> puede ser una constante, una variable o el resultado de una expresin.
Una asignacin modifica el valor almacenado en la variable que aparece a la izquierda de la
asignacin, sin producir ningn efecto en la expresin que se encuentra a la derecha de la misma.
Dadas las variables:
cadena nomb
entero edad
real x,y,z
caracter result
booleano rendim
Son ejemplos de asignaciones correctas:
nomb= Informtica
edad= 20
result= S
rendim= Falso
z= Raiz( x*x + y*y )
NOTA: Existen por tanto, dos formas de almacenar un valor en una variable, a travs de una accin
de lectura desde dispositivo externo, o por medio de una asignacin desde el mismo programa.

1.8.1.3 Escritura
La accin de escritura, permite comunicar al exterior valores del ambiente, a travs de un
dispositivo tal como pantalla o impresora.
El formato de esta accin es:


Donde:
<argumento 1, argumento 2, ..., argumento n>, pueden ser: constantes o nombres de variables,
expresiones aritmticas, relacionales o lgicas.
En este caso en el dispositivo externo se muestra el resultado de la expresin.
Las siguientes son distintas formas de utilizar la accin de escritura:
Escribir nomb
Escribir Los lados del triangulo rectngulo son , x,y,z
Escribir Temperatura promedio , suma/ cant
Para aplicar los conceptos hasta el momento analizados, realicemos el algoritmo que corresponde a
una posible solucin del ejemplo 6, referido al proyecto presentado por los empleados de la mutual
de la Universidad.
<nombre de variable> = <valor>



Escribir <argumento 1, argumento 2, ..., argumento n>


o.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
33
1.8.2 Construccin del algoritmo
El algoritmo estar delimitado por las palabras Comienzo y Fin y constituido por dos partes bien
diferenciadas, el ambiente, en donde se declaran todas las variables que se necesitan para realizar
las tareas, y las acciones propiamente dichas.
Algoritmo Calculo
Comienzo /*inicio del algoritmo */
real ancho, largo, radio, supp, long,supc, supr /*declaracin de variables - Ambiente */
Leer ancho, largo /*lectura de datos */
radio= largo/4 /*clculo del radio de la pileta*/
supp= 3.14 * radio * radio /*clculo superficie del fondo de piscina*/
long= 2 * 3.14 *radio /*clculo longitud de borde de piscina*/
supr= largo * ancho /*clculo de superficie de rectngulo */
supc= supr- supp /*clculo de superficie acubrir de csped*/
Escribir Superficie del fondo de la pileta , supp /*muestra resultados*/
Escribir Longitud a cubrir con cermico, 2* long
Escribir Superficie a cubrir con csped, supc
Fin /*fin del algoritmo */
En este algoritmo se han detallado paso a paso cada una de los clculos necesarios.
El siguiente algoritmo permite obtener la misma salida, pero optimizando la cantidad de variables.
Algoritmo Calculo1
Comienzo
real ancho, largo, radio,supp
Leer ancho, largo
radio= largo/4
supp= 3.14 * radio * radio
Escribir Superficie del fondo de la pileta , supp
Escribir Longitud a cubrir con cermico, 4 * 3.14 * radio
Escribir Superficie a cubrir con csped, largo * ancho - supp
Fin
Se debe notar que los nicos clculos cuyos resultados se han almacenado en variables, son los
que se utilizan en ms de una oportunidad, para evitar repetirlos, de esa manera se optimiza cdigo
y tiempo.
Otro ejemplo de codificacin de este algoritmo podra ser:
Algoritmo Calculo1
Comienzo
constante pi=3.14159
real ancho, largo, radio,supp
Leer ancho, largo
radio= largo/4
supp= pi * radio * radio
Escribir Superficie del fondo de la pileta , supp
Escribir Longitud a cubrir con cermico, 4 * pi * radio
Escribir Superficie a cubrir con csped, largo * ancho - supp
Fin
Como se observa pi ha sido previamente declarada como constante.
Usted que piensa acerca de la utilidad de la declaracin de constantes en un algoritmo?
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
34
1.8.2.1 Asertos Precondiciones y Postcondiciones
Definir asertos es una herramienta til en el proceso de construccin de algoritmos correctos.
Asertos: Un aserto es una afirmacin sobre el estado del algoritmo.
Por ejemplo tras ejecutarse la instruccin: Resta= A-1, siendo Resta y A de valores enteros, se est
en condiciones de afirmar el siguiente aserto: el valor de Resta es menor que el valor de A, ya sea
A de valor positivo o negativo.
El objetivo de la verificacin formal es que se puedan establecer asertos sobre lo que se pretende
que realice el algoritmo, basndose en las especificaciones y requerimientos, as demostrar,
mediante argumentos razonados, que un determinado diseo cumple los asertos preestablecidos en
lugar de esperar la ejecucin del programa.

Precondiciones y Postcondiciones
Durante el desarrollo de una tarea es importante determinar qu condiciones deben darse al
comienzo o entrada de la tarea, y cules se espera deben ser ciertas al finalizar la tarea, es decir a
la salida.
Los asertos que deben cumplirse a la entrada de una tarea reciben el nombre de Precondiciones.
Si la operacin, tarea o accin se realiza sin que la precondicin se cumpla no tendremos garanta
de los resultados obtenidos.
Los asertos acerca de los resultados que se esperan en la salida, se llaman postcondiciones.

Por tanto en la resolucin de problemas determinaremos las entradas con sus precondiciones y las
salidas con sus postcondiciones asociadas.





Ejemplo 8:
A partir de los requerimientos de sus afiliados, los directivos de la mutual han aprobado la
construccin de un trampoln, sobre una columna vertical de x metros de altura. Calcular la longitud
de la escalera que deber construirse, que estar apoyada sobre dicha columna y separada y
metros, medidos sobre la horizontal.

Representacin del problema:





Especificacin del problema
Salida Datos de Entrada Proceso
Longitud de la escalera
Postcondicin:
Nmero real positivo
Altura del trampoln ( x )
Separacin de la escalera
respecto de la columna vertical (
y )
Precondicin Nmeros reales
positivos
Clculo de longitud de la
escalera utilizando teorema
de Pitgoras (L
2
= x
2
+ y
2
)
y


x



L ?



Entrada
Precondiciones
Proceso -
Algoritmo
Salida
Postcondiciones
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
35
Algoritmo Escalera
Comienzo
real x,y
Escribir Ingrese altura del trampoln y separacin respecto de la columna
Leer x, y
Escribir La longitud de la escalera es , raiz( x *x + y*y)
Fin

Es importante destacar que en este algoritmo se ha incluido un mensaje previo a la lectura, en el
que se indica los datos y el orden en que deben ser ingresados por teclado. Esta accin resulta de
gran ayuda al programador, ya que de lo contrario debera recordar no slo los datos, sino tambin
el orden en que ellos fueron especificados en el algoritmo para asegurar la correcta asignacin de
los valores a las variables.
Se debe tambin notar que, si bien raz se ha considerado como un operador aritmtico, es en
realidad una funcin aplicada a un argumento que debe estar encerrado entre parntesis.

1.8.3 Traza o seguimiento de un Algoritmo.
Una vez que se alcanza un resultado, es fundamental confrontarlo con reglas y restricciones del
problema y verificar que efectivamente constituye una solucin. Para ello, nuevamente se deber
leer la especificacin original del problema y asegurarse que todas las cuestiones planteadas se han
resuelto consistentemente.
Esta etapa puede ser muy enriquecedora, si se comparan diferentes alternativas de resolucin y se
evalan las distintas estrategias aplicadas. Esta reflexin es fundamental para que la resolucin de
una situacin particular permita desarrollar la capacidad general de abordar problemas.
La traza de un Algoritmo se puede definir como la ejecucin manual de las acciones que lo
constituyen.
Consiste en seguir paso a paso las instrucciones del algoritmo con datos concretos de manera de
copmprobar si la solucin adoptada en la fase de diseo resuelve el problema.
Esto permite comprobar que dicho algoritmo funciona correctamente, detectar errores o cuando se
crea conveniente simplificarlo para incrementar su eficacia y velocidad.
El seguimiento se puede realizar utilizando una tabla en la que se muestra los valores que toman las
distintas variables declaradas, a medida que se ejecutan las acciones.
El siguiente ejemplo muestra como realizar el seguimiento del algoritmo correspondiente al ejemplo
6, tomando para ello el lote de prueba: largo= 20 m y ancho=16 m.
Algoritmo Calculo2
Comienzo
real ancho, largo, radio, supp
1. Leer ancho, largo
2. radio= largo/4
3. supp= 3.14 * radio * radio
4. Escribir Superficie del fondo de la pileta , supp
5. Escribir Longitud a cubrir con cermico, 4 * 3.14 * radio
6. Escribir Superficie a cubrir con csped, largo * ancho - supp
Fin
Seguimiento algoritmo Calculo2
Accin ancho largo radio supp Salida
1 16 20
2 5
3 78.5
4 Superficie del fondo de la pileta 78. 5
5 Longitud a cubrir con cermico 62.8
6 Superficie a cubrir con csped 241.5
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
36
1.8.4 Acciones estructuradas
Se llama flujo de control de un algoritmo al orden en que se ejecutan las acciones que lo
constituyen Recordemos que cuando el algoritmo cuenta con un nmero reducido de acciones que
se ejecutan una tras otra, en el mismo orden en el que aparecen, se habla de ejecucin
secuencial.
Tambin se vio que el flujo de control de un algoritmo puede ser alternativo , cuando se deben
tomar decisiones que dependen de ciertas condiciones, o iterativo cuando es necesario repetir
acciones varias veces.
Se llaman acciones estructuradas a aquellas que determinan un flujo de control especfico; de ah
que tambin se denominan estructuras de control. Las Acciones estructuradas, se ejecutan
teniendo en cuenta los distintos tipos de flujo de control: secuencia, seleccin e iteracin.







1.8.4.1 Secuencia
Una secuencia est representada por un conjunto de acciones que se ejecutan en forma
consecutiva, una sola vez. En este caso el orden de ejecucin coincide con el orden fsico en que
se representan las acciones.

El siguiente esquema representa esta estructura:










1.8.4.2 Seleccin
Una seleccin es una Accin estructurada que provoca la ejecucin de una accin entre acciones
alternativas. Las estructuras de seleccin o alternativa utilizadas son Alternativa Doble, Simple y
Mltiple, cuyo seudocdigo se muestra a continuacin:

1.8.4.2.1 Alternativa Doble
El esquema de la estructura de seleccin doble es el siguiente:






Accin 1
Accin 2

:

Accin n

p.
q.



Figura 1.4 Esquema de estructura Secuencial
Acciones a



Acciones b



V



F



Condicin




Figura 1.5 Alternativa Doble



Secuencia

Seleccin

Iteracin




Estructuras de Control



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
37
En la figura 1.5 se grafica la seleccin utilizando un rombo para representar la decisin y un
rectngulo para representar un bloque de acciones secuenciales
El seudocdigo para esta estructura es:
Si <condicin>
Entonces
<accin simple o estructurada>
Sino
<accin simple o estructurada>
Finsi
Donde:
Condicin es una variable lgica, expresin lgica o relacional, cuyo valor puede ser verdadero o
falso.
Las palabras Si, Entonces, Sino y FinSi, se llaman delimitadores.
Esta estructura se interpreta as, primero se evala la condicin, si el resultado obtenido es
verdadero, el procesador deber ejecutar la acciones que estn entre los delimitadores Entonces y
Sino, en caso contrario ejecutar la accin simple o estructurada que est entre los delimitadores
Sino y Finsi.
Las acciones que siguen a Entonces (alternativa verdadera) o al Sino (alternativa falsa),
dependiendo del estado de la condicin evaluada, se ejecutarn en forma excluyente una sola vez.
Como se observa en el seudocdigo, las palabras Entonces, Sino as como las acciones que estn
dentro de ellas, se encuentran desplazadas un poco ms a la derecha que el resto de la estructura.
Este desplazamiento o sangra se denomina indentacin., y es utilizada para dar mayor claridad a
los algoritmos.

Como ejemplo se construir el algoritmo correspondiente a la actividad 5, cuyas aserciones son
Precondicin: El consumo actual y el consumo anterior son nmeros reales positivos.
Poscondicin: El importe a pagar es un nmero real positivo.
Algoritmo Consumos
Comienzo
constante precio_KW =0.0699
constante cargofijo =9.05
real consumo_actual,consumo_anterior , valor_limite, subtEnergia
Escribir Ingrese consumos bimestrales actual y del mismo periodo ao anterior
1. Leer consumo_actual, consumo_anterior
2. subtEnergia = cargofijo + ((consumo_actual / 2) * precio_KW)
3. valor_limite = consumo_anterior + 100
Si (consumo_actual > valor_limite)
Entonces
4. Escribir El usuario debe pagar un recargo de, subtEnerga * 0.20
5. Escribir Importe Subtotal Energa, subtEnerga*1.20 /*equivale a SubtEnerga + SubtEnerga *0.2
Sino
6. Escribir El usuario no debe pagar recargo, Importe Subtotal Energa , subtEnerga
Finsi
Fin
El seguimiento del algoritmo para los lotes de prueba es:
a. consumo_actual = 550 KW consumo_anterior= 420 KW
b. consumo_actual = 450 KW consumo_anterior = 420 KW
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
38
Lote a
Accin consumo_actual consumo_anterior subtEnerga valor_limite Salida
1 550 420
2 28.27
3 520
4
El usuario debe pagar un
recargo de 5.65
5
Importe Subtotal
Energa 33.92

Lote b
Accin consumo_actual consumo_anterior subtEnerga valor_limite Salida
1 450 420
2 24.78
3 520
5
El usuario no debe pagar
recargo, importe subtotal
energa 24.78

1.8.4.2.2 Alternativa Simple
Si el departamento informes de Energa San Juan, dispone que slo debe notificar al usuario
cuando deba pagar recargo, no ser necesario realizar acciones cuando la condicin es falsa.
ste, como muchos problemas a modelar, pueden requerir el uso de la estructura Si - Finsi sin
necesidad de usar el delimitador Sino. Esta estructura se conoce como Alternativa Simple.
El seudocdigo asociado es:
Si (<condicin>)
Entonces <accin simple o estructurada>
Finsi
El esquema de la estructura de seleccin simple es:








El siguiente algoritmo muestra una posible solucin al problema planteado.
Algoritmo Consumos1
Comienzo
constante precio_KW =0.0699
constante cargo fijo =9.05
real consumo_actual,consumo_anterior , valor_limite
V
r.
s.

Acciones a
t.
u.

Condicin




Figura 1.6 Alternativa Simple



F



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
39
Escribir Ingrese consumos bimestrales actual y del mismo periodo ao anterior
Leer consumo_actual, consumo_anterior,
subtEnergia = cargo_fijo + ((consumo_actual / 2) *precio_KW)
valor_limite = consumo_anterior + 100
Si (consumo_actual > valor_limite)
Entonces
Escribir El usuario debe pagar un recargo de , subtEnerga * 0.20
Escribir Importe Subtotal Energa , subtEnerga *1.20
Finsi
Fin

1.8.4.2.3 Estructuras Alternativas Anidadas
Ejemplo 9:
Despus de reuniones de directorio, las autoridades de Energa San Juan decidieron modificar la
disposicin y poner en vigencia un nuevo sistema que consiste en otorgar a sus usuarios premios y
castigos. Se premiar a aquellos usuarios que redujeron su consumo por lo menos en 100kw
respecto del mismo periodo del ao anterior, con una bonificacin del 15% sobre el importe total. Y
al igual que en la disposicin anterior, aquellos usuarios que incrementaron su consumo en ms del
100kw sern castigados con un recargo del 20% del importe.
Realizar un algoritmo que permita informar cual es su situacin a un usuario, del que se conocen los
consumos del mismo perodo en los dos ltimos aos.
Representacin del problema




Algoritmo Consumos2
Comienzo
constante precio=0.0699
constante cfijo=9.05
real consumo_actual,consumo_anterior, valor_limite
Escribir Ingrese consumos bimestrales actual y del mismo periodo ao anterior
Leer consumo_actual,consumo_anterior
subtEnergia = cfijo + ((consumo_actual / 2) * precio)
valor_limite = consumo_anterior + 100
Si (consumo_actual > valor_limite)
Entonces
Escribir El usuario debe pagar un recargo de , SubtEnerga * 0.20
Escribir Importe Subtotal Energa , subtEnerga *1.20
Sino
Si (consumo_actual < consumo_anterior - 100)
Entonces
Escribir El usuario tiene un descuento de , subtEnerga * 0.15
Escribir Importe Subtotal Energa , subtEnerga * 0.85
Sino
Escribir NO corresponde bonificacin ni recargo, su importe es, subtEnerga
Finsi
Finsi
Fin
consumo anterior



Consumo 100 Consumo +100



Zona de bonificacion
v.
w.

Zona de recargo



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
40
Como se dijo, las acciones que siguen a la alternativa verdadera o falsa de una estructura Si... Finsi,
pueden ser simples o estructuradas, en particular puede ser otra estructura alternativa, como la
planteada en el ejemplo.
En este caso, en donde un Si aparece dentro de otro Si, se habla de anidamiento de Si o
estructuras alternativas anidadas

1.8.4.2.4 Alternativa mltiple
Ejemplo 10:
En una agencia de venta de automotores, se han codificado las distintas marcas de automviles
para facilitar el tratamiento de la informacin. La tabla siguiente muestra las marcas de los
automviles con el porcentaje correspondiente a un impuesto que debe agregarse al valor sugerido
por fbrica.
MARCA CODIGO PORCENTAJE
Ford A 5%
Peugeot B 7%
Fiat C 8%
Toyota D 7%
Renault E 5%
Construir el algoritmo que permita determinar el importe total que corresponde a un automvil cuyo
valor y cdigo de marca se conocen.
Como datos de entrada se necesitan el cdigo de la marca del automvil, su valor y el porcentaje
que corresponde al impuesto.
Precondicin: un cdigo de tipo caracter que puede tomar valores comprendidos entre A..E
correspondiente a la marca y un nmero real positivo correspondiente al importe del automvil
Como salida se debe obtener el importe que debera pagarse incluido el impuesto correspondiente.
Postcondicin: un nmero real positivo
Con las estructuras hasta ahora estudiadas, el algoritmo que muestra el proceso para la obtencin
del resultado solicitado, puede ser el siguiente:
Algoritmo Agencia
Comienzo
real imp, total
caracter codigo
Escribir Ingresar importe de fbrica y cdigo de automvil
Leer imp, codigo /* Se lee el importe del automvil y el cdigo correspondiente a su marca
Si (codigo==A)
Entonces total= imp *1.05
Sino Si (codigo==B)
Entonces total= imp *1.07
Sino Si (codigo==C)
Entonces total= imp *1.08
Sino Si (codigo==D)
Entonces total= imp *1.07
Sino Si (codigo==E)
Entonces total= imp *1.05
Sino Escribir Se ingreso mal el cdigo
Finsi
Finsi
Finsi
Finsi
Finsi
Escribir Total a pagar por el automvil, incluido el impuesto, total
Fin
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
41
Para casos como ste, en los que, dependiendo del valor de una variable o del resultado de una
expresin se debe seleccionar una de entre varias alternativas, los lenguajes proveen la estructura
de seleccin mltiple Segunfinsegun cuyo seudocdigo es el siguiente:
Segun (<e>)
valor 1: accin 1
valor 2: accin 2
:
:
valor n: accin n
de otro modo: accin b
finsegun
Donde:
e es el nombre de expresin de control o selector y puede ser una variable o expresin ordinal,
valores enteros, carcter, pero no reales.
valor 1, valor 2 son los valores (etiquetas) que puede tomar e.
de otro modo, valor distinto a la secuencia de posibles valores previstos que puede tomar la
variable e.

Se evala el selector o expresin de control, se compara con cada uno de los valores o etiquetas
colocados en la estructura Segun..finsegun, y se ejecuta nicamente la accin- simple o
estructurada-, que corresponde al valor obtenido. Una vez finalizada esta ejecucin, se contina con
el cdigo que sigue a la estructura.
En caso que el valor del selector no se corresponda con ninguna etiqueta, si no se coloca la opcin
de otro modo, no se ejecuta ninguna accin. Se recomienda el uso de esta opcin para identificar
posibles errores, como es el caso de ingresar un valor errneo que debe ser detectado.
El ordenamiento de los valores o etiquetas en la estructura es arbitrario, pero no pueden aparecer
ms de una vez.

El esquema correspondiente a la estructura de alternativa mltiple es:










Ejemplo
Segun (codigo)
A: total= imp *1.05
B: total= imp *1.07
C: total= imp *1.08
D: total= imp *1.07
E: total= imp *1.05
de otro modo: Escribir Se ingreso mal el cdigo
finsegun
e



Valor 1



Valor 2




Valor n




De otro modo



Accin 1



. . .



. . .



Accin 2



Accin n



Accin b



Figura 1.7 Alternativa Mltiple



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
42
Si para diferentes valores de e se debe realizar la misma accin, tales valores pueden escribirse en
una lista, separados por comas.
Por ejemplo:
Segun ( mes )
1,3,5,7,8,10,12 : dia =31
2 : dia =28
4, 6,9,11 : dia =30
finsegun
Con esta estructura, la solucin del ejemplo 10 puede representarse con el siguiente algoritmo
expresado en seudocdigo:
Algoritmo Agencia1
Comienzo
real imp, total
carcter codigo
Escribir Ingresar importe de fbrica y cdigo de automvil
Leer imp, codigo
Segn (codigo)
A ,E : total= imp *1.05
B,D : total= imp *1.07
C : total= imp *1.08
de otro modo: Escribir Se ingres mal el cdigo
finsegun
Escribir Precio del automvil, incluido el impuesto, total
Fin
Esta estructura es utilizada para realizar mens, siendo esto un conjunto de opciones para que el
usuario elija entre una de otras posibilidades.
Ejemplo 11: Si un usuario de un cajero automtico puede realizar tres posibles transacciones:
consulta de saldo, extraccin de fondos o depsito, el algoritmo que permite seleccionar la operacin
puede ser el siguiente
Precondicin: El saldo e importe son nmeros reales mayores o iguales a cero, la opcin un
caracter
Poscondiciones: El saldo actualizado es un nmero real mayor o igual a cero.

Algoritmo Cajero
Comienzo
real saldo, importe
caracter opci
Leer saldo
Escribir Ingrese
Escribir C consulta de saldo
Escribir E extraccin
Escribir D depsito
Escribir T finalizar transaccin
Escribir Ingrese opcin
Leer opci
Segn (opci)
C ,c : Escribir Su saldo es , saldo


Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
43
E,e : Escribir Ingrese monto a extraer ,
Leer importe
Si (saldo > importe)
Entonces Escribir Saldo anterior , saldo
saldo= saldo - importe
Escribir Saldo Actual, saldo
Sino Escribir La operacin no puede ser realizada, su saldo actual es de , saldo
Finsi
D,d : Escribir Ingrese el monto a depositar
Leer importe
Escribir Saldo anterior , saldo
saldo= saldo + importe
Escribir Saldo Actual, saldo
T,t : Escribir Ud. Ingres finalizar transaccin
de otro modo: Escribir Cdigo incorrecto, intente nuevamente
Finsegun
Fin

1.8.4.3 Iteracin
Las Acciones estructuradas iterativas o repetitivas, se utilizan cuando se debe repetir la ejecucin
de una o ms acciones.
Para referirse a las Acciones iterativas se usan los trminos ciclo o bucle. La accin o acciones que
se repiten se llaman cuerpo del ciclo y cada repeticin del bucle se conoce como iteracin o pasada
del bucle.
Las estructuras iterativas que se conocen, difieren en el modo en que controlan el nmero de veces
que el cuerpo del ciclo debe repetirse.
La repeticin puede ser controlada por contador o por un variable centinela.

1.8.4.3.1 Estructura Para - FinPara
La estructura ParaFinPara es una estructura iterativa, por cuanto representa la ejecucin repetida
de una o ms acciones. En esta estructura, el nmero de veces que se ejecuta el conjunto de
Acciones, es conocido con anticipacin, es un nmero fijo, por ello tambin se la conoce como
repeticin definida o bucle controlado por contador.
El seudocdigo que representa esta estructura es:







Donde: v variable que controla el ciclo o variable de control.
vi variable que contiene el valor inicial de la variable v
vf variable que contiene el valor final de la variable v.
El cuerpo del ciclo puede contener acciones simples o estructuradas.
La primera vez que se ejecuta la estructura Para-FinPara, v toma el valor vi y compara que no
supere el valor de vf. En este caso se ejecutan las acciones del cuerpo del ciclo que estn entre los
delimitadores Para y FinPara. Despus de la primera iteracin se incrementa en 1 el valor de v, y se
vuelve a controlar que sea menor o igual a vf, en este caso se vuelve a iterar, se contina repitiendo
el proceso hasta que el valor de v supere el valor de vf.
Para v desde vi hasta vf
accin 1
accin 2


accin n
FinPara
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
44
Para v desde vi hasta vf con paso P
accin 1
accin 2


accin n
FinPara




La mayora de los lenguajes de programacin admiten que la variable de control se pueda
incrementar o decrementar en un valor que puede ser distinto de 1. Por ello, el siguiente es el
formato general de la estructura en donde el valor de Paso P, indica en cuanto se debe incrementar,
o decrementar (si es negativo), la variable de control despus de cada iteracin.





El esquema que caracteriza a esta estructura de repeticin es:








Esta estructura se puede utilizar para resolver el problema referido a los 100.000 usuarios de
Energa San Juan, a los que se debe informar su situacin respecto del rgimen de castigos
aplicado.
El algoritmo que corresponde a esta situacin puede ser:

Algoritmo Consumos
Comienzo
real consumo_actual,consumo_anterior
constante precio=0.0699
constante cfijo=9.05
entero N, i /* se declara la variable de control i
Escribir Ingrese cantidad de usuarios
Leer N
Para i desde 1 hasta N
Escribir Ingrese consumo actual y consumo anterior
Leer consumo_actual, consumo_anterior
SubtEnergia = cfijo + ((consumo_actual / 2) * precio)
Valor_limite = consumo_anterior + 100
Si (consumo_actual > valor_limite)
Entonces Escribir El usuario debe pagar un recargo de , subtEnerga * 0.20
Escribir Importe Subtotal Energa , subtEnerga *1.20
Sino Si ( consumo_actual < consumo_anterior * 1.1 - 100)
Entonces Escribir El usuario tiene un descuento de , subtEnerga * 0.15
Escribir Importe Subtotal Energa, subtEnerga * 0.85
Sino Escribir NO corresponde bonificacin ni recargo, importe es, subtEnerga
Finsi
Finsi
FinPara
Fin
Cuerpo
del
Ciclo




Figura 1.8. Estructura Iterativa Para FinPara



Incrementa v



v = vi



V



v vf



F



Cuerpo del Ciclo



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
45
Los siguientes son ejemplos del uso de esta estructura iterativa:
Ejemplo 12:
Escribir el triple de los nmeros pares comprendidos entre 200 y 440.
Algoritmo Triple
Comienzo
entero c
Para c desde 200 hasta 440
Si ((c resto 2) == 0)
Entonces Escribir el triple de, c , es , c*3
Finsi
FinPara
Fin

Actividad 9:
Escriba un algoritmo que permita optimizar el algoritmo anterior.
Ejemplo 13:
Dado un nmero entero positivo N, escribir sus divisores.
Algoritmo Divisores
Comienzo
entero i, N
Leer N
Escribir Nmeros divisores de, N
Para i desde 1 hasta N/2
Si ((N resto i) == 0)
Entonces Escribir i
FinSi
FinPara
Fin

Actividad 10:
Realice el seguimiento del algoritmo anterior para N=16
1.8.4.3.2 Estructura Mientras - FinMientras
La estructura Mientras-FinMientras es una estructura iterativa, en la que el nmero de veces que se
ejecuta el conjunto de Acciones, depende del valor de verdad de una condicin que se evala al
comienzo del ciclo.
El seudocdigo asociado es:








El comportamiento de esta estructura es el siguiente, las Acciones del cuerpo del ciclo se repiten
mientras la condicin es verdadera.
Cuerpo
del
Ciclo




Mientras (<condicin> )
accin 1
accin 2
accin 3


accin n
FinMientras





Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
46
Cuando la condicin es falsa se sale del ciclo y se contina con la Accin que sigue al FinMientras.
Como la condicin se evala antes de la ejecucin de las acciones del cuerpo del ciclo, por lo que
se lo denomina bucle pretest, las mismas podrn ejecutarse cero o ms veces, dependiendo del
resultado de la condicin.
El esquema correspondiente a su funcionamiento es:











En esta estructura, no se conoce con anticipacin el nmero de veces que se ejecutar el ciclo, por
ello se la denomina estructura de repeticin no definida. En general para estos casos se utiliza una
variable centinela para controlar la ejecucin. La variable centinela que indica fin de datos, es
elegida con un valor diferente a los valores de ejecucin exitosa del ciclo.
La ejecucin del bucle tambin puede ser controlado utilizando banderas de estado, esto es,
variables booleanas que se definen con un estado inicial, por ejemplo falso y se redefine en
verdadero, cuando dentro del bucle ocurre un suceso que implica su detencin.

Ejemplo 14:
Leer nmeros positivos, mostrar los que son mltiplos de 5. El ingreso de valores finaliza cuando se
lee el nmero cero.
Precondicin: nmeros enteros mayores que cero
Poscondicin: nmeros enteros positivos mltiplos de 5.

Algoritmo Multiplo
Comienzo
entero numero
Escribir Ingresar un nmero positivo, finalizar con 0
Leer numero /* Lectura Anticipada
Mientras ( numero > 0 )
Si ((numero resto 5) == 0)
Entonces Escribir numero
Finsi
Escribir Ingresar un nmero positivo, finalizar con 0
Leer numero
FinMientras
Fin
En este ejemplo se realiza una lectura antes de entrar al Mientras - FinMientras para poder evaluar
la condicin la primera vez, esto se conoce como lectura anticipada. Adems, antes de finalizar la
estructura se realiza una nueva lectura, que permite el ingreso de los distintos nmeros ya que de
lo contrario el proceso se repetira siempre con el primer valor ledo. En este caso, si el primer
nmero ingresado es positivo el proceso se repetir indefinidamente, producindose un bucle
infinito. La lectura de diferentes valores (en este caso el valor cero) permite finalizar el ciclo, tal como
lo prev el algoritmo.
Figura 1.9 Estructura Iterativa Mientras-FinMientras



Cuerpo del Ciclo



Condicin



V



F



Cuerpo
del
Ciclo




Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
47
Ejemplo 15: En una casa de comercio se desea determinar el valor de la deuda de un cliente
moroso, cuyo nmero de identificacin es conocido. A su vez se ingresan por teclado, nmero de
identificacin y deuda de cada uno de los morosos.

Algoritmo Deuda
Comienzo
entero numero, num
real deuda
booleano ban
ban=falso
Escribir Ingresar el nmero del usuario moroso
Leer num
Mientras ( ban==falso )
Escribir Ingrese los nmeros de los usuarios morosos y el importe de su deuda
Leer numero, deuda
Si (numero ==num )
Entonces ban=verdadero /* se cambia el estado de la bandera para detener las iteraciones
Finsi
Fin Mientras
Escribir La deuda del usuario, num , es, deuda
Fin
Precondicin: Los nmeros de identificacin son nmeros enteros positivos y la deuda nmero real
positivo.
Poscondicin: nmero real positivo como valor de la deuda
Ejercicio 16
Considerar nuevamente el enunciado de los usuarios de la empresa Energa San Juan, bajo el
supuesto que se desconoce la cantidad de usuarios. Resolverlo teniendo en cuenta esta ltima
restriccin.
Para el ingreso de los datos, ser necesario determinar un elemento centinela, y asignarle, por
ejemplo, al consumo actual el valor -1.
El algoritmo puede ser:
Algoritmo ConsumosOtro
Comienzo
real consumo_actual , consumo_anterior , subtEnerga, valor_limite
constante precio=0.0699
constante cfijo=9.05
Escribir Ingrese consumo bimestral actual
Leer consumo_actual /* Se elige como centinela
Mientras (consumo_actual <> -1)
Escribir Ingrese consumo bimestral correspondiente al mismo periodo del ao anterior
Leer consumo_anterior
subtEnergia = cfijo + ((consumo_actual / 2) * precio)
Valor_limite = consumo_anterior + 100
Si (consumo_actual > valor_limite)
Entonces Escribir El usuario debe pagar un recargo de , subtEnerga * 0.20
Escribir Importe Subtotal Energa , subtEnerga *1.20
Sino Si (consumo_actual < consumo_anterior * 1.1)
Entonces Escribir El usuario tiene un descuento de , subtEnerga * 0.15
Escribir Importe Subtotal Energa , subtEnerga * 0.85
Sino Escribir NO corresponde bonificacin ni recargo, su importe es, subtEnerga
Finsi
Finsi
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
48
Escribir Ingrese consumo bimestral actual
Leer consumo_actual /*Se actualizan los datos, ingresando el consumo de otro usuario
Fin Mientras
Fin

NOTA: En los procesos iterativos, el control de la repeticin de las acciones se realiza a partir de la
informacin contenida en las variables. En el caso de la estructura Mientras, la condicin acta como
variable de control del bucle, sta debe tener por tanto un valor inicial y actualizarse, ya que si su
valor no cambia se tendr un bucle infinito.

Actividad 11:
Realizar el seguimiento de los siguientes algoritmos, indicando los casos que pueden ocasionar
errores de ejecucin. Justificar en estos casos la respuesta.
11.1
Algoritmo Receta
Comienzo
cadena nombre
entero calorias
Escribir Ingrese nombre del ingrediente de la receta, finalice con FIN
Leer nombre
Mientras ( nombre!=FIN )
Escribir Ingrese caloras del ingrediente
Leer calorias
Si ( caloras > 50)
Entonces Escribir Intente reemplazar el ingrediente , nombre
Finsi
Escribir Ingrese nombre del ingrediente de la receta, finalice con FIN
Leer nombre
FinMientras
Fin

Lote de prueba: Azcar 30
Manteca 80
Huevos 55
Harina 35
Leche 25
FIN

11.2
Algoritmo Deudas
Comienzo
entero numero, num
real deuda
booleano ban
ban=falso
Escribir Ingresar el nmero del usuario moroso
Leer num
Mientras( ban== falso )
Escribir Ingrese los nmeros de los usuarios morosos y el importe de su deuda
Leer numero, deuda
Si (numero ==num )
Entonces Escribir la deuda del usuario, num , es, deuda
Finsi
Fin Mientras
Fin
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
49
Lote de prueba: nmero de usuario 3245
Lista de usuarios morosos: 2342
1189
890
3245
2727
657
4441
:
11.3
Algoritmo Ciclo
Comienzo
Entero i, num1, num2
Booleano z
z=falso
num2=2
Para i desde 1 hasta 5
Leer num1
Si ((num1 > num2) y (num1*2 30 > 0))
Entonces
z = verdadero
num2= num1 - 10
Escribir num2
finsi
FinPara
Si (z = = falso)
Entonces Escribir nunca se cumpli la condicin
Sino Escribir se cumpli la condicin
finsi
Fin
Lote de prueba: 18, 6, 20, 5, 11,7

11.4
Algoritmo Control
Comienzo
Entero d, c
booleano b
b = verdadero
d = 0
Leer c
Mientras ( (c * 5 - 15 < > 0 ) y (b==verdadero))
d=d+2
Si (d - 7 < 2)
Entonces Escribir El valor de d es:, d
Escribir d + c
Sino b=falso
finsi
Leer c
Fin mientras
Escribir valor de d es:, d
Fin
Lote de prueba: 1, 0, 4, -5, 6, 3
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
50
Actividad 12:
Leer pares de nmeros. Escribir para cada par su producto e indicar si la primera componente es
mltiplo de la segunda. La lectura finaliza cuando el par ledo tiene ambas componentes nulas.
Construir el algoritmo que resuelve el problema y realizar las siguientes actividades:
- Identificar las distintas estructuras de control que se utilizan.
- Identificar precondicin y postcondicin
- Identificar la expresin que acta como condicin
- Realizar el seguimiento para los siguientes pares de valores: (30,5) (20, 80) (20,0) (0,0) (2,5) (9,15)
- Indicar:
Cul es el ltimo par de nmeros ledo?
Se muestra el producto del ltimo par de nmeros ledo? Por qu?
Cuntas veces se ejecuta el cuerpo del ciclo?
Qu valor de la condicin permite que se itere el ciclo?
Qu valor de la condicin permite que finalice el ciclo?
Cuntas veces se ejecutar, como mnimo, el cuerpo del ciclo del algoritmo, para cualquier lote
de prueba?

Actividad 13:
Dada la ecuacin -3x +y +4=0, leer pares de nmeros enteros e indicar cuales son races. El
ingreso de pares finaliza cuando ambas componentes son cero. Construir el algoritmo que resuelve
el problema e identificar precondicin y poscondicin.


Actividad 14:
Leer un conjunto de 150 nmeros e indicar si est o no ordenado en forma descendente. Construir el
algoritmo que resuelve el problema e identificar precondicin y poscondicin.

1.8.4.3.3 Estructura Hacer - Mientras
En esta estructura iterativa, el nmero de veces que se ejecuta el conjunto de acciones depende del
valor de verdad de una condicin que es evaluada al final del ciclo.
En este caso el cuerpo del ciclo se ejecuta 1 o ms veces.
El seudocdigo que caracteriza esta Accin es:







El esquema de esta estructura de repeticin es:








Hacer
accin 1
accin 2

accin n
Mientras(<condicin>)

F



x. V



Ciclo


y.
Figura 1.10 Estructura Iterativa Hacer - Mientras


Condicin


z.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
51
Ejemplo 17:
Algoritmo Par
Comienzo
entero nro
caracter opcion
Hacer
Leer nro
Si ((nro resto 2)== 0)
Entonces
Escribir El nmero es par
Sino Escribir El nmero es impar
Finsi
Escribir Desea ingresar ms datos? (S/N)
Leer opcion
Mientras ((opcion = S ) o ( opcion == s))
Fin

Actividad 15
El siguiente algoritmo lee pares de nmeros enteros y muestra la suma de sus componentes hasta
que dicha suma es mayor que 200.
Algoritmo Sumas
Comienzo
entero n1,n2,suma
Hacer
Leer n1,n2
suma=n1+n2
Escribir suma
Mientras (suma <= 200)
Fin

Realizar el seguimiento del algoritmo para los pares de valores, (130,25) (-20,-180) (100,100)
(0,250) (34,650) y responder:
- Se muestra la suma del ltimo par de nmeros ledo? Por qu?
- Qu valor de la condicin permite que se itere el ciclo?
- Qu valor de la condicin permite que finalice el ciclo?
- Cuntas veces se ejecutar el ciclo?
- Cuntas veces se ejecutar, como mnimo, el ciclo del algoritmo, para cualquier lote de prueba?

1.8. 4.3.4 Bucles Anidados
As como es posible encontrar un Si dentro de otro Si, dando origen a las estructuras al ternativas
anidadas, los bucles anidados constan de un bucle externo con uno o ms bucles internos.
Se pueden anidar las distintas estructuras iterativas con la restriccin que la estructura interna debe
estar totalmente incluida en la externa, evitando solapamientos.
El funcionamiento, para el caso de dos bucles anidados es el siguiente, por cada iteracin del bucle
exterior, se ejecuta completamente el interno. Se contina de la misma manera hasta que el bucle
exterior completa las iteraciones.
El mismo criterio rige para ms de dos bucles anidados.


Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
52
Los siguientes anidamientos son vlidos:
Mientras ( condicin 1) Hacer
Para M desde 5 hasta 45 Para j desde 15 hasta 1 con Paso -2

Mientras ( condicin 1)
FinPara
Fin Mientras Fin Mientras

FinPara
Mientras (condicin 2)

En cambio no es vlido el anidamiento siguiente, debido a que el bucle interno no se ha terminado
de ejecutar cuando ocurre una nueva repeticin del bucle externo:
Mientras ( condicin 1)

Para M desde 5 Hasta 45



Fin Mientras
FinPara

Ejemplo 18:
El siguiente algoritmo permite construir la tabla de multiplicar de los nmeros 2 al 9
Algoritmo Tablas
Comienzo
entero i,j
Para i desde 2 hasta 9
Escribir Tabla del numero, i
Para j desde 1 Hasta 10
Escribir i , * , j = , i*j
FinPara
Escribir
FinPara
Fin

Para interpretar el funcionamiento de los bucles se realizar el seguimiento para la obtencin de la
tabla del 2 y del 3.
i j SALIDA
2 Tabla del nmero 2
1 2*1= 2
2 2*2= 4
3 2*3= 26
: :
10 2*10= 20


Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
53









Ejercicio 19:
El INPRES (Instituto Nacional de Prevencin Ssmica) ubicado en la ciudad de San Juan ha dividido
el continente en 7 zonas ssmicas. Necesita realizar un estudio, para lo cual cuenta con la
informacin de los sismos registrados en los ltimos 3 aos. Por cada zona se ingresa en forma
ordenada, segn la fecha de ocurrencia, el nombre de la provincia, la magnitud del sismo
registrado, en escala Ritcher, y profundidad del epicentro. Por cada zona, el ingreso de informacin
finaliza con nombre de provincia NADA MAS.
Se necesita realizar un algoritmo que permita mostrar por cada zona, el nombre de la o las ciudades
en donde los sismos se produjeron con epicentros a una profundidad no mayor de 200 km y que
supearon los 5 grados de magnitud.

Representacin de problema:
En este tipo de problemas, para determinar la salida solicitada, conviene realizar una representacin
hipottica de los datos de entrada, tratando de considerar todos los casos que se pudieran
presentar, an los excepcionales.











Los datos hipotticos indican que en la zona 1 se registraron 6 sismos, 8 en la 2, mientras que en la
zona 3 no se registraron sismos
Precondicin: el nombre de la provincia es una cadena de caracteres, la magnitud del sismo
registrado y la profundidad del epicentro son nmero reales positivos. La zona es un nmero entero
Postcondicin: cadena de caracteres con el nombre de la o las ciudades que cumplen condicin

El proceso requiere el uso de dos estructuras anidadas. El bucle externo, para el tratamiento de
cada zona, puede ser controlado por un contador, ya que se conoce de antemano que son 7 zonas.
Para el bucle interno sin embargo, como la cantidad de sismos registrados no es conocida a priori y
adems es variable para las distintas zonas, necesita el uso de un centinela. Conviene entonces,
usar la estructura Para, de manera de considerar las zonas y Mientras para el tratamiento de los
sismos de cada una de ellas.

3 Tabla del nmero 3
1 3*1= 3
2 3*2 =6
3 3*3 =9
: :
10 3*10=30

Zona 1
Florida 6.7 300
California 4.2 250
Carolina 5.9 180
California 3.8 400
Florida 7.1 200
Nevada 4.2 320
NADA MAS


aa.
Zona 2
Kobe 8 120
Kobe 5.3 90
Kobe 7.8 200
Kobe 6.1 150
Tokio 6.3 350
Yamaguchi 5.2 280
Kioto 4.9 320
Osaka 7.3 189
NADA MAS



Zona 3
NADA MAS



Zona 7
San Juan 5.1 622
San Juan 4.2 180
Mendoza 6 278
Crdoba 3.5 542
San Luis 3.7 345
Catamarca 3.1 453
Mendoza 4 190
NADA MAS



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
54
El algoritmo que puede resolver esta situacin es:
Algoritmo Sismos
Comienzo
entero zona, z
cadena provincia
real magni, prof
Para z desde 1 hasta 7
Escribir Ingrese nombre de provincia - Finalice con NADA MAS
Leer provincia
Escribir ZONA , z
Mientras (provincia != NADA MAS)
Escribir Ingrese magnitud y profundidad
Leer magni, prof
Si ((magni > 5) y (prof<= 200))
Entonces Escribir provincia
Finsi
Escribir Ingrese nombre de provincia - Finalice con NADA MAS
Leer provincia
Fin Mientras
FinPara
Fin

1.9 Contadores y acumuladores
En la vida diaria, nos enfrentamos constantemente a situaciones en las que se debe contar o sumar
valores representativos de una problemtica en particular, es as que en los primeros aos escolares
estas operaciones son bsicas para el aprendizaje.
Situaciones como las que se ven representadas en las siguientes tablas permiten, por ejemplo,
determinar la cantidad de equipos que intervienen en un campeonato (contar), calcular el total de
goles realizados (acumular) determinar la magnitud promedio de los sismos registrados en una
zona ssmica determinada (contar y acumular).











En este apartado trataremos de entender como una computadora puede realizar las operaciones de
contar y sumar.
Para definir un contador, se necesita una variable entera que permita calcular la frecuencia de un
evento. El contador se debe inicializar con el valor 0 (cero) y luego se va incrementando en 1 (uno)
cada vez que ocurre el evento que se desea contar.

entero conta /* declaracin de variable
conta=0 /* inicializacin del contador
conta = conta + 1 /*incrementa el valor del contador en una unidad, el resultado lo asigna nuevamente a
la variable
Equipo Goles
Boca 21
River 20
Independiente 25
Racing 17
Estudiantes 23
Tabla 1.7
Provincia Magnitud Profundidad
San Juan 5.1 622
San Juan 4.2 180
Mendoza 6 278
Crdoba 3.5 542
Tabla 1.8



Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
55
Un acumulador o sumador es una variable de tipo entera o real, dependiendo de los valores a
acumular, que permite almacenar sumas sucesivas. El acumulador se debe inicializar en 0 (cero) y
luego va incrementando su valor en una constante o variable.
entero v,acum /* declaracin de variable
acum=0 /* inicializacin del acumulador
acum = acum +v /* incrementa el valor del acumulador en el valor de la variable V

Ejemplo 20:
El siguiente es el algoritmo que permite determinar la magnitud promedio de los sismos registrados
en la zona ssmica de Argentina y la cantidad de sismos que se produjeron a una profundidad no
mayor de 200 km.
Algoritmo SismosProm
Comienzo
entero C, ct /* se necesitan 2 contadores
cadena provincia
real magni, prof, S /* el sumador S tiene el mismo tipo de la variable que acumula magni
1. C=0 /* inicializacin del contador fuera de la estructura iterativa
2. S=0 /* inicializacin del acumulador fuera de la estructura iterativa
3. ct=0
4. Escribir Ingrese nombre de la provincia, finalice con NADA MAS
5. Leer provincia
Mientras (provincia != NADA MAS)
Escribir Ingrese magnitud y profundidad de sismos registrados en Argentina
6. Leer magni, prof
7. S=S + magni /* se acumula cada una de las magnitudes
8. ct=ct+1 /* se cuentan los sismos registrados
Si (prof<= 200)
9. Entonces C=C+1 /* se incrementa el contador, si se cumple la condicin especificada
Finsi
10. Escribir Ingrese nombre de la provincia, Finalice con NADA MAS
11. Leer provincia
FinMientras
12. Escribir Magnitud promedio de sismos registrados en Argentina, S/ct
/* se muestran los resultados fuera de la estructura
13. Escribir Total de sismos con profundidad no mayor a 200 km , C
Fin
El siguiente es el seguimiento de este algoritmo considerando como lote de prueba la tabla 1.8
Accin C ct provincia magni prof S Salida
1 a 3 0 0 0
4 Ingrese nombre de la provincia, finalice con
NADA MAS
5 San Juan
6 5.1 622
7 5.1
8 1
10 Ingrese nombre de la provincia, finalice con
NADA MAS


Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
56
Accin C ct provincia magni prof S Salida
6 4.2 180
7 9.3
8 2
9 1
10
Ingrese nombre de la provincia, finalice con
NADA MAS
11 Mendoza
6 6 278
7 15.3
8 3
10
Ingrese nombre de la provincia, finalice con
NADA MAS
11 Crdoba
6 3.5 542
7 18.8



8 4
10
Ingrese nombre de la provincia, finalice
con NADA MAS
11 NADA MAS
12
Magnitud promedio de sismos registrados
en Argentina , 4.29
13
Total de sismos con profundidad no mayor
a 200 km , 2
Nota: Cuando se trabaja con estructuras anidadas debe prestarse especial atencin a la posicin
dentro del algoritmo donde se inicializa, modifica y muestra el resultado de cada contador y
acumulador utilizado, de lo contrario pueden obtenerse resultados inesperados .

Actividad 16:
Dados dos nmeros enteros positivos a y b, calcular la potencia a
b

Actividad 17:
Dado un nmero entero positivo, calcular su factorial.
Recordar que el factorial se define como:
1 si n=0
n!
1*2*3*.*n si n>0

Actividad 18:
Una encuestadora del medio ha realizado una encuesta de opinin para determinar la intencin de
voto para las prximas elecciones, respecto de los tres partidos mayoritarios de la provincia. Las
personas fueron seleccionadas al azar. Para la encuesta se trabaj con encuestadores por los
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
57
distintos departamentos de la provincia, en donde fueron seleccionadas muestras proporcionales al
total de habitantes. Por cada persona se registra edad, sexo ( F M) y cdigo de voto.
El cdigo de voto es: A: Partido Justicialista B: Partido Radical C: Partido Bloquista D: Otros
E: No sabe o no contesta
En la sede central de la encuestadora se deben procesar los datos obtenidos, sabiendo que el
ingreso de los mismos finaliza con edad =0, para informar:
- Total de encuestados.
- Porcentaje de votos para cada uno de los tems considerados (A..E).
- Edad promedio de los votantes de cada partido poltico.
- Partido ms votado por las mujeres.(suponiendo que los partidos obtuvieron distinta cantidad de
votos)

Actividad 19:
Considerar el enunciado anterior, pero suponiendo que la informacin ha sido ordenada por cada
uno de los 19 departamentos. Por cada departamento se ingresa el nombre y los datos de los
encuestados, que finalizan con edad =0.
La salida que se desea obtenerse la siguiente:































Departamento 1: Angaco
Total de encuestados _______

Porcentaje de votos:
Partido Justicialista: _______
Partido Radical: _______
Partido Bloquista: _______
Otros _______
No sabe/ No contesta:_______

Edad promedio de los votantes
Partido Justicialista: _______
Partido Radical: _______
Partido Bloquista: _______
Otros _______
No sabe/ No contesta:_______

Partido ms votado por las mujeres_______



Departamento 19 : Valle Frtil
Total de encuestados _______

Porcentaje de votos:
Partido Justicialista: _______
Partido Radical: _______
Partido Bloquista: _______
No sabe/ No contesta:_______

Edad promedio de los votantes
Partido Justicialista: _______
Partido Radical: _______
Partido Bloquista: _______
No sabe/ No contesta:_______

Partido ms votado por las mujeres_______
:
:




Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
58
Actividad 20:
Una distribuidora mayorista posee 5 cajas. Se realiza un balance y como parte del mismo se desea
obtener informacin a partir de los datos de las boletas confeccionadas a sus clientes, sabiendo que
stos se procesan ordenados por caja. En cada boleta registra tipo de cliente, importe total. El tipo
de cliente puede ser: 1.Mayorista 2.Almacn 3.Minorista.
El ingreso por cada una, finaliza con importe = 0.
Calcular los datos que permitan completar la siguiente planilla:
Caja 1
Importe total Cantidad de boletas
Mayoristas
Almacn
Minorista
TOTAL
:
Caja 5
Importe total Cantidad de boletas
Mayoristas
Almacn
Minorista
TOTAL










1.10 Clculo de mximos y mnimos de un conjunto de valores
Muchos problemas requieren determinar el menor o mayor valor de entre un conjunto de valores
dados. Por ejemplo si se desea indicar la menor nota obtenida por los alumnos que rindieron un
examen de ingreso a una universidad, o encontrar la temperatura mxima registrada en una zona
determinada, o el rango de valores entre los que se encuentran los sueldos de empleados de una
empresa, es necesario determinar un proceso que permita generalizar este tipo de clculos.
Para obtener el mximo, se requiere definir una variable del mismo tipo de los datos, la que puede
identificarse con el nombre max. Esta variable debe ser inicializada con un valor pequeo, elegido
de tal manera de asegurar que cualquier otro valor que se ingrese ser superior a l. El clculo
consiste en un proceso repetitivo en el que cada valor del conjunto es comparado con el de la
variable max, sustituyndolo en caso de ser superior, de esta manera al finalizar el bucle, en la
variable max queda almacenado el mayor valor procesado.
Se debe notar que la eleccin del valor inicial como el menor de todos los posibles del lote, asegura
que en la primera iteracin, se almacene en max el primer valor ledo, el cual ser reemplazado
cada vez que se procese un valor mayor.
TOTAL EMPRESA
Importe total Cantidad de boletas
Mayoristas

Almacn

Minorista

TOTAL
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
59
Ejemplo 21:
Una empresa de servicios realiza mensualmente el control de asistencia de sus empleados, para lo
cual cuenta con el nombre, documento y total de faltas de aquellos empleados que tuvieron
inasistencias en el mes.
Se necesita conocer el nombre y documento del empleado que registr mayor cantidad de faltas,
suponiendo nico.
Especificacin de problema
Datos de Entrada Salida Proceso
Nombre
Documento
Cantidad de faltas
Precondicin : Nombre: ca-
dena de caracteres,
Documento nmero real y
Cantidad de faltas: nmero
entero
Nombre y documento del
empleado con mayor cantidad
de faltas.
Poscondicin: Nombre cadena
de caracteres y documento un
nmero real
Proceso iterativo: controlado
por centinela.
Calcular y mostrar valor
mximo
Es claro que para procesar la informacin de los empleados con inasistencias, es necesario realizar
un proceso iterativo. Como no se conoce el total de empleados en esta situacin sera conveniente
utilizar la estructura Mientras definiendo como centinela el nmero de documento igual a cero. Se
debe notar tambin que para responder a la solicitud planteada se necesitan definir tres variables
auxiliares, que almacenen la cantidad mxima de inasistencias, el nombre y documento del
empleado al que corresponde esa cantidad.
El algoritmo para resolver esta situacin puede ser:
Algoritmo Faltas
Comienzo
cadena nomb, nomax /* declaracin de variables
entero cf,doc,documax,cfmax
cfmax=0 /* se inicializa a variable con un valor pequeo
Escribir Ingrese documento de empleado, finalice con 0
Leer doc
Mientras ( doc<>0)
Escribir Ingrese nombre y cantidad de inasistencia en el mes
Leer nomb, cf
Si ( cf > cfmax)
Entonces cfmax= cf /* se modifica el valor del mximo por uno mayor
documax=doc /* se almacena la informacin del empleado
nomax= nomb
Finsi
Escribir Ingrese documento de empleado, finalice con 0
Leer doc
FinMientras
Escribir El empleado , nomax, documento, documax, registr la mayor cantidad de faltas
Fin

Para los casos como el considerado, en que todos los datos son positivos, se puede seleccionar
como centinela el cero o un nmero negativo. Pero si los valores a procesar pueden ser tambin
negativos, como el caso de temperaturas, se deber prestar atencin al valor inicial seleccionado.
Es decir que para el clculo del mximo o mnimo de un conjunto de valores, utilizando este
procedimiento, es necesario conocer el rango posible de los datos a tratar.
Unidad 1: Algoritmos
Algoritmos y Resolucin de Problemas
60
El procedimiento para el clculo del mnimo sigue el mismo criterio, solamente que el valor con que
se inicializa la variable que contendr el mnimo, deber ser lo suficientemente grande de manera
de asegurar que es mayor que cualquiera de los datos a procesar. El valor de esta variable se
actualizar cada vez que el nmero procesado sea menor, de manera que al finalizar el bucle, la
variable tendr el menor de todos los valores.

Actividad 21
Realizar las modificaciones necesarias al algoritmo construido en la actividad 20 de tal manera que
adems se pueda indicar, el nmero de caja que registr la venta total mxima y el tipo de cliente
que menos compras realiza a la distribuidora.

Actividad 22
Defensa al Consumidor recibe numerosas quejas acerca del sabor a cloro en el agua que se
consume en el gran San Juan. Por ello, ha decidido solicitar al departamento de qumica de la
Universidad Nacional de San Juan, realizar un estudio del porcentaje de cloro en el agua , teniendo
en cuenta 5 zonas.
Se tomaron 10.000 muestras en las que se registr nmero de zona y porcentaje de cloro. Se
necesita conocer el rango de variacin de los porcentajes encontrados y el nmero de zona al que
corresponden dichos valores.

Actividad 23:
Una ferretera mayorista tiene 5 zonas de reparto (1: Centro, 2:Noreste, 3: Noroeste, 4:
Sureste, 5:Suroeste) y sus productos clasificados en tres rubros (1: pinturas, 2:materiales de
construccin, 3: herramientas). Por cada zona se ingresan los siguientes datos de sus clientes:
nombre, rubro de artculos y monto de de la compra.
Se desea conocer por cada zona la cantidad de clientes, el nombre del cliente que realiz la mayor
compra (suponiendo nico) y el total recaudado por rubro.
Determinar adems el total recaudado por la ferretera.

1.11 Bibliografa
- Casanova Faus, Asuncin Programacin Departamento de Sistemas Informticos y Compuacin-
Escuel universitaris de Informtica ,Unuiversidad Politcnica de Valencia .Editor. servicio de
Publicaciones ISBN 84-7721-233-3 1993
- Criado Clavero, M Asuncin.(2006) Programacin en Lenguajes Estructurados Alfaomega.Ra-
Ma
- De Giusti, Armando E., Madoz Maria y otros. Algoritmos, datos y programas con aplicaciones en
Pascal, Delphi y Visual Da Vinci. LIDI. Facultad de Informtica Universidad Nacional de la Plata.
- Polya George (1972) Cmo plantear y resolver problemas. Mxico. Editorial Trillas
- Brassard, G. & Bratley, P. "Fundamentos de Algoritmia". Prentice-Hall. 1997.
- Sonia V. Rueda Alejandro J. Garca, Programa de Ingreso 2003. Anlisis y Comprensin de
Problemas. Fundamentos, Problemas Resueltos y Problemas Propuestos. Departamento de
Ciencias e Ingeniera de la Computacin. Universidad Nacional del Sur. Noviembre de 2002
- Pginas web consultadas
Algoritmos Fundamentales http://old.algoritmia.net/alg/
Algoritmos Computacionales http://www.monografias.com/
Enseando a Aprender Lissete Poggioli htpp:// www.fpolar.org.ve/poggioli/poggio51.htm
Algoritmia: Bases y objetivos. http://old.algoritmia.net/intro/

Das könnte Ihnen auch gefallen