Representacion de Los Algoritmos

download Representacion de Los Algoritmos

of 13

Transcript of Representacion de Los Algoritmos

  • Algoritmos y estructura de datos I Pgina 1

    Karim Guevara, lvaro Fernndez Sesin 02

    UNIVERSIDAD CATLICA DE SANTA MARA PROGRAMA PROFESIONAL DE INGENIERA DE SISTEMAS

    SESIN 02:

    REPRESENTACIN DE ALGORITMOS

    I

    OBJETIVOS

    Explicar los elementos de un algoritmo

    Estudiar los mtodos formales para la representacin de algoritmos.

    Estudiar las diferentes estructuras de control de la programacin estructurada

    II

    TEMAS A TRATAR Mtodos formales para representar algoritmos Pseudo cdigo Estructuras de control (secuenciales, selectivas y repetitivas) Procedimiento y funciones.

  • Algoritmos y estructura de datos I Pgina 2

    Karim Guevara, lvaro Fernndez Sesin 02

    III

    MARCO TEORICO REPRESENTACIN DE ALGORITMOS

    Mtodo informal

    Lenguaje natural Ventajas: comprensible e intuitivo Inconveniente: impreciso

    Mtodos formales

    Pseudos cdigo Lenguaje natural limitado y sin ambigedad. Es una mezcla de lenguaje de programacin y espaol (o cualquier otro idioma). Es un conjunto pequeo y completo de sentencias que especfica los pasos de un algoritmo.

    Diagramas

    Diagramas de flujo u organigramas Utiliza un conjunto de smbolos para representar cada estructura de control y mediante lneas de flujo se indica el orden en que se realiza el flujo lgico del algoritmo

    Diagramas de Nassi-Schneiderman o Diagramas N-S Los pasos sucesivos se escriben en cajas con distintas formas segn la estructura de control que representen

    PSEUDO CDIGO

    1 ESTRUCTURA GENERAL

    ALGORITMO nombre VARIABLES declaracin de las variables utilizadas INICIO sentencias FIN

    2 EJEMPLO DE DECLARACIN DE VARIABLES

    nombre ES TEXTO TEXTO : nombre importe ES REAL REAL : importe tiene_tarjeta ES BOOLEANO BOOLEANO : tiene_tarjeta numero_cliente ES ENTERO ENTERO : numero_cliente precios ES VECTOR DE REALES ARRAYS[1..n] : precios

    Los nombres de las variables no deben contener espacios.

  • Algoritmos y estructura de datos I Pgina 3

    Karim Guevara, lvaro Fernndez Sesin 02

    3 SENTENCIAS SIMPLES Describen lo que debe hacer el algoritmo 3.1 Asignacin: almacena un valor en una variable o constante. Se representa con el operador:

    Lectura de datos del teclado LEER (importe) Escritura de datos en pantalla ESCRIBIR (importe) Expresiones aritmticas precio * 1.13 total + (precio + 3) * 2.5 Asignaciones importe precio * 1.13 total total + (precio + 3) * 2.5 factorial valor * factorial x x + 1 Expresiones lgicas (valores booleanos) SI (factorial > 34 Y factorial < 54000) O (contador < 32) ENTONCES 4 PROGRAMACIN ESTRUCTURADA Un programa se escribe utilizando los siguientes tipos de estructuras de control de secuencia: Secuencial: Una accin se ejecuta una tras otra, es decir, una instruccin sigue a otra en secuencia. Selectiva: Se evala la condicin y en funcin del resultado se ejecuta un conjunto de instrucciones u otro. Hay tres tipos de selectivas (simple, doble o mltiple). Repetitiva: Contienen un bucle (conjunto de instrucciones que se repiten un nmero finito de veces). Cada repeticin del bucle se llama iteracin. Todo bucle tiene que llevar

    Identificador declarado anteriormente

    Una variable, constante, constante literal o frmula a evaluar.

    Deben ser del

    mismo tipo

    Variable Expresin

  • Algoritmos y estructura de datos I Pgina 4

    Karim Guevara, lvaro Fernndez Sesin 02

    4.1 ESTRUCTURA SECUENCIAL

    Sentencia 1 Sentencia 2 ... Sentencia N

    Se caracteriza porque las acciones se ejecutan una tras otra, es decir una sentencia sigue a otra en secuencia.

    EJEMPLO

    Escribir un algoritmo que permita leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15% respectivamente. Desplegar el resultado. SOLUCIN

    PSEUDO CDIGO

    ALGORITMO Ejemplo VARIABLES Aum1, Aum2, Aum3, SF1, SF2, SF3 SON REALES INICIO LEER (S1, S2, S3)

    Aum1 S1 * 0.10

    Aum2 S2 * 0.12

    Aum3 S3 * 0.15

    SF1 S1 + Aum1

    SF2 S2 + Aum2

    SF3 S3 + Aum3 ESCRIBIR (SF1, SF2, SF3) FIN

    4.2 ESTRUCTURAS SELECTIVAS ESTRUCTURA SELECTIVA (SIMPLE)

    SI condicin ENTONCES sentencias

    FINSI

    Se evala la condicin, si es verdadera, se ejecutan las sentencias; en caso contrario, se salta dicho grupo de sentencias.

    ESTRUCTURA SELECTIVA (DOBLE)

    SI condicin ENTONCES sentencias 1

    SINO sentencias 2

    FINSI

    Se evala la condicin. Si es verdadera: se ejecutan las sentencias 1. Si es falsa: se ejecutan las sentencias 2.

    4.3 ESTRUCTURAS ITERATIVAS

    Se utiliza la estructura repetitiva ( For Loop) y la iterativa ( While Loop) para utilizar operaciones repetitivas dentro de un algoritmo.

  • Algoritmos y estructura de datos I Pgina 5

    Karim Guevara, lvaro Fernndez Sesin 02

    Una estructura repetitiva se ejecuta un nmero determinado de veces. Una estructura iterativa se ejecuta hasta que la condicin especificada deja de ser cierta.

    LA ESTRUCTURA REPETITIVA (FOR LOOP)

    Se usa cuando se conoce el nmero exacto de veces que hay que ejecutar el bucle. El bucle lleva asociado una variable, llamada ndice, a la que se le asigna un valor inicial y un valor final. Este ndice se va a incrementar o decrementar en cada iteracin de bucle en un valor constante

    PARA var inicio HASTA fin HACER sentencias

    FIN_PARA --------------------------------------------------------------------------------- PARA var inicio HASTA fin INCREMENTO valor HACER

    sentencias FIN_PARA --------------------------------------------------------------------------------- PARA var inicio HASTA fin DECREMENTO valor HACER

    sentencias FIN_PARA

    El trmino de iteracin (iteration terminal) contiene el valor de la iteracin que se est ejecutando en ese momento; i=0 corresponde a la primera iteracin, i=1 corresponde a la segunda iteracin y as sucesivamente hasta N-1. Si el valor que asignamos a la variable N es el 0, la estructura no se ejecuta ya que no tiene sentido repetir 0 veces una operacin. Esta estructura es equivalente al siguiente pseudo cdigo:

    LA ESTRUCTURA ITERATIVA (WHILE LOOP)

    MIENTRAS condicin HACER

    sentencias FIN_MIENTRAS

    La condicin del bucle se evala al principio, antes ejecutar las sentencias del bucle,

    Si es verdadera, se ejecutan las sentencias del bucle y despus se vuelve a preguntar por la condicin.

    En el momento en el que la condicin es falsa se sale del bucle. Como la condicin es evaluada, la primera vez, antes de entrar en el bucle, puede que el

    bucle se ejecute 0 veces. Para finalizar un bucle, el valor de la condicin debe ser modificado en las sentencias que componen el bucle.

    LA ESTRUCTURA ITERATIVA (DO WHILE LOOP)

    HACER

    sentencias MIENTRAS condicin

    La condicin se evala siempre al final del bucle,

  • Algoritmos y estructura de datos I Pgina 6

    Karim Guevara, lvaro Fernndez Sesin 02

    si es VERDADERA, volvemos a ejecutar las acciones, si es FALSA, se sale del bucle.

    Como la condicin se evala al final, incluso aunque la primera vez sea verdadera, se ejecuta al menos una vez por el bucle. Para finalizar un bucle, el valor de la condicin debe ser modificado en las sentencias que componen el bucle.

    5 ARREGLOS ARRAYS

    array[] de

    es un subrango con el ndice del lmite inferior y el lmite superior. Por

    ejemplo, array[5..20] de entero declarara un array de 16 elementos enteros. Pueden aparecer varios separados por comas para declarar arrays de ms de una dimensin.

    es el identificador de cualquier tipo de dato estndar o definido por el

    usuario.

    El acceso a un elemento de un array se realizar indicando su ndice entre corchetes. El ndice ser una expresin entera.

    ARRAY[0..120] DE CARACTERES ARRAY[1..5,1..120] DE ENTERO

    6 PROCEDIMIENTOS

    Un procedimiento es un sub-algoritmo que realiza una tarea especfica y que puede ser definido con 0, 1 o N parmetros. Tanto la entrada de la informacin al procedimiento como la devolucin de resultados desde el procedimiento al programa llamador se realizarn a travs de los parmetros.

    El nombre de un procedimiento no est asociado a ninguno de los resultados que obtiene.

    La invocacin a un procedimiento se realiza con una instruccin llamar_a o o bien directamente con el nombre del procedimiento.

    [llamar_a] ([])

    Como se puede apreciar con respecto a la lista de parmetros no existe obligatoriedad.

    DECLARACIN

    procedimiento ([]) [declaraciones locales] inicio

    fin_procedimiento

    debe ser un identificador vlido.

    son uno o ms grupos de parmetros separados por

    punto y coma. Cada grupo de argumentos se define de la siguiente forma:

    {E | valor| E/S | ref} :

  • Algoritmos y estructura de datos I Pgina 7

    Karim Guevara, lvaro Fernndez Sesin 02

    E o valor indica que el paso de parmetros se realiza por valor.

    E/S o ref indica que el paso de parmetros se realiza por referencia.

    es un tipo de dato estndar o definido previamente por el usuario.

    es uno o ms identificadores vlidos separados por comas. Para indicar que se trata de un array, se podr utilizar el identificador seguido de corchetes (por ejemplo notas[]).

    LLAMADA A PROCEDIMIENTOS

    [llamar_a] ([])

    La lista de parmetros actuales es una o varias variables o expresiones separadas por comas que deben coincidir en nmero, orden y tipo con la lista de parmetros formales de la declaracin.

    7 FUNCIONES

    La funcin es una estructura autnoma similar a los mdulos. La diferencia radica en que la funcin se usa para devolver un solo valor de un tipo de dato simple a su punto de referencia. La funcin se relaciona especificando su nombre en una expresin, como si fuera una variable ordinaria de tipo simple. Las funciones se dividen en estndares y definidas por el usuario.

    Estndar: Son funciones proporcionadas por cualquier lenguaje de programacin de alto

    nivel, y se dividen en aritmticas y alfabticas.

    Definidas por el usuario: son funciones que puede definirlas el programador con el

    propsito de ejecutar alguna funcin especfica, y que por lo general se usan cuando se trata de hacer algn clculo que ser requerido en varias ocasiones en la parte principal del algoritmo.

    DECLARACIN

    :funcin ([]) [declaraciones locales] inicio devolver()

    fin_funcin

    es un tipo de dato estndar o definido previamente por el usuario. Se

    trata del tipo del dato que devuelve la funcin. En el caso de que la funcin devuelva un array, se podr utilizar el nombre del tipo de dato base seguido de corchetes (por ejemplo, entero[]).

    debe ser un identificador vlido.

    son uno o ms grupos de parmetros separados por

    punto y coma. Cada grupo de argumentos se define de la siguiente forma:

    {E | valor | E/S | ref} :

    E o valor indica que el paso de parmetros se realiza por valor.

    E/S o ref indica que el paso de parmetros se realiza por referencia.

    es un tipo de dato estndar o definido previamente por el usuario.

    es uno o ms identificadores vlidos separados por comas.

    es el valor de retorno de la funcin. Debe coincidir con el tipo de dato de la declaracin. Para indicar que se trata de un

  • Algoritmos y estructura de datos I Pgina 8

    Karim Guevara, lvaro Fernndez Sesin 02

    array, se podr utilizar el identificador seguido de corchetes (por ejemplo notas[])

    LLAMADA A FUNCIONES

    ([])

    La lista de parmetros actuales es una o varias variables o expresiones separadas por comas que deben coincidir en nmero, orden y tipo con la lista de parmetros formales de la declaracin. Al devolver un valor y no existir funciones que no devuelven valores (funciones void de C o Java), la llamada debe hacerse siempre dentro de una expresin.

    IV

    (La prctica tiene una duracin de 4 horas) ACTIVIDADES EJEMPLO 1: BSQUEDA SECUENCIAL EN UN VECTOR

    Escriba un algoritmo que lea un nmero real del teclado y busque dicho nmero en un vector de N nmeros reales, donde N es una constante a la que le daremos un valor cualquiera. Si se encuentra el nmero, se debe escribir por pantalla el ndice del elemento que lo contiene. Supongamos que: 1. Que el algoritmo no necesita leer el contenido del vector. 2. Ningn elemento del vector se repite.

    SOLUCIN

    PSEUDO CDIGO

    ALGORITMO bsqueda secuencial CONSTANTES

    n VALE 100 VARIABLES

    a ES ARRAY [1 .. n] DE REALES i ES ENTERO valor ES REAL encontrado ES BOOLEANO

    INICIO LEER (valor) i 1 encontrado FALSO MIENTRAS (i

  • Algoritmos y estructura de datos I Pgina 9

    Karim Guevara, lvaro Fernndez Sesin 02

    Supongamos que la empresa tiene 100 empleados. SOLUCIN

    ALGORITMO Problema1 CONSTANTES

    num_emp ES 100 VARIABLES

    i, aux, aumento, total_nomina SON ENTEROS sueldo ES ARRAY[1 .. num_emp] DE ENTEROS nombre ES ARRAY[1 .. num_emp] DE CADENAS

    INICIO total_nomina 0 PARA i 1 HASTA num_emp HACER ESCRIBIR (El nombre del empleado es: , nombre[i]) ESCRIBIR (El sueldo del empleado es: , sueldo[i]) SI sueldo[i] < 1000 ENTONCES aumento 15 SINO aumento 12 FINSI sueldo[i] sueldo[i] + (sueldo[i] * aumento) / 100 total_nomina total_nomina + sueldo[i] ESCRIBIR (Su nuevo sueldo es: , sueldo[i]) FIN_PARA ESCRIBIR (El total de nomina de la empresa es: , total_nomina)

    FIN

    EJEMPLO 3

    Disear un algoritmo que permita intercambiar el valor de 2 variables. Nota: Implementar el procedimiento Intercambio. SOLUCIN

    ALGORITMO IntercambioVariables

    VARIABLE

    ENTERO : x, y

    INICIO

    LEER(x)

    LEER(y)

    Intercambio(x, y)

    ESCRIBIR(x)

    ESCRIBIR(y)

    FIN

    PROCEDIMIENTO Intercambio(E/S ENTERO: a; E/S ENTERO: b)

    VARIABLES

    ENTERO : aux

    INICIO

    aux a a b b aux

    FIN_PROCEDIMIENTO

  • Algoritmos y estructura de datos I Pgina 10

    Karim Guevara, lvaro Fernndez Sesin 02

    EJEMPLO 4

    Disear un algoritmo que permita obtener el valor absoluto de un nmero. Nota: Implementar la funcin Absoluto. SOLUCIN

    ALGORITMO ValorAbsoluto

    VARIABLE

    entero : num

    INICIO

    LEER(num)

    num Absoluto(num) ESCRIBIR(num)

    FIN

    ENTERO FUNCION Absoluto(E entero: n)

    inicio

    SI n

  • Algoritmos y estructura de datos I Pgina 11

    Karim Guevara, lvaro Fernndez Sesin 02

    V

    EJERCICIOS

    Escriba los Pseudo-cdigos respectivamente. 1 Leer 10 nmeros e imprimirlos al cuadrado 2 Leer 10 nmeros e imprimir slo los positivos 3 Imprimir los 10 primeros nmeros mltiplos de cuatro 4 Leer 50 nmeros e imprimir cuntos son negativos, positivos e iguales a 0. 5 Leer 50 nmeros e imprimir cuntos son pares y cuantos impares. 6 Leer 10 nmeros, obtener su cubo y su cuarta ( n3 y n4) 7 Leer el nombre, edad y sexo para n personas. Calcular e imprimir cuantas son mujeres

    menores, mayores y cuntos son varones menores. 8 Se desea obtener el salario semanal neto de los empleados de una empresa cuyo trabajo se

    paga por horas y del modo siguiente: Las horas inferiores o iguales a 35 horas (normales) se pagan a una tarifa determinada que se debe introducir por teclado al igual que el nmero de horas y el nombre del trabajador.

    Las horas superiores a 35 se pagarn como extras a un costo del 1.5 de las horas normales.

    Los impuestos a deducir a los trabajadores varan en funcin de su sueldo mensual: A. Sueldo

  • Algoritmos y estructura de datos I Pgina 12

    Karim Guevara, lvaro Fernndez Sesin 02

    UTILIZANDO FUNCIONES Y PROCEDIMIENTOS 11 Calcular el valor de la serie donde N es un valor que se pasa como parmetro al

    subprograma que hace el clculo.

    1

    0 0

    )1

    *1(n

    i

    n

    i ni

    12 Tomando como base los resultados obtenidos en un laboratorio de anlisis clnicos, un

    medico determina si una persona tiene anemia o no, lo cual depende de su nivel de hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de hemoglobina que tiene una persona es menor que el rango que le corresponde, se determina su resultado como positivo y en caso contrario como negativo. La tabla en la que el medico se basa para obtener el resultado es la siguiente:

    EDAD NIVEL HEMOGLOBINA 0 - 1 mes 13 - 26 g% > 1 y < = 6 meses 10 - 18 g% > 6 y < = 12 meses 11 - 15 g% > 1 y < = 5 aos 11.5 - 15 g% > 5 y < = 10 aos 12.6 - 15.5 g% > 10 y < = 15 aos 13 - 15.5 g% mujeres > 15 aos 12 - 16 g% hombres > 15 aos 14 - 18 g% 13 Una institucin educativa estableci un programa para estimular a los alumnos con buen

    rendimiento acadmico y que consiste en lo siguiente: Si el promedio es de 9.5 o mas y el alumno es de preparatoria, entonces este podr cursar 55

    unidades y se le har un 25% de descuento. Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de preparatoria,

    entonces este podr cursar 50 unidades y se le har un 10% de descuento. Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria, este podr

    cursar 50 unidades y no tendr ningn descuento. Si el promedio es de 7 o menor, el numero de materias reprobadas es de 0 a 3 y el alumno

    es de preparatoria, entonces podr cursar 45 unidades y no tendr descuento. Si el promedio es de 7 o menor, el numero de materias reprobadas es de 4 o mas y el

    alumno es de preparatoria, entonces podr cursar 40 unidades y no tendr ningn descuento. Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podr cursar

    55 unidades y se le har un 20% de descuento. Si el promedio es menor de 9.5 y el alumno es de profesional, entonces podr cursar 55

    unidades y no tendr descuento. Obtener el total que tendr que pagar un alumno si la colegiatura para alumnos de

    profesional es de $300 por cada cinco unidades y para alumnos de preparatoria es de $180 por cada cinco unidades.

    VI

    CUESTIONARIO

    1. Qu herramientas existen para representar algoritmos?

    2. Qu especificacin de algoritmos le parece la ms apropiada? Por q u?

  • Algoritmos y estructura de datos I Pgina 13

    Karim Guevara, lvaro Fernndez Sesin 02

    VII

    BIBLIOGRAFIA Y REFERENCIAS BIBLIOGRAFA BSICA

    D.S.Malik, DATA STRUCTURES USIGN C++, Thomson Learning, 2003

    J. Galve. ALGORITMIA, Ed.Adisson Wesley, Espaa, 2000.

    Brassard, ANLISIS DE ALGORITMOS, Ed. Mc. Graw Hill., Espaa, 1999.,

    BIBLIOGRAFA COMPLEMENTARIA

    Wirth M., ALGORITMOS Y ESTRUCTURA DE DATOS, Ed. Addison Wesley, Mxico, 1997

    Aho. DISEO Y ANLISIS DE ALGORITMOS, Ed. Addison Wesley. USA, 1999.

    Deitel & Deitel COMO PROGRAMAR EN C/C++. Editorial Prentice Hall, 1995.