Está en la página 1de 53

Unidad 1: Diseo de Algoritmos y

Diagramas de Flujo

Prof: Andrs Ruiz-Tagle

Resultado de Aprendizaje de la Unidad

Construir algoritmos para resolver problemas


modelables computacionalmente.

Resolucin de problemas
Resolver problemas no es trivial, pues es
necesario comprender qu se quiere resolver,
encontrar las herramientas adecuadas para
resolver el problema, y luego implementar la
solucin con las herramientas disponibles

PROBLEMA

SOLUCIN

PROBLEMA RESUELTO

Fases del proceso de Creacin de un Programa


Fase de resolucin del problema
Anlisis del
Problema

Diseo del
Algortmo

Verificacin del
Algortmo

Fase de implementacin
Codificacin del
Algoritmo

Ejecucin del
Programa

Verificacin del
Programa
Programa de Trabajo
o Plan de
Implementacin

Fase de resolucin de un problema


Anlisis del problema
Etapa de comprensin del problema, en la que se debe
identificar que es lo que se solicita o se espera obtener, y cuales
son los datos relevantes del problema que permitirn
solucionarlo.

Diseo del algoritmo


Secuencia ordenada de pasos, sin ambiguedades, que
conducen a la solucin de un problema dado y puede ser
expresado en lenguaje natural (castellano).
Todo algoritmo debe ser:
Preciso: Indicar el orden de realizacin de cada uno de lo pasos.
Definido: Si se sigue el algoritmo varias veces proporcionndole
los mismos datos, se debe obtener siempre el mismo resultado.
Finito: Al seguir el algoritmo, este debe terminar en algn
momento, es decir tener un nmero finito de pasos.

Verificacin de Algortmos
Una vez que se ha terminado de escribir un algoritmo se
debe comprobar que realiza las tareas para las que se
ha diseado y produce el resultado correcto y esperado.
Para comprobar un algoritmo se debe ejecutar
manualmente, usando datos de prueba que abarque
todo el rango posible de valores.
Los resultado de cada paso del algoritmo deben
anotarse en una hoja.
Estos datos deben analizarse segn lo esperado.
Este proceso se conoce como Prueba del Algoritmo

Descompocisin (Top-down)
Para disear un algoritmo se debe comenzar
por identificar las tareas ms importantes y
disponerlas en el orden en que han de ser
ejecutadas.
Cada tarea debe ser refinada incluyendo ms
detalles de la misma. Si una tarea es compleja,
debe ser descompuesta en subtareas de menor
complejidad.
La descompocisn Top-Down es un mtodo de
anlisis que va de lo general a lo particular.

Partes de un Algoritmo
Entrada

Proceso

Salida

En un algortmo se deben considerar tres


partes:
Entrada: Informacin o datos dados al algoritmo.
Proceso: Operaciones o clculos necesarios para
encontrar la solucin al problema.
Salida: Respuestas dadas por el algortmo o
resultados finales de los clculos.

Ejemplo
Se desea desarrollar un algoritmo que calcule la superficie de un
rectngulo proporcionndole su base y altura.

Especificaciones de Entrada
Qu datos son de entrada?
Cuntos datos se introducirn?
Cules son datos de entrada vlidos?

Especificaciones de Salida
Cules son los datos de salida?
Cuntos datos de salida se producirn?
Qu precisin tendrn los resultados?
Se debe imprimir un encabezado?

El algoritmo puede representarse en los siguientes pasos.


Paso 1: Entrada por el teclado la base y la altura.
Paso 2: Clculo de la superficie, multiplicando la base por la altura.
Paso 3: Salida por la pantalla de la base, la altura y la superficie.

Pseudocdigo
El pseudocdigo es un lenguaje de
especificacin de algoritmos que utiliza
palabras reservada y exige la indentacin.
Es una herramienta muy buena para el
seguimiento de la lgica de un algoritmo y
para transformar con facilidad los
algoritmos a programas, escritos en un
lenguaje de programacin especfico.

Ejemplo 1

Problema: Hacer una taza de t


Anlisis del Problema:
Datos de salida: Taza de t.
Datos de entrada: Bolsa de t, agua.
Datos auxiliares: Pitido de la tetera, aspecto de la infusin.

Diseo del algortmo


Lenguaje Natural:
Despus de echar el agua en la tetera, se pone al fuego y se espera hasta que hierva
(hasta que suene el pitido de la tetera). Introducimos la bolsa de t en la tetera y se
deja reposar hasta que el aspecto de la infusin sea el esperado. Luego se vierte el te
en la taza.

Pseudocdigo.
Inicio
Tomar la tetera
Llenarla de agua
Encender el fuego
Poner la tetera en el fuego
Mientras no suene el pito de la tetera
Esperar
Introducir la bolsa de t en la tetera
Mientras la infusin no alcance un color rojizo
Esperar
Echar el t en la taza

Ejemplo 2

Problema: Reparar un pinchazo de una rueda de bicicleta


Anlisis del Problema:

Datos de salida: La rueda reparada.


Datos de entrada: La rueda pinchada, los parches, el pegamento, un recipiente con agua.
Datos auxiliares: Las burbujas que salen del pinchazo en la cmara.

Diseo del algortmo

Lenguaje Natural:
Desomtar la rueda de la bicicleta. Sacar la cmara de la rueda y luego inflarla. Introducir la rueda por
secciones en el recipiente de agua. Cuando aparezcan las burbujas identificaremos donde est el
pincahazo. Aplicar pegamento al pinchazo y al parche y pegarlos. Instalar la cmara en la rueda y
luego inflarla. Por ltimo montar la rueda en la bicicleta.
Pseudocdigo.
Inicio
Desmontar la rueda.
Sacar la cmara de la rueda.
Inflar la cmara.
Meter una seccion de la camara en el recipiente de agua.
Mientras no salgan burbujas
Girar la cmara y meter otra seccin de la cmara en el agua.
Marcar el pinchazo
Echar pegamento
Mientras no est seco
esperar
Poner el parche
Montar la cmara
Montar el forro
Montar la rueda

Elementos Bsicos de Programacin

Dato
Variables
Constantes
Operadores Aritmticos
Identificadores
Operaciones Aritmticas

Dato
Dato
Un dato es una representacin simblica (numrica,
alfabtica, etc.), atributo o caracterstica de una entidad.
El dato no tiene valor semntico (sentido) en s mismo,
pero convenientemente tratado (procesado) se puede
utilizar en la realizacin de clculos o toma de
decisiones. Es de empleo muy comn en el mbito
informtico.
En programacin un dato es la expresin general que
describe las caractersticas de las entidades sobre las
cuales opera un algoritmo.
(Wikipedia)

Variable
Variable
Una variable es un elemento de una frmula,
proposicin o algoritmo que puede adquirir o
ser sustituido por un valor cualquiera. Los
valores que una variable es capaz de recibir
pueden estar definidos dentro de un rango.
(Wikipedia)-

Relacin entre Dato y Variable


Un dato es un valor particular que puede
tomar una variable.
A su vez una variable se utiliza para
representar a una caracterstica o
atributo de una entidad, por lo tanto toma
el valor de un dato
Dependiendo del las caractersticas de
la informacin que se quiera representar
se pueden usar estructuras de datos
simples como una variable u otras ms
complejas como los arreglos, los
registros o los archivos

Problema
Una bomba de bencina cuenta con
surtidores muy antiguos, que miden el
flujo de combustible en galones. Sin
embargo, la ley establece que el precio
del combustible debe ser informado a los
consumidores en litros. Solucione el
problema de la bomba de bencina
algortmicamente.

Solucin Algortmica

Problema: Surtidor de bencina que vende bencina en galones


Anlisis del Problema:
Datos de salida: Total venta, total litros
Datos de entrada: galones vendidos
Datos auxiliares: valor del litro de bencina ($580), equivalencia de litros por
galn (1 galn = 3,785 litros)

Diseo del algortmo


Lenguaje Natural:
Leer los galones vendidos, transformarlos a litros, multiplicarlos por el precio
del litro de bencina y mostrar el total de la venta y el total de litros vendidos.
Pseudocdigo.
Inicio
Leer galones vendidos
Los litros vendidos sern igual a los galones por
3,785
El monto total vendido ser igual a los litros
vendidos por el valor del litro de bencina.
Mostrar el Total de litros vendidos y el monto de la
venta.
Fin

Pseudocdigo resumido
Otra forma de pseudocdigo ms resumida de pseudocdigo es la
siguiente:

Anlisis del Problema:


Datos de salida: Venta: variable que representa el valor vendido

Litros: variable que representa la cantidad de litros vendidos


Datos de entrada: Galones: Variable que representa la cantidad de galones
vendidos
Datos auxiliares: valor del litro de bencina ($781), equivalencia de litros por
galn (1 galn = 3,785 litros)

Pseudocdigo
Inicio

Leer Galones
Litros <- Galones * 3,785
Venta <- Litros * 781

Escribir Venta=,Venta, Litros=, Litros


Fin

Ejercicio
Dos amigos estuvieron jugando por varias
horas en su Nintendo y ahora quieren
saber quin gan. Para eso disponen del
puntaje que les entrega el juego a cada
uno. Queremos un algoritmo que nos
permita determinar quin gan, tomando
en cuenta que el que gana es el que tiene
mayor puntaje. Tome en cuenta que
puede haber un empate.

Solucin Algortmica
Anlisis de Datos
Entradas:

Pseudocdigo
Inicio
Escribir Ingrese puntaje Jugador A
Leer Puntaje A
Escribir Ingrese puntaje Jugador B
Leer PuntajeB
Si PuntajeA > PuntajeB Entonces
Escribir Gan Jugador A
Sino
Si PuntajeB > PuntajeA Entonces
Escribir Gan Jugador B
Sino
Escribir Empataron
FinSi
FinSi

PuntajeA: variable que


representa el puntaje obtenido
por el jugador A
PuntajeB: variable que
representa el puntaje obtenido
por el jugador B

Salida
Mensaje:
Gan Jugador A
Gan Jugador B
Empataron

Fin

Problema
Dado los datos A,B,C que representan
enteros diferentes, se desea ordenarlos
en forma descendente.

Solucin Algortmica

Anlisis de Datos
Entradas:

A,B,C: nmeros enteros


diferentes

Salidas:

Mensaje que muestra los


nmeros enteros en forma
descendente

Algoritmo
Inicio
Leer A, B,C
Si A > B Entonces
Si A > C Entonces
Si B > C Entonces
Mostrar A, B, C
Sino
Mostrar A, C, B
Finsi
Sino
Mostrar C, A, B
Finsi
Sino
Si B > C Entonces
Si A > C Entonces
Mostrar B, A, C
Sino
Mostrar B, C, A
Finsi
Sino
Mostrar C, B, A
Finsi
Finsi
Fin

Problema
2. Hacer un algoritmo en pseudocdigo
que lea una secuencia de valores enteros
positivos hasta que venga algn valor
negativo. Calcular la suma y el promedio.
Imprima dicha suma y promedio.

Solucin Algoritmica

Anlisis de datos
Entradas
N=representa los valores enteros
ledos

Auxiliares
S=representa la suma de enteros
leidos
C=representa la cantidad de
enteros leidos

Salidas
S=representa la suma de enteros
leidos
P=representa el promedio de los
nmeros leidos

Pseudocdico
Inicio
S<-0
C<-0
Leer N
Mientras (N>=0) Hacer
S<-S+N
C<-C+1
Leer N
FinMientras
Si C<>0 Entonces
P<-S/C
FinSi
Mostrar Suma =,S
Mostrar Promedio=,P
Fin

Diagramas de Flujo
Los diagramas de flujo se utilizan para:
Diagrama de flujo del sistema: representacin grfica de las
operaciones ejecutadas sobre los datos a travs de las partes
de un sistema de procesamiento de informacin
Diagrama de flujo detallado: representacin de la secuencia
de pasos necesarios para describir un procedimiento en
particular.

Los diagrama de flujo utilizan smbolos estndares, con


los pasos del algoritmo escrito en el smbolo adecuado y
los smbolos unidos por flechas, denominados lneas de
flujo, que indican el orden o secuencia en que los pasos
deben ser ejecutados.

Simbologa de DFD 1.0


Inicio

Inicio y fin del algoritmo

Entrada

Entrada al algoritmo

Salida

Salida del algoritmo

Proceso

Decisin

Proceso o asignacin
Decisin o condicin

Ejemplo
Se desea desarrollar un algoritmo que calcule la
superficie de un rectngulo proporcionndole su base y
altura.

Ejemplo
Una bomba de bencina cuenta con
surtidores muy antiguos, que miden el
flujo de combustible en galones. Sin
embargo, la ley establece que el precio
del combustible debe ser informado a los
consumidores en litros. Solucione el
problema de la bomba de bencina
algortmicamente.

Solucin Algortmica

Problema: Surtidor de bencina que vende bencina en galones


Anlisis del Problema:
Datos de salida: Total venta, total litros
Datos de entrada: galones vendidos
Datos auxiliares: valor del litro de bencina ($580), equivalencia de litros por
galn (1 galn = 3,785 litros)

Diseo del algortmo


Lenguaje Natural:
Leer los galones vendidos, transformarlos a litros, multiplicarlos por el precio
del litro de bencina y mostrar el total de la venta y el total de litros vendidos.
Pseudocdigo.
Inicio
Leer galones vendidos
Los litros vendidos sern igual a los galones por
3,785
El monto total vendido ser igual a los litros
vendidos por el valor del litro de bencina.
Mostrar el Total de litros vendidos y el monto de la
venta.
Fin

Solucin Algritmica (Diagrama de Flujo)


Inicio

galones

litros galones * 3,785


venta litros * 580

litros,venta

fin

Operaciones Aritmticas
Al realizar operaciones aritmticas
necesitamos operadores aritmticos.
Al evaluar expresiones que contienen
operadores aritmticos debemos respetar
la jerarqua en el orden de aplicacin.
Operador
^

Jerarquia
mayor

*, / ,mod
+,-

menor

Operacin
potencia
multiplicacin,
divisin, mdulo
suma, resta

Expresiones lgicas
Las expresiones lgicas o booleanas, estn constituidas
por nmeros, constantes o variables y operadores
lgicos o relacionales.
El valor de estas expresiones es verdadero o falso.
Estas operaciones son utilizadas frecuentemente en
instrucciones condicionales.
Operador
=
!=
<
>
<=
>=

Operacin
mayor
diferente
menor
mayor
menor o igual
mayor o igual

Ejemplo
hola' = 'lola'
'a' != 'b'
7 < 15
22 > 11
15 < = 22
35 > = 20
corregir

Resultado
FALSO
VERDADERO
VERDADERO
VERDADERO
VERDADERO
VERDADERO

Operadores lgicos
Los operadores lgicos son operadores que permiten formular
condiciones complejas a partir de condiciones simples.
Los operadores lgicos tambin tienen una jerarqua de al momento
de evaluar una expresin lgica segn se indica en la siguiente
tabla.

Operador
NOT
AND
OR

Operacin
mayor
menor

Ejemplo
Significado
NOT P
Es falso que P
PyQ
P sin embargo Q
7 < 15 o P o Q o Ambas

corregir

Tablas de Verdad de Operadores


Lgicos
La tabla de verdad determina los posibles
valores de verdad de los operadores
lgicos
Tabla de verdad de los Operadores Lgicos (Booleanos)
P
Q
NOT P
NOT Q
P OR Q
P AND Q
VERDADERO VERDADERO
FALSO
FALSO
VERDADERO VERDADERO
VERDADERO
FALSO
FALSO
VERDADERO VERDADERO
FALSO
FALSO
VERDADERO VERDADERO
FALSO
VERDADERO
FALSO
FALSO
FALSO
VERDADERO VERDADERO
FALSO
FALSO

Problema: Impuestos diferenciados


En cierto pas el IVA (Impuesto al Valor Agregado) se calcula
mediante la siguiente regla: los primeros $2.000 no causan
impuesto, los siguientes $2.000 tienen el 30% de impuesto y el
resto 40% de impuesto, pero si el costo del producto es mayor a
$50.000, entonces en lugar de 40% se cobra el 50%. Disee una
solucin algortmica del problema y el plan de pruebas
correspondiente.
Anlisis de Datos
Datos de Entrada
P: Precio del producto
Datos Auxiliares
IVA: Impuesto a pagar
Datos de Salida
PT: Precio total considerando precio ms IVA

Diagrama de Flujo de Datos


INICIO

P > 50000
IVA 2000* 30% +
(P 4000) * 50%

P > 4000

IVA 2000* 30% +


(P 4000) * 40%

P > 2000

IVA (P 2000) * 30%

PT P + IVA

PT

FIN

IVA 0

Plan de Pruebas
Nmero Corrida

Entrada

Auxiliar

Salida

Variables

PB

IVA

PT

500

500

2000

2000

2500

150

2650

4000

600

4600

10000

3000

13000

50000

19000

69000

55000

26100

81100

Ejemplo. Solucin Secuencial


Se desea conocer el promedio final de notas de los alumnos de un curso a
partir de las notas finales de cada uno de ellos.

Anlisis de Datos

Supuesto

Entradas

N1..N10: Nota final del alumno 1 al alumno 10

Salidas

El curso tiene 10 alumnos

PF: Promedio final del curso

Algoritmo
inicio

N1,N2,N3,N4,N5,N6,N7,N8,N9,N10

PF (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10) / 10

PF

fin

Ejemplo. Solucin Iterativa o Repetitiva


Se desea conocer el promedio final
de notas de los alumnos de un
curso a partir de las notas finales
de cada uno de ellos.
Anlisis de Datos
Entradas
n: Cantidad de alumnos del curso
NFi: Nota final del alumno i

inicio

n
i1
S0

i <= n

No

Si
NFi

Auxiliares
S: Suma de notas
i: Contador que permitir
identificar al alumno 1 al 10.

Salidas
PF: Promedio final del curso

Algoritmo

S S + NFi
i i+1

PF S / n
PF

fin

La estructura repetitiva mientras (WHILE)


La estructura algortmica mientras,
comnmente conocida como WHILE,
Es la estructura adecuada para utilizar en
un ciclo cuando no sabemos el nmero de
veces que ste se ha de repetir.
El nmero de iteraciones del ciclo
depende de las proposiciones dentro del
ciclo.

La estructura repetitiva mientras (WHILE)


En la estructura mientras
se distinguen dos partes:
Ciclo: Conjunto de
instrucciones que se
ejecutan repetidamente.
Condicin de trmino: La
evaluacin de esta
condicin permite decidir
cuando finalizar la
ejecucin del ciclo. La
condicin se evala al
inicio del ciclo.

PI Propocicin Inicial

Evaluacin
de PI

No

Si
Proceso

PI Modificacin de PI

Donde:
PI: Es la proposicin inicial, debe tener un valor verdadero
inicialmente para que se ejecute el ciclo.
Cuando PI es falso, entonces el ciclo termina o no se ejecuta.

Pseudocdigo para estructura Mientras


En pseudocdigo la estructura mientras la expresamos
de esta forma:
.
.
.
Hacer PI Propocisin Inicial
Mientras ( PI es verdadero )
.
.
{Proceso}
.
.
Hacer PI modificacin de PI
Fin Mientras
.
.

La estructura repetitiva repetir (FOR)


La estructura algortmica para o repetir,
comnmente conocida como FOR,
Es la estructura adecuada para utilizar en un
ciclo que se ejecutar un nmero definido de
veces.
El nmero de iteraciones del ciclo NO depende
de las proposiciones dentro del ciclo.
El nmero de veces se obtiene del
planteamiento del problema o de una lectura
que indica que el nmero de iteraciones se debe
realizar N veces.

La estructura repetitiva para o repetir (FOR)


Donde:
V: es la variable de control
del ciclo
VI: es el valor inicial de V
VF: es el valor final de V
ID: es el inclemento o
decremento , segun sea
la estructura repetir
ascendente o descendente.

V VI

V (< o <=) VF
Si
Proceso

V v + id

No

Ejemplo. Solucin Iterativa o Repetitiva


Se desea conocer el promedio final
de notas de los alumnos de un
curso de 10 alumnos a partir de
las notas finales de cada uno de
ellos.
Anlisis de Datos
Entradas
n: Cantidad de alumnos del curso
NFi: Nota final del alumno i

Auxiliares
S: Suma de notas
i: Contador que permitir
identificar al alumno 1 al 10.

Salidas
PF: Promedio final del curso

inicio

S0

i; 1; 10; 1

No

Si
NFi

S S + NFi

PF S / 10
PF

Algoritmo
inicio

Problema Factorial
Para todo nmero natural n, se llama n factorial
o factorial de n al producto de todos los
naturales entre 1 y n:

1
n! =

si n=0

1*2*3**n-1*n si n>0

Problema Sueldos de Empleados


Dada una empresa de N empleados,
necesitamos obtener el sueldo y numero
del empleado con mayor sueldo.

Problema Estadio
En un estadio se tienen 5 tipos diferentes de
localidades con precios diferenciados. Los
precios de cada localidad dependen del
espectculo.
Se pide un algoritmo que permita calcular la
cantidad de espectadores por localidad y el
monto recaudado para un espectculo.
Los boletos deben venderse una a uno, y
cuando se ingresa un 0 debe terminar de vender
boletos.

Nmeros Binarios
Un nmero binario est representado por dos posibles valores en
sus dgitos: 0 o 1. Por ejemplo, 1010 es nmero binario. Se requiere
una solucin algortmica para dado un nmero natural, se muestren
los dgitos del nmero binario equivalente, de manera descendente
de aparicin. As para el nmero 10, la salida a mostrar ser 0, 1, 0
y 1.

Para transformar un nmero M en su equivalente en binario, se


realizan los siguientes pasos. Se divide M por 2. El resto de esta
operacin corresponde a al ltimo dgito se equivalente en binario.
Se contina con el Cuociente, el cual es divido por 2 nuevamente,
donde el resto es el siguiente dgito binario en orden descendente
de aparicin, y el cuociente es dividido nuevamente. Este proceso
se detendr cuando el cuociente de la divisin sea 0 o 1, donde el
resto se corresponde con el penltimo dgito binario y el cuociente
es el ltimo digito, en orden descendente de aparicin.

Problema Generador de Secuencias


Un generador de secuencias es capaz de generar una
lista de nmeros hasta un lmite configurable, partiendo
de un valor de inicio y siguiendo un incremento tambin
configurable.
As, por ejemplo, especificando como valor de inicio el
nmero 1, como incremento 2, y como valor final 100, el
dispositivo genera los nmeros impares menores que
100. De igual forma se podran generar secuencias de
nmeros pares, u otras secuencias con incrementos
mayores.
Incluso, es posible generar secuencias decrecientes,
especificando un valor de incremento que sea negativo.
Disee un algoritmo que implemente un generador de
secuencias.

Problemas das fros y clidos


Un da se considera fro si la temperatura
mxima es inferior a 15 grados Celsius, se
considera agradable si la temperatura es mayor
o igual a 15, pero menor a 25 grados, y se
considera caluroso si la temperatura es mayor o
igual a 25 grados.
La Direccin Meteorolgica cuenta con el
registro de las temperaturas mximas de varios
das, y requiere un algoritmo que le ayude a
determinar cuntos das fueron fros, cuntos
agradables y cuntos calurosos.

Problema de Computador Antiguo


Un computador muy antiguo, pero todava en operacin,
no cuenta con instrucciones para llevar a cabo
multiplicaciones ni divisiones. Las nicas operaciones
disponibles son sumas y restas sobre nmeros enteros.
Para poder aprovechar adecuadamente el computador,
requerimos un algoritmo que lleve a cabo la divisin de
dos nmeros enteros, entregando el resultado y el resto
de la divisin entera.
Anlisis de los datos, diseo del algoritmo expresado en
diagrama de flujo o pseudocdigo.