definiciÓn de lenguajes algorÍtmicos

21
2.3 DEFINICIÓN DE LENGUAJES ALGORÍTMICOS METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Upload: adark

Post on 07-Dec-2014

15.646 views

Category:

Documents


23 download

DESCRIPTION

DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

TRANSCRIPT

Page 1: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

2.3 DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Page 2: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Las características fundamentales que debe cumplir todo algoritmo son: Un algoritmo debe ser preciso e indicar el orden de realización de cada

paso.  Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se

debe obtener el mismo resultado cada vez. Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar

en algún momento; o sea debe tener un número finito de pasos. La definición de un algoritmo debe describir tres partes: Entrada, Proceso

y Salida.

Características de los algoritmos

Page 3: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Ejemplo 4: En un algoritmo de receta de cocina se tiene que: Entrada: Ingredientes y utensilios empleados. Proceso: Elaboración de la receta de cocina.Salida: Terminación del platillo, por ejemplo enchiladas. Fin del ejemplo 4

Page 4: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Ejemplo 5:  Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su

base 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. 

Solución: Los pasos del algoritmo son: InicioLeer el pedidoExaminar la ficha del clienteSi el cliente es solvente, aceptar pedido; en caso contrario, rechazar

pedido.Fin Fin del ejemplo 5.

Page 5: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Ejemplo 6Se desea diseñar un algoritmo para saber si un número es primo o no. Un número es primo si sólo puede dividirse entre sí mismo y entre la unidad, es decir, no tiene más divisores que él mismo y la unidad. Por ejemplo, 9, 8 6, 4, 12, 16, 20 no son primos, ya que son divisibles pro números distintos a ellos mismos y a la unidad. El 9 es divisible entre 3, el 8 es divisible entre 2 y entre 4, etc.

1. Solución:2. Inicio3. Hacer X igual a 2 (X = 2, X variable que representa a los divisores del

número N que se busca)4. Dividir N entre X (N/X)5. Si el resultado de N/X es entero, entonces N no es un número primo y

continuar con el paso 7; en caso contrario, continuar con el siguiente paso.6. Sumar 1 a X (X = X+1)7. Si X es igual a N, entonces N es un número primo; en caso contrario,

continuar con el paso 3.8. Fin. Fin del ejemplo 6.

Page 6: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Una computadora no tiene capacidad para solucionar problemas a menos de que se le proporcionen los pasos sucesivos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar constituyen, como ya se mencionó, el algoritmo.

La información proporcionada al algoritmo constituye su entrada y la información producida por el algoritmo constituye su salida.

  Los problemas complejos pueden resolverse más eficazmente con la

computadora cuando se divide en subproblemas que sean más fáciles de solucionar que el problema original. Este método suele denominarse “divide y vencerás”, y consiste en dividir el problema complejo en otros más simples.

Diseño de un algoritmo

Page 7: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Ejemplo 7:Un problema que pretende encontrar el perímetro y el área de un círculo puede dividirse en tres problemas más simples, como se muestra en la siguiente figura:

Page 8: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

La descomposición del problema original en subproblemas más simples y a continuación dividir estos subproblemas en otros más simples que pueden implementarse para su solución en la computadora se denomina diseño descendente (top-down design). Normalmente los pasos diseñados en el primer esbozo del algoritmo son incompletos e indican sólo unos pocos pasos (un máximo de doce). Tras esta primera descripción, estos se amplían en una descripción más detallada con más pasos específicos. Este proceso se denomina refinamiento del algoritmo (stepwise refinement). Para problemas complejos se necesitan con frecuencia diferentes niveles de refinamiento antes de que se pueda obtener un algoritmo claro, preciso y completo.

 El problema de cálculo del perímetro y área del círculo se puede descomponer en subproblemas más simples:

 1. Leer datos de entrada2. Calcular el perímetro y área del círculo3. Escribir resultados (datos de salida)

Page 9: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Las ventajas más importantes del diseño descendente son:

El problema se comprende más fácilmente al dividirse en partes más simples denominadas módulos.

Las modificaciones en los módulos son más fáciles. La comprobación del problema se puede verificar fácilmente. 

Tras los pasos anteriores (diseño descendente y refinamiento sucesivo por pasos) es preciso representar el algoritmo mediante una determinada herramienta de programación: diagrama de flujo, pseudocódigo o diagrama N-S.

Page 10: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Un diagrama de flujo (flowchart) es una de las técnicas de representación del algoritmo más antigua y a la vez más utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparición de lenguajes de programación estructurados.

Símbolos de diagramas de flujo

Diagramas de flujo

Page 11: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Símbolos de diagramas de flujo

Page 12: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Símbolos de diagramas de flujo

Page 13: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Ejemplo 8: 

Se desea realizar el algoritmo que resuelva el siguiente problema: Cálculo de los salarios mensuales de los empleados de una empresa, sabiendo que éstos se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por horas. Si se pasan de cuarenta horas semanales, las horas extraordinarias se pagarán a razón de 1.5 veces la hora ordinaria.

 Solución: Algoritmo 1. Leer datos del archivo de la empresa, hasta que se encuentre la ficha

final del archivo (HORAS, PRECIO_HORA, NOMBRE).2. Si HORAS <= 40, entonces SALARIO es el producto de HORAS por

PRECIO_HORA.3. Si HORAS > 40, entonces SALARIO = 40 x PRECIO_HORA + 1.5 x

PRECIO_HORA x (HORAS – 40)

Page 14: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Diagrama de flujo

SALARIO = HORAS * PRECIO_HORA

Inicio

Leer HORAS, PRECIO_HORA, NOMBRE

HORAS <= 40

SALARIO = 40 * PRECIO_HORA + 1.5 * PRECIO_HORA * (HORAS - 40)

EscribirSALARIO

¿más datos?

Fin

SALARIO = HORAS * PRECIO_HORA

SALARIO = HORAS * PRECIO_HORA

InicioInicio

Leer HORAS, PRECIO_HORA, NOMBRE

Leer HORAS, PRECIO_HORA, NOMBRE

HORAS <= 40HORAS <= 40

SALARIO = 40 * PRECIO_HORA + 1.5 * PRECIO_HORA * (HORAS - 40)

SALARIO = 40 * PRECIO_HORA + 1.5 * PRECIO_HORA * (HORAS - 40)

EscribirSALARIO

¿más datos?

Fin

Fin del ejemplo 8

Page 15: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

El pseudocódigo es en lenguaje de especificación de algoritmos. El uso de tal lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil.

 El pseudocódigo nació como un lenguaje similar al inglés y era un medio de representar básicamente las estructuras de control de programación estructurada.

 El pseudocódigo original utiliza para representar las acciones sucesivas palabras reservadas en inglés, similares a sus homónimos en lenguajes de programación, tales como start, end, stop, if-then-else, repeat-until, etc. La escritura de pseudocódigo exige normalmente la indentación (sangría en el margen izquierdo) de diferentes líneas.

Pseudocódigo

Page 16: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Ejemplo 9:

El pseudocódigo correspondiente al diagrama de flujo del ejemplo 2.3.3 es el siguiente:

 Start

/ cálculo de impuesto y salariosread HORAS, PRECIO_HORA, NOMBREif HORAS >= 40 then

SALARIO= HORAS * PRECIO_HORAelse

SALARIO=40*PRECIO_HORA + 1.5*PRECIO_HORA*(HORAS –40)endifWrite SALARIO

 endfin del ejemplo 9.

Pseudocódigo

Page 17: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

El algoritmo comienza con la palabra start y finaliza con la palabra end, en inglés (en español, inicio, fin). Entre estas palabras, sólo se escribe una instrucción o acción por línea.

La línea precedida por // se denomina comentario. Es una información para el lector del programa y no realiza ninguna instrucción ejecutable, sólo tiene efecto de documentación interna del programa.

Pseudocódigo

Page 18: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

El diagrama N-S de Nassi-Schneiderman, también conocido como diagrama de Chapin, es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una misma caja.

Un algoritmo se representa con un rectángulo en el que cada banda es una acción a realizar:

Diagramas de Nassi-Scheneiderman (N-S)

Page 19: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Ejemplo 10:

Cálculo de salarios

Leer

Nombre, horas, precio

Calcular

Salario = horas * precio

Calcular

Impuestos = 0.25 * salario

Calcular

Neto = salario – impuestos

Escribir

Nombre, salario, impuestos, neto

Page 20: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

Otro ejemplo es la representación de la estructura condicional:

<acciones> <acciones>

SI NO¿condición?

<acciones> <acciones>

SI NO¿condición?

Page 21: DEFINICIÓN DE LENGUAJES ALGORÍTMICOS

Elementos y reglas de la representación gráfica y manuscrita de los algoritmos

En un algoritmo secuencial se ejecutan las sentencias en orden secuencial, es decir, cuando termina la ejecución de una sentencia comienza la que está inmediatamente después.

Implementación de algoritmos secuenciales