Diseño Estructurado de Algoritmos

March 29, 2018 | Author: Omar Deyvi Siesquen Zeña | Category: Computer Memory, Programming Language, Algorithms, Peripheral, Computer Program


Comments



Description

DISEÑO ESTRUCTURADO DE ALGORITMOSINDICE DE CONTENIDO INTRODUCCION..................................................................................................................1 CAPITULO I. CONCEPTOS BÁSICOS Y METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS POR MEDIO DE COMPUTADORAS..................................2 1.1 Introducción...............................................................................................3  De los problemas a los programas................................................................3  Breves practicas de programación................................................................3 1.2 Definición de lenguaje...............................................................................5 1.3 Definición de algoritmo.............................................................................6 1.4 Algoritmos cotidianos................................................................................6 1.5 Definición de lenguajes algoritmicos........................................................6 1.6 Metodología para la solución de problemas por medio de computadora..6 1.7 Definición del problema............................................................................6 1.8 Análisis del problema................................................................................6 1.9 Diseño del algoritmo.................................................................................7 1.10 Codificación.............................................................................................7 1.11 Prueba y depuración................................................................................7 1.12 Documentación........................................................................................7 1.13 Mantenimiento.........................................................................................8 CAPITULO II.ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS..............................................................................................9 2.1 Tipos de datos..........................................................................................10 2.2 Expresiones..............................................................................................10 2.3 Operadores y operandos..........................................................................11 2.4 Identificadores como localidades de memoria........................................15 CAPITULO III. TÉCNICAS DE DISEÑO..........................................................................17 3.1 Top down.................................................................................................18 3.2 Bottom up................................................................................................18 CAPITULO IV. TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS..............19 4.1 Diagrama de flujo....................................................................................20 4.2 Pseudocodigo...........................................................................................21 4.3 Diagrama estructurado (nassi-schneiderman).........................................22 CAPITULO V. ESTRUCTURAS ALGORITMICAS......................................................23 5.1 Secuenciales.............................................................................................24 - Asignación..............................................................................................24 - Entrada.................................................................................................. 24 - Salida......................................................................................................24 5.2 Condicionales..........................................................................................25 - Simples..................................................................................................25 - Múltiples................................................................................................25 5.3 Repetición fila condicional......................................................................39 CAPITULO VI. ARREGLOS...............................................................................................51 6.1 Vectores...................................................................................................52 6.2 Matrices...................................................................................................54 6.3 Manejo de cadenas de caracteres.............................................................54 CAPITULO VII. MANEJO DE MÓDULOS.......................................................................57 7.1 Definición................................................................................................58 7.2 Función....................................................................................................58 7.3 Manipulación...........................................................................................59 APENDICE...........................................................................................................................60 BIBLIOGRAFIA.................................................................................................................. 62 INTRODUCCION El desarrollo de algoritmos es un tema fundamental en el diseño de programas por lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de manera fácil y rápida sus programas. Estos apuntes servirán de apoyo al catedrático del Instituto Tecnológico de Tuxtepec, en su labor cotidiana de enseñanza y al estudiante le facilitará desarrollar su capacidad analítica y creadora, para de esta manera mejorar su destreza en la elaboración de algoritmos que sirven como base para la codificación de los diferentes programas que tendrá que desarrollar a lo largo de su carrera. CAPITULO I. CONCEPTOS BÁSICOS Y METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS POR MEDIO DE COMPUTADORAS. 1.1 Introducción  De los problemas a los programas  Breves practicas de programación 1.2 Definición de lenguaje 1.3 Definición de algoritmo 1.4 Algoritmos cotidianos 1.5 Definición de lenguajes algoritmicos 1.6 Metodología para la solución de problemas por medio de computadora 1.7 Definición del problema 1.8 Análisis del problema 1.9 Diseño del algoritmo 1.10 Codificación 1.11 Prueba y depuración 1.12 Documentación 1.13 Mantenimiento OBJETIVO EDUCACIONAL: El alumno:  Conocerá la terminología relacionada con los algoritmos; así como la importancia de aplicar técnicas adecuadas de programación.  Conocerá la metodología en cada una de sus etapas . 1.1 Introducción La computadora no solamente es una maquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora además de lo anterior también podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Mas aun, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos. El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones. A las soluciones creadas por computadora se les conoce como programas y no son mas que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especifico. Para poder realizar programas, además de conocer la metodología mencionada, también debemos de conocer, de manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma. -Log.U) se divide en dos:   Unidad de control Unidad Aritmético . Unidad Aritmético . La Memoria de la computadora se divide en dos:  Memoria Central o Interna  Memoria Auxiliar o Externa Memoria Central (interna): La CPU utiliza la memoria de la computadora para guardar información mientras trabaja con ella. Esta memoria construida internamente se llama memoria de acceso aleatorio (RAM). lápiz óptico. resta.Lógica Unidad de Control: Coordina las actividades de la computadora y determina que operaciones se deben realizar y en que orden. mouse (ratón). Ejemplos: teclado . trackball (bola de ratón estacionario). la computadora puede tener acceso a ella en forma directa. scanners (digitalizadores de rastreo).Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Dispositivos de Salida: Regresan los datos procesados que sirven de información al usuario. así mismo controla todo el proceso de la computadora. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria central o interna. Ejemplo: monitor. tales como suma.Lógica: Realiza operaciones aritméticas y lógicas. multiplicación. sirven para introducir datos (información) en la computadora para su proceso. joystick (palancas de juego). La Unidad Central de Procesamiento (C. Organización física de una computadora CPU Unida de Unidad Dispositivos de Control Arit. Proceso de información en la computadora Datos de Proceso Datos de entrada salida Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas secuencialmente resuelven un problema especifico. Dispositivos de Entrada Salida Memoria Dispositivos de Entrada: Como su nombre lo indica. Los datos y la información se pueden introducir en la computadora como entrada (input) y a continuación se procesan para producir una salida (output). mientras esta información permanezca en memoria. impresora. La memoria interna consta de dos áreas de memoria: .P. división y comparaciones. la computadora puede leer los datos almacenados en la memoria ROM. lo que facilita la escritura y comprensión del programa. en ella se almacena información solo mientras la computadora esta encendida. la información se pierde. La comunicación es un proceso complejo que requiere una serie de reglas simples. etc. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida. A la transmisión de mensajes se le conoce comúnmente como comunicación. Los lenguajes de programación se clasifican en:  Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. pero no se pueden introducir datos en ella. Lenguajes de Programación Es un conjunto de símbolos.2 Definición de Lenguaje Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes.  Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC. pero indispensables para poderse llevar a cabo. manipulación de textos. caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora. Los dispositivos de almacenamiento o memorias auxiliares (externas o secundarias) mas comúnmente utilizados son: cintas magnéticas y discos magnéticos. Receptor. por lo que se dice que la memoria RAM es una memoria volátil. Cuando se apaga o arranca nuevamente la computadora. Debe forzosamente existir 4 elementos: Emisor. calculo. Medio de Comunicación y Mensaje. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria mas pequeña el bit (dígito binario 0 o 1).La memoria RAM (Randon Access Memory): Recibe el nombre de memoria principal o memoria del usuario. 1. Las dos principales son las siguientes:   Los mensajes deben correr en un sentido a la vez. cobol. La memoria ROM (Read Only Memory): Es una memoria estática que no puede cambiar. o cambiar los datos que ahí se encuentran. frotran. lógica/comparación y almacenamiento/recuperación. Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o datos que el usuario desee. .) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles).  Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas. pascal. Los datos de la memoria ROM están grabados en forma permanente y son introducidos por el fabricante de la computadora. por lo que se dice que esta memoria es de solo lectura. nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.5 Lenguajes Algoritmicos Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. 1.  Diseño del Algoritmo Las características de un buen algoritmo son: Debe tener un punto particular de inicio. Es importante que se conozca lo que se desea que realice la computadora.6 Metodología para la solución de problemas por medio de computadora 1. no debe permitir dobles interpretaciones. Cual es la información que se desea producir (salida) Los métodos y fórmulas que se necesitan para procesar los datos.  Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. es necesario definir: Los datos de entrada.4 Tipos de Algoritmos  Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir. mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. . 1. Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. el cual requiere una definición clara y precisa.  Análisis del Problema Una vez que se ha comprendido lo que se desea de la computadora.7 Definición del Problema Esta fase está dada por el enunciado del problema. 1.  No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo). Debe ser definido. Definición de Algoritmo La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi. para dar solución a un problema especifico. Tipos de Lenguajes Algoritmicos  Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). Debe ser general. soportar la mayoría de las variantes que se puedan presentar en la definición del problema.  Documentación Externa: Se define en un documento escrito los siguientes puntos: Descripción del Problema Nombre del Autor Algoritmo (diagrama de flujo o pseudocodigo) Diccionario de Datos Código Fuente (programa) . El proceso de identificar y eliminar errores. Debe ser finito en tamaño y tiempo de ejecución. 1.11 Prueba y Depuración Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. es decir. por ello se debe considerar con el mismo interés y entusiasmo. Resulta conveniente observar los siguientes principios al realizar una depuración. La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución. A menudo un programa escrito por una persona. La documentación se divide en tres partes: Documentación Interna Documentación Externa Manual del Usuario  Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer mas claro el entendimiento de un proceso. la serie de instrucciones detalladas se le conoce como código fuente. el cual se escribe en un lenguaje de programación o lenguaje de alto nivel. ya que de este trabajo depende el éxito de nuestra solución. 1. es usado por otra. en un código reconocible por la computadora. en una serie de instrucciones detalladas.12 Documentación Es la guía o comunicación escrita es sus variadas formas.10 Codificación La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocodigo). dibujos o diagramas. procedimientos. para dar paso a una solución sin errores se le llama depuración. 1. ya sea en enunciados. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). 1 Tipos De Datos Todos los datos tienen un tipo asociado con ellos. 2.2 Expresiones 2.3 Operadores y operandos 2.4 Identificadores como localidades de memoria OBJETIVO EDUCACIONAL: El alumno:  Conocerá las reglas para cambiar formulas matemáticas a expresiones validas para la computadora. además de diferenciar constantes e identificadores y tipos de datos simples.1 Tipos de datos 2. ajuste o complementación al programa para que siga trabajando de manera correcta. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS 2. un valor entero tal como 35. CAPITULO II. Matrices) Estructurados Registros (Def. Un dato puede ser un simple carácter. Numéricos Simples Lógicos Alfanuméricos (string) Tipos de datos Arreglos (Vectores. 1. con el fin de que el usuario obtenga el resultado deseado. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable. por el Archivos usuario) Apuntadores Tipos de Datos Simples .13 Mantenimiento Se lleva acabo después de terminado el programa. Para poder realizar este trabajo se requiere que el programa este correctamente documentado. cuando se detecta que es necesario hacer algún cambio. tal como `b'. Manual del Usuario: Describe paso a paso la manera como funciona el programa. los valores de una o mas variables y/o constantes. etc. variables. es decir no es posible hacer operaciones con ellos.  Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos). esto incluye a los números enteros y los reales. los operadores nos permiten manipular valores.  Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva. Aritméticos Tipos de Operadores Relaciónales Lógicos  Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes). Por ejemplo: a+(b + 3)/c Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas. Datos Numéricos: Permiten representar valores escalares de forma numérica. símbolos de operación. direcciones. Es posible representar números como alfanuméricos. Este tipo de datos permiten realizar operaciones aritméticas comunes.2 Expresiones Las expresiones son combinaciones de constantes. Este tipo de datos se representan encerrados entre comillas. Es decir. Ejemplo: “Instituto Tecnológico de Tuxtepec” “1997” 2. pero estos pierden su propiedad matemática. se clasifican las expresiones en:  Aritméticas  Relaciónales  Lógicas 2. Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan.3 Operadores y Operandos  Operadores: Son elementos que relacionan de forma diferente. esto incluye nombres de personas. paréntesis y nombres de funciones especiales. . .5 + 12.Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales.*. división.1 * (1.  Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha.09 3. /.6) = 3 + 5 * 4 = 3 + 20 = 23 3.98 .(2 + 4)) = 23 3 + 5 * (10 . 3.5 + 5.  Dentro de una misma expresión los operadores se evalúan en el siguiente orden..14. mod Multiplicación. Las expresiones con paréntesis anidados se evalúan de dentro a fuera.0 / 40 = 5.59 .5 12 mod 7 5 4 + 2 * 5 14 Prioridad de los Operadores Aritméticos  Todas las expresiones entre paréntesis se evalúan primero. el resultado es real. Ejemplos: 4 + 2 * 5 = 14 23 * 2 / 5 = 9. el resultado es entero.^ Exponenciación 2..2 3 + 5 * (10 .2 46 / 5 = 9.0 * 4. modulo.5 = 5.1 * (1. 1.5 + 3.3) = 2.5 + 5.8 = 28.1) = 28. si alguno de ellos es real.Resta * Multiplicación / División Mod Modulo (residuo de la división entera) Ejemplos: Expresión Resultado 7 / 2 3.+. . el paréntesis mas interno se evalúa primero.09 .09 2.1 * 13.3.98 2. Si ambos son enteros.09 .3.Suma y resta. Operando (Operador) Operando Valor (constante o variable) Operadores Aritméticos + Suma .5 = 8.  Operadores Relaciónales:  Se utilizan para establecer una relación entre dos valores.  Estos valores pueden ser resultado de una expresión relacional.  Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas)  Tienen el mismo nivel de prioridad en su evaluación.  Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso).  Los operadores relaciónales tiene menor prioridad que los aritméticos. Operadores Relaciónales > Mayor que < Menor que > = Mayor o igual que < = Menor o igual que < > Diferente = Igual Ejemplos: Si a = 10 b = 20 c = 30 a + b > c Falso a .b = c Falso a * b < > c Verdadero Ejemplos no lógicos: a<b<c 10 < 20 < 30 T < 30 (no es lógico porque tiene diferentes operandos)  Operadores Lógicos:  Estos operadores se utilizan para establecer relaciones entre valores lógicos.b < c Verdadero a . Operadores Lógicos And Y Or O . Not Negación Operador And Operando1 Operador Operando2 Resultado T AND T T TFF FTF FFF Operador Or Operando1 Operador Operando2 Resultado T OR T T TFT FTT FFF Operador Not Operando Resultado TF FT Ejemplos: (a < b) and (b < c) (10<20) and (20<30) T and T T Prioridad de los Operadores Lógicos Not And Or Prioridad de los Operadores en General 1.- ( ) 2.- ^ 3.- *, /, Mod, Not 4.- +, -, And 5.- >, <, > =, < =, < >, =, Or Ejemplos: a = 10 b = 12 c = 13 d =10 1) ((a > b)or(a < c)) and ((a = c) or (a > = b)) FTFF TF F 2) ((a > = b) or (a < d)) and (( a > = d) and (c > d)) FFTT FT F 3) not (a = c) and (c > b) FT T T 2.4 Identificadores Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que nos permite accesar a su contenido. Ejemplo: Nombre Num_hrs Calif2 Reglas para formar un Identificador  Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco.  Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer carácter.  La longitud de identificadores puede ser de hasta 8 caracteres. Constantes y Variables  Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. Ejemplo: pi = 3.1416  Variable: Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo. Ejemplo: área = pi * radio ^ 2 Las variables son : el radio, el área y la constate es pi Clasificación de las Variables Numéricas Por su Contenido Lógicas Alfanuméricas (String) Variables De Trabajo Por su Uso Contadores Acumuladores Por su Contenido  Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo: iva=0.15 pi=3.1416 costo=2500  Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos.  Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales). Ejemplo: letra='a' apellido='lopez' direccion='Av. Libertad #190' Por su Uso  Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa. Ejemplo: suma=a+b/c  Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno. sea fluido. Aunque cada subsistema parece ofrecer lo que se requiere.2 Bottom Up El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computarizarse con forme vayan apareciendo.Simplificación del problema y de los subprogramas de cada descomposición.1 Top down 3. . adolece de ciertas limitaciones por haber tomado un enfoque ascendente.1 Top Down También conocida como de arriba-abajo y consiste en establecer una serie de niveles de mayor a menor complejidad (arriba-abajo) que den solución al problema.2 Bottom up OBJETIVO EDUCACIONAL: El alumno:  Conocerá las características de las técnicas de diseño mas empleadas. su análisis como sistema y su codificación. Consiste en efectuar una relación entre las etapas de la estructuración de forma que una etapa jerárquica y su inmediato inferior se relacionen mediante entradas y salidas de información. TÉCNICAS DE DISEÑO 3. La utilización de la técnica de diseño Top-Down tiene los siguientes objetivos básicos: . cuando se contempla al sistema como una entidad global. presupuesto o paciencia de los usuarios. que recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte del programa. así como su aplicación a cada tipo de problemas 3.El programa final queda estructurado en forma de bloque o módulos lo que hace mas sencilla su lectura y mantenimiento. que en un principio. se ignoran. Uno de ellos es la duplicación de esfuerzos para accesar el software y mas aun . la adquisición de paquetes de software para satisfacer el problema inmediato. Cuando la programación se realiza internamente y haciendo un enfoque ascendente. CAPITULO III. . o bien. es difícil llegar a integrar los subsistemas al grado tal de que el desempeño global. Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. como para corregir aquellas delicadas interfaces. 3. En esta fecha.Las diferentes partes del problema pueden ser programadas de modo independiente e incluso por diferentes personas. Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial. Los problemas de integración entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programación alcanza la fecha limite para la integración total del sistema. ya se cuenta con muy poco tiempo. 1 Diagrama de flujo 4. Símbolo de decisión indica la realización de una comparación de valores. Otro es. así como de conocer las características mas importantes de cada técnica. SÍMBOLO DESCRIPCIÓN Indica el inicio y el final de nuestro diagrama de flujo. Símbolo de proceso y nos indica la asignación de un valor en la memoria y/o la ejecución de una operación aritmética. que se introducen al sistema muchos datos carentes de valor. Las dos herramientas utilizadas comúnmente para diseñar algoritmos son: Diagrama de Flujo Pseuducodigo 4. Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora).2 Pseudocodigo 4. CAPITULO IV. TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS 4. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados.al introducir los datos. Indica la entrada y salida de datos.1 Diagrama de Flujo Un diagrama de flujo es la representación gráfica de un algoritmo. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI). se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos.3 Diagrama estructurado (nassi-schneiderman) OBJETIVO EDUCACIONAL: El alumno:  Será capaz de diferenciar los métodos de representación y formulación de algoritmos. Se utiliza para representar los subprogramas. . Un tercero y tal vez el mas serio inconveniente del enfoque ascendente. es que los objetivos globales de la organización no fueron considerados y en consecuencia no se satisfacen. para realizar el diseño de un programa. Indica la salida de información por impresora. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. dentro de la programación estructurada. Las acciones sucesivas se pueden escribir en cajas sucesivas y como en los diagramas de flujo. Conector fuera de pagina. Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo  Ocupa menos espacio en una hoja de papel  Permite representar en forma fácil operaciones repetitivas complejas  Es muy fácil pasar de pseudocodigo a un programa en algún lenguaje de programación.2 Pseudocodigo Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea. En esencial.  Se debe evitar el cruce de líneas utilizando los conectores.  Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Indican la secuencia en que se realizan las operaciones.  Se deben usar conectores solo cuando sea necesario. Indica la salida de información en la pantalla o monitor.  Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.  Todo texto escrito dentro de un símbolo deberá ser escrito claramente.Conector dentro de pagina.3 Diagramas estructurados (Nassi-Schneiderman) El diagrama estructurado N-S también conocido como diagrama de chapin es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas.  No deben quedar líneas de flujo son conectar. El pseudocodigo utiliza palabras que indican el proceso a realizar. 4. Recomendaciones para el diseño de Diagramas de Flujo  Se deben se usar solamente líneas de flujo horizontales y/o verticales. Representa la continuidad del diagrama en otra pagina. . 4. Representa la continuidad del diagrama dentro de la misma pagina. el pseudocodigo se puede definir como un lenguaje de especificaciones de algoritmos. Líneas de flujo o dirección. evitando el uso de muchas palabras. ESTRUCTURAS ALGORITMICAS 5.Precio Calcular Salario = Hrs * Precio Calcular Imp = Salario* 0.Salida 5.Entrada . SNeto Fin CAPITULO V. Imp. forma: Inicio Accion1 Accion2 .Asignación .Simples ..Hrs.1 Secuenciales .2 Condicionales .se pueden escribir diferentes acciones en una caja.Múltiples 5.15 Calcular Neto = Salario + Imp Escribir Nombre..3 Repetición fila condicional OBJETIVO EDUCACIONAL: El alumno: . Un algoritmo se represente en la sig. Fin Inicio Leer Nombre. Hacer para Cíclicas .Hacer mientras . Estas estructuras se clasifican de acuerdo con su complejidad en: . Conocerá las diferentes estructuras algorítmicas como componentes básicos de los programas y aplicara la combinación de ellas para el desarrollo de algoritmos mas complejos. Una estructura secuencial se representa de la siguiente forma: Inicio Accion1 Accion2 . que permiten. mediante la manipulación de variables.Salida . Estructuras Secuenciales La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. en el paso de valores o resultados a una zona de la memoria. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso.Entrada . .Múltiples .Asignación: La asignación consiste.Simples Estructuras Condicionales Algoritmicas .1. AccionN Fin . ESTRUCTURAS ALGORITMICAS Las estructuras de operación de programas son un grupo de formas de trabajo.Asignación Secuenciales . La asignación se puede clasificar de la siguiente forma:  Simples: Consiste en pasar un valor constate a una variable (a=15)  Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a=a+1) .Repetir hasta 5. Dicha zona será reconocida con el nombre de la variable que recibe el valor. realizar ciertos procesos específicos que nos lleven a la solución de problemas. R Donde “El resultado es:” es un mensaje que se desea aparezca y R es una variable que contiene un valor.10 tpag = sb + com Imprimir tpag. v1. b Donde “a” y “b” son las variables que recibirán los valores Escritura: Consiste en mandar por un dispositivo de salida (p. el teclado) un valor. Inicio Leer cap_inv gan = cap_inv * 0.ej. Problemas Secuenciales 1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara después de un mes si el banco paga a razón de 2% mensual. monitor o impresora) un resultado o mensaje.ej. Esta operación se representa en un pseudocodigo como sigue: Leer a. Inicio Leer sb. Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b)  De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a=c+b*2/4).02 Imprimir gan Fin 2) Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus ventas. v3 tot_vta = v1 + v2 + v3 com = tot_vta * 0. Inicio .Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p. el vendedor desea saber cuanto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones. v2. com Fin 3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deberá pagar finalmente por su compra. . Este proceso se representa en un pseudocodigo como sigue: Escribe “El resultado es:”. nm ta = nh + nm ph = nh * 100 / ta pm = nm * 100 / ta Imprimir ph. pm Fin 6) Realizar un algoritmo que calcule la edad de una persona. Inicio Leer nh.Leer tc d = tc * 0. fact edad = fact .15 cf = ppar + pef + ptf Imprimir cf Fin 5) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes.fnac . 30% de la calificación del examen final. Inicio Leer fnac. Inicio Leer c1. Dicha calificación se compone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales. c3. ef.30 ptf = tf * 0.d Imprimir tp Fin 4) Un alumno desea saber cual será su calificación final en la materia de Algoritmos. 15% de la calificación de un trabajo final. c2.15 tp = tc . tf prom = (c1 + c2 + c3)/3 ppar = prom * 0.55 pef = ef * 0. obtener la equivalencia en dólares. Estas materias se evalúan como se muestra a continuación: La calificación de Matemáticas se obtiene de la sig.37 * (temperatura + 460)) 4) Calcular el numero de pulsaciones que una persona debe tener por cada 10 segundos de ejercicio.  Todos los lunes.edad)/10 5) Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior. Traumatologia. Cada una de ellas invierte una cantidad distinta. El presupuesto anual del hospital se reparte conforme a la sig. Problemas Propuestos  Dada un cantidad en pesos.  Un alumno desea saber cual será su promedio general en las tres materias mas difíciles que cursa y cual será el promedio que obtendrá en cada una de ellas.Imprimir edad Fin. Pediatría. si la formula es: num. para cualquier monto presupuestal. manera: Examen 90% Promedio de tareas 10% En esta materia se pidió un total de tres tareas. Determinar el tiempo promedio que la persona tarda en recorrer la ruta en una semana cualquiera. 3) La presión.  El dueño de una tienda compra un articulo a un precio determinado. tabla: Área Porcentaje del presupuesto Ginecología 40% Traumatologia 30% Pediatría 30% Obtener la cantidad de dinero que recibirá cada área. una persona corre la misma ruta y cronometra los tiempos obtenidos.  En un hospital existen tres áreas: Ginecología. Obtener el precio en que lo debe vender para obtener una ganancia del 30%. asumiendo que la unidad cambiaría es un dato desconocido. pulsaciones = (220 . .  Leer un numero y escribir el valor absoluto del mismo.  Tres personas deciden invertir su dinero para fundar una empresa. Obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida. miércoles y viernes. el volumen y la temperatura de una masa de aire se relacionan por la formula: masa = (presión * volumen)/(0. 5. La calificación de Química se obtiene de la sig. se siga un curso de acción dentro del programa. para que en base al resultado de esta comparación. manera: Examen 80% Promedio de tareas 20% En esta materia se pidió un total de dos tareas..…… Precede a las acciones a realizar cuando se cumple la condición acción(es)………… Son las acciones a realizar cuando se cumple o no la condición si no……………… Precede a las acciones a realizar cuando no se cumple la condición Dependiendo de si la comparación es cierta o falsa. . Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante. manera: Examen 85% Promedio de tareas 15% En esta materia se pidió un promedio de tres tareas.La calificación de Física se obtiene de la sig. se pueden realizar una o mas acciones. las simples y las múltiples. Se representa de la siguiente forma: Si <condición> entonces Acción(es) si no Acción(es) Fin-si Donde: Si ………………… Indica el comando de comparación Condición………… Indica la condición a evaluar entonces…….  Simples: Las estructuras condicionales simples se les conoce como “Tomas de decisión”.2 Estructuras de Condicionales Las estructuras condicionales comparan una variable contra otro(s) valor(es). Estas tomas de decisión tienen la siguiente forma: Si <condición> entonces Acción(es) Fin-si  Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. según se necesite. Existen dos tipos básicos. La forma común es la siguiente: Si <condición> entonces Acción(es) si no Si <condición> entonces Acción(es) si no . ejecutando para cada caso una serie de instrucciones especificas.  Forma General Casos Variable Op1: Acción(es) Op2: Acción(es) . . OpN: acción Fin-casos Problemas Condicionales a)Problemas Selectivos Simples 1) Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversión en el banco. cap int = cap * p_int si int > 7000 entonces capf = cap + int fin-si . Varias condiciones . El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000. son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados. . Múltiples: Las estructuras de comparación múltiples. Inicio Leer p_int. y en ese caso desea saber cuanto dinero tendrá finalmente en su cuenta. reprueba en caso contrario. Inicio Leer ht Si ht > 40 entonces . el cual se obtiene de la sig. 4) Un obrero necesita calcular su salario semanal.desc imprimir tot_pag fin.Imprimir capf fin 2) Determinar si un alumno aprueba a reprueba un curso. manera: Si trabaja 40 horas o menos se le paga $16 por hora Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra. sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 70.20 si no desc = 0 fin-si tot_pag = compra . calif3 prom = (calif1 + calif2 + calif3)/3 Si prom >= 70 entonces Imprimir “alumno aprobado” si no Imprimir “alumno reprobado” Fin-si Fin 3) En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad que pagara una persona por su compra? Inicio Leer compra Si compra > 1000 entonces desc = compra * 0. Inicio Leer calif1. calif2. El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000.40 ss = he * 20 + 40 * 16 si no ss = ht * 16 Fin-si Imprimir ss Fin 5) Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversión en el banco.66 calorías por minuto. num2 si no Imprimir num2. Los datos que tiene son que estando dormido consume 1. cap int = cap * p_int si int > 7000 entonces capf = cap + int fin-si Imprimir capf fin 6) Que lea dos números y los imprima en forma ascendente Inicio Leer num1.08 calorías por minuto y estando sentado en reposo consume 1.he = ht . . Inicio Leer p_int. num2 Si num1 < num2 entonces Imprimir num1. se encuentra en reposo y desea saber cuantas calorías consume su cuerpo durante todo el tiempo que realice una misma actividad. y en ese caso desea saber cuanto dinero tendrá finalmente en su cuenta. Las actividades que tiene permitido realizar son únicamente dormir o estar sentado en reposo. que pesa 70 kg. num1 fin-si fin 7) Una persona enferma. prec_orig * 0. prec_orig.10 fin-si .66 * tiemp fin-si Imprimir cg Fin 8) Hacer un algoritmo que imprima el nombre de un articulo.08 * tiemp si no cg = 1.20 si no tot_pag = tot_comp . Si se compran tres camisas o mas se aplica un descuento del 20% sobre el total de la compra y si son menos de tres camisas un descuento del 10% Inicio Leer num_camisas. Inicio Leer nomb. precio original y su precio con descuento. tiemp Si act$ = “dormido” entonces cg = 1. El descuento lo hace en base a la clave.tot_comp * 0.10 si no prec_desc = prec_orig .Inicio Leer act$.20 fin-si Imprimir nomb. prec_desc fin 9) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. si la clave es 01 el descuento es del 10% y si la clave es 02 el descuento en del 20% (solo existen dos claves). prec tot_comp = num_camisas * prec Si num_camisas > = 3 entonces tot_pag = tot_comp . clave. cve. prec_orig Si cve = 01 entonces prec_desc = prec_orig .tot_comp * 0.prec_orig * 0. cve. 15 si no cantinv = totcomp * 0. Inicio Leer costopza.30 préstamo = 0 fin-si int = crédito * 0. numpza totcomp = costopza * numpza Si totcomp > 500 000 entonces cantinv = totcomp * 0. si es mayor o igual a 74 el descuento es del 20%. Si el monto total de la compra excede de $500 000 la empresa tendrá la capacidad de invertir de su propio dinero un 55% del monto de la compra. El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crédito. 2) En un supermercado se hace una promoción. int Fin Problemas Propuesto 1) Calcular el total que una persona debe pagar en un llantera. crédito.20 Imprimir cantinv. si el precio de cada llanta es de $800 si se compran menos de 5 llantas y de $700 si se compran 5 o mas. Obtener cuanto dinero se le descuenta. dependiendo del monto total de la compra.70 crédito = totcomp * 0. préstamo. Si el monto total de la compra no excede de $500 000 la empresa tendrá capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagara solicitando crédito al fabricante. La empresa.Imprimir tot_pag fin 10) Una empresa quiere hacer una compra de varias piezas de la misma clase a una fabrica de refacciones. pedir prestado al banco un 30% y el resto lo pagara solicitando un crédito al fabricante. mediante la cual el cliente obtiene un descuento dependiendo de un numero que se escoge al azar.30 crédito = totcomp * 0.55 préstamo = totcomp * 0. Si el numero escogido es menor que 74 el descuento es del 15% sobre el total de la compra. . decidirá que hacer para pagar al fabricante. la formula que se aplica cuando el sexo es femenino es: num. Si el monto de la hipoteca es menor que $1 000 000 entonces invertirá el 50% de la inversión total y un socio invertirá el otro 50%. Si los ingresos del comprador son menos de $8000 o mas el enganche será del 30% del costo de la casa y el resto se distribuirá en pagos mensuales a pagar en 7 años. que consiste en lo siguiente: Si el monto por el que se efectúa la fianza es menor que $50 000 la cuota a pagar será por el 3% del monto. La afianzadora desea determinar cual será la cuota que debe pagar un cliente. la cual incluye el 10% de IVA. 7) El gobierno ha establecido el programa SAR (Sistema de Ahorro para el Retiro) que consiste en que los dueños de la empresa deben obligatoriamente depositar en una cuenta bancaria un porcentaje del salario de los trabajadores. pulsaciones = (210 . 6) Una empresa de bienes raíces ofrece casas de interés social. bajo las siguientes condiciones: Si los ingresos del comprador son menores de $8000 o mas el enganche será del 15% del costo de la casa y el resto se distribuirá en pagos mensuales. la cual le será descontada de su pago.edad)/10 y si el sexo es masculino: num. para lo cual piensa verificar cuanto dinero le prestara el banco por hipotecar su casa. 8) Una persona desea iniciar un negocio. La empresa quiere obtener cuanto debe pagar un comprador por concepto de enganche y cuanto por cada pago parcial. y si el monto es mayor que $50 000 la cuota a pagar será el 2% del monto.3) Calcular el numero de pulsaciones que debe tener una persona por cada 10 segundos de ejercicio aerobico. Obtener cuanto debe pagar un alumno. 5) En una escuela la colegiatura de los alumnos se determina según el numero de materias que cursan. El costo de todas las materias es el mismo. . Tiene una cuenta bancaria. y el pago mensual que recibirá. Se ha establecido un programa para estimular a los alumnos. pero no quiere disponer de ella a menos que el monto por hipotecar su casa sea muy pequeño. si el promedio obtenido es menor que 9 deberá pagar la colegiatura completa. de finanzas y estableció un programa para captar clientes. Un trabajador que ha decidido aportar a su cuenta del SAR desea saber la cantidad total de dinero que estará depositado a esa cuenta cada mes. entonces invertirá el monto total de la hipoteca y el resto del dinero que se necesite para cubrir la inversión total se repartirá a partes iguales entre el socio y el.edad)/10 4) Una compañía de seguros esta abriendo un depto. a pagar en diez años. pulsaciones = (220 . adicionalmente los trabajadores pueden solicitar a la empresa que deposite directamente una cuota fija o un porcentaje de su salario en la cuenta del SAR. el cual consiste en lo siguiente: si el promedio obtenido por un alumno en el ultimo periodo es mayor o igual que 9. se le hará un descuento del 30% sobre la colegiatura y no se le cobrara IVA. Si el monto de la hipoteca es de $ 1 000 000 o mas. con el terreno sucede lo contrario. Ayúdale a esta persona a determinar si debe o no comprar el automóvil. El programa de control de contaminación consiste en medir los puntos IMECA que emite la fabrica en cinco días de una semana y si el promedio es superior a los 170 puntos entonces tendrá la sanción de parar su producción por una semana y una multa del 50% de las ganancias diarias cuando no se detiene la producción. El dueño de la fabrica desea saber cuanto dinero perderá después de ser sometido a la revisión. Inicio Leer num1. 10) Una fabrica ha sido sometida a un programa de control de contaminación para lo cual se efectúa una revisión de los puntos IMECA generados por la fabrica. Problemas Selectivos Compuestos 1) Leer 2 números. manera: Porcentaje de la superficie del bosque Tipo de árbol 70% pino 20% oyamel 10% cedro Si la superficie del terreno es menor o igual a un millón de metros cuadrados. También se sabe que una hectárea equivale a 10 mil metros cuadrados. si el primero es mayor que el segundo que los reste y si no que los sume. num2 si num1 = num2 entonces resul = num1 * num2 . Si la superficie del terreno excede a 1 millón de metros cuadrados. oyameles y cedros que tendrá que sembrar en el bosque. manera: Porcentaje de la superficie del bosque Tipo de árbol 50% pino 30% oyamel 20% cedro El gobierno desea saber el numero de pinos.9) El gobierno del estado de México desea reforestar un bosque que mide determinado numero de hectáreas. entonces decidirá sembrar de la sig. Sabe que mientras el automóvil se devalúa. los cuales cuestan exactamente lo mismo. entonces decidirá sembrar de la sig. Esta persona comprara el automóvil si al cabo de tres años la devaluación de este no es mayor que la mitad del incremento del valor del terreno. 11) Una persona se encuentra con un problema de comprar un automóvil o un terreno. si se sabe que en 10 metros cuadrados caben 8 pinos. si son iguales que los multiplique. en 15 metros cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros. Si el promedio obtenido de puntos IMECA es de 170 o menor entonces no tendrá ni sanción ni multa. si no si num1 > num2 entonces resul = num1 .num2 si no resul = num1 + num2 fin-si fin-si fin 2) Leer tres números diferentes e imprimir el numero mayor de los tres. Inicio Leer ht. sabiendo que cuando las horas de trabajo exceden de 40. num2. el resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8. num3 Si (num1 > num2) and (num1 > num3) entonces mayor = num1 si no Si (num2 > num1) and (num2 > num3) entonces mayor = num2 si no mayor = num3 fin-si fin-si Imprimir mayor fin 3) Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa. Inicio Leer num1. pph Si ht < = 40 entonces tp = ht * pph si no . si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple. tabla: Tiempo Utilidad Menos de 1 año 5 % del salario 1 año o mas y menos de 2 años 7% del salario 2 años o mas y menos de 5 años 10% del salario 5 años o mas y menos de 10 años 15% del salario 10 años o mas 20% del salario Inicio Leer sm.10 si no .he = ht .05 si no Si (antig > = 1) and (antig < 2) entonces util = sm * 0.07 si no Si (antig > = 2) and (antig < 5) entonces util = sm * 0.40 Si he < = 8 entonces pe = he * pph * 2 si no pd = 8 * pph * 2 pt = (he .8) * pph * 3 pe = pd + pt fin-si tp = 40 * pph + pe fin-si Imprimir tp fin 4) Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la sig. antig Si antig < 1 entonces util = sm * 0. si es azul un 50% y si es roja un 100%. si es verde se le hará un 10% de descuento.Si (antig > = 5) and (antig < 10) entonces util = sm * 0.50 si no d=tc fin-si fin-si .20 fin-si fin-si fin-si fin-si Imprimir util fin 5) En una tienda de descuento se efectúa una promoción en la cual se hace un descuento sobre el valor de la compra total según el color de la bolita que el cliente saque al pagar en caja. si es amarilla un 25%. Determinar la cantidad final que el cliente deberá pagar por su compra.25 si no si b$ = `azul' entonces d=tc*0. b$ si b$ = `blanca' entonces d=0 si no si b$ = `verde' entonces d=tc*0.10 si no si b$ = `amarilla' entonces d=tc*0. se sabe que solo hay bolitas de los colores mencionados. Si la bolita es de color blanco no se le hará descuento alguno.15 si no util = sm * 0. Inicio leer tc. quedara adscrita una persona. si el numero de computadoras es mayor o igual a cinco pero menos de diez se le otorga un 20% de descuento.000 . Determinar en que tipo de jubilación. Las personas adscritas a la jubilación por antigüedad adulta deben tener 60 años o mas y una antigüedad en su empleo de 25 años o mas. y si son 10 o mas se les da un 40% de descuento. Inicio leer edad.ant si edad >= 60 and ant < 25 entonces imprimir “la jubilación es por edad” si no si edad >= 60 and ant > 25 entonces imprimir “la jubilación es por edad adulta” si no si edad < 60 and ant > 25 entonces imprimir “la jubilación es por antigüedad joven” si no imprimir “no tiene por que jubilarse” fin-si fin-si fin-si fin Problemas Propuestos 1) En una fabrica de computadoras se planea ofrecer a los clientes un descuento que dependerá del numero de computadoras que compre. Si las computadoras son menos de cinco se les dará un 10% de descuento sobre el total de la compra. Las personas adscritas a la jubilación por edad deben tener 60 años o mas y una antigüedad en su empleo de menos de 25 años.fin-si fin-si fin 6) El IMSS requiere clasificar a las personas que se jubilaran en el año de 1997. Existen tres tipos de jubilaciones: por edad. Las personas adscritas a la jubilación por antigüedad joven deben tener menos de 60 años y una antigüedad en su empleo de 25 años o mas. El precio de cada computadora es de $11. por antigüedad joven y por antigüedad adulta. dicha promoción consiste en lo siguiente: Si se compran menos de cinco llantas el precio es de $300 cada una.2) En una llantera se ha establecido una promoción de las llantas marca “Ponchadas”. La manera de planificarlas depende de lo siguiente: Si actualmente su capital se encuentra con saldo negativo.5 10% 5. Además.01 . Si su capital tiene actualmente un saldo positivo pedirá un préstamo bancario para tener un nuevo saldo de $20 000. Posteriormente repartirá su presupuesto de la siguiente manera. Las preguntas son: 1. Determinar cuanto pagara. con IVA incluido. Obtener la cantidad de dinero que una persona tiene que pagar por cada una de las llantas que compra y la que tiene que pagar por el total de la compra. La independencia de México fue en el año 1810? 3. independientemente de esto. pedirá un préstamo bancario para que su nuevo saldo sea de $10 000. ofrece un 5% de descuento si la marca es “NOSY”. The Doors fue un grupo de rock Americano? 4) Un proveedor de estéreos ofrece un descuento del 10% sobre el precio sin IVA. de $250 si se compran de cinco a 10 y de $200 si se compran mas de 10. 5) Una frutería ofrece las manzanas con descuento según la siguiente tabla: NUM. . $5 000 para equipo de computo $2 000 para mobiliario y el resto la mitad será para la compra de insumos y la otra para otorgar incentivos al personal. de algún aparato si este cuesta $2000 o mas. Desplegar que cantidades se destinaran para la compra de insumos e incentivos al personal y.2 0% 2. pero si su capital tiene actualmente un saldo superior a los $20 000 no pedirá ningún préstamo. a cuanto ascendería la cantidad que se pediría al banco. en caso de que fuera necesario.10 15% 10. 3) En un juego de preguntas a las que se responde “Si” o “No” gana quien responda correctamente las tres preguntas.01 en adelante 20% Determinar cuanto pagara una persona que compre manzanas es esa frutería. DE KILOS COMPRADOS % DESCUENTO 0 . Si se responde mal a cualquiera de ellas ya no se pregunta la siguiente y termina el juego. 6) El dueño de una empresa desea planificar las decisiones financieras que tomara en el siguiente año.01 . Colon descubrió América? 2. un cliente cualquiera por la compra de su aparato. 1 mes 13 .18 g% > 6 y < = 12 meses 11 .5 y el alumno es de profesional. ni menor). entonces podrá cursar 40 unidades y no tendrá ningún descuento.6 . el numero de materias reprobadas es de 0 a 3 y el alumno es de preparatoria. el numero de materias reprobadas es de 4 o mas y el alumno es de preparatoria. Si el promedio es de 7 o menor.5 y el alumno es de profesional. Si el nivel de hemoglobina que tiene una persona es menor que el rango que le corresponde.5 y el alumno es de preparatoria.15. Si el promedio es mayor o igual a 9 pero menor que 9. Si el promedio es de 7 o menor. entonces este podrá cursar 55 unidades y se le hará un 25% de descuento. un medico determina si una persona tiene anemia o no. entonces podrá cursar 55 unidades y se le hará un 20% de descuento. 9) Que lea tres números diferentes y determine el numero medio del conjunto de los tres números (el numero medio es aquel numero que no es ni mayor. 5.18 g% 8) Una institución educativa estableció un programa para estimular a los alumnos con buen rendimiento académico y que consiste en lo siguiente: Si el promedio es de 9. se determina su resultado como positivo y en caso contrario como negativo.15. entonces podrá cursar 55 unidades y no tendrá descuento.5 g% mujeres > 15 años 12 .26 g% > 1 y < = 6 meses 10 . La tabla en la que el medico se basa para obtener el resultado es la siguiente: EDAD NIVEL HEMOGLOBINA 0 .5 g% > 10 y < = 15 años 13 . lo cual depende de su nivel de hemoglobina en la sangre.16 g% hombres > 15 años 14 . este podrá cursar 50 unidades y no tendrá ningún descuento.3.15 g% > 1 y < = 5 años 11. de su edad y de su sexo. Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria.5 .5 o mas y el alumno es de preparatoria. Si el promedio es mayor o igual a 9.7) Tomando como base los resultados obtenidos en un laboratorio de análisis clínicos.15 g% > 5 y < = 10 años 12. entonces este podrá cursar 50 unidades y se le hará un 10% de descuento. Si el promedio es menor de 9. 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. entonces podrá cursar 45 unidades y no tendrá descuento. Estructuras Cíclicas . Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa).Los ciclos se clasifican en:  Ciclos con un Numero Determinado de Iteraciones (Hacer-Para) Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura es la siguiente: Hacer para V.C = L.I a L.S VC=LI Accion1 Vc = LS V Accion2 vc=vc+1 . .F . AccionN Cuerpo del ciclo Fin-para Donde: V.C Variable de control del ciclo L.I Limite inferir L.S Limite superior 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 limite superior. Problemas ( Hacer para ) 1) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseño Estructurado de Algoritmos Inicio Sum=0 Leer Nom Hacer para c = 1 a 7 Leer calif Sum = sum + calif Fin-para prom = sum /7 Imprimir prom Fin. 2) Leer 10 números y obtener su cubo y su cuarta. Inicio Hacer para n = 1 a 10 Leer num cubo = num * num * num cuarta = cubo * num Imprimir cubo, cuarta Fin-para Fin. 3) Leer 10 números e imprimir solamente los números positivos Inicio Hacer para n = 1 a 10 Leer num Si num > 0 entonces Imprimir num fin-si Fin-para Fin. 4) Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos neutros. Inicio cn = 0 cp = 0 cneg = 0 Hacer para x = 1 a 20 Leer num Sin num = 0 entonces cn = cn + 1 si no Si num > 0 entonces cp = cp + 1 si no cneg = cneg + 1 Fin-si Fin-si Fin-para Imprimir cn, cp, cneg Fin. 5) Leer 15 números negativos y convertirlos a positivos e imprimir dichos números. Inicio Hacer para x = 1 a 15 Leer num pos = num * -1 Imprimir num, pos Fin-para Fin. 6) Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos. Realizar un algoritmo para calcular la calificación media y la calificación mas baja de todo el grupo. Inicio sum = 0 baja = 9999 Hacer para a = 1 a 40 Leer calif sum = sum + calif Si calif < baja entonces baja = calif fin-si Fin-para media = sum / 2 Imprimir media, baja fin 7) Calcular e imprimir la tabla de multiplicar de un numero cualquiera. Imprimir el multiplicando, el multiplicador y el producto. jóvenes. resul Fin-para fin. 8) Simular el comportamiento de un reloj digital. minutos y segundos de un día desde las 0:00:00 horas hasta las 23:59:59 horas Inicio Hacer para h = 1 a 23 Hacer para m = 1 a 59 Hacer para s = 1 a 59 Imprimir h. 15 clientes que aun no han pagado recibirán un 15% de descuento si compran mas de 10 kilos. adultos y viejos que existen en su zona habitacional. m.Inicio Leer num Hacer para X = 1 a 10 resul = num * x Imprimir num. Determinar cuanto pagara cada cliente y cuanto percibirá la tienda por esas compras. s Fin-para Fin-para Fin-para fin. “ = “.59 Viejos 60 en adelante 2) Al cerrar un expendio de naranjas. Se determinan las categorías con base en la sig. Asimismo se desea saber los puntos contaminantes del carro que menos contamino y del que mas contamino. “ * “. . 3) En un centro de verificación de automóviles se desea saber el promedio de puntos contaminantes de los primeros 25 automóviles que lleguen. tabla: CATEGORIA EDAD Niños 0 .12 Jóvenes 13 . X. imprimiendo la hora. Problemas Propuestos 1) Una persona debe realizar un muestreo con 50 personas para determinar el promedio de peso de los niños.29 Adultos 30 . y cuanto tomando en cuenta su sueldo base y sus comisiones.  Ciclos con un Numero Indeterminado de Iteraciones ( Hacer-Mientras.Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos. El gerente de su compañía desea saber cuanto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas. Repetir-Hasta) Son aquellos en que el numero de iteraciones no se conoce con exactitud. y un 10% extra por comisiones de sus ventas. . entonces ya no se ejecuta el proceso. donde “N” puede ser fijo o variable. 2) En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. La forma de esta estructura es la siguiente: Hacer mientras <condición> Accion1 NO Accion2 . y si son chimpancés tomara 40. Si se decide por elefantes solo tomara una muestra de 20 de ellos. la instrucción se vale de una condición que es la que debe cumplirse para que se siga ejecutando.4) Un entrenador le ha propuesto a un atleta recorrer una ruta de cinco kilómetros durante 10 días. Su política de pagos es que un vendedor recibe un sueldo base. El salario se obtiene de la sig. . Cuando la condición ya no se cumple. Cada uno hace tres ventas a la semana. de mas de 1 año y menos de 3 y de 3 o mas años. . 5) Un Zoólogo pretende determinar el porcentaje de animales que hay en las siguientes tres categorías de edades: de 0 a 1 año. Para esto. El zoológico todavía no esta seguro del animal que va a estudiar. para determinar si es apto para la prueba de 5 Kilómetros o debe buscar otra especialidad.Que su promedio de tiempos sea menor o igual a 15 minutos.  Hacer-Mientras: Esta es una estructura que repetira un proceso durante “N” veces. si se decide por las jirafas. forma: Si el obrero trabaja 40 horas o menos se le paga $20 por hora . Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones: . tomara 15 muestras. ya que esta dado en función de un dato dentro del programa.Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos. SI AccionN Fin-mientras Problemas (Hacer Mientras) 1) Una compañía de seguros tiene contratados a n vendedores. 3) Se desea obtener el promedio de g grupos que están en un mismo año escolar. Pero si la diferencia es negativa. el promedio de cada grupo y el promedio de cada alumno. Si existe diferencia positiva entre este promedio de peso y el peso de la ultima vez que se reunieron. de los n autos que entran a la ciudad de México. desea saber. 8) Encontrar el menor valor de un conjunto de n números dados. 10) En un supermercado un cajero captura los precios de los artículos que los clientes compran e indica a cada cliente cual es el monto de lo que deben pagar. Lo que el problema requiere es que por cada persona se imprima un letrero que diga: “SUBIO” o “BAJO” y la cantidad de kilos que subió o bajo de peso. Lo que se desea desplegar es el promedio de los grupos. relación: DÍGITO COLOR 1 o 2 amarilla 3 o 4 rosa 5 o 6 roja 7 o 8 verde 9 o 0 azul 5) Obtener el promedio de calificaciones de un grupo de n alumnos. mujeres y de todo un grupo de alumnos. significa que bajaron. 4) El Depto. suponiendo que los datos son extraídos alumno por alumno. Conociendo el ultimo dígito de la placa de cada automóvil se puede determinar el color de la calcomanía utilizando la sig.Si trabaja mas de 40 horas se le paga $20 por cada una de las primeras 40 horas y $25 por cada hora extra. . de Seguridad Publica y Transito del D. 11) Cinco miembros de un club contra la obesidad desean saber cuanto han bajado o subido de peso desde la ultima vez que se reunieron. 6) Una persona desea invertir su dinero en un banco. Para esto se debe realizar un ritual de pesaje en donde cada uno se pesa en diez básculas distintas para así tener el promedio mas exacto de su peso. el cual le otorga un 2% de interés. 3) Determinar cuantos hombres y cuantas mujeres se encuentran en un grupo de n personas. siendo que cada grupo puede tener n alumnos que cada alumno puede llevar m materias y que en todas las materias se promedian tres calificaciones para obtener el promedio de la materia. 9) Encontrar el mayor valor de un conjunto de n números dados. significa que subieron de peso. Al final del día le indica a su supervisor cuanto fue lo que cobro en total a todos los clientes que pasaron por su caja. 7) Calcular el promedio de edades de hombres. Cual será la cantidad de dinero que esta persona tendrá al cabo de un año si la ganancia de cada mes es reinvertida?. cuantos entran con calcomanía de cada color.F. 3) un teatro otorga descuentos según la edad del cliente. La señora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado. AccionN Hasta <condición> NO Problemas Repetir . si es amarilla un 25% y si es blanca no obtendrá descuento. La forma de esta estructura es la siguiente: Repetir Accion1 Accion2 . Ayúdale a esta señora a obtener el total de sus compras. 2) En un supermercado una ama de casa pone en su carrito los artículos que va tomando de los estantes. como en el Hacer-Mientras.19 25 % Categoría 3 20 . Repetir-Hasta: Esta es una estructura similar en algunas características. hasta que decide que ya tomo todo lo que necesitaba. . Se sabe que si el color de la bolita es roja el cliente obtendrá un 40% de descuento. a la anterior. esta estructura permite realizar el proceso cuando menos una vez. que les dirá que descuento tendrán sobre el total de su compra. el Repetir-Hasta lo hace hasta que la condición se cumple y no mientras. determinar la cantidad de dinero que el teatro deja de percibir por cada una de las categorías. a esto le suma lo que ira gastando en los demás artículos. Tomar en cuenta que los niños menores de 5 años no pueden entrar al teatro y que existe un precio único en los asientos. por lo que cada vez que toma un articulo anota su precio junto con la cantidad de artículos iguales que ha tomado y determina cuanto dinero gastara en ese articulo. pero a diferencia del HacerMientras. mientras que en el Hacer-Mientras puede ser que nunca llegue a entrar si la condición no se cumple desde un principio.Hasta 1) En una tienda de descuento las personas que van a pagar el importe de su compra llegan a la caja y sacan una bolita de color. ya que la condición se evalúa al final del proceso.45 10 % Categoría 4 46 .14 35 % Categoría 2 15 . Determinar la cantidad que pagara cada cliente desde que la tienda abre hasta que cierra. Por otra parte.65 25 % Categoría 5 66 en adelante 35 % . Los descuentos se hacen tomando en cuenta el siguiente cuadro: Edad Descuento Categoría 1 5 . Repite un proceso una cantidad de veces. carrera técnica. Si hay una solicitud de un el empleado .A. decide llevar un control sobre lo que va comprando.37 * (temperatura + 460) Calcular el promedio de masa de aire de los neumáticos de n vehículos que están en compostura en un servicio de alineación y balanceo. También desea determinar cual es la sección con mayor numero de votantes. 3) En una granja se requiere saber alguna información para determinar el precio de venta por cada kilo de huevo. se toma como base la siguiente tabla: PRECIO TOTAL DE CALIDAD PESO POR KILO DE HUEVO mayor o igual que 15 1. que porcentaje tiene estudios de primaria. secundaria. La calidad de cada gallina se obtiene según la formula: calidad = peso de la gallina * altura de la gallina numero de huevos que pone Finalmente para fijar el precio del kilo de huevo. Determinar la cantidad de dinero que esta persona deberá pagar. Las secciones son: norte. Desea obtener de todas las personas que alcance a encuestar en un día. 7) Un jefe de casilla desea determinar cuantas personas de cada una de las secciones que componen su zona asisten el día de las votaciones.2 * promedio de calidad mayor que 8 y menor que 15 1. sur y centro. 8) Un negocio de copias tiene un limite de producción diaria de 10 000 copias si el tipo de impresión es offset y de 50 000 si el tipo es estándar. que porcentaje esta en contra y que porcentaje se abstiene de opinar. 0. Los vehículos pueden ser motocicletas o automóviles. el resto se convierte en horas extras que se pagan al doble de una hora normal. 2) Determinar la cantidad semanal de dinero que recibirá cada uno de los n obreros de una empresa. estudios profesionales y estudios de posgrado.80 * promedio de calidad 4) En la Cámara de Diputados se levanta una encuesta con todos los integrantes con el fin de determinar que porcentaje de los n diputados esta a favor del Tratado de Libre Comercio. cuando no exceden de 8. 6) Un censador recopila ciertos datos aplicando encuestas para el ultimo Censo Nacional de Población y Vivienda. 5) Una persona que va de compras a la tienda “Enano. volumen y temperatura de una masa de aire se relacionan por la formula: masa= presión * volumen . cuando las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple. La tienda tiene una promoción del 20% de descuento sobre aquellos artículos cuya etiqueta sea roja. Se sabe que cuando las horas que trabajo un obrero exceden de 40. para saber la cantidad de dinero que tendrá que pagar al llegar a la caja.Problemas Propuestos 1) La presión.”.00 * promedio de calidad menor o igual que 8 0. Es importante determinar el promedio de calidad de las n gallinas que hay en la granja. S. 9) Calcular la suma siguiente: 100 + 98 + 96 + 94 + . + 0 en este orden 10) Leer 50 calificaciones de un grupo de alumnos. Suponga que los alumnos tienen diferentes promedios. . b). . El empleado necesita llevar un buen control de las copias solicitadas hasta el momento para decidir en forma rápida si los trabajos que se soliciten en el día se deben aceptar o no. 2. Diseñe un algoritmo que lea las calificaciones obtenidas en las 5 unidades por cada uno de los 40 alumnos y escriba la cantidad de ellos que no tienen derecho al examen de nivelación..000 votos otorgados a los 3 candidatos a gobernador e imprima el número del candidato ganador y su cantidad de votos. Diseñe un pseudocódigo que lea por cada cliente: a).calcule e imprima el IVA . c). Diseñe un pseudocódigo que lea las calificaciones obtenidas en las 5 unidades por cada uno de los 40 alumnos y escriba la cantidad de ellos que no tienen derecho al exámen de nivelación.. .-calcule e imprima el total a pagar. el monto total de su compra. 11) Leer por cada alumno de Diseño estructurado de algoritmos su numero de control y su calificación en cada una de las 5 unidades de la materia. Al final del día que escriba la cantidad total de ventas y el numero de clientes atendidos. el monto total de su compra.. Al final del día escriba la cantidad total de las ventas y el número de clientes atendidos..Suponga que tiene usted una tienda y desea registrar las ventas en una computadora.tiene que verificar que las copias pendientes hasta el momento y las copias solicitadas no excedan del limite de producción... 14) Suponga que tiene usted una tienda y desea registrar las ventas en su computadora. Diseñe un pseudocódigo que lea por cada cliente.Diseñe un diagrama que lea los 2. 4. 13) Leer los 250. Calcule y escriba el porcentaje de reprobados.500.El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen derecho al exámen de nivelación.el monto de la venta. Problemas Repetitivos Compuestos 1.000 votos otorgados a los 3 candidatos a gobernador e imprimir el numero del candidato ganador y su cantidad de votos. Si el limite de producción se excediera el trabajo solicitado no podría ser aceptado. 12) El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen derecho al examen de nivelación. 3.Suponga que tiene una tienda y desea registrar sus ventas por medio de una computadora. Al final que escriba el numero de control del alumno que obtuvo mayor promedio. Diseñe un algoritmo que lea por cada cliente. Tomando en cuenta que la calificación mínima aprobatoria es de 70. . Diseñar el pseudocódigo que determine ( y escriba ) el salario por cada semana y el salario pagado hasta la fecha por espacio de 50 semanas. SEN(X) = X . Desde una posición inicial.d)... Divorciado ) Diseñe un pseudocódigo estructurado que lea todos estos datos. etc.-empleado) Para calcular los pagos considerar lo siguiente: .soltero.Estado civil (a. $.2..Los obreros pagan 10 % de impuesto ...(X7/ 7!) + . 5. 2.Sexo 3.000 tarjetas cada una contiene la información del censo para una persona: 1.Edad 4. pero dobla su salario cada semana.Se ofrece un trabajo que pague un centavo en la primera semana.-obrero. Diseñe un pseudocódigo que calcule el valor de `L' dado ` n ` . 7. e imprima el número de censo de todas las jóvenes solteras que estén entre 16 y 21 años... 9. 6.-Diseñe un pseudocódigo que calcule e imprima el pago de 102 trabajadores que laboran en la Cía. Al final del día deberá imprimir la cantidad de dinero que debe haber en la caja. $. Viudo..Diseñe un pseudocódigo que lea el valor de un ángulo expresado en radianes y calcule e imprima el valor del seno de dicho ángulo.-Un jeep puede viajar 500 km con un tanque lleno de gasolína.. b.. e). 10.Número de censo.+ 1 / (2n -1) ) km Estableciendo economía de combustible en una ruta . conteniendo `n' tanques de gasolína el mismo jeep puede viajar: L = 500 ( 1 + 1/3 + 1/5 + .lea la cantidad con que paga el cliente. Casado.Los empleados pagan 10 % de impuesto. Los datos que se leerán serán los siguientes: a) Las horas trabajadas b) El sueldo por hora c) El tipo de trabajador (1.Modificar el pseudocódigo anterior de tal forma que no permita que la cantidad con la que paga el cliente sea menor a lo que debe pagar... 8.-calcule e imprime el cambio. Hasta $(2n-1)/100 la n. d.Se tiene un conjunto de 1..4 la tercera semana.02 la segunda semana...ésima . $0. GACMAN.( X 3 / 3 ! ) + ( X 5 / 5 ! ) . . es decir . .. Se leerá también el número de términos de la serie..01 la primera semana. c. -Al final se deberá imprimir el total a pagar a los trabajadores y a los empleados.000 4% 5.000. Automovilística Mexicana.Diseñar un pseudocódigo que convierta un número del sistema decimal a : a) sistema binario b)sistema octal c)sistema hexadecimal. Según se elija. 13... La cantidad de estudiantes que obtuvieron una calificación de 80 o más.000 <= v 6% Diseñar un pseudocódigo que lea las ventas de 100 vendedores y que escriba la comisión anual que le corresponda a cada vendedor.La cantidad de estudiantes que obtuvieron una calificación menor a 50. . 15..000. S.000.V premia anualmente a sus mejores vendedores de acuerdo a la siguiente tabla: Si vendió Le corresponde de Comisión sobre ventas totales 1.La cantidad de estudiantes que obtuvieron una calificación de 50 o más pero menor que 80.A..La cantidad de estudiantes que obtuvieron una calificación de 70 o más pero menor que 80. 1 a 30 ó 31.000 al año..DD.Un grupo de 100 estudiantes presentan un exámen de Física.000 5% 7. 14.000. 2 = martes.000. AA = Dos últimas cifras del año. Fijar el mes de febrero con 28 días.Los trabajadores (obreros y empleados) que reciban un pago menor de 100.. Diseñe un pseudocódigo que imprima cada décima de segundo la distancia entre el objeto y el suelo y al final imprima el tiempo necesario en décimas de segundo para que el objeto toque el suelo. En donde: S = Día de la semana.Diseñe un pseudocódigo que imprima la fecha en palabras a partir de la representación siguiente: S.. Suponer que nadie vende más de 10.MM. Diseñe un diagrama que lea por cada estudiante la calificación obtenida y calcule e imprima: A.000 pesos no pagan impuesto.).000 <= v < 3. DD = Día del mes. AA..000.000 <= v < 5. según el mes. D. de C. 11. etc. 1 a 7 ( 1 = lunes.000 <= v < 7.000.000 3% 3...000.Un objeto es dejado caer a una altura de 100 mts. B.La Cía. 12. C. Diseñar un pseudocódigo que calcule el promedio ponderado para alumno del ITT .1 Vectores 6. Diseñe un pseudocódigo que escriba cada segundo. dándole el tamaño y el numero de ingredientes extras.. De diámetro). De diámetro).000 mtrs.2 Matrices 6. De diámetro). hasta que estén a 10.000.5 veces el costo total. El proyectil sigue su curso.El resultado anterior se suma con los resultados de todas las materias. 17. mas el numero de ingredientes. y grandes (16 pulg. . la distancia que separa al avión del proyectil. acelerando a 10 mtrs.un costo fijo de preparación .Calcule la suma de los términos de la serie FIBONACCI cuyos valores se encuentran entre 100 y 10. Por simplicidad se supone que cada ingrediente extra tiene el mismo costo por unidad de área. o con ingredientes extras. el avión hace un giro de 90 0 y acelera a 20 mtrs/seg2. que viene determinado por el área de la pizza. o más. vende sus pizzas en tres tamaños: pequeña (10 pulg. CAPITULO VI.. en el momento del disparo. tales como pepinillos. Una pizza puede ser sencilla (con sólo salsa y carne). 18.Calcule exactamente el numero de días vividos por una persona hasta la fecha. 20.Un avión que viaja 800 Km/hr..Se multiplica cada calificación por los créditos de cada materia . El calculo se hace de la siguiente forma: .3 Manejo de cadenas de caracteres OBJETIVO EDUCACIONAL: El alumno:  Será capaz de utilizar los datos de tipo arreglo para plantear la solución de problemas que requieran de esta estructura. Dispara un proyectil autoimpulsado. mediana (12 pulg. por separado se suman los créditos de cada materia y finalmente se divide la suma de todas las materias por sus respectivos créditos. ARREGLOS 6..Una pizzería. El precio de venta será 1. Contemplar los años bisiestos.16.un costo adicional por cada ingrediente extra. 19.champiñones o cebollas Los propietarios desean desarrollar un programa que calcule el precio de venta de una pizza.un costo base variable que es proporcional al tamaño de la pizza .. En particular el costo total se calcula sumando: ./seg2. entre la suma de todos los créditos. Arreglo: Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a una colección de datos del mismo tipo. seguido del índice (entre corchetes). Para hacer referencia a esos elementos es necesario utilizar un índice que especifica el lugar que ocupa cada elemento dentro del archivo. Vectores Es un arreglo de “N” elementos organizados en una dimensión donde “N” recibe el nombre de longitud o tamaño del vector. Por ejemplo: Vec[x] Donde: Vec………… Nombre del arreglo x…………… Numero de datos que constituyen el arreglo Representación gráfica de un vector 7 8 9 1 0 Llenado de un Vector  Hacer para I = 1 a 10 Leer vec[I] Fin-para  Hacer mientras I <= 10 Leer vec[I] . el cual indica una posición en particular del vector. Para hacer referencia a un elemento del vector se usa el nombre del mismo.1. Unidimensionales (Vectores) Tipo de Arreglos Bidimensionales (Matrices) 6. Los arreglos se caracterizan por:  Almacenan los elementos en posiciones contiguas de memoria  Tienen un mismo nombre de variable que representa a todos los elementos. Fin-mientras  I=1 Repetir Leer vec[I] I=I+1 Hasta-que I>10 Problemas propuestos  Calcular el promedio de 50 valores almacenados en un vector. Búsqueda secuencial. Determinar además cuantos son mayores que el promedio.  Llenar dos vectores A y B de 45 elementos cada uno. e imprimir el vector resultante. cuantos son negativos.  Almacenar 500 números en un vector. Hacer un algoritmo que escriba la palabra “Iguales” si ambos vectores son iguales y “Diferentes” si no lo son. Imprimir además la suma de los negativos y la suma de los positivos. Imprimir el vector original y el vector resultante. Diseñe un algoritmo que escriba “SI” si el vector esta ordenado ascendentemente o “NO” si el vector no esta ordenado  Diseñe un algoritmo que lea un numero cualquiera y lo busque en el vector X.  Almacenar 150 números en un vector. almacenarlos en otro vector en orden inverso al vector original e imprimir el vector resultante.  Almacenar 300 números en un vector. imprimir cuantos son ceros.  Se tienen almacenados en la memoria dos vectores M y N de cien elementos cada uno. Escribir la posición donde se encuentra almacenado el numero en el vector o el mensaje “NO” si no lo encuentra.  Diseñe un algoritmo que lea dos vectores A y B de 20 elementos cada uno y multiplique el primer elemento de A con el ultimo elemento de B y luego el segundo elemento de A por el diecinueveavo elemento de B y así sucesivamente . el numero de datos mayores que el promedio y una lista de valores mayores que el promedio.  Se tiene el vector A con 100 elementos almacenados. Serán iguales cuando en la misma posición de ambos vectores se tenga el mismo valor para todos los elementos. elevar al cuadrado cada valor almacenado en el vector. cuantos positivos. sumar el elemento uno del vector A con el elemento uno del vector B y así sucesivamente hasta 45. imprimir el promedio. almacenar el resultado en un vector C. Suponga que todos los elementos del vector son diferentes. imprimir la posición y el valor del elemento mayor almacenado en el vector. almacenar el resultado en otro vector. el cual tiene almacenados 80 elementos.  Llenar un vector de 20 elementos. El resultado de la multiplicación almacenarlo en un vector C.4 4. donde se encuentra almacenado el dato.2 4.3 2.1 2. Mat [R.1 1.2 2. Representación gráfica de una matriz Mat [R.3 4.3 1.  Diseñe un algoritmo que almacene en un vector llamado FIB[100] los 100 primeros números de la serie fibonacci.4 3.C] Donde R indica el renglón y C indica la columna. Para representar una matriz se necesita un nombre de matriz se necesita un nombre de matriz acompañado de dos índices.4 2.4 Llenado de una matriz  Por renglones Hacer para R = 1 a 5 Hacer para C = 1 a 5 Leer Mat [R.hasta llegar al veinteavo elemento de A por el primer elemento de B.C] 1.1 4. 6.C] Fin-para Fin-para .1 3.2 3.2 1.C] Fin-para Fin-para  Por columnas Hacer para C = 1 a 5 Hacer para R = 1 a 5 Leer Mat [R.2 Matriz Es un arreglo de M * N elementos organizados en dos dimensiones donde “M” es el numero de filas o reglones y “N” el numero de columnas.3 3.  Hacer un algoritmo que llene una matriz de 6 * 8 y que almacene toda la matriz en un vector. Sumar las columnas e imprimir que columna tuvo la máxima suma y la suma de esa columna.  Hacer un algoritmo que llene una matriz de 10 * 10 y que almacene en la diagonal principal unos y en las demás posiciones ceros. Los datos de entrada son : a) El numero de la tienda (1 a 50) b) Un numero que indica el deporte del articulo (1 a 20) c) El costo del articulo. El .  Hacer un algoritmo que llene una matriz de 10 * 10 y determine la posición [renglon . Calcular la suma de cada renglón y almacenarla en un vector. Imprimir el vector resultante.  Hacer un algoritmo que llene una matriz de 7 * 7. 12) El departamento de policía de la ciudad de Tuxtepec ha acumulado información referente a las infracciones de los límites de velocidad durante un determinado periodo de tiempo.  Hacer un algoritmo que llene una matriz de 20 * 20. cuantos son positivos y cuantos son negativos. la suma de cada columna y almacenarla en otro vector.  Hacer un algoritmo que llene una matriz de 5 * 5 y que almacene la diagonal principal en un vector. Las ventas totales en el día para cada tienda 2. que almacene la suma de los renglones y la suma de las columnas en un vector.Las ventas totales para cada uno de los deportes.Nota: Para hacer el llenado de una matriz se deben de usar dos variables para los índices y se utilizan 2 ciclos uno para los renglones y otro para las columnas. Las ventas totales de todas las tiendas. Problemas propuestos  Hacer un algoritmo que almacene números en una matriz de 5 * 6. Imprimir la suma de los números almacenados en la matriz. Suponga que todas las hileras suman diferente cantidad. a estos ciclos se les llama ciclos anidados (un ciclo dentro de otro ciclo). Los números son diferentes. 11) El dueño de una cadena de tiendas de artículos deportivos desea controlar sus ventas por medio de una computadora .  Hacer un algoritmo que llene una matriz de 5 * 6 y que imprima cuantos de los números almacenados son ceros.  Hacer un algoritmo que llene una matriz de 8 * 8. Imprimir el vector resultante. 3. Imprimir el vector resultante. 10) Diseñe un pseudocódigo que escriba el numero de la hilera cuya suma sea mayor que las demás hileras. Hacer un pseudocódigo que escriba al final del día lo siguiente 1.columna] del numero mayor almacenado en la matriz. cuadrante en el que se produjo la infracción .El (o los) numero (s) de control de lo(s) alumno(s) que haya (n) obtenido la máxima calificación final.250 por cada mph que exceda la velocidad limite. C)..3 Manipulación OBJETIVO EDUCACIONAL: El alumno:  Identificará y aplicara los datos de tipo cadena de caracteres (string) para la solución de problemas de tipo administrativo. debe darse el numero de infracciones y la multa promedio. MANEJO DE MÓDULOS 7.5) la cuál contiene la información sobre las calificaciones de la materia de LENGUAJES ALGORITMICOS . .departamento ha dividido la ciudad en cuatro cuadrantes y desea realizar una estadística de las infracciones a los límites de velocidad en cada uno de ellos. Que contiene una lista de la multa de velocidad recolectadas.1 Definición 7. Para cada infracción se ha preparado una tarjeta que contiene la siguiente información: . Para cada uno de los 4 cuadrantes mencionados.2 Función 7..1 Definición.. CAPITULO VII. donde la multa se calcula como la suma del costo de la corte ($20.Cantidad de alumnos que aprobaron la materia. el 1o.limite de velocidad en milla por hora Diseñe un diagrama para producir 2 informes. 6.numero de registro del vehículo. B).000) mas $ 1. Prepare una tabla con los siguientes resultados: INFRACCIONES A LOS LIMITES DE VELOCIDAD Registro del Velocidad Velocidad Multa vehículo registrada (MPH) limite Este informe debe ser seguido de un segundo en el cual se proporcione un análisis de las infracciones por cuadrante. 13) Se tiene almacenada la matriz M (50. Función y Manipulación . Diseñe un pseudocódigo que imprima: a).Cantidad de alumnos que tienen derecho a nivelación. este ejecuta una tarea especifica y devuelve el “control” al programa que lo llamo).pn ……. P1. Funciones Tipos de Módulos Procedimientos Función: Una función en matemáticas.p2. Llamado a una función Cuando definimos una función solo le indicamos al algoritmo que esta función existe. sin embargo.. Es el grupo de parámetros que define a la función. es una operación que toma un o mas valores (argumentos) y devuelve un resultado (valor de la función para los argumentos dados). Un subprograma realiza las mismas acciones que un programa. Nombre de la función X …………. Es el argumento (también conocido como parámetro formal) Definición de funciones: Una definición de función se presenta de la siguiente manera: Función nombre_funcion (p1... Por ejemplo: F(X) = X / (1+X2) Donde: F …………. Es el identificador con el cual se reconoce a la función en el cuerpo del algoritmo principal. pn) Inicio Bloque de instrucciones Fin Donde: Función …………… Es la palabra clave que nos indica una definición de función. Para hacer uso de una función.….. Estos subproblemas se conocen como “Módulos” y su complementacion en un lenguaje se llama subprograma (procedimientos y funciones). Un subprograma recibe datos de un programa y le devuelve resultados (el programa “llama” o “invoca” al subprograma. Por ejemplo: Función F(X) . p2.Un problema complejo se puede dividir en pequeños subproblemas mas sencillos. pero una definición de función no implica la realización de las instrucciones que la constituyen. un subprograma lo utiliza solamente un programa para un propósito especifico. …. Nombre_funcion …. el algoritmo principal la debe llamar. 1 Introducción solución de problemas por medio de . .Inicio F = X /(1 + X^2) Fin Inicio Imprimir “Este es el algoritmo principal” Leer N R = F(N) llamado de la función Imprimir “El resultado de la función es:”.2 Definición de lenguaje 1. TEMAS SUBTEMAS I Conceptos básicos y Metodología para la 1.5 Definición de lenguajes algoritmicos 1.  Diseñe un algoritmo que lea un numero y mediante una función regrese el valor de 1 si el numero es positivo y -1 si es negativo).De los problemas a los programas computadoras.3 Definición de algoritmo 1. APENDICE NOMBRE DE LA ASIGNATURA: DISEÑO ESTRUCTURADO DE ALGORITMOS NUM.R Fin Problemas Propuestos  Diseñe un algoritmo que llene una matriz de 10 * 10 y determine:  El numero mayor almacenado en la matriz  El numero mayor almacenado en cada renglón  La columna que tuvo la máxima suma  El renglón que tuvo la máxima suma Diseña una función para cada inciso.4 Algoritmos cotidianos 1.Breves practicas de programación 1.6 Metodología para la solución de problemas por medio de . 3 Operadores y operandos 2.2 Matrices 6.12 Documentación 1.10 Codificación 1.1 Tipos de datos algoritmos 2.3 Repetición fila condicional VI Arreglos 6.1 Definición .4 Identificadores como localidades de memoria III Técnicas de diseño 3.1 Top down 3.9 Diseño del algoritmo 1.8 Análisis del problema 1.Salida 5.1 Vectores 6.1 Diagrama de flujo algoritmos 4.Entrada .3 Manejo de cadenas de caracteres VII Manejo de módulos 7.2 Pseudocodigo 4.7 Definición del problema 1.2 Bottom up IV Técnicas para la formulación de 4.Simples .2 Expresiones 2.13 Mantenimiento II Entidades primitivas para el desarrollo de 2.11 Prueba y depuración 1.1 Secuenciales .3 Diagrama estructurado (nassi-schneiderman) V Estructuras algoritmicas 5.Asignación .2 Condicionales .computadora 1.Múltiples 5. 7. "Metodología de la programación" Mc Graw Hill JOYANES Aguilar Luis. "Programación estructurada (enfoque algoritmico)" Computec 4 CONDICION CUERPO DEL CICLO CUERPO DEL CICLO SI CONDICION Diseño de algoritmos Este artículo o sección necesita referencias que aparezcan en una publicación acreditada. "Introducción a la computación y a la programación estructurada" Mc Graw Hill JOYANES Aguilar Luis. Edición)" Mc Graw Hill Levine Guillermo. "Computación. Puedes añadirlas así o avisar al autor principal del artículo en su página de discusión pegando: {{subst:Aviso referencias|Diseño de algoritmos}} ~~~~ . "Desarrollo de algoritmos y sus aplicaciones en Basic. "Fundamentos de programación. Bunt Richard. Metodología. "Fundamentos de programación. lógica computacional y programación" Mc Graw Hill LOZANO Letvin. "Introducción a la ciencias de las computadoras (enfoque algoritmico)" Mc Graw Hill JOYANES Aguilar Luis. Pascal y C (3ª. Luis Rodríguez Baena y Matilde Fernández Azuela.3 Manipulación BIBLIOGRÁFIA JEAN Paul Tremblay. algoritmos y estructura de datos" Mc Graw Hill JOYANES Aguilar Luis. como revistas especializadas. "Diagramación y programación estructurada y libre" Mc Graw Hill LOPEZ Roman Leobardo. prensa diaria o páginas de Internet fidedignas. libro de problemas" Mc graw Hill Bores Rosario. Rosales Roman. "Problemas de metodología de la programación" Mc Graw Hill CORREA Uribe Guillermo. B. monografías.2 Función 7.  Algoritmos no determinísticos: El comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores.  Metaheurísticas: encuentran soluciones aproximadas (no óptimas) a problemas basándose en un conocimiento anterior (a veces llamado experiencia) de los mismos. almacenando las soluciones menos costosas. logrando así la solución al problema completo. .  Algoritmos probabilísticos: algunos de los pasos de este tipo de algoritmos están en función de valores pseudoaleatorios  Algoritmos determinísticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro ancesor. [editar]Técnicas de Diseño de algoritmos Existen varias técnicas de diseño de algoritmos que permiten desarollar la solución al problema planteado.  Divide y vencerás: dividen el problema en subconjuntos disjuntos obteniendo una solución de cada uno de ellos para después unirlas.  Algoritmos paralelos: permiten la división de un problema en subproblemas de forma que se puedan ejecutar de forma simultánea en varios procesadores. el diseño de algoritmos es un método especifico para poder crear un modelo matemático ajustado a un problema específico para resolverlo.En ingenieria del software. En la mayoría de los casos la solución no es óptima.  Ramificación y acotación: se basa en la construcción de las soluciones al problema mediante un árbol implícito que se recorre de forma controlada encontrando las mejores soluciones. algunas de ellas son:  Algoritmos voraces (greedy): seleccionan los elementos más prometedores del conjunto de candidatos hasta encontrar una solución. El diseño de algoritmos es una teoría de la Investigación de operaciones. además todas las ramas se ejecutan simultáneamente.  Programación dinámica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial.  Vuelta Atrás (Backtracking): se construye el espacio de soluciones del problema en un árbol que se examina completamente. mediante una variante de seudo código que permite luego la implementación de los algoritmos en diferentes lenguajes de programación y al análisis de los mismos. sensibilidad y condicionamiento de los algoritmos. 2. Análisis de los algoritmos 4.ntroducción al diseño y análisis de los algoritmos Enviado por sar Anuncios Google estructura y programacion Si buscas material de computacion y afines Consulte Aqui www. www. La segunda parte esta dedicada al análisis de complejidad. hospitales. Introducción Por "Informática" se entiende la ciencia que estudia los procesos de transmisión. 2 pagos de US$ 99 Inscríbete Ahora! Capacityacademy. acumulación y tratamiento de la información. 2. El término fue . edificios. 3 1. Bibliografía Básica La presente monografía presenta en una primera parte una introducción al diseño de los algoritmos.com Partes: 1.estructurayprogramacion. Diseño de algoritmos 3.com/Curso-de-Java Gestión de mantenimiento.wgmsa.com Curso Online de Java Aprende a programar en Java J2EE. Gestión integral de mantenimiento industria. introducido por los franceses, "Informatique", a fines de los años 60 del siglo pasado, aunque antes los norteamericanos habían introducido el término "Computer Science" para asignar la ciencia sobre la transformación de la información, basada en las técnicas de cómputo. Hoy ambos términos se emplean como equivalentes. El concepto de Informática abarca las esferas ligadas con la elaboración, creación, empleo y mantenimiento material y técnico de los sistemas de procesamiento de la información, lo que incluye el hardware y el software, los aspectos de organización y sus efectos: industriales, de servicio, comerciales, sociales y políticos. La Informática queda constituida por cuatro componentes vinculados indisolublemente: información, algoritmo, software y el hardware. Observación 1: El material que se presenta está dedicado al segundo de estos componentes el " Algoritmo ". El desarrollo alcanzado por la Informática, su utilización en todas las esferas de la actividad humana, hace necesario la búsqueda de nuevos y más eficientes algoritmos. La disciplina que estudia los algoritmos en todos sus aspectos se ha nombrado " Algorithmique" por Donald Knuth, en un textofrancés de 1976. Pero la comunidad internacional ha aceptado el término " Algorítmica ". Diseño de algoritmos I.1 Noción de algoritmo: En el estudio del Cómputo (la Informática en general), las siguientes preguntas se presentan desde el primer momento: ¿Qué problemas pueden ser resueltos por un algoritmo (programa) de cómputo? ¿Qué soluciones pueden ser obtenidas eficientemente en la práctica? Estas preguntas parecen ser lo suficientemente vagas para no permitir una respuesta exacta. Por lo tanto de intentar dar una respuesta a las mismas debemos definir, de manera precisa, ¿qué entendemos por algoritmo?, ¿qué agente de cómputo vamos a emplear para ejecutar el algoritmo que resuelve el problema planteado?, ¿cómo nosotros mediremos la efectividad práctica de las soluciones? El concepto de algoritmo procede del nombre del matemático del Asia Central Al-Jwarizmi en el siglo IX, se empleaba en las matemáticas de la época para designar las reglas de las cuatro operaciones aritméticas, convirtiéndose en una de las nociones básicas de la Matemática. En nuestros días este concepto es usado en muchas esferas de la actividad humana. Antes de dar la noción de algoritmo aclaremos el término agente de cómputo (procesador de la información): es un medio, cuya tarea es: dada una data inicial, ejecutar las reglas del algoritmo paso a paso, hasta obtener la data final (resultados), este puede ser humano, mecánico, electrónico, etc. La definición de algoritmo puede ser más específica, pero de manera informal (intuitiva) puede ser enunciado como sigue: Un algoritmo es un procedimiento finito y sistemático, para procesar información simbólica discreta por un agente de cómputo, paso a paso y sin ambigüedad. La noción intuitiva de algoritmo por su vaguedad y falta de rigor no puede ser aceptado como una definición formal, por lo que ha sido objeto de estudio continuo de la comunidad de investigadores. Las tareas típicas del algoritmo fueron: el cálculo numérico, los problemas de ordenamiento y búsqueda. En nuestros días sus esferas se han extendido a la solución de problemas de las más variadas áreas de la actividad humana (la ciencia, la producción, los servicios, etc.) En la teoría clásica de la Informática se consideran dominios de información discretos. El caso de conjuntos de información continua ha sido extendido recientemente por Blum, Shub y Smale (1989). Esta nueva extensión teórica representa un desarrollo importante que extiende los conceptos de recursividad y complejidad a nuevos campos matemáticos como el análisis y la topología. Observación 2: Nosotros excluiremos el caso en que la información a procesar es un conjunto continuo. A lo largo de la historia muchos problemas han sido resueltos mediante técnicas de cómputo. Sin embargo, un estudio sistemático de los algoritmos sólo se ha desarrollado a partir de las últimas décadas del pasado siglo. Dos hecho han contribuido substancialmente al crecimiento de estos estudios. Uno es el estudio de la definición formal de algoritmo a partir de 1936, precedido por los resultados en los estudios de la lógica matemática de finales del siglo XIX. El otro es el desarrollo alcanzado por las computadoraselectrónicas, cuyo uso ha invadido toda la actividad humana lo cual ha requerido de estudios profundos para lograr un uso eficaz de las mismas. Introducción al diseño y análisis de los algoritmos (página 2) Enviado por sar Partes: 1, 2, 3 Estos hechos han dado lugar al desarrollo de dos direcciones en el estudio de los algoritmos: el diseño (determinar los procedimientos adecuados para resolver el problema con el agente de cómputo de que disponemos) y la teoría de la complejidad algorítmica (estudio de la eficiencia, costo en tiempo y recursos con que el agente de cómputo ejecuta un algoritmo que resuelve el problema). En principio, dado un problema puede determinarse un algoritmo que lo resuelva, si este puede ser formulado de manera lógica, tal que el agente de cómputo sea capaz de comprenderlo y controlar su ejecución paso a paso. Un algoritmo responde a la ecuación ALGORITMO = LOGICA + CONTROL. ésta es una idea importante, según la cual la tarea fundamental del programador es formular lógica y apropiadamente el problema para que la solución sea buscada mediante un algoritmo. ¿Cómo debe el programador formular el problema? Esta es realmente una tarea de gran complejidad, siendo necesario realizar investigaciones teóricas y experimentales que permitan desarrollar metodologías y formalismos para enfrentar con éxito problemas de gran importancia práctica. 2. D = {0. es decir. los alfabetos de los distintos idiomas en que nos comunicamos. 0}. Entonces a w le corresponde un número natural que es igual a la suma de los pesos de los caracteres que lo componen. para B. a2=1. 2. 1. 5. 1} Palabras representadas mediante los elementos de los alfabetos D y B: wD = 21654. Determinemos el número natural que le corresponde a la palabra w. lo que. Numeremos los caracteres de w con los números enteros no negativos (comenzando por el cero). 0101=0x23+ 1x22+ 0x2+ 1x20=5 .s0} = {3. 3. r2} = {1. s = {s3. r expresa el cardinal del símbolo del alfabeto. wB = 0101. La numeración k-adica asocia a cada palabra un único número entero no negativo.…. la hace diferente a la representación usual en la base k (por ejemplo en la base usual 2 las palabras 0101 y 101 responden ambas al número 5). 6.I. k = 10. sea w = 0101 una palabra formada por los caracteres del alfabeto B. 1. 0. sistema binario B. denotemos por W(A) el conjunto de todas las palabras formadas con los elementos de A. a2. B = {0.2}. a1=0. donde. tal que w€W(A).. r = {r1. numeremos la posición de cada carácter (símbolo) de w comenzando por la derecha. Ejemplo 1: Como alfabeto podemos tener el sistema decimal D.. 9}. Dado un alfabeto A = {a1. a2} un alfabeto. 8. la numeración 2-ádica para la palabra w: r1xkS3 + r2xkS2 + r1xkS1 + r2xkS0 =1x23+ 2x22+ 1x2+ 2x20=20. k = 2). W(A) es un conjunto infinito numerable. s2. los lenguajes: La información se transmite por los canales mediante palabras (sucesión finita de elementos de un alfabeto:conjunto finito no vacío de símbolos). las palabras..2 Los alfabetos. 1. 4. s1. an}. El número de símbolos de la información se llama longitud de la información. Sea w una palabra no vacía (las palabras vacías son asociadas con el cero). entonces si el carácter ar de w se encuentra en la posición s le asignamos un peso igual a r x ks. 2. es decir existe una biyeccion entre W(A) y el conjunto de los números naturales (N). 7. Esta correspondencia se llama numeración kádica. Ejemplo 2: Sea B = {a1. por k tomamos el numero de elementos del alfabeto (por ejemplo para el alfabeto D.. de derecha a izquierda. mostrando de forma precisa las instrucciones que el agente de cómputo debe ejecutar. es una función inyectiva R: M ® W(A). Sólo requeriremos que todos sean finitos. . el lenguaje completo. es que el mismo debe ser eficaz. el algoritmo proporciona al agente de cómputo un método sistemático (función) que transforma las palabras w€LM en otras palabras de LM. que asocia a cada símbolo s€M una palabras w€W(A). Asumamos que existe algún agente de cómputo eficaz. es decir. Dado un alfabeto A. un lenguaje asociado a M. una representación de M sobre el alfabeto A.101=1x22+ 0x2+ 1x20=5 El conjunto de las palabras definidas sobre un alfabeto se llama lenguaje sobre este alfabeto. La sucesión de instrucciones del procedimiento de cómputo puede depender de los datos de la entrada. así como de los resultados. Dado un conjunto discreto de símbolos no vacío M. No se definirá a priori límite en el tamaño de los datos de la entrada e intermedios a procesar. su tarea es realizada mediante un número finito de pasos elementales (instrucciones). pero nunca se determinarán de manera aleatoria o arbitraria. que proporcione una notación formal conveniente. las reglas deben ejecutarse de modo preciso sin ambigüedades. gL: LM ® LM una función que transforma las palabras w€LM en otras palabras de LM. sucesión de instrucciones) a ejecutar por el agente de cómputo tienen que ser finitas. En resumen todos los elementos del procedimiento de cómputo (datos. LM Í W(A). y en que orden deben realizarse. es decir. pero siempre tiene que ser una sucesión finita. sobre el pueden definirse como lenguajes particulares: el vacío O. donde M es un conjunto discreto no vacío de símbolos. LM. LM= {w: w€W(A) y w =R(s) para algún s€M} Ahora podemos dar una definición rigurosa (formal) de algoritmo: Definición 1: Un algoritmo A no es más que una terna (M. El procedimiento de cómputo a ejecutar por el agente de cómputo puede contener cualquier número de instrucciones. La función R asocia al conjunto M el lenguaje LM sobre A. I. en un tiempo prudencial. y W(A). que no contiene palabra alguna. gL). según las reglas especificadas. En otras palabras. LM = Im(R) Í W(A).3 Requisitos básicos de los algoritmos: El requisito básico que debe cumplir un algoritmo. que contiene todas las posibles palabras sobre A. la condición de terminación no es suficiente. mputoue los mismos sean ejecutados por el agente de come forma clara ebe ejecutar e los caracteres Cualquiera que sea la representación que se adopte para escribir un algoritmo. I. para definir cuan eficaz es un algoritmo. la misma debe cumplir los requisitos siguientes: a) El algoritmo debe ser comprensible para el agente de cómputo b) La longitud del algoritmo es finita. etc. ejecutable sin ambigüedad en un tiempo finito.Como hemos planteado los algoritmos deben ser escritos de forma clara. en un tiempo finito. Nosotros emplearemos el seudo-código. En la práctica. este transforma los valores de algunas magnitudes (vamos a considerar la magnitudes definidas en el conjunto de los números reales). Estas magnitudes tienen un nombre identificador: secuencia de símbolos que comienza con una letra que las identifica. e) El algoritmo debe terminar para todos los datos de entrada aceptados. los procesa y produce los resultados como datos de salida. designa un paso del tratamiento o la representación de la información de cualquier algoritmo. la eficacia de un algoritmo significa que el agente de cómputo transforma los valores de la data inicial haciendo uso de los recursos y el tiempo de ejecución de forma eficaz. Como se ha expresado. Las magnitudes se clasifican en constantes y variables (simples y dimensionales). hasta obtener los valores de la data final. Las instrucciones definen la unidad estructural. al ejecutar un algoritmo.4 Estructuras de los algoritmos: La representación (escritura) de los algoritmos está directamente relacionada con el agente de cómputo que va a ejecutarlo: gráfico. Los valores de las constantes permanecen invariables. mientas que los valores de las variables . con las cuales opera el algoritmo. este queda definido por un sistema de reglas (instrucciones) para la escritura de los algoritmos. sin ambigüedades. d) El algoritmo recibe los datos de entrada. para que los mismos sean ejecutados de manera eficaz por el agente de cómputo. seudo-código. lenguaje de programación. una representación intermedia entre el lenguaje natural y los leguajes de programación. c) Cada paso del algoritmo indica una operación. El valor de una variable se puede cambiar con ayuda de una instrucción de asignación. b. Como es conocido un triángulo solamente admite una clasificación de acuerdo a la dimensión de sus lados. [ variable 3] Ejemplo 5: Salida P Un elemento útil es el uso de comentarios dentro del algoritmo. se desea clasificarlo en: equilátero. [identificador] = [expresión] [expresión] define una función o constante Ejemplo 3: Perímetro de un triángulo dados sus lados. Entrada [variable 1]. // [ comentario] Ejemplo 6: Calcular el perímetro de un triángulo. [ variable 2]. b. isósceles. [ variable 3] Ejemplo 4: Entrada a. dado sus lados: //Cálculo el perímetro de un triángulo. c También existe la instrucción análoga de salida. c // lados del triángulo P=a+b+c Salida P // perímetro de un triángulo //Fin del algoritmo Analicemos ahora el siguiente problema: Dados los lados de un triángulo.cambian. por lo que estamos en presencia de la selección . Salida [variable 1]. P = a +b +c P = 20 A la variable puede asignarse un valor con ayuda de la instrucción de entrada que transmite el valor de las variables a partir de cierta fuente exterior. [ variable 2]. Entrada a. escaleno. escaleno. isósceles. o. <. Ejemplo 7: Dados los lados de un triángulo se desea clasificarlo en: equilátero. c // lados del triángulo Si a = b y b = c Entonces . no). como se expresa a continuación. =) unidos con los operadores lógicos: y. es decir. como se presenta en el ejemplo siguiente. un triángulo es isósceles si dos de sus lados son iguales.de alternativas: Un triángulo se define como equilátero si la dimensión de sus lados son iguales. Para expresar la anterior situación se emplea la instrucción de bifurcación (condicional). a = b o b = c o a = c. >. escaleno. es escaleno si sus lados son diferentes a ≠ b y b ≠c y a ≠ c. Si [relación de oprden1] (operador lógico) [ relación de orden 2] Entonces [ instrucción 1] [ instrucción 2] : Sino [ instrucción 1]. [ instrucción 2] : Fin Si Cuando se ejecuta la instrucciones de bifurcación se realiza solamente un bloque de instrucciones: si las condiciones se cumplen se ejecutan las instrucciones que aparecen después de la palabra reservada Entonces. // Clasificar un triángulo en: equilátero. Dentro de las instrucciones pueden aparecer otras instrucciones de bifurcación. b. la cual efectúa la elección de las instrucciones a ejecutar en función del cumplimiento de un conjunto de condiciones (en general estos pueden ser relaciones de orden (≤. ≥. ≠. es decir. en caso de no cumplirse la condición se ejecutan las instrucciones que aparecen después de la palabra reservada Sino. Entrada a. isósceles. por la propiedad de transitividad a = c. a = b = c. c1). cuyos elementos son ternas (vectores de R3). cn) } Para resolver el problema planteado definiremos la instrucción de iteración (repetitiva o cíclica) con contador: Para [ contador]=[ valor inicial] hasta [ valor final] (paso) [ instrucción 1] [ instrucción 2] : Próximo [ nuevo valor del contador] El contador toma un valor inicial y se ejecutan las instrucciones que se encuentra entre las palabras reservadas Para-Próximo (ciclo). se desea conocer cuantos triángulos equiláteros. b2. La nueva situación nos presenta un conjunto finito o lista determinada de elementos (se conoce de antemano la cantidad de elementos que la componen). Al llegar a la palabra reservada Próximo el contador se incrementa de acuerdo al valor del . c2). bn.…. b1. isósceles y escalenos contiene el conjunto. //Fin del algoritmo Veamos una nueva situación: Se tiene un conjunto que contiene los lados de n triángulos. (an. (a2.Clas = triángulo equilátero Sino Si a = b o b = c o a = c Entonces Clas = triángulo isósceles Sino Clas = triángulo escaleno Fin Si Fin Si Salida Clas // clasificación del triángulo. Lo anterior puede ser representado de la forma siguiente: sea un conjunto finito T. T= { (a1. Hasta el momento fuimos capaces de clasificar un triángulo dado sus lados. CES = 0. isósceles y escalenos. Próximo I Salida CEQ. c // lados del triángulo Si a = b y b = c Entonces Clas = triángulo equilátero CEQ = CEQ +1 Sino Si a = b o b = c o a = c Entonces Clas = triángulo isósceles CIS= CIS+1 Sino Clas = triángulo escaleno CES = CES +1 Fin Si Fin Si Salida Clas // clasificación del triángulo. b. isósceles y escalenos Entrada n // total de triángulos a clasificar CEQ = 0. contiene un conjunto de n triángulos. Este proceso se repita hasta que el contador alcance el valor final. CIS. isósceles y escalenos //Fin del algoritmo . Ejemplo 8: Se desea conocer cuantos triángulos equiláteros. CIS = 0 // valores iniciales de los contadores Para I =1 hasta n Entrada a. // Determinar total de triángulos equiláteros. CES // total de triángulos equiláteros.paso (cuando no se define se asume como 1). si esta se satisface se ejecutan las instrucciones que se encuentran entre las palabras reservadas Mientras-Fin Mientras (ciclo). c =32. CES = 0. Ejemplo 9: Se tiene un conjunto finito triángulos. Determine cuantos triángulos equiláteros. estas se van a repetir hasta que la condición deje de satisfacerse. b = 12. En estos casos es necesario emplear la instrucción de iteración con condición Mientras [relación de orden1] (operador lógico) [ relación de orden 2] [ instrucción 1] [ instrucción 2] : Fin Mientras Al principio se prueba la condición que aparece después de la palabra reservada Mientras.5. // Determinar total de triángulos equiláteros. Para esto es necesario que las instrucciones que se ejecutan dentro del ciclo influyan en la condición. b.2 y c ≠ 32 Si a = b y b = c Entonces Clas = triángulo equilátero CEQ = CEQ +1 Sino Si a = b o b = c o a = c Entonces Clas = triángulo isósceles . isósceles y escalenos CEQ = 0. contiene el conjunto. isósceles y escalenos. solamente se conoce una condición que determina el final de la lista (último elemento). se conoce que el último triangulo es escaleno y las dimensiones de sus lados son: a = 27. CIS = 0 Entrada a.5 y b ≠12.Hay problemas en que se desconoce el tamaño de la lista (lista indeterminada) que va hacer procesada.2. c // valores iniciales de los contadores // lados del triángulo Mientras a ≠ 27. isósceles y escalenos Entrada n // total de triángulos a clasificar CEQ = 0. b. como se muestra a continuación. y escribamos el algoritmo empleando la instrucción iterativa condicionada. CIS = 0 I=0 // valores iniciales de los contadores // valor inicial para el contador del ciclo Mientras I ≠ n Entrada a.CIS= CIS+1 Sino Clas = triángulo escaleno CES = CES +1 Fin Si Fin Si Salida Clas // clasificación del triángulo. isósceles y escalenos //Fin del algoritmo No es difícil ver que una lista determinada puede ser tratada con la instrucción iterativa condicionada. CIS. CES = 0. CES +1 // total de triángulos equiláteros. Retomemos el problema del ejemplo 8. // Determinar total de triángulos equiláteros. c Fin Mientras Salida CEQ. Entrada a. c // lados del triángulo Si a = b y b = c Entonces Clas = triángulo equilátero CEQ = CEQ +1 Sino Si a = b o b = c o a = c Entonces . b. ejemplo: A(I). es decir. J) estas almacenan un número de elementos igual al producto de los máximos valores de los índices). En la generalidad de los casos se conoce el máximo valor de los índices. las variables con un índice A(I). Ejemplo 10: Determinar la suma de todos los elementos positivos de una matriz n x n. la posición de los elementos queda definida por los valores de los índices. CES // total de triángulos equiláteros.4. los vectores y las matrices. // Suma de los elementos positivos de una matriz. Salida CEQ.1 Variables dimensionales (arreglos). CIS. J)). Las variables dimensionales (variables con índices. Entrar n // número de filas y columnas de la matriz . Algoritmos subor-dinados. almacenan tantos valores como el valor máximo que toma el índice (en el caso de la variable bidimensional B(I. B(I. Las variables dimensionales tienen sus antecedentes en los entes matemáticos. siendo muy usada la instrucción iterativa con contador para operar con las variables con índices (lo anterior no significa que no sea utilizada la instrucción iterativa con condición). describen las estructuras compuestas de un conjunto de elementos ordenados conforme al valor de los índices. isósceles y escalenos //Fin del algoritmo I.Clas = triángulo isósceles CIS= CIS+1 Sino Clas = triángulo escaleno CES = CES +1 Fin Si Fin Si I=I+1 Fin Mientras Salida Clas // clasificación del triángulo. A diferencia de las variables simples (cada variable simple almacena un sólo valor). Entrar n // número de filas y columnas de la matriz Sum = 0 //valor inicial de la suma I = 1.J) > 0 Entonces Sum = Sum +A(I .J) Fin Si Próximo J // próximo valor del índice por las columnas Próximo I // próximo valor del índice por las filas Salida Sum //valor final de la suma //Fin del algoritmo Mostraremos ahora como realizar el algoritmo anterior. // Suma de los elementos positivos de una matriz.J) > 0 Entonces Sum = Sum +A(I . si se emplea la instrucción iterativa condicional para definir el ciclo.Sum = 0 //valor inicial de la suma Para I =1 hasta n // inicio del ciclo para el índice de las filas Para J =1 hasta n // inicio del ciclo para el índice de las columnas Entrar A(I . J = 1 // valores iniciales de los índices de las columnas y las filas Mientras I ≠ N Mientras J ≠ N Entrar A(I .J) // entrada de los elementos de la matriz por filas Si A(I .J) Fin Si J =J +1 Fin Mientras .J) // entrada de los elementos de la matriz por filas Si A(I . separados por comas. De tal modo al construir el algoritmo. Luego de la palabra reservada Llamada se escribe un nombre el cual identifica al algoritmo subordinado. se llaman algoritmos auxiliares o subordinados. éste puede incluirse en el algoritmo en desarrollo. y los resultados que se obtienen en el algoritmo subordinado y son transferidos al algoritmo principal). habitualmente se trata de dividir todo el problema en subproblemas más simples. Los algoritmos acabados. a continuación la lista de de parámetros entre paréntesis separados por coma en el mismo orden en que aparecen la llamada. la lista de parámetros entre paréntesis. y si para algún subproblema ya existe el algoritmo.I = I +1 Fin Mientras Salida Sum //valor final de la suma //Fin del algoritmo Con frecuencia al desarrollar un algoritmo. Esto permite no repetir el trabajo ya realizado. para llamar un algoritmo subordinado desde el algoritmo principal. incluidos por completo en el algoritmo que se elabora. indicándose el nombre de los parámetros de entrada y salida (los parámetros que son transferidos desde el algoritmo principal al algoritmo subordinado. El empleo de los algoritmos subordinados provoca la necesidad de formalizarlos de modo especial para poder invocarlos en el algoritmo principal. se desea conocer: a) El valor máximo de la sucesión de perímetros. nosotros utilizaremos la instrucción de llamada al algoritmo subordinado. Llamada [nombre] [ (Lista de parámetros) ] La ejecución de la instrucción de llamada al algoritmo subordinado equivale a la ejecución del algoritmo subordinado. economizar el tiempo. // Algoritmo Principal Triángulos Entrada n // total de triángulos . b) Cuantos triángulos equiláteros. resulta posible aprovechar los algoritmos elaborados antes. y el algoritmo en que ellos se incorporan se llama algoritmo principal o fundamental. Ejemplo 11: Dado un conjunto de n triángulos. estos deben aparecer en el mismo orden. Los algoritmos subordinados se escriben al final del algoritmo principal y su nombre tiene que coincidir con el nombre que aparece en la instrucción de llamada al algoritmo subordinado. isósceles y escalenos contiene el conjunto. CES = 0. CIS) Próximo I Salida Max //valor del perímetro máximo Salida CEQ. P) P=a+b+c //Fin Algoritmo Auxiliar //Algoritmo Auxiliar Máximo MaxPer (P.P = 0 // valores iniciales de los contadores //valor inicial del perímetro máximo. c // lados del triángulo Llamada CalPer (a. P) Llamada MaxPer (P. Max) Llamada ConTipoTrian (a. c. isósceles y escalenos //Fin del Algoritmo Principal //Algoritmo Auxiliar Calculo Perímetro CalPer (a. CEQ. CIS) Si a = b y b = c Entonces . b. c. b. CES. CIS = 0 Max = 0 . CES. b. b. c. c. CES // total de triángulos equiláteros. CEQ. b.CEQ = 0. Max) Si P > Max Entonces Max = P Fin Si //Fin Algoritmo Auxiliar //Algoritmo Auxiliar Contar tipo de triángulo ConTipoTrian (a. CIS. y el perímetro Para I =1 hasta n Entrada a. Supongamos que su valor . un procedimiento recursivo queda definido mediante una función recursiva.4. una función computable (o calculable) es una función numérica cuyo valor puede ser hallado mediante algún algoritmo. donde denota el conjunto de los números naturales. Vamos a considerar funciones de argumentos de la forma: . La teoría de las funciones recursivas fue desarrollada a finales de la primera mitad del siglo pasado. Intuitivamente.CEQ = CEQ +1 Sino Si a = b o b = c o a = c Entonces CIS= CIS+1 Sino CES = CES +1 Fin Si Fin Si //Fin Algoritmo Auxiliar La forma de escribir los algoritmos diseñando el algoritmo principal y los algoritmos auxiliares. Analicemos el caso particular se halla a través del siguiente esquema de cálculo: . I.2 Algoritmos recursivos y Algoritmos de ordenamiento: Un algoritmo recursivo es aquel que contiene un procedimiento recursivo. es conocida como diseño estructurado (modular) y más que una técnica de diseño constituye una filosofía de programación. Así. Primero vamos a probar que es primitiva recursiva. . Por .producto de dos números naturales. . por inducción se establece que naturales. …. Podemos apreciar que .suma de dos números 2. . Ejemplos 12: 1. Tenemos que tanto.Definición 2: Una función numérica cuyo valor se calcula con ayuda de un esquema de cálculo recursivo. . se llama función primitiva recursiva. . 3. De hecho. es fácil ver que: . Introduzcamos la operación de diferencia truncada: Mostremos que esta función es primitiva recursiva. A seguir. …. . la recursividad es un método de definir una función mediante el cual para una cantidad arbitraria de argumentos. n! es igual al producto de todos los enteros entre 1 y n. . y así sucesivamente. el producto restante es tan solo (n-1)!. el problema 3! se reduce a calcular 2!.. muestra como descomponer el problema original (calcular n!) en subproblemas cada vez más sencillos (calcular (n-1)!. la solución del subproblema más sencillo puede utilizarse para resolver el siguiente subproblema más sencillo. elegante y natural de resolver una amplia clase de problemas.). en el cual una función se llama a sí. Al final las soluciones de cada subproblema se combinan (multiplicando) para resolver el problema original. Por ejemplo 5!= 5 4 3 2 1=120 Observemos que n! puede escribirse en términos de sí mismo pues si quitamos n. el problema 2! se reduce a calcular 1! y el problema 1! se reduce a calcular 0! Que por definición es 1. Por ejemplo el problema 5! se reduce a calcular 4!. El factorial de un número n€N se define como. Así obtenemos: En resumen. Por ejemplo 5!.. el problema 4! se reduce a calcular 3!. un procedimiento recursivo es aquel. hasta lograr la solución del problema original .De forma general. Es decir si n ³1. es decir. Una vez que el problema original se ha reducido a resolver subproblemas. n! = n (n-1) (n-2)…2 1= n (n-1)! Por ejemplo 5!= 5 4! La ecuación n! = n (n-1)!. La recursividad es una forma poderosa. un valor de ella se calcula por medio de un esquema determinado a través de los valores de la función ya conocidos o calculados anteriormente. calcular (n-2)!. = 1 Sino Fac = (n factorial(n-1)) Fin Si Salida Fac. el algoritmo produce como salida el valor 1. Teorema 1: El algoritmo anterior produce como salida el valor de n!. se verifica la condición. de forma análoga el procedimiento se ejecuta hasta obtener Fac = (3 2 1 factorial (0)). Demostración (Por inducción matemática): Paso base (n = 0). Consideremos n = 3. Ya hemos observado que para n = 0. esto no es más que una traducción de la ecuación n! = n (n-1)!. .0! = 1 1!=1 0!=1 2!=2 1!=2 3!=3 2!=3 2=6 4!=4 3!=4 6=24 5!=5 4!=5 24=120 Ahora escribiremos un algoritmo para el calculo del factorial. sustituye a n por 3 y llama al procedimiento factorial para el valor n=2. Entrar n Procedimiento factorial (n) Si n = 0 entonces Fac. como 3 es distinto de 0. Para definir un procedimiento recursivo utilizaremos la instrucción. la ejecución va a la línea debajo de la palabra reservada Sino. Procedimiento [nombre] [ (Lista de parámetros) ] Ejemplo 13: // Calculo del factorial con recursividad. por lo que factorial (0) retorna el valor Fac =1. Ahora supongamos que n es la entrada del algoritmo. 7. el procedimiento no se llama a sí mismo. si n = 0. Un problema clásico solucionado con la implementación de algoritmos es el siguiente: Dado un conjunto (lista) de n elementos {a1. en caso contrario se llamaría a si mismo por siempre. que resuelven el problema de ordenar los elementos de una lista. Deben existir ciertas situaciones en las que un procedimiento recursivo no se llama a sí mismo. obtenemos la lista {3. aquí nos limitaremos a presentar sólo dos de ellos: Algoritmo de ordenación secuencial: Este algoritmo ordena los elementos de la lista en orden creciente (decreciente). el agente de cómputo en donde se encuentran almacenados. tomamos el segundo lo comparamos con los restantes elementos . 8. Con frecuencia. y el paso inductivo corresponde a la parte donde el procedimiento recursivo se llama a sí mismo.. En el algoritmo anterior. Supongamos que el algoritmo produce correctamente el valor para (n -1)!. una demostración por inducción matemática puede considerarse un algoritmo.. La inducción matemática nos ha permitido demostrar que un algoritmo recursivo calcula el valor que afirma calcular. a2. Varios factores pueden influir al ordenar una lista: tipo y tamaño de los elementos.Paso inductivo. La idea del algoritmo consiste en realizar permutaciones de forma secuencial comenzando por el primer elemento de la lista. ordenémosla de menor a mayor. por ejemplo: sea la lista {7. 8. Como n ¹ 0. Todo procedimiento recursivo debe tener casos bases para lograr que el procedimiento recursivo concluya. 3. donde el paso base de inducción corresponde a los casos base de un procedimiento recursivo. la distribución de los elementos en la lista. tomamos el primer elemento y lo comparamos con los restantes elementos permutándolos cuando sea necesario. 5}.. La idea general del ordenamiento consiste en encontrar una permutación que ordene los elementos de la lista. al ejecutar el algoritmo vamos a la línea debajo de la palabra reservada Sino. Por la hipótesis de inducción el procedimiento calcula correctamente el valor (n -1)!. En la línea debajo de la palabra Sino el procedimiento calcula correctamente (n -1)! n = n! Por tanto el algoritmo produce como salida el valor de n! para cada entero n ³ 0. an} y una relación de orden (≤) sobre ellos se desea obtener los elementos ordenados de forma creciente (decreciente). Existen distintos algoritmos.. con distintos ordenes de eficiencia. n > 0. Los valores para los que un procedimiento recursivo no se llama a sí mismo son los casos bases. 5}. 8. 8. ordenémosla de menor a mayor. se continua el proceso hasta obtener la lista ordenada {3. tomamos el último elemento y lo comparamos con el anterior. Ejemplo 14: // Ordenar de menor a mayor Entrar n //tamaño de la lista Para I =1 hasta n Entrar A (I) //elementos de la lista Próximo I //ordenamiento secuencial Para I =1 hasta n-1 Para J = 2 hasta n Si A(I) > A(J) entonces Tem = A(J) A(J)=A(I) //permutación de los elementos A(I) = Tem Fin Si Próximo J Próximo I Para I =1 hasta n Salida A(I) // lista ordenada de menor a mayor Próximo I // Fin del algoritmo Algoritmo de ordenación burbuja: El nombre de este algoritmo trata de reflejar cómo el elemento mínimo "sube". 7. 5.y permutamos cuando es necesario. 5}. comenzando por el último elemento de la lista intercambiando elementos si fuera necesario. 5. 3. obtenemos {3. luego el anterior con el siguiente en la misma dirección continuamos el proceso y obtenemos {3. por ejemplo. a modo de burbuja hasta el principio de la lista. 5}. 7. 8}. sea la lista {7. 7}. a esta . 8. consiste en recorrer los elementos de la lista tomados los dos consecutivos siempre en la misma dirección. 5. z = (x2 +y2)1/2.z)= y2 + Exp (z/2). El valor de la función G(y . obtenemos la lista ordenada {3. 7. donde y =2x2+ x + 1.nueva lista le realizamos de nuevo el procedimiento anterior. 8}. Ejemplo 15: // Ordenar de menor a mayor Entrar n //tamaño de la lista Para I =1 hasta n Entrar A(I) //elementos de la lista Próximo I //ordenamiento burbuja Para I =1 hasta n-1 Para J = n hasta I +1 paso -1 Si A(J-1) > A(J) entonces Tem = A(J) A(J)=A(J-1) //permutación de los elementos A(J-1) = Tem Fin Si Próximo J Próximo I // Fin ordenamiento burbuja Para I =1 hasta n Salida A(I) // lista ordenada de menor a mayor Próximo I // Fin del algoritmo Ejercicios para el trabajo independiente: Escribir un algoritmo para calcular: 1. . 2.z) = Ln (y2 ) . 4. 5. b) Si el triángulo es rectángulo. El valor de la función H (y . 0 (falso) Escriba un algoritmo. donde y =2x2+ x. d) La diferencia entre la suma de los ángulos interiores y los ángulos exteriores. La función: 3. c) El mayor lado del triangulo. Escriba un algoritmo.1/ z1/2. Dados los valores de verdad de las preposiciones simples p . Dados tres ángulos se desea determinar: a) Si estos ángulos pueden determinar un triángulo. p Q p^q pvq 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 . Nota: 1 (verdadero). q. z = x +y. Determine el valor de verdad de las proposiciones compuestas: a) p y q (p^q) b) p o q (pvq).. acutángulo o obtusángulo. Dada una sucesión (lista) de n números reales. Escriba un algoritmo para calcular el número de pares de números. Escriba un algoritmo para contar las consonantes de una frase que contiene 20 caracteres. Dadas dos sucesiones de n números naturales. 10. 7. Escriba un algoritmo para determinar cuantos números enteros existen en el intervalo [1. 16. múltiplos entre si. 15. b) Determinar el mayor y el menor elemento de la sucesión. 11.6. Escriba un algoritmo para contar las vocales de una frase que culmina con el caracter *. c) Calcular el total de consonantes del conjunto. correspondiente a cada sucesión. b) Calcular el número de vocales de cada palabra. Escriba un algoritmo para determinar la factorial de un entero no negativo n. Escriba un algoritmo que: . Escriba un algoritmo para determinar el mayor y menor elemento de las sumas consecutivas de una sucesión de n números reales. Escriba un algoritmo para: a) Determinar cuantas palabras comienzan con vocal y cuantas comienzan con consonante. 12. 9. Escriba un algoritmo para determinar el máximo común divisor (MCD) de dos enteros no negativos. Dada una matriz de dimensión n x n. Nota: Escriba un algoritmo donde se emplee la instrucción iterativa con contador y otro donde emplee la instrucción iterativa con condición. para definir el ciclo. 1000]. 14. que sólo son divisibles por tres números enteros distintos. 13. Sea un conjunto cuyos elementos son las palabras del idioma español formadas por 5 caracteres. c) Determinar cuantos elementos son mayores que la suma. cuya última palabra es cinco. Escriba un algoritmo para determinar el mayor y menor elemento de las sumas parciales de una sucesión de n números reales. Escriba un algoritmo para: a) Calcular la suma de los elementos de la sucesión. 8. el número de pasos a ejecutar por el agente de computo. Para los ejercicios 6. Escriba el algoritmo empleando algoritmos auxiliares. m que pertenecen a los naturales. 15 escriba un algoritmo estructurado. empleando arreglos para calcular: . 13. Escriba un algoritmo donde se emplee la instrucción iterativa con contador y otro donde emplee la instrucción iterativa con condición. b) Encuentre el menor elemento de cada fila. esto es lo que de forma intuitiva se define como complejidad computacional. 11. 17. 9. d) Calcule la factorial de la suma de los elementos no negativos. Lo anterior nos lleva a definir criterios para medir la eficiencia del algoritmo. para todo n. la simplicidad de su implementación. Un robot puede dar pasos de 1 o 2 metros.1 Complejidad Computacional: Cada programador desea escribir el algoritmo o programa más eficaz para el problema que desea resolver. el tamaño del programa. Tal acercamiento nos conlleva a pensar. . 2. la velocidad de ejecución. Escribir un algoritmo para el cálculo del número de formas en que el robot puede recorrer n metros. 20. Escriba los algoritmos de ordenamiento para ordenar una lista de mayor a menor. Escriba el algoritmo estructurado. para definir el ciclo y las variables indexadas. Impleméntelos utilizando instrucción iterativa con condición. por ejemplo. 14. 21. el problema radica en minimizar ciertas función de costo. etc. 18.a) Encuentre el mayor elemento de cada columna. Escriba un algoritmo donde se implemente un procedimiento recursivo para los ejercicios:7 . la economía de la memoria. Análisis de los algoritmos II. ¿qué hace que un algoritmo sea difícil de ejecutar por un agente de cómputo?. es decir. Como eficiente puede entenderse el algoritmo o programa que minimiza los recursos que emplea el agente de cómputo para lograr la solución del problema planteado. c) Calcule: la suma de los elementos no negativos de la diagonal principal y producto de los elementos negativos de la diagonal principal. 19. 8. 10 y 18. empleando arreglos. Nota: 1. y que queremos resolver un sistema con incógnitas (bien pequeño para los que surgen en aplicaciones prácticas). sólo se necesitan . y cifras binarias. la regla de Cramer no debe ser tomada en consideración. Ejemplo 17. donde es un número natural. Para resolver el sistema de ecuaciones algebraicas lineales de orden con ayuda de la regla de Cramer se necesitan hallar las componentes del vector como la relación de determinantes: . El cálculo de esta magnitud usando multiplicaciones sucesivas por exige que se realicen operaciones de multiplicación. . No es difícil convencerse de que este método no es el más efectivo. . . Por otro lado. es necesario realizar multiplicaciones y sumas.Ejemplo 16. puede hallarse realizando no 63. donde es un número estándar para cada agente de cómputo. Por ejemplo. Entonces son . . y por tanto. representamos . para . Si se calculan los determinantes directamente a partir de su definición. Supongamos que se necesita calcular . para la solución de este mismo sistema en la misma máquina usando el método de Gauss. Supongamos que para los cálculos empleamos un agente de cómputo que realiza multiplicaciones por segundo. En general. sino sólo 6 operaciones de multiplicación. como potencias de 2: . Entonces el cálculo de un solo determinante necesita multiplicaciones. Esto indica que como algoritmo de cálculo. si de manera sucesiva elevamos al cuadrado y calculamos . para hallar la solución se requiere aproximadamente de 10 años de trabajo continuo del agente de cómputo. Dos direcciones pueden adoptarse para evaluar la complejidad de un algoritmo: En la primera. relacionada con la complejidad del texto del algoritmo (por ejemplo. Este permite hallar en a lo sumo operaciones de multiplicación. etc. etc. lo cual significa que un algoritmo de cálculo debe ser capaz de proporcionar una solución del problema con una exactitud dada o adecuada para el problema en cuestión. su complejidad estructural. evaluar la complejidad intrínseca de un problema es en general una tarea difícil. Un algoritmo basado en la descomposición anterior se llama algoritmo binario. porque puede existir un gran número de algoritmos equivalentes diferentes que resuelven el problema dado. Las dos direcciones. y evaluar la complejidad entre ellos para obtener el menos complejo. Claro. Note que en estos productos solamente debemos considerar aquellos factores para los cuales . Lo anterior impone evaluar la complejidad intrínseca del problema a solucionar. su longitud. Dos estrategias pueden seguirse para obtener una aproximación más fina de la complejidad de un . tiempo para su ejecución. memoria.). Esta medida de complejidad caracteriza al algoritmo independientemente de los datos de entrada a los que pueden aplicarse el algoritmo. estática o dinámica. por medio de acotaciones (una cota superior y una cota inferior). En general la complejidad de un algoritmo sólo es determinada de manera aproximada. El segundo. la variedad de tipos de la instrucción usadas en él. nos preocupamos por la complejidad dinámica. está relacionado con el uso de los recursos requeridos por el agente de cómputo para llevar a fin la ejecución del algoritmo para una entrada determinada de datos (por ejemplo. La complejidad (estática y dinámica) de un algoritmo depende de varios elementos: el formalismo con que es expresado el algoritmo. Otra medida de la eficiencia de un algoritmo es la exactitud. el agente de cómputo que lo ejecuta. pueden ser usadas para escoger el algoritmo menos complejo entre dos o más algoritmos equivalentes que resuelven el mismo problema. y el criterio para evaluar su eficacia. o sea. cuando . Esto nos conlleva a considerar todos los algoritmos que resuelven el problema dado. nos preocupamos por la complejidad estática de un algoritmo.. y cualquier criterio para evaluar el costo de la ejecución del algoritmo.. Existe un algoritmo. por consiguiente..) de las funciones para evaluar el costo de ejecución de cada agente..1. Para todos los números naturales k y n.M2.) proporciona una medida de complejidad si se satisfacen los siguiente dos requisitos (Axiomas de Blum ): 1. la otra aumentar la cota inferior. entonces Tk(n)=m. Considere la lista de todos los agentes de cómputo (M1. La primera consiste en disminuir la cota superior. o si continua.). II. la función Tk(n) puede ser considerada como el número de unidades de recurso consumidos en la ejecución por el agente de cómputu Mk para una entrada n (Mk(n)). 2. pues no se consideran algunos elementos específicos del agente de cómputo..T2(n). Tk(n) esta definida si y sólo si Mk(n) esta definida. podemos simplemente observa Mk para la entrada n durante un tiempo finito. Tk(n) es una función definida en los naturales (Tk: N-->N). Si Mk se detiene en este período. Esta generalidad tiene algunas desventajas. n y m. El estudio de la complejidad abstracta proporciona resultados que se sostienen para cualquier agente de cómputo. debe notarse que. si Mk se detiene antes. para una entrada dada n. Un rasgo muy importante para la teoría de la complejidad es lograr estudios generales. pero debe ser considerado como indefinido el costo de ejecución de los algoritmos cuya ejecución no concluye. que para valores arbitrarios k. y correspondientemente.algoritmo.. El primer axioma expresa la idea: el costo de ejecución para cualquier algoritmo que es ejecutado hasta el final es calculable. Es decir. Esto significa que a medida que la ejecución avanza se consumen más unidades del recurso.1 Axiomas de Blum.. pues se obtienen en algunos casos resultados paradójicos. consume m unidades de recurso. para el caso ..T2(n). para verificar si Tk(n)=m. entonces Tk(n) es diferente de m. lo anterior no minimiza la importancia de obtener medidas de complejidad específicas al agente de cómputo que ejecuta el algoritmo. decide si Tk(n)=m o no. La lista (T1(n). la cual indica el costo de ejecución del agente Mk para una entrada n. el segundo axioma exige la existencia de un procedimiento algorítmico para decidir si una máquina dada Mk.. independientes del agente de cómputo que ejecutará el algoritmo.. esto define el período en que son consumidas las m unidades del recurso. una lista (T1(n). una medida de complejidad consiste en asignar una función de costo. pues no se puede decidir si la máquina concluye la ejecución. por el agente de cómputo para ejecutarlo. II. el axioma 2 se satisface. Diremos. porque un algoritmo que no concluye la ejecución podría usar un número finito bien definido de células (espacios de memoria). y expresan el deseo de ser satisfechos para cualquier medida de complejidad. para k. La primera medida Sk(n) parece violar el axioma 1 de Blum. consideremos Tk(n)=0 para todo n y k (es decir la ejecución está libre de costo). pues podemos decidir si Mk para la entrada n ejecuta el algoritmo. Como otro ejemplo.contrario. Los ejemplos anteriores muestran que los axiomas de Blum pueden satisfacerse independientemente. porque la lista de todas las máquinas incluye necesariamente algunas que no concluyen la ejecución. no tendría sentido exigir un algoritmo para decidir si Tk(n)=m. el axioma 2 no se satisface. n y m arbitrario. para evaluar cómo cada agente de cómputo ejecuta un algoritmo. sin embargo. El tiempo de ejecución de un algoritmo va a depender de diversos factores: los datos de entrada. de esta manera el axioma 1 se satisface y el axioma 2 también es satisfecho en todos los casos.2 Complejidad temporal. se satisface el axioma 1. Según lo expresado. n y m arbitrarios. la complejidad intrínseca del algoritmo. si para todas las entradas suficientemente grande n (de longitud mayor que algún valor dado q). Frecuentemente la eficiencia se mide en función de dos parámetros: el tiempo que empleó el agente de cómputo Mk para ejecutar un número finito de pasos para una entrada n Sk(n) y el número de células (espacios de memoria) Ck(n) necesarias que usó el agente de cómputo Mk para la entrada n al ejecutar el algoritmo (medidas de complejidad). lo anterior se sustenta en el hecho que hay sólo un número finito de configuraciones de la máquina diferentes de m. y el valor Tr no es mayor que el valor de Ts. la comunidad científica convino que la medida más significativa de la . Como se ha mostrado. las características del agente de cómputo. Con el florecer de computadoras a partir de la década 1960-70. respecto ha cierta función T(n) dada. Como hemos expresado la complejidad de un algoritmo define el uso eficiente de los recursos. por ejemplo: considerando Tk(n) = Mk(n) para todo n y k. tal que Ck(n)=m para todo k. los requisitos de los axiomas anteriores son muy generales. Tr(n) está definida siempre que Ts(n) este definida. y por consiguiente estos son independientes. Lo anterior se evita al considerar por definición a Ck(n) como indefinido. es decir. la complejidad temporal y capacitiba. pero se viola el axioma 1. por lo que estos no son suficientes. que el agente de cómputo Mr es menos complejo que el agente Ms. la cual se expresa como una función de los datos de entrada T(n). la primera nos ofrece estimaciones del comportamiento del algoritmo de forma independiente del agente de cómputo en el cual será ejecutado. En los algoritmos secuenciales una medida de complejidad temporal viene expresada por el número de operaciones elementales (OE) que realiza cada instrucción del algoritmo a ejecutar por el agente de cómputo para una entrada determinada n. Las operaciones aritméticas básicas. 3. Variables dimensionales. cada índice de la variable dimensional contabilizará como una OE. Medir el tiempo de ejecución en un agente de cómputo especifico para unos valores de entrada dados. Ejemplo 18: Para el algoritmo del ejemplo 9 calcular el número de OE. 2. Ambas medidas son importantes. 5. Las operaciones lógicas (relaciones de orden unidas a los operadores lógicos).eficacia de un algoritmo es la expresión matemática que define el tiempo de ejecución del algoritmo por el agente de cómputo. Es posible realizar el estudio del tiempo de ejecución de las maneras siguientes: 1. . la segunda representa la medida real del comportamiento del algoritmo. Las llamadas y retorno a algoritmos auxiliares. Consideraremos OE: 1. 6. 4. esto nos proporciona una medida real a posteriori. es decir las operaciones que el agente de cómputo ejecuta en un tiempo acotado para la entrada n.  En la línea (3) se ejecutan 3 OE (asignación). Consiste en obtener una función que acote (superior e inferiormente) el tiempo de ejecución para unos valores de entrada. Las asignaciones a variables. esto nos proporciona una medida teórica a priori. complejidad temporal. Retorno a las instrucciones de inicio de ciclo. 2.  En la línea (2) se ejecutan 3 OE (asignación). T(n) es una función creciente de n. (7). .  En la línea (12) se ejecutan 2 OE (un incremento (suma) y una asignación). por ejemplo: si tenemos que evaluar un polinomio de grado n. (11). por lo que las operaciones de las líneas (5). por tanto T(n) =26 (n -1)+7= 26n -19 T(n) es una función que mide el número de OE de un algoritmo para una entrada n.  En la línea (19) se ejecutan 3 OE (asignación). En la línea (4) se ejecutan un total de 5 OE (3 operaciones de relación y 2 operaciones lógicas).  En la línea (5) se ejecutan 3 OE (2 operaciones de relación y 1 operación lógicas). La función temporal T: N-->R+.  En la línea (21) se ejecutan 1 OE (un incremento (suma)). (12). depende del tamaño de los datos de entrada. el algoritmo realiza 7 OE fuera del ciclo y 26 dentro del ciclo. Ejemplo 19: Para el algoritmo del ejemplo 18 determinemos una expresión para calcular su tiempo de ejecución. Tenemos un total de 33 OE. (9).  En la línea (9) se ejecutan un total de 5 OE (3 operaciones de relación y 2 operaciones lógicas). Como mostramos en el ejemplo 12. independiente del agente de cómputo. (8). (15) y (19) se ejecutaran tantas veces como veces se ejecute el ciclo. (14).  En la línea (15) se ejecutan 2 OE (un incremento (suma) y una asignación).  En la línea (11) se ejecutan 1 OE (asignación).  En la línea (14) se ejecutan 1 OE (asignación).  En la línea (7) se ejecutan 1 OE (asignación).  En la línea (20) se ejecutan 1 OE (retorno al inicio del ciclo).  En la línea (8) se ejecutan 2 OE (un incremento (suma) y una asignación). pero debemos tener presente que las líneas 4 y 20 definen un ciclo. multiplicar dos matrices cuadradas de orden n. . no es un número fijo: Consideremos . de forma que Entonces.Comúnmente para la solución de un problema puede obtenerse dos o más implementaciones de un algoritmo. se verifica que T1(n) ú c T2(n). para la entrada n ³ no.p. Teorema 2 (Principio de Invarianza): Sea A un algoritmo y I1 e I2 dos implementaciones que concluyen la ejecución.….2. entonces E C€R. Denotemos por T1(n) y T2(n) el tiempo total de ejecución de las dos implementaciones. Luego. . Demostración: Sean dos sucesiones finitas que representan el tiempo de ejecución de cada una de las instrucciones correspondientes a las implementaciones I1 e I2.…. 2. c > 0 y no€N. j = 1. por lo que es necesario acotar la diferencia que se puede producir entre ellas.q. sean T1(n) y T2(n) el tiempo de ejecución de I1 e I2. tal que "n ³ n0. i = 1. donde C1 es una constante. por ejemplo.000. . y diremos que T1(n) es de orden a la sumo de T2(n). 1999.. Se desea estimar medidas para el tiempo de ejecución que permitan comparar la eficiencia de los algoritmos. tal que T1(n)=105n2 y T2(n)=2n3. el tiempo de ejecución será superior al de la cota. el primero sólo será mejor que el segundo para n > 50. si determinamos la cota superior del tiempo de ejecución de un algoritmo podemos asegurar que. Universidad de Málaga.1 Cotas asintóticas de complejidad temporal. por ejemplo. El símbolo O(1) denota una función acotada por una constante. . pues. An€N. El Principio de Invarianza nos dice que el tiempo de ejecución de dos implementaciones distintas de un algoritmo dado no van diferir más que en una constante multiplicativa. La demostración del mismo es original de los autores de la monografía.2. II. Es importante tener en cuenta las constantes c y no para las que se verifican las condiciones.excepto para un número finito de excepciones.Nota: Este teorema fue presentado en el Libro en formato electrónico (Internet). sean dos implementaciones de un algoritmo. En otras palabras un algoritmo tarda en su ejecución un tiempo del orden T(n) si existe una constante real c > 0 y una implementación I del mismo que tarda menos que cT(n). sin demostración. Definición 3: Sean T1 y T2 funciones de N-->R+. Escribimos T1(n) = O(T2(n)). si E C1€R. excepto para un número finito. La igualdad T1(n)=O(T2(n)) expresa que T1(n) esta acotada superiormente por T2(n). para toda entrada de tamaño n. en ningún caso. C1 > 0 tal que T1(n) menor o igual C1 T2(n). La igualdad T1(n)=W(T2(n)) expresa que la función T1(n) esta acotada inferiormente por T2(n). dependiendo de los valores de que tome C1 Si C1€(0. C2 > 0 tal que T1(n) ³ C2 T2(n). T4(n))). T1= W (T2(n)) --> W (T1(n)) < W (T2(n)) 3. 6.Ñ) entonces O(T1(n)) = O(T2(n)) b) Si C1= 0 entonces T1= O(T2(n)) --> O(T1(n)) < O(T2(n)) Definición 4: Sean T1 y T2 funciones de N-->R+. Si T1(n) = W (T2(n)) y T2(n) = W (T3(n)) --> T1(n) = W (T3(n)) 5. T3(n))). excepto para un número finito. T1= W (T1(n)) 2. . si E C2€R. Si T1(n) = O(T2(n)) y T2(n) = O(T3(n)) --> T1(n) = O(T3(n)) 5. T3(n))). Si T1(n) = O(T2(n)) y T1(n) = O(T3(n)) --> T1(n) = O(min(T2(n). Escribimos T1(n) = W(T2(n)).Propiedades de O: 1. W (T1(n)) = W (T2(n)) <--> T1= W (T2(n)) y T2= W (T1(n)) 4. O(T1(n)) = O(T2(n)) <--> T1= O(T2(n)) y T2= O(T1(n)) 4. excepto para un número finito de excepciones. 7. Si T1(n) = W (T2(n)) y T1(n) = W (T3(n)) --> T1(n) = W (max(T2(n). T1= O(T1(n)) 2. Si T1(n) = O(T2(n)) y T3(n) = O(T4(n)) --> T1(n) T3(n)= O(T2(n) T4(n)). 8. Si T1(n) = O(T2(n)) y T3(n) = O(T4(n)) --> T1(n) +T3(n)= O(max(T2(n). Si $ tenemos: a) . Propiedades de W: 1. T1= O(T2(n)) --> O(T1(n)) < O(T2(n)) 3. An€N. y diremos que T1(n) es de orden al menos de T2(n). expresa en su famosa obra: El arte de programar computadoras. Si T1(n) = W (T2(n)) y T3(n) = W (T4(n)) --> T1(n) +T3(n)= W (T2(n)+ T4(n))). Tradicionalmente la mayoría de los cursos de programación para principiantes se centran en la enseñanza de un lenguaje de programación. Knuth. Si T1(n) = W (T2(n)) y T3(n) = W (T4(n)) --> T1(n) T3(n)= W (T2(n) T4(n)). 2 1. 8. sino también porque puede ser una experiencia estética como la poesía y la música. actuando de esta forma el estudiante es llevado e a razonar en función de un lenguaje de . Introducción 2. este trabajo tiene como objetivo presentar las técnicas básicas deprogramación para los que se inician en esta arte. Algoritmos 4. dependiendo de los valores de que tome C2 Partes: 1. Estructuras básicas de control lógico 6. Programación estructurada 7. 7. dejando en segundo plano la enseñanza de la lógica de la programación. lo siguiente:"El proceso de prepararprogramas para una computadora digital tiene un atractivo especial. Si $ tenemos: . no sólo porque puede ser recompensado económica y científicamente.".6. Bibliografía Introducción El eminente matemático Donald E. La programación de computadoras 3. Elementos básicos en el diseño de algoritmos 5. denominadas programadores de computadoras. se suele decir que la computadora resuelve problemas. etc. Al conjunto de instrucciones específicas para que la computadora realice la tarea se le llama programa. es decir.programación específico y no en la forma lógica en que deba resolverse un problema utilizando la computadora. pero lo correcto es decir que la computadora ejecuta las instrucciones que resuelven el problema. . este modelo fue diseñado por el matemático húngaro John Von Newman. para facilitar las pruebas de los algoritmos en la computadora La programación de computadoras Programar una computadora consiste en escribir las instrucciones para que la computadora realice una tarea. en este sentido la tarea consiste en ejecutar las instrucciones. sin ninguna actividad pensante. o un programa para jugar a las cartas con la computadora. se utiliza en la medida de lo posible la notación utilizada en los lenguajes de programación. Los programadores de computadoras deben adquirir la habilidad de poder escribir instrucciones para una maquina que simplemente las ejecuta como un autómata. pero que al ejecutar las instrucciones realiza la tarea para la cual fue programada. Para ilustrar la forma en que se ejecuta un programa almacenado en la computadora se presenta el modelo conceptual de computadora conocido como la Máquina de Von Newman. una vez que se ha diseñado el algoritmo. Es por esta razón que en este texto se inicia con el análisis de problemas que pueden programarse para que la computadora los resuelva y se posterga la enseñanza del lenguaje hasta que el estudiante haya adquirido solvencia en el razonamiento lógico. Este modelo es la base de la arquitectura de la mayoría de las computadoras actuales. es decir viene con todos los programas necesarios para realizar las tareas que se desean realizar con ella. por ejemplo. un conjunto de programas para que con la ayuda de la computadora se pueda llevar la contabilidad de una empresa. un editor de texto para escribir un libro. La computadora. Estos programas fueron desarrollados por personas. la ventaja de este enfoque radica en que una vez determinada la secuencia de instrucciones que llevan a la resolución de un problema. estas instrucciones fácilmente pueden codificarse en cualquier lenguaje de programación. No obstante. normalmente viene preparada para ser utilizada. además de las instrucciones se le proporcionan los datos. tales como un disco duro. etc. desplegados en la pantalla del monitor o estos resultados pueden almacenarse en otros dispositivos de memoria. conocidos como datos de entrada. como por ejemplo impresos. la computadora esta integrada por cuatro componentes que interactúan entre sí. La memoria es el dispositivo donde se almacena el programa. además del programa en ella también se almacena los datos. que se conocen como datos de salida. la unidad decontrol y la unidad de entrada/salida. todo procesador es fabricado con un conjunto básico de instrucciones que puede ejecutar. y el resultado del proceso se muestra a través de un dispositivo de salida. y se le denomina la memoria principal. El programa y los datos son transferidos a la memoria principal a través de un dispositivo de entrada.Conceptualmente. decidir entre ejecutar o no una instrucción de acuerdo al resultado de una condición. éstos se procesan de acuerdo a las instrucciones indicadas. estas son la memoria. tomar datos de la memoria o colocar datos en la memoria. como por ejemplo: las operaciones aritméticas. La unidad de control recupera una a una las instrucciones del programa almacenado en la memoria y las transfiere al procesador a fin de que éste realice la operación especificada. comparaciones. El procesador es el dispositivo que ejecuta las instrucciones. un disquete o una memoria portátil. como por ejemplo el teclado. denominados memoria secundaria. utilizando una impresora. Este conjunto de instrucciones puede variar de acuerdo al fabricante. el procesador. . obteniendo los resultados. Visual Basic. para que la computadora pueda ejecutar una tarea es necesario que primero se diseñe el algoritmo correspondiente.  Determinístico: significa que el resultado debe depender estrictamente de los datos suministrados. para determinar la mejor alternativa de solución. Un algoritmo eficiente y confiable es el producto de un análisis exhaustivo del problema. se trasforma en el programa correspondiente. denominado lenguaje de programación. etc. El programa esta compuesto por el algoritmo. especificar las operaciones necesarias para transformar los datos de entrada en datos de salida. .  Preciso: el algoritmo debe ejecutar la tarea para el cual fue diseñado. y palabras claves que indican el inicio y el fin del algoritmo y las instrucciones específicas a realizar. Son ejemplos de algoritmos los métodos utilizados en aritmética para sumar. FORTRAN. C.  1. restar. DELPHI. es decir. algunos ejemplos de lenguajes de programación son: PASCAL. el resultado debe ser siempre el mismo. Definición de algoritmo: Un algoritmo es un conjunto finito de instrucciones cuyo fin es realizar una tarea. la aplicación de la fórmula cuadrática para encontrar las raíces de un polinomio de segundo grado En todos ellos se cumplen las tres características anteriores.El programa debe estar escrito o codificado en un lenguaje especial. este conjunto finito de instrucciones debe también ser preciso y determinístico. Algoritmos Los algoritmos son el fundamento de la programación de computadoras. Una vez diseñado y probado el algoritmo. siempre que el algoritmo se ejecute con un mismo conjunto de datos de entrada. multiplicar y dividir cantidades. la especificación de los datos y las instrucciones que permiten la comunicación entre los usuarios del programa y la máquina. Elementos básicos en el diseño de algoritmos  HERRAMIENTAS PARA EL DISEÑO DE ALGORITMOS Las dos herramientas más utilizadas para diseñar algoritmos son el Pseudocódigo y el Diagrama de flujo. Pseudocódigo Es un lenguaje simplificado para describir un algoritmo utilizando una mezcla de frases en lenguaje común. Por ejemplo. Por ejemplo. en cualquier dispositivo de salida. Diagrama de flujo El diagrama de flujo es la representación gráfica de un algoritmo. el rectángulo es el símbolo de proceso e indica que se realiza un proceso sobre los datos de entrada para calcular el área (a) multiplicando la base por la altura. se deben utilizar sangrías que facilitan la lectura del algoritmo Las instrucciones en pseudocódigo son fáciles de codificar en un lenguaje de programación. Las palabras subrayadas se llaman palabras reservadas. En el diagrama cada símbolo representa una acción en concreto. el paralelogramo es el símbolo de entrada de datos e indica que se lee el valorde la base (b) y el valor de la altura (h). finalmente el ovalo rotulado con la palabra Fin indica que se ha llegado al fin del algoritmo. (utilizaremos el * como operador de multiplicación). el siguiente pseudocódigo corresponde al algoritmo para calcular el área del rectángulo: el algoritmo calcula el área (a) de un rectángulo cualquiera. si se le suministra la longitud de de la base (b) y la longitud de la altura (h). y cada instrucción del algoritmo se visualiza dentro del símbolo adecuado. para ello se utiliza un conjunto de símbolos estándares mundialmente utilizados y desarrollados por organizaciones tales como ANSI (American National Institute) e ISO (International Standard Organization para la elaboración dediagramas de flujo. Los símbolos se conectan con flechas para indicar el orden en que se ejecutan las instrucciones. .  2. el siguiente diagrama de flujo corresponde al algoritmo para calcular el área del rectángulo El ovalo rotulado con la palabra Inicio indica el comienzo del algoritmo. el siguiente es el símbolo de salida y representa un documento e indica que se muestra el valor del área obtenido. Todo diagrama de flujo debe tener un inicio y un fin.  3.  4. Las líneas de flujo deben terminar siempre en un símbolo. No puede llegar más de una línea de flujo a un símbolo.  5.  2.Los símbolos que se utilizaran para dibujar los diagramas de flujo son los siguientes: Reglas para la construcción de diagramas de flujo  1. para evitarlo deben utilizarse el símbolo conector. Las líneas de flujo nunca deben cruzarse. . Todos los símbolos en un diagrama deben estar conectados mediante una línea de flujo. todo símbolo debe tener una línea de flujo entrando y otra saliendo salvo el símbolo que indica inicio o fin del diagrama.  DECLARACION DE LOS DATOS Como ya se dijo los datos a procesar y los datos resultantes del proceso se almacenan en la memoria principal de la computadora. porque comienza con un dígito . Para poder localizar los datos en la memoria se les asignan nombres.  El primer elemento de la secuencia debe ser un carácter alfabético. Esto mismo se recomienda para la representación del algoritmo en pseudocódigo. EDAD 2) No son identificadores válidos los siguientes: ºC . porque el carácter º no es un carácter permitido 1_dato.  No se utilizan signos de acentuación  No se utilizan espacios. altura. y también se destinan localidades de memoria cuando se necesita almacenar resultados de cálculos intermedios. recuérdese que el propio símbolo indica la operación a realizar. Por ejemplo: 1) Son identificadores válidos los siguientes: longitud. numero_menor. que en el ambiente de la programación se conocen como identificadores de datos. 6. por lo que el texto que se escribe dentro no debe ser muy extenso. Coeficiente_a. dato1. también conocida como memoria RAM (Random Access Memory). si se necesita separador debe utilizarse el carácter de subrayado (_) o guión bajo. La forma en que se capturan los datos de entrada o se muestran los datos de salida se detallarán al codificar el algoritmo en el lenguaje de programación. Se recomienda mantener uniforme el tamaño de los símbolos. Como regla general el flujo del proceso debe mostrarse de izquierda a derecha y de arriba abajo.  No se permite el uso de las palabras reservadas o palabras claves Se recomiendan nombres cortos y nemotécnicos (su propio nombre indica lo que representan). dato2. Nombraremos los datos siguiendo las reglas para definir identificadores especificadas en la mayoría de los lenguajes de programación:  Se utilizan secuencias de caracteres formadas por caracteres alfabéticos y los dígitos decimales. escribir e inicio. también llamadas sentencias. lectura y escritura. el signo de asignación = y la expresión cuyo valor se asigna a la variable. Instrucción de asignación Esta instrucción asigna valor a un identificador. porque son palabras reservadas  INSTRUCCIONES Un algoritmo normalmente incluye una gran cantidad de instrucciones. inicialmente se presentan las instrucciones de asignación. por un conjunto de valores y operadores o por una función En el espacio de memoria asignado a la variable se almacena el valor resultante de la expresión. porque tiene un espacio en blanco como separador leer. El formato de la instrucción de asignación es el siguiente: Donde variable es un identificador válido y expresión puede estar formada por un valor. La variable siempre va a la izquierda del símbolo =. mientras que la expresión siempre estará a la derecha. la variable. definiendo cada una de ellas y mostrando su representación en pseudocódigo. su correspondiente símbolo en el diagrama de flujo y ejemplos. este identificador también se conoce con el nombre de variable y se caracteriza porque puede tomar diferentes valores durante la ejecución del algoritmo. cuando se ejecuta una instrucción de asignación se almacena el valor asignado en la localidad de memoria reservada para el identificador.numero menor. . Una asignación tiene tres partes. El formato de esta instrucción es el siguiente: Una constante puede ser un número cualquiera o una secuencia de caracteres. El formato de esta instrucción es el siguiente: Los símbolos < > no se incluyen en la codificación. por ejemplo. en este caso una lista devariables. Si la constante es una secuencia de caracteres se escribirá entre apóstrofos. Instrucción Escribir Se define la instrucción Escribir para indicar que se va a enviar información desde la memoria hacia un dispositivo de salida de datos. el numero 15 o la secuencia "Error". para indicar que lo que se escribe es la secuencia. como la impresora o la pantalla del monitor. como el teclado. lo que indican es que el programador debe definir lo que se le pide. Por ejemplo .Instrucción Leer Se define la instrucción Leer para indicar que se debe enviar información desde un dispositivo de entrada de datos. hacia la memoria En la memoria los datos serán ubicados a través de su nombre o identificador asignado. es importante entender el problema que se pretende resolver. Al hacer la declaración de los datos también debe especificarse el tipo de dato que va a almacenarse en la posición de memoria especificada. para solventar este inconveniente deben utilizarse varios símbolos de salida. necesarios para obtener los datos de salida Se debe asignar nombre a los datos de acuerdo a las reglas para formar identificadores. se puede hacer referencia a su numero dentro del símbolo. generalmente se encuentran diferentes formas de resolver el problema. lápiz grafito y borrador procurando hacer varios ejercicios de aplicación. para ello los datos se clasificarán de la siguiente manera:  Datos de Entrada: Los datos que se suministran  Datos de Salida: los datos o resultados que se esperan  Datos de trabajo: estos son posiciones de memoria donde se almacenaran resultados de cálculos intermedios. una cadena de caracteres o un valor lógico (verdadero o falso) Especificar las formulas a utilizar Las fórmulas deben escribirse utilizando los nombres asignados a los datos. para asegurarse que entiende el problema el programador debe resolverlo con papel. . En el caso de formulas muy largas.Escribir "Error" Escribir 3. los tipos de datos son: numérico. por lo que se debe seleccionar la mejor alternativa de solución. dado que el espacio es limitado y el tamaño de los símbolos en un diagrama de flujo debe ser uniforme. Declaración de datos Una vez seleccionada la mejor alternativa debe hacerse la declaración de datos. Diseño del algoritmo.  METODOLOGIA A SEGUIR EN EL DISEÑO DE ALGORITMOS El procedimiento a seguir para diseñar algoritmos se presenta a continuación: Entender el problema Para determinar la secuencia de instrucciones que deben constituir el algoritmo.1416 Generalmente dentro del símbolo solo se podrán escribir listas cortas. un carácter. Prueba de escritorio: Se debe ejecutar el algoritmo con diferentes datos de entrada para verificar si se obtienen los datos de salida esperados. La siguientes etapas son la codificación del algoritmo en el lenguaje de programación seleccionado y su prueba en la computadora. en caso contrario se procede a hacer las modificaciones necesarias al algoritmo. Los datos de prueba deben escogerse de modo a someter al algoritmo a todas las posibles situaciones que puedan darse. luego se verifica si el algoritmo cumple con las características de un algoritmo. Por lo tanto cada grado en la escala Fahrenheit es igual a 100/180 o 5/9 grados en la escala Celsius. A continuación utilizamos esta metodología en el diseño de un algoritmo: Problema 1: Diseñar un algoritmo para convertir una temperatura dada en grados Fahrenheit a la correspondiente temperatura en grados Centígrados. Se recomienda verificar los resultados obtenidos en los ejercicios realizados en la etapa de análisis del problema.Se debe representar la alternativa de solución seleccionada mediante un algoritmo. El diseño del algoritmo esta listo si la prueba de escritorio muestra que éste satisface las características de un algoritmo. el cual puede desarrollarse utilizando el pseudocódigo o el diagrama de flujo a preferencia del programador. Entender el problema El agua se congela a 0º Centígrados y hierve a 100º Centígrados. Esta verificación se conoce como prueba de escritorio. Lo que indica una diferencia de 180º. Para convertir grados Fahrenheit a grados Celsius se resta 32º a los grados Fahrenheit y el resultado se multiplica por 5/9 . si la prueba no es satisfactoria se revisa el pseudocódigo o el diagrama de flujo y se procede de esta manera hasta obtener los resultados esperados. El agua se congela a 32º Fahrenheit y hierve a 212º Fahrenheit. que son la secuencial. . La estructura de decisión se utiliza cuando existen situaciones en que se debe escoger entre ejecutar una instrucción u otra. se utiliza un conjunto de estructuras o construcciones lógicas restringidas.6º Fahrenheit equivalen a 37º Centígrados. de la primera a la última. la de decisión y la iterativa. dependiendo del cumplimiento de una condición y la estructura iterativa se utiliza cuando es necesario repetir varias veces una instrucción o un conjunto de instrucciones para que la tarea sea ejecutada.Se selecciona esta alternativa de solución y se procede con el siguiente paso. Para diseñar algoritmos que sean entendibles y fáciles de modificar por las personas interesadas. Cualquier tarea que se pretenda resolver utilizando la computadora debe expresarse como un algoritmo. La estructura secuencial se utiliza cuando las instrucciones del algoritmo deben ejecutase en la secuencia en que se presentan. Declaración de los datos Prueba de escritorio En el primer caso 98. Problema 2: Diseñe un algoritmo para calcular el área de un círculo cualquiera y la longitud de su circunferencia.1416 * 6*6= 113. también conocidas como estructuras básicas de control lógico Estructuras básicas de control lógico  ESTRUCTURA SECUENCIAL Se trata de la construcción donde las instrucciones se deben ejecutar una después de la otra. Entender el problema Ejercicio 1: Consideremos un círculo de 6 centímetros de radio Área del circulo = 3.6992 Declaración de los datos: Dato de entrada r: radio del círculo.1415 * 6 = 37. numérico Datos de salida a: área del círculo. sin dejar de ejecutar ninguna de ellas.En la siguiente sección se estudiaran cada una de estas construcciones lógicas.0976 Longitud de la circunferencia = 2*3. numérico . numérico l: Longitud de la circunferencia. en el mismo orden en que aparecen en el algoritmo. . calcular el total a pagar considerando que se paga el 12% por concepto deimpuesto sobre ventas (ISV).  2) Calcular el salario que recibe por mes un empleado que trabaja por horas.Prueba de escritorio Problemas propuestos  1) Calcular el porcentaje de hombres y mujeres que hay en un grupo de personas.  3) Dado el precio de un artículo y la cantidad de artículos comprados. reteniéndole el 7 por ciento por concepto de seguro de trabajo. por ejemplo: Para calcular c=b/a primero hay que verificar que a sea diferente de cero. =. que se construyen utilizando operadores relacionales (>. 4) Calcular la nota final de un estudiante del curso de computación I. <.  5) Dados dos puntos en el plano cartesiano. para ello se debe tomar en cuenta lo siguiente: que se realizaron cuatro exámenes valorados en 80% cada uno y cuatro prácticas de laboratorio valoradas en 20 puntos cada una. El formato general de esta estructura es la siguiente: .  ESTRUCTURA DE DECISIÓN Es una situación típica en la resolución de problemas. y si la condición es falsa se omite la ejecución de dicha instrucción o conjunto de instrucciones. es decir que si la condición es verdadera se debe de ejecutar la instrucción o el conjunto de instrucciones que se indique. cuando sólo se tiene un curso de acción para el caso que el resultado de evaluar la condición sea verdadero. La condición puede ser una expresión relacional (por ejemplo a>o) o una expresión lógica (por ejemplo a>b y b>c). negación) Existen tres tipos de decisión: decisión simple. el resultado de evaluar la condición puede tomar un valor lógico verdadero o falso (V ó F). ya que la operación se puede realizar únicamente si a es diferente de cero Para representar esta situación en el algoritmo se utiliza la estructura condicional también conocida como estructura de decisión. la decisión doble y la decisión múltiple  Decisión simple Una decisión es simple. o. ?) y operadores lógicos (y. calcular la longitud del segmento determinado por ellos. Esta estructura se construye de modo a que se ejecuten o se omitan algunas instrucciones dependiendo del cumplimiento de una condición. =. que se tenga que decidir entre realizar una instrucción u otra dependiendo del cumplimiento de una condición. =. Ejemplo: Observe el siguiente segmento de pseudocódigo y su diagrama de flujo . El 10% es igual a 1560*0. el impuesto a pagar es de 36 lempiras y el total a pagar es 336 lempiras. Dado el precio de un artículo y la cantidad de artículos comprados.Problema 1. El valor de la compra es 3*100=300 lempiras.48=1572.48 y por tanto el total a pagar es igual a 1404+168.10= 156 lempiras. El impuesto sobre ventas es igual a 1404*0. . como la compra es superior a 500 lempiras. El valor de la compra es 12 *130=1560. tiene derecho al descuento. como la compra es inferior a 500 lempiras no se tiene derecho al descuento.48 Ejercicio 2: Suponga que se compran 3 camisetas a 100 lempiras cada una. considerando que para compras superiores a 500 lempiras se dará un descuento del 10% y que el comprador debe pagar el 12% por concepto de impuesto sobre ventas (ISV) Entender el problema Ejercicio 1: Se compra una docena de camisas a 130 lempiras cada una. calcular el total a pagar. el valor de la compra queda en 1560-156=1404 lempiras.12=168. Prueba de escritorio  Decisión doble . Una decisión es doble cuando se tiene un curso de acción para el caso que el resultado de evaluar la condición sea verdadero y otro para cuando sea falso. El formato general de esta estructura es la siguiente: Ejemplo: Observe el siguiente segmento de pseudocódigo: El diagrama correspondiente al ejemplo anterior es el siguiente: . Entender el problema . . numérica b el intercepto con el eje . y1.Declaración de los datos: Datos de entrada x1. numérico y ó msg: "Pendiente no definida". secuencia de caracteres Prueba de escritorio Problema 2. x2 y y2 las coordenadas de los dos puntos. numéricos Datos de salida m la pendiente. Determinar cual es el mayor de tres números enteros. b y c para determinar el mayor de los tres se debe comparar su magnitud. para auxiliarse se construye el siguiente esquema Declaración de los datos: Dato de entrada a.Entender el problema Dados tres números a. b y c tres números Datos de salida mayor : el numero mayor Pseudocódigo y Diagrama de flujo . en que se debe seleccionar entre varios valores que puede tomar una variable.Prueba de escritorio Como podemos observar. en el problema anterior se presenta el caso en que es necesario verificar varias condiciones para encontrar el número mayor. esto se prueba por decisiones sucesivas hasta que ocurre una condición verdadera o hasta que se termina de verificar . este tipo de construcciones se conoce como Decisiones anidadas.  Decisión múltiple Es una extensión de la decisión doble. Las decisiones anidadas pueden construirse utilizando decisiones simples o dobles de acuerdo a la naturaleza del problema. numérico op: operador. luego se ejecutan las instrucciones correspondientes a la situación dada. Problema 1. el operador puede ser de suma. o sea el operador puede tomar cuatro valores. carácter Dato de salida r: resultado de la operación. resta. numérico op2: segundo operando. numérico Fórmulas: Pseudocódigo . división o multiplicación.todos los posibles valores. Declaración de los datos: Datos de entrada op1: primer operando. Se desea efectuar operaciones aritméticas de acuerdo al operador indicado. la estructura CASO. El formato general de esta estructura es la siguiente: .Instrucción CASO La decisión múltiple también se puede representar en pseudocódigo utilizando una estructura incluida en la mayoría de los lenguajes de programación. en la que se determina el valor de una variable llamada selectora y la que se compara con un valor constante que determina el curso de acción entre varias posibilidades. La instrucción Sino es opcional: Si ninguna constante coincide con el contenido de la variable selectora se continúa ejecutando la instrucción que esta después de la palabra reservada Fin caso El pseudocódigo correspondiente al problema anterior es el siguiente: . Diagrama de flujo . En una empresa le aumentarán el salario a los empleados de acuerdo a la escala salarial en que se encuentren: 5%. 10% y 15% a los empleados en las .Problema 2. Diseñe el algoritmo para calcular el nuevo salario del empleado de acuerdo a su escala salarial. María Castro esta en la escala 4 y tiene un salario actual de 3. De acuerdo a la escala salarial le corresponde el 20% de aumento. Ejercicio 2. Declaración de los datos: Datos de entrada sa: salario actual es: escala salarial Datos de trabajo va: valor del aumento Pa: porcentaje de aumento Datos de salida ns: nuevo salario Tipo: todos numéricos Fórmulas: va=sa*pa ns=sa+va . Entender el problema Ejercicio 1.800 lempiras. Ejercicio 3. De acuerdo a la escala salarial le corresponde el 15% de aumento.000 lempiras.000 lempiras. esta en la escala 3 y tiene un salario actual de 12. el aumento es igual a 600 lempiras y el nuevo salario es de 3600 lempiras. Carlos Santos esta en la escala 1 y tiene un salario actual de 5.escalas 1. Juan Pablo Morales.000 lempiras. el aumento es igual a 250 lempiras y el nuevo salario es de 5250 lempiras. De acuerdo a la escala salarial le corresponde el 5% de aumento. el aumento es igual a 1800 lempiras y el nuevo salario es de 13. 2 y 3 respectivamente y 20% para cualquier otra escala. . Nº de Sa caso es pa va ns 1 12000 3 0. calcular la media aritmética  2) Un profesor incentivará a los alumnos que obtengan promedio final mayor que 98%.00 5. b y c que denotan las longitudes de tres segmentos.05 250 5250 3 3000 4 0.20 600 3600 SALIDA 13.600. calcule la nota final obtenida por un alumno  3) Dados tres números positivos a.250.00 Utilizando Caso Problemas propuestos  1) Dada la suma de n números. Si se realizaron tres exámenes valorados en 80% y un acumulativo valorado en 20% . asignándoles una nota final de 100%. determinar si con ellos se forma un triángulo.00 3. Según un .15 1800 13800 2 5000 1 0.800. Ejemplo si se ingresa 12 3 2009. Esta política de descuento se aplica únicamente a la venta de medicinas.  5) Dada una fecha en el formato dd/mm/aaaa. verificar si esta correcta. Además esta farmacia tiene la política de otorgar un descuento del 15 por ciento si se trata de un infante menor de 10 años y del 10 por ciento en cualquier otro caso. se ha establecido la siguiente tarifa diaria para la temporada de verano: habitación sencilla 350 lempiras. si tiene nota mayor de 80 hasta 90 como excelente. corresponderá al 12 de marzo del 2009 y esta correcta.  ESTRUCTURAS ITERATIVAS . pero si se ingresa 32 1 2009. mayor de 59 hasta 70 como bueno y si la nota es menor como reprobado. derecho al 20 por ciento de descuento en las farmacias. Dada la nota final indicar el nivel obtenido por el alumno. habitación doble 600 lempiras. sabiendo que el adulto mayor (personas con edad mayor o igual a 60 años) tiene por ley.teorema de Geometría se deben cumplir las tres desigualdades siguientes: a+b>c. Si se cumplen las tres condiciones calcular el semiperímetro y el área del triángulo por la fórmula de Herón:  4) En un grupo se requiere clasificar a los alumnos de la siguiente manera: si el alumno tiene nota final mayor a 90 debe clasificarse como sobresaliente. a+c>b y b+c>a. el de una habitación sencilla de lujo 1000 lempiras y el de una doble de lujo 2500 lempiras. hay error en el día. Calcular el total a pagar por un cliente que se hospeda en dicho hotel. y considere el impuesto sobre ventas que actualmente es del 12 porciento.  6) Calcular el valor a pagar por la compra de medicinas en una farmacia.  7) En Hotel Playa Dorada. Si la estadía es de tres días o más se da un descuento del 10 porciento y se tiene derecho al desayuno. si la nota es mayor de 70 hasta 80 como muy bueno. se ejecuta de nuevo el cuerpo del ciclo. . para que el ciclo no se torne infinito. En el diagrama de flujo se utiliza el símbolo de subproceso para indicar al cuerpo del ciclo y la repetición se indica con un flujo de retorno al cuerpo del ciclo. En algunos casos el número de veces que se repetirá el grupo de instrucciones se conoce con anterioridad mientras que en otros casos depende de resultados de cálculos o del valor que tome una variable durante la ejecución del algoritmo. se indica que se ejecuta el cuerpo del ciclo. primero se ejecuta el bloque de instrucciones (I) y luego se evalúa la condición (C). se ejecuta nuevamente el cuerpo del ciclo y si es verdadero termina la repetición y se ejecuta la instrucción que está después de la palabra reservada Hasta. al encontrarse la palabra reservada Hasta se evalúa la condición. también llamada repetitiva. cuando al ejecutarse el algoritmo se encuentra la palabra reservada Repita.Cuando en la ejecución de la tarea es necesario que se ejecute varias veces el mismo grupo o bloque de instrucciones. En la representación en pseudocódigo. Esta estructura también se conoce como ciclo y el grupo o bloque de instrucciones que debe repetirse se denomina cuerpo del ciclo. que puede tomar un valor lógico verdadero o falso. se continúa de esta manera hasta que el resultado de evaluar la condición (C) sea verdadero. si el resultado es falso. Si el resultado es falso.. se utiliza la estructura iterativa. Se definen dos tipos de estructuras repetitivas: el ciclo repita y el ciclo mientras  Ciclo Repita En esta construcción lógica. Es importante tener en cuenta que en el cuerpo del ciclo debe incluirse la instrucción que haga eventualmente verdadera la condición de salida. se suma p veces el valor de q o q veces el valor de p. Ejercicio: si p=12 y q=3. Ejemplo 1: Problema 1: El algoritmo de la multiplicación de dos números enteros p y q Entender el problema La solución de este problema es simple. Declaración de los datos Datos de entrada: p el primer factor q el segundo factor . se suma 3 veces el valor 12 y se obtiene 36 ó de forma alternativa se suma 12 veces el valor 3 y se obtiene el valor 36. ya que la condición se verifica al terminar de ejecutar el cuerpo del ciclo.Además obsérvese que el cuerpo del ciclo se ejecuta al menos una vez. Tabular una función lineal cualquiera en n puntos. Por ejemplos: si y=2x+1. se obtiene: . tabulando la función en 5 puntos comenzando en x=-2. comenzando en un valor inicial y con incrementos de la unidad.Dato de salida: r el resultado de la multiplicación Dato de trabajo: c el contador Tipo: todos numéricos Pseudocódigo y diagrama de flujo Prueba de escritorio Problema 2. numéricos Datos de Salida: ms: "Pendiente no definida" y: el valor de la función en el punto x (numérico) Formulas: Pseudocódigo .x y -2 -3 -1 -1 0 1 1 3 2 5 El ejemplo es similar al problema 1 presentado en el tema de la decisión doble Declaración de los datos: Datos de entrada: x1. y1. numéricos Datos de trabajo: m la pendiente b el punto de intersección con el eje y. x2 y y2 las coordenadas de los dos puntos x: el valor inicial a tabular n: el número de puntos a tabular. Prueba de escritorio Diagrama de flujo . Problema 3. se escribe el contenido de la variable y se le suma el valor uno. Mostrar los números del 1 al 10 Entender el problema Se inicializa una variable con el valor uno. se repite la operación hasta que el valor de la variable sea mayor que diez. Declaración de los datos: .
Copyright © 2024 DOKUMEN.SITE Inc.