algoritmos y solucion de problemas

32
UNIVERSIDAD MILITAR “NUEVA GRANADA” CENTRO DE SISTEMAS 1 UNIDAD 4: ALGORITMOS Y SOLUCION DE PROBLEMAS En la presente unidad se encuentran estrategias para resolver problemas a través de algoritmos. Además permitirá comprender cómo se elabora en términos generales un programa sencillo en C++, esto es, programas con una serie de instrucciones paso a paso, que pueden generar unidades independientes, ejecutando cada enunciado en el orden literal de sus COMANDOS. 4.1 SOLUCIÓN DE PROBLEMAS La principal razón para que las personas aprendan a programar en general y los lenguajes de programación en particular, es utilizar el computador como una herramienta para la solución de problemas. La solución de un problema se debe realizar en los siguientes pasos: Leer e identificar el tipo de problema: A través de la lectura comprensiva se identifica qué clase de problemas se va a resolver, qué valores (variables de procesos) y cálculos (operaciones aritméticas y lógicas) se requieren para conseguir dichos resultados. Análisis del problema: Consiste en identificar qué valores o datos proporciona el problema (variables de entradas), qué valores (variables de procesos) y cálculo (operaciones aritméticas y lógicas) se requieren para conseguir dichos resultados (Variables de salida). Generación de una solución: Mediante la utilización de expresiones (seudo-código) o símbolos gráficos convencionales (diagrama de flujo) que muestren la secuencia lógica para obtener resultados propuestos. Comprobación de resultados: Permite controlar si la solución dada al problema es la adecuada o no, y garantizar que al codificarse funcione correctamente, mediante una prueba de escritorio. Codificación, prueba y ejecución: se codifica el programa en el lenguaje de computador seleccionado y si es necesario se almacena o no en un dispositivo de almacenamiento secundario para su posterior utilización. Uso y mantenimiento: Comprobada suficientemente la solución, se comienza a procesar los datos necesarios para obtener los resultados esperados; el programa debe estar actualizándose permanentemente si se presentan nuevos requerimientos por parte del usuario. 4.2 ALGORITMOS Debido a que el computador no tiene la capacidad de solucionar problemas, se le deben proporcionar los pasos sucesivos a realizar. Un algoritmo es un conjunto de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un sistema específico o un tipo de problema. Las características de un algoritmo son:

Upload: andres-gil

Post on 26-Sep-2015

240 views

Category:

Documents


2 download

DESCRIPTION

al

TRANSCRIPT

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    1

    UNIDAD 4: ALGORITMOS Y SOLUCION DE PROBLEMAS

    En la presente unidad se encuentran estrategias para resolver problemas a travs de algoritmos. Adems permitir comprender cmo se elabora en trminos generales un programa sencillo en C++, esto es, programas con una serie de instrucciones paso a paso, que pueden generar unidades independientes, ejecutando cada enunciado en el orden literal de sus COMANDOS.

    4.1 SOLUCIN DE PROBLEMAS

    La principal razn para que las personas aprendan a programar en general y los lenguajes de programacin en particular, es utilizar el computador como una herramienta para la solucin de problemas. La solucin de un problema se debe realizar en los siguientes pasos: Leer e identificar el tipo de problema: A travs de la lectura comprensiva se

    identifica qu clase de problemas se va a resolver, qu valores (variables de procesos) y clculos (operaciones aritmticas y lgicas) se requieren para conseguir dichos resultados.

    Anlisis del problema: Consiste en identificar qu valores o datos proporciona el problema (variables de entradas), qu valores (variables de procesos) y clculo (operaciones aritmticas y lgicas) se requieren para conseguir dichos resultados (Variables de salida).

    Generacin de una solucin: Mediante la utilizacin de expresiones (seudo-cdigo) o smbolos grficos convencionales (diagrama de flujo) que muestren la secuencia lgica para obtener resultados propuestos.

    Comprobacin de resultados: Permite controlar si la solucin dada al problema es la adecuada o no, y garantizar que al codificarse funcione correctamente, mediante una prueba de escritorio.

    Codificacin, prueba y ejecucin: se codifica el programa en el lenguaje de computador seleccionado y si es necesario se almacena o no en un dispositivo de almacenamiento secundario para su posterior utilizacin.

    Uso y mantenimiento: Comprobada suficientemente la solucin, se comienza a procesar los datos necesarios para obtener los resultados esperados; el programa debe estar actualizndose permanentemente si se presentan nuevos requerimientos por parte del usuario.

    4.2 ALGORITMOS

    Debido a que el computador no tiene la capacidad de solucionar problemas, se le deben proporcionar los pasos sucesivos a realizar. Un algoritmo es un conjunto de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para resolver un sistema especfico o un tipo de problema. Las caractersticas de un algoritmo son:

  • MANUAL DE PROGRAMACIN EN C++

    2

    Debe ser preciso: Debe indicar el orden de realizacin de cada paso. Debe estar definido: Si se sigue un algoritmo dos veces, se debe obtener el mismo

    resultado. Debe ser finito: Tiene un fin, un nmero determinado de pasos. Para la realizacin de cualquier actividad, se utilizan los algoritmos con el propsito de llegar a los resultados esperados. La diferencia entre un algoritmo para resolver una tarea corriente y un algoritmo para resolver un problema por computador, es que el ltimo debe ser expresado con la lgica del computador. La informacin proporcionada al algoritmo constituye su entrada y la informacin producida por el algoritmo constituye su salida. Los problemas complejos se pueden resolver ms eficientemente en el computador, cuando se rompen en subproblemas que sean ms fciles de solucionar que el original y si es necesario dividir estos subproblemas en otros ms simples. Este tipo de metodologa se le denomina diseo descendente (top-down design).

    4.3 METODOLOGIA DE DESARROLLO DE ALGORITMOS: DIAGRAMA DE FLUJO Y PSEUDOCDIGO

    Normalmente se disea el algoritmo en un primer esbozo utilizando pocos pasos, luego se describe cada uno para ampliar detalladamente estos pasos, generando un nivel de refinamiento necesario para que el algoritmo sea claro, preciso y completo. Existen dos formas principales de representar un algoritmo: a travs de pseudocdigo que utiliza texto en espaol, y diagramas de flujo que es una representacin grfica y trabaja con smbolos especiales.

    Pseudocdigo

    Es la forma de escribir un algoritmo utilizando texto en espaol.

    Tipo de Instruccin Pseudocdigo espaol

    Comienzo de proceso Inicio

    Fin de proceso Fin

    Entrada (lectura) Leer

    Salida (escritura) Escribir

    Asignacin B 7 Selectiva si-entonces

    Repetitivas Para, fin_para, mientras, fin_mientras Ejemplo 1. Disee un algoritmo para ver una pelcula

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    3

    PSEUDOCODIGO PSEUDOCODIGO CON REFINAMIENTO

    Inicio Inicio

    Invitar a cine Invitar a cine

    Consultar la cartelera de cine Consultar la cartelera de cine

    Si no proyectan Madagascar II entonces decidir otra pelcula

    Trasladarse al teatro Si proyectan Madagascar II entonces trasladarse a la sala de cine

    Hacer fila Si hay cola, entonces ponerse en ella

    Comprar entradas Hacer avanzar la cola

    Si existen boletas disponibles, entonces comprar entradas

    Entrar a la sala Entrar a la sala y buscar asiento

    Ver la pelcula Mientras proyectan la pelcula, ver

    Abandonar la sala de cine Abandonar la sala de cine

    Volver a casa Volver a casa.

    Fin Fin Ejemplo 2. Disee un algoritmo para hacer la solicitud de un crdito en un banco. PSEUDOCODIGO Inicio Leer la solicitud Examinar tarjeta del cliente y capacidad de endeudamiento Si el cliente es solvente y cumplido entonces aprueba el crdito Si no rechaza el crdito Fin Ejemplo 3. Disee un algoritmo para leer un nmero y escribir su cuadrado: PSEUDOCODIGO Inicio Leer A (en A se almacenar el nmero) B A * A (en B se almacenar el resultado de la operacin) Escribir B Fin Aspectos a considerar en los ejemplos anteriores:

  • MANUAL DE PROGRAMACIN EN C++

    4

    Utilice palabras reservadas como: si, inicio, mientras, sino, entonces, leer, escribir. Elija un mtodo para escribir los algoritmos:

    o El empleo de la indentacin (sangra o justificacin). o El uso de comentarios para documentar el algoritmo.

    Diagramas de flujo Es una tcnica de representacin de algoritmos ms antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin de lenguaje de programacin orientado a objetos. Un diagrama de flujo utiliza los smbolos (caja) unidos por flechas, denominados lnea de flujo, que indican la secuencia en que se deben ejecutar. Existen diversos tipos de diagramas de flujos, bsicamente se encuentran tres tipos: de sistema, de bloque y detalle. Los diagramas de flujos de sistema u organigramas de sistema, representan la relacin existente entre los diferentes soportes fsicos que contienen la informacin necesaria para la ejecucin de un proceso. Los diagramas de bloques o macro procesos, muestran la estructura de los mdulos que conforman la solucin del problema y el flujo existente entre ellos. Los diagramas de flujo de detalle, son los que muestran la secuencia paso a paso para la solucin de un problema que va a ser ejecutado en un procesador. Un software diseado para construir y analizar algoritmos, es el DFD. Usted puede crear diagramas de flujo de datos para la representacin de algoritmos de programacin estructurada a partir de las herramientas de edicin que para ste propsito suministra el programa. Despus de haber ingresado el algoritmo representado por el diagrama, podr ejecutarlo, analizarlo y depurarlo en un entorno interactivo diseado para ste fin. La interfaz grfica de DFD, facilita en gran medida el trabajo con diagramas ya que simula la representacin estndar de diagramas de flujo en hojas de papel. DFD posee una ventana principal que proporciona el ambiente de trabajo en donde se pueden construir y analizar algoritmos. Los componentes bsicos de la ventana principal son: La barra de men, barras de herramientas, barras de desplazamiento y el rea de trabajo.

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    5

    Para la elaboracin de un diagrama de flujo se deben tener en cuenta los siguientes aspectos: 1. Comrpender claramente el problema a resolver.

    2. Iniciar desde arriba hacia abajo y de izquierda a derecha.

    3. Identificar con claridad cada uno de los pasos secuenciales, ya sea una instruccin o

    toma de decisiones.

    4. Una vez terminado, hacer seguimiento paso a paso para verificar su funcionalidad.

    SIMBOLOGIA BSICA Para la solucin de algoritmos empleando la tcnica del Diagrama de Flujo de detalles, se utiliza una serie de smbolos para representar las diferentes acciones, los smbolos que utiliza el programa DFD, son:

    FUNCION

    SIMBOLOS PRINCIPALES Inicio o fin de un programa

    Entrada o lectura de datos o informacin

    Salida o escritura de datos o informacin

    Asignacin, operacin o proceso de datos

    Decisin, permite seleccin de alternativa

    Indicador de direccin o lnea de flujo.

    Representa estructuras repetitivas, ciclo para, ciclo mientras.

  • MANUAL DE PROGRAMACIN EN C++

    6

    Otros programas de elaboracin de diagramas de flujo, permiten tener smbolos ms explcitos, que indican el dispositivo de entrada o de salida:

    Smbolos de Salida Smbolos de Entrada

    Impresora Pantalla Teclado Disco Cinta

    Ejemplo: Calcular y escribir el rea de un tringulo. Variables: BASE, ALTURA, AREA

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio Leer BASE, ALTURA AREA BASE * ALTURA /2 Escribir AREA Fin

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    7

    4.4 PRUEBA DE ESCRITORIO La forma para comprobar que las operaciones y los resultados que arrojan los algoritmos sean los esperados es realizar una prueba de escritorio. La prueba de escritorio se realiza lnea por lnea y consiste en asignar datos especficos a las variables de entrada o de lectura, y seguir la secuencia de las instrucciones realizando el seguimiento a cada una de las variables que se emplean dentro del algoritmo, hasta los resultados o datos de salida. Al analizar estos resultados se puede determinar si el algoritmo esta correcto o si es necesario realizar algn ajuste o cambio. Se denomina prueba de escritorio a la comprobacin que se hace de un algoritmo para saber si est bien hecho. Esta prueba consiste en tomar datos especficos como entrada y seguir la secuencia indicada en el algoritmo hasta obtener un resultado, el anlisis de estos resultados indicar si el algoritmo est correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes. Ejemplo: Leer un nmero, calcular y escribir el cuadrado y el cubo del nmero.

    PSEUDOCODIGO PRUEBA DE ESCRITORIO

    1. Inicio 2. Leer NUMERO 3. CUADRADO NUMERO * NUMERO 4. CUBO NUMERO*NUMERO*NUMERO 5. Escribir CUADRADO, CUBO 6. Fin

    NUMERO CUADRADO CUBO

    Lnea 2 5 Lnea 3 25 Lnea 4 125

    Los resultados son el cuadrado 25 y el cubo 125

    4.5 ESTRUCTURA SECUENCIAL Los algoritmos donde la ejecucin comienza en la primera instruccin y prosigue hasta la ltima de ellas presentan una estructura secuencial o lineal. La estructura secuencial se representa de la siguiente manera:

    Inicio Instruccin 1 Instruccin 2 . . Instruccin N

    Fin

  • MANUAL DE PROGRAMACIN EN C++

    8

    Ejemplo 1. Dada una cantidad en pesos calcular y escribir su equivalencia en Dlares y Euros. Sabiendo que el valor del dlar es $2230 y el Euro $3030. Variables: P: Cantidad en Pesos, Dlar: equivalencia en dlares, Euro: equivalencia en Euros

    PSEUDOCODIGO DIAGRAMA DE FLUJO 1. Inicio 2. Leer P 3. DOLAR P /2230 4. EURO P /3030 5. Escribir DOLAR, EURO 6. Fin

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    9

    La prueba de escritorio ser:

    P DOLAR EURO

    Lnea 1 100000

    Lnea 2 44.44

    Lnea 3 34.12

    Ejemplo 2.

    Calcular el rea de un triangulo en funcin de las longitudes de sus lados.

    AREA= ))()(( CPBPAPP , donde P=(A+B+C)/2. Variables: A:lado , B: lado, C: lado, P: semiperimetro, AREA: rea.

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio Leer A,B,C P (A+B+C) /2 AREA RaizCuadrada(P*(P-A)*(P-B)*(P-C)) Escribir AREA Fin

    Ejemplo 3. Calcular y escribir el salario neto de un trabajador dado el nmero de horas y el valor de la hora y sabiendo que el tasa de impuesto que se le debe deducir es del 2%. Variables: N: nmero de horas, V: valor hora, Sb: salario bsico (antes de impuesto), I: impuesto, S: salario neto

  • MANUAL DE PROGRAMACIN EN C++

    10

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio Leer N,V Sb N * V I Sb * 0.02 S Sb - I Escribir S Fin

    4.6 ESTRUCTURA SELECTIVA Los algoritmos hasta aqu escritos presentan una estructura secuencial. Sin embargo en ocasiones se necesita tener la posibilidad de controlar cuales son las instrucciones que se deben ejecutar y en qu momento, para esto los compiladores traen instrucciones que le permiten al programador elegir entre una u otras alternativas. Las condicionales son expresiones booleanas, que se emplean para controlar la secuencia en que deben ejecutarse los pasos de un algoritmo. Generan un valor verdadero (1) o falso (0), esto es pueden tomar dos valores: verdadero (true) y falso (FALSE). Las instrucciones condicionales controlan si una instruccin o lista de instrucciones se ejecutan en funcin del cumplimiento o no, de una condicin Esta instruccin la denominaremos si y tiene la siguiente forma:

    si (condicin) entonces instrucciones sino instrucciones fin_si

    La condicin es una expresin booleana, si el valor generado es verdadero entonces se ejecutan las instrucciones que siguen a la palabra entonces. Si el valor generado por la condicin es falso, se ejecutan las instrucciones que siguen a la palabra sino, en caso de

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    11

    que no se requieran especificar instrucciones por falso, simplemente se omite esta parte y las instrucciones por verdadero no se ejecutaran:

    si (condicin) entonces instrucciones fin_si

    Ejemplo 1.

    Inicio

    Leer x, y si (x

  • MANUAL DE PROGRAMACIN EN C++

    12

    Permiten enlazar condiciones simples para formar otras ms complejas; las condiciones son enlazadas entre s por medio de los operadores lgicos. Por ejemplo:

    a > b y a > c x != y x = z no (a > b) y no (x = y)

    Ejemplo:

    Inicio

    Leer a si (a20) entonces x 3 sino x 0 fin_si Escribir x Fin En el ejemplo anterior si la condicin es verdadera (por ejemplo si a=3) se le asigna 3 a x; en caso de que sea falso (por ejemplo x=15) se le asigna 0 a x.

    Representacin de los condicionales en diagramas de flujo Para representar un condicional se utiliza un rombo: En caso que no se quieran especificar instrucciones por falso: Cuando se quieran especificar instrucciones por falso y verdadero:

    CONDICION SI NO

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    13

    A continuacin presentamos unos ejemplos grficos de enunciados de decisin: COMPOSICION EJEMPLO Variable: Constante

    Variable: Variable

    Variable: Expresin

    Expresin: Expresin

    Ejemplo 1. Leer un nmero y escribir si es mayor o menor o igual que 100

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio Leer numero si (numero > 100) entonces escribir mayor sino escribir menor o igual fin_si Fin

    SUELDO > 500000

    NO SI

    PAS=NUEVO

    NO SI

    INTE = A+B

    NO SI

    A*B != C/E

    NO SI

  • MANUAL DE PROGRAMACIN EN C++

    14

    Ejemplo 2. Leer dos nmeros, y determinar cual es el mayor. Variables: N1: Numero N2: Numero

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio Leer N1, N2 si (N1 > N2) entonces escribir N1 sino escribir N2 fin_si Fin

    4.7 ESTRUCTURAS REPETITIVAS En la elaboracin de programas es importante que existan instrucciones que permiten que el computador ejecute un grupo de instrucciones varias veces sin tener que volverlas a escribir, estas son: la instruccin mientras que y la instruccin para.

    4.7.1 BUCLES E ITERACIONES Un bucle o ciclo es un pedazo de algoritmo, cuyas instrucciones se repiten un nmero determinado de veces mientras se cumple una determinada condicin. Un bucle consta de tres partes fundamentales: DECISION (simple o compuesta), CUERPO

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    15

    DEL BUCLE y la SALIDA DEL BUCLE. Una iteracin es la ejecucin de todas las instrucciones del ciclo. Los bucles pueden ser sencillos o anidados (ciclos dentro de otros ciclos).

    Contador Los procesos repetitivos son la base del uso del computador. En estos procesos se necesita normalmente contar los sucesos o acciones internas del bucle. Una forma de controlar un bucle es mediante un contador. Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante por cada iteracin. El formato general es: CONTADOR CONTADOR + CANTIDAD CONSTANTE Ejemplo: Z Z + 2, donde Z se incrementa en 2 en cada iteracin.

    Acumulador Es una variable cuya misin es almacenar por cada iteracin, cantidades variables resultantes de sumas o productos sucesivos. El formato general es: ACUMULADOR ACUMULADOR + CANTIDAD VARIABLE ACUMULADOR ACUMULADOR * CANTIDAD VARIABLE Ejemplo:

  • MANUAL DE PROGRAMACIN EN C++

    16

    S S+N, donde N es una variable y no una constante.

    INSTRUCCIN MIENTRAS QUE La instruccin mientras, nos permite ejecutar una instruccin o un grupo de instrucciones un nmero determinado de veces, mientras se cumple una condicin. Esta instruccin es utilizada, cuando no se sabe el nmero de veces que va a ocurrir el ciclo. La representamos en pseudocdigo de la siguiente forma:

    mientras (condicin) hacer instrucciones fin_mientras

    En los diagramas de flujo la representamos con un rectngulo terminado en puntas:

    Ejemplo 1. Sumar una serie de nmeros, el programa solicita los nmeros por teclado hasta que se digite el numero -1 Variables: SU: Acumulador (suma de los nmeros), NU: Numero

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    17

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio SU 0 Leer NU mientras (NU != -1) hacer SU SU + NU leer NU fin_mientras Escribir SU Fin

  • MANUAL DE PROGRAMACIN EN C++

    18

    Ejemplo 2. Calcular el promedio de las notas de un grupo de alumnos. El programa finaliza el ingreso de notas cuando se digite el cdigo 999. Variables: N: Nota, SN: Suma de notas, C: Cdigo, CN: Cantidad de notas,

    PN: Promedio de notas

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio SN 0 CN 0 Leer C

    mientras ( C != 999) hacer leer N SN SN + N CN CN + 1

    leer C fin_mientras

    PN SN / CN Escribir PN Fin

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    19

    INSTRUCCIN PARA

    La instruccin para permite repetir una instruccin o un grupo de instrucciones un nmero determinado de veces. Esta instruccin solo es utilizada cuando se sabe el nmero exacto de veces que va a ocurrir un ciclo. La representamos en el pseudocdigo de la siguiente forma:

    para Variable valor_inicial , valor_final , incremento haga instrucciones

    fin_para En los diagramas de flujo la representamos con un rectngulo terminado en puntas:

  • MANUAL DE PROGRAMACIN EN C++

    20

    Ejemplo 1. Sumar 10 nmeros introducidos por teclado: Variables: SU: Acumulador (Suma de los nmeros), NU: Numero que es introducido por teclado, i: Contador que controla el ciclo para

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio SU 0 para i 1, 10, 1 haga Leer NU SU SU + NU fin_para Escribir SU Fin

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    21

    Ejemplo 2. Calcular y escribir el factorial de un nmero dado por el usuario. Variables: NUM: Numero, F: Factorial

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio F 0 Leer NUM para X 1, NUM, 1 haga F F * X fin_para escribir F

    Fin

  • MANUAL DE PROGRAMACIN EN C++

    22

    Ejemplo 3 Leer 10 nmeros, calcular y escribir la cantidad de nmeros positivos y la cantidad de nmeros negativos. Variables: NUM: Numero, CP: Cantidad de nmeros positivos, CN: Cantidad de nmeros negativos.

    PSEUDOCODIGO DIAGRAMA DE FLUJO

    Inicio CP 0 CN 0 para X 1, 10, 1 haga Leer NUM si (NUM>=0) Entonces CP CP + 1 sino CN CN + 1 fin_si fin_para Escribir CP, CN

    Fin

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    23

    4.7.2 ANIDACIN DE ESTRUCTURAS Cuando tenemos que evaluar ms de dos condiciones es necesario emplear estructuras selectivas anidadas o mltiples, es decir tener un si dentro de otro si y seguir anidando segn sea el tipo de problema. En algunos casos es necesario emplear ms de un ciclo, en estos algoritmos se deben crear estructuras repetitivas anidadas. Cada vez que se ejecuta una iteracin del ciclo externo se ejecuta todo el ciclo interno. Podemos encontrar los siguientes esquemas de ciclos anidados:

    Las estructuras que se pueden anidar son las selectivas o condicionales y las repetitivas.

    CONDICIONALES ANIDADOS

    En ocasiones es necesita tener la posibilidad de controlar las instrucciones que se deben ejecutar entre ms de una alternativa, en cumplimiento de dos o ms condiciones. La instruccin si, puede incluir otras instrucciones si. En este caso se dice que las instrucciones si estn anidadas. Esta instruccin si anidada, tiene la siguiente forma: si (condicin1) entonces instrucciones sino si (condicin2) entonces instrucciones sino instrucciones fin_si fin_si

  • MANUAL DE PROGRAMACIN EN C++

    24

    En la forma anterior, se tienen dos condiciones para tres posibilidades de instrucciones. Ntese que en la negacin de la primera condicin, resulta el segundo si, que nos permite evaluar las dos posibilidades de la segunda condicin. Otra forma sera que el segundo si, estuviera por la afirmacin de la primera condicin, con lo cual tendra la siguiente apariencia: si (condicin1) entonces si (condicin2) entonces instrucciones sino instrucciones fin_si sino instrucciones fin_si Se acepta un nmero indeterminado de si anidados, que depende de la habilidad del programador para controlar todas las posibilidades. A continuacin se presenta un ejemplo de cuatro condicionales: si (condicin1) entonces si (condicin2) entonces si (condicin3) entonces si (condicin4) entonces instrucciones1 sino instrucciones2 fin_si sino instrucciones3 fin_si sino instrucciones4 fin_si sino instrucciones5 fin_si Ejemplo 1:

    Leer un nmero y escribir si es menor que cero, igual a cero o mayor que cero. Variable: NUMERO

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    25

    PSEUDOCODIGO

    Inicio leer NUMERO si (NUMERO < 0) entonces escribir menor que cero sino si (NUMERO = 0) entonces escribir igual a cero sino escribir mayor que cero fin_si fin_si fin

    DIAGRAMA DE FLUJO

  • MANUAL DE PROGRAMACIN EN C++

    26

    Ejemplo 2: Leer un carcter, determinar si es una letra, un nmero, otro carcter. Variables: C: Carcter

    PSEUDOCODIGO

    Inicio leer C si (C>=a y C=0 y C

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    27

    Ejemplo 3: Leer tres nmeros, determinar cul es el mayor. Variables: A: Numero 1, B: Numero 2, C: Numero 3

    PSEUDOCODIGO

    Inicio leer A, B, C si (A > B y A>C) entonces escribir A sino si (B>A y B>C) entonces escribir B sino escribir C fin_si fin_si fin

    DIAGRAMA DE FLUJO

  • MANUAL DE PROGRAMACIN EN C++

    28

    REPETITIVAS ANIDADAS

    Es posible anidar ciclos o bucles. Los bucles anidados constan de un bucle externo con uno o ms bucles internos. Cada vez que se repite el bucle externo, los bucles internos se repiten. Ejemplo 1: Calcular y escribir las tablas de multiplicar del 1 al 5 Variables: i: Variable del ciclo externo (multiplicando), j: Variable del ciclo interno (multiplicador), R: Resultado del producto

    PSEUDOCODIGO

    DIAGRAMA DE FLUJO

    Inicio para i 1, 5, 1 haga para j 1, 10, 1 haga R i * j escribir i, j, R fin_para fin_para Fin

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    29

    EJEMPLO 2: Calcular y escribir el factorial de 5 nmeros dados por el usuario. Variables: NUM: Numero, F: Factorial, X: Variable del ciclo externo (cantidad de nmeros), Y: Variable del ciclo interno (clculo del factorial)

    PSEUDOCODIGO

    DIAGRAMA DE FLUJO

    Inicio

    para X 1, 5, 1 haga F 1 leer NUM para Y 1, NUM, 1 haga F F * X fin_para escribir F fin_para

    fin

  • MANUAL DE PROGRAMACIN EN C++

    30

    EJEMPLO 3: Para un conjunto de nmeros, calcular y escribir la suma de 1 hasta cada nmero. El programa termina cuando se digite el numero 111. Variables: N: Numero, SUM: Suma, X: Variable del ciclo interno (de 1 hasta el numero).

    PSEUDOCODIGO

    DIAGRAMA DE FLUJO

    Inicio

    Leer N Mientras (N!=111) hacer SUM 0 para Y 1, NUM, 1 haga F F * X fin_para escribir SUM leer N fin_mientras

    fin

  • UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

    31

    EJEMPLO 4: Calcular y escribir el resultado de las tablas de multiplicar del 1 hasta el 5 con multiplicador hasta 10. Variables: X: Multiplicando, Y: Multiplicador, R: Resultado de la multiplicacin.

    PSEUDOCODIGO

    DIAGRAMA DE FLUJO

    Inicio

    X 1 mientras (X

  • MANUAL DE PROGRAMACIN EN C++

    32

    EJEMPLO 5: Se tiene un grupo de 20 alumnos, se necesita calcular y escribir el promedio de las notas de cada uno, sabiendo que cada alumno tiene 5 notas. Variables: A: Variable de ciclo externo (numero de alumnos), N: Variable del ciclo interno (cantidad de notas), NO: Nota, SNO: Suma de notas, PROM: Promedio

    PSEUDOCODIGO

    DIAGRAMA DE FLUJO

    Inicio para A 1, 20, 1 haga

    N 1 SNO 0 mientras (N