Algoritmos y Solucion de Problemas
Algoritmos y Solucion de Problemas
Algoritmos y Solucion de Problemas
UNIDAD 4:
PROBLEMAS
CENTRO DE SISTEMAS
ALGORITMOS
SOLUCION
DE
4.2 ALGORITMOS
Debido a que el computador no tiene la capacidad de solucionar problemas, se le deben
proporcionar los pasos sucesivos a realizar.
Un algoritmo es un conjunto de instrucciones que especifican la secuencia de operaciones
a realizar, en orden, para resolver un sistema especfico o un tipo de problema.
Las caractersticas de un algoritmo son:
Pseudocdigo
Es la forma de escribir un algoritmo utilizando texto en espaol.
Tipo de Instruccin
Pseudocdigo espaol
Comienzo de proceso
Inicio
Fin de proceso
Fin
Entrada (lectura)
Leer
Salida (escritura)
Escribir
Asignacin
B 7
Selectiva
si-entonces
Repetitivas
Ejemplo 1.
Disee un algoritmo para ver una pelcula
PSEUDOCODIGO
CENTRO DE SISTEMAS
Inicio
Inicio
Invitar a cine
Invitar a cine
Trasladarse al teatro
Hacer fila
Comprar entradas
Entrar a la sala
Ver la pelcula
Volver a casa
Volver a casa.
Fin
Fin
Ejemplo 2.
Disee un algoritmo para hacer la solicitud de un crdito en un banco.
PSEUDOCODIGO
Inicio
Leer la solicitud
Examinar tarjeta del cliente y capacidad de endeudamiento
Si el cliente es solvente y cumplido
entonces
aprueba el crdito
Si no
rechaza el crdito
Fin
Ejemplo 3.
Disee un algoritmo para leer un nmero y escribir su cuadrado:
PSEUDOCODIGO
Inicio
Leer A
BA*A
Escribir B
Fin
Utilice palabras reservadas como: si, inicio, mientras, sino, entonces, leer, escribir.
Elija un mtodo para escribir los algoritmos:
o El empleo de la indentacin (sangra o justificacin).
o El uso de comentarios para documentar el algoritmo.
Diagramas de flujo
Es una tcnica de representacin de algoritmos ms antigua y a la vez ms utilizada,
aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin de
lenguaje de programacin orientado a objetos.
Un diagrama de flujo utiliza los smbolos (caja) unidos por flechas, denominados lnea de
flujo, que indican la secuencia en que se deben ejecutar.
Existen diversos tipos de diagramas de flujos, bsicamente se encuentran tres tipos: de
sistema, de bloque y detalle.
Los diagramas de flujos de sistema u organigramas de sistema, representan la relacin
existente entre los diferentes soportes fsicos que contienen la informacin necesaria para
la ejecucin de un proceso.
Los diagramas de bloques o macro procesos, muestran la estructura de los mdulos que
conforman la solucin del problema y el flujo existente entre ellos.
Los diagramas de flujo de detalle, son los que muestran la secuencia paso a paso para la
solucin de un problema que va a ser ejecutado en un procesador.
Un software diseado para construir y analizar algoritmos, es el DFD. Usted
puede crear diagramas de flujo de datos para la representacin de algoritmos
de programacin estructurada a partir de las herramientas de edicin que para
ste propsito suministra el programa. Despus de haber ingresado el
algoritmo representado por el diagrama, podr ejecutarlo, analizarlo y depurarlo en un
entorno interactivo diseado para ste fin. La interfaz grfica de DFD, facilita en gran
medida el trabajo con diagramas ya que simula la representacin estndar de diagramas
de flujo en hojas de papel.
DFD posee una ventana principal que proporciona el ambiente de trabajo en donde se
pueden construir y analizar algoritmos. Los componentes bsicos de la ventana principal
son: La barra de men, barras de herramientas, barras de desplazamiento y el rea de
trabajo.
CENTRO DE SISTEMAS
SIMBOLOGIA BSICA
SIMBOLOS PRINCIPALES
Smbolos de Salida
Impresora
Pantalla
Smbolos de Entrada
Teclado
Disco
Ejemplo:
Calcular y escribir el rea de un tringulo.
Variables: BASE, ALTURA, AREA
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
Leer BASE, ALTURA
AREA BASE * ALTURA /2
Escribir AREA
Fin
Cinta
CENTRO DE SISTEMAS
PRUEBA DE ESCRITORIO
Lnea 2
Lnea 3
Lnea 4
NUMERO
5
CUADRADO
25
CUBO
125
Ejemplo 1.
Dada una cantidad en pesos calcular y escribir su equivalencia en Dlares y Euros.
Sabiendo que el valor del dlar es $2230 y el Euro $3030.
Variables: P: Cantidad en Pesos, Dlar: equivalencia en dlares, Euro: equivalencia en
Euros
DIAGRAMA DE FLUJO
PSEUDOCODIGO
1. Inicio
2. Leer P
3.
DOLAR P /2230
4.
EURO P /3030
5. Escribir DOLAR, EURO
6. Fin
CENTRO DE SISTEMAS
DOLAR
EURO
100000
Lnea 2
44.44
Lnea 3
34.12
Ejemplo 2.
Calcular el rea de un triangulo en funcin de las longitudes de sus lados.
AREA=
P ( P A)( P B)( P C )
, donde P=(A+B+C)/2.
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
Leer A,B,C
P (A+B+C) /2
AREA RaizCuadrada(P*(P-A)*(P-B)*(P-C))
Escribir AREA
Fin
Ejemplo 3.
Calcular y escribir el salario neto de un trabajador dado el nmero de horas y el valor de
la hora y sabiendo que el tasa de impuesto que se le debe deducir es del 2%.
Variables: N: nmero de horas, V: valor hora, Sb: salario bsico (antes de impuesto),
I: impuesto, S: salario neto
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
Leer N,V
Sb N * V
I Sb * 0.02
S Sb - I
Escribir S
Fin
10
CENTRO DE SISTEMAS
que no se requieran especificar instrucciones por falso, simplemente se omite esta parte y
las instrucciones por verdadero no se ejecutaran:
si (condicin)
entonces instrucciones
fin_si
Ejemplo 1.
Inicio
Leer x, y
si (x<y)
entonces x x+1
fin_si
Escribir x,y
Fin
En el ejemplo anterior la expresin booleana es (x<y), si el valor generado es verdadero
(Por ejemplo si x=2 y y=3) entonces se ejecuta la instruccin a x asgnele x+1; en caso
de que la expresin booleana sea falsa (por ejemplo x=3 y y=2) entonces la secuencia de
instruccin a ejecutar sera la siguiente a fin_si, esto es escribir x,y.
Ejemplo 2.
Inicio
Leer x, y
si (x<y)
entonces x x+1
sino y y+1
fin_si
Escribir x,y
Fin
Este ejemplo se diferencia del anterior en que cuando la condicin es falsa se debe
realizar a y asgnele y+1 y luego sin importar que la condicin fuera verdadera o falsa se
escribe x,y.
Clases de condiciones
Existen dos
compuestas.
clases
de
condiciones,
las
condicionales
simples
las
condiciones
CONDICIONES SIMPLES
Son condiciones sencillas que establecen una relacin entre dos constantes, dos
variables, o una variable con una constante, utilizando los operadores de relacin. Por
ejemplo:
A >= B
X != 0
CONDICIONES COMPUESTAS
11
Permiten enlazar condiciones simples para formar otras ms complejas; las condiciones
son enlazadas entre s por medio de los operadores lgicos. Por ejemplo:
a>bya>c
x != y x = z
no (a > b) y no (x = y)
Ejemplo:
Inicio
Leer a
si (a<10 o a>20)
entonces x 3
sino x 0
fin_si
Escribir x
Fin
En el ejemplo anterior si la condicin es verdadera (por ejemplo si a=3) se le asigna 3 a
x; en caso de que sea falso (por ejemplo x=15) se le asigna 0 a x.
NO
CONDICION
12
CENTRO DE SISTEMAS
COMPOSICION
EJEMPLO
NO
Variable: Constante
SI
SUELDO > 500000
NO
Variable: Variable
SI
PAS=NUEVO
NO
Variable: Expresin
SI
INTE = A+B
NO
Expresin: Expresin
SI
A*B != C/E
Ejemplo 1.
Leer un nmero y escribir si es mayor o menor o igual que 100
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
Leer numero
si (numero > 100)
entonces escribir mayor
sino escribir menor o igual
fin_si
Fin
13
Ejemplo 2.
Leer dos nmeros, y determinar cual es el mayor.
Variables: N1: Numero
N2: Numero
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
Leer N1, N2
si (N1 > N2)
entonces escribir N1
sino escribir N2
fin_si
Fin
14
CENTRO DE SISTEMAS
Contador
Los procesos repetitivos son la base del uso del computador. En estos procesos se
necesita normalmente contar los sucesos o acciones internas del bucle. Una forma de
controlar un bucle es mediante un contador.
Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad
constante por cada iteracin.
El formato general es:
Ejemplo:
Z Z + 2, donde Z se incrementa en 2 en cada iteracin.
Acumulador
Es una variable cuya misin es almacenar por cada iteracin, cantidades variables
resultantes de sumas o productos sucesivos.
El formato general es:
Ejemplo:
15
Ejemplo 1.
Sumar una serie de nmeros, el programa solicita los nmeros por teclado hasta que se
digite el numero -1
Variables: SU: Acumulador (suma de los nmeros), NU: Numero
16
CENTRO DE SISTEMAS
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
SU 0
Leer NU
mientras (NU != -1) hacer
SU SU + NU
leer NU
fin_mientras
Escribir SU
Fin
17
Ejemplo 2.
Calcular el promedio de las notas de un grupo de alumnos. El programa finaliza el ingreso
de notas cuando se digite el cdigo 999.
Variables:
DIAGRAMA DE FLUJO
Inicio
SN 0
CN 0
Leer C
mientras ( C != 999) hacer
leer N
SN SN + N
CN CN + 1
leer C
fin_mientras
PN SN / CN
Escribir PN
Fin
18
CENTRO DE SISTEMAS
INSTRUCCIN PARA
La instruccin para permite repetir una instruccin o un grupo de instrucciones un
nmero determinado de veces. Esta instruccin solo es utilizada cuando se sabe el
nmero exacto de veces que va a ocurrir un ciclo.
La representamos en el pseudocdigo de la siguiente forma:
para Variable valor_inicial , valor_final , incremento haga
instrucciones
fin_para
En los diagramas de flujo la representamos con un rectngulo terminado en puntas:
19
Ejemplo 1.
Sumar 10 nmeros introducidos por teclado:
Variables: SU: Acumulador (Suma de los nmeros), NU: Numero que es introducido por
teclado, i: Contador que controla el ciclo para
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
SU 0
para i 1, 10, 1 haga
Leer NU
SU SU + NU
fin_para
Escribir SU
Fin
20
CENTRO DE SISTEMAS
Ejemplo 2.
Calcular y escribir el factorial de un nmero dado por el usuario.
Variables:
DIAGRAMA DE FLUJO
Inicio
F0
Leer NUM
para X 1, NUM, 1 haga
FF*X
fin_para
escribir F
Fin
21
Ejemplo 3
Leer 10 nmeros, calcular y escribir la cantidad de nmeros positivos y la cantidad de
nmeros negativos.
Variables:
NUM: Numero, CP: Cantidad de nmeros positivos, CN: Cantidad de
nmeros negativos.
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
CP 0
CN 0
para X 1, 10, 1 haga
Leer NUM
si (NUM>=0)
Entonces CP CP +
1
sino CN CN + 1
fin_si
fin_para
Escribir CP, CN
Fin
22
CENTRO DE SISTEMAS
Las estructuras que se pueden anidar son las selectivas o condicionales y las repetitivas.
CONDICIONALES ANIDADOS
En ocasiones es necesita tener la posibilidad de controlar las instrucciones que se deben
ejecutar entre ms de una alternativa, en cumplimiento de dos o ms condiciones. La
instruccin si, puede incluir otras instrucciones si. En este caso se dice que las
instrucciones si estn anidadas.
Esta instruccin si anidada, tiene la siguiente forma:
si (condicin1)
entonces instrucciones
sino
si (condicin2)
entonces instrucciones
sino instrucciones
fin_si
fin_si
23
24
CENTRO DE SISTEMAS
PSEUDOCODIGO
Inicio
leer NUMERO
si (NUMERO < 0)
entonces escribir menor que cero
sino si (NUMERO = 0)
entonces
escribir igual a cero
sino escribir mayor que cero
fin_si
fin_si
fin
DIAGRAMA DE FLUJO
25
Ejemplo 2:
Leer un carcter, determinar si es una letra, un nmero, otro carcter.
Variables: C: Carcter
PSEUDOCODIGO
Inicio
leer C
si (C>=a y C<=z)
entonces escribir LETRA
sino si (C>=0 y C<=9)
entonces escribir NUMERO
sino escribir OTRO CARACTER
fin_si
fin_si
fin
DIAGRAMA DE FLUJO
26
CENTRO DE SISTEMAS
Ejemplo 3:
Leer tres nmeros, determinar cul es el mayor.
Variables: A: Numero 1, B: Numero 2, C: Numero 3
PSEUDOCODIGO
Inicio
leer A, B, C
si (A > B y A>C)
entonces escribir A
sino
si (B>A y B>C)
entonces escribir B
sino
escribir C
fin_si
fin_si
fin
DIAGRAMA DE FLUJO
27
REPETITIVAS ANIDADAS
Es posible anidar ciclos o bucles. Los bucles anidados constan de un bucle externo con
uno o ms bucles internos. Cada vez que se repite el bucle externo, los bucles internos se
repiten.
Ejemplo 1:
Calcular y escribir las tablas de multiplicar del 1 al 5
Variables: i: Variable del ciclo externo (multiplicando), j: Variable del ciclo interno
(multiplicador), R: Resultado del producto
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
para i 1, 5, 1 haga
para j 1, 10, 1 haga
Ri*j
escribir i, j, R
fin_para
fin_para
Fin
28
CENTRO DE SISTEMAS
EJEMPLO 2:
Calcular y escribir el factorial de 5 nmeros dados por el usuario.
Variables: NUM: Numero,
F: Factorial, X: Variable del ciclo externo (cantidad de
nmeros), Y: Variable del ciclo interno (clculo del factorial)
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
para X 1, 5, 1 haga
F1
leer NUM
para Y 1, NUM, 1 haga
FF*X
fin_para
escribir F
fin_para
fin
29
EJEMPLO 3:
Para un conjunto de nmeros, calcular y escribir la suma de 1 hasta cada nmero. El
programa termina cuando se digite el numero 111.
Variables: N: Numero, SUM: Suma, X: Variable del ciclo interno (de 1 hasta el numero).
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
Leer N
Mientras (N!=111) hacer
SUM 0
para Y 1, NUM, 1 haga
FF*X
fin_para
escribir SUM
leer N
fin_mientras
fin
30
CENTRO DE SISTEMAS
EJEMPLO 4:
Calcular y escribir el resultado de las tablas de multiplicar del 1 hasta el 5 con
multiplicador hasta 10.
Variables: X: Multiplicando, Y: Multiplicador, R: Resultado de la multiplicacin.
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
X1
mientras (X <= 5) hacer
Y1
mientras Y <=10 hacer
RX*Y
escribir R
YY+1
fin_mientras
XX+1
fin_mientras
fin
31
EJEMPLO 5:
Se tiene un grupo de 20 alumnos, se necesita calcular y escribir el promedio de las notas
de cada uno, sabiendo que cada alumno tiene 5 notas.
Variables: A: Variable de ciclo externo (numero de alumnos), N: Variable del ciclo interno
(cantidad de notas), NO: Nota, SNO: Suma de notas, PROM: Promedio
PSEUDOCODIGO
DIAGRAMA DE FLUJO
Inicio
para A 1, 20, 1 haga
N1
SNO 0
mientras (N<=5) hacer
Leer NO
SNO SNO + NO
N N +1
fin_mientras
PROM SNO/5
escribir PROM
fin_para
fin
32