Download Ejemplo 3. - AlgPooISandyrc
Document related concepts
no text concepts found
Transcript
TALLER 2 PRIMITIVAS ALGORÍTMICAS Y MÉTODOS DE REPRESENTACIÓN DE ALGORITMOS DIVINA EPIAYU URIANA DIANNYS DAYANA MERCADO LUIS JOSE PICHON SANDY ROMERO CUELLO UNIVERSIDAD DE LA GUAJIRA FACULTADDE INGENIERIA INGENIERIA DE SISTEMAS SEMESTRE I RIOHACHA LA GUAJIRA 2012 1. Que es una primitiva algorítmica • Lea: Esta primitiva es usada para capturar los datos que el usuario quiere asignar a las variables. Ejemplos. Lea x Hace que se interrumpa la ejecución del algoritmo y que el usuario digite un valor de cualquier tipo que será asignado a la variable x. Generalmente se acompaña la captura de algún mensaje que indica al usuario que objetivo tiene la captura. Por ejemplo: Lea "mensaje". x • Escriba: Primitiva usada para mostrarle resultados al usuario del programa (cuando nos refiramos a algoritmo lo estamos haciendo implícitamente a un programa ya que el objetivo final de hacer un algoritmo es pasarlo a un programa traduciendo las primitivas en los comandos propios del lenguaje usado). Por ejemplo: Escriba "mensaje" + x Hace que se imprima el mensaje que se encuentra entre comillas concatenando con el contenido de la variable x. En dBase hay que tener cuidado con esta instrucción, ya que no es posible imprimir dos variables de diferente tipo, por consiguiente hay que convertirlas al mismo tipo para que no haya problema en la ejecución del programa. • Si condicional: Instrucción utilizada para obligar el flujo del algoritmo a efectuar una de dos acciones, dependiendo si la condición es verdadera o falsa. Ejemplo: * ALGORITMO 1 Inicio Lea x ┌─ Si int (x/2) * 2 = x entonces │ │ │ Escriba x "es par" Sino Escriba x "es impar" └─ Fsi En este algoritmo el usuario le da un valor cualquiera a x, posteriormente se ejecuta una condición en la cual si la parte entera de x entre dos, multiplicada por dos es igual a x se concluye que x, el número leído, es par; sino, es decir, si la condición es falsa entonces se escribirá que x, el valor de x, es impar. Recuerde que cuando se escribe un mensaje si este se encuentre sin comillas entonces se escribe es el valor de la variable. Por otro lado int ( ) es una función de dBase y muchos otros lenguajes que trunca un número decimal eliminándole la fracción decimal y dejando su parte entera. • Ciclo repetitivo Mientras que: Esta primitiva es usada para lograr que un conjunto de instrucciones se ejecuten repetidamente mientras que una condición, evaluada al principio y cada vez que se ejecuten las instrucciones, sea verdadera. Ejemplo: * ALGORITMO 2 Inicio Suma = 0 x=0 ┌─ Mq x <= 100 Haga │ ┌─ Si int (x/2) * 2 = x Entonces │ │ │ └─ Fsi │ Suma = Suma + x x=x+1 └─ Fmq Escriba "La suma es:" + Suma Este algoritmo inicializa una variable x igual a 0 y posteriormente evalúa si x es menor o igual a 100, en caso de ser cierta la condición, se ejecutan las instrucciones que se encuentran entre el Mq...Fmq, en este ejemplo se evalúa si x es par, si es cierto se incrementa la variable Suma en el valor de x; simplemente no se hace nada; posteriormente se incrementa x en uno. Al encontrar la instrucción Fmq el flujo del programa se devuelve al Mq a evaluar nuevamente la condición si x es menor o igual a 100. Nótese que el punto clave en este algoritmo está en la expresión x = x + 1, ya que se esta expresión no se ejecuta el programa se quedará en un ciclo infinito, lo que conocemos como un LOOP; al incrementar esta variable va a llegar un momento que sea mayor que 100 lo que hará que al evaluar la condición Mq x <= 100 haga, esta sea falsa por consiguiente la siguiente instrucción que se ejecute sea la que se encuentra después del Fmq. En últimas este algoritmo suma los primeros cincuenta (50) números pares. En resumen las primitivas algorítmicas pueden combinarse de cualquier manera, de forma tal, que pueden lograrse todos los objetivos deseados. 1.4. EJERCICIOS PRACTICOS. • Haga un algoritmo que lea dos variables numéricas y escriba cual es la mayor. * ALGORITMO 3 Inicio Lea x, y ┌─ Si x > y Entonces │ │ Escriba x "es el mayor" Sino │ ┌─ Si y > x Entonces │ │ │ │ Sino │ │ │ └─ Fsi Escriba y "es el mayor" Escriba "son iguales" └─ Fsi • Haga un algoritmo que sume los primeros 100 números múltiplos de 3. * ALGORITMO 4 Inicio Suma = 0 Cont = 1 x=3 ┌─ Mq Cont <= 100 Haga │ Suma = Suma + x │ x=x+1 │ Cont = Cont + 1 └─ Fmq Escriba "La suma es: " + Suma Usted puede darse cuenta que este algoritmo podría hacer lo mismo que el algoritmo 2 pero la lógica utilizada es completamente diferente, lo cual nos hace ver que hay muchas formas de hacer lo mismo por medio de diferentes algoritmos. • Hacer un algoritmo que lea un número no definido de números y que cuando estos se acaben diga cual es el mayor y cual es el menor. Para hacer este algoritmo se debe primero definir cual va a ser la condición que haga que no se lean más números, para efectos de este ejercicio vamos a escoger que la condición de finalización va a ser el cero, esto es cuando se lea el número cero (0) significa que no van a leerse más número. Un punto clave en el algoritmo es también elegir cual va a ser el menor número leído. * ALGORITMO 5 ┌─ Inicio │ Mayor = 0 │ SW1 = 0 │ SW2 = 0 │ ┌─ Mq SW2 = 0 Haga │ │ │ │ ┌─ Si x = 0 Entonces │ │ │ │ │ └─ Fsi │ │ ┌─ Si SW2 = 0 Entonces │ │ │ ┌─ Si SW1 = 0 Entonces │ │ │ │ Menor = x │ │ │ │ SW1 = 1 │ │ │ └─ Fsi │ │ │ ┌─ Si x > Mayor Entonces │ │ │ │ │ │ │ └─ Fsi │ │ │ ┌─ Si x < Menor Entonces │ │ │ │ │ │ │ └─ Fsi │ │ └─ Fsi │ └─ Fmq Lea x SW2 = 1 Mayor = x Menor = x │ Escriba " El mayor número fue:" Mayor │ Escriba " El menor número fue:" Menor └─ Final 2. Enúncielas y clasifíquelas Las estructuras de operación de programas son un grupo de formas de trabajo, Que permiten, mediante la manipulación de variables, realizar ciertos procesos Específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican De acuerdo con su complejidad en: Estructuras algorítmicas: a. Secuenciale: Asignación, entrada y salida. b. Condicionales: simples y múltiples. c. Cíclicas: hacer para, hacer mientras, repetir hasta 3. Identifique y explique la estructura de las primitivas algorítmicas secuenciales y condicionales Estructuras secuenciales La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La asignación de esto 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 asignación se puede clasificar de la siguiente forma: 1. Simples: Consiste en pasar un valor constante a una variable (a ← 15) 2. Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso (a ← a + 1) 3. Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b) 4. De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a ← c + b*2/4). Un ejemplo de estructura secuencial, como obtener el área de un triángulo: Inicio ... Float b, h, a; Printf ("Diga la base"); Scanf ("%f", &b); Printf ("Diga la altura"); Scanf ("%f", &h); a = (b*h)/2; Printf ("El área del triángulo es %f", a) ... Fin Estructuras Condicionales o Selectivas. La especificación formal de algoritmos tiene realmente utilidad cuando éste requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existe un número de posibles alternativas resultantes de la evaluación de una determinada condición. Una estructura es selectiva cuando sólo uno de los procesos alternativos posibles se puede seleccionar tras el cumplimiento de alguna condición determinada. Las estructuras selectivas se utilizan para tomar decisiones lógicas, de ahí que suele denominárseles también Estructuras de Decisión o Alternativas. En estas estructuras se evalúa una condición y en función del resultado de la misma, se realiza una opción u otra. Según el número de opciones o alternativas que se pueden tomar en una estructura, éstas se clasifican en: Condicionales o Alternativas Simples Alternativas Compuestas o Dobles Alternativas Múltiples Estructuras Condicionales Simples. La estructura condicional simple (IF - THEN), permite realizar una determinada acción si la condición a evaluar es verdadera; seguir el flujo de control secuencial en el caso de que la condición sea falsa. Su representación es la siguiente: IF <Condición> THEN <Acción> Cuando al cumplirse la condición se debe realizar más de una acción, éstas se deben encerrar entre un INICIO y un FIN, indicando que es un bloque de instrucciones: IF <Condición> THEN INICIO Acción 1 Acción 2 Acción 3 FIN Estructuras Condicionales Compuestas. La estructura selectiva compuesta (IF - THEN - ELSE), permite elegir entre dos alternativas posibles en función del cumplimiento o no de la condición a evaluar. Su representación es: IF <Condición> THEN <Acción> ELSE <Acción> Al igual que en la estructura condicional simple, cuando al cumplirse o no la condición, hay más de una acción a evaluar, éstas serán encerradas entre un INICIO y un FIN para indicar que es un bloque de Instrucciones el que se ejecutará: IF <Condición> THEN INICIO Acción 1 Acción 2 Acción 3 FIN ELSE <Acción> Estructuras Condicionales Múltiples. Esta estructura permite asociar un conjunto de condiciones a un conjunto de acciones que se excluyen mutuamente. La estructura se conoce como CASE y permite una desviación del flujo de control hacia múltiples procesos en función del resultado de la evaluación de una expresión o indicador. La representación de esta estructura es la siguiente: CASE <Expresión> OF INICIO OP1:Acción1 OP2:Acción2 OP3:Acción3 ELSE <Acción> FIN Al igual que en las otras estructuras alternativas, Acción1, Acción2 y Acción3 pueden ser a su vez un bloque de instrucciones. EJEMPLO: Se desea diseñar un Pseudocódigo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por teclado. Pseudocódigo Semana Variables Dia: Entero INICIO LEE Dia CASE Dia OF INICIO 1: ESCRIBE 'Domingo' 2: ESCRIBE 'Lunes' 3: ESCRIBE 'Martes' 4: ESCRIBE 'Miércoles' 5: ESCRIBE 'Jueves' 6: ESCRIBE 'Viernes' 7: ESCRIBE 'Sábado' ELSE ESCRIBE 'Error' FIN FIN Estructuras Condicionales Anidadas. Las estructuras IF - THEN e IF - THEN - ELSE implican la selección de una de dos alternativas, es posible también utilizar la instrucción IF para diseñar estructuras de selección que contengan más de dos alternativas. Por ejemplo, una estructura IF - THEN, puede contener otra estructura IF - THEN y esta estructura a su vez puede contener otra y así sucesivamente cualquier número de veces. Las estructuras IF interiores a otras estructuras IF se denominan ANIDADAS. Su representación es la siguiente: IF <Condition> THEN IF <Condition> THEN Acción1 ELSE Acción2 ELSE Acción3 EJEMPLO: Una compañía de alquiler de automóviles sin conductor, desea un programa para emitir las facturas de sus clientes, teniendo presente los siguientes puntos: Cantidad fija de $500 si no rebasan los 300 Kms. Distancia recorrida mayor de 300 Kms.: Si Dist > 300 Kms. y <= 1000 Kms. se pagará $500 + $30 por Km extra. Si Dist > 1000 Kms. se pagará $500 $30 por Km extra hasta los primeros 1000 Kms. y $20 por Km. Extra a partir del Km. 1000. Pseudocódigo Alquiler Variables KmInicial, KmFinal, KMS, Suplemento, Total: Entero INICIO LEE KmInicial, KmFinal KMS = KmFinal - KmInicial IF KMS <= 300 THEN Suplemento = 0 ELSE IF KMS <= 1000 THEN Suplemento = (KMS - 300) * 30 ELSE Suplemento = (700*30) / (KMS - 1000) * 20 TOTAL = 500 + Suplemento IMPRIME ' El importe de la factura es: ', TOTAL, ' pesos' FIN 4.Explique los siguientes métodos de representación algorítmicas e identifique las convenciones símbolos o estructuras que utiliza cada una. A) Pseudocódigo Pseudo = falso. El pseudo código no es realmente un código sino una imitación y una versión abreviada de instrucciones reales para las computadoras. Es una técnica para diseño de programas que permite definir las estructuras de datos, las operaciones que se aplicarán a los datos y la lógica que tendrá el programa de computadora para solucionar un determinado problema. Utiliza un pseudolenguaje muy parecido a nuestro idioma, pero que respeta las directrices y los elementos de los lenguajes de programación. Se concibió para superar las dos principales desventajas de los flujogramas: lento de crear y difícil de modificar sin un nuevo redibujo. Ejemplo 1 Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y media aritmética. Inicio Leer (a, b, c, d) Producto <-- (a * b * c * d) Suma <-- (a + b + c + d) Media <-- (a + b + c + d) / 4 Escribir (producto, suma, media) Fin B) Diagrama de caja. Son una herramienta que favorece la programación estructurada y reúne características gráficas propias de diagramas de flujo y lingüísticas propias de pseudocódigos. Constan de una serie de cajas contiguas que se leerán siempre de arriba-abajo y sus estructuras lógicas son las siguientes: Estructura Secuencial C) Diagrama de flujo Son la representación gráfica de la solución algorítmica de un problema. Para diseñarlos se utilizan determinados símbolos o figuras que representan una acción dentro del procedimiento. Utilizan unos símbolos normalizados, con los pasos del algoritmo escritos en el símbolo adecuado y los símbolos unidos con flechas, denominadas líneas de flujo, que indican el orden en que los pasos deben ser ejecutados. Para su elaboración se siguen ciertas reglas: Se escribe de arriba hacia abajo y de izquierda a derecha Siempre se usan flechas verticales u horizontales, jamás curvas Evitar cruce de flujos En cada paso expresar una acción concreta Secuencia de flujo normal en una solución de problema Tiene un inicio Una lectura o entrada de datos El proceso de datos Una salida de información Un final Simbología para diseñar flujogramas. VENTAJAS DE USAR FLUJOGRAMAS Rápida comprensión de las relaciones Análisis efectivo de las diferentes secciones del programa Pueden usarse como modelos de trabajo en el diseño de nuevos programas o sistemas Comunicación con el usuario Documentación adecuada de los programas Codificación eficaz de los programas Depuración y pruebas ordenadas de programas DESVENTAJAS DE LOS FLUJOGRAMAS Diagramas complejos y detallados suelen ser laboriosos en su planteamiento y diseño Acciones a seguir tras la salida de un símbolo de decisión, pueden ser difíciles de seguir si existen diferentes caminos No existen normas fijas para la elaboración de los diagramas de flujo que permitan incluir todos los detalles que el usuario desee introducir. Representando el ejemplo como flujograma tenemos: 5. Proponga y realice 5 Algoritmos en Pseudocódigo con las primitivas secuenciales básicas. Supongamos que tenemos un algoritmo para averiguar si un número es par, que puede ser descrito narrativamente de la siguiente manera: “si restando consecutivamente doses del numero 2, es par, si se obtiene el otro valor (el 1), entonces es impar”. El algoritmo escrito en pseudocódigo seria: Ejemplo 1. leer=N mientras N > 2 hacer N←N-2 si N=2 entonces escribe “es par” sino escribe “es impar” Fin Ejemplo 2. Diseñar un algoritmo para volver desde el cine a la casa considerando las diferentes situaciones, si tengo mucho dinero para tomar un taxi o tengo poco para tomar el autobús, y si no tengo para ninguno de los dos. 1tengo bastante dinero? Si paso2 No paso3 2tomar taxi e ir al paso6 3 tengo dinero para el autobús? Si paso4 No paso5 4 tomar el autobús e ir al paso6 5 volver paseando 6 Fin Ejemplo 3. Diseñar un algoritmo para hacer una llamada telefónica. 1 Buscar una caseta telefónica 2 La encontré? Si paso 3 No paso15 3 Acercarse 4 hay fila de gente? Si paso5 No paso7 5 esperar turno 6 ir al paso4 7 descolgar auricular 8 hay tono? Si paso9 No paso15 9 introducir tarjeta de créditos de llamada 10 validación de tarjeta 11 tiene crédito? Si paso12 No paso15 12 marcar numero deseado 13 esta ocupado? Si paso15 No paso13 14 dar mensaje y despedirse 15 fin Ejemplo 4. En un fichero tenemos las notas de 35 alumnos de una clase en un array Nota(1), Nota(2),..., Nota(35), establecidas entre cero y 10. Se desea desarrollar el pseudocódigo y diagrama de flujo para un programa que determine la nota media. 1. Inicio [Algoritmo Nota Media] 2. Desde i = 1 hasta 35 Hacer 2.1 Leer Nota(i) 2.2 Sumatorio = Sumatorio + Nota(i) Siguiente 3. Media = Sumatorio / 35 4. Mostrar “La nota media de la clase es”, Media 5. Fin Ejemplo 5. Diseñar el algoritmo correspondiente a un programa que lea el valor correspondiente a una distancia en millas marinas y las escriba expresadas en metros. Sabiendo que 1 milla marina equivale a 1852 metros. PROGRAMA: Millas_y_metros MÓDULO: Principal INICIO DATOS: CONSTANTES MILL_METR Numérico Entero = 1852 VARIABLES Dmillas Numérico Entero Dmetros Numérico Entero ALGORITMO: Escribir “Distancia en millas: ” Leer Dmillas Dmetros = Dmillas * MILL_METR Escribir “Distancia en metros:”, Dmetros FIN 6. Realice estos mismos algoritmos propuestos en diagrama de flujo y caja. Ejemplo 1. Ejemplo 2. Ejemplo 3. Ejemplo 4. Ejemplo 5.