Você está na página 1de 39

12/09/2012

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

La resolucin de problemas exige al menos los siguientes pasos:


1. Definicin o anlisis del problema. 2. Diseo del algoritmo. 3. Transformacin del algoritmo en un programa. 4. Ejecucin y validacin del programa.

Resolucin de un problema

La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema propuesto.

Problema

Diseo del algoritmo

Programa de computadora

Ejecucin y Validacin

12/09/2012

Pasos para resolucin de un problema


1. 2.

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

Conjunto de instrucciones ordenadas, que resuelven un problema especifico.


No son nicos, por lo que pueden tener

diferente Eficiencia. Se los escribe en Seudo cdigo.


es una representacin indentada, en un idioma

base. No puede ser ejecutado por una computadora.

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.

Caractersticas de los algoritmos


Debe ser preciso e indicar el orden de realizacin de cada paso. Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado. Debe ser finito. Debe tener un nmero finito de pasos.

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

Ejemplo: pasos del algortimo


1. 2. 3. 4.

Leer el pedido. Examinar la ficha del cliente. Si el cliente es solvente, Aceptar pedido Si el cliente no es solvente, Rechazar pedido

Ejercicios

Disear los algoritmos que resuelvan los siguientes problemas:


Cambiar un foco fundido.
Hacer una llamada telefnica. Ir al cine. Cambiar una llanta de un automvil.

Hacer palomitas en el micro.

12/09/2012

Cambiar un foco fundido


Podra resumirse en dos pasos: 1. Quitar el foco 2. Colocar un foco nuevo

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.

Anlisis del problema


Su propsito es ayudar al programador para llegar a una cierta comprensin de la naturaleza del problema. El problema debe estar bien definido si se desea llegar a una solucin satisfactoria. Para poder definir con precisin el problema se requiere especificar con detalle la entrada y la salida.

12/09/2012

Anlisis del problema


Qu informacin debe proporcionar la resolucin del problema? Qu datos se necesitan para resolver el problema?

Ejemplo
Leer el radio de un crculo y calcular e imprimir su rea y el permetro.

Entradas: Radio del crculo

Salidas:
rea del circulo Permetro del circulo Variables: RADIO AREA PERIMETRO

12/09/2012

Diseo del algoritmo


divide y vencers (subproblemas) diseo descendente (top-down) refinamiento del algorimo.

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

Fases del diseo de un algoritmo

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

Escritura inicial del algoritmo


Qu hacer para ir a ver una pelcula?
Inicio entrar al cine ver la pelcula salir del cine Fin Inicio ir al cine comprar el boleto ver la pelcula regresar a casa Fin Inicio ver la cartelera ir al cine comprar el boleto entrar a la sala ver la pelcula salir del cine regresar a casa Fin

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

AREA = 3.1416 * RADIO * RADIO

PERIMETRO = 2 * 3.1416 * RADIO

escribir AREA y PERIMETRO

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

El algoritmo general es:


1.

Obtener valores de horas trabajadas, salario por hora e impuesto. Calcular salario bruto, total de impuestos y salario neto.

2.

3.

Visualizar salario bruto, total de impuestos y salario neto.

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

horas_trabajadas, salario_hora, tasa_impuesto


calcular

salario_bruto = horas_trabajadas * salario_hora


calcular

total_impuesto = salario_bruto * tasa_impuesto


calcular

salario_neto = salario_bruto total_impuesto

escribir

salario_bruto, total_impuesto, salario_neto


FIN

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

Para tomar decisiones lgicas


simples

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

Solucin del ejercicio 1


Inicio Leer horas_trabajadas, precio_hr; Si horas_trabajadas <= 40 entonces sueldo precio_hr * horas_trabajadas; Sino Si horas_trabajadas <= 48 entonces hrs_extra = horas_trabajadas 40; sueldo = 40 * precio_hr + hrs_extra * 2 * precio_hr; Sino hrs_extra = horas_trabajadas 48; sueldo = 40 * precio_hr + 8 * (2 * precio_hr) + hrs_extra * (3 * precio_hr ); Fin_si Fin_si Escribir sueldo; Fin

Solucin del ejercicio 1 (otra forma)


Inicio Leer horas_trabajadas, precio_hr; Si horas_trabajadas <= 40 entonces sueldo precio_hr * horas_trabajadas; Sino hrs_extra horas_trabajadas 40; Si hrs_extra > 8 entonces hrs_extra_8 hrs_extra 8; pago_hrs_extra precio_hr * 2 * 8 + precio_hr * 3 * hrs_extra_8; Sino pago_hrs_extra precio_hr * 2 * hrs_extra; Fin_si sueldo precio_hr * 40 + pago_hrs_extra; Fin_si Escribir sueldo; Fin

25

12/09/2012

Solucin del ejercicio 2


Inicio Leer A, B, C; Si A > B entonces Si A > C entonces Si B > C entonces Escribir A, B, C; Si no Escribir A, C, B; Si no Escribir C, A, B; Si no Si B > C entonces Si A > C entonces Escribir B, A, C; Si no Escribir B, C, A; Si no Escribir C, B, A; Fin si Fin

Solucin del ejercicio 2

26

12/09/2012

Solucin del ejercicio 2 (otra forma)


Inicio Leer A, B, C; Si A > B y A > C y B > C entonces Escribir A, B, C; Si no Si A > C y A > B y C > B entonces Escribir A, C, B; Si no Si C > A y C > B y A > B entonces Escribir C, A, B; Si no Si B > A y B > C y A > C entonces Escribir B, A, C; Si no Si B > C y B > A y C > A entonces Escribir B, C, A; Si no Escribir C, B, A; Fin si Fin

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

Solucin del ejercicio 1


Inicio tarifa1 30; tarifa2 45; tarifa3 60; Leer horas_trabajadas; Si horas_trabajadas <= 40 entonces sueldo horas_trabajadas * tarifa1; Sino Si horas_trabajadas <= 48 entonces hrs_extra horas_trabajadas 40; sueldo hrs_extra * tarifa2 + 40 * tarifa1; Sino hrs_extra horas_trabajadas 48; sueldo hrs_extra * tarifa3 + 8 * tarifa2 + 40 * tarifa1; Fin_si Fin_si Escribir sueldo; Fin

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

* 1.15; * 1.10; * 1.08; * 1.07;

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

Reglas para formar un identificador


Debe comenzar con una letra (A a Z, maysculas o minsculas) y no deben contener espacios en blanco. Letras, dgitos y caracteres como la subraya ( _ ) estn permitidos despus del primer carcter. La longitud de identificadores puede ser de varios caracteres. Pero es recomendable una longitud promedio de 8 caracteres. El nombre del identificador debe dar una idea del valor que contiene.

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

Você também pode gostar