Unidad 1. Diseno de Algoritmos

download Unidad 1. Diseno de Algoritmos

of 26

Transcript of Unidad 1. Diseno de Algoritmos

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    1/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica

    Ingeniera en Telemtica

    Primer Semestre

    Programa de la asignatura:

    Fundamentos de programacin

    Unidad 1. Diseo de algoritmos

    Clave:

    22141102 / 21141102

    Universidad Abierta y a Distancia de Mxico

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    2/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 1

    ndice

    Unidad 1. Infraestructura corporativa ........................................................................................................... 2

    Presentacin de la unidad .......................................................................................................................... 2

    Propsitos ..................................................................................................................................................... 3

    Competencia especfica............................................................................................................................. 3

    1.1. Concepto de algoritmo y caractersticas.......................................................................................... 4

    1.2. Representacin de algoritmos ........................................................................................................... 5

    1.2.1. Pseudocdigo ................................................................................................................................ 6

    1.2.2. Diagrama de flujo .......................................................................................................................... 8

    Actividad 1. Representacin de algoritmos........................................................................................... 11

    1.3. Estructuras de control....................................................................................................................... 11

    1.3.1. Estructuras secuenciales........................................................................................................... 11

    1.3.2. Estructuras selectivas ................................................................................................................ 14

    Actividad 2. Diseo de un algoritmo con estructuras selectivas........................................................ 18

    1.3.3. Estructuras repetitivas................................................................................................................ 18

    Actividad 3. Diseo de un algoritmo con estructuras repetitivas....................................................... 22

    Evidencia de aprendizaje. Planteamiento del problema..................................................................... 22

    Autorreflexin............................................................................................................................................. 22

    Cierre de la unidad .................................................................................................................................... 23

    Para saber ms .......................................................................................................................................... 24

    Fuentes de consulta .................................................................................................................................. 24

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    3/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 2

    Unidad 1. Infraestructura corporativa

    Presentacin de la unidad

    El documento con el desarrollo de los temas de cada unidad, pretende servir como un instrumentode apoyo en la asignatura, para la realizacin de las actividades. En algunas unidades serecomienda la revisin de recursos externos que se han seleccionado para complementar lorevisado en el desarrollo de la unidad. Cabe mencionar que puedes consultar materiales distintosa los recomendados para fortalecer tus aprendizajes o aclarar dudas que te surjan.

    Para construir un programa de cmputo, sin lugar a dudas, la fase ms importante es el diseo dela solucin, ya que es aqu donde se debe crear un modelo que corresponde a los pasos quellevan a la solucin del problema en cuestin, y se conoce como algoritmo. Para construir estasolucin se requiere no slo de inteligencia, sino tambin de creatividad, ya que el programadorslo cuenta con la especificacin del problema y su experiencia en resolver problemas de una

    forma estructurada.

    En este apartado se introduce formalmente el concepto de algoritmo, hablaremos de suscaractersticas y estudiaremos dos formas de representarlos: una grfica, conocida comodiagramas de flujo; y la otra similar a un lenguaje humano, en este caso espaol, la cual se llama

    pseudocdigo. Tambin se describen los tres tipos de estructuras de control: secuenciales,selectivas y repetitivas, que son las instrucciones con que se cuenta en la programacinestructurada para disear soluciones.

    Para logar nuestro objetivo se introduce el mundo de la ardilla, en el cual se deben solucionarproblemas mediante un conjunto de instrucciones especficas que puede ejecutar una ardillasobre un tablero.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    4/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 3

    Propsitos

    En esta asignatura:

    Identificar los datos de entrada y lasalida de un algoritmo Disear un algoritmo que solucione un

    problema. Representar el algoritmo en diagrama

    de flujo y pseudocdigo Verificar que el algoritmo calcule el

    resultado correcto

    Competencia especfica

    Disear algoritmos para resolver problemasmediante su representacin en un diagrama deflujo y la elaboracin del pseudocdigo.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    5/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 4

    1.1. Concepto de algoritmo y caractersticas

    La palabra algoritmoproviene del nombre de un matemtico persa conocido como Mohammad Al-KhoWrizmi, nacido alrededor del 780 d.c. enKhoWrizm, de ah el su seudnimo. Se consideracomoel padre de la algoritmia porque defini las reglas paso a paso para sumar, restar,

    multiplicar y dividir nmeros decimales. La traduccin al latn deAl-Khwrizmes algoritmi, que daorigen a la palabra algoritmo (Joyanes & Zohanero, 2005). Formalmente, un algoritmose definecomo una secuencia finita de instrucciones precisas y eficaces para resolver un problema, que

    trabaja a partir de cero o ms datos (entrada) y devuelve un resultado (salida).4

    Para ilustrar este concepto se presenta el siguiente escenario ficticio, que hemos llamado:El mundo de la ardilla

    Supongamos que una ardilla ha sido entrenada para realizar las instrucciones que se muestran enla tabla 1.1, sobre un tablero.

    Instruccin Descripcin de los movimientos de la ardilla

    avanza() Se mueve una ubicacin en la direccin actual

    giraIzquierda() Voltea a la izquierda

    dejaBellota() Coloca una bellota en la ubicacin actual

    hayBellota() Responde si hay o no bellotas en la posicin actual

    hayPared() Responde si hay o no pared en la ubicacin siguiente

    recogeBellota()La ardilla coloca en su boca una bellota que est en la

    ubicacin actual5

    bellotasRecogidas() Dice el nmero de bellotas que tiene en la boca

    Tabla 1.1: Lista de instrucciones que puede ejecutar la ardilla

    Los parntesis al final de cada instruccin sirven para identificar que se trata de una orden quepuede ejecutar la ardilla. Si observas la lista de instrucciones podrs darte cuenta que, la ardillano es capaz de voltear a la derecha y mucho menos de responder a rdenes ms complejascomo mueve unabellota que se encuentra en la primera casilla del tablero al final del mismo. Sin

    embargo, podrarealizar ambas tareas si se le dan las instrucciones precisas en trminos de lasacciones que sabe hacer. Por ejemplo, para que la ardilla gire a la derecha tendramos queordenarle tres veces que girar a la izquierda, es decir, la secuencia de instrucciones que debeejecutar es:giraIzquierda()giraIzquierda()giraIzquierda()

    4Esta definicin es una adaptacin de la que aparecen en (Viso & Pelaez, 2007, pg. 3)5La ardilla poseen una bolsa donde almacena cualquier cantidad de bellotas.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    6/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 5

    Estos pasos constituyen un algoritmo, el cual soluciona el problema de hacer que la ardilla gire ala derecha.

    Una de las caractersticas principales de los algoritmos es que cada paso debe estar definido de

    forma clara y precisa, sin ambigedades, de tal manera que pueda ejecutarse de manerainequvoca,por ejemplo, en el mundo de la ardilla, la instruccin gira()sera una instruccinambigua, ya que la ardilla no sabra si debe girar a la derecha o a la izquierda.

    Otra caracterstica de los algoritmos es que siempre terminan, por lo que no puede ser una listainfinita de pasos. Y tampoco puede contener pasos que sean irrealizables o cuya ejecucin seainfinita, pues en este caso no sera posible calcular el resultado deseado, si una instruccin estbien definida y es eficaz se puede asegurar que su ejecucin termina con xito, sin embargo, estono garantiza, de ninguna manera, que el algoritmo tambin termine.

    Por lo anterior, al disear un algoritmo se debe garantizar que dada cualquier entrada siempretermine y calcule la respuesta correcta. De tal manera que todo algoritmo debe tener lassiguientes caractersticas:

    1. Entrada.2. Salida.3. Definido.4. Eficaz.5. Terminacin.

    Una vez que se ha diseado un algoritmo, se recomienda realizar unaprueba de escritorioparaverificar si funciona correctamente, sta consiste en ejecutar el algoritmo utilizando papel y lpiz,

    se propone datos de entrada especficos y se realiza cada una de las instrucciones en el ordenestablecido, registrando los cambios que se producen despus de la ejecucin de cadainstruccin. De esta manera, se valida que el resultado obtenido en la prueba de escritoriocorresponda al resultado deseado (el correcto).

    1.2. Representacin de algoritmos

    Existen diversas formas de representar una solucin a un problema planteado, por ejemplo pararepresentar la solucin del problema de calcular el rea de un rectngulo, podemos expresar lasolucin en pseudocdigo, en un algoritmo representado en lenguaje natural (espaol) y en el

    lenguaje de programacin como es C, o se puede expresar mediante la frmula matemtica:

    = La frmula es correcta?

    Todas estas representaciones, excepto el lenguaje natural, se consideran formales, y cabemencionar que existen ms, sin embargo, las representaciones ms comunes son elpseudocdigo y los diagramas de flujo. La primera, generalmente se utilizar por su parecido con ellenguaje natural (espaol, ingls, francs o cualquier otro) y porque su codificacin en un lenguajede programacin estructurado y modular, como C, es directa. En cambio, los diagramas de flujo

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    7/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 6

    son totalmente grficos, lo que hace ms fcil seguir el orden en que se ejecutan lasinstrucciones. Es importante mencionar que se puede utilizar cualquiera de las dosrepresentaciones para disear un algoritmo, pues en cualquiera de los dos se puede expresarcualquier algoritmo estructurado, de tal manera que la ms conveniente depende de cadaprogramador. En las siguientes secciones se presenta cada uno de ellos y as podrs decidir cul

    prefieres.

    En la presente unidad, se sugiere el uso de herramientas (ProcessOn)en lnea que podrs consultar en el sitio: https://www.processon.com/ endonde podras desarrollar diagramas de flujo de forma sencilla y conuna excelente presentacin.

    1.2.1. Pseudocdigo

    Elpseudocdigoes un lenguaje de especificacin formal de algoritmos. La solucin de unproblema se representa de manera narrativa utilizandopalabras claves,generalmente verbos,escritos en un lenguaje natural, que en nuestro caso ser espaol. Para ilustrarlo construyamosun algoritmo que resuelva el siguiente problema.

    Problema 1.1: En la figura 1.1.a. se muestra el estado inicial de un tablero, el cual contiene en laprimercasilla (de izquierda a derecha) una bellota, representada por un asterisco (*), y a la ardilla,representada por una flecha que apunta hacia la direccin que est mirando. El problema consiste

    en disear un algoritmo que la ardilla pueda ejecutar para llegar al estado meta representado enla figura 1.1.b., que implica que la ardilla lleve la bellota a la ltima casilla. Para resolverlo se tienela siguiente informacin:

    a) El mundo es conocido, es decir, se sabe de antemano que el tablero est cercado por paredesy slo tiene seis casillas colocadas en lnea.

    b) Al inicio la ardilla est en la primera casilla volteando hacia arriba y no tiene ninguna bellota enla boca.

    c) En la primera casilla hay una bellota.

    Figura 1.1: Primer mundo lineal

    Anlisis: Haciendo un rpido anlisis del problema, nos podemos dar cuenta que la ardilla deberecoger la bellota, avanzar cinco casillas y soltar la bellota, esto traducido en un algoritmo queda

    http://www.amanogawa.com/http://www.amanogawa.com/
  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    8/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 7

    de la siguiente forma:

    Algoritmo 1.1. Primer mundo de la ardilla

    En este caso las instrucciones son parecidas al lenguaje natural.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    9/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 8

    1.2.2. Diagrama de flujo

    Los diagramas de flujoson una representacin grfica de un algoritmo que utiliza smbolos pararepresentar las instrucciones y flechas para unirlas e indicar el orden en que deben ejecutarse -

    llamadas lneas de flujo. Estos smbolos fueron normalizados por el Instituto Norteamericano deNormalizacinANSI (American National Standars Institute, por sus siglas en ingls).Los smbolosms utilizados se muestran en la siguiente tabla.

    Tabla 1.2 Smbolos de los diagramas de flujo

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    10/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 9

    Problema 1.2:Ahora la tarea de la ardilla es que cambie las bellotas que estn en la primera fila(verfigura 1.2.a) a la segunda y viceversa, dejndolas en la misma columna (ver figura 1.2.b).

    Las condiciones de inicio son:

    a) El mundo es conocido y sabemos exactamente dnde hay bellotas.

    b) La ardilla no tiene ninguna bellota en la boca al inicio.

    c) El mundo est encerrado por paredes y si la ardilla choca contra una se considerar un errorgarrafal.

    d) En este punto los cientficos ya entrenaron a la ardilla para ejecutar la orden giraDerecha(), por

    lo tanto, ya puede ser usada en el algoritmo.

    Figura 1.2: Segundo mundo de la ardilla

    Anlisis: De acuerdo con la figura 2.2, inciso a, para que la ardilla cumpla con su tarea deberealizar lossiguientes pasos: recoger la bellota, girar a la derecha, avanzar, dejar la bellota, girar ala izquierda, avanzar, recoger la bellota, girar a la izquierda, avanzar, dejar la bellota, voltear a laderecha y avanzar. Hasta este punto las coordenadas de la ardilla son: primera fila y terceracasilla (volteando a la derecha, como al inicio).

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    11/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 10

    Si la ardilla repite otra vez este bloque de instrucciones, lograr cambiar las siguientes dos

    bellotas; al repetirlo nuevamente cambiara las ltimas dos, salvo que cuando la ardilla avancedespus de haber dejado la bellota chocar contra la pared, por lo tanto, antes de que avanceltima instruccin del bloquetenemos que verificar que no haya pared. La condicin para que laardilla repita el bloque de instrucciones es que no haya pared.

    De lo anterior tenemos el siguiente algoritmo representado en diagrama de flujo.

    Algoritmo 1.2. Solucin problema 1.2

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    12/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 11

    Actividad 1. Representacin de algoritmos

    Consultael documento de actividades

    *Revisala rbrica de la actividad.

    1.3. Estructuras de control

    Los primeros lenguajes de programacin de alto nivel permitan realizar saltos a diferentes lneasdel cdigo mediante la instruccin GOTO, esto tiene el gran inconveniente que cuando se hacauna modificacin en el programa, era necesario modificar todas las instrucciones GOTO paraasegurar que los saltos se hicieran a las lneas de cdigo correctas. Adems de lo tedioso quepoda ser estar corrigiendo el programa, las instrucciones GOTO lo hacan difcil de leer.

    En 1966 Corrado Bhm y Giuseppe Jacopini demostraron que cualquier algoritmo puede

    disearse e implementar utilizando nicamente tres tipos de estructuras de control: secuenciales,condicionales y repetitivas; esto es, sin utilizar GOTO(Bhm & Jacopini, 1966), basndose en

    este resultado, a principios de los aos 70s Edsger Dijkstra se dio cuenta que la forma en la quelos lenguajes de programacin de alto nivel podan modificarse sin problemas era eliminando lasinstrucciones GOTO (o similares), as que propuso un nuevo estilo de programacin al que llam

    programacin estructurada,sta incluye estructuras secuenciales, selectivas y repetitivas,conocidas como estructuras de control.

    1.3.1. Estructuras secuenciales

    Las estructuras secuencialesson un bloque de instrucciones que se ejecutan una tras otra, en elmismo orden en el que estn escritas.

    Un ejemplo de este tipo de instrucciones son todas las que se utilizaron en el algoritmo 1.1.Veamos otro ejemplo.

    Problema 1.3:Ahora la ardilla se enfrenta a un nuevo mundo (ver figura 1.3) en el que su tareaconsisteen recoger las dos bellotas colocadas en la posiciones indicadas por la figura 1.3.a yllevarlas a la ltima casilla de la primera fila, como se muestra en la figura 1.3.b. Considerandoque tenemos un mapa del nuevo mundo y sabemos en qu casillas estn colocadas las bellotas

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    13/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 12

    diseemos un algoritmo para que la ardilla realice su cometido.

    Figura 1.3.Tercer mundo de la ardilla

    Anlisis: Nuevamente el problema planteado es muy sencillo de analizar, la ardilla debe hacer los movimientos que le permitan recoger la primera bellota, despus ir por la segunda y llegar a laltima casilla de la prime fila. Otra posible opcin es que recoja la primera bellota, la lleve a laprimera casilla, regrese por la segunda bellota y tambin la lleve a la primera casilla. Esta ltimaopcin requiere ms esfuerzo por parte de la ardilla, dado que la ardilla no tiene limitado elnmero de bellotas que puede llevar en la boca, entonces la primera opcin es ms eficiente. Elalgoritmo quedara como:

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    14/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 13

    Algoritmo 2.3. Solucin problema 2.3.

    Las instrucciones selectivas, ms usuales, que una computadora es capaz de realizar son:Imprimir,Leer yAsignar. La representacin en diagrama de flujo de estas instrucciones se ilustra

    en la siguientetabla, en cuanto que la representacin en diagrama de flujo se utilizan los mismosverbos y smbolos pero encerrados entre un smbolo de proceso.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    15/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 14

    1.3.2. Estructuras selectivas

    En esencia, las estructuras selectivasse utilizan cuando la solucin de un problema conllevatomar una decisin, ya que se ejecuta un conjunto determinado de instrucciones dependiendo desi se cumple o no una condicin en un momento determinado. Por ejemplo, la ardilla solamentepuede avanzar si se no hay pared, en este caso la condicin es no hayPared()y la accin que serealiza es avanza().Revisemos el siguiente ejemplo:

    Problema 1.4: Nuevamente la ardilla est en el mundo lineal que se ilustra en la figura 2.4.a, tienequerecoger una bellota y llevarla a la ltima casilla como se muestra en la figura 2.4.b, slo queahora no sabe con precisin en que casilla est la bellota y la nica informacin con la que cuentaes la siguiente:

    a) En el tablero hay una sola bellota. Las casillas donde puede estar son la tercera o la quinta,lo cual se representa con un crculo en la figura 2.4.a.

    b) Al inicio la ardilla no tiene ninguna bellota en la boca.

    c) Es un error ordenar a la ardilla que recoja una bellota en una casilla cuando esta no contienenada pues la ardilla no sabr que hacer.

    d) La ardilla ya ha sido entrenada para decir si hay bellota.

    Figura 1.4.Cuarto mundo de la ardilla

    Anlisis: En este caso es necesario asegurarnos que en la casilla hay una bellota, antes deordenarle ala ardilla que la recoja, para ello vamos a utilizar una estructura selectiva, como laardilla ya fue entrenada para decir si hay una bellota, entonces esto lo utilizaremos comocondicin. Ya que tenemos dos posibles lugares dnde la ardilla puede encontrar la bellota,ordenaremos a la ardilla que avance hasta la tercera casilla, si hay una bellota entonces lo recogey despus la lleva a la ltima casilla, sino la ardilla avanza hasta la quinta casilla y ah recoge labellota, esto sin preguntar si ah se encuentra pues una de las aseveraciones en el planteamientodel problema es que en el tablero hay una bellota, as que si ste no estaba en la tercera casilla esseguro que est en la quinta.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    16/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 15

    Algoritmo 1.4. La ardilla toma decisiones en un mundo lineal, versin 1

    Observa que tanto en el primer caso (Si) como en el segundo (Sino) cuando la ardilla est en laquinta casilla y ya recogi la bellota, las siguientes rdenes es que avance y deje la bellota (ambasestn remarcadas), de tal manera que podemos modificar el algoritmo de la siguiente forma:

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    17/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 16

    Algoritmo 1.5. La ardilla toma decisiones en un mundo lineal, versin 2

    Tambin podemos utilizar la estructura Si dos veces, una para preguntar si la bellota est en latercera casilla y otra para preguntar en la quinta, como se muestra en el siguiente algoritmo.

    Algoritmo 1.6. La ardilla toma decisiones en un mundo lineal, versin 3

    A diferencia de los dos algoritmos anteriores, en ste la ardilla va a verificar en las dos casillas si

    hay bellota, aunque la haya encontrado en la primera opcin, esto implica un poco ms esfuerzopara la ardilla.

    Por otro lado, observa que en los algoritmos 1.4 y 1.5 se definieron instrucciones para el caso quese cumple la condicin (Si) y para el caso que no (Sino); en cambio, en este ltimo algoritmo slose ha definido un conjunto de instrucciones que se ejecuta si la condicin se cumple, de no ser asno hay instrucciones especficas y la ardilla continuar realizando las siguientes instrucciones delalgoritmo. Es importante destacar que ambas estructuras son equivalentes, es decir, que losproblemas que se solucionan con una tambin es posible hacerlo con la otra.

    Existen tres tipos de estructuras selectivas que se clasifican de acuerdo al nmero de alternativas:

    a) Simples (Si): involucra un nico bloque de instrucciones que se ejecuta slo si una condicinsecumple.

    b) Dobles (Si-Sino): abarca dos bloques de instrucciones, uno se ejecuta cuando la condicin esverdadera y el otro cuando es falsa.

    c) Mltiples (Seleccionar): tiene ms de dos bloques de instrucciones que se pueden ejecutarconforme al valor que tenga una variable, cada bloque equivale a un valor diferente.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    18/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 17

    En la siguiente tabla se muestra la representacin en pseudocdigo y diagrama de flujo de estasestructuras.

    En otro momento estudiars a mayor detalle cada una de estas estructuras.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    19/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 18

    Actividad 2. Diseo de un algoritmo con estructuras selectivas.

    Consultael documento de actividades.

    *Recuerdaconsultar el instrumento de evaluacin correspondiente a la segunda actividadpara conocer su mtodo de evaluacin.

    1.3.3. Estructuras repetitivas

    Las estructuras repetitivas, tambin llamadas ciclos, permiten ejecutar varias veces un bloque deinstrucciones en funcin de una condicin. Para ilustrar esto, volvamos al problema 1.1 delsubtema 1.2.1; en este mundo la ardilla debe llevar una bellota desde la primera casilla hasta laltima en un mundo lineal (ver figura 1.1). Observa que una vez que la ardilla recoge la bellota yest viendo de frente, debe avanzar una y otra vez mientras no se tope con la pared, esto sepuede modelar con un ciclo de la siguiente manera.

    Algoritmo 1.7. Solucin problema 1.1 utilizando ciclos

    Generalmente, un ciclo se utiliza cuando descubrimos un patrn, tal como se hizo en el anlisis delproblema 1.2. Si observas el algoritmo 1.2, vers que al final hay una flecha que regresa a laprimera instruccin, representado con ello un ciclo. La presentacin en pseudocdigo de este

    algoritmo sera la siguiente:

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    20/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 19

    Algoritmo 1.8: Solucin del problema 1.2 utilizando ciclos

    La clave para utilizar un ciclo es identificar el conjunto de instrucciones que se deben repetir y lacondicin para que se ejecuten. Al igual que en las estructuras selectivas, existen diferentesestructuras repetitivas que se diferencian, principalmente, por el orden en el que se evala lacondicin. stas son:

    a) Mientras-hacer: en este ciclo primero se verifica que la condicin sea verdadera y en tal casoseejecuta el bloque de instrucciones y se repite nuevamente el ciclo.

    b) Hacer-Mientras: en esta estructura primero se realizan las instrucciones y despus se verificalacondicin, si se cumple se repite el ciclo.

    c) Desde-mientras: funciona igual que Mientras pero tiene asociada una variable que sirve como

    contador para controlar el nmero de veces que se repite un ciclo, de tal manera que lacondicin involucra al contador.

    La representacin en pseudocdigo y diagrama de flujo de estas estructuras se muestran en lasiguiente tabla:

    Tipo Pseudocdigo Diagrama de flujo Descripcin

    Mientrashac

    Verifica si la condicise

    Ciclo

    ercumple, en tal casoejecutael conjunto deinstrucciones

    Mientras

    y sevuelve a repetir(while)

    ciclo.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    21/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 20

    Fin_Mientras

    HacerA diferencia del

    Miena

    esta estructura pr

    Ciclo Hacer- ejecuta el conjunto

    Mientras instruccionesydesp

    (do while)Mientras

    verifica que la condicinsecumpla, en caso deserverdadera se repite el

    ciclo.

    Desde

    mientras Inicializa el valor

    ,contador, verifica sila

    Ciclo

    Desde-

    tal caso ejecuta

    instrucciones,(for)

    posteriormenteincrem

    n

    o decrementa lavaria

    Fin_Desde contador.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    22/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 21

    Tabla 1.5 Estructuras repetitivas

    En la unidad 3 estudiars con mayor detalle cada una de estas estructuras.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    23/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 22

    Actividad 3. Diseo de un algoritmo con estructuras repetitivas

    Consultael documento de actividades.

    *Recuerdaconsultar el instrumento de evaluacin correspondiente a la evidencia deaprendizaje para conocer su mtodo de evaluacin.

    Evidencia de aprendizaje. Planteamiento del problema

    Consultael documento de actividades.

    * Recuerdaconsultar el instrumento de evaluacin correspondiente a la evidencia deaprendizaje para conocer su mtodo de evaluacin.

    Se sugiere consultes un video introductorio al sitio de ProcessOn,el cual

    tienen las instrucciones para el uso de esta herramienta que podrasaplicar a lo largo de la unidad:https://youtu.be/VCRpoDDMlEU

    A lo largo del texto se harn algunas sugerencias de informacinadicional que corresponde a la seccin Para saber ms, pero serninsertadas a lo largo de la unidad para complementar el contenido.

    Autorreflexin

    Al terminarla Evidencia de aprendizaje es muy importante que realicestu Autorreflexin. Paraello, Ingresaal foro de Preguntas de Autorreflexin y a partir de las preguntas presentadas portu docente, realizalo que se te pide y sbeloen la seccin Autorreflexiones.

    https://youtu.be/VCRpoDDMlEUhttps://youtu.be/VCRpoDDMlEUhttps://youtu.be/VCRpoDDMlEUhttps://youtu.be/VCRpoDDMlEU
  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    24/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 23

    Cierre de la unidad

    Los Algoritmos ahora tienen un nuevo significado para ti, ya que sabes que son, como disearlos yapoyarte de ellos para resolver un problema planteado.

    Sabes tambin que mediante representaciones grficas, mediante objetos estandarizados, comolos diagramas de flujo puedes desarrollar una solucin con una secuencia de pasos ordenados ycoherentes, generando un diagrama que pueda ser entendido por todos.

    Finalmente, has desarrollado algoritmos que usan sentencias de control y repeticin, permitindote

    reducir la cantidad de instrucciones y mostrando la capacidad que tendr nuestra solucin en laevaluacin de ciertas condiciones que tendr que evaluar durante su ejecucin.

  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    25/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Ciencias Exactas, Ingeniera y Tecnologa Ingeniera en Telemtica 24

    Para saber ms

    Puedes encontrar mayor informacin de la evolucin de las telecomunicaciones en los siguientesvnculos:Los Hitos de la Historia, que trata sobre el inicio del proceso de transmisin de la voz.http://www.tudiscovery.com/guia_tecnologia/hitos_tecnologia/telefono/ .

    Acerca de un recorrido por la evolucin de la telegrafa ptica:http://goo.gl/9nMas.

    Mayor informacin de sealizacin SS7 en los siguientes vnculos:

    Aqu podrs encontrar un tutorial de sistema de sealizacin nmero 7:www.pt.com

    Sobre la sealizacin para el transporte de voz podrs apoyarte en la lectura de: Moreno J.I.; Soto,I; Larrabeiti, D. (2001).Protocolos de Sealizacin para el transporte de voz sobre redes IP. Tesis.Universidad Carlos III de Madrid. Madrid: ATI (Asociacin de Tcnicos de Informtica).

    Fuentes de consulta

    Fuentes bsicas

    Bhm, C., & Jacopini, G. (1966). Flow diagrams, Turing machines, and languages only with twoformation rules". Communications of the ACM, 9(5), 366-371.Cair, O. (2005). Metodologa de la programacin: Algoritmos, diagramas de flujo y programas.Mxico, D.F.: Alfaomega.

    Joyanes, L., & Zohanero, I. (2005). Programacin en C. Metodologa, algoritmos y estructuras dedatos. Espaa: Mc Graw Hill.

    Fuentes complementarias

    Reyes, A., & Cruz, D. (2009). Notas de clase: Introduccin a la programacin.Mxico, D.F.:UACM.

    Viso, E., & Pelaez, C. (2007). Introduccin a las ciencias de la computacin con Java.Mxico,D.F.: La prensas de ciencias, Facultad de Ciencias, UNAM.

    Fuentes electrnicas

    Diseo de algoritmos en programacin: del pseudocdigo al programa. Resolucin de problemas,Didctica y divulgacin de la programacin, aprenderaprogramar.com, 24/04/2015

    Diseo de algoritmos, El algoritmo, una iniciacin a la programacin, 24/04/2015.

    http://www.tudiscovery.com/guia_tecnologia/hitos_tecnologia/telefono/http://www.tudiscovery.com/guia_tecnologia/hitos_tecnologia/telefono/http://goo.gl/9nMashttp://www.pt.com/http://www.pt.com/http://goo.gl/9nMashttp://www.tudiscovery.com/guia_tecnologia/hitos_tecnologia/telefono/
  • 7/25/2019 Unidad 1. Diseno de Algoritmos

    26/26

    Fundamentos de ProgramacinUnidad 1. Diseo de algoritmos

    Fundamentos de programacin - Algoritmos y programas. Wikilirbos, Libros Libres para un mundoLibres. 24/04/2015.

    http://es.wikibooks.org/wiki/Fundamentos_de_programaci%C3%B3n/Algoritmos_y_programashttp://wikitel.info/wiki/Normas_ETSI)http://www.academia.edu/420406/Iniciando_la_Programaci%C3%B3n_T%C3%A9cnicas_y_Dise%C3%B1os_de_Algoritmoshttp://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=247:diseno-de-algoritmos-en-programacion-del-pseudocodigo-al-programa-resolucion-de-problemas-cu00224a&catid=36:curso-qbases-de-la-programacion-nivel-iiq&Itemid=60http://www.it.uc3m.es/tsps/DisenoDeAlgoritmos.pdf

    Iniciando la Programacin: Tcnicas y Diseos de Algoritmos, Percy Vivanco Muoz,academia.edu, 24/04/2015

    Wikitel (2013). Normas ETSI.Comisin del mercado de las telecomunicaciones. Barcelona:24/04/2015.

    http://wikitel.info/wiki/Normas_ETSIhttp://wikitel.info/wiki/Normas_ETSI