Escolar Documentos
Profissional Documentos
Cultura Documentos
Unidad II
Algoritmos
2.1 Anlisis de problemas. 2.2 Representacin de algoritmos: grfica y pseudocdigo. 2.3 Diseo de algoritmos aplicados a problemas. 2.4 Diseo algortmico de funciones
12/09/2012
Resolucin de problemas
Resolucin de un problema
Problema
Programa de computadora
Ejecucin y Validacin
12/09/2012
3.
4.
Definicin del Problema. Diseo del algoritmo que describe la secuencia ordenada de pasos que conducen a la solucin. Expresar el algoritmo como un programa en un lenguaje de programacin adecuado. Ejecucin y validacin del programa.
Algoritmos
12/09/2012
Algoritmos
Son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo el algoritmo ser siempre el mismo.
Una receta de un plato de cocina se puede expresar en espaol, ingles o francs, pero cualquiera que sea el lenguaje, los pasos para la elaboracin del plato se realizaran sin importar el cocinero.
12/09/2012
Definicin de un algoritmo
Su definicin debe describir tres partes: Entrada Proceso Salida
Ejemplo
Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazar el pedido. Redactar el algoritmo correspondiente.
12/09/2012
Leer el pedido. Examinar la ficha del cliente. Si el cliente es solvente, Aceptar pedido Si el cliente no es solvente, Rechazar pedido
Ejercicios
12/09/2012
Si tuviera que entrenar un robot para que efecte esta tarea, hay que ser mas especifico y claro en los pasos a seguir, dar mas detalles (suponga que el foco se encuentra en el techo de la habitacin):
Situar escalera bajo el foco fundido. Elegir un foco de reemplazo (de la misma potencia que el anterior). 3. Subir por la escalera hasta alcanzar el foco. 4. Girar el foco contra las manecillas del reloj hasta que est suelto. 5. Ubicar el foco nuevo en el mismo lugar que el anterior. 6. Enroscar en el sentido de las manecillas del reloj hasta que quede apretado. 7. Bajar de la escalera.
1. 2.
12/09/2012
Resolucin de problemas
anlisis del problema. diseo o desarrollo del algoritmo. resolucin del algoritmo en la computadora.
12/09/2012
Ejemplo
Leer el radio de un crculo y calcular e imprimir su rea y el permetro.
Salidas:
rea del circulo Permetro del circulo Variables: RADIO AREA PERIMETRO
12/09/2012
Solucin
Subproblema
leer RADIO calcular AREA calcular PERIMETRO
escribir resultados
10
12/09/2012
Diseo de un algoritmo
Diseo de un algoritmo
Diseo descendente
Refinamiento
Herramientas de programacin
Subproblema
leer RADIO calcular AREA calcular PERIMETRO escribir resultados
Refinamiento
leer RADIO AREA = 3.1416 * RADIO ^ 2 PERIMETRO = 2 * 3.1416 * RADIO escribir AREA y PERIMETRO
11
12/09/2012
Refinamiento
Representacin grfica
diagrama de flujo diagrama N-S (Nassi-Schneiderman) pseudocdigo
12
12/09/2012
Diagramas de flujo
Terminal (inicio y fin)
Entrada/Salida
Proceso
Diagramas de flujo
no
Decisin
si
Conectores
Lnea de flujo
13
12/09/2012
Ejemplo
Inicio
Leer RADIO
Fin
PSEUDOCDIGO
Es un lenguaje de especificacin de algoritmos. Es una mezcla de lenguaje de programacin y de lenguaje natural. La idea del pseudocdigo consiste en aprovechar la flexibilidad y poder expresivo del lenguaje natural por un lado, y las reglas de composicin de los lenguajes de programacin de alto nivel por el otro. Utiliza para representar las acciones sucesivas palabras reservadas similares a sus homnimas en los lenguajes de programacin, tales como start (inicio), end (fin), stop (parar), if-then-else (si-entonces-sino), while (mientras), etc. La escritura del pseudocdigo exige normalmente la indentacin (sangra en el margen izquierdo) de diferentes lneas.
14
12/09/2012
Asignacin
La instruccin reemplace el valor de la variable x por el valor de la variable y puede ser representado como: asigne a x el valor de y:
xy
Ejemplos: volumen r2h hipotenusa a2 + b2 Resultado sin(a)
La representacin en pseudocdigo del diagrama de flujo del ejemplo anterior sera: inicio leer RADIO AREA = 3.1416 * RADIO ^ 2 PERIMETRO = 2 * 3.1416 * RADIO escribir AREA y PERIMETRO fin
15
12/09/2012
Ejercicio
Disear el algoritmo para calcular el salario neto de un trabajador conociendo las horas trabajadas, el salario por hora y la tasa de impuestos que se le debe deducir.
Entradas: horas trabajadas salario por hora tasa de impuestos Salidas: salario bruto total de impuestos salario neto Variables: horas_trabajadas salario_hora tasa_impuesto Variables: salario_bruto total_impuestos salario_neto
Obtener valores de horas trabajadas, salario por hora e impuesto. Calcular salario bruto, total de impuestos y salario neto.
2.
3.
16
12/09/2012
Pseudocdigo
inicio leer horas_trabajadas; leer salario_hora; leer tasa_impuesto; salario_bruto = horas_trabajadas * salario_hora; total_impuesto = salario_bruto * tasa_impuesto; salario_neto = sueldo_bruto total_impuesto; escribir salario_bruto; escribir total_impuesto; escribir salario_neto; fin
Diagrama de Flujo
leer
INICIO
escribir
17
12/09/2012
Programacin estructurada
Estructuras de control
Secuenciales: Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el nmero de rengln. Selectivas: Las instrucciones selectivas representan instrucciones que pueden o no ejecutarse, segn el cumplimiento de una condicin. Iterativas (Repetitivas): Las instrucciones iterativas representan la ejecucin de instrucciones en ms de una vez.
Estructuras Secuenciales
Las instrucciones se ejecutan de arriba hacia abajo. Se ejecutan dependiendo de la condicin dada dentro del algoritmo. instruccin1; instruccin2 instruccin3; instruccinn;
18
12/09/2012
Estructuras Secuenciales
instruccin1
instruccin2
instruccin3
instruccinn
Estructuras selectivas
dobles
compuestas mltiples
19
12/09/2012
Estructuras Selectivas
Selectiva Simple Realiza una instruccin, segn el cumplimiento de una condicin. Si <condicin> entonces instrucciones; Fin Si La condicin es una expresin booleana. Instrucciones es ejecutada slo si la condicin es verdadera.
Estructuras Selectivas
Selectiva Simple
si
condicin
no
instrucciones
20
12/09/2012
Ejercicio
Construir un algoritmo tal, que dado como dato la calificacin de un alumno en un examen, escriba "Aprobado" en caso que esa calificacin fuese mayor o igual que 70.
Estructuras Selectivas
Selectiva Doble La instruccin alternativa realiza una instruccin de dos posibles, segn el cumplimiento de una condicin. Si <condicin> entonces instrucciones1; Si no instrucciones2; Fin Si La condicin es una variable booleana o una funcin reducible a booleana (lgica, Verdadero/Falso). Si esta condicin es cierta se ejecuta Instrucciones1, si no es as, entonces se ejecuta Instrucciones2.
21
12/09/2012
Estructuras Selectivas
Selectiva Doble
si
condicin
no
instrucciones1
instrucciones2
Ejercicio
Dado como dato la calificacin de un alumno en un examen, escriba "aprobado" si su calificacin es mayor o igual que 70 y "Reprobado" en caso contrario. Dado como dato el sueldo de un trabajador, aplicar un aumento del 15% si su sueldo es inferior a $1000 y 12% en caso contrario, luego imprimir el nuevo sueldo del trabajador.
22
12/09/2012
Estructuras Selectivas
Selectiva Compuesta En la solucin de problemas encontramos numerosos casos en los que luego de tomar una decisin y marcar el camino correspondiente a seguir, es necesario tomar otra decisin. Dicho proceso puede repetirse numerosas veces. En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque est anidado dentro del otro.
Estructuras Selectivas
Selectiva Compuesta
La seleccin mltiple equivaldra a anidar varias funciones de seleccin. Si <condicin1> entonces instrucciones1; Si no Si <condicin2> entonces instrucciones2; Si no Si <condicin3> entonces instrucciones3; Si no instruccionesn; Fin Si Hay una serie de condiciones que son mutuamente excluyentes, si una de ellas se cumple las dems son falsas, hay un caso si no que ser cierto cuando las dems condiciones sean falsas. Si condicin1 es verdadera, entonces slo se ejecuta instrucciones1.
23
12/09/2012
Estructuras Selectivas
Selectiva Compuesta
si no
condicin1
instrucciones1
si
condicin2
no
instrucciones2
si
condicin3
no
instrucciones3
instruccionesn
Ejercicio
1.
2.
Determinar el pago a un trabajador por concepto de horas extras trabajadas, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple. Dados los datos A, B y C que representan nmeros enteros diferentes, construir un algoritmo para escribir estos nmeros en forma descendente.
24
12/09/2012
25
12/09/2012
26
12/09/2012
Ejercicios
1. Determinar el pago a un trabajador por concepto de horas trabajadas, si estas no exceden de 40 se le paga una tarifa de 30 pesos por hora; si las horas trabajadas no exceden de 48, la tarifa por hora es de 45 pesos, y si no excede de 56 la tarifa es de 60 pesos por hora.
27
12/09/2012
Estructuras Selectivas
Selectiva Mltiple
Usando la estructura de decisin mltiple se evaluar una variable que podr tomar n valores distintos 1, 2, 3, ....,n y segn que elija uno de estos valores de la variable, se realizar una de las n instrucciones o lo que es igual, el flujo del algoritmo seguir slo un determinado camino entre los n posibles. Segn <variable> hacer Caso <valor1>: instrucciones1; Caso <valor2>: instrucciones2; Caso <valor3>: instrucciones3; De otro modo: instruccionesn; Fin Segn
28
12/09/2012
Estructuras Selectivas
Selectiva Mltiple
variable 1 2 3 n
instrucciones1
instrucciones2
instrucciones3
instruccionesn
Ejercicio
Dados como datos la categora y el sueldo de un trabajador, calcule el aumento correspondiente teniendo en cuenta la siguiente tabla. Imprimir la categora del trabajador y el nuevo sueldo. Incrementos Categora Aumento 1 15% 2 10% 3 4 8% 7%
29
12/09/2012
Solucin
Inicio Leer categora, sueldo Segn categora hacer Caso 1: nuevo_sdo sueldo Caso 2: nuevo_sdo sueldo Caso 3: nuevo_sdo sueldo Caso 4: nuevo_sdo sueldo Fin Segn Escribir categora, nuevo_sdo; Fin
Estructuras Iterativas
Bucle Mientras El bucle se repite mientras la condicin sea cierta, si al llegar por primera vez al bucle mientras la condicin es falsa, el cuerpo del bucle no se ejecuta ninguna vez.
Mientras <condicin> hacer instrucciones; Fin Mientras
30
12/09/2012
Estructuras Iterativas
Bucle Mientras
si
condicin
no
instrucciones
Ejercicio
1.
Crear un programa que lea dos nmeros enteros y calcule el producto utilizando sumas sucesivas. 2. Elaborar un programa que permita leer una serie de nmeros positivos y determine y muestre el promedio de los nmeros ledos. La serie de nmeros deber terminar con un nmero negativo.
31
12/09/2012
Solucin 1
Inicio Leer entero1; Leer entero2; producto 0; cont 1; Mientras cont <= entero1 hacer producto producto + entero2; cont cont + 1; Fin Mientras Escribir producto; Fin
Estructuras Iterativas
Bucle Repetir Existen otras variantes que se derivan a partir de la anterior. La estructura de control repetir se utiliza cuando es necesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se cumpla la condicin:
Repetir instrucciones; Hasta que <condicin>;
32
12/09/2012
Estructuras Iterativas
Bucle Repetir
instrucciones
no
condicin
si
Estructuras Iterativas
Bucle Hacer El Bucle hacer se utiliza para repetir un bloque de cdigo mientras se cumpla cierta condicin.
Hacer instrucciones; Mientras <condicin>;
33
12/09/2012
Estructuras Iterativas
Bucle Hacer
instrucciones
si
condicin
no
Estructuras Iterativas
Bucle Para Una estructura de control muy comn es el ciclo para, la cual se usa cuando se desea iterar un nmero conocido de veces, empleando como ndice una variable que se incrementa (o decrementa):
Para i x hasta n a incrementos de s hacer instrucciones; Fin para
34
12/09/2012
Estructuras Iterativas
Bucle Para
ix
si
i <= n
instrucciones
no
ii+1
Ejercicio
Crear un algoritmo para encontrar el cuadrado de los 25 primeros nmeros naturales. El programa deber mostrar el nmero y su cuadrado. 2. Disear un programa para calcular la suma de los cuadrados de los 25 primeros nmeros naturales.
1.
35
12/09/2012
Solucin 1
Inicio suma 0; cont 1: Mientras cont <= 25 hacer suma suma + cont * cont; cont cont + 1; Fin Mientras Escribir suma; Fin
Solucin 2
Inicio cont 1; Mientras cont <= 25 hacer Escribir cont; Escribir cont * cont; cont cont + 1; Fin Mientras Fin
36
12/09/2012
Identificadores
Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posicin en la memoria de la computadora, que permite acceder a su contenido. Ejemplo: Nombre Num_hrs Calif2
Asignacin
La asignacin consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la siguiente forma:
Simples:
Consiste en pasar un valor constante a una variable (a <-15) Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a <- a + 1) Acumulador: Consiste en usarla como un sumador en un proceso (a <- a + b) De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre muchas variables (a <- c + b*2/4).
Contador:
En general el formato a utilizar es el siguiente: < Variable > <- <valor o expresin > El smbolo <- debe leerse asigne.
37
12/09/2012
Constantes
Una constante es un dato numrico o alfanumrico que no cambia durante la ejecucin del programa. Ejemplo: pi = 3.1416
38
12/09/2012
Ejercicios
Escriba un algoritmo que pregunte por dos nmeros y muestre como resultado la suma de estos. Use Pseudocdigo y diagrama de flujos. 2. Escriba un algoritmo que permita conocer el rea de un tringulo a partir de la base y la altura. Exprese el algoritmo usando Pseudocdigo y diagrama de flujo.
1.
Ejercicios
Calcular la media de una serie de nmeros positivos, suponiendo que los datos se leen de una terminal. Un valor de cero como entrada- indicar que se ha alcanzado el final de la serie de nmeros positivos.
39