miércoles, 20 de mayo de 2015

Clase No. 14- Mayo 20

·         Realización segunda parte del proyecto.

·         Nota de prueba saber.

Clase No. 13- Mayo 13

·        Realización de la primera parte del proyecto.

Ejercicios

PSEUDOCÓDIGO 1
1.    Dadas dos variables numéricas A y B, que el usuario debe teclear, se pide realizar un algoritmo que intercambie los valores de ambas variables y muestre cuánto valen al final las dos variables (recuerda la asignación).
Papel:
Var A, B, C: numerica
Inicio
    Escribir "Introduce el valor de A"
    Leer A
    Escribir "Introduce el valor de B"
    Leer B
    C<-A
    A<-B
    B<-C
    Escribir "A vale " A " y B vale " B
Fin

PSeInt:

Proceso ejercicio_1
   Escribir "Introduce el valor de A"
   Leer a
   Escribir "Introduce el valor de B"
   Leer b
   c<-a
   a<-b
   b<-c
   Escribir "A vale " a " y B vale " b
FinProceso

2.     Algoritmo que lea dos números, calculando y escribiendo el valor de su suma, resta, producto y división.
Papel:

Var numero1, numero2, resultado: numerica
Inicio
   Escribir "Introduce el primer numero"
   Leer numero1
   Escribir "Introduce el segundo numero"
   Leer numero2
   resultado<-numero1+numero2
   Escribir resultado
   resultado<-numero1-numero2
   Escribir resultado
   resultado<-numero1*numero2
   Escribir resultado
   resultado<-numero1/numero2
   Escribir resultado
   Fin
PSeInt:








Proceso ejercicio_2
    Escribir "Introduce el primer numero"
    Leer numero1
    Escribir "Introduce el segundo numero"
    Leer numero2
    resultado1<-0
    resultado1<-numero1+numero2
    Escribir “El resultado de la suma es ” resultado1
    Resultado2<-numero1-numero2
    Escribir “El resultado de la resta es ” resultado2
    Resultado3<-numero1*numero2
    Escribir “El resultado de la multiplicación es ” resultado3
    Resultado4<-numero1/numero2
    Escribir “El resultado de la división es ” resultado4
FinProceso

3.     Algoritmo que lea dos números y nos diga cuál de ellos es mayor o bien si son iguales (recuerda usar la estructura condicional SI)
Papel:

Var numero1, numero2: numerica
Inicio
    Escribir "Introduce el primer numero"
    Leer numero1
    Escribir "Introduce el segundo numero"
    Leer numero2
    Si (numero1>=numero2) Entonces
        Si (numero1=numero2) Entonces
           escribir "los numeros " numero1 " " numero2 " son iguales"
        Sino
           Escribir numero1 " es el mayor de los dos"
        FinSi
    Sino
        Escribir numero2 " es el mayor de los dos"
    FinSi
Fin
            PSeInt:

Proceso ejercicio_3
    Escribir "Introduce el primer numero"
    Leer numero1
    Escribir "Introduce el segundo numero"
    Leer numero2
    Si (numero1>=numero2) Entonces
        Si (numero1=numero2) Entonces
        Escribir "los numeros " numero1 " y " numero2 " son  iguales"
        Sino
        Escribir numero1 " es el mayor de los dos numeros"
        FinSi
        Escribir numero2 " es el mayor de los dos  numeros"
     FinSi
FinProceso



4.     Algoritmo que lea tres números distintos y nos diga cual de ellos es el mayor (recuerda usar la estructura condicional Si y los operadores lógicos).
Papel:

Var numero1, numero2, numero3: numerica
Inicio
    Escribir "Introduce el primer numero"
    Leer numero1
    Escribir "Introduce el segundo numero"
    Leer numero2
    Escribir "Introduce el tercer numero"
    Leer numero3
    Si (numero1>numero2 AND numero1>numero3) Entonces
        Escribir "el numero " numero1 " es el mayor"
    Sino
        Si (numero2>numero3) Entonces
            Escribir "El numero " numero2 " es el mayor"
        Sino
            Escribir "El numero " numero3 " es el mayor"
        FinSi
    FinSi
Fin
PSeInt:

Proceso ejercicio_4
    Escribir "Introduce el primer numero"
    Leer numero1
    Escribir "Introduce el segundo numero"
    Leer numero2
    Escribir "Introduce el tercer numero"
    Leer numero3
    Si (numero1>numero2 Y numero1>numero3) Entonces
       Escribir "El numero " numero1 " es el mayor"
    Sino
       Si (numero2>numero3) Entonces
          Escribir "El numero " numero2 " es el mayor"
       Sino
          Escribir "El numero " numero3 " es el mayor"
       FinSi
    FinSi
FinProceso

5.     Diseñar un algoritmo que pida por teclado tres números; si el primero es negativo, debe imprimir el producto de los tres y si no lo es, imprimirá la suma.
Papel:

Var numero1, numero2, numero3, resultado: numerica
Inicio
    Escribir "Introduce el primer numero"
    Leer numero1
    Escribir "Introduce el segundo numero"
    Leer numero2
    Escribir "Introduce el tercer numero"
    Leer numero3
    Si (numero1<0) Entonces
       resultado<-numero1*numero2*numero3
    Sino
       resultado<-numero1+numero2+numero3
    FinSi
    Escribir resultado
Fin
PSeInt:

Proceso ejercicio_5
   Escribir "Introduce el primer numero"
   Leer numero1
   Escribir "Introduce el segundo numero"
   Leer numero2
   Escribir "Introduce el tercer numero"
   Leer numero3
   Si (numero1<0) Entonces
       resultado<-numero1*numero2*numero3
   Sino
       resultado<-numero1+numero2+numero3
   FinSi
   Escribir “El valor es ” resultado
FinProceso

6.     Realizar un algoritmo que lea un número por teclado. En caso de que ese número sea 0 o menor que 0, se saldrá del programa imprimiendo antes un mensaje de error. Si es mayor que 0, se deberá calcular su cuadrado y la raiz cuadrada del mismo, visualizando el numero que ha tecleado el usuario y su resultado (“Del numero X, su potencia es X y su raiz X” ). Para calcular la raiz cuadrada se puede usar la función interna RAIZ(X)  o con una potencia de 0,5.
Papel:

Var numero, potencia, raiz: numerica
Inicio
    Escribir "Introduce un numero"
    Leer numero
    Si (numero>0) Entonces
        potencia<-numero^2
        raiz_cuadrada<-numero^0,5
        Escribir "Su potencia es " potencia "
        Escribir "Su raiz es " raiz_cuadrada
    Sino
        Escribir "Error, introduce un numero mayor que 0"
    FinSi
Fin
PSeInt:

Proceso ejercicio_6
   Escribir "Introduce un numero"
   Leer numero
   Si (numero>0) Entonces
       potencia<-numero^2
       raiz_cuadrada<-RAIZ(numero)
       Escribir "Su potencia es " potencia
       Escribir "Su raiz es " raiz_cuadrada
   Sino
       Escribir "Error, introduce un numero mayor que 0"
   FinSi
FinProceso

7.     Un colegio desea saber qué porcentaje de niños y qué porcentaje de niñas hay en el curso actual. Diseñar un algoritmo para este propósito (recuerda que para calcular el porcentaje puedes hacer una regla de 3).
Papel:

Var numero_niños, numero_niñas, resultado: numerica
Inicio
   Escribir "Introduce el numero de niños"
   Leer numero_niños
   Escribir "Introduce el numero de niñas"
   Leer numero_niñas
   porcentaje_niños<-numero_niños*100/(numero_niños+numero_niñas)
   porcentaje_niñas<-100-porcentaje_niños
   Escribir "Hay un " porcentaje_niños " % de niños
   Escribir "Hay un " porcentaje_niñas " % de niñas
Fin
       PSeInt:

Proceso Ejercicio_7
   Escribir "Introduce el numero de niños"
   Leer numero_niños
   Escribir "Introduce el numero de niñas"
   Leer numero_niñas
   porcentaje_niños<-numero_niños*100/(numero_niños+numero_niñas)
   porcentaje_niñas<-100-porcentaje_niños
   Escribir "Hay un " porcentaje_niños " % de niños
   Escribir "Hay un " porcentaje_niñas " % de niñas"
FinProceso

8.    Una tienda ofrece un descuento del 15% sobre el total de la compra durante el mes de octubre. Dado un mes y un importe, calcular cuál es la cantidad que se debe cobrar al cliente.
Papel:

Var mes: cadena
    importe, total:numerico
Inicio
    Escribir "escribe el importe de la compra"
    Leer importe
    Escribir "Introduce el mes"
    Leer mes
    Si (mes="octubre") Entonces
       total<-importe*0.85
    Sino
        total<-importe
    FinSi
    Escribir total
Fin
PSeInt:

Proceso ejercicio_8
    Escribir "Escribe el importe de la compra"
    Leer importe
    Escribir "Introduce el mes"
    Leer mes
    Si (mes="octubre") Entonces
       total<-importe*0.85
    Sino
       total<-importe
    FinSi
    Escribir “El descuento es de ” total
FinProceso

9.    Realizar un algoritmo que dado un número entero, visualice en pantalla si es par o impar. En el caso de ser 0, debe visualizar “el número no es par ni impar” (para que un numero sea par, se debe dividir entre dos y que su resto sea 0)
Papel:

Var numero: numerica
Inicio
   Escribir "Introduce un numero"
   Leer numero
   Si (numero=0) Entonces
      Escribir "El " numero " no es par ni impar"
   Sino
      Si (numero MOD 2=0) Entonces
         Escribir "El " numero " es par"
      Sino
         Escribir "El " numero " no es par"
      FinSi
   FinSi
Fin
PSeInt:

Proceso ejercicio_9
   Escribir "Introduce un numero"
   Leer numero
   Si (numero=0) Entonces
      Escribir "El " numero " no es par ni impar"
   Sino
     Si (numero MOD 2=0) Entonces
        Escribir "El " numero " es par"
     Sino
        Escribir "El " numero " no es par"
     FinSi
   FinSi
FinProceso
10.  Modificar el algoritmo anterior, de forma que si se teclea un cero, se vuelva a pedir el número por teclado (así hasta que se teclee un número mayor que cero) (recuerda la estructura mientras).
Papel:

Var numero: numerica
Inicio
   Escribir "Introduce un numero"
   Leer numero
   Mientras (numero<=0) hacer
      Escribir "escribe un numero mayor que 0"
      Leer numero
   FinMientras
   Si (numero MOD 2=0) Entonces
      Escribir "El " numero " es par"
   Sino
      Escribir "El " numero " no es par"
   FinSi
Fin
PSeInt:

Proceso ejercicio_10
   Escribir "Introduce un numero"
   Leer numero
   Mientras (numero<=0) hacer
      Escribir "escribe un numero mayor que 0"
      Leer numero
   FinMientras
   Si (numero MOD 2=0) Entonces
      Escribir "El " numero " es par"
   Sino
      Escribir "El " numero " no es par"
   FinSi
FinProceso
11.   Algoritmo que nos diga si una persona puede acceder a cursar un ciclo formativo de grado superior o no. Para acceder a un grado superior, si se tiene un titulo de bachiller, en caso de no tenerlo, se puede acceder si hemos superado una prueba de acceso.
Papel:

Var bachiller, prueba_acceso: cadena
Inicio
   Escribir "¿Tienes el titulo de bachiller?"
   Leer bachiller
   si (bachiller="si") Entonces
      Escribir "Puedes acceder al grado superior"
   Sino
      Escribir "¿Tienes la prueba de acceso superada?"
      Leer prueba_acceso
      si (prueba_acceso="si") Entonces
         Escribir "Puedes acceder al grado superior"
      Sino
         Escribir "No puedes acceder a un grado superior"
      FinSi
   FinSi
Fin
PSeInt:

Proceso ejercicio_11
   Escribir "¿Tienes el titulo de bachiller?"
   Leer bachiller
   si (bachiller="si") Entonces
      Escribir "Puedes acceder al grado superior"
   Sino
      Escribir "¿Tienes la prueba de acceso superada?"
      Leer prueba_acceso
      si (prueba_acceso="si") Entonces
         Escribir "Puedes acceder al grado superior"
      Sino
         Escribir "No puedes acceder a un grado superior"
      FinSi
   FinSi
FinProceso

12.  Desarrollar un algoritmo que nos calcule el cuadrado de los 9 primeros números naturales (recuerda la estructura desde-hasta)

Papel:

Var num, res: numerica
Inicio
   Desde num<-1 Hasta 9 In 1
      res<-num^2
      Escribir num "        " res
   FinDesde
Fin
PSeInt:

Proceso ejercicio_12
   Para num<-1 Hasta 9 Con Paso 1
      res<-num^2
      Escribir num " " res
   FinPara
FinProceso

13. Se pide representar el algoritmo que nos calcule la suma de los N primeros números naturales. N se leerá por teclado (no tenemos porque llamar a la variable N, podemos llamarla como queramos).
Papel:

Var N, contador, suma: numerica
Inicio
  Leer N
  suma<-0
  Desde contador<-1 Hasta 5 In 1
     suma<-N+suma
     N<-N+1
  FinDesde
  Escribir suma
Fin
PSeInt:

Proceso ejercicio_13
   Leer N
   suma<-0
   Para contador<-1 Hasta 5 Con Paso 1
      suma<-N+suma
      N<-N+1
   FinPara
   Escribir suma
FinProceso


14.  Se pide representar el algoritmo que nos calcule la suma de los N primeros números pares. Es decir, si insertamos un 5, nos haga la suma de 6+8+10+12+14.
Papel:

Var N, contador, suma: numerica
Inicio
  Leer N
  contador<-0
  Mientras (contador<5) Hacer
      si (N MOD 2=0) Entonces
        suma<-N+suma
        contador<-contador+1
      FinSi
      N<-N+1
  FinMientras
  Escribir suma
Fin
PSeInt:

Proceso ejercicio_14
  Leer N
  contador<-0
  limite<-N
  Mientras (contador<limite) Hacer
    si (N MOD 2=0) Entonces
        suma<-N+suma
        contador<-contador+1
    FinSi
    N<-N+1
  FinMientras
  Escribir suma
FinProceso

15.  Dada una secuencia de números leídos por teclado, que acabe con un –1, por ejemplo: 5,3,0,2,4,4,0,0,2,3,6,0,……,-1; Realizar el algoritmo que calcule la media aritmética. Suponemos que el usuario no insertara numero negativos.
Papel:

Var num, contador, suma: numerica
Inicio
  Leer num
  suma<-0
  contador<-1
  Mientras (num<>-1) Hacer
      suma<-suma+num
      contador<-contador+1
      Leer num
  FinMientras
  Escribir suma/(contador-1)
Fin
PSeInt:

Proceso ejercicio_15
  Leer num
  suma<-0
  contador<-1
  Mientras (num<>-1) Hacer
     suma<-suma+num
     contador<-contador+1
     Leer num
  FinMientras
  Escribir suma/(contador-1)
FinProceso

16.   Teniendo en cuenta que la clave es “eureka”, escribir un algoritmo que nos pida una clave. Solo tenemos 3 intentos para acertar, si fallamos los 3 intentos nos mostrara un mensaje indicándonos que hemos agotado esos 3 intentos. (Recomiendo utilizar un interruptor). Si acertamos la clave, saldremos directamente del programa.
Papel:

Var clave: cadena
    acierto: booleano
    contador: numerica
Inicio
   contador<-0
   acierto<-Falso
   Mientras (contador<3 AND acierto=falso) Hacer
      Leer clave
      si (clave="eureka") Entonces
        Escribir "la clave es correcta"
        acierto<-Verdadero
      FinSi
      contador<-contador+1
   FinMientras
   si (contador=3 AND acierto=falso) Entonces
       Escribir "Ya no tienes mas intentos"
   FinSi
Fin
PSeInt:

Proceso ejercicio_16
    contador<-0
    acierto<-Falso
    Mientras (contador<3 Y acierto=falso) Hacer
        Escribir "introduce la clave"
        Leer clave
        si (clave="eureka") Entonces
            Escribir "la clave es correcta"
            acierto<-Verdadero
        FinSi
        contador<-contador+1
    FinMientras
    si (contador=3 Y acierto=falso) Entonces
         Escribir "Ya no tienes mas intentos"
    FinSi
FinProceso


17.  Algoritmo que lea números enteros hasta teclear 0, y nos muestre el máximo, el mínimo y la media de todos ellos. Piensa como debemos inicializar las variables.
Papel:

Var maximo, minimo, num, suma, media, contador: numerica
Inicio
   Leer num
   minimo<-num
   maximo<-num
   suma<-0
   Mientras (num<>0) Hacer
      si (num>maximo) Entonces
         maximo<-num
      FinSi
      si (num<minimo) Entonces
         minimo<-num
      FinSi
      suma<-suma+num
      contador<-contador+1
      leer num
   FinMientras
   media<-suma/(contador)
   Escribir "El maximo es " maximo
   Escribir "El minimo es " minimo
   Escribir "La media es " media
Fin
PSeInt:

Proceso ejercicio_17
  Leer num
  minimo<-num
  maximo<-num
  suma<-0
  Mientras (num<>0) Hacer
     si (num>maximo) Entonces
        maximo<-num
     FinSi
     si (num<minimo) Entonces
        minimo<-num
     FinSi
     suma<-suma+num
     contador<-contador+1
     leer num
  FinMientras
  media<-suma/(contador)
  Escribir "El maximo es " maximo
  Escribir "El minimo es " minimo
  Escribir "La media es " media
FinProceso

18.  Algoritmo que visualice la cuenta de los números que son múltiplos de 2 o de 3 que hay entre 1 y 100.
Papel:

Var num: numerica
Inicio
   Desde num<-1 Hasta 100 In 1
      //asi indicamos si un numero es multiplo de 3 o de 2
      si (num MOD 2=0 OR num MOD 3=0) Entonces
          Escribir num
      FinSi
   FinDesde
Fin
PSeInt:

Proceso ejercicio_18
   Para num<-1 Hasta 100 Con Paso 1
      si (num MOD 2=0 o num MOD 3=0) Entonces
         Escribir num
      FinSi
   FinPara
FinProceso

19.  Leer tres números que denoten una fecha (día, mes, año). Comprobar que es una fecha válida. Si no es válida escribir un mensaje de error. Si es válida escribir la fecha cambiando el número del mes por su nombre. Ej. si se introduce 1 2 2006, se deberá imprimir “1 de febrero de 2006”. El año debe ser mayor que 0. (Recuerda la estructura segun sea).
Papel:

Var dia, mes, año: numerica
Inicio
   Escribir "Introduce el dia"
   Leer dia
   Escribir "Introduce el mes"
   Leer mes Escribir "Introduce el año"
   Leer año
   //comprobamos que la fecha es correcto
   si ((dia<=31 y dia>=0) AND (mes<=12 y mes>=0) AND año>0) Entonces
      Escribir dia sin saltar
      //usamos el segun sea para escribir el mes
      Segun mes Hacer
         1:
            escribir " de enero de" sin saltar
         2:
            escribir " de febrero de " sin saltar
         3:
            escribir " de marzo de " sin saltar
         4:
            escribir " de abril de " sin saltar
         5:
            escribir " de mayo de " sin saltar
         6:
            escribir " de junio de " sin saltar
         7:
            escribir " de julio de " sin saltar
         8:
            escribir " de agosto de " sin saltar
         9:
            escribir " de septiembre de " sin saltar
         10:
            escribir " de octubre de " sin saltar
         11:
            escribir " de noviembre de " sin saltar
         12:
            escribir " de diciembre de " sin saltar
      FinSegun
      Escribir año
   Sino
      Escribir "error"
   FinSi
Fin
PSeInt:

Proceso ejercicio_19
   Escribir "Introduce el dia"
   Leer dia
   Escribir "Introduce el mes"
   Leer mes
   Escribir "Introduce el año"
   Leer año
   si ((dia<=31 y dia>0) y (mes<=12 y mes>0) y año>0) Entonces
      Escribir dia sin saltar
      Segun mes Hacer
        1:
         escribir " de enero de " sin saltar
        2:
         escribir " de febrero de " sin saltar
        3:
         escribir " de marzo de " sin saltar
        4:
         escribir " de abril de " sin saltar
        5:
         escribir " de mayo de " sin saltar
        6:
         escribir " de junio de " sin saltar
        7:
         escribir " de julio de " sin saltar
        8:
         escribir " de agosto de " sin saltar
        9:
         escribir " de septiembre de " sin saltar
        10:
         escribir " de octubre de " sin saltar
        11:
         escribir " de noviembre de " sin saltar
        12:
         escribir " de diciembre de " sin saltar
      FinSegun
      Escribir año
   Sino
      Escribir "error"
   FinSi
FinProceso

20.  Calcular las calificaciones de un grupo de alumnos. La nota final de cada alumno se calcula según el siguiente criterio: la parte práctica vale el 10%; la parte de problemas vale el 50% y la parte teórica el 40%. El algoritmo leerá el nombre del alumno, las tres notas, escribirá el resultado y volverá a pedir los datos del siguiente alumno hasta que el nombre sea una cadena vacía. Las notas deben estar entre 0 y 10, si no lo están, no imprimirá las notas, mostrara un mensaje de error y volverá a pedir otro alumno.
Papel:

Var alumno: cadena
    nota_teoria, nota_problemas, nota_teoria, nota_final: numerica
Inicio
     Escribir "Introduce el nombre del alumno"
     Leer alumno
     Mientras alumno<>"" Hacer
        Escribir "Introduce la nota practica"
        leer nota_practica
        Escribir "Introduce la nota de problemas"
        leer nota_problemas
        Escribir "Introduce la nota de teoria"
        Leer nota_teoria
        //NOTA: este si esta agrupado por falta de espacio
        si (nota_practica<=10 AND nota_practica>=0)
        AND (nota_problemas<=10 AND nota_problemas>=0)
        AND (nota_teoria<=10 AND nota_teoria>=0) Entonces
           Escribir "El alumno " alumno
           Escribir "La nota practica es " nota_practica
           Escribir "La nota de problemas es " nota_problemas
           Escribir "La nota de teoria es " nota_teoria
           nota_practica<-nota_practica*0.1
           nota_problemas<-nota_problemas*0.5
           nota_teoria<-nota_teoria*0.4
           nota_final<-nota_practica+nota_problemas+nota_teoria
           Escribir "La nota final es " nota_final
        Sino
           Escribir "Has escrito una nota incorrecta, vuelve a intentarlo"
        FinSi

        Escribir "Introduce el nombre de otro alumno"
        Leer alumno
     FinMientras
Fin
PSeInt:

Proceso ejercicio_20
   Escribir "Introduce el nombre del alumno"
   Leer alumno
   Mientras alumno<>"" Hacer
      Escribir "Introduce la nota practica"
      leer nota_practica
      Escribir "Introduce la nota de problemas"
      leer nota_problemas
      Escribir "Introduce la nota de teoria"
      Leer nota_teoria
      si (nota_practica<=10 y nota_practica>=0)
      y (nota_problemas<=10 y nota_problemas>=0)
      y (nota_teoria<=10 y nota_teoria>=0) Entonces
         Escribir "El alumno " alumno
         Escribir "La nota practica es " nota_practica
         Escribir "La nota de problemas es " nota_problemas
         Escribir "La nota de teoria es " nota_teoria
         nota_practica<-nota_practica*0.1
         nota_problemas<-nota_problemas*0.5
         nota_teoria<-nota_teoria*0.4
         nota_final<-nota_practica+nota_problemas+nota_teoria
         Escribir "La nota final es " nota_final
      Sino
         Escribir "Has escrito una nota incorrecta, vuelve a intentarlo"
      FinSi
         Escribir "Introduce el nombre de otro alumno"
         Leer alumno
   FinMientras
FinProceso

21.   Algoritmo que lea un número entero (lado) y a partir de él cree un cuadrado de asteriscos con ese tamaño. Los asteriscos sólo se verán en el borde del cuadrado, no en el interior.
Papel:

Var lado, asterisco, espacio: numerica
Inicio
  Leer lado
  Desde asterisco<-1 Hasta lado In 1
      Escribir "*"
  FinDesde
  escribir " "
  desde asterisco<-1 Hasta lado-2 In 1
      Escribir "*"
      Desde espacio<-1 Hasta lado-2 In 1
         Escribir " "
      FinDesde
      Escribir "*"
      escribir " "
  FinDesde
  Desde asterisco<-1 Hasta lado In 1
      Escribir "*"
  FinDesde
Fin
PSeInt:

Proceso ejercicio_21
  Leer lado
  Para asterisco<-1 Hasta lado Con Paso 1
      Escribir "*" Sin Saltar
  FinPara
  escribir " "
  Para asterisco<-1 Hasta lado-2 Con Paso 1
      Escribir "*" Sin Saltar
      Para espacio<-1 Hasta lado-2 Con Paso 1
         Escribir " " sin saltar
      FinPara
      Escribir "*" Sin Saltar
      escribir " "
  FinPara
  Para asterisco<-1 Hasta lado Con Paso 1
      Escribir "*" Sin Saltar
  FinPara
FinProceso

22.   Algoritmo que lea un número entero (altura) y a partir de él cree una escalera invertida de asteriscos con esa altura. Debera quedar asi, si ponemos una altura de 5.
Papel:

Var altura, asterisco, espacio, espacio_linea, asterisco_linea: numerica
Inicio
  Leer altura
  asterisco<-altura
  espacio<-0
  Desde linea<-1 hasta altura In 1
      Desde espacio_linea<-0 hasta espacio In 1
        Escribir " "
      FinDesde
      Desde asterisco_linea<-1 hasta asterisco In 1
        Escribir "*"
      FinDesde
      asterisco<-asterisco-1
      espacio<-espacio+1
      Escribir " "
  FinDesde
Fin
PSeInt:

Proceso ejercicio_22
  Leer altura
  asterisco<-altura
  espacio<-0
  Para linea<-1 hasta altura con paso 1
      Para espacio_linea<-0 hasta espacio con paso 1
         Escribir " " sin saltar
      FinPara
      Para asterisco_linea<-1 hasta asterisco con paso 1
      Escribir "*" sin saltar
      FinPara
      asterisco<-asterisco-1
      espacio<-espacio+1
      Escribir " "
  FinPara
FinProceso


23.  Algoritmo que dado un año, nos diga si es bisiesto o no. Un año es bisiesto bajo las siguientes condiciones:
·         Un año divisible por 4 es bisiesto y no debe ser divisible entre 100.
·         Si un año es divisible entre 100 y además es divisible entre 400, también resulta bisiesto.
Papel:

Var año: numerica
Inicio
   Escribir "Introduce un año"
   leer año
   si (año MOD 4=0 y año MOD 100<>0)Entonces
      Escribir "El año " año " es bisiesto"
   Sino
      si (año MOD 400=0 y año MOD 100=0) Entonces
         Escribir "El año " año " es bisiesto"
      Sino
         escribir "El año " año " no es bisiesto"
      FinSi
   FinSi
Fin

PSeInt:

Proceso ejercicio_23
   Escribir "Introduce un año"
   leer año
   si (año MOD 4=0 y año MOD 100<>0)Entonces
      Escribir "El año " año " es bisiesto"
   Sino
      si (año MOD 400=0 y año MOD 100=0) Entonces
         Escribir "El año " año " es bisiesto"
      Sino
         escribir "El año " año " no es bisiesto"
      FinSi
   FinSi
FinProceso

24.  El siguiente es el menú de un restaurante de bocadillos. Diseñar un algoritmo capaz de leer el número de unidades consumidas de cada alimento ordenado y calcular la cuenta total. Vamos a suponer que estos precios son fijos, es decir, que son constantes (recuerda que en PSeInt no se usa comas para separar la parte decimal de la parte entera).
Papel:

Inicio
   JAMON=1.5
   REFRESCO=1.05
   CERVEZA=0.75
   total=0
   Escribir "Introduce la cantidad de bocadillos de jamon"
   Leer cant_jamon
   Escribir "Introduce la cantidad de refresco"
   Leer cant_refresco
   Escribir "Introduce la cantidad de cerveza"
   Leer cant_cerveza
   //NOTA: las 2 siguientes lineas van en una linea
   total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO)
   +(cant_cerveza*CERVEZA))
   Escribir total
Fin



PSeInt:

Proceso ejercicio_24
   JAMON=1.5
   REFRESCO=1.05
   CERVEZA=0.75
   total=0
   Escribir "Introduce la cantidad de bocadillos de jamon"
   Leer cant_jamon
   Escribir "Introduce la cantidad de refresco"
   Leer cant_refresco
   Escribir "Introduce la cantidad de cerveza"
   Leer cant_cerveza
   total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO)+(cant_cerveza*CERVEZA))
   Escribir total
FinProceso

25.  Algoritmo que nos calcule las raíces de una ecuación de segundo grado. Controlar el caso de que las soluciones sean imaginarias.
Papel:

Var a,b, c, raizcua, x1, x2: numerica
Inicio
  Escribir "escibe el valor de a"
  Leer a
  Escribir "escibe el valor de b"
  Leer b
  Escribir "escibe el valor de c"
  Leer c
  neg<--b
  raizcua<-(b^2-4*a*c)^0.5
  Si raizcua<=0 Entonces
      Escribir "La ecuacion no se puede resolver"
  Sino
      x1<-(neg+raizcua)/(2*a)
      x2<-(neg-raizcua)/(2*a)
      Escribir x1
      Escribir x2
  FinSi
Fin
PSeInt:

Proceso ejercicio_25
   Escribir "escibe el valor de a"
   Leer a
   Escribir "escibe el valor de b"
   Leer b
   Escribir "escibe el valor de c"
   Leer c
   neg<--b
   raizcua<-(b^2-4*a*c)^0.5
   Si raizcua<=0 Entonces
      Escribir "La ecuacion no se puede resolver"
   Sino
      totalx1<-(NEG+Raizcua)/(2*a)
      totalx2<-(NEG-Raizcua)/(2*a)
      Escribir Totalx1
      Escribir Totalx2
   FinSi
FinProceso

26.  Escribir un Pseudocódigo de un programa que permita leer la edad y peso de una persona y posteriormente imprimirla.
Inicio
Variables edad, peso.
Imprimir "Escribir los datos (Edad, Peso):"
Leer Edad, Leer Peso.
Visualizar "Tu peso es: ", peso, " y tu edad es: ", edad.
Fin.

Proceso edad_peso
Escribir “Digite su edad”
Leer edad
Escribir “Digite su peso”
Leer peso
Escribir  “Tu peso es “ peso “ y tu edad es “ edad
FinProceso

27.  Escribir un Pseudocódigo que calcule el área de un triángulo recibiendo como entrada el valor de base y altura.

Inicio
    Variables Altura, Base, Area.

    Imprimir "Introduce la base y la altura: "
    Leer base y peso.
    area= (base*altura)/2.
    Imprimir "El area es: ", base.
Fin.

Proceso area_triangulo
Escribir “Digite la altura del triangulo”
Leer altura
Escribir “Digite la base del triangulo”
Leer base
area<-base*altura/2
Escribir “El area del triangulo es “ area
FinProceso




  1.  Escribir Pseudocódigo que calcule el área de un círculo.

Inicio
   Constantes  Pi= 3.1416
   Variables Radio, area = real
   Imprime "Introduce el radio: "
   Leer radio.
   area= radio*radio*Pi
   Imprimir "El área del circulo es: ", area.
Fin.

Proceso area_circulo
   Constantes  Pi= 3.1416
Escribir “Digite el radio”
Leer radio
area<-radio*radio*Pi
Escribir “El area del circulo es “ area  
FinProceso

  1. Escribir Pseudocodigo que dados 2 valores de entrada imprima siempre la división del mayor entre el menor. ************

Inicio
   Variables num1, num2=entero.
   Variables R=real.

   Imprimir "Introduce los números:"
   Leer num1, Leer num2.
   Si a>b entonces
      R= a/b
   Sino
      R= b/a
Fin.

Inicio
   Variables num1, num2=entero.
   Variables R=real.

   Imprimir "Introduce los números:"
   Leer num1, Leer num2.
   Si a>b entonces
      R= a/b
   Sino
      R= b/a
Fin.

  1. Escribir Pseudocódigo que lea de entrada 3 números y que indique cual es el mayor de ellos.

 Inicio
   Variables a, b,c = enteros.
  
   Imprimir "Introduce los datos a comparar: "
   Leer a,b,c
   Si a<b y a<c entonces
      Imprime "El mayor es: ", a
   Sino
      Si b<a y b<c entonces
         Imprime "El mayor es: ",b
      sino
         Imprime "El mayor es: ", c
Fin.


 Inicio
   Variables a, b,c = enteros.
  
   Imprimir "Introduce los datos a comparar: "
   Leer a,b,c
   Si a<b y a<c entonces
      Imprime "El mayor es: ", a
   Sino
      Si b<a y b<c entonces
         Imprime "El mayor es: ",b
      sino
         Imprime "El mayor es: ", c
Fin.

  1. Escribir un Pseudocódigo que lea 3 números los cuales significan una fecha (día, mes, año). Comprobar que sea válida la fecha, si no es valido que imprima un mensaje de error, y si es válida imprimir el mes con su nombre.

Inicio
   Variables  dia, mes, año =entero.

   Imprimir "Introduce la fecha (Dia,mes,año): "
   Leer dia, mes, año.
   Si dia>31 o mes >12 o año<0 entonces
       Imprimir "Error la fecha no es correcta"
   Sino
       si mes=1 o mes=3 o mes=5 o mes=7 o mes=8 o mes=10 o mes=12 entonces
            si dia >31 y dia<1 entonces
               Imprimir "Error de Dia"
            sino
                si mes=1 entonces imprimir dia,"/ Enero /",año
                si mes=3 entonces imprimir dia,"/ Marzo /",año
                si mes=5 entonces imprimir dia,"/ Mayo /",año
                si mes=7 entonces imprimir dia,"/ Julio /",año
                si mes=8 entonces imprimir dia,"/ Agosto /",año
                si mes=10 entonces imprimir dia,"/ Octubre /",año
                si mes=12 entonces imprimir dia,"/ Diciembre /",año
      
       Si mes=2 entonces
              si dia>28 o dia<0 entonces
                 Imprimir "Error de Dia"
              sino
                 Imprimir dia,"/ Febrero /",año

       Si mes=4 o mes=6 o mes=9 o mes=11
          Si dia >30 o dia <1 entonces
             Imprimir "Error de Dia"
          Sino
              Si mes=4 entonces
                  Imprimir dia,"/ Abril /",año
              Si mes=6 entonces
                  Imprimir dia,"/ Junio /",año
              Si mes=9 entonces
                  Imprimir dia,"/ Septiembre /",año   
              Si mes=11 entonces
                  Imprimir dia,"/ Noviembre /",año   
Fin.


Inicio
   Variables  dia, mes, año =entero.

   Imprimir "Introduce la fecha (Dia,mes,año): "
   Leer dia, mes, año.
   Si dia>31 o mes >12 o año<0 entonces
       Imprimir "Error la fecha no es correcta"
   Sino
       si mes=1 o mes=3 o mes=5 o mes=7 o mes=8 o mes=10 o mes=12 entonces
            si dia >31 y dia<1 entonces
               Imprimir "Error de Dia"
            sino
                si mes=1 entonces imprimir dia,"/ Enero /",año
                si mes=3 entonces imprimir dia,"/ Marzo /",año
                si mes=5 entonces imprimir dia,"/ Mayo /",año
                si mes=7 entonces imprimir dia,"/ Julio /",año
                si mes=8 entonces imprimir dia,"/ Agosto /",año
                si mes=10 entonces imprimir dia,"/ Octubre /",año
                si mes=12 entonces imprimir dia,"/ Diciembre /",año
      
       Si mes=2 entonces
              si dia>28 o dia<0 entonces
                 Imprimir "Error de Dia"
              sino
                 Imprimir dia,"/ Febrero /",año

       Si mes=4 o mes=6 o mes=9 o mes=11
          Si dia >30 o dia <1 entonces
             Imprimir "Error de Dia"
          Sino
              Si mes=4 entonces
                  Imprimir dia,"/ Abril /",año
              Si mes=6 entonces
                  Imprimir dia,"/ Junio /",año
              Si mes=9 entonces
                  Imprimir dia,"/ Septiembre /",año   
              Si mes=11 entonces
                  Imprimir dia,"/ Noviembre /",año   
Fin.






  1. Escribir un Pseudocodigo que pida la edad y el sexo y dependiendo si es hombre o mujer y si puede votar o no.

Inicio
   variables edad=entero, sexo=caracter.
  
   repetir
   Imprimir "Introduce Tu edad:"
   Leer edad.
   Hasta que (edad >0)

   Hacer
   Imprimir "Introduce tu sexo (M/H):"
   leer sexo
   hasta que (sexo='H' o sexo = 'M')

   Si  sexo= 'M' entonces
       si edad > 18 entonces
           Imprimir "Eres Mujer y puedes votar"
       sino
           Imprimir "Eres Mujer y no puedes votar"
   Sino
       si edad >18 entonces
           Imprimir "Eres Hombre y puedes votar"
       sino
           Imprimir "Eres Hombre y no puedes votar"
Fin.

Inicio
   variables edad=entero, sexo=caracter.
  
   repetir
   Imprimir "Introduce Tu edad:"
   Leer edad.
   Hasta que (edad >0)

   Hacer
   Imprimir "Introduce tu sexo (M/H):"
   leer sexo
   hasta que (sexo='H' o sexo = 'M')

   Si  sexo= 'M' entonces
       si edad > 18 entonces
           Imprimir "Eres Mujer y puedes votar"
       sino
           Imprimir "Eres Mujer y no puedes votar"
   Sino
       si edad >18 entonces
           Imprimir "Eres Hombre y puedes votar"
       sino
           Imprimir "Eres Hombre y no puedes votar"
Fin.



  1. - Realice un Pseudocódigo que calcule la nómina salarial neto, de unos obreros cuyo trabajo se paga en horas. El cálculo se realiza de la siguiente forma:
- Las primeras 35 horas a una tarifa fija.
- Las horas extras se pagan a 1.5 más de la tarifa fija.
- Los impuestos a deducir de los trabajadores varian, segun el sueldo mensual si el sueldo es menos a $20,000.00 el sueldo es libre de impuesto y si es al contrario se cobrará un 20% de impuesto.

Inicio
  Canstante  Tarifa= 50.
  Variables Horas, Sueldo, dif_horas, tarifa_extra, Salario_extra, Sueldo_mes, Impuesto, Sueldo_total.

  Imprimir "Introduce las Horas de Trabajo ==> "
  Leer Horas.

  Si Horas <= 35 entonces
    Sueldo= horas * tarifa.
  Sino
    Dif_horas= Horas - 35
    tarifa_extra=(tarifa * 1.5)
    Salario_exta= tarifa_extra * Dif_horas
    Sueldo=(35*tarifa)+ salario_extra.

  Sueldo_mes = sueldo * 4
  Impuesto=0

  Si sueldo_mes > 20000 entonces
       Impuesto = (Sueldo_mes* 0.20)
       Salario_total = Sueldo_mes - Impuesto
       Imprimir "Tu sueldo al mes es: ", sueldo_mes,"Valor de Impuesto: ", Impuesto, " El salario Neto es: ",Salario_total.
  sino
       Imprimir "Tu sueldo Neto es: ", sueldo_mes.
Fin.

Inicio
  Canstante  Tarifa= 50.
  Variables Horas, Sueldo, dif_horas, tarifa_extra, Salario_extra, Sueldo_mes, Impuesto, Sueldo_total.

  Imprimir "Introduce las Horas de Trabajo ==> "
  Leer Horas.

  Si Horas <= 35 entonces
    Sueldo= horas * tarifa.
  Sino
    Dif_horas= Horas - 35
    tarifa_extra=(tarifa * 1.5)
    Salario_exta= tarifa_extra * Dif_horas
    Sueldo=(35*tarifa)+ salario_extra.

  Sueldo_mes = sueldo * 4
  Impuesto=0

  Si sueldo_mes > 20000 entonces
       Impuesto = (Sueldo_mes* 0.20)
       Salario_total = Sueldo_mes - Impuesto
       Imprimir "Tu sueldo al mes es: ", sueldo_mes,"Valor de Impuesto: ", Impuesto, " El salario Neto es: ",Salario_total.
  sino
       Imprimir "Tu sueldo Neto es: ", sueldo_mes.
Fin.

  1. Hacer un Pseudocódigo que calcule el factorial de un número.

Inicio
   Variables N,Fact,aux.
  
   Imprimir "Introduce el número: "
   Leer N
  
   aux= n-1.
   fact=n
  
   Hacer
     fact=fact * aux.
   Hasta que aux=1
  
   Imprimir "El factorial de ", n, "es:", fact
Fin.

Inicio
   Variables N,Fact,aux.
  
   Imprimir "Introduce el número: "
   Leer N
  
   aux= n-1.
   fact=n
  
   Hacer
     fact=fact * aux.
   Hasta que aux=1
  
   Imprimir "El factorial de ", n, "es:", fact
Fin.

  1. Hacer un Pseudocodigo que despliegue las tablas de multiplicar.
Inicio
   Variables i,k,r.
  
   para i=1 hasta 10.

      para k=1 hasta 10.
          r:=i*k.
          Imprimir i," por ",k," = ",r.
          k=k+1.
      i=i+1.
Fin.


Inicio
   Variables i,k,r.
  
   para i=1 hasta 10.

      para k=1 hasta 10.
          r:=i*k.
          Imprimir i," por ",k," = ",r.
          k=k+1.
      i=i+1.
Fin.

36.  Escribir un Pseudocódigo que encuentre y despliegue los números primos entre uno y cien. Un número primo es divisible entre el mismo y la unidad por lo tanto un numero primo no puede ser par excepto el dos (2).
 Inicio
   Variables primo, cont, div, res.
  
   Primo = 1.
   Hacer mientras primo<=100
      Div =0.
      Cont =1.
      Hacer Mientras cont <= primo
          Res = cont mod primo
          si res = 0 entonces
            Div = div +1.
          Fin si
       Cont = cont +1.
      Fin de Hacer mientras
      si div<=2 entonces
         imprimir primo
      Fin si.
   Primo = primo + 1.
   Fin de Hacer mientras    
Fin.

Inicio
   Variables primo, cont, div, res.
  
   Primo = 1.
   Hacer mientras primo<=100
      Div =0.
      Cont =1.
      Hacer Mientras cont <= primo
          Res = cont mod primo
          si res = 0 entonces
            Div = div +1.
          Fin si
       Cont = cont +1.
      Fin de Hacer mientras
      si div<=2 entonces
         imprimir primo
      Fin si.
   Primo = primo + 1.

   Fin de Hacer mientras.    Fin