Post on 26-Sep-2015
description
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