lunes, 30 de octubre de 2017

/*
CREAR UNA APLICACION QUE PERMITA INGRESAR LA CANTIDAD DE ALUMNOS
QUE HAYA EN LAS CARRERAS DE:
INDUSTRIAL, SISTEMAS, ARQUITECTURA Y CIVIL
LUEGO, LA APLICACION DEBE MOSTRAR UN GRAFICO DE BARRAS( CON EJES) QUE MUESTRE LA CANTIDAD DE ALUMNOS DE CADA CARRERA

*/

PSEUDICO:


ENTERO  CIVIL, ARQUI, INDUSTRIAL, J, SISTEMAS
ENTERO S, A, C,I
INICIO

LLAMAR COLOR_TEXTO(11)
ESCRIBA "APLICACION  PARA INGRESAR CANTIDAD DE ALUMNOS Y LUEGO GRAFICARLA"
LLAMAR NUEVA_LINEA()
ESCRIBA " LAS CARRERAS SON: 'ING.SISTEMAS, ING. CIVIL, ING. INDUSTRIAL, ARQUITECTURA' "
LLAMAR NUEVA_LINEA()
LLAMAR NUEVA_LINEA()
ESCRIBA "INGRESE EL NUMERO DE ESTUDIANTES DE LA FACULDAD DE ING. SISTEMAS: "
LEA SISTEMAS
S <- SISTEMAS / 10
LLAMAR NUEVA_LINEA()
ESCRIBA "INGRESE EL NUMERO DE ESTUDIANTES DE LA FACULDAD DE ING. CIVIL: "
LEA CIVIL
C <- CIVIL / 10
LLAMAR NUEVA_LINEA()
ESCRIBA "INGRESE EL NUMERO DE ESTUDIANTES DE LA FACULDAD DE ING. INDUSTRIAL: "
LEA INDUSTRIAL
I <- INDUSTRIAL / 10
LLAMAR NUEVA_LINEA()
ESCRIBA "INGRESE EL NUMERO DE ESTUDIANTES DE LA FACULDAD DE ARQUITECTURA: "
LEA ARQUI
A <- ARQUI / 10
LLAMAR NUEVA_LINEA()
LLAMAR LIMPIAR_PANTALLA()
//LINEA VERTICAL
PARA J <- 5 HASTA 20 HAGA
LLAMAR POSICIONAR_CURSOR (21,J)
ESCRIBA CAR(179)
FIN PARA


//LINEA HRZ
PARA J <- 21 HASTA 60 HAGA
LLAMAR POSICIONAR_CURSOR(J,50)
ESCRIBA CAR(196)
FIN PARA
//ESQUINA INF
LLAMAR POSICIONAR_CURSOR (21,20)
ESCRIBA CAR(192)
//POSICIONAR CARRERAS

//SISTEMAS
LLAMAR POSICIONAR_CURSOR (2,18)
ESCRIBA "ING. CIVIL "
//BARRAS
PARA J <- 1 HASTA C HAGA
LLAMAR COLOR_TEXTO(6)
LLAMAR POSICIONAR_CURSOR(J+23,18)
ESCRIBA CAR(178)
LLAMAR COLOR_TEXTO (14)
ESCRIBA " ", CIVIL
LLAMAR POSICIONAR_CURSOR(50,50)
FIN PARA
//CIVIL
LLAMAR POSICIONAR_CURSOR (2,14)
ESCRIBA " SISTEMAS "
//BARRAS
PARA J <- 1 HASTA S HAGA
LLAMAR COLOR_TEXTO(14)
LLAMAR POSICIONAR_CURSOR(J+23,14)
ESCRIBA CAR(178)
LLAMAR COLOR_TEXTO(11)
ESCRIBA " ", SISTEMAS
LLAMAR POSICIONAR_CURSOR(50,50)
FIN PARA
//INDUSTRIAL
LLAMAR POSICIONAR_CURSOR (2,10)
ESCRIBA " INDUSTRIAL"
//BARRAS
PARA J <- 1 HASTA I HAGA
LLAMAR COLOR_TEXTO(5)
LLAMAR POSICIONAR_CURSOR(J+23,10)
ESCRIBA CAR(178)
LLAMAR COLOR_TEXTO (14)
ESCRIBA " ", INDUSTRIAL
LLAMAR POSICIONAR_CURSOR(50,50)
FIN PARA
//ARQUITECTURA

LLAMAR POSICIONAR_CURSOR (2,6)
ESCRIBA " ARQUITECTURA "

//BARRAS
PARA J <- 1 HASTA A HAGA
LLAMAR COLOR_TEXTO(15)
LLAMAR POSICIONAR_CURSOR(J+23,6)
ESCRIBA CAR(178)
LLAMAR COLOR_TEXTO (14)
ESCRIBA " ", ARQUI
LLAMAR POSICIONAR_CURSOR(50,50)
FIN PARA
LLAMAR POSICIONAR_CURSOR(25,21)
ESCRIBA "NUMERO DE ESTUDIANTES"

FIN
FIN


NOTA : EJECUTALO Y VE SI PRESENTA ALGUNA FALLA :)
/* Una empresa de telefonía tiene N vendedores (asignados a diferentes ciudades: Piura, Sullana y Talara) quienes son los encargados de vender líneas pre pago y postpago. Los vendedores tienen un sueldo fijo y ganan por comisión: S/.5 por cada línea pre pago vendida y S/.8 por cada línea post pago.
Escriba el algoritmo que permita registrar a cada vendedor y la cantidad de líneas de cada tipo vendida. El algoritmo debe mostrar el sueldo fijo, la comisión ganada por cada tipo de línea telefónica vendida y el sueldo final.
Luego, debe mostrar un resumen informando lo siguiente:
- El total de líneas pre pago vendidas (considerando todos los vendedores)
- El total de líneas post pago vendidas (considerando todos los vendedores)
- La cantidad de líneas prepago vendidas en Piura, en Sullana y Talara
- La cantidad de vendedores asignados a Piura, Sullana y Talara.
AUTOR: Dixon
Fecha: 18/10/2017 - 7:48 am
*/




PSEUDOCÓDIGO:




ENTERO N , J , PREP , POSTP
CARACTER CIUDAD
CADENA [30] NOMBRE
REAL SUELDOFIJO , COMISION , SUELDOFINAL
ENTERO TOTALPRE ,TOTALPOST
ENTERO TOTALPRE_PI, TOTALPRE_SU, TOTALPRE_TA
ENTERO TOTALPOST_PI, TOTALPOST_SU, TOTALPOST_TA

INICIO
          TOTALPRE <- 0
          TOTALPOST <- 0
          TOTALPRE_PI <- 0
          TOTALPRE_SU <- 0
          TOTALPRE_TA <- 0
          TOTALPOST_PI <- 0
          TOTALPOST_SU <- 0
          TOTALPOST_TA <- 0
       
          LLAMAR COLOR_TEXTO(14)//14 AMARILLO
          N<-0
          MIENTRAS (N<=0) HAGA
              LLAMAR NUEVA_LINEA()
              ESCRIBA "INGRESE LA CANTIDAD DE VENDEDORES : "
              LEA N
              SI (N<=0)ENTONCES
                 LLAMAR NUEVA_LINEA()
                 LLAMAR COLOR_TEXTO(12)//12 ROJO
                 ESCRIBA "ERROR. DATO INCORRECTO. INTENTE OTRA VEZ"
                 LLAMAR COLOR_TEXTO(14)//14 AMARILLO
             FIN SI
         FIN MIENTRAS
         //PIDIENDO LOS DATOS DE LOS "N" VENDEDORES
         PARA J <- 1 HASTA N HAGA
              LLAMAR NUEVA_LINEA()
              ESCRIBA "VENDEDORES ",J
              LLAMAR NUEVA_LINEA()
              ESCRIBA "=================================="
              LLAMAR NUEVA_LINEA()
              LLAMAR NUEVA_LINEA()
              ESCRIBA "INGRESE NOMBRE DEL VENDEDOR: "
              LEA NOMBRE
              LLAMAR NUEVA_LINEA()
              CIUDAD <- 'X'
              MIENTRAS (CIUDAD <>'P')Y(CIUDAD<>'p')Y(CIUDAD<>'S')Y(CIUDAD <>'s')Y (CIUDAD <>'T')Y (CIUDAD <>'t') HAGA
                      ESCRIBA "INGRESE LA CIUDAD"
                      LLAMAR NUEVA_LINEA()
                      ESCRIBA "[P] PIURA - [S] SULLANA - [T] TALARA: "
                      LEA CIUDAD
                     SI (CIUDAD<>'P')Y (CIUDAD<>'p')Y(CIUDAD<>'S')Y(CIUDAD<>'s')Y(CIUDAD<>'T')Y(CIUDAD<>'t') ENTONCES
                         LLAMAR NUEVA_LINEA()
                          LLAMAR COLOR_TEXTO(12) //12 ROJO
                          ESCRIBA "ERROR. LETRA DE CIUDAD INCORRECTA. INTENTO OTRA VEZ"
                          LLAMAR COLOR_TEXTO(14) //14 AMARILLO
                     FIN SI
                 FIN MIENTRAS
                 //EL SUELDO FIJO
                 SUELDOFIJO <- 0 //
                 MIENTRAS ( SUELDOFIJO <=0 ) HAGA
                     LLAMAR NUEVA_LINEA()
                     ESCRIBA "INGRESE EL SUELDO FIJO: "
                     LEA SUELDOFIJO
                     SI (SUELDOFIJO <=0) ENTONCES // ERROR
                         LLAMAR NUEVA_LINEA()
                         LLAMAR COLOR_TEXTO(12) //12 ROJO
                         ESCRIBA "ERROR. LETRA DE CIUDAD INCORRECTA. INTENTO OTRA VEZ"
                         LLAMAR COLOR_TEXTO(14) //14 AMARILLO
                     FIN SI
                 FIN MIENTRAS
                 POSTP <-0
                 MIENTRAS (PREP < 0 ) HAGA
                      LLAMAR NUEVA_LINEA()
                      ESCRIBA "INGRESE CANTIDAD DE LINEAS PRE PAGO: "
                      LEA PREP
                   
                      SI (PREP < 0 ) ENTONCES
                          LLAMAR NUEVA_LINEA()
                          LLAMAR COLOR_TEXTO(12)
                          ESCRIBA "ERROR.CANTIDAD INCORRECTA. INTENTE OTRA VEZ"
                          LLAMAR COLOR_TEXTO(14)
                      SINO
                          TOTALPRE <- TOTALPRE + PREP
                          CASO CIUDAD
                               'P', 'P': TOTALPRE_PI <-TOTALPRE_PI + PREP
                               'S','s': TOTALPRE_SU <- TOTALPRE_SU + PREP
                               'T','t':TOTALPRE_TA <-TOTALPRE_TA + PREP
                        FIN CASO
                    FIN SI
                 
                 
                 FIN MIENTRAS
                 POSTP <- -1
                      MIENTRAS ( POSTP < 0 ) HAGA
                      LLAMAR NUEVA_LINEA()
                      ESCRIBA "INGRESE CANTIDAD DE LINEAS PRE PAGO: "
                      LEA POSTP
                   
                      SI (POSTP < 0 ) ENTONCES
                          LLAMAR NUEVA_LINEA()
                          LLAMAR COLOR_TEXTO(12)
                          ESCRIBA "ERROR. VALOR DE CANTIDAD DE LINEAS POSTPAGO VENDIDAS INCORRECTA. INTENTE OTRA VEZ"
                          LLAMAR COLOR_TEXTO(14)
                      SINO
                          TOTALPOST <- TOTALPOST + POSTP
                          CASO CIUDAD
                          'P' , 'P': TOTALPOST_PI <- TOTALPOST_PI + POSTP
                          'S' , 's': TOTALPOST_SU <- TOTALPOST_SU + POSTP
                          'T' , 't': TOTALPOST_TA <- TOTALPOST_TA + POSTP
                     FIN CASO
                 FIN SI
             FIN MIENTRAS
           COMISION <- 5* PREP + 8* POSTP
           SUELDOFINAL <- SUELDOFINAL + COMISION
           LLAMAR NUEVA_LINEA()
           LLAMAR COLOR_TEXTO(11)
           ESCRIBA "================================================"
           LLAMAR NUEVA_LINEA()
           ESCRIBA "VENDEDOR: ", NOMBRE
           LLAMAR NUEVA_LINEA()
           ESCRIBA "CIUDAD: ", CIUDAD
           LLAMAR NUEVA_LINEA()
           ESCRIBA "CANTIDAD PRE PAGO: ",PREP
           LLAMAR NUEVA_LINEA()
           ESCRIBA "CANTIDAD POST PAGO: ", POSTP
           LLAMAR NUEVA_LINEA()
           ESCRIBA "SUELDO FIJO (S/.): ",SUELDOFIJO
           LLAMAR NUEVA_LINEA()
           ESCRIBA "COMISION (S/.): ",COMISION
           LLAMAR NUEVA_LINEA()
           ESCRIBA "SUELDO FINAL (S/.): ",SUELDOFINAL
           LLAMAR NUEVA_LINEA
           ESCRIBA "==================================="
         
           LLAMAR COLOR_TEXTO(14)
       FIN PARA
     
       LLAMAR NUEVA_LINEA()
       ESCRIBA "REPORTE FINAL"
       LLAMAR NUEVA_LINEA()
       ESCRIBA "TOTAL DE LINEAS PRE PAGO VENDIDAS: ",TOTALPRE
       LLAMAR NUEVA_LINEA()
       ESCRIBA "TOTAL DE LINEAS POST PAGO VENDIDAS: ",TOTALPOST
       LLAMAR NUEVA_LINEA()
       ESCRIBA "TOTAL DE LINEAS PREPAGO VENDIDAS EN PIURA ES:",TOTALPRE_PI
       LLAMAR NUEVA_LINEA()
       ESCRIBA "TOTAL DE LINEAS PREPAGO VENDIDAS EN SULLANA ES: ",TOTALPRE_SU
       LLAMAR NUEVA_LINEA()
       ESCRIBA "TOTAL DE LINEAS PREPAGO VENDIDAS EN TALARA ES: ",TOTALPRE_TA
       LLAMAR NUEVA_LINEA()
       LLAMAR COLOR_TEXTO(12)
       ESCRIBA "TOTAL DE LINEAS POSTPAGO VENDIDAS EN PIURA ES: ",TOTALPOST_PI
       LLAMAR NUEVA_LINEA()
       ESCRIBA "TOTAL DE LINEAS POSTPAGO VENDIDAS EN SULLANA ES: ",TOTALPOST_SU
       LLAMAR NUEVA_LINEA()
       ESCRIBA "TOTAL DE LINEAS POSTPAGO VENDIDAS EN TALARA ES: ",TOTALPOST_TA
       // LA APLICACION DEBE INDICAR EN QUE CIUDAD SE VENDIO MAS LINEAS PRE PAGO
          LLAMAR NUEVA_LINEA()
             SI(TOTALPRE_PI > TOTALPRE_SU) Y (TOTALPRE_PI > TOTALPRE_TA) ENTONCES
                ESCRIBA "LA CIUDAD QUE VENDIO MAS LINEAS PREPAGO ES PIURA: ",TOTALPRE_PI
                LLAMAR NUEVA_LINEA()
                 LLAMAR COLOR_TEXTO(14)
             SINO
                  SI(TOTALPRE_SU > TOTALPRE_PI) Y (TOTALPRE_SU > TOTALPRE_TA) ENTONCES
                    ESCRIBA "LA CIUDAD QUE VENDIO MAS LINEAS PREPAGO EN SULLANA: ",TOTALPRE_SU
                     LLAMAR NUEVA_LINEA()
                  SINO
                      ESCRIBA "LA CIUDAD QUE VENDIO MAS LINEAS PREPAGO EN TALARA: ",TOTALPRE_TA
                   
                   
               
               FIN SI
            FIN SI 
        // LA APLICACION DEBE INDICAR EN QUE CIUDAD SE VENDIO MAS LINEAS PRE PAGO
           LLAMAR NUEVA_LINEA()
             SI(TOTALPOST_PI > TOTALPOST_SU) Y (TOTALPOST_PI > TOTALPOST_TA) ENTONCES
                ESCRIBA "LA CIUDAD QUE VENDIO MAS LINEAS POSTPAGO ES PIURA: ",TOTALPOST_PI
                LLAMAR NUEVA_LINEA()
                LLAMAR COLOR_TEXTO(15)
             SINO
                  SI(TOTALPOST_SU > TOTALPOST_PI) Y (TOTALPOST_SU > TOTALPOST_TA) ENTONCES
                     ESCRIBA "LA CIUDAD QUE VENDIO MAS LINEAS POSTPAGO EN SULLANA: ",TOTALPOST_SU
                     LLAMAR NUEVA_LINEA()
                   SINO
                      ESCRIBA "LA CIUDAD QUE VENDIO MAS LINEAS POSTPAGO EN TALARA: ",TOTALPOST_TA
                   
                 FIN SI
           FIN SI
FIN



LAS ESTRUCTURAS REPETITIVAS
En nuestro quehacer cotidiano, todas las personas realizamos una serie de actividades de forma repetitiva “rutinaria”. Por ejemplo:
-          Asistimos a clases en el colegio o la universidad; de lunes a viernes (repetimos 5 veces)
-          Cuando leemos un libro; la acción de leer se repite hasta que terminemos de leer el libro (hasta que ya no hayan más páginas por leer)
-          Cuando leemos nuestro email; la acción de abril el email y leerlo es repetitiva; y lo repetimos tantas veces mientras haya email nuevos por leer.
-          Si queremos convertir un número a binario. El procedimiento indica que hay que dividir el número sucesivamente entre 2 mientras el cociente sea mayor o igual que la base 2; una vez que el cociente es menor, ya no se continúa dividiendo (finalizó la repetición). Luego se forma el número binario con el último cociente concatenando con los residuos anteriores.
-          Y un largo etc.
Como la computadora automatiza procesos de la vida real, los ejecuta mucho más rápido que las personas; pues era muy importante que se le programara para que pueda repetir instrucciones.
Tipos de Estructuras repetitivas
1.       Por condición: es aquella que repite un conjunto de instrucciones (proceso) siempre que se cumpla una condición; es decir, mientras la condición sea verdadera, continuará repitiéndose; una vez que la condición es falsa, ya no se repite.
Por ejemplo:
-          Cuando vamos al supermercado y llegamos a la cajera con nuestro carrito de compras. La cajera no sabe cuántos productos tenemos en el carrito; pero ella repite la acción de pasar por el lector de código de barras cada producto mientras haya algo en el carrito; una vez que el carrito quedó vacío, entonces ya no sigue pasando, sino que nos indica cuánto hay que pagar.
-          Cuando caminamos de casa a nuestro centro de trabajo; la acción de caminar (es la acción repetitiva de dar un paso tras otro); nosotros no sabemos cuántos pasos vamos a dar sino que caminamos hasta que lleguemos al destino.
2.       Por Contador: el aquella en la cual se repite un conjunto de acciones (proceso) un número determinado de veces; es decir, se sabe (o se puede deducir) cuántas veces se va a repetir el proceso (las instrucciones).
-          Cuando el profesor toma asistencia de sus 30 alumnos. Como son 30 alumnos, tendrá que llamar en voz el nombre de cada alumno; y esto será 30 veces.
-          Si queremos mostrar un listado de números naturales del 1 al 100
-          Para revisar un examen escrito de “n” alumnos; donde “n” es un valor que podría ser 30, 40, etc.

Ventajas de las estructuras repetitivas
-          Flexibilidad para la escritura del código
-          Disminución de líneas de código
-          Ahorro de tiempo en la codificación
Ejemplos
A continuación se presentan casos de acciones repetitivas. Clasifique como estructura repetitiva por contador o por condición.
1.       Digitar una lista de 30 nombres de ciudades
2.       Subir por una escalera tantos peldaños hasta llegar al 5to piso del edificio
3.       Cuando el cajero de la ventanilla de un banco atiende a los clientes; la acción de atender a cada cliente …
4.       Hacer el pago de haberes para cada uno de los 700 empleados de una empresa
5.       En un banco: al calcular el interés para cada uno de las 3000 cuentas bancarias
6.       Saltar la soga tantas veces hasta que ya no pueda más.
7.       Escribir el código de un programa hasta que realice la tarea solicitada.
8.       Comprar productos alimenticios tantos como alcance el monto de dinero que tenemos.
9.       Registrar el nombre y la edad de N estudiantes
10.   Registrar el nombre, la edad y el sexo de tantos estudiantes hasta que se ingrese la palabra FIN
11.   Calcular la nota promedio de la unidad para N alumnos registrados en un curso universitario.



TIPOS DE VARIABLES EN LAS ESTRUCTURAS REPETITIVAS
Cuando se diseñan programas de computadora y se empelan las estructuras repetitivas, existen variables con funciones específicas cuyos valores y la forma como se les procesa ayuda mucho en la programación.
Estas variables especiales son:
1.       Variable contador
2.       Variable acumulador
3.       Variable centinela
Variable contador
·         Es una variable del tipo entero cuya misión es “llevar la cuenta de algo”.
·         Esta variable aumenta o disminuye su valor en una cantidad fija dentro de cada ejecución del cuerpo de la estructura repetitiva.
·         Siempre debe ser inicializada con un valor especial (generalmente puede ser cero)
·         Su expresión (dentro de una estructura repetitiva) es por ejemplo:
o   contador <- contador + 1
o   x <- x – 1
o   numHabitantes <- numHabitantes + 1
o   tiempo <- tiempo – 2
Variable acumulador
·         Es una variable cuya misión es acumular/guardar el resultado sucesivo de operaciones matemáticas: suma, resta, multiplicación, división, etc.
·         Dependiendo de su contenido puede ser del tipo entero Real.
·         Esta variable aumenta o disminuye su valor en otra cantidad que también es variable.
·         Siempre se le debe inicializar en un valor adecuado. Por ejemplo para acumular sumas, el valor adecuado es cero ya que es el elemento neutro de la suma; sin embargo si queremos acumular multiplicaciones sucesivas el valor adecuado sería uno.
·         Su expresión (dentro de una estructura repetitiva) es por ejemplo:
o   Suma <- suma + numero
o   Producto <- producto * j
o   Resultado <- resultado / x



Variable Centinela
·         Es una variable de “alerta”
·         Se le conoce también como bandera, flag o interruptor.
·         Generalmente es una variable del tipo Lógico (booleano).
·         Se usa como alerta ya que dependiendo del valor que tome (verdadero o falso si se trata del tipo lógico) puede efectuar alguna acción. Un uso bastante difundido es abortar la ejecución de la estructura repetitiva.
·         Dentro del cuerpo de la estructura repetitiva, su valor lo toma dependiendo de una estructura condicional.




ESTRUCTURA REPETITIVA POR CONDICIÓN
Como ya se indicó anteriormente, la estructura repetitiva por condición es aquella que permite ejecutar varias veces un proceso siempre que se cumpla una condición.
En este caso no se sabe o no se puede deducir previamente cuántas veces se va a repetir el proceso; todo depende del resultado de la evaluación de la condición.
Es muy importante establecer claramente la condición, y hacer que en algún momento termine pues de lo contrario estaríamos en un proceso repetitivo infinito y esto atenta contra la definición de algoritmo. Recuerda que un algoritmo siempre debe tener un fin.
Formas de la estructura repetitiva por condición
1.       Estructura Mientras … hacer  (Mientras … haga)
2.       Estructura Hacer … Mientras
3.       Estructura Repetir … Hasta
En cada uno de estos casos se debe especificar la condición de ejecución (o repetición); aquella cuyo resultado permitirá continuar repitiendo o finalizar la repetición.



Estructura repetitiva Mientras … hacer
Características
1.       Ejecuta/repite el proceso mientras la condición sea verdadera. Cuando la condición resulte falsa, ya no repite, finaliza y continúa con las instrucciones que hubieran fuera del bloque.
2.       La evaluación de la condición ocurre al principio. Esto significa que si al evaluar la condición resultara falsa, entonces el cuerpo del bucle (proceso) no se ejecutaría ninguna vez.
Representación
En diagrama de flujo estándar:
Cuadro de texto: F



Cuadro de texto: V





En el programa DFD:
En Pseudocódigo (LPP)
Mientras (condición) haga
  Proceso
Fin Mientras
En el Lenguaje Java
while (condición) {
      proceso;
}
EJEMPLOS
1)      Escribir el algoritmo que permita ingresar nombres de personas. Cuando se ingresa como nombre FIN o fin, termina la ejecución.
2)      Modifique el ejemplo anterior para considerar que aparezca el total de nombres ingresados.
3)      Ahora, considere que se necesita ingresar la edad y el sexo (masculino o femenino) de cada persona ingresada. Luego el algoritmo debe calcular la edad promedio.
4)      Ahora, el algoritmo debe hallar la cantidad total de varones y de mujeres que fueron ingresados.
5)      Escriba un algoritmo que permita ingresar números hasta que se ingrese el valor centinela cero. Es decir, si se ingresa cero, el algoritmo ya no pide más números. Además el algoritmo debe informar cuántos números distintos de cero se ingresaron. Cuántos son positivos y cuántos son negativos.
6)      Un ama de casa va al mercado con X soles y debe comprar los siguientes productos en este orden: pollo, leche, verduras y avena. Por cada compra que realiza, el ama de casa debe saber cuánto le queda de saldo. Escriba un algoritmo para tal fin; además considere que si ya no tiene saldo el computador debe informar qué productos no compró.
7)      Juan realiza el pago de sus servicios por banca por Internet. Él tiene cierto saldo en su cuenta bancaria. Escribe el algoritmo que le pregunte a Juan si desea realizar el pago de servicios. En caso la respuesta sea Sí, le debe pedir el monto a pagar. Por cada pago realizado se debe informar cuál es el nuevo saldo. Valide lo que considere necesario.
8)      Se ha recargado un teléfono celular con N soles. Escriba el algoritmo que permita hacer llamadas y registre el monto (en soles) consumido. Por cada llamada debe indicar cuánto costó y cuál es el saldo. Valide lo que sea necesario.
9)      Mostrar una línea conformada por 30 asteriscos.
10)   Modifique el ejemplo anterior para mostrar la línea con N asteriscos. El valor de N lo ingresa el usuario.
11)   Dibuje un recuadro en pantalla conformado por asteriscos. El recuadro debe ser flexible en cuanto al tamaño (considere coordenadas del recuadro)
12)   Escriba el algoritmo que permita ingresar nombres de estudiantes universitarios, su edad, su sexo y su escuela profesional (considere solo estas escuelas: Sistemas, Civil, Arquitectura, Industrial). Se ingresarán tantos registros conforme se responda a la pregunta ¿Desea ingresar otra persona?. Luego el algoritmo debe informar
a.       El total de estudiantes registrados
b.      El total de varones y de mujeres
c.       El promedio de edades de todos los estudiantes registrados
d.      El promedio de edades solo de los varones
e.      El promedio de edades solo de las mujeres
f.        El número de estudiantes de cada escuela profesional
EJERCICIOS PROPUESTOS
1.       Algoritmo que permita ingresar el nombre y la nota de tres prácticas calificadas de un grupo de estudiantes. Se ingresarán tantos estudiantes según se responda a la pregunta ¿Desea registrar otro estudiante (S/N)?
Por cada estudiante debe mostrar su promedio y si aprobó o desaprobó el curso.
2.       Algoritmo para mostrar todos los números pares comprendidos desde 100 hasta 200
3.       Se necesita registrar los nombres de ciudades del Perú junto con su temperatura ambiental, la cantidad de habitantes y la región a la que pertenece: costa, sierra o selva. Cuando ya no se desea ingresar otra ciudad, el algoritmo debe informar:
a.       El total de ciudades ingresadas
b.      La cantidad de ciudades de la costa, de la sierra y de la selva.
c.       El promedio de temperaturas de las ciudades por cada región



PREGUNTAS DE RETROALIMENTACIÓN
1.       Es una variable del tipo entero cuyo valor aumenta o disminuye en una cantidad fija:
a.       Acumulador
b.      Contador
c.       Centinela
d.      Lógica
2.       La estructura repetitiva Mientras … haga evalúa la condición de ejecución al principio
a.       Verdadero
b.      Falso
3.       Una característica de la estructura Mientras … hacer es:
a.       La condición se evalúa al final
b.      Siempre ejecuta el proceso al menos una vez
c.       La condición se evalúa al principio
d.      NA
4.       Hacer tantas llamadas telefónicas por el celular siempre que se tenga saldo; es una acción repetitiva del tipo:
a.       Por contador
b.      Por condición
c.       Por recursividad
d.      NA
Dado el siguiente fragmento de pseudocódigo
Peso <- 95
Mientras (peso >= 80) haga
          Escriba “Peso: “, peso
          Llamar nueva_linea()
          Peso <- Peso - 5
Fin Mientras
Escriba “Felicidades, meta cumplida!”

5.       Del pseudocódigo anterior, el tipo de estructura repetitiva anterior es:
a.       Por contador
b.      Por condición
c.       No se puede saber



6.       Del pseudocódigo anterior, la estructura repetitiva codificada corresponde a:
a.       Repetir … Hasta
b.      Hacer ... Mientras
c.       Mientras … hacer
d.      Para
7.       Para qué valor de la variable peso (de los mostrados en estas alternativas), no se ejecutaría ninguna vez el proceso (el cuerpo del bucle)
a.       85
b.      80
c.       75
d.      90
8.       Si la variable peso es igual a 80, ¿Cuántas veces se ejecuta el cuerpo del bucle?
a.       Ninguna vez
b.      Solo una vez
c.       Dos veces
d.      Tres veces
e.      No se puede determinar
9.       Ejecute el pseudocódigo anterior



Estructura repetitiva Hacer … Mientras
Características
1.       Es una variante de la estructura repetitiva anterior (Mientras … hacer). La diferencia es que la condición se evalúa al final del bloque repetitivo.
2.       Como la condición se evalúa al final, esto permite que el cuerpo del bucle se ejecute siempre al menos una vez (la primera vez).
3.       Así como la estructura Mientras … hacer, esta variante ejecuta/repite el proceso mientras la condición sea verdadera. Cuando la condición resulte falsa, ya no repite, finaliza y continúa con las instrucciones que hubieran fuera del bloque.
Representación
En diagrama de flujo estándar:
 




Cuadro de texto: V
Decisión: Condición



Cuadro de texto: F
En el programa DFD:
No permite esta estructura
En Pseudocódigo
El programa LPP no lo admite
Hacer
  Proceso
Mientras (condición)
En el Lenguaje Java
do {
      proceso;
} while (condición);
Nota:
En el presente curso de fundamentos de Programación, considerando que el programa LPP no admite la estructura Hacer … Mientras; no se usará en la resolución de algoritmos.
EJEMPLOS
1)      Halle el valor final de cada variable en los siguientes pseudocódigos y muestre la pantalla
Sw <- 0
P <- 8
Hacer
              Llamar nueva_linea()
              Escriba p
              p <- p – 1
              sw <- sw + 1
Mientras (sw = 1)
Entero num
Inicio
  Hacer
       Escriba “Ingrese un número: “
       Lea num
       Si (num < 0) entonces
          Escriba “Error”
       Sino
           Acu <- Acu + num
        Fin Si
  Mientras (num < 0)
Fin

2)      Se necesita un algoritmo que permita registrar a varias personas: su nombre, su peso y talla. El algoritmo debe calcular el índice de masa corporal (IMC), mostrarlo para cada una y también mostrar el calificativo considerando lo siguiente:
Si el IMC es superior o igual a 30, mostrar OBESIDAD
En cambio, si el IMC es superior o igual a 25, mostrar SOBRE PESO
En cambio, si el IMC es superior o igual a 18.5, mostrar NORMAL
Y si está por debajo de 18.5, mostrar BAJO DE PESO
El algoritmo debe permitir ingresar tantas personas mientras se responda a la pregunta si desea continuar o no.

Solución
A continuación se muestra el pseudocódigo con las instrucciones desordenadas:
CARACTER RPTA
REAL PESO, TALLA, IMC
IMC <- PESO / (TALLA ^2)
INICIO
SI (IMC >= 25) ENTONCES
RPTA <- 'S'
MIENTRAS (RPTA = 's') O (RPTA = 'S') HAGA
ESCRIBA "INGRESE EL NOMBRE DE LA PERSONA: "
LEA TALLA
LEA NOMBRE
ESCRIBA "INGRESE LA TALLA DE ", NOMBRE, ": "
ESCRIBA "INGRESE EL PESO DE ", NOMBRE, ": "
FIN SI
FIN SI
LEA PESO
CADENA [30] NOMBRE
ESCRIBA "ESTADO: NORMAL"
SINO
SI (IMC >= 30) ENTONCES
LLAMAR NUEVA_LINEA()
ESCRIBA "DESEA REGISTRAR A OTRA PERSONA (S/N)?: "
FIN MIENTRAS
ESCRIBA "EL IMC DE ", NOMBRE, " ES: ", IMC
LLAMAR NUEVA_LINEA()
ESCRIBA "ESTADO: OBESIDAD"
SINO
ESCRIBA "ESTADO: SOBRE PESO"
SINO
SI (IMC >= 18.5) ENTONCES
ESCRIBA "ESTADO: BAJO DE PESO"
FIN SI
LLAMAR NUEVA_LINEA()
LEA RPTA
FIN



                Ordena las instrucciones de manera correcta:


……………………………………………..
……………………………………………..
REAL PESO, TALLA, IMC
INICIO
            ……………………………………………..
            MIENTRAS (RPTA = 's') O (………………….) HAGA
         ESCRIBA "INGRESE EL NOMBRE DE LA PERSONA: "
                            ……………………………………………..
                            …………………………………………………………………………
                            LEA TALLA
                            ………………………………………………………………………..
                            …………………….
                            …………………………………………….
                            LLAMAR NUEVA_LINEA()
                            ………………………………………………………………………..
                            LLAMAR NUEVA_LINEA()
         SI (…………………………..) ENTONCES
                                            ESCRIBA "ESTADO: OBESIDAD"
                            SINO
                                            ……………………………………………………
                                                           ESCRIBA "ESTADO: SOBRE PESO"
                                            SINO
                                                           ………………………………………………………….
                                                                           ……………………………………………………..
                                                           SINO
                                                                           ESCRIBA "ESTADO: BAJO DE PESO"
                                                           FIN SI
                                            ………….
                            FIN SI
         LLAMAR NUEVA_LINEA()
         ESCRIBA "DESEA REGISTRAR A OTRA PERSONA (S/N)?: "
                            …………………………..
            FIN MIENTRAS
……………….





ESTRUCTURA REPETITIVA POR CONTADOR
Existen situaciones del mundo real en las cuales se sabe anticipadamente cuántas veces se debe repetir una acción; por ejemplo:
·         Si tenemos que procesar los exámenes de admisión de 5000 postulantes. En este caso se abe que son 5000 postulantes y por cada uno se debe procesar su examen de admisión (revisarlo y calcular el puntaje total)
·         Cuando tenemos que aplicar una encuesta de satisfacción a 100 personas. EL número 100 nos indica que tenemos que reptrit100  veces la aplicación de la encuesta.
·         Si tenemos que calcular la edad promedio de N estudiantes (donde N debe tener un valor específico). En este caso tenemos que repetir N veces la petición de la edad de cada estudiante, acumular la suma de las edades y luego dividir entre N para saber cuál es la edad promedio.
En todos los casos anteriores, la repetición no está sujeta a una condición; el número de veces que se debe repetir las acciones (proceso) ya está restablecido previamente. Este es el tipo de Estructuras repetitivas por Contador.
Se le dice “por Contador” porque hay una cantidad finita de veces a repetir; además porque se usa una variable de este tipo (contador) que va llevando la cuenta de la repetición “i” (pasada). Por cada valor que toma la variable contador, se ejecuta el proceso.
La estructura repetitiva por contador se conoce como Estructura PARA o Estructura DESDE. Esta estructura es un caso particular o práctico de la estructura “Mientras …hacer”. La ventaja que ofrece es que ya tiene una variable contador que es la que está cambiando su valor (incrementa/decrementa); asimismo la condición de término  de la repetición está dada por el límite del valor del contador (ya se tiene establecido un valor final de la variable contador).
Por otro lado, todo lo que se puede hacer con la estructura PARA también se puede implementar con la estructura Mientras, pero no al contrario.




Representación: Estructura PARA
La estructura repetitiva por contador, se representa de la siguiente manera:
En Diagrama de Flujo:


En Pseudocódigo
Para Variable <- ValorInicial hasta ValorFinal Haga
     Proceso
Fin Para
En el lenguaje JAVA:
for(variable=ValorInicial; condiciónDeRepetición; Incremento){
     proceso;
}

Elementos de la estructura repetitiva PARA
Observe la sintaxis anterior (en pseudocódigo); los elementos son:
1)      La variable contador: es una variable del tipo entero la cual va a ir cambiando de valor (de 1 en 1 en LPP). En otros lenguajes de programación la variable contador puede cambiar su valor incrementando o decrementando en un valor que no siempre es uno.
En LPP esta variable solo incrementa de uno en uno (es una desventaja de LPP)
2)      El valor inicial: es un valor entero (número o variable que contenga un valor numérico). Es el primer valor que toma la variable contador
3)      Valor Final: es el último valor de la variable contador para el cual se repite el proceso. La variable contador ha empezado con el valor inicial y fue modificando su valor (por defecto de uno en uno – en LPP) y ha alcanzado el valor final.
4)      Incremento: En LPP el incremento predeterminado es de uno en uno; es decir, la variable contador va aumentando de uno en uno; y por cada nuevo valor que toma la variable ejecuta el proceso. En otros lenguajes de programación como Java o VB.Net, se puede modificar el incremento, puede ser aumento o decremento.
Por ejemplo:
Para j <- 1 hasta 10 haga
     Escriba “Hola ”, j
     Llamar nueva_linea()
Fin para
En este fragmento de pseudocódigo tenemos:
·         La variable contador  es j
·         El valor inicial es 1
·         El valor final es 10
·         El proceso está conformado por dos instrucciones: Escriba “Hola ”, j y Llamar nueva_linea().
·         El incremento: en LPP no se especifica; siempre es de uno en uno ascendente.
·         La variable j toma el valor inicial 1, luego aumenta a 2, luego a 3; y así sucesivamente hasta llegar a 11 (un valor más que el valor final). Pero repite el proceso hasta que tiene el valor final; en este ejemplo, repite por cada valor de la variable j: desde 1 hasta 10.
·         En este caso se ha repetido 10 veces el proceso.
Si ejecutamos el pseudocódigo anterior, tenemos:
Tabla de variables
j
1
2
3
4
5
6
7
8
9
10
11
Pantalla:
Hola 1
Hola 2
Hola 3
Hola 4
Hola 5
Hola 6
Hola 7
Hola 8
Hola 9
Hola 10



Procedimiento de ejecución de la estructura PARA
 







La ejecución de la estructura PARA tiene la siguiente secuencia:
Elipse: 1
Paso 1:
La variable contador toma el valor inicial
Elipse: 2
Paso 2:
El computador comprueba si el valor de la variable es menor o igual que el valor final. Si se cumple esta condición implícita, sí entra a ejecutar el cuerpo del bucle; de lo contrario (cuando el valor de la variable contador es mayor que el valor final) NO ejecuta el cuerpo del bucle.
Elipse: 3
Paso 3:
Se ejecuta el proceso (cuerpo del bucle); todas las instrucciones comprendidas entre Para y Fin Para.

Elipse: 4
Paso 4:
La variable contador se incrementa en uno y se vuelve a verificar si esta variable es menor o igual que el valor final.
Por cada valor de la variable contador se ejecuta (repite) el proceso.

Ejemplos
Ejecute los siguientes fragmentos de código. Muestre la tabla de variables y la pantalla
Ejemplo 1
S <- 0
Para k <- 3 hasta 10 haga
     Escriba k
     Llamar nueva_linea()
     S <- S + k
Fin para
Llamar nueva_linea()
Escribe “último valor de k: “, k

Solución

Tabla de variables
S
K
0
3
3
4
7
5
12
6
18
7
25
8
33
9
42
10
52
11
Pantalla
3
4
5
6
7
8
9
10
Último valor de k: 11



Ejemplo 2
A <- 10
B <- 10
Para j <- A hasta B haga
     Escriba j, “ Ingrese un numero: “
     Lea num
Fin Para
Llamar nueva_linea()
Escriba “Valor del contador j: “, j
Llamar nueva_linea()
Escriba “Numero ingresado: “, num

Solución
Tabla de variables
A
B
j

10
10
10



11

Pantalla
10 Ingrese un número: _

Valor del contador j:
Número ingresado:





Ejemplo 3
A <- 8
Para j <- A hasta 5 haga
     Escriba j, “-“, j*2
Fin Para
Llamar nueva_linea()
Escriba “Valor del contador j: “, j


Solución
Tabla de variables
A
j

8
8




Pantalla

Valor del contador j: 8



En este ejemplo, la variable contador “j” toma el valor inicial 8 (el contenido de la variable A); luego la computadora comprueba si este valor es menor o igual que el valor final (5 en este ejemplo); como 8 no es menor ni igual que 5 entonces no entra al cuerpo del bucle, sino que ejecuta las instrucciones que continúan después del bucle.

EJERCICIOS
Ejecute los siguientes fragmentos de código. Muestre la tabla de variables y la pantalla
Ejercicio 1
Real S
S <- 0
Para k <- 3 hasta 12 haga
     Escriba k, “-“, k*2
     Llamar nueva_linea()
     S <- S + k
Fin para
Pr <- s / k
Llamar nueva_linea()
Escribe “último valor de k: “, k
Llamar nueva_linea()
Escriba “valor de s: “, s
Llamar nueva_linea()
Escriba “valor de pr”, pr




Ejercicio 2
Num <- 12
Para k <- 1 hasta num haga
     Si (num mod k = 0) entonces
          Llamar nueva_linea()
          Escriba k
     Fin si
Fin para
Llamar nueva_linea()
Escriba “El valor de k es: “, k

Ejercicio 3
X <- 12
Y <- 5
Para i <- X hasta Y haga
     Si (num mod i = 0) entonces
          Llamar nueva_linea()
          Escriba i
     Fin si
Fin para
Llamar nueva_linea()
Escriba “El valor de i es: “, i

Ejercicio 4
Cont <- 0
N <- 13
Para i <- 1 hasta N haga
     Si (N mod i = 0) entonces
          Cont <- cont + 1
     Fin si
Fin para
Si (cont > 2) entonces
     Escriba “El número “, N, “ es primo”
Sino
     Es criba “El número “, N, “ no es primo”
Fin Si




PREGUNTAS DE RETROALIMENTACIÓN
1.      La estructura “Para” representa a las estructuras repetitivas por contador
a)      Verdadero
b)      Falso
2.      El orden de ejecución de la estructura “Para”, primero se asigna el valor inicial a la variable contador:
a)      Verdadero
b)      Falso
3.      La estructura “Para” siempre ejecuta por lo menos una vez el cuerpo del bucle
a)      Verdadero
b)      Falso
4.      Son elementos de la estructura “para”
a)      El acumulador y el valor final
b)      El incremento y la variable acumulador
c)       El contador, el valor inicial y el valor final
d)      La variable centinela, el contador y el acumulador

Pseudocódigo 01
Para i <- 1 hasta 8 haga
       Escriba i
       Llamar nueva_linea()
Fin Para

5.      En el pseudocódigo 01, complete:
a)      La variable contador es:            _______
b)      El valor inicial es:                          _______
c)       El valor final es:                            _______
d)      El incremento es:                         _______
e)      El cuerpo del bucle es: __________________  ___________________________
6.      En el pseudocódigo 01: ¿Qué aparece en pantalla?
a.       Los números enteros del 1 al 8 en forma horizontal
b.      Los números enteros del 1 al 9 en forma vertical
c.       Los números enteros del 8 al 1 en forma horizontal
d.      Los números enteros del 1 al 8 en forma vertical
e.      No aparece nada en la pantalla
Dado el Pseudocódigo 02
Lim1 <- 1
Lim2 <- 15
Para i <- Lim1 hasta Lim2 haga
       Escriba i
       Llamar nueva_linea()
       S <- S + i
Fin Para
Llamar nueva_linea()
Escriba “S: ”, S
Pr <- S / (Lim2 – Lim1 + 1)
Llamar nueva_linea()
Escriba “Pr es: ”, Pr


7.      En el pseudocódigo 2, ¿Cuántas “pasadas” se repite el bucle “Para”?
a)      Una
b)      De 2 a 6
c)       14 pasadas
d)      15 pasadas
e)      Más de 15 pasadas
8.      En el pseudocódigo 2, ¿Cuál es el incremento de la variable contador de la estructura “para”?
Respuesta: __________
9.      En el pseudocódigo 2, ¿Identificas alguna variable acumulador? ¿Cuál es?
a)      Pr
b)      S
c)       I
d)      Lim1
10.   Ejecuta el pseudocódigo 2
11.   En el pseudocódigo 2, al salir del bucle “para”, cuál es el contenido de la variable S
a)      La suma de los números 1 y 15
b)      La suma de todos los números desde 1 hasta 15
c)       La suma de todos los números desde 1 hasta 16
d)      El promedio de los números del 1 hasta el 15
Dado el Pseudocódigo 03
tamano <- 50
Para i <- 1 hasta tamano haga
        Escriba “*”
Fin Para


12.   Del pseudocódigo 3, ¿cuáles son los elementos del bucle “para”?
a)      La variable contador   :              ______
b)      El valor inicial                 :              ______
c)       El valor final                    :              ______
d)      El incremento del contador:   ______
13.   Del pseudocódigo 3, ¿cuántas pasadas tiene?
Respuesta: ____________
14.   Del pseudocódigo 3, ¿Qué hace?
a)      Calcula el promedio de los 20 primeros números
b)      Imprime 1 vez un asterisco
c)       Imprime una línea con 50 asteriscos
d)      Dibuja un cuadrado con 50 asteriscos
e)      No aparece nada en la pantalla




Observe el pseudocódigo 4 y el pseudocódigo 5
Pseudocódigo 4

Pseudocódigo 5
P <- 1
Mientras (p <= 10) haga
         Escriba p
         Llamar nueva_linea()
         P <- p +1
Fin Mientras


Para p <- 1 hasta 10 haga
         Escriba p
         Llamar nueva_linea()
Fin para

15.   ¿Qué muestra en pantalla el pseudocódigo 4?
Respuesta: ____________________________________________
16.   ¿Qué muestra en pantalla el pseudocódigo 5?
Respuesta: ____________________________________________



Ejemplos en pseudocódigo
Ejemplo 1
Una empresa de telefonía tiene N vendedores (asignados a diferentes ciudades: Piura, Sullana y Talara) quienes son los encargados de vender líneas pre pago y postpago. Los vendedores tienen un sueldo fijo y ganan por comisión: S/.5 por cada línea pre pago vendida y S/.8 por cada línea post pago.
Escriba el algoritmo que permita registrar a cada vendedor y la cantidad de líneas de cada tipo vendida. El algoritmo debe mostrar el sueldo fijo, la comisión ganada por cada tipo de línea telefónica vendida y el sueldo final.
Luego, debe mostrar un resumen informando lo siguiente:
-          El total de líneas pre pago vendidas (considerando todos los vendedores)
-          El total de líneas post pago vendidas (considerando todos los vendedores)
-          La cantidad de líneas prepago vendidas en Piura, en Sullana y Talara
-          La cantidad de vendedores asignados a Piura, Sullana y Talara.
Ejemplo 2
Escriba el algoritmo para calcular el factorial de un número entero positivo. Valide para que el computador no acepte números negativos ni cero.
Ejemplo 3
Algoritmo que calcule la suma y promedio de los números naturales desde 100 hasta 200; además los debe mostrar en pantalla.
Ejemplo 4
Se necesita un listado de temperaturas en °C; desde 0 hasta 100 con intervalos de 5 en 5. Muestra una tabla con estas temperaturas y los equivalentes de c/u en las escalas Fahrenheit y Kelvin.
Ejemplo 5
Algoritmo que muestre todos los divisores de un número
Ejemplo 6

Algoritmo que indique si un número es primo o no. Un número es primo cuando solo es divisible entre la unidad y el mismo número, es decir, no tiene otros divisores.

                                         DESCARGA LOS EJERCICIOS RESUELTOS! :)

MENU DE ACCIONES EN JAVA

MENU DE ACCIONES EN JAVA ----------------------------------------------------------------- package menudeacciones; import java.util.S...