21
REPRESENTACIÓN DE ALGORITMOS PRIMER SEMESTRE, LICENCIATURA EN CIENCIAS COMPUTACIONALES UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO, INSTITUTO DE CIENCIAS BÁSICAS E INGENIERÍA CATEDRÁTICO: MTRA. THEIRA IRASEMA SAMPERIO MONROY 08/02/2013

ALGORITMOS 2013

  • Upload
    uamkd

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

REPRESENTACIÓN DE ALGORITMOSPRIMER SEMESTRE, LICENCIATURA EN CIENCIAS COMPUTACIONALES

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO, INSTITUTO DE CIENCIAS BÁSICAS E INGENIERÍA

CATEDRÁTICO: MTRA. THEIRA IRASEMASAMPERIO MONROY

08/02/2013

1

REPRESENTACIÓN DE ALGORITMOS

REPRESENTACIÓN DE ALGORITMOS

La computadora no solamente es una máquina que puede realizarprocesos para darnos resultados, sin que tengamos la noción exacta de lasoperaciones que realiza para llegar a esos resultados. Con la computadoraademás de lo anterior también podemos diseñar soluciones a la medida, deproblemas específicos que se nos presenten. Más aun, si estos involucranoperaciones matemáticas complejas y/o repetitivas, o requieren del manejode un volumen muy grande de datos.El diseño de soluciones a la medida de nuestros problemas, requiere comoen otras disciplinas una metodología que nos enseñe de manera gradual, laforma de llegar a estas soluciones. A las soluciones creadas porcomputadora se les conoce como programas y no son más que una serie deoperaciones que realiza la computadora para llegar a un resultado, con ungrupo de datos específicos. Lo anterior nos lleva al razonamiento de queun programa nos sirve para solucionar un problema específico.Así, para construir e implementar un programa correcto, ser requiere deuna metodología adecuada, donde el desarrollo de algoritmos es un puntofundamental en el diseño de programas, ya que exige una serie de fasesprevias destinadas a conocer todos los aspectos del problema planteado yestudiar las posibles soluciones.

Concepto de algoritmo y característicasLa palabra algoritmo se deriva de la traducción al latín de la

palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe queescribió un tratado sobre manipulación de números y ecuaciones en el sigloIX.Un algoritmo es una serie de pasos organizados que describe el proceso quese debe seguir, para dar solución a un problema específico.En otras palabras, es un método que se realiza paso a paso para solucionarun problema que termina en un número finito de pasos.Características de un algoritmo

1. Preciso. Debe indicar el orden exacto de realización de cada paso.2. Definido. Si se sigue el algoritmo dos o más veces, debe obtener el

mismo resultado cada vez. NO debe permitir dobles interpretaciones.

2

REPRESENTACIÓN DE ALGORITMOS

3. Finito. Si se sigue un algoritmo, se debe terminar en algún momento,o sea, debe tener un número finito de pasos. Debe ser finito entamaño y tiempo de ejecución.

Además, un algoritmo debe ser general, es decir, soportar la mayoría delas variantes que se puedan presentar en la definición del problema.La definición de un algoritmo debe reunir tres partes: Entrada, Proceso ySalida.

Lenguajes algorítmicos

Forma metodológica de resolver un problema de índole administrativo,matemático o científico en forma general de tal manera que pueda serescrito en un lenguaje de computación.Los tres lenguajes algorítmicos o herramientas utilizadas comúnmente paradiseñar algoritmos son:

- Diagrama de flujo- Pseudocódigo- Diagrama estructurado

A) Diagramas de flujoEl arte de la programación de computadoras se basa en la integraciónlógica de las diversas etapas del procesamiento. Los diagramas de flujoproponen enseñar a integrar en forma lógica los procesos de programación.Si se pueden trazar diagramas de flujo correctos, se podrá programarutilizando cualquier lenguaje de programación, después de aprender lasreglas básicas del lenguaje que se desee emplear.Un diagrama de flujo de un programa es una representación gráfica del flujológico de los datos que se van a procesar. Antes de codificar un programase debe hacer un diagrama de flujo que muestre la secuencia de las etapasde programación que se deberán codificar. Dominar el arte de hacerdiagramas de flujo implica comprender la naturaleza de los procesamientosque se pueden realizar con las computadoras. De manera que la llave para

3

REPRESENTACIÓN DE ALGORITMOS

el éxito en los procesamientos con computadora no lo constituye el dominiode las reglas de programación, sino una comprensión firme del flujológico.Un diagrama de flujo es una herramienta que ayuda al programador en lapreparación de sus programas. El programador dibuja un diagrama de flujopara asegurarse de que las etapas que se codificarán en el programa seintegrarán adecuadamente. Entonces un diagrama de flujo consiste de lasetapas que se van a programar y la secuencia en la cual se realizaránestas etapas.Los diagramas de flujo están formados por símbolos que representan lasfunciones de los programas, y de líneas de flujo que denotan la secuenciaen la que se deberán realizar estas funciones.Un diagrama de flujo se lee de arriba hacia abajo como lo indican laslíneas de flujo, la única variación que se hace a esta lectura vertical esla efectuada por la computadora cuando se toma una decisión, la que podríahacer un cambio en la secuencia.Un diagrama de flujo es la representación gráfica de un algoritmo. Tambiénse puede decir que es la representación detallada en forma gráfica de cómodeben realizarse los pasos en el computador para producir resultados.Esta representación gráfica se da cuando varios símbolos (que indicandiferentes procesos en la computadora), se relacionan entre sí mediantelíneas que indican el orden en que se deben ejecutar los procesos.Recomendaciones para el diseño de diagramas de flujo

1. Se deben se usar solamente líneas de flujos horizontales y/overticales.

2. Se debe evitar el cruce de líneas utilizando los conectores.3. Se deben usar conectores solo cuando sea necesario.4. No deben quedar líneas de flujo son conectar.5. Se deben trazar los símbolos de manera que se puedan leer de arriba

hacia abajo y de izquierda a derecha.6. Todo texto escrito dentro de un símbolo deberá ser escrito

claramente, evitando el uso de muchas palabras.Los símbolos utilizados han sido normalizados por el InstitutoNorteamericano de Normalización (ANSI).

SÍMBOLO DESCRIPCIÓN

Entrada

4

REPRESENTACIÓN DE ALGORITMOS

Se usa para representar operaciones de entrada a través de teclado.

Procesamiento

Se usa para representar procesamientos internos de la computadora que por lo general abarcan movimiento de datos y operaciones aritméticas.

Decisión

Se usa para representa comparaciones lógicas, estassiempre son en forma de preguntas que tienen como única respuesta sí o no.

Conector

Se usa para representar una alteración del flujo normal de los datos o para especificar un punto de entrada en donde se debe continuar el flujo.

Terminal

Se usa para representar el principio, el final e interrupción de los programas.

Tarjeta

Es un símbolo clásico de entrada de datos, se usa generalmente para indicar que los datos representados en ella son exclusivos de entrada.

5

REPRESENTACIÓN DE ALGORITMOS

Impresora (documento)

Símbolo clásico de salida de información o datos. Se usa para representar datos o resultados finales.

Pantalla

Símbolo de salida de salida de información de datos. Se usa para representar datos o resultados finales.

B) PseudocódigoMezcla de lenguaje de programación y español (o inglés o cualquier otroidioma) que se emplea, dentro de la programación estructurada, pararealizar el diseño de un programa. En esencia, el pseudocódigo se puede definir como un lenguaje deespecificación de algoritmos, el uso de tal lenguaje hace que el paso dela codificación final sea relativamente fácil. La ventaja delpseudocódigo es que su uso en la planificación de un programa, elprogramador se puede concentrar en la lógica y en las estructuras decontrol y no preocuparse de las reglas del lenguaje que se trate. Estambién fácil modificar el pseudocódigo si se descubren errores en lalógica del programa. Es la representación narrativa de los pasos que debe seguir un algoritmopara dar solución a un problema determinado. El pseudocódigo utilizapalabras que indican el proceso a realizar, como:

Mientras Si HastaLeer Entonces DesdeEscribir Repetir Para

La escritura del pseudocódigo exige normalmente una identación (sangría enel margen izquierdo) de diferentes columnas, para identificar losdiferentes niveles de programación.Forma general de un pseudocódigo

Variables

6

REPRESENTACIÓN DE ALGORITMOS

CABECERA Constantes Inicio - - - - - - -

CUERPO - - - - - - - DEL - - - - - - -ALGORITMO - - - - - - -

Fin

Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo1. Ocupa menos espacio en una hoja de papel. 2. Permite representar en forma fácil operaciones repetitivas

complejas.3. Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje

de programación.4. Si se siguen las reglas se puede observar claramente los niveles que

tiene cada operación.

C) Diagramas estructurados (Nassi-Schneiderman)El diagrama estructurado N-S, también conocido como Diagrama de Chapin, escomo un diagrama de flujo con las flechas de unión omitidas y cajas obloques contiguos. Las acciones sucesivas se escriben en cajas sucesivasy, como en los diagramas de flujo, se pueden escribir diferentes accionesen una caja. La diferencia entre esta forma y las otras dos formas(diagrama de flujo y pseudocódigo) parece trivial. Sin embargo, esto esdebido a que los algoritmos son bastante sencillos.Este sistema de representación permite tener una visión mucho másestructurada de ellos y por consiguiente mayor facilidad al traducirlos allenguaje de una computadora.Estos diagramas tratan de optimizar los programas, ya que permiten granflexibilidad, al permitir fáciles correcciones, modificaciones oampliaciones al diagrama original.El diagrama se lee de arriba hacia abajo. Cada bloque ejecuta unaoperación específica que se puede documentar o escribir con la precisiónque se desee.Un algoritmo se representa en la siguiente forma:

7

REPRESENTACIÓN DE ALGORITMOS

ESTRUCTURAS ALGORÍTMICASLas 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 a su complejidad en:

Inicio. Accion 1 Accion 2 . . . Accion nFin.

8

REPRESENTACIÓN DE ALGORITMOS

1. Estructuras secuencialesLa estructura secuencial es aquella en la que una acción (instrucción)sigue a otra en secuencia. Las tareas se suceden de tal modo que lasalida de una es la entrada de la siguiente y así sucesivamente hasta elfin del proceso. Una estructura secuencial se representa de la siguiente forma:

Diagrama de flujo Pseudocódigo Diagrama N-S(estructurado)

Inicio. Acción 1. Acción 2. . . . Acción n.Fin.

a) Asignación . Consiste en el paso se valores o resultados a una zona de lamemoria. Dicha zona será reconocida con el nombre de la variableque recibe el valor. La asignación se puede clasificar de lasiguiente forma:Simples. Consiste en pasar un valor constante a una variable (a 15)

Estructuras algorítmica

s

Secuenciales

Asignación

Entrada

Salida

Selectivas

Simple

Bicondicional

Múltiple

Repetitivas

Hacer / para

Mientras

Hacer mientras

Inicio. Accion 1 Accion 2 . . . Accion nFin.

9

REPRESENTACIÓN DE ALGORITMOS

Contador. Consiste en usarla como un verificador del número de vecesque 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 operaciónmatemática que involucre muchas variables (a c + b * 2 / 4)

b) Lectura . Consiste en recibir desde un dispositivo de entrada (por ej., elteclado) un valor. Por ejemplo, esta operación se representa en unpseudocódigo como sigue: Leer a, b

(donde a y b son las variables que recibirán los valores)c) Escritura .

Consiste en mandar por un dispositivo de salida (por ej., monitor oimpresora) un resultado o mensaje. Por ejemplo, este proceso serepresenta en pseudocódigo como sigue:

Escribir “El resultado es”, R(donde “El resultado es” es un mensaje que se desea queaparezca y R es una variable que contiene un valor)

Ejemplo de algoritmo secuencial.Algoritmo para deducir el salario neto de un trabajador a partir de lalectura de su nombre, horas trabajadas, pago por hora, y sabiendo que losimpuestos aplicados son el 12%.

Diagrama de flujo

PseudocódigoInicio.

Imp = Salario *

0.15

10

REPRESENTACIÓN DE ALGORITMOS

Leer nombre, hr_tra, pagoCalcular Salario = hr_tra * pagoCalcular Imp = Salario * 0.15Calcular Neto= Salario + ImpEscribir nombre, Imp, Neto

Fin.

Diagrama N-S

2. Estructuras selectivasLas estructuras selectivas o condicionales comparan una variable

contra otro(s) valor(es) para que, con base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Estas estructuras se utilizan para tomar decisiones lógicas. En éstas se evalúa una condición y en función del resultado de la misma se realiza unaopción u otra.Las condiciones se especifican utilizando expresiones lógicas y relacionales. La condición puede resultar verdadera (1) o falsa (0), indicando qué decisióno acción se debe tomar.

a) Estructuras selectivas simplesLas estructuras condicionales simples se conocen como “toma de decisión”. Se ejecuta una acción si la condición es verdadera, o pasa por alto la acción si la condición es falsa.

Fin.

11

REPRESENTACIÓN DE ALGORITMOS

Diagrama de flujo Pseudocódigo Diagrama N-S(estructurado)

Si (condición) entonces Accion (es)Fin_si

b) Estructuras selectivas bicondicionalesLas estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición.Ejecutan una acción si la condición es verdadera, o ejecuta una acción diferente si la condición es falsa.

Diagrama de flujo Pseudocódigo Diagrama N-S (estructurado)

Si (condición) entonces Accion (es) sino Accion (es)Fin_si

c) Estructuras selectivas múltiplesLas estructuras de comparación múltiples son tomas de decisiónespecializadas que permiten comparar una variable contra distintosposibles resultados, ejecutando para cada caso una serie de instrucciones

NO

NO

12

REPRESENTACIÓN DE ALGORITMOS

específicas. Ejecutan una de entre muchas acciones diferentes,dependiendo del valor de una expresión o variable.

Diagrama de flujo Pseudocódigo Diagrama N-S (estructurado)Casos (variable) Opcion 1: Accion(es) Opcion 2: Accion(es) Opcion 3: Accion(es)

- - - Opcion default: Accion(es)Fin_casos

Ejemplos de algoritmos condicionales (pseudocódigo)1. Un hombre desea saber cuánto dinero se genera por concepto de

intereses sobre la cantidad que tiene en inversión en el banco. Éldecidirá reinvertir los intereses siempre y cuando éstos excedan a$7000, y en ese caso desea saber cuánto dinero tendrá finalmente ensu cuenta.

Inicio. Leer p_int, cap

Int cap * p_intSi (int > 7000) entonces

capf cap + intFin_siEscribir capf

Fin.2. Determinar si un alumno aprueba o reprueba un curso, sabiendo que

aprobará si su promedio de tres calificaciones es mayor o igual a 7;reprueba en caso contrario.

Inicio.Leer calif1, calif2, calif3prom (calif1 + calif2 + calif3) / 3Si (prom ≥ 7) entonces

Imprimir “Alumno aprobado”

1 2 3 . . .

13

REPRESENTACIÓN DE ALGORITMOS

SinoImprimir “Alumno reprobado”

Fin_siFin.

3. Leer tres números diferentes e imprimir el número mayor de los tres.Inicio.

Leer num1, num2, num3Si (num1 > num2) and (num1 > num3) entonces

mayor num1 sino

Si (num2 > num1) and (num2 > num3) entoncesmayor num2

sinomayor num3

Fin_siFin_si

Imprimir mayorFin.

4. Algoritmo que asigna una letra a la calificación obtenida por unalumno, si obtiene 10 se le asigna la letra ‘A’, si es 9 se leasigna ‘B’, si es 8 se le asigna ‘C’, si es 7 se le asigna ‘D’, sies 6 se le asigna ‘E’, si es cualquier otra calificación se leasignará “MALA NOTA”.

Inicio.Leer calificacionCasos (calificacion)

Opción 10: Escribir “A”Opción 9: Escribir “B”Opción 8: Escribir “C”Opción 7: Escribir “D”Opción 6: Escribir “E”Otra opción: Escribir “MALA NOTA”

Fin_casosFin.

14

REPRESENTACIÓN DE ALGORITMOS

Estructuras selectivas anidadasPrueban para muchos casos, colocando estructuras selectivas dentro deestructuras selectivas, como se muestra en el siguiente formato depseudocódigo:

Si (condición) entonces Accion (es) sino Si (condición) entonces Accion (es) sino

Si (condición) entonces Accion (es) sino

Accion (es) Fin_si

Fin_siFin_si

3. Estructuras cíclicas (repetitivas)Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución esnecesario utilizar un mismo conjunto de acciones que se puedan ejecutaruna cantidad específica de veces. Esta cantidad puede ser fija(previamente determinada por el programador) o puede ser variable (estaren función de algún dato dentro del programa).Las estructuras repetitivas repiten una secuencia de instrucciones unnúmero determinado de veces, en tanto cierta condición se mantengaverdadera. Se conocen como bucles o iteraciones, por el hecho de repetirla ejecución de una secuencia de acciones.Los 3 tipos de estructuras repetitivas más comunes se describen acontinuación.

a) Estructura repetitiva “Harcer/para” o “Para /Desde”Es aquella en que el número de iteraciones se conoce antes de ejecutarse el ciclo. En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de control llegue al límite superior.

15

REPRESENTACIÓN DE ALGORITMOS

Esta estructura se utiliza en algoritmos donde se deben utilizar contadores y acumuladores.Su representación algorítmica es la siguiente:

Diagrama de flujo Pseudocódigo Diagrama N-S(estructurado)

Desde var=valor inicial hasta valor final Accion(es)Fin_desde

b) Estructura repetitiva “Mientras”Esta es una estructura que repetirá un proceso durante N veces, donde Npuede ser fijo o variable. Para esto, la instrucción se vale de unacondición que es la que debe cumplirse para que se siga ejecutando.Cuando la condición ya no se cumple, entonces ya no se ejecuta el proceso.Su representación algorítmica es la siguiente:

Diagrama de flujo Pseudocódigo Diagrama N-S(estructurado)

Mientras (condicion) Accion(es)Fin_mientras

c) Estructura repetitiva “Hacer-mientras”Esta es una estructura similar en algunas características a la anterior.Repite un proceso una cantidad de veces pero, a diferencia de “Mientras”,lo hace hasta que la condición se cumple y no mientras. Por otra parte,esta estructura permite realizar el proceso cuando menos una vez, ya quela condición se evalúa al final del proceso, mientras que la estructura

Incremento/Decremento

Accion (es)

CONDICION

16

REPRESENTACIÓN DE ALGORITMOS

anterior puede ser que nunca llegue a entrar si la condición no se cumpledesde un principio.Su representación algorítmica de esta estructura es la siguiente:

Diagrama de flujo Pseudocódigo Diagrama N-S(estructurado)

Hacer Accion(es)Mientras (condicion)

Ejemplos de estructuras algorítmicas repetitivas (pseudocódigo)1. Calcular el promedio de un alumno que obtiene siete calificaciones

parciales en la materia de Civismo en la Escuela Secundaria No. 5. Inicio.

Leer nombreInicializar suma=0Desde x=1 hasta 5

Leer califsuma=suma + califx = x + 1

Fin_desdeprom = suma / 5Escribir nombre, prim

Fin.

2. Algoritmo que recibe 10 números e imprime solo los números positivos Inicio.

CONDICION Mientras (condicion)

17

REPRESENTACIÓN DE ALGORITMOS

Desde i=1hasta 10Leer numeroSi (numero>0) entonces

Imprimir numeroFin_sii = i + 1

Fin_desde Fin.

3. Leer un número y determinar si es o no primo. Inicio.

Leer numAsignar i2Asignar primoVMientras (i≤num and primo=V)

Si (num % i) entonces primoFFin_sii=i+1

Fin_mientrasSi (primo = V) entonces

Escribir “Es número primo” sino

Escribir “No es número primo”Fin_si

Fin.

4. Calcular el promedio de las edades de hombres, mujeres y todo ungrupo de alumnos.

Inicio.Leer mujeres, hombresAsignar i1, suma10, suma20grupomujeres+hombresDesde m=1 hasta mujeres Leer edadm

18

REPRESENTACIÓN DE ALGORITMOS

suma1=suma1 + edadm m = m + 1Fin_desdeprom_m=suma1/mujeresDesde m=1 hasta hombres Leer edadh suma2=suma2 + edadh m = m + 1Fin_desdeprom_h=suma2/edadhprom_grupo=(suma1+suma2)/grupoImprimir prom_m, prom_h, prom_grupo

Fin.

5. En la Cámara de Diputados se levanta una encuesta con todos losintegrantes con el fin de determinar qué porcentaje de los Ndiputados está a favor del Tratado de Libre Comercio con Malasia,qué porcentaje está en contra y qué porcentaje se abstiene deopinar.

Inicio.Leer num_dipAsignar i1Hacer Escribir “VOTA:” Escribir “1. A favor” Escribir “2. En contra” Escribir “3. “Abstención” Leer voto Si (voto=1) entonces

favorfavor+1 sino

Si (voto=2) entoncescontracontra+1

sinoabstabst+1

Fin_si Fin_si i = i +1Mientras (i ≤ num_dip)porc_f=favor*100/num_dipporc_c=contra*100/num_dipporc_abs=abs*100/num_dipEscribir porc_f, porc_c, porc_abs

19

REPRESENTACIÓN DE ALGORITMOS

Fin.

6. Leer un número entero comprendido entre 500 y 1000. Inicio.

Hacer Leer numero

Mientras (numero ≥ 500 and numero ≤ 1000) Fin.

20

REPRESENTACIÓN DE ALGORITMOS