Anda di halaman 1dari 42

TALLER ESTRUCTURAS DE REPETICIN

SERGIO ALEJANDRO CANTILLO LUNA

UNIVERSIDAD AUTNOMA DE OCCIDENTE FACULTAD DE INGENIERIAS SANTIAGO DE CALI 2013

TALLER ESTRUCTURAS DE REPETICIN

SERGIO ALEJANDRO CANTILLO LUNA

TALLER

PROFESOR: CARLOS EDUARDO VELASQUEZ

UNIVERSIDAD AUTNOMA DE OCCIDENTE FACULTAD DE INGENIERIAS SANTIAGO DE CALI MARZO 2013

ENUNCIADOS DE LOS ALGORITMOS A DESARROLLAR

1. Se desea desarrollar un programa para conocer el puntaje de n equipos conociendo el sistema de puntos de un torneo local, 3 puntos si gana el partido, 1 punto si empata, desarrolle un algoritmo que calcule los puntos del equipo, as como el nmero de partidos ganados, empatados y perdidos.

2. Desarrollar un algoritmo que Imprima la lista de los factoriales de los nmeros de 1 hasta N (siendo N un nmero que se pide al usuario).

3. Realizar un algoritmo que Imprima los nmeros pares desde N (siendo N un nmero que se pide al usuario) de forma descendente hasta 2

4. Una papelera debe imprimir una lista de los valores para diferentes cantidades de fotocopias a sacar. El precio unitario de cada fotocopia debe leerse. realice un algoritmo que Imprima un listado teniendo en cuenta que se tiene una poltica de descuento para cantidades que se obtengan del mismo original as: el 12% para fotocopias entre 100 y 200, del 15% para fotocopias entre 201 y 400, y del 18% para fotocopias por cantidades mayores a 400.

5. Una Ferretera vende dos tipos de Cables, Cable Tipo A (200 pesos por metro) y Cable Tipo B (300 pesos por metro); realice un algoritmo que teniendo como datos por cada cliente su nombre, tipo de cable a comprar y cantidad de metros requeridos, calcule y de cmo salida el nombre y el neto a pagar por cada cliente, tomando en cuenta que existe un grupo indeterminado de ellos y que la empresa da una rebaja del 10% por cada compra que exceda de los 100 Metros de cable de cualquier tipo.

DESARROLLO 1. CICLO PARA: ANLISIS PROCESO P1: leer numequipos P2: para cuenta=1, cuenta menor o igual a numequipos y aumenta de 1 en 1 P2.1: leer partgan P2.2: si partgan>=0 P2.2.1: leer partemp P2.2.2: si partemp>=0 P2.2.1.1: leer partper P2.2.1.2: si partper>=0 P2.2.1.2.1: puntgan=partgan*3 P2.2.1.2.2:puntemp=partemp*1 P2.2.1.3: sino P2.2.1.3.1: imprimir nmero no valido P2.2.1.3.2: terminar P2.2.3: sino P2.2.3.1: imprimir nmero no valido P2.2.3.2: terminar P2.3: sino P2.3.1: imprimir nmero no valido P2.3.2: terminar P2.3.3: ganados=partgan P2.3.4: empatados=partemp P2.3.5: perdidos=partper P2.3.6: puntos=puntgan+puntemp P2.3.7: imprimir ganados, empatados, perdidos, puntos P2.4: fin_para P3: terminar cuenta<=numequipos partgan>=0 partemp>=0 partper>=0

ENTRADAS TIPO NOMBRE Entero numequipos Entero partgan Entero partemp Entero partper Entero puntgan Entero puntemp

SALIDAS TIPO NOMBRE Entero puntos Cadena ganados Cadena empatados Cadena perdidos

Condiciones

PSEUDOCDIGO /* Algoritmo que desarrolla el sistema de puntos de un torneo local con el ciclo para*/ Algoritmo puntos_Para { Principal () { //declaracin de variables Entero numequipos, partgan, partemp, partper, puntgan=0, puntemp=0, puntos=0, cuenta; Cadena ganados=, empatados=, perdidos=; //asignar el nmero de repeticiones Numequipos=leer (ingrese el nmero de equipos a averiguar); //repeticiones Para (cuenta=1; cuenta<=numequipos; cuenta++) { partgan=leer (ingrese el nmero de partidos ganados); //validar datos si (partgan>=0) { partemp=leer (ingrese el nmero de partidos empatados); si (partemp>=0) { partper=leer (ingrese el nmero de partidos perdidos); si (partper>=0) { puntgan=partgan*3; puntemp=partemp*1; } Sino { Imprimir (nmero no valido); Terminar: } } Sino { Imprimir (nmero no valido); Terminar: } } Sino { Imprimir (nmero no valido); Terminar:

} Ganados= +ganados; Empatados= +empatados; Perdidos= +perdidos; Puntos=puntgan+puntemp; Imprimir (el equipo tuvo +ganados+ triunfos, +empatados+ empates y +perdidos+ partidos perdidos para un total de +puntos+ puntos); } } }

PRUEBA DE ESCRITORIO numequipos cuenta partgan 4 1 3 2 5 3 4 4 8 5 partemp 4 6 4 0 partper 5 6 4 2 Puntgan 9 15 12 24 puntemp 4 6 4 0 puntos 13 21 16 24

CICLO MIENTRAS

ENTRADAS TIPO NOMBRE Entero numequipos Entero partgan Entero partemp Entero partper Entero puntgan Entero puntemp

ANLISIS PROCESO P1: leer numequipos P2: mientras cuenta<=numequipos haga P2.1: leer partgan P2.2: si partgan>=0 P2.2.1: leer partemp P2.2.2: si partemp>=0 P2.2.1.1: leer partper P2.2.1.2: si partper>=0 P2.2.1.2.1: puntgan=partgan*3 P2.2.1.2.2:puntemp=partemp*1 P2.2.1.3: sino P2.2.1.3.1: imprimir nmero no valido P2.2.1.3.2: terminar P2.2.3: sino P2.2.3.1: imprimir nmero no valido P2.2.3.2: terminar P2.3: sino P2.3.1: imprimir nmero no valido P2.3.2: terminar P2.3.3: ganados=partgan P2.3.4: empatados=partemp P2.3.5: perdidos=partper P2.3.6: puntos=puntgan+puntemp P2.3.7: imprimir ganados, empatados, perdidos, puntos P2.3.8: aumentar cuenta en 1 P2.4: fin_mientras P3: terminar cuenta<=numequipos partgan>=0 partemp>=0 partper>=0

SALIDAS TIPO NOMBRE Entero puntos Cadena ganados Cadena empatados Cadena perdidos

Condiciones

PSEUDOCDIGO /* Algoritmo que desarrolla el sistema de puntos de un torneo local con el ciclo mientras*/ Algoritmo puntos_Mientras { Principal () { //declaracin de variables Entero numequipos, partgan, partemp, partper, puntgan=0, puntemp=0, puntos=0, cuenta=1; Cadena ganados=, empatados=, perdidos=; //asignar el nmero de repeticiones Numequipos=leer (ingrese el nmero de equipos a averiguar); //repeticiones ciclo mientras Mientras (cuenta<=numequipos) { partgan=leer (ingrese el nmero de partidos ganados); //validar datos si (partgan>=0) { partemp=leer (ingrese el nmero de partidos empatados); si (partemp>=0) { partper=leer (ingrese el nmero de partidos perdidos); si (partper>=0) { puntgan=partgan*3; puntemp=partemp*1; } Sino { Imprimir (nmero no valido); Terminar: } } Sino { Imprimir (nmero no valido); Terminar: } } Sino { Imprimir (nmero no valido); Terminar:

} Ganados= +ganados; Empatados= +empatados; Perdidos= +perdidos; Puntos=puntgan+puntemp; Imprimir (el equipo tuvo +ganados+ triunfos, +empatados+ empates y +perdidos+ partidos perdidos para un total de +puntos+ puntos); cuenta++; } } }

PRUEBA DE ESCRITORIO

numequipos cuenta partgan 4 1 4 2 3 3 6 4 0 5

partemp 4 3 0 0

partper 4 6 6 9

Puntgan 12 9 18 0

puntemp 4 3 0 0

puntos 16 12 18 0

CICLO HAGA MIENTRAS

ENTRADAS TIPO NOMBRE Entero numequipos Entero partgan Entero partemp Entero partper Entero puntgan Entero puntemp

ANLISIS PROCESO P1: leer numequipos P2: haga P2.1: leer partgan P2.2: si partgan>=0 P2.2.1: leer partemp P2.2.2: si partemp>=0 P2.2.1.1: leer partper P2.2.1.2: si partper>=0 P2.2.1.2.1: puntgan=partgan*3 P2.2.1.2.2:puntemp=partemp*1 P2.2.1.3: sino P2.2.1.3.1: imprimir nmero no valido P2.2.1.3.2: terminar P2.2.3: sino P2.2.3.1: imprimir nmero no valido P2.2.3.2: terminar P2.3: sino P2.3.1: imprimir nmero no valido P2.3.2: terminar P2.3.3: ganados=partgan P2.3.4: empatados=partemp P2.3.5: perdidos=partper P2.3.6: puntos=puntgan+puntemp P2.3.7: imprimir ganados, empatados, perdidos, puntos P2.3.8: aumentar cuenta en 1 P2.4: fin_haga P2.5: mientras(cuenta<=numequipos) P3: terminar cuenta<=numequipos partgan>=0 partemp>=0 partper>=0

SALIDAS TIPO NOMBRE Entero puntos Cadena ganados Cadena empatados Cadena perdidos

Condiciones

PSEUDOCDIGO /* Algoritmo que desarrolla el sistema de puntos de un torneo local con el ciclo haga mientras*/ Algoritmo puntos_Mientras { Principal () { //declaracin de variables Entero numequipos, partgan, partemp, partper, puntgan=0, puntemp=0, puntos=0, cuenta=1; Cadena ganados=, empatados=, perdidos=; //asignar el nmero de repeticiones Numequipos=leer (ingrese el nmero de equipos a averiguar); //repeticiones ciclo haga mientras Haga { partgan=leer (ingrese el nmero de partidos ganados); //validar datos si (partgan>=0) { partemp=leer (ingrese el nmero de partidos empatados); si (partemp>=0) { partper=leer (ingrese el nmero de partidos perdidos); si (partper>=0) { puntgan=partgan*3; puntemp=partemp*1; } Sino { Imprimir (nmero no valido); Terminar: } } Sino { Imprimir (nmero no valido); Terminar: } } Sino { Imprimir (nmero no valido); Terminar:

} Ganados= +ganados; Empatados= +empatados; Perdidos= +perdidos; Puntos=puntgan+puntemp; Imprimir (el equipo tuvo +ganados+ triunfos, +empatados+ empates y +perdidos+ partidos perdidos para un total de +puntos+ puntos); cuenta++; } Mientras (cuenta<=numequipos); } }

PRUEBA DE ESCRITORIO numequipos Cuenta partgan 4 1 6 2 3 3 0 4 3 5 partemp 4 7 0 3 partper 4 3 10 3 Puntgan 18 9 0 9 puntemp 4 7 0 3 puntos 22 16 0 12

2. CICLO PARA ANLISIS PROCESO P1: leer N P2: si N>0 P2.1: para cuenta=1, cuenta menor o igual a N y aumenta de 1 en 1 P2.1.1: si cuenta=1 P2.1.1.1: factorial=1 P2.1.1.2: result=result+cuenta+!=+factorial+\n P2.1.2: sino P2.1.2.1: factorial=factorial*cuenta P2.1.2.2: result=result+cuenta+!=+factorial+\n P2.2: fin_para P2.3: imprimir result P3: sino P3.1: imprimir nmero negativo o cero cambiar a positivo P3.2: Terminar P4: Terminar N>0 cuenta<=N cuenta=1

ENTRADAS TIPO NOMBRE Entero N

SALIDAS TIPO NOMBRE Cadena result

Condiciones

PSEUDOCDIGO /*Algoritmo que desarrolla una lista con los nmeros y sus respectivos factoriales por medio del ciclo para */ Algoritmo factoriales_Para { Principal () { //declaracin de variables Entero cuenta, N, factorial=0; Cadena result=; //asignar el nmero de repeticiones N=leer (Ingrese hasta que numero desea averiguar el factorial); //repeticiones Si(N>0) {

Para (cuenta=1; cuenta<=N; cuenta++) { Si (cuenta=1) { factorial = 1; result = result+cuenta+!=+factorial+\n; } Sino { // realizar todos los factoriales y acumularlos factorial = factorial*cuenta; result = result+cuenta+!=+factorial+\n; } } Imprimir (result); } Sino { Imprimir (nmero negativo o cero, cambiar a positivo); Terminar; } } }

PRUEBA DE ESCRITORIO

result 1! = 1 1! = 1 2! = 2 1! = 1 2! = 2 3! = 6 1! = 1 2! = 2 3! = 6 4! = 24

N 4

cuenta 1 2 3 4

factorial 0 1 2 6

24

CICLO MIENTRAS ANLISIS PROCESO P1: leer N P2: si N>0 P2.1: Mientras cuenta menor o igual a N haga P2.1.1: si cuenta=1 P2.1.1.1: factorial=1 P2.1.1.2: result=result+cuenta+!=+factorial+\n P2.1.2: sino P2.1.2.1: factorial=factorial*cuenta P2.1.2.2: result=result+cuenta+!=+factorial+\n P2.1.3: cuenta aumenta en 1 P2.2: fin_mientras P2.3: imprimir result P3: sino P3.1: imprimir nmero negativo o cero, cambiar a positivo P3.2: Terminar P4: Terminar N>0 cuenta<=N cuenta=1

ENTRADAS TIPO NOMBRE Entero N

SALIDAS TIPO NOMBRE Cadena result

Condiciones

PSEUDOCDIGO /*Algoritmo que desarrolla una lista con los nmeros y sus respectivos factoriales por medio del ciclo mientras*/ Algoritmo factoriales_Mientras { Principal () { //declaracin de variables Entero cuenta=1, N, factorial=0; Cadena result=; //asignar el nmero de repeticiones N=leer (Ingrese hasta que numero desea averiguar el factorial);

//repeticiones Si(N>0) { mientras (cuenta<=N) { Si (cuenta=1) { factorial = 1; result = result+cuenta+!=+factorial+\n; } Sino { // realizar todos los factoriales y acumularlos factorial = factorial*cuenta; result = result+cuenta+!=+factorial+\n; } cuenta++; } Imprimir (result); } Sino { Imprimir (nmero negativo o cero, cambiar a positivo); Terminar; } } }

PRUEBA DE ESCRITORIO

Result 1! = 1 1! = 1 2! = 2 1! = 1 2! = 2 3! = 6

N 3

cuenta 1 2 3 4

factorial 0 1 2 6

CICLO HAGA MIENTRAS ANLISIS PROCESO

ENTRADAS TIPO NOMBRE Entero N

Condiciones

SALIDAS P1: leer N TIPO NOMBRE P2: si N>0 Cadena result P2.1: haga P2.1.1: si cuenta=1 P2.1.1.1: factorial=1 P2.1.1.2: result=result+cuenta+!=+factorial+\n P2.1.2: sino P2.1.2.1: factorial=factorial*cuenta P2.1.2.2: result=result+cuenta+!=+factorial+\n P2.1.2.3: cuenta aumenta en 1 P2.2: fin_haga P2.3: Mientras cuenta menor o igual a N P2.4: imprimir result P3: sino P3.1: imprimir nmero negativo o cero, cambiar a positivo P3.2: Terminar P4: Terminar N>0 cuenta=1 cuenta<=N

PSEUDOCDIGO /*Algoritmo que desarrolla una lista con los nmeros y sus respectivos factoriales por medio del ciclo haga mientras */ Algoritmo factoriales_Hagamientras { Principal () { //declaracin de variables Entero cuenta=1, N, factorial=0;

Cadena result=; //asignar el nmero de repeticiones N=leer (Ingrese hasta que numero desea averiguar el factorial); //repeticiones Si(N>0) { Haga{ Si (cuenta=1) { factorial = 1; result = result+cuenta+!=+factorial+\n; } Sino { // realizar todos los factoriales y acumularlos factorial = factorial*cuenta; result = result+cuenta+!=+factorial+\n; } cuenta++; } mientras (cuenta<=N); Imprimir (result); } Sino { Imprimir (nmero negativo o cero, cambiar a positivo); Terminar; } } }

PRUEBA DE ESCRITORIO

result 1! = 1 1! = 1 2! = 2 1! = 1 2! = 2 3! = 6

N 3

cuenta 1 2 3 4

factorial 0 1 2 6

3. CICLO PARA ANLISIS PROCESO P1: leer N P2: si N>0 P2.1: para cuenta=N, cuenta mayor o igual a 2 y disminuye de 1 en 1 P2.1.1: si el residuo entre cuenta y 2 es 0 P2.1.1.1: result=result+cuenta+\n P2.1.1.2: fin_para P2.1.2 imprimir result P3: sino P3.1: imprimir solo nmeros positivos mayores a 0 P3.2: Terminar P4: Terminar N>0 cuenta>=2 cuenta%2=0

ENTRADAS TIPO NOMBRE Entero N

SALIDAS TIPO NOMBRE Cadena result

Condiciones

PSEUDOCDIGO /*Algoritmo que desarrolla una lista con los nmeros pares descendiendo partiendo de un nmero n por medio del ciclo para */ Algoritmo paresdescendentes_Para { Principal () { //declaracin de variables Entero cuenta=0, N; Cadena result=; //asignar el nmero de repeticiones N=leer (Ingrese desde que nmero desea evaluar); //repeticiones Si(N>0) { Para (cuenta=N; cuenta>=2; cuenta--) {

Si (cuenta%2==0) { result = result+cuenta+\n; } } Imprimir (la serie de nmeros pares descendentes desde +N+ es: +result); } Sino { Imprimir (solo nmeros positivos o mayores a 0); Terminar; } } }

PRUEBA DE ESCRITORIO

result 18 18 18 16 18 16 18 16 14 18 16 14 18 16 14 12 18 16 14 12 18 16 14

N 18

cuenta 0 18 17 16 15 14

13

12

11

10

12 10 18 16 14 12 10 18 16 14 12 10 8 18 16 14 12 10 8 18 16 14 12 10 8 6 18 16 14 12 10 8 6 18 16 14 12 10 8 6 4 18 16 14 12 10 8 6

4 18 16 14 12 10 8 6 4 2

CICLO MIENTRAS ANLISIS PROCESO SALIDAS P1: leer N TIPO NOMBRE P2: si N>0 Cadena result P2.1: mientras cuenta mayor o igual a 2 haga P2.1.1: si el residuo entre cuenta y 2 es 0 P2.1.1.1: result=result+cuenta+\n P2.1.1.2: disminuir cuenta en 1 P2.1.1.3: fin_mientras P2.1.2 imprimir result P3: sino P3.1: imprimir solo nmeros positivos mayores a 0 P3.2: Terminar P4: Terminar N>0 cuenta>=2 cuenta%2=0

ENTRADAS TIPO NOMBRE Entero N

Condiciones

PSEUDOCDIGO /* Algoritmo que desarrolla una lista con los nmeros pares descendiendo partiendo de un nmero n por medio del ciclo mientras*/ Algoritmo paresdescendentes_Mientras { Principal () { //declaracin de variables

Entero cuenta=0, N; Cadena result=; //asignar el nmero de repeticiones N=leer (Ingrese desde que nmero desea evaluar); //repeticiones Si(N>0) { mientras (cuenta>=2) { Si (cuenta%2==0) { result = result+cuenta+\n; } cuenta--; } Imprimir (la serie de nmeros pares descendentes desde +N+ es: +result); } Sino { Imprimir (solo nmeros positivos o mayores a 0); Terminar; } } }

PRUEBA DE ESCRITORIO

result

N 11

10 10 10 8 10 8 10 8 6 10 8 6

cuenta 0 11 10 9 8 7 6

10 8 6 4 10 8 6 4 10 8 6 4 2

CICLO HAGA MIENTRAS ANLISIS PROCESO SALIDAS P1: leer N TIPO NOMBRE P2: si N>0 Cadena result P2.1: haga P2.1.1: si el residuo entre cuenta y 2 es 0 P2.1.1.1: result=result+cuenta+\n P2.1.1.2: disminuir cuenta en 1 P2.1.1.3: fin_haga P2.1.2: mientras cuenta mayor o igual a 2 P2.1.3 imprimir result P3: sino P3.1: imprimir solo nmeros positivos mayores a 0 P3.2: Terminar P4: Terminar N>0 cuenta%2=0 cuenta>=2

ENTRADAS TIPO NOMBRE Entero N

Condiciones

PSEUDOCDIGO

/* Algoritmo que desarrolla una lista con los nmeros pares descendiendo partiendo de un nmero n por medio del ciclo haga mientras*/

Algoritmo paresdescendentes_hagamientras{ Principal () { //declaracin de variables Entero cuenta=0, N; Cadena result=; //asignar el nmero de repeticiones N=leer (Ingrese desde que nmero desea evaluar); //repeticiones Si(N>0) { haga{ Si (cuenta%2==0) { result = result+cuenta+\n; } cuenta--; } mientras (cuenta>=2); Imprimir (la serie de nmeros pares descendentes desde +N+ es: +result); } Sino { Imprimir (solo nmeros positivos o mayores a 0); Terminar; } } }

PRUEBA DE ESCRITORIO

Result

N 7

6 6 6 4 6 4 6 4 2

cuenta 0 7 6 5 4 3 2

4. CICLO PARA:

ENTRADAS TIPO NOMBRE Entero numclientes Real precio Entero numcopias

ANLISIS PROCESO SALIDAS P1: leer numclientes TIPO NOMBRE P2: si numclientes>0 Cadena desc P2.1: para cuenta=1, cuenta Cadena pretotal menor o igual a numclientes y Cadena copias aumenta de 1 en 1 P2.1.1: leer precio P2.1.2: leer numcopias P2.1.3: presindesc=precio*numcopias P2.1.4: si numcopias>=100 y numcopias<=200 P2.1.4.1: descuento=presindesc*0.12 P2.1.5: si numcopias>=201 y numcopias<=400 P2.1.5.1: descuento=presindesc*0.15 P2.1.6: si numcopias>400 P2.1.6.1: descuento=presindesc*0.18 P2.1.7: preciototal = preciosindesc-descuento P2.1.8: copias=copias+numcopias+\n P2.1.9: desc=desc+descuento+\n P2.1.10: pretotal=pretotal+preciototal+\n P2.1.11: fin_para P2.2: imprimir copias,desc,pretotal P3: sino P3.1: imprimir nmero de clientes mayor a 0 P3.2:Terminar P4: Terminar numclientes>0 cuenta<=numclientes numcopias>=100 y numcopias<=200 numcopias>=201 y numcopias<=400 numcopias>400

Condiciones

PSEUDOCDIGO /* Algoritmo que desarrolla el cobro de fotocopias y su respectivo descuento mediante el ciclo para*/ Algoritmo fotocopias_Para { Principal () { Entero numclientes, cuenta, numcopias; Real precio, presindesc=0.0, descuento=0.0,preciototal=0.0; Cadena pretotal= ,desc= ,copias= ; //asignar el nmero de repeticiones numclientes=leer (ingrese el nmero de clientes a registrar); Si (numclientes>0){ //repeticiones Para (cuenta=1; cuenta<=numclientes; cuenta++) { Precio=leer(ingrese el precio unitario de las copias); Numcopias=leer(ingrese el nmero de copias a facturar); Presindesc=precio*numcopias; Si (numcopias>=100 && numcopias>=200){ Descuento=presindesc*0.12; } Si (numcopias>=201 && numcopias>=400){ Descuento=presindesc*0.15; } Si (numcopias>400){ Descuento=presindesc*0.18; } Preciototal=presindesc-descuento; copias=copias+numcopias+\n; desc=desc+descuento+\n; pretotal=pretotal+preciototal+\n; } Imprimir (No Copias Descuento Precio Total); Imprimir (copias+ +Descuento+ +pretotal); } Sino { Imprimir (nmero de clientes mayor a 0); Terminar; } } }

PRUEBA DE ESCRITORIO Numclientes cuenta precio 4 1 50 2 30 3 70 4 15 5 numcopias 200 405 100 50 presindesc 10000.0 12150.0 7000.0 750.0 descuento 1200.0 2187.0 840.0 0.0 preciototal 8800.0 9963.0 6160.0 750.0

CICLO MIENTRAS:

ENTRADAS TIPO NOMBRE Entero numclientes Real precio Entero numcopias

ANLISIS PROCESO SALIDAS P1: leer numclientes TIPO NOMBRE P2: si numclientes>0 Cadena desc P2.1: mientras cuenta menor o Cadena pretotal igual a numclientes haga Cadena copias P2.1.1: leer precio P2.1.2: leer numcopias P2.1.3: presindesc=precio*numcopias P2.1.4: si numcopias>=100 y numcopias<=200 P2.1.4.1: descuento=presindesc*0.12 P2.1.5: si numcopias>=201 y numcopias<=400 P2.1.5.1: descuento=presindesc*0.15 P2.1.6: si numcopias>400 P2.1.6.1: descuento=presindesc*0.18 P2.1.7: preciototal = preciosindesc-descuento P2.1.8: copias=copias+numcopias+\n P2.1.9: desc=desc+descuento+\n P2.1.10: pretotal=pretotal+preciototal+\n P2.1.11: aumentar cuenta en 1 P2.1.12: fin_mientras P2.2: imprimir copias,desc,pretotal P3: sino P3.1: imprimir nmero de clientes

mayor a 0 P3.2:Terminar P4: Terminar

Condiciones

numclientes>0 cuenta<=numclientes numcopias>=100 y numcopias<=200 numcopias>=201 y numcopias<=400 numcopias>400

PSEUDOCDIGO /* Algoritmo que desarrolla el cobro de fotocopias y su respectivo descuento mediante el ciclo mientras*/ Algoritmo fotocopias_Mientras { Principal () { Entero numclientes, cuenta=1, numcopias; Real precio, presindesc=0.0, descuento=0.0,preciototal=0.0; Cadena pretotal= ,desc= ,copias= ; //asignar el nmero de repeticiones numclientes=leer (ingrese el nmero de clientes a registrar); Si (numclientes>0){ //repeticiones Mientras (cuenta<=numclientes) { Precio=leer(ingrese el precio unitario de las copias); Numcopias=leer(ingrese el nmero de copias a facturar); Presindesc=precio*numcopias; Si (numcopias>=100 && numcopias>=200){ Descuento=presindesc*0.12; } Si (numcopias>=201 && numcopias>=400){ Descuento=presindesc*0.15; } Si (numcopias>400){ Descuento=presindesc*0.18; } Preciototal=presindesc-descuento; copias=copias+numcopias+\n;

desc=desc+descuento+\n; pretotal=pretotal+preciototal+\n; cuenta++; } Imprimir (No Copias Descuento Precio Total); Imprimir (copias+ +Descuento+ +pretotal); } Sino { Imprimir (nmero de clientes mayor a 0); Terminar; } } }

PRUEBA DE ESCRITORIO

Numclientes cuenta precio 6 1 50 2 30 3 70 4 15 5 35 6 100 7

numcopias 200 405 100 50 100 10

presindesc 10000.0 12150.0 7000.0 750.0 3500.0 1000.0

descuento 1200.0 2187.0 840.0 0.0 420.0 0.0

preciototal 8800.0 9963.0 6160.0 750.0 3080.0 1000.0

CICLO HAGA MIENTRAS:

ANLISIS ENTRADAS PROCESO TIPO NOMBRE P1: leer numclientes Entero numclientes P2: si numclientes>0 P2.1: haga Real precio Entero numcopias P2.1.1: leer precio P2.1.2: leer numcopias P2.1.3: presindesc=precio*numcopias P2.1.4: si numcopias>=100 y numcopias<=200

SALIDAS TIPO NOMBRE Cadena desc Cadena pretotal Cadena copias

P2.1.4.1: descuento=presindesc*0.12 P2.1.5: si numcopias>=201 y numcopias<=400 P2.1.5.1: descuento=presindesc*0.15 P2.1.6: si numcopias>400 P2.1.6.1: descuento=presindesc*0.18 P2.1.7: preciototal = preciosindesc-descuento P2.1.8: copias=copias+numcopias+\n P2.1.9: desc=desc+descuento+\n P2.1.10: pretotal=pretotal+preciototal+\n P2.1.11: aumentar cuenta en 1 P2.1.12: fin_haga P2.2: mientras cuenta menor o igual a numclientes P2.3: imprimir copias,desc,pretotal P3: sino P3.1: imprimir nmero de clientes mayor a 0 P3.2:Terminar P4: Terminar Condiciones numclientes>0 cuenta<=numclientes numcopias>=100 y numcopias<=200 numcopias>=201 y numcopias<=400 numcopias>400

PSEUDOCDIGO /* Algoritmo que desarrolla el cobro de fotocopias y su respectivo descuento mediante el ciclo haga mientras*/ Algoritmo fotocopias_HagaMientras { Principal () { Entero numclientes, cuenta=1, numcopias; Real precio, presindesc=0.0, descuento=0.0,preciototal=0.0; Cadena pretotal= ,desc= ,copias= ; //asignar el nmero de repeticiones

numclientes=leer (ingrese el nmero de clientes a registrar); Si (numclientes>0){ //repeticiones haga{ Precio=leer(ingrese el precio unitario de las copias); Numcopias=leer(ingrese el nmero de copias a facturar); Presindesc=precio*numcopias; Si (numcopias>=100 && numcopias>=200){ Descuento=presindesc*0.12; } Si (numcopias>=201 && numcopias>=400){ Descuento=presindesc*0.15; } Si (numcopias>400){ Descuento=presindesc*0.18; } Preciototal=presindesc-descuento; copias=copias+numcopias+\n; desc=desc+descuento+\n; pretotal=pretotal+preciototal+\n; cuenta++; } Mientras (cuenta<=numclientes); Imprimir (No Copias Descuento Precio Total); Imprimir (copias+ +Descuento+ +pretotal); } Sino { Imprimir (nmero de clientes mayor a 0); Terminar; } } } PRUEBA DE ESCRITORIO Numclientes cuenta precio 5 1 50 2 30 3 70 4 15 5 35 6 numcopias 200 405 100 50 700 presindesc 10000.0 12150.0 7000.0 750.0 24500.0 descuento 1200.0 2187.0 840.0 0.0 4410.0 preciototal 8800.0 9963.0 6160.0 750.0 20090.0

5. CICLO PARA ANLISIS PROCESO P1: leer numclientes P2: si numclientes>0 P2.1: para cuenta=1, cuenta menor o igual a numclientes y aumenta de 1 en 1 P2.1.1: leer nombre P2.1.2: leer metros P2.1.3: si metros>0 P2.1.3.1: pedir tipo P2.1.3.2: evaluar tipo P2.1.3.3: caso=a P2.1.3.3.1: presindesc=metros*200 P2.1.3.3.2: salir P2.1.3.4: caso=b P2.1.3.4.1: presindesc=metros*300 P2.1.3.4.2: salir P2.1.3.5: otro caso P2.1.3.5.1: imprimir no hay mas tipos de cable P2.1.3.5.2: terminar P2.1.3.5.3: fin_segun_sea P2.1.3.6: si metros>100 P2.1.3.6.1: descuento=presindesc*0.10 P2.1.3.7: totalpago=presindescdescuento P2.1.3.8: imprimir nombre, descuento, totalpago P2.1.4: sino P2.1.4.1: imprimir debe digitar una cantidad mayor a 0 P2.1.4.2: terminar P2.1.5: fin para P3: sino P3.1: imprimir nmero de clientes mayor a 0 P3.2:Terminar P4: Terminar numclientes>0 cuenta<=numclientes

ENTRADAS TIPO NOMBRE Entero numclientes Cadena nombre Entero metros Carcter tipo

SALIDAS TIPO NOMBRE Cadena nombre Real descuento Real totalpago

Condiciones

metros>0 metros>100

PSEUDOCDIGO /* Algoritmo que desarrolla el cobro de venta de cables en una ferretera y su respectivo descuento anexndolo al nombre del cliente mediante el ciclo para*/ Algoritmo cables_Para { Principal () { Entero numclientes, cuenta, metros; Real presindesc=0.0, descuento=0.0, totalpago=0.0; Cadena nombre= ; Carcter tipo= ; //asignar el nmero de repeticiones numclientes=leer (ingrese el nmero de clientes a registrar); Si (numclientes>0) { //repeticiones Para (cuenta=1; cuenta<=numclientes; cuenta++) { nombre = leer (ingrese el nombre del cliente); metros = leer(ingrese la cantidad de metros); si (metros>0){ tipo =leer(ingrese el tipo de cable A o B); evale (tipo) { caso a: presindesc=metros*200 salir; caso b: presindesc=metros*300; salir; otro caso: Imprimir (no hay ms tipos de cable); Terminar; } Si(metros>100){ Descuento=presindesc*0.10; } Totalpago=presindesc-descuento; Imprimir (el cliente +nombre+ compro +metros de cable tipo +tipo+ se le otorg un descuento de $+descuento+ para que el precio total sea de $+totalpago);

} Sino { Imprimir(debe digitar una cantidad mayor a 0 metros); Terminar; } } } Sino { Imprimir (nmero de clientes mayor a 0); Terminar; } } }

PRUEBA DE ESCRITORIO

Numclientes cuenta nombre metros Tipo presindesc descuento preciototal 5 1 Ral 200 A 40000.0 4000.0 36000.0 2 Sergio 405 B 121500.0 12150.0 109350.0 3 Andrs 100 A 20000.0 2000.0 18000.0 4 Estefana 50 A 10000.0 0.0 10000.0 5 Diego 20 B 6000.0 0.0 6000.0 6

CICLO MIENTRAS

ENTRADAS TIPO NOMBRE Entero numclientes Cadena nombre Entero metros Carcter tipo

ANLISIS PROCESO P1: leer numclientes P2: si numclientes>0 P2.1: mientras cuenta menor o igual a numclientes haga P2.1.1: leer nombre P2.1.2: leer metros P2.1.3: si metros>0 P2.1.3.1: pedir tipo P2.1.3.2: evaluar tipo P2.1.3.3: caso=a P2.1.3.3.1: presindesc=metros*200 P2.1.3.3.2: salir P2.1.3.4: caso=b P2.1.3.4.1: presindesc=metros*300 P2.1.3.4.2: salir P2.1.3.5: otro caso P2.1.3.5.1: imprimir no hay mas tipos de cable P2.1.3.5.2: terminar P2.1.3.5.3: fin_segun_sea P2.1.3.6: si metros>100 P2.1.3.6.1: descuento=presindesc*0.10 P2.1.3.7: totalpago=presindescdescuento P2.1.3.8: imprimir nombre, descuento, totalpago P2.1.4: sino P2.1.4.1: imprimir debe digitar una cantidad mayor a 0 P2.1.4.2: terminar P2.1.5: cuenta aumenta en 1 P2.1.6: fin mientras P3: sino P3.1: imprimir nmero de clientes mayor a 0 P3.2:Terminar P4: Terminar numclientes>0 cuenta<=numclientes

SALIDAS TIPO NOMBRE Cadena nombre Real descuento Real totalpago

Condiciones

metros>0 metros>100

PSEUDOCDIGO /* Algoritmo que desarrolla el cobro de venta de cables en una ferretera y su respectivo descuento anexndolo al nombre del cliente mediante el ciclo mientras*/ Algoritmo cables_Mientras { Principal () { Entero numclientes, cuenta=1, metros; Real presindesc=0.0, descuento=0.0, totalpago=0.0; Cadena nombre= ; Carcter tipo= ; //asignar el nmero de repeticiones numclientes=leer (ingrese el nmero de clientes a registrar); Si (numclientes>0) { //repeticiones mientras (cuenta<=numclientes) { nombre = leer (ingrese el nombre del cliente); metros = leer(ingrese la cantidad de metros); si (metros>0){ tipo =leer(ingrese el tipo de cable A o B); evale (tipo) { caso a: presindesc=metros*200 salir; caso b: presindesc=metros*300; salir; otro caso: Imprimir (no hay ms tipos de cable); Terminar; } Si(metros>100){ Descuento=presindesc*0.10; } Totalpago=presindesc-descuento; Imprimir (el cliente +nombre+ compro +metros de cable tipo +tipo+ se le otorg un

descuento de $+descuento+ para que el precio total sea de $+totalpago); } Sino { Imprimir(debe digitar una cantidad mayor a 0 metros); Terminar; } cuenta++; } } Sino { Imprimir (nmero de clientes mayor a 0); Terminar; } } }

PRUEBA DE ESCRITORIO

Numclientes cuenta nombre metros Tipo presindesc descuento preciototal 8 1 Ral 200 A 40000.0 4000.0 36000.0 2 Sergio 405 B 121500.0 12150.0 109350.0 3 Andrs 150 A 30000.0 3000.0 27000.0 4 Estefana 500 A 100000.0 10000.0 90000.0 5 Diego 20 B 6000.0 0.0 6000.0 6 Antonio 1 A 200.0 0 200.0 7 Michael 1200 B 360000.0 36000.0 324000.0 8 Jorge 397 A 79400.0 7940 71460.0 9

CICLO MIENTRAS

ENTRADAS TIPO NOMBRE Entero numclientes Cadena nombre Entero metros Carcter tipo

ANLISIS PROCESO P1: leer numclientes P2: si numclientes>0 P2.1: haga P2.1.1: leer nombre P2.1.2: leer metros P2.1.3: si metros>0 P2.1.3.1: pedir tipo P2.1.3.2: evaluar tipo P2.1.3.3: caso=a P2.1.3.3.1: presindesc=metros*200 P2.1.3.3.2: salir P2.1.3.4: caso=b P2.1.3.4.1: presindesc=metros*300 P2.1.3.4.2: salir P2.1.3.5: otro caso P2.1.3.5.1: imprimir no hay mas tipos de cable P2.1.3.5.2: terminar P2.1.3.5.3: fin_segun_sea P2.1.3.6: si metros>100 P2.1.3.6.1: descuento=presindesc*0.10 P2.1.3.7: totalpago=presindescdescuento P2.1.3.8: imprimir nombre, descuento, totalpago P2.1.4: sino P2.1.4.1: imprimir debe digitar una cantidad mayor a 0 P2.1.4.2: terminar P2.1.5: cuenta aumenta en 1 P2.1.6: fin haga P2.1.7: mientras cuenta menor o igual a numclientes P3: sino P3.1: imprimir nmero de clientes mayor a 0 P3.2:Terminar P4: Terminar numclientes>0

SALIDAS TIPO NOMBRE Cadena nombre Real descuento Real totalpago

Condiciones

cuenta<=numclientes metros>0 metros>100

PSEUDOCDIGO /* Algoritmo que desarrolla el cobro de venta de cables en una ferretera y su respectivo descuento anexndolo al nombre del cliente mediante el ciclo mientras*/ Algoritmo cables_HagaMientras { Principal () { Entero numclientes, cuenta=1, metros; Real presindesc=0.0, descuento=0.0, totalpago=0.0; Cadena nombre= ; Carcter tipo= ; //asignar el nmero de repeticiones numclientes=leer (ingrese el nmero de clientes a registrar); Si (numclientes>0) { //repeticiones haga{ nombre = leer (ingrese el nombre del cliente); metros = leer(ingrese la cantidad de metros); si (metros>0){ tipo =leer(ingrese el tipo de cable A o B); evale (tipo) { caso a: presindesc=metros*200 salir; caso b: presindesc=metros*300; salir; otro caso: Imprimir (no hay ms tipos de cable); Terminar; } Si (metros>100){ Descuento=presindesc*0.10; } Totalpago=presindesc-descuento; Imprimir (el cliente +nombre+ compro +metros de cable tipo +tipo+ se le otorg un

descuento de $+descuento+ para que el precio total sea de $+totalpago); } Sino { Imprimir(debe digitar una cantidad mayor a 0 metros); Terminar; } cuenta++; } mientras (cuenta<=numclientes); } Sino { Imprimir (nmero de clientes mayor a 0); Terminar; } } }

PRUEBA DE ESCRITORIO

Numclientes cuenta nombre metros Tipo presindesc descuento preciototal 3 1 Estefana 2000 A 400000.0 40000.0 360000.0 2 Sergio 405 B 121500.0 12150.0 109350.0 3 Andrs 150 A 30000.0 3000.0 27000.0 4

Anda mungkin juga menyukai