Académique Documents
Professionnel Documents
Culture Documents
TALLER
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
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
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
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
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
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
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
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
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:
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:
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
Condiciones
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
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
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
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
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
Condiciones
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