Unidad 1. Diseno de Algoritmos
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