You are on page 1of 28

AdivinaNumero.

psc
// Juego simple que pide al usuario que adivine un numero en 10 intentos
Proceso Adivina_Numero
intentos<-9;
num_secreto <- azar(100)+1;
Escribir "Adivine el numero (de 1 a 100):";
Leer num_ingresado;
Mientras num_secreto<>num_ingresado Y intentos>0 Hacer
Si num_secreto>num_ingresado Entonces
Escribir "Muy bajo";
Sino
Escribir "Muy alto";
FinSi
Escribir "Le quedan ",intentos," intentos:";
Leer num_ingresado;
intentos <- intentos-1;
FinMientras
Si intentos=0 Entonces
Escribir "El numero era: ",num_secreto;
Sino
Escribir "Exacto! Usted adivino en ",11-intentos,"
intentos.";
FinSi
FinProceso

Matematicas.psc
// Este ejemplo muestra el uso de expresiones, operadores y funciones
matematicas
Proceso Matematicas
Salir<-0;
Escribir 'Ingresar Numero:';
Leer N;
Repetir
Escribir ' ';
Escribir 'Presione Enter para continuar';
Leer x;

Escribir '1 - Seno, Coseno, ArcoTangente';


Escribir '2 - Lograritmo Natural, Funcion Exponencial';
Escribir '3 - Truncar, Redondear';
Escribir '4 - Raiz Cuadrada';
Escribir '5 - Valor Absoluto';
Escribir '6 - Separar parte entera y decimal';
Escribir '7 - Hallar Factorial';
Escribir '8 - Averiguar si es primo';
Escribir '9 - Ingresar Otro Numero';
Escribir ' ';
Escribir '0 - para Salir';
Escribir ' ';
Leer Opcion;
Segun Opcion Hacer
1:
Escribir 'Seno:',Sen(N);
Escribir 'Coseno:',Cos(N);
Escribir 'ArcTangente:',Atan(N);
2:
Si N<=0
Entonces Escribir 'El numero debe ser mayor a cero!';
Sino
Escribir 'Log Nat.:',ln(N);
Escribir 'Func Expon.:',exp(N);
FinSi
3:
Escribir 'Turncar:',trunc(N);
Escribir 'Redondear:',redon(N);
4: Escribir 'Raiz Cuad.:',rc(N);
5: Escribir 'Valor Abs.:',abs(N);
6:
Escribir 'Parte Entera:',Trunc(n);
Escribir 'Parte Decimal:',n-Trunc(n);
7:
Si N<>Trunc(N)
Entonces
Escribir 'El numero debe ser entero!';
Sino
Si abs(N)>50
Entonces Escribir 'Resultado muy grande!';
Sino
r<-1; f<-1;
Mientras f<=abs(N) Hacer
Si N<0
Entonces r<-(-f)*r;
Sino r<-f*r;
FinSi
f<-f+1;
FinMientras

Escribir 'Factorial:',r;
FinSi
FinSi
8:
Si N<>Trunc(N)
Entonces
Escribir 'El numero debe ser entero!';
Sino
Primo<-'Si';
Si N/2=trunc(N/2)
Entonces
Primo<-'No';
FinSi
Si N<0
entonces Nu<-N*-1;
sino Nu<-N;
FinSi
Nu<-RC(Nu);
f<-3;
Mientras f<=Nu Y Primo='Si' Hacer
Si N/F=trunc(N/F)
Entonces Primo<-'No';
FinSi
f<-f+2;
FinMientras
Escribir 'Numero Primo:',Primo;
Si f=3
Entonces F<-4;
FinSi
Si Primo='No'
Entonces
Escribir N,'=',f-2,'x',N/(f-2);
FinSi
FinSi
9:
Escribir 'Ingrese Numero:';
Leer N;
0: Salir<-1;
De Otro Modo:
Escribir 'Opcion No Valida!';
FinSegun
Hasta que Salir=1
FinProceso

Mayores.psc
// Busca los dos mayores de una lista de N datos

Proceso Mayores
Dimension datos[200];
Escribir "Ingrese la cantidad de datos:";
Leer n;
Para i<-1 Hasta n Hacer
Escribir "Ingrese el dato ",i,":";
Leer datos[i];
FinPara

Si datos[1]>datos[2] Entonces
may1<-datos[1];
may2<-datos[2];
Sino
may1<-datos[2];
may2<-datos[1];
FinSi
Para i<-3 Hasta n Hacer
Si datos[i]>may1 Entonces
may2<-may1;
may1<-datos[i];
Sino
Si datos[i]>may2 Entonces
may2<-datos[i];
FinSi
FinSi
FinPara

Escribir "El mayor es: ",may1;


Escribir "El segundo mayor es: ",may2;
FinProceso

// Calcula el promedio de una lista de N datos


Proceso Promedio
Escribir "Ingrese la cantidad de datos:";
Leer n;
acum<-0;
Para i<-1 Hasta n Hacer
Escribir "Ingrese el dato ",i,":";

Leer dato;
acum<-acum+dato;
FinPara
prom<-acum/n;
Escribir "El promedio es: ",prom;
Triangulo.psc
//
Lee los tres lados de un triangulo rectangulo, determina
// si corresponden (por Pitargoras) y en caso afirmativo
// calcula el area
Proceso TrianguloRectangulo
// cargar datos
Escribir "Ingrese el lado 1:";
Leer l1;
Escribir "Ingrese el lado 2:";
Leer l2;
Escribir "Ingrese el lado 3:";
Leer l3;
// encontrar la hipotenusa (mayor lado)
Si l1>l2 Entonces
cat1<-l2;
Si l1>l3 Entonces
hip<-l1;
cat2<-l3;
Sino
hip<-l3;
cat2<-l1;
FinSi
Sino
cat1<-l1;
Si l2>l3 Entonces
hip<-l2;
cat2<-l3;
Sino
hip<-l3;
cat2<-l2;
FinSi
FinSi
// ver si cumple con Pitagoras
Si hip^2 = cat1^2 + cat2^2 Entonces

// calcualar area
area<-(cat1*cat2)/2;
Escribir "El area es: ",area;
Sino
Escribir "No es un triangulo rectangulo.";
FinSi
FinProceso

1) Dadas dos variables numricas A y B, que el usuario debe teclear, se pide realizar un
algoritmo que intercambie los valores de ambas variables y muestre cuanto valen al final
las dos variables (recuerda la asignacin).
SeleccionarEsconder

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11

Var A, B, C:
Inicio
Escribir
Leer A
Escribir
Leer B
C<-A
A<-B
B<-C
Escribir
Fin

numerica
"Introduce el valor de A"
"Introduce el valor de B"

"A vale " A " y B vale " B

PSeInt:

1
2
3
4
5
6
7
8
9
10

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 nmeros, calculando y escribiendo el valor de su suma, resta,
producto y divisin.

Spoiler
Papel:

1
2
3

Var numero1, numero2, resultado: numerica


Inicio
Escribir "Introduce el primer numero"

SeleccionarEsconder

4
5
6
7
8
9
10
11
12
13
14
15

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Proceso ejercicio_2
Escribir "Introduce el primer numero"
Leer numero1
Escribir "Introduce el segundo numero"
Leer numero2
//inicializamos la variable resultado a 0 (recomendable)
resultado<-0
//sumamos los numeros y escribimos su resultado
resultado<-numero1+numero2
Escribir resultado
//restamos los numeros y escribimos su resultado
resultado<-numero1-numero2
Escribir resultado
//multiplicamos los numeros y escribimos su resultado
resultado<-numero1*numero2
Escribir resultado
//dividimos los numeros y escribimos su resultado
resultado<-numero1/numero2
Escribir resultado
FinProceso

3) Algoritmo que lea dos nmeros y nos diga cual de ellos es mayor o bien si son iguales
(recuerda usar la estructura condicional SI)

Spoiler
Papel:

1
2
3
4
5
6
7

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

SeleccionarEsconder

8
9
10
11
12
13
14
15
16

escribir "los numeros " numero1 " " numero2 " son iguales"
Sino
Escribir numero1 " es el mayor de los dos"
FinSi
Sino
Fin

Escribir numero2 " es el mayor de los dos"


FinSi

PSeInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Proceso ejercicio_3
Escribir "Introduce el primer numero"
Leer numero1
Escribir "Introduce el segundo numero"
Leer numero2
//comparamos los dos numeros,
//si el primero es mayor o igual que el segundo entra
Si (numero1>=numero2) Entonces
//Si el numero1 y numero2 son iguales entra y escribe que son iguales
//Sino lo son escribe que el numero1 es el mayor
Si (numero1=numero2) Entonces
escribir "los numeros " numero1 " " numero2 " son iguales"
Sino
Escribir numero1 " es el mayor de los dos"
FinSi
//Si el primer Si es falso, escribe que el numero2 es mayor
Sino
Escribir numero2 " es el mayor de los dos"
FinSi
FinProceso

4) Algoritmo que lea tres nmeros distintos y nos diga cual de ellos es el mayor (recuerda
usar la estructura condicional Si y los operadores lgicos).

Spoiler

SeleccionarEsconder

NOTA: De esta forma que esta hecha, aunque dos de los nmeros sean iguales, siempre dir el mayor.
Papel:
Var numero1, numero2, numero3: numerica
1
Inicio
2
Escribir "Introduce el primer numero"
3
Leer numero1
4
Escribir "Introduce el segundo numero"
Leer numero2
5
Escribir "Introduce el tercer numero"
6
Leer numero3
7
Si (numero1>numero2 AND numero1>numero3) Entonces
8
Escribir "el numero " numero1 " es el mayor"
9
Sino

10
11
12
13
14
15
16
17
18

Fin

Si (numero2>numero3) Entonces
Escribir "El numero " numero2 " es el mayor"
Sino
Escribir "El numero " numero3 " es el mayor"
FinSi
FinSi

PSeInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Proceso ejercicio_4
Escribir "Introduce el primer numero"
Leer numero1
Escribir "Introduce el segundo numero"
Leer numero2
Escribir "Introduce el tercer numero"
Leer numero3
//comparamos el numero1 con el numero2 y numero3
//Si las dos condiciones son verdaderas el numero1 es el mayor
Si (numero1>numero2 Y numero1>numero3) Entonces
Escribir "el numero " numero1 " es el mayor"
//si el numero1 no es el mayor,
//comparamos el numero2 con el numero3
Sino
Si (numero2>numero3) Entonces
Escribir "El numero " numero2 " es el mayor"
Sino
Escribir "El numero " numero3 " es el mayor"
FinSi
FinSi
FinProceso

5) Disear un algoritmo que pida por teclado tres nmeros; si el primero es negativo, debe
imprimir el producto de los tres y si no lo es, imprimir la suma.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9

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

SeleccionarEsconder

10
11
12
13
14
15

Fin

resultado<-numero1+numero2+numero3
FinSi
Escribir resultado

PSeInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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 el numero1 es menor que 0,
//multiplicara los numero y sino los sumara
Si (numero1<0) Entonces
resultado<-numero1*numero2*numero3
Sino
resultado<-numero1+numero2+numero3
FinSi
Escribir resultado
FinProceso

6) Realizar un algoritmo que lea un nmero por teclado. En caso de que ese nmero 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 funcin interna RAIZ(X) o con una
potencia de 0,5.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13

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

SeleccionarEsconder

PSeInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

Proceso ejercicio_6
Escribir "Introduce un numero"
Leer numero
//si el numero es mayor que 0, calcula la potencia y la raiz
//sino muestra un mensaje de error y sale del programa
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 nios y qu porcentaje de nias hay en el curso


actual. Disear un algoritmo para este propsito (recuerda que para calcular el porcentaje
puedes hacer una regla de 3).

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9
10
11

Var numero_nios, numero_nias, resultado: numerica


Inicio
Escribir "Introduce el numero de nios"
Leer numero_nios
Escribir "Introduce el numero de nias"
Leer numero_nias
porcentaje_nios<-numero_nios*100/(numero_nios+numero_nias)
porcentaje_nias<-100-porcentaje_nios
Escribir "Hay un " porcentaje_nios " % de nios
Escribir "Hay un " porcentaje_nias " % de nias
Fin

PSeInt:

1
2
3
4
5
6
7
8
9
10
11

Proceso Ejercicio_7
Escribir "Introduce el numero de nios"
Leer numero_nios
Escribir "Introduce el numero de nias"
Leer numero_nias
//calculamos el porcentaje
porcentaje_nios<-numero_nios*100/(numero_nios+numero_nias)
porcentaje_nias<-100-porcentaje_nios
Escribir "Hay un " porcentaje_nios " % de nios
Escribir "Hay un " porcentaje_nias " % de nias"
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 cul es la cantidad que se debe cobrar al
cliente.

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

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:

1
2
3
4
5
6
7
8
9
10
11
12
13

Proceso ejercicio_8
Escribir "escribe el importe de la compra"
Leer importe
Escribir "Introduce el mes"
Leer mes
//Si el mes es octubre, se aplicara el descuento
Si (mes="octubre") Entonces
total<-importe*0.85
Sino
total<-importe
FinSi
Escribir total
FinProceso

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

Spoiler
Papel:

1
2
3
4

Var numero: numerica


Inicio
Escribir "Introduce un numero"
Leer numero
Si (numero=0) Entonces

SeleccionarEsconder

5
6
7
8
9
10
11
12
13
14

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

Proceso ejercicio_9
Escribir "Introduce un numero"
Leer numero
Si (numero=0) Entonces
Escribir "El " numero " no es par ni impar"
Sino
//comprobamos si el numero es par
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
nmero por teclado (as hasta que se teclee un nmero mayor que cero) (recuerda la
estructura mientras).

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

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

SeleccionarEsconder

PSeInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

Proceso ejercicio_10
Escribir "Introduce un numero"
Leer numero
//Hasta que no se introduzca un numero mayor que 0 no saldra del bucle
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.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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
1
Escribir "Tienes el titulo de bachiller?"
2
Leer bachiller
3
si (bachiller="si") Entonces
4
Escribir "Puedes acceder al grado superior"
Sino
5
Escribir "Tienes la prueba de acceso superada?"
6

SeleccionarEsconder

7
8
9
10
11
12
13
14
15

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 nmeros
naturales (recuerda la estructura desde-hasta)

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7

Var num, res: numerica


Inicio
Desde num<-1 Hasta 9 In 1
res<-num^2
Escribir num "
" res
FinDesde
Fin

PSeInt:

1
2
3
4
5
6

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

NOTA: este ejercicio tambin 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 nmeros
naturales. N se leer por teclado (no tenemos porque llamar a la variable N, podemos
llamarla como queramos).

Spoiler
Papel:

1
2
3
4
5
6
7

Var N, contador, suma: numerica


Inicio
Leer N
suma<-0
Desde contador<-1 Hasta 5 In 1
suma<-N+suma
N<-N+1
FinDesde

SeleccionarEsconder

8
9
10

Escribir suma
Fin

PSeInt:

1
2
3
4
5
6
7
8
9

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 nmeros
pares. Es decir, si insertamos un 5, nos haga la suma de 6+8+10+12+14.

Spoiler

SeleccionarMostrar

15) Dada una secuencia de nmeros ledos 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 aritmtica.
Suponemos que el usuario no insertara numero negativos.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12

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
1
Leer num
2
suma<-0
3
contador<-1
4
Mientras (num<>-1) Hacer
suma<-suma+num
5
contador<-contador+1
6

SeleccionarEsconder

7
8
9
10
11

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 indicndonos que hemos agotado esos 3 intentos. (Recomiendo utilizar un
interruptor). Si acertamos la clave, saldremos directamente del programa.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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
1
contador<-0
2
//interruptor
3
acierto<-Falso
4
//usamos un interruptor, cuando acertemos,
//cambiara y la condicion sera falsa
5
Mientras (contador<3 Y acierto=falso) Hacer
6
//ponemos aqui leer porque con las variables
7
//iniciales entra en el bucle
8
Escribir "introduce la clave"
9
Leer clave
si (clave="eureka") Entonces
10
Escribir "la clave es correcta"
11
//el interruptor cambia cuando acertamos
12
acierto<-Verdadero
13
FinSi
contador<-contador+1
14

SeleccionarEsconder

15
16
17
18
19
20
21
22
23
24

FinMientras
//este mensaje solo aparecera si hemos agotado
//todos los intentos y no hemos acertado
si (contador=3 Y acierto=falso) Entonces
Escribir "Ya no tienes mas intentos"
FinSi
FinProceso

17) Algoritmo que lea nmeros enteros hasta teclear 0, y nos muestre el mximo, el mnimo
y la media de todos ellos. Piensa como debemos inicializar las variables.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

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
1
Leer num
2
//maximo y el minimo se inician con el numero que
3
//insertemos para que lo podamos modificar
4
//durante el programa
minimo<-num
5
maximo<-num
6
suma<-0

SeleccionarEsconder

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

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)
//escrbimos los resultados
Escribir "El maximo es " maximo
Escribir "El minimo es " minimo
Escribir "La media es " media
FinProceso

18) Algoritmo que visualice la cuenta de los nmeros que son mltiplos de 2 o de 3 que hay
entre 1 y 100.

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9

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:

1
2
3
4
5
6
7
8

Proceso ejercicio_18
Para num<-1 Hasta 100 Con Paso 1
//asi indicamos si un numero es multiplo de 3 o de 2
si (num MOD 2=0 o num MOD 3=0) Entonces
Escribir num
FinSi
FinPara
FinProceso

19) Leer tres nmeros que denoten una fecha (da, mes, ao). Comprobar que es una fecha
vlida. Si no es vlida escribir un mensaje de error. Si es vlida escribir la fecha cambiando

el nmero del mes por su nombre. Ej. si se introduce 1 2 2006, se deber imprimir 1 de
febrero de 2006. El ao 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.

Spoiler

SeleccionarEsconder

Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

Var dia, mes, ao: numerica


Inicio
Escribir "Introduce el dia"
Leer dia
Escribir "Introduce el mes"
Leer mes Escribir "Introduce el ao"
Leer ao
//comprobamos que la fecha es correcto
si ((dia<=31 y dia>=0) AND (mes<=12 y mes>=0) AND ao>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 ao
Sino
Escribir "error"
FinSi
Fin

41
42
PSeInt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

Proceso ejercicio_19
Escribir "Introduce el dia"
Leer dia
Escribir "Introduce el mes"
Leer mes
Escribir "Introduce el ao"
Leer ao
//comprobamos que la fecha es correcto
si ((dia<=31 y dia>=0) y (mes<=12 y mes>=0) y ao>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 ao
Sino
Escribir "error"
FinSi
FinProceso

20) Calcular las calificaciones de un grupo de alumnos. La nota final de cada alumno se
calcula segn el siguiente criterio: la parte prctica vale el 10%; la parte de problemas vale
el 50% y la parte terica 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 vaca. Las notas deben estar entre 0 y 10, si no lo estn, no imprimir las
notas, mostrara un mensaje de error y volver a pedir otro alumno.
SeleccionarEsconder

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

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

Fin

Escribir "Introduce el nombre de otro alumno"


Leer alumno
FinMientras

PSeInt:
Proceso ejercicio_20
1
Escribir "Introduce el nombre del alumno"
2
Leer alumno
3
Mientras alumno<>"" Hacer
4
//si introducimos un nombre de alumno

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

//correcto, entrara en el bucle


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
//comprobamos si las notas tienen un rango correcto
//NOTA: este si esta agrupado por falta de espacio
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 nmero entero (lado) y a partir de l cree un cuadrado de
asteriscos con ese tamao. Los asteriscos slo se vern en el borde del cuadrado, no en el
interior.
Ejemplo, para lado = 4 escribira:
****
* *
* *
****

Spoiler

SeleccionarEsconder

NOTA: este tipo de ejercicios cambian mucho en papel y en PSeInt, en papel es mas sencillo que en PSeInt.
Papel:
Var lado, asterisco, espacio: numerica
1
Inicio
2
Leer lado
3
Desde asterisco<-1 Hasta lado In 1
4
Escribir "*"

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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 nmero 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.
*****
****
***
**
*

Spoiler

SeleccionarEsconder

Papel:

1
2

Var altura, asterisco, espacio, espacio_linea, asterisco_linea: numerica


Inicio

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Proceso ejercicio_22
Leer altura
//iniciamos las variables segun lo necesitamos
asterisco<-altura
espacio<-0
Para linea<-1 hasta altura con paso 1
//escribimos los espacios iniciales
Para espacio_linea<-0 hasta espacio con paso 1
Escribir " " sin saltar
FinPara
//escribimos los asteriscos de la escalera
Para asterisco_linea<-1 hasta asterisco con paso 1
Escribir "*" sin saltar
FinPara
//aumentamos los espacios y disminuimos los asteriscos
asterisco<-asterisco-1
espacio<-espacio+1
Escribir " "
FinPara
FinProceso

23) Algoritmo que dado un ao, nos diga si es bisiesto o no. Un ao es bisiesto bajo las
siguientes condiciones:

Un ao divisible por 4 es bisiesto y no debe ser divisible entre 100.

Si un ao es divisible entre 100 y adems es divisible entre 400, tambin resulta


bisiesto.

NOTA: este ejercicio tiene muchas formas de hacerlo si quieres comprobar que es correcto,
puedes probarlo aqu, tambin encontraras informacin sobre las condiciones de cuando un
ao es bisiesto.
SeleccionarEsconder

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

Var ao: numerica


Inicio
Escribir "Introduce un ao"
leer ao
si (ao MOD 4=0 y ao MOD 100<>0)Entonces
Escribir "El ao " ao " es bisiesto"
Sino
si (ao MOD 400=0 y ao MOD 100=0) Entonces
Escribir "El ao " ao " es bisiesto"
Sino
escribir "El ao " ao " no es bisiesto"
FinSi
FinSi
Fin

PSeInt:

1
2
3
4
5
6
7
8
9
10
11
12
13

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

24) El siguiente es el men de un restaurante de bocadillos. Disear un algoritmo capaz de


leer el nmero 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).
Producto

Precio

Bocadillo de jamn

1,5

Refresco

1,05

Producto

Precio

Cerveza

0,75

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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
//NOTA: los dos siguientes van en una linea
total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO)
+(cant_cerveza*CERVEZA))
Escribir total
FinProceso

SeleccionarEsconder

25) Algoritmo que nos calcule las races de una ecuacin de segundo grado. Controlar el
caso de que las soluciones sean imaginarias.

Spoiler
Papel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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

SeleccionarEsconder

You might also like