You are on page 1of 11

Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI

Profesora: Mg. Lic. Alicia Beatriz Paur


1
UNIDAD 3 - Expresin de soluciones en un lenguaje algortmico

1. QU ES UN ALGORITMO? ............................................................................................................... 1
1.1. Un poco de historia ..................................................................................................................... 1
1.2. Definicin ................................................................................................................................... 2
1.3. Caractersticas de un algoritmo .................................................................................................. 2
2. ETAPAS PARA LA RESOLUCIN DE PROBLEMAS, RELACIN CON MTODO DE PLYA ....... 3
2.1. Definicin Del Problema ............................................................................................................. 3
2.2. Anlisis del Problema ................................................................................................................. 3
2.3. Diseo del Algoritmo .................................................................................................................. 3
2.4. Prueba de Escritorio o Depuracin ............................................................................................. 4
3. LENGUAJES DE EXPRESIN DE UN ALGORITMO ....................................................................... 4
3.1. GRFICOS: Diagrama de Flujo .................................................................................................. 5
3.2. NO GRFICOS: Descripcin Verbal o en Lenguaje Natural ....................................................... 8
3.3. NO GRFICOS: Pseudocdigo .................................................................................................. 9
3.4. Diferencia entre algoritmos, diagrama de flujo y pseudocdigo ................................................ 11


REPRESENTACIN DE LA SOLUCIN DE UN PROBLEMA
Lo maravilloso de aprender algo, es que nadie puede arrebatrnoslo
B.B.King
Hasta ahora vimos cmo resolver problemas con procedimientos heursticos (tentativas asistemticas
para acercarse a una solucin), ahora comenzaremos a ver cmo resolver problemas aplicando
procedimientos algortmicos (forma sistemtica de llegar a una solucin):

1. QU ES UN ALGORITMO?
1.1. Un poco de historia
La palabra Algoritmo tiene su origen en el nombre del matemtico Persa
Al Khwarizmi (825 d.C.). Su apellido fue traducido al latn como
Algorismus y posteriormente paso al espaol como Algoritmo.
Khwarizmi fue bibliotecario en la corte del califa al-Mamun y astrnomo
en el observatorio de Bagdad. Sus trabajos de lgebra, aritmtica y tablas
astronmicas adelantaron enormemente el pensamiento matemtico y
fue el primero en utilizar la expresin al-yabr (de la que procede la
palabra lgebra). Su trabajo con los algoritmos introdujo el mtodo de clculo utilizando la numeracin
arbiga y la notacin decimal.
Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
2
1.2. Definicin
Una primera aproximacin al concepto de algoritmo es la siguiente:
Un algoritmo es una lista ordenada, organizada, bien definida y finita de operaciones que se debe
seguir para hallar la solucin a un problema especfico.
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver problemas. Algunos
ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las
instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemticas son el
algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para obtener
el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema lineal
de ecuaciones.
Resumiendo, un algoritmo puede definirse como:
Una secuencia ordenada de pasos elementales, exenta de ambigedades
(bien definida), que lleva a la solucin de un problema dado en un tiempo
finito (cantidad finita de operaciones).
Existen dos tipos de algoritmos y son llamados as por su naturaleza:
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del
proceso.
1.3. Caractersticas de un algoritmo
Debe tener un punto particular de inicio y uno de finalizacin.
Debe estar bien definido, no debe permitir dobles interpretaciones, ambigedades, es decir que si
se sigue el algoritmo varias veces proporcionndole los mismos datos, se deben obtener siempre
los mismos resultados.
Sus pasos deben estar ordenados y llevar una secuencia que tienda al punto final.
Debe ser finito en tamao y tiempo de ejecucin.
Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la
definicin del problema.
En un algoritmo se deben de considerar tres partes:
- Entrada: Datos detectados como necesarios y pertinentes para resolver el problema.
- Proceso: Operaciones o clculos necesarios, aplicados a los datos de entradas, para
encontrar la solucin del problema.
- Salida: Respuestas dadas por el algoritmo o Informacin final resultado de los procesos
realizados.
EJEMPLO DE ALGORITMO:
Problema: calcular la media aritmtica de dos nmeros con una calculadora
1. Prender la calculadora
2. Teclear el primer nmero
3. Pulsar la tecla +
4. Teclear el segundo nmero
5. Pulsar la tecla +
6. Pulsar la tecla /
7. Teclear el nmero 2
Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
3
8. Pulsar la tecla =
9. Visualizar el resultado


2. ETAPAS PARA LA RESOLUCIN DE PROBLEMAS, RELACIN CON EL
MTODO DE PLYA

Interpretacin dinmica y cclica de las etapas planteadas por Plya para resolver problemas.
Es totalmente posible relacionar la resolucin de problemas utilizando algoritmos con la metodologa
de Plya, que vemos ms arriba, adaptndola, a continuacin veremos cmo se adaptan las
siguientes etapas:
2.1. Definicin/Comprensin del Problema
Esta fase est dada por el enunciado del problema, el cual requiere una definicin clara y
precisa. Es importante que se conozca o comprenda lo que se desea solucionar,
mientras esto no se conozca del todo, no tiene mucho caso continuar con la siguiente
etapa.
Esta fase se relaciona con el paso 1 comprender, entender el problema del mtodo de Plya.
2.2. Anlisis del Problema
Una vez que se ha comprendido lo que se desea como solucin o resultado final, es necesario:
Identificar los datos de entrada y posibles restricciones o relaciones entre ellos: Es decir con
qu contamos.
Determinar las restricciones y relaciones: que rigen los datos
Especificar los datos de salida o resultados: Cul es la informacin que se desea producir.
Definir los procesos (mtodos y frmulas) que se necesitan para transformar los datos de
entrada en los resultados o datos de salida esperados.
Del anlisis surge un modelo del problema, con lo que se logra la debida abstraccin para comprender
totalmente su comportamiento futuro. Es la etapa de qu queremos hacer y con qu contamos. Aqu
se evala qu pasos o acciones se debern tomar y en qu orden deben realizarse para resolver el
problema.
Esta fase se relaciona con el paso 2 Concebir un plan del mtodo de Plya.
2.3. Diseo del Algoritmo
Luego de analizar detalladamente el problema hasta entenderlo completamente, se procede a elaborar
un algoritmo que lo resuelva por medio de pasos sucesivos y organizados en secuencia lgica,
Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
4
cumpliendo con las caractersticas de un algoritmo, en esta etapa nos interesa el CMO resolveremos
el problema.
Esta fase se relaciona con el paso 3 Ejecucin del plan del mtodo de Plya.
2.4. Prueba de Escritorio, Traza o Depuracin
Se denomina prueba de escritorio a la comprobacin que se hace de un algoritmo para saber si est
bien hecho. Esta prueba consiste en tomar datos especficos como entrada y seguir la secuencia
indicada en el algoritmo hasta obtener un resultado, el anlisis de estos resultados indicar si el
algoritmo est correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes.
Esta fase se relaciona con el paso 4 Revisar, verificar el plan del mtodo de Plya.








Resumen de las etapas para la resolucin de problemas con algoritmos, relacin con metodologa de Plya
3. LENGUAJES DE EXPRESIN DE PROBLEMAS y ALGORITMOS
Un lenguaje de expresin de un algortmico es un conjunto finito y preciso de smbolos, instrucciones o
primitivas y reglas que las rigen, que se utilizan para especificar de manera explcita y unvoca el
proceso que lleva a la solucin buscada. Para ello el lenguaje debe:
Debe estar formado por un nmero de instrucciones finito.
Debe ser completo, es decir que todas las acciones de inters deben poder expresarse con dicho
conjunto de instrucciones.
Cada instruccin debe tener un significado (efecto) preciso (no ambiguo).
Cada instruccin debe escribirse de modo nico.
Los algoritmos pueden ser representados o expresados de muchas maneras, incluyendo al lenguaje
natural o descripcin verbal, pseudocdigo, diagramas de flujo entre otros.

Sintaxis y Semntica de un Lenguaje
Sintaxis: es la forma en que se debe escribir cada instruccin y las reglas generales que se utilizan
para expresar el problema dentro de ese lenguaje.
Semntica: es el significado de cada instruccin y el de los smbolos que se utilizan en el lenguaje

Tipos de Lenguajes Algortmicos
Grficos: Es la representacin grfica de las operaciones que realiza un algoritmo (diagrama de flujo
por ejemplo).
No grficos: Descripcin verbal o en lenguaje natural; pseudocdigo este ltimo se llama as por ser
cuasi lenguaje natural y cuasi cdigo sin llegar a ser ninguno de los completamente.
DEFINIR
EL
PROBLEMA
ANALIZAR
EL
PROBLEMA
DISEAR
EL
ALGORITMO

DEPURAR
Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
5
El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas
expresiones son formas ms estructuradas y sistemticas para representar algoritmos; no obstante, se
mantienen independientes de un lenguaje de programacin especfico.
3.1. GRFICOS: Diagrama de Flujo
Se trata de la representacin o descripcin grfica de la solucin algortmica de un problema.
Para disearlos se utilizan determinados smbolos o figuras que representan una accin dentro del
procedimiento. Utilizan unos smbolos normalizados que estn regidos por ISO.
Con los pasos del algoritmo escritos en el smbolo adecuado y unidos con flechas, denominadas lneas
de flujo, indicando el orden en que los pasos deben ser ejecutados se llega a expresar la solucin del
problema.
Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho
espacio y su construccin es laboriosa.
Por su facilidad de lectura son usados como introduccin a los algoritmos, descripcin de un lenguaje y
descripcin de procesos a personas ajenas a la computacin.
Los pasos a seguir para construir el diagrama de flujo son:
Identificar y listar las principales actividades/subprocesos que estn incluidos en el proceso a
describir y su orden cronolgico.
Definir qu se espera obtener del diagrama de flujo.
Identificar quin lo emplear y cmo.
Establecer el nivel de detalle requerido. Si el nivel de detalle definido incluye actividades
menores, listarlas tambin.
Determinar los lmites del proceso a describir. De esta manera quedar fijado el comienzo y el
final del diagrama.
Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes
smbolos.
Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el proceso
elegido.
Para su elaboracin se siguen ciertas reglas:
Se debe de indicar claramente dnde inicia y dnde termina el diagrama.
Se escribe de arriba hacia abajo y de izquierda a derecha.
Debe haber al menos una entrada de datos.
Debe quedar claro el proceso de los datos.
Debe haber al menos una salida de datos.
En cada paso se expresa una accin concreta.
Todo camino de ejecucin debe permitir llegar desde el inicio hasta el final.
Siempre se usan flechas verticales u horizontales, jams curvas o diagonales.
Debe evitarse cruce de flujos.
En cada paso se expresa una accin concreta.
No se debe usar lenguaje de programacin dentro de los smbolos.
Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
6
Simbologa para disear diagramas de flujo
DIAGRAMA DESCRIPCIN
Establece el INICIO y el FIN.
Indica la entrada y salida de datos.
Smbolo de proceso y nos indica la
asignacin de un valor en la
memoria y/o la ejecucin de una
operacin aritmtica
Smbolo de decisin indica la
realizacin de una comparacin de
valores.
Se utiliza para representar los
subprogramas
Conector dentro de una Pagina,
representa la continuidad del
diagrama dentro de la misma
pgina.
Conector fuera de una Pgina,
representa la continuidad del
diagrama en otra pgina.
Indica la salida de informacin por
impresora.
Indica la salida de informacin en
la pantalla del monitor.

Lneas de flujo o de direccin.
Indica la secuencia en que se
realizan las operaciones.



Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
7
EJEMPLO 1
Sumar los n (n>0) primeros nmeros naturales
EJEMPLO 2
Disear un algoritmo que lea cuatro nmeros y calcule e imprima su producto, suma y media aritmtica.

INICIO
num
sum 0
cont 1
sum sum + cont
cont cont + 1
cont <= num?
sum
FIN
SI
NO

FIN
INICIO
n1, n2, n3, n4
n1, n2, n3, n4
Prod n1*n2*n3*n4
Sum n1+n2+n3+n4
Med Sum/4

Sum, prod, med
Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
8
Ventajas de usar diagramas de flujo:
El cerebro humano reconoce fcilmente los dibujos. Un buen diagrama de flujo reemplaza
varias pginas de texto.
Rpida comprensin de las relaciones
Anlisis efectivo de las diferentes secciones del programa
Pueden usarse como modelos de trabajo en el diseo de nuevos programas o sistemas
Comunicacin con el usuario
Documentacin adecuada de los programas
Codificacin eficaz de los programas
Depuracin y pruebas ordenadas de programas
Desventajas de los diagramas de flujo:
Los diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseo.
Las acciones a seguir tras la salida de un smbolo de decisin, pueden ser difciles de seguir si
existen diferentes caminos.
No existen normas fijas para la elaboracin de los diagramas de flujo que permitan incluir todos
los detalles que el usuario desee introducir.
3.2. NO GRFICOS: Descripcin Verbal o en Lenguaje Natural
Este lenguaje de expresin de un algoritmo tiene la caracterstica de seguir un proceso de ejecucin
lgico y un lenguaje comn, describiendo textualmente paso a paso cada una de las actividades a
realizar dentro de una actividad determinada. Las descripciones en lenguaje natural tienden a ser
ambiguas y extensas.
EJEMPLO 1: Algoritmo para asistir a clases:
Levantarse
Baarse
Vestirse
Desayunar
Cepillarse los dientes
Salir de casa
Tomar el autobs
Llegar al edificio de aulas de la universidad
Buscar el aula
Ubicarse en un asiento
EJEMPLO 2: Algoritmo para prepara la facturacin de cada cliente de una empresa:
Consultar para cada cliente, las compras que ha realizado durante el periodo que se desea
facturar.
Consultar el cdigo de cada producto adquirido y su precio.
Par cada cliente, multiplicar las unidades compradas de un cierto producto por el precio unitario
del mismo.
Sumar los importes parciales de cada uno de los productos.
Sumar o restar a la cantidad obtenida en el apartado anterior las bonificaciones o
penalizaciones que pueda tener cada cliente.
Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
9
Restar de la cantidad anterior las tazas e impuestos correspondientes.
Confeccionar la factura.
3.3. NO GRFICOS: Pseudocdigo
Es la descripcin de un algoritmo que asemeja a un lenguaje de programacin pero con algunas
convenciones del lenguaje natural (de ah que tenga el prefijo pseudo=falso). El pseudo cdigo no es un
cdigo realmente, sino una imitacin y una versin abreviada de instrucciones reales para las
computadoras. Es un lenguaje parecido al natural, con cierta sintaxis y semntica que emula la
programacin de computadoras, en una forma ms simple y comprensible. La idea de este lenguaje es
poder escribir un algoritmo, disear la lgica y despus poder reescribirlo en cualquier lenguaje de
programacin.
Mientras que los DFD permiten visualizar el algoritmo de forma grfica, el pseudocdigo permite
enunciarlo.
Se concibi para superar las dos principales desventajas de los DFD: lento de crear y difcil de modificar
sin un nuevo redibujo, adems tiene la ventaja de necesitar poco espacio para representar instrucciones
complejas. El pseudocdigo no est regido por ningn estndar.
Tambin es una tcnica para diseo de programas que permite definir las estructuras de datos, las
operaciones que se aplicarn a los datos y la lgica que tendr el programa de computadora para
solucionar un determinado problema. Respeta las directrices y los elementos de los lenguajes de
programacin.
Ventajas del uso de Pseudocdigo:
Ocupan mucho menos espacio en el desarrollo del problema.
Permite representar de forma fcil operaciones repetitivas complejas.
Es ms sencilla la tarea de pasar de pseudocdigo a un lenguaje de programacin formal.
Si se siguen las reglas de indentacin se puede observar claramente los niveles en la
estructura del programa.
Mejora la claridad de la solucin de un problema.
Desventajas del uso de Pseudocdigo:
No rige ningn estndar, lo que puede provocar ambigedad en su interpretacin.
Si no se indenta correctamente no se entiende su estructura.
EJEMPLO 1
Siguiendo con el ejemplo usado en diagrama de flujo, lo veremos en pseudocdigo:
Disear un algoritmo que solicite el ingreso de cuatro nmeros y calcule y muestre su producto, suma y
media aritmtica.
Aplicando los pasos de Plya adaptados a algoritmos:
1 paso: Definicin Del Problema
En este caso queda claro que debemos disear un pseudocdigo que pida el ingreso de 4 n y muestre
su producto,suma y media aritmtica.
2 paso: Anlisis del problema
Datos de entrada: n1, n2, n3, n4: real
Datos de salida: producto, suma, media: real
Procesos: dados los 4 n, realizar la suma, el producto y la media. Luego mostrar los resultados.
3 paso: Diseo de la solucin
Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
10
Algoritmo Produc_Suma_Media
n1, n2, n3, n4, media, suma, producto : real
Inicio
Mostrar (ingrese cuatro nmeros:)
1 Ingresar (n1, n2, n3, n4)
2 producto (n1 * n2 * n3 * n4)
3 suma (n1 + n2 + n3 + n4)
4 media (n1 + n2 + n3 + n4) / 4
5 Mostrar (producto, suma, media)
Fin

4 paso: verificacin (traza) de la solucin
OBSERVACIN: Las sentencias Mostrar, con solo un literal sin ningn dato, se ignoran en la
numeracin y en la traza.
N instrucc. N1 N2 N3 N4 producto Suma media mostrar
1 2 1.5 1 3.5
2 10.5
3 8
4 2
5 10.5 8 2

EJEMPLO 2
Calcular y mostrar el rea y permetro de un rectngulo
Observacin: existen restricciones en estos datos (no pueden n negativos) que veremos ms adelante
cmo las tenemos en cuenta, por ahora realizamos la abstraccin que se ingresan datos vlidos.

Aplicando los pasos de Plya adaptados a algoritmos:
1 paso: Definicin Del Problema
En este caso debemos disear un pseudocdigo que calcule y muestre el rea y permetro de un
rectngulo
2 paso: Anlisis del problema
Datos de entrada: base, altura: real
Datos de salida: rea, permetro: real
Procesos: dada la base y la altura, se calcula el rea y el permetro. Luego mostrar los
resultados.
3 paso: Diseo de la solucin

Materia: Expresin de Problemas y Algoritmos Ao 2014 Licenciatura en Sistemas OPGCPI
Profesora: Mg. Lic. Alicia Beatriz Paur
11
Algoritmo Area_perim_rectang
base, altura, rea, perimetro: real
Inicio
Mostrar (Ingrese la base)
1 Ingresar (base)
Mostrar (Ingrese la altura)
2 Ingresar (altura)
3 rea = base * altura
4 permetro = 2 * base + 2 * altura
5 Mostrar (El rea es = , rea)
6 Mostrar (El permetro es = , permetro)
Fin

4 paso: verificacin (traza) de la solucin
N instrucc. base altura rea permetro media mostrar
1 4.2 1.5
2 10.5
3 8
4 2
5 El rea es= 6.3
6 El permetro es = 11.4

Estos pasos debern ser utilizados de ahora en adelante, toda vez que se desee desarrollar el
algoritmo que solucione un problema
3.4. Diferencia entre algoritmos, diagrama de flujo y pseudocdigo
En general, decimos que la solucin a cualquier problema de cmputo, involucra la confeccin de un
algoritmo que requiere la ejecucin una serie de acciones, finitas, en un orden especfico y sin
ambigedad. En otras palabras, un algoritmo es un procedimiento para resolver un problema en
trminos de las acciones a ejecutarse, y el orden en el cual estas acciones deben ejecutarse.
Una forma de desarrollar o representar los algoritmos en un lenguaje medio informal y medio
codificado es el pseudocdigo, que obedece a un lenguaje de diseo estipulado para su uso.
El diagrama de flujo es la representacin o descripcin grfica de la solucin algortmica de un
problema. En su diseo se usan determinados smbolos o figuras estandarizadas que representan una
accin dentro del DFD.