Ejercicios de Pseudocodigo
Ejercicios de Pseudocodigo
- Escribir un Pseudocódigo de un programa que permita leer la edad y peso de una persona y
posteriormente imprimirla.
Inicio
Visualizar "Tu peso es: ", peso, " y tu edad es: ", edad.
Fin.
2.- 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: "
Area= (base*altura)/2.
Fin.
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.
4.- Escribir Pseudocodigo que dados 2 valores de entrada imprima siempre la división del mayor entre el
menor.
Inicio
Variables R=real.
R= a/b
Sino
R= b/a
Finsi
Imprimir "La división es =", R;
5.- Escribir Pseudocódigo que lea de entrada 3 números y que indique cual es el mayor de ellos.
Inicio
Leer a,b,c
Sino
sino
Fin.
6.- 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
Leer dia
leer mes
leer año.
Sino
sino
Si mes=2 entonces
sino
Sino
Si mes=4 entonces
Si mes=6 entonces
Si mes=9 entonces
Imprimir dia,"/ Septiembre /",año
Si mes=11 entonces
Fin.
Inicio
repetir
Leer edad.
Hacer
leer sexo
sino
Sino
sino
Imprimir "Eres Hombre y no puedes votar"
Fin.
8.- 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:
- 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.
Leer Horas.
Sino
Dif_horas= Horas - 35
tarifa_extra=(tarifa * 1.5)
Sueldo=(35*tarifa)+ salario_extra.
Sueldo_mes = sueldo * 4
Impuesto=0
sino
Fin.
9.- 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
Primo = 1.
Div =0.
Cont =1.
si res = 0 entonces
Fin si
si div<=2 entonces
imprimir primo
Fin si.
Primo = primo + 1.
Fin.
10.- Hacer un Pseudocódigo que calcule el factorial de un número.
Inicio
Variables N,Fact,aux.
Leer N
aux= n-1.
fact=n
Hacer
Fin.
11.- Hacer un Pseudocodigo que despliegue las tablas de multiplicar.
Inicio
Variables i,k,r.
r:=i*k.
k=k+1.
i=i+1.
Fin.
EJERCICIOS TIPO 2
1.-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.
Proceso ejercicio_17
Leer num
minimo<-num
maximo<-num
suma<-0
maximo<-num
FinSi
si (num<minimo) Entonces
minimo<-num
FinSi
suma<-suma+num
contador<-contador+1
leer num
FinMientras
media<-suma/(contador)
FinProceso
2.-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.
Proceso ejercici
Escribir “ingrese”
Leer num
suma<-0
contador<-1
suma<-suma+num
contador<-contador+1
Leer num
FinMientras
Escribir suma/(contador-1)
FinProceso
i<-1
sumapar=0
sumaimp=0
Leer n
sumapar<-sumapar+i
Sino
sumaimp<-sumaimp+i
Fin Si
i=i+1
Fin Mientras
FinProceso
4.- 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.
Proceso ejercicio
Leer importe
Leer mes
Si (mes=”octubre”) Entonces
total<-importe*0.85
Sino
total<-importe
FinSi
Escribir total
FinProceso
5.- Dados 10 números enteros que se ingresan por teclado, calcular cuántos de ellos son pares,
cuánto suman ellos y el promedio de los impares
i=1
leer n
suma=suma+n
sumapar<-sumapar+n
Sino
sumaimp<-sumaimp+n
Fin Si
i=i+1
Fin Mientras
FinProceso
6.- Crea una aplicación que nos pida un día de la semana y que nos diga si es un dia laboral o no.
Usa un switch para ello.
Leer dia
“lunes”:
“martes”:
“miercoles”:
“jueves”:
“viernes”:
“sabado”:
“domingo”:
De Otro Modo:
Fin Segun
FinProceso
7.- Muestra los números del 1 al 100 (ambos incluidos) divisibles entre 2 y 3. Utiliza el bucle que
desees.
Sino
si i mod 2 =0 Entonces
Sino
FinSi
FinSi
Fin Si
Fin Para
FinProceso
Leer text
l<-Subcadena(text,i,i)
Si l=”a” Entonces
c=c+1
Sino
si l=”e” Entonces
c1=c1+1
Sino
si l=”i” Entonces
c2=c2+1
Sino
si l=”o” Entonces
c3=c3+1
Sino
si l=”u” Entonces
c4=c4+1
FinSi
FinSi
FinSi
FinSi
Fin Si
Fin Para
FinProceso
9.-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.
Repetir
Escribir “ingrese nombre del estudiante”
Leer nom1
Leer np
Si np<=1 Entonces
Leer npr
si npr<=5 Entonces
Leer nt
si nt<=4 Entonces
re=np+npr+nt
Sino
FinSi
Sino
FinSi
Sino
Fin Si
FinProceso
10.-Calcula el Cuadrado y el Cubo de los 5 primeros números enteros que siguen a uno ingresado
por teclado.
Proceso prog09
Leer nu
doble=i*i
triple=i*i*i
Fin Para
FinProceso
Proceso prog10
Leer n
res=n*2
div=res/4
FinProceso
mostrar los números del 1 al 12 con los lazos para, repetir y mientras
Proceso prog08
Mostrar i
Fin Mientras
Repetir
a=a+1
Mostrar a
Mostrar q
Fin Para
FinProceso
11.- Se desea obtener una operación básica matemática ( + , – , * , / ) del 1 al 12, de cualquier
número ingresado.
Proceso prog06
//6. Se desea obtener una operación básica matemática ( + , – , * , / ) del 1 al 12, de cualquier
número ingresado
Leer num1
1:
Escribir “multiplicacion”
Leer a
Para i<-1 Hasta 12 Hacer
Mostrar a,”*”,i,”=”,i*a
Fin Para
2:
Escribir “suma”
Leer q
Mostrar q,”+”,i,”=”,i+q
Fin Para
3:
Escribir “resta”
Leer as
Mostrar as,”-“,i,”=”,as-i
Fin Para
4:
Escribir “division”
Leer asd
Mostrar asd,”/”,i,”=”,asd/i
Fin Para
De Otro Modo:
12.- Se desea validar una clave que sea 123456 hasta en tres oportunidades .
Proceso prog07
Escribir “ingrese la contraseña”
Repetir
i=i+1
Leer n
FinProceso
Proceso prog01
n1=0
n2=0
s=0
Leer n1
Leer n2
s=n1+n2
Si s=24 Entonces
Sino
Fin Si
FinProceso
Proceso prog02
Leer n
Sino
Fin Si
FinProceso
Proceso prog02
Leer n
Sino
Fin Si
FinProceso
Proceso prog03
Leer t
Fin Para
FinProceso
Si tienes alguna duda o quieres proponer alguna solución alternativa, deja un
comentario en este post o mándanos un mensaje
a [email protected] También dejare algunos comentarios para
explicar que hace cada paso. Puedes ponerlos con //
Esconder «
Papel:
1
2 Var A, B, C: numerica
Inicio
3 Escribir "Introduce el valor de A"
4 Leer A
5 Escribir "Introduce el valor de B"
6 Leer B
7 C<-A
A<-B
8 B<-C
9 Escribir "A vale " A " y B vale " B
10 Fin
11
PSeInt:
1
Proceso ejercicio_1
2
Escribir "Introduce el valor de A"
3 Leer A
4 Escribir "Introduce el valor de B"
5 Leer B
6 C<-A
A<-B
7
B<-C
8 Escribir "A vale " A " y B vale " B
9 FinProceso
10
2) Algoritmo que lea dos números, calculando y escribiendo el valor de su suma,
resta, producto y división.
Esconder «
Papel:
1 Var numero1, numero2, resultado: numerica
Inicio
2
Escribir "Introduce el primer numero"
3 Leer numero1
4 Escribir "Introduce el segundo numero"
5 Leer numero2
6 resultado<-numero1+numero2
Escribir resultado
7
8
9 resultado<-numero1-numero2
10 Escribir resultado
resultado<-numero1*numero2
11 Escribir resultado
12 resultado<-numero1/numero2
13 Escribir resultado
14 Fin
15
PSeInt:
1
2
Proceso ejercicio_2
3 Escribir "Introduce el primer numero"
4 Leer numero1
5 Escribir "Introduce el segundo numero"
6 Leer numero2
//inicializamos la variable resultado a 0 (recomendable)
7
resultado<-0
8 //sumamos los numeros y escribimos su resultado
9 resultado<-numero1+numero2
10 Escribir resultado
11 //restamos los numeros y escribimos su resultado
resultado<-numero1-numero2
12
Escribir resultado
13 //multiplicamos los numeros y escribimos su resultado
14 resultado<-numero1*numero2
15 Escribir resultado
16 //dividimos los numeros y escribimos su resultado
resultado<-numero1/numero2
17
Escribir resultado
18 FinProceso
19
20
3) Algoritmo que lea dos números y nos diga cual de ellos es mayor o bien si son
iguales (recuerda usar la estructura condicional SI)
Esconder «
Papel:
1 Var numero1, numero2: numerica
Inicio
2
Escribir "Introduce el primer numero"
3 Leer numero1
4 Escribir "Introduce el segundo numero"
5 Leer numero2
6 Si (numero1>=numero2) Entonces
Si (numero1=numero2) Entonces
7
escribir "los numeros " numero1 " " numero2 " son iguales"
8 Sino
9 Escribir numero1 " es el mayor de los dos"
10 FinSi
11
12 Sino
13 Escribir numero2 " es el mayor de los dos"
14 FinSi
Fin
15
16
PSeInt:
1
2
Proceso ejercicio_3
3 Escribir "Introduce el primer numero"
4 Leer numero1
5 Escribir "Introduce el segundo numero"
6 Leer numero2
//comparamos los dos numeros,
7
//si el primero es mayor o igual que el segundo entra
8 Si (numero1>=numero2) Entonces
9 //Si el numero1 y numero2 son iguales entra y escribe que son iguales
10 //Sino lo son escribe que el numero1 es el mayor
11 Si (numero1=numero2) Entonces
escribir "los numeros " numero1 " " numero2 " son iguales"
12
Sino
13 Escribir numero1 " es el mayor de los dos"
14 FinSi
15 //Si el primer Si es falso, escribe que el numero2 es mayor
16 Sino
Escribir numero2 " es el mayor de los dos"
17
FinSi
18 FinProceso
19
20
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).
Esconder «
NOTA: De esta forma que esta hecha, aunque dos de los números sean iguales,
siempre dirá el mayor.
Papel:
1 Var numero1, numero2, numero3: numerica
Inicio
2
Escribir "Introduce el primer numero"
3 Leer numero1
4 Escribir "Introduce el segundo numero"
5 Leer numero2
6 Escribir "Introduce el tercer numero"
Leer numero3
7
Si (numero1>numero2 AND numero1>numero3) Entonces
8 Escribir "el numero " numero1 " es el mayor"
9 Sino
10 Si (numero2>numero3) Entonces
11
12 Escribir "El numero " numero2 " es el mayor"
13 Sino
14 Escribir "El numero " numero3 " es el mayor"
15 FinSi
FinSi
16
Fin
17
18
PSeInt:
1
2
Proceso ejercicio_4
3 Escribir "Introduce el primer numero"
4 Leer numero1
5 Escribir "Introduce el segundo numero"
6 Leer numero2
7 Escribir "Introduce el tercer numero"
Leer numero3
8 //comparamos el numero1 con el numero2 y numero3
9 //Si las dos condiciones son verdaderas el numero1 es el mayor
10 Si (numero1>numero2 Y numero1>numero3) Entonces
11 Escribir "el numero " numero1 " es el mayor"
12 //si el numero1 no es el mayor,
//comparamos el numero2 con el numero3
13 Sino
14 Si (numero2>numero3) Entonces
15 Escribir "El numero " numero2 " es el mayor"
16 Sino
17 Escribir "El numero " numero3 " es el mayor"
FinSi
18 FinSi
19 FinProceso
20
21
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.
Esconder «
Papel:
1 Var numero1, numero2, numero3, resultado: numerica
Inicio
2
Escribir "Introduce el primer numero"
3 Leer numero1
4 Escribir "Introduce el segundo numero"
5 Leer numero2
6 Escribir "Introduce el tercer numero"
Leer numero3
7
Si (numero1<0) Entonces
8 resultado<-numero1*numero2*numero3
9 Sino
10
11 resultado<-numero1+numero2+numero3
12 FinSi
13 Escribir resultado
Fin
14
15
PSeInt:
1
2 Proceso ejercicio_5
3 Escribir "Introduce el primer numero"
4 Leer numero1
Escribir "Introduce el segundo numero"
5
Leer numero2
6 Escribir "Introduce el tercer numero"
7 Leer numero3
8 //si el numero1 es menor que 0,
9 //multiplicara los numero y sino los sumara
Si (numero1<0) Entonces
10
resultado<-numero1*numero2*numero3
11 Sino
12 resultado<-numero1+numero2+numero3
13 FinSi
14 Escribir resultado
FinProceso
15
16
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.
Esconder «
Papel:
1 Var numero, potencia, raiz: numerica
Inicio
2
Escribir "Introduce un numero"
3 Leer numero
4 Si (numero>0) Entonces
5 potencia<-numero^2
6 raiz_cuadrada<-numero^0,5
Escribir "Su potencia es " potencia "
7
Escribir "Su raiz es " raiz_cuadrada
8 Sino
9 Escribir "Error, introduce un numero mayor que 0"
10 FinSi
11 Fin
12
13
PSeInt:
1
2 Proceso ejercicio_6
3 Escribir "Introduce un numero"
Leer numero
4
//si el numero es mayor que 0, calcula la potencia y la raiz
5 //sino muestra un mensaje de error y sale del programa
6 Si (numero>0) Entonces
7 potencia<-numero^2
8 raiz_cuadrada<-RAIZ(numero)
Escribir "Su potencia es " potencia
9
Escribir "Su raiz es " raiz_cuadrada
10 Sino
11 Escribir "Error, introduce un numero mayor que 0"
12 FinSi
13 FinProceso
14
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).
Mostrar »
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.
Esconder «
Papel:
1
2 Var mes: cadena
3 importe, total:numerico
Inicio
4
Escribir "escribe el importe de la compra"
5 Leer importe
6 Escribir "Introduce el mes"
7 Leer mes
8 Si (mes="octubre") Entonces
total<-importe*0.85
9
Sino
10 total<-importe
11 FinSi
12 Escribir total
13 Fin
14
PSeInt:
1
2 Proceso ejercicio_8
3 Escribir "escribe el importe de la compra"
Leer importe
4 Escribir "Introduce el mes"
5 Leer mes
6 //Si el mes es octubre, se aplicara el descuento
7 Si (mes="octubre") Entonces
8 total<-importe*0.85
Sino
9 total<-importe
10 FinSi
11 Escribir total
12 FinProceso
13
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)
Esconder «
Papel:
1
2 Var numero: numerica
3 Inicio
Escribir "Introduce un numero"
4
Leer numero
5 Si (numero=0) Entonces
6 Escribir "El " numero " no es par ni impar"
7 Sino
8 Si (numero MOD 2=0) Entonces
Escribir "El " numero " es par"
9
Sino
10 Escribir "El " numero " no es par"
11 FinSi
12 FinSi
13 Fin
14
PSeInt:
1 Proceso ejercicio_9
Escribir "Introduce un numero"
2
Leer numero
3 Si (numero=0) Entonces
4 Escribir "El " numero " no es par ni impar"
5 Sino
6 //comprobamos si el numero es par
Si (numero MOD 2=0) Entonces
7
Escribir "El " numero " es par"
8 Sino
9 Escribir "El " numero " no es par"
10
11 FinSi
12 FinSi
13 FinProceso
14
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).
Esconder «
Papel:
1
2 Var numero: numerica
3 Inicio
Escribir "Introduce un numero"
4
Leer numero
5 Mientras (numero<=0) hacer
6 Escribir "escribe un numero mayor que 0"
7 Leer numero
8 FinMientras
Si (numero MOD 2=0) Entonces
9
Escribir "El " numero " es par"
10 Sino
11 Escribir "El " numero " no es par"
12 FinSi
13 Fin
14
PSeInt:
1
2 Proceso ejercicio_10
3 Escribir "Introduce un numero"
Leer numero
4
//Hasta que no se introduzca un numero mayor que 0 no saldra del bucle
5 Mientras (numero<=0) hacer
6 Escribir "escribe un numero mayor que 0"
7 Leer numero
8 FinMientras
Si (numero MOD 2=0) Entonces
9
Escribir "El " numero " es par"
10 Sino
11 Escribir "El " numero " no es par"
12 FinSi
13 FinProceso
14
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.
Esconder «
Papel:
1
2 Var bachiller, prueba_acceso: cadena
3 Inicio
4 Escribir "¿Tienes el titulo de bachiller?"
Leer bachiller
5
si (bachiller="si") Entonces
6 Escribir "Puedes acceder al grado superior"
7 Sino
8 Escribir "¿Tienes la prueba de acceso superada?"
9 Leer prueba_acceso
si (prueba_acceso="si") Entonces
10
Escribir "Puedes acceder al grado superior"
11 Sino
12 Escribir "No puedes acceder a un grado superior"
13 FinSi
14 FinSi
Fin
15
16
PSeInt:
1
2 Proceso ejercicio_11
3 Escribir "¿Tienes el titulo de bachiller?"
4 Leer bachiller
si (bachiller="si") Entonces
5 Escribir "Puedes acceder al grado superior"
6 Sino
7 Escribir "¿Tienes la prueba de acceso superada?"
8 Leer prueba_acceso
9 si (prueba_acceso="si") Entonces
Escribir "Puedes acceder al grado superior"
10 Sino
11 Escribir "No puedes acceder a un grado superior"
12 FinSi
13 FinSi
14 FinProceso
15
12) Desarrollar un algoritmo que nos calcule el cuadrado de los 9 primeros números
naturales (recuerda la estructura desde-hasta)
Esconder «
Papel:
1 Var num, res: numerica
Inicio
2
3 Desde num<-1 Hasta 9 In 1
res<-num^2
4 Escribir num " " res
5 FinDesde
6 Fin
7
PSeInt:
1 Proceso ejercicio_12
2 Para num<-1 Hasta 9 Con Paso 1
3 res<-num^2
4 Escribir num " " res
FinPara
5
FinProceso
6
NOTA: este ejercicio también se puede hacer con la estructura Mientras, pero lo
hemos hecho con la estructura Desde-Hasta porque sabemos el rango.
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).
Esconder «
Papel:
1
Var N, contador, suma: numerica
2
Inicio
3 Leer N
4 suma<-0
5 Desde contador<-1 Hasta 5 In 1
6 suma<-N+suma
N<-N+1
7
FinDesde
8 Escribir suma
9 Fin
10
PSeInt:
1
Proceso ejercicio_13
2 Leer N
3 suma<-0
4 Para contador<-1 Hasta 5 Con Paso 1
5 suma<-N+suma
6 N<-N+1
FinPara
7 Escribir suma
8 FinProceso
9
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.
Esconder «
Papel:
1
2 Var N, contador, suma: numerica
3 Inicio
Leer N
4 contador<-0
5 Mientras (contador<5) Hacer
6 si (N MOD 2=0) Entonces
7 suma<-N+suma
8 contador<-contador+1
FinSi
9 N<-N+1
10 FinMientras
11 Escribir suma
12 Fin
13
PSeInt:
1
2 Proceso ejercicio_14
3 Leer N
contador<-0
4 limite<-N
5 Mientras (contador<limite) Hacer
6 si (N MOD 2=0) Entonces
7 suma<-N+suma
8 contador<-contador+1
FinSi
9 N<-N+1
10 FinMientras
11 Escribir suma
12 FinProceso
13
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.
Esconder «
Papel:
1 Var num, contador, suma: numerica
Inicio
2
Leer num
3 suma<-0
4 contador<-1
5 Mientras (num<>-1) Hacer
6 suma<-suma+num
contador<-contador+1
7
Leer num
8 FinMientras
9 Escribir suma/(contador-1)
10
11 Fin
12
PSeInt:
1
2 Proceso ejercicio_15
Leer num
3 suma<-0
4 contador<-1
5 Mientras (num<>-1) Hacer
6 suma<-suma+num
7 contador<-contador+1
Leer num
8 FinMientras
9 Escribir suma/(contador-1)
10 FinProceso
11
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.
Esconder «
Papel:
1
2 Var clave: cadena
3 acierto: booleano
4 contador: numerica
5 Inicio
contador<-0
6
acierto<-Falso
7 Mientras (contador<3 AND acierto=falso) Hacer
8 Leer clave
9 si (clave="eureka") Entonces
10 Escribir "la clave es correcta"
acierto<-Verdadero
11
FinSi
12 contador<-contador+1
13 FinMientras
14 si (contador=3 AND acierto=falso) Entonces
15 Escribir "Ya no tienes mas intentos"
FinSi
16
Fin
17
18
PSeInt:
1 Proceso ejercicio_16
contador<-0
2
//interruptor
3
4
5 acierto<-Falso
6 //usamos un interruptor, cuando acertemos,
7 //cambiara y la condicion sera falsa
Mientras (contador<3 Y acierto=falso) Hacer
8 //ponemos aqui leer porque con las variables
9 //iniciales entra en el bucle
10 Escribir "introduce la clave"
11 Leer clave
12 si (clave="eureka") Entonces
Escribir "la clave es correcta"
13 //el interruptor cambia cuando acertamos
14 acierto<-Verdadero
15 FinSi
16 contador<-contador+1
17 FinMientras
//este mensaje solo aparecera si hemos agotado
18 //todos los intentos y no hemos acertado
19 si (contador=3 Y acierto=falso) Entonces
20 Escribir "Ya no tienes mas intentos"
21 FinSi
22 FinProceso
23
24
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.
Esconder «
Papel:
1 Var maximo, minimo, num, suma, media, contador: numerica
Inicio
2
Leer num
3 minimo<-num
4 maximo<-num
5 suma<-0
6 Mientras (num<>0) Hacer
si (num>maximo) Entonces
7
maximo<-num
8 FinSi
9 si (num<minimo) Entonces
10 minimo<-num
11 FinSi
suma<-suma+num
12
contador<-contador+1
13 leer num
14 FinMientras
15
16
17 media<-suma/(contador)
Escribir "El maximo es " maximo
18 Escribir "El minimo es " minimo
19 Escribir "La media es " media
20 Fin
21
22
PSeInt:
1
2
3 Proceso ejercicio_17
4 Leer num
//maximo y el minimo se inician con el numero que
5 //insertemos para que lo podamos modificar
6 //durante el programa
7 minimo<-num
8 maximo<-num
9 suma<-0
Mientras (num<>0) Hacer
10 si (num>maximo) Entonces
11 maximo<-num
12 FinSi
13 si (num<minimo) Entonces
14 minimo<-num
FinSi
15 suma<-suma+num
16 contador<-contador+1
17 leer num
18 FinMientras
19 media<-suma/(contador)
//escrbimos los resultados
20 Escribir "El maximo es " maximo
21 Escribir "El minimo es " minimo
22 Escribir "La media es " media
23 FinProceso
24
25
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.
Esconder «
Papel:
1 Var num: numerica
Inicio
2
Desde num<-1 Hasta 100 In 1
3 //asi indicamos si un numero es multiplo de 3 o de 2
4 si (num MOD 2=0 OR num MOD 3=0) Entonces
5 Escribir num
6
FinSi
7 FinDesde
8 Fin
9
PSeInt:
1
Proceso ejercicio_18
2 Para num<-1 Hasta 100 Con Paso 1
3 //asi indicamos si un numero es multiplo de 3 o de 2
4 si (num MOD 2=0 o num MOD 3=0) Entonces
5 Escribir num
FinSi
6
FinPara
7 FinProceso
8
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).
NOTA: en PSeInt, si queremos escribir sin que haya saltos de linea, al final de la
operacion escribir escribimos sin saltar.
Esconder «
Papel:
1 Var dia, mes, año: numerica
Inicio
2
Escribir "Introduce el dia"
3 Leer dia
4 Escribir "Introduce el mes"
5 Leer mes Escribir "Introduce el año"
6 Leer año
//comprobamos que la fecha es correcto
7
si ((dia<=31 y dia>=0) AND (mes<=12 y mes>=0) AND año>0) Entonces
8 Escribir dia sin saltar
9 //usamos el segun sea para escribir el mes
10 Segun mes Hacer
11 1:
escribir " de enero de" sin saltar
12
2:
13 escribir " de febrero de " sin saltar
14 3:
15 escribir " de marzo de " sin saltar
16 4:
escribir " de abril de " sin saltar
17
5:
18 escribir " de mayo de " sin saltar
19 6:
20 escribir " de junio de " sin saltar
7:
21
22
23
24
25 escribir " de julio de " sin saltar
8:
26 escribir " de agosto de " sin saltar
27 9:
28 escribir " de septiembre de " sin saltar
29 10:
30 escribir " de octubre de " sin saltar
11:
31 escribir " de noviembre de " sin saltar
32 12:
33 escribir " de diciembre de " sin saltar
34 FinSegun
35 Escribir año
Sino
36 Escribir "error"
37 FinSi
38 Fin
39
40
41
42
PSeInt:
1 Proceso ejercicio_19
Escribir "Introduce el dia"
2
Leer dia
3 Escribir "Introduce el mes"
4 Leer mes
5 Escribir "Introduce el año"
6 Leer año
//comprobamos que la fecha es correcto
7
si ((dia<=31 y dia>=0) y (mes<=12 y mes>=0) y año>0) Entonces
8 Escribir dia sin saltar
9 //usamos el segun sea para escribir el mes
10 Segun mes Hacer
11 1:
escribir " de enero de" sin saltar
12
2:
13 escribir " de febrero de " sin saltar
14 3:
15 escribir " de marzo de " sin saltar
16 4:
escribir " de abril de " sin saltar
17
5:
18 escribir " de mayo de " sin saltar
19 6:
20 escribir " de junio de " sin saltar
21 7:
22
23
24
25 escribir " de julio de " sin saltar
26 8:
27 escribir " de agosto de " sin saltar
28 9:
escribir " de septiembre de " sin saltar
29 10:
30 escribir " de octubre de " sin saltar
31 11:
32 escribir " de noviembre de " sin saltar
33 12:
escribir " de diciembre de " sin saltar
34 FinSegun
35 Escribir año
36 Sino
37 Escribir "error"
38 FinSi
FinProceso
39
40
41
42
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.
Esconder «
Papel:
1 Var alumno: cadena
nota_teoria, nota_problemas, nota_teoria, nota_final: numerica
2
Inicio
3 Escribir "Introduce el nombre del alumno"
4 Leer alumno
5 Mientras alumno<>"" Hacer
6 Escribir "Introduce la nota practica"
leer nota_practica
7
Escribir "Introduce la nota de problemas"
8 leer nota_problemas
9 Escribir "Introduce la nota de teoria"
10 Leer nota_teoria
11 //NOTA: este si esta agrupado por falta de espacio
si (nota_practica<=10 AND nota_practica>=0)
12
AND (nota_problemas<=10 AND nota_problemas>=0)
13 AND (nota_teoria<=10 AND nota_teoria>=0) Entonces
14
15
16
Escribir "El alumno " alumno
17
Escribir "La nota practica es " nota_practica
18 Escribir "La nota de problemas es " nota_problemas
19 Escribir "La nota de teoria es " nota_teoria
20 nota_practica<-nota_practica*0.1
21 nota_problemas<-nota_problemas*0.5
nota_teoria<-nota_teoria*0.4
22
nota_final<-nota_practica+nota_problemas+nota_teoria
23 Escribir "La nota final es " nota_final
24 Sino
25 Escribir "Has escrito una nota incorrecta, vuelve a intentarlo"
26 FinSi
27
Escribir "Introduce el nombre de otro alumno"
28
Leer alumno
29 FinMientras
30 Fin
31
32
33
PSeInt:
1 Proceso ejercicio_20
Escribir "Introduce el nombre del alumno"
2
Leer alumno
3 Mientras alumno<>"" Hacer
4 //si introducimos un nombre de alumno
5 //correcto, entrara en el bucle
6 Escribir "Introduce la nota practica"
leer nota_practica
7
Escribir "Introduce la nota de problemas"
8 leer nota_problemas
9 Escribir "Introduce la nota de teoria"
10 Leer nota_teoria
11 //comprobamos si las notas tienen un rango correcto
//NOTA: este si esta agrupado por falta de espacio
12
si (nota_practica<=10 y nota_practica>=0)
13 y (nota_problemas<=10 y nota_problemas>=0)
14 y (nota_teoria<=10 y nota_teoria>=0) Entonces
15 Escribir "El alumno " alumno
16 Escribir "La nota practica es " nota_practica
Escribir "La nota de problemas es " nota_problemas
17
Escribir "La nota de teoria es " nota_teoria
18 nota_practica<-nota_practica*0.1
19 nota_problemas<-nota_problemas*0.5
20 nota_teoria<-nota_teoria*0.4
21 nota_final<-nota_practica+nota_problemas+nota_teoria
Escribir "La nota final es " nota_final
22
Sino
23 Escribir "Has escrito una nota incorrecta, vuelve a intentarlo"
24
25
26
27 FinSi
Escribir "Introduce el nombre de otro alumno"
28 Leer alumno
29 FinMientras
30 FinProceso
31
32
33
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.
****
* *
* *
****
Esconder «
NOTA: este tipo de ejercicios cambian mucho en papel y en PSeInt, en papel es
mas sencillo que en PSeInt.
Papel:
1 Var lado, asterisco, espacio: numerica
Inicio
2
Leer lado
3 Desde asterisco<-1 Hasta lado In 1
4 Escribir "*"
5 FinDesde
6 escribir " "
desde asterisco<-1 Hasta lado-2 In 1
7
Escribir "*"
8 Desde espacio<-1 Hasta lado-2 In 1
9 Escribir " "
10 FinDesde
11 Escribir "*"
escribir " "
12
FinDesde
13 Desde asterisco<-1 Hasta lado In 1
14 Escribir "*"
15 FinDesde
Fin
16
17
18
19
PSeInt:
1
2 Proceso ejercicio_21
3 Leer lado
4 Para asterisco<-1 Hasta lado Con Paso 1
5 Escribir "*" Sin Saltar
FinPara
6
escribir " "
7 Para asterisco<-1 Hasta lado-2 Con Paso 1
8 Escribir "*" Sin Saltar
9 Para espacio<-1 Hasta lado-2 Con Paso 1
10 Escribir " " sin saltar
FinPara
11
Escribir "*" Sin Saltar
12 escribir " "
13 FinPara
14 Para asterisco<-1 Hasta lado Con Paso 1
15 Escribir "*" Sin Saltar
FinPara
16
FinProceso
17
18
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.
*****
****
***
**
Esconder «
Papel:
1 Var altura, asterisco, espacio, espacio_linea, asterisco_linea: numerica
Inicio
2
Leer altura
3 asterisco<-altura
4 espacio<-0
5
6 Desde linea<-1 hasta altura In 1
7 Desde espacio_linea<-0 hasta espacio In 1
8 Escribir " "
9 FinDesde
Desde asterisco_linea<-1 hasta asterisco In 1
10
Escribir "*"
11 FinDesde
12 asterisco<-asterisco-1
13 espacio<-espacio+1
14 Escribir " "
FinDesde
15
Fin
16
17
PSeInt:
1
2
Proceso ejercicio_22
3 Leer altura
4 //iniciamos las variables segun lo necesitamos
5 asterisco<-altura
6 espacio<-0
Para linea<-1 hasta altura con paso 1
7
//escribimos los espacios iniciales
8 Para espacio_linea<-0 hasta espacio con paso 1
9 Escribir " " sin saltar
10 FinPara
11 //escribimos los asteriscos de la escalera
Para asterisco_linea<-1 hasta asterisco con paso 1
12
Escribir "*" sin saltar
13 FinPara
14 //aumentamos los espacios y disminuimos los asteriscos
15 asterisco<-asterisco-1
16 espacio<-espacio+1
Escribir " "
17
FinPara
18 FinProceso
19
20
23) Algoritmo que dado un año, nos diga si es bisiesto o no. Un año es bisiesto bajo
las siguientes condiciones:
PRODUCTO
Bocadillo de jamón
Refresco
Cerveza
PRODUCTO
Esconder «
Papel:
1
2 Inicio
3 JAMON=1.5
4 REFRESCO=1.05
CERVEZA=0.75
5
total=0
6 Escribir "Introduce la cantidad de bocadillos de jamon"
7 Leer cant_jamon
8 Escribir "Introduce la cantidad de refresco"
9 Leer cant_refresco
Escribir "Introduce la cantidad de cerveza"
10
Leer cant_cerveza
11 //NOTA: las 2 siguientes lineas van en una linea
12 total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO)
13 +(cant_cerveza*CERVEZA))
14 Escribir total
Fin
15
16
PSeInt:
1
2 Proceso ejercicio_24
3 JAMON=1.5
4 REFRESCO=1.05
CERVEZA=0.75
5
total=0
6 Escribir "Introduce la cantidad de bocadillos de jamon"
7 Leer cant_jamon
8 Escribir "Introduce la cantidad de refresco"
9 Leer cant_refresco
Escribir "Introduce la cantidad de cerveza"
10
Leer cant_cerveza
11 //NOTA: los dos siguientes van en una linea
12 total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO)
13 +(cant_cerveza*CERVEZA))
14 Escribir total
FinProceso
15
16
25) Algoritmo que nos calcule las raíces de una ecuación de segundo grado.
Controlar el caso de que las soluciones sean imaginarias.
Esconder «
Papel:
1
2 Var a,b, c, raizcua, x1, x2: numerica
3 Inicio
4 Escribir "escibe el valor de a"
5 Leer a
6 Escribir "escibe el valor de b"
Leer b
7 Escribir "escibe el valor de c"
8 Leer c
9 neg<--b
10 raizcua<-(b^2-4*a*c)^0.5
11 Si raizcua<=0 Entonces
Escribir "La ecuacion no se puede resolver"
12 Sino
13 x1<-(neg+raizcua)/(2*a)
14 x2<-(neg-raizcua)/(2*a)
15 Escribir x1
16 Escribir x2
FinSi
17 Fin
18
19
PSeInt:
1
2 Proceso ejercicio_25
3 Escribir "escibe el valor de a"
4 Leer a
5 Escribir "escibe el valor de b"
Leer b
6
Escribir "escibe el valor de c"
7 Leer c
8 neg<--b
9 raizcua<-(b^2-4*a*c)^0.5
10 Si raizcua<=0 Entonces
Escribir "La ecuacion no se puede resolver"
11
Sino
12 totalx1<-(NEG+Raizcua)/(2*a)
13 totalx2<-(NEG-Raizcua)/(2*a)
14 Escribir Totalx1
15 Escribir Totalx2
FinSi
16
FinProceso
17
18