Vous êtes sur la page 1sur 26

Algoritmos y diagramas

de flujo

Algoritmos y diagramas de flujo Algoritmos y Programacin 1


Solving problems
A partir del planteamiento de un
problema, es conveniente usar una
metodologa para la resolucin del
problema, que tendr como objetivo
final el algoritmo que dar una
solucin.

Algoritmos y diagramas de flujo Algoritmos y Programacin 2


Polyas method
George Polya, Matemtico hngaro, autor del libro
How to solve it (1945). En l, Polya propone cuatro
pasos generales para la solucin de un problema:
1. Entienda el problema: parece obvio pero es con
frecuencia un gran obstculo.
Entiende todas las palabras de la formulacin del
problema?
Qu le estn pidiendo que encuentre?
Puede usted reformular el problema en sus propias
palabras?
Puede hacer un dibujo que represente el problema?
Hay suficiente informacin para encontrar la solucin?

Algoritmos y diagramas de flujo Algoritmos y Programacin 3


Polyas method
2. Disee un plan: escoja una estrategia para
resolver el problema (divida el problema en
problemas ms simples, elimine posibilidades,
aproveche simetras, suponga y verifique, etc).
3. Implemente el plan: ms fcil que el paso 2, slo
requiere mucho cuidado en los detalles y
paciencia.
4. Revise: haga una pausa, revise y reflexione sobre
el trabajo hecho.

Algoritmos y diagramas de flujo Algoritmos y Programacin 4


Algorithms
Recordemos que, un algoritmo es un proceso
preciso, computable y finito, que paso a paso
lleva a la solucin de un problema.

Todo algoritmo debe tener tres partes:

Inputs Process Outputs

Algoritmos y diagramas de flujo Algoritmos y Programacin 5


Examples of algorithms

Cmo ingresar a la Cmo dibujar una parbola


Universidad de Antioquia? en el plano cartesiano (-10,10)?
1. Comprar formulario de 1. Asignar a x el valor -10
inscripcin 2. Asignar a y el valor de x2
2. Elegir carrera 3. Dibujar un punto en la
3. Presentar examen coordenada x,y
4. Si no pasa, volver al paso 1 4. Sumar 1 a x
5. Pagar matrcula 5. Si x es menor o igual a 10,
6. Elegir materias vaya al paso 2

Algoritmos y diagramas de flujo Algoritmos y Programacin 6


Data in an algorithm
Variable: espacio de memoria asociado con un
identificador (nombre) que almacena un valor (un
dato) que puede ser modificado por instrucciones
del algoritmo.

Variables de entrada y salida


Variables auxiliaries
Constante: un dato que no cambia

Una variable puede representar un nmero decimal,


un numero entero, un arreglo de nmeros o de
caracteres, etc.

Algoritmos y diagramas de flujo Algoritmos y Programacin 7


Algorithm design
base, altura
Calcular el rea de un tringulo
Anlisis: Inputs
Cul es el objetivo buscado?
Calcular el rea de un tringulo
Cules son los datos de entrada? Process

Base y altura
Cules son los datos de salida?
Outputs area
rea de un tringulo
Qu clculos/procesos deben llevarse a cabo?
area = (base * altura)/2

Algoritmos y diagramas de flujo Algoritmos y Programacin 8


Algorithm example
Se requiere disear un algoritmo que calcule
el nmero de meses que hay entre los aos A
y B.

Datos de entrada: los aos


Algoritmo
especificados (A y B)
1. Capturar valores de A y B
Datos de salida: numero total 2. Asignar a years la
de meses transcurridos operacin B-A
Definicin de variables: 3. Asignar a months la
A: primer ao operacin years * 12
B: segundo ao 4. Muestre el valor de months
years: aos transcurridos
months: meses transcurridos

Algoritmos y diagramas de flujo Algoritmos y Programacin 9


Algorithms represented as flowcharts

Se requiere disear un algoritmo que calcule


el nmero de meses que hay entre los aos A
y B.
Algoritmo
Start

1. Capturar valores de A y B
Read A
Read B

2. Asignar a years la operacin B-A years B A


months years * 12
3. Asignar a months la operacin years * 12
Print months

4. Muestre el valor de months


Finish

Algoritmos y diagramas de flujo Algoritmos y Programacin 10


Algorithms represented as flowcharts

Escriba un algoritmo que calcule el rea de


un rectngulo dada la longitud de sus lados.

Start
Datos de entrada: longitud de
los lados Read width
Datos de salida: rea del Read height
rectngulo
Definicin de variables: area width * height
width: ancho
height: alto
area: rea Print area

Proceso?: multiplicar el
ancho por el alto Finish

Algoritmos y diagramas de flujo Algoritmos y Programacin 11


Syntax vs. semantics
Sintxis Semntica
Conjunto de reglas que Es el significado de las
determinan los smbolos y expresiones permitidas
las combinaciones de por la sintxis de los
stos, que son vlidos en algoritmos y programas.
un lenguaje.

Print x Determina si un nmero es primo

Finish

Algoritmos y diagramas de flujo Algoritmos y Programacin 12


Distance between points
Escriba un algoritmo que calcule la distancia entre
dos puntos en el plano cartesiano, dadas su
coordenadas.
Start

Datos de entrada: coordenadas x1,


Read x1, y1, x2, y2
y1 y x2, y2
Datos de salida: distancia
Definicin de variables: catx x2 - x1
x1, x2, y1, y2: coordenadas caty y2 - y1
dist catx**2 + caty**2
dist: distancia dist dist**0,5
catx, caty: catetos
Proceso?:
Print dist

Finish

Algoritmos y diagramas de flujo Algoritmos y Programacin 13


Primitives
Son las operaciones permitidas en un
algoritmo, para las cuales no es
necesario hacer su propio algoritmo.
En lenguajes de programacin, son las
instrucciones que el traductor
entiende, que es capaz de traducir.

Algoritmos y diagramas de flujo Algoritmos y Programacin 14


Operators and expressions
Operadores aritmticos
2
Operador Nombre Ejemplo Resultado 4 x 2 x +8
+ Suma 1+3 4 cd
- Resta 7 10 -3
* Multiplicacin 3*5 15
/ Divisin 8/5 1.6
// Divisin entera 8//3 2
(4*(x**2)-2*x+8)/(c-d)
% Modulo (Residuo) 15%7 1
** Potencia 2**3 8

Operadores relacionales
2 2
Operador Nombre Ejemplo Resultado ( x2 x
1 ) ( y 2 y1 )
> Mayor 1>3 False (F)
>= Mayor o igual 2 >= 1 True (V)
< Menor -5 < -1 True (V)
<= Menor o igual 3 <= 3 True (V)
!= Diferente 13 != 4 True (V)
(x2-x1)**2 >= (x2-x1)**2
== Igual (Comparacin) 0 == 1 False (F)

Algoritmos y diagramas de flujo Algoritmos y Programacin 15


Assignment operator
Permite asociar el resultado de una expresin, a
una variable. Una expresin por s sola:

((x**3)-5*x-2)/(a%d)*k

no indica qu hacer con el resultado!

z = ((x**3)-5*x-2)/(a%d)*k

El operador de asignacin es el nico que


cambia el estado de una variable!
Algoritmos y diagramas de flujo Algoritmos y Programacin 16
Flowcharts
indica el punto nico
Start
donde empieza el
indica la lectura (recepcin) algoritmo
o impresin (envo o salida) Read/Print
de datos desde o hacia flechas indican la
afuera del sistema secuencia entre dos
secciones del algoritmo
indica un proceso secuencial
Process
de operaciones o clculos
indica la evaluacin de una yes
condicin para determinar Decision
el flujo del algoritmo no

Read/Print Read/Print

indica el punto donde


Finish
termina el algoritmo

Programa para probar diagramas de flujo:


http://raptor.martincarlisle.com/
Algoritmos y diagramas de flujo Algoritmos y Programacin 17
Conditional euro-peso conversion
Escriba un algoritmo que convierta una cantidad en
euros a su equivalente en pesos, de ayer o de hoy,
segn se especifique. Asuma que el precio del euro
ayer fue 3500 y el de hoy es 3600. Start

Read day
Datos de entrada: da (ayer u hoy) Read eur

y cantidad de euros a convertir yes no


Datos de salida: valor en pesos day == Ayer

Definicin de variables:
cop eur * 3500 cop eur * 3600
day: da
eur: cantidad en euros
condicional
cop: cantidad en pesos
Proceso?: dependiendo del da Print cop
elegido, multiplicar eur por 3500 o por
3600 Finish

Algoritmos y diagramas de flujo Algoritmos y Programacin 18


Conditionals
Sirven para representar alternativas de ejecucin, es
decir, que se haga una cosa u otra dependiendo del
valor de una expresin lgica.

SI (expresin lgica)
Instrucciones que se realizan si la expresin es verdadera
DE LO CONTRARIO
Instrucciones que se realizan si la expresin es falsa
FIN SI

yes no
condicin

proceso 2 proceso 1

Algoritmos y diagramas de flujo Algoritmos y Programacin 19


Leap year algorithm
Se requiere un algoritmo que al ser preguntado por
un ao cualquiera, diga si ste es un ao bisiesto o
no.
Atencin: no todos los aos mltiplos de 4 son
bisiestos. Si es mltiplo de 100 no es bisiesto, a no ser
que sea tambin mltiplo de 400.
Use el operador mdulo (%). Si X = A * B + R con 0 < R < A
entonces,
R=X%A

Datos de entrada: nmero entero year Proceso?: verificar si el ao


Datos de salida: mensaje ingresado es divisible por 400, por 100
Definicin de variables: y por 4 para decidir si es bisiesto o no.
year: nmero entero (ao)

Algoritmos y diagramas de flujo Algoritmos y Programacin 20


Diagrama de flujo para
el algoritmo del ao bisiesto
Hacer pruebas con:
year 2013
Start
year 1200
Read year year 200
year 4
no
year%400==0
yes no
year%100==0
yes no
Print S! year%4==0
yes
Print No!

Print S! Print No!

Finish

Algoritmos y diagramas de flujo Algoritmos y Programacin 21


Sum of the first N integers
Escriba un algoritmo que calcule la Start
suma de los primeros N nmeros
enteros, donde N es un dato de Read N

entrada.
num 1
sum 0
Datos de entrada: nmero entero N
Datos de salida: suma de los primeros
iteracin
N nmeros
num<N+1
Definicin de variables: no
yes
N: nmero entero
num: nmero que se va sum sum + num
incrementando (contador auxiliar) num num +1
sum: suma
Proceso?: generar los nmeros
consecutivos desde el 1 hasta el N e irlos Print sum
sumando
Finish

Algoritmos y diagramas de flujo Algoritmos y Programacin 22


Prueba de escritorio
Es una prueba manual que se hace de un algoritmo
para verificar su funcionamiento. Start

Read N

N num sum num 1


sum 0
4 1 0
4 2 1 num<N+1
no
4 3 3 yes

sum sum + num


4 4 6 num num +1

4 5 10
Print sum

Finish

Algoritmos y diagramas de flujo Algoritmos y Programacin 23


Iteration
Las iteraciones, repeticiones, bucles o ciclos sirven
para indicar la repeticin de una o varias
instrucciones mientras que se cumpla una condicin.

MIENTRAS (expresin lgica)


proceso 1
Instrucciones que se
realizan mientras que la
yes
expresin sea verdadera condicin
FIN MIENTRAS no
proceso 2
Instrucciones que se realizan
luego de que la expresin se
vuelva falsa proceso 3

Algoritmos y diagramas de flujo Algoritmos y Programacin 24


Counter and accumulator variables

Variable contador: sirve para contar cuantas


veces se d una condicin o evento
-> cuntas veces se repite un ciclo, cuantas veces una
variable supera un lmite, etc

count count + 1

Variable acumulador: sirve para acumular los


resultados de una operacin que se repite
-> acumular la suma iterativa de varios elementos, acumular
las multiplicaciones para calcular un factorial, etc

sum sum + res


sum sum * res

Algoritmos y diagramas de flujo Algoritmos y Programacin 25


Block diagrams
Primer paso para identificar Ej: Dada una lista de estudiantes y sus notas
encriptadas, calcule la nota promedio del
entradas, salidas y bloques grupo y la lista de estudiantes que no pasaron.
funcionales (o procesos), entre Se conoce adems la contrasea y la nota
mnima para pasar.
otros.
Nmero decimal
(escalar)
Mltiples cadenas de Arreglo de nmeros
Proceso B
letras decimales Nota
AUXILIARES
Calcular la
nota promedio
EN
promedio SA
TR
Lista de AD Proceso A
Desencriptar
LID
estudiantes AS AS
Desencriptar Notas desencriptadas
Lista de notas las notas
Lista de
Nota para ganar estudiantes
Proceso C
Listar los Lista de
Nota estudiantes estudiantes que
para ganar que no no pasaron
Contrasea
pasaron

Algoritmos y diagramas de flujo Algoritmos y Programacin 26

Vous aimerez peut-être aussi