jueves, 21 de mayo de 2015
jueves, 14 de mayo de 2015
ejercicios
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 cuanto valen al final las
dos variables (recuerda la asignación).
Papel:
1
2
3
4
5
6
7
8
9
10
11
|
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:
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 números, calculando y escribiendo el valor
de su suma, resta, producto y división.
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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:
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 números y nos diga cual de ellos es mayor o bien
si son iguales (recuerda usar la estructura condicional SI)
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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:
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 números distintos y nos diga cual de ellos es el
mayor (recuerda usar la estructura condicional Si y los
operadores lógicos).
NOTA: De esta forma
que esta hecha, aunque dos de los números sean iguales,
siempre dirá el mayor.
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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:
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) 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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:
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 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:
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
|
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 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:
1
2
3
4
5
6
7
8
9
10
11
|
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:
1
2
3
4
5
6
7
8
9
10
11
|
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
//calculamos
el porcentaje
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:
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 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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:
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 número por teclado (así hasta que se teclee un
número mayor que cero) (recuerda la estructura mientras).
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
|
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.
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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:
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 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).
Papel:
1
2
3
4
5
6
7
8
9
10
|
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:
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
números pares. Es decir, si insertamos un 5, nos haga la suma de
6+8+10+12+14.
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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:
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:
1
2
3
4
5
6
7
8
9
10
11
|
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:
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
Proceso ejercicio_16
contador<-0
//interruptor
acierto<-Falso
//usamos
un interruptor, cuando acertemos,
//cambiara
y la condicion sera falsa
Mientras
(contador<3 Y acierto=falso) Hacer
//ponemos
aqui leer porque con las variables
//iniciales
entra en el bucle
Escribir
"introduce la clave"
Leer
clave
si
(clave="eureka") Entonces
Escribir
"la clave es correcta"
//el
interruptor cambia cuando acertamos
acierto<-Verdadero
FinSi
contador<-contador+1
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 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:
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:
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
|
Proceso ejercicio_17
Leer num
//maximo y el
minimo se inician con el numero que
//insertemos para
que lo podamos modificar
//durante el
programa
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)
//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 números que son múltiplos de 2
o de 3 que hay entre 1 y 100.
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 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.
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
41
42
|
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:
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 año"
Leer año
//comprobamos
que la fecha es correcto
si
((dia<=31 y dia>=0) y (mes<=12 y mes>=0) y 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
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:
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
Escribir
"Introduce el nombre de otro alumno"
Leer
alumno
FinMientras
Fin
|
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
|
Proceso ejercicio_20
Escribir
"Introduce el nombre del alumno"
Leer alumno
Mientras
alumno<>"" Hacer
//si
introducimos un nombre de alumno
//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 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.
Ejemplo, para lado = 4 escribiría:
****
* *
* *
****
NOTA: este tipo de
ejercicios cambian mucho en papel y en PSeInt, en papel es mas sencillo que en
PSeInt.
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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:
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 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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:
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 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.
NOTA: este ejercicio tiene muchas formas de hacerlo si quieres comprobar
que es correcto, puedes probarlo aquí, también encontraras información sobre
las condiciones de cuando un año es bisiesto.
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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).
Producto
|
Precio
|
Bocadillo de jamón
|
1,5 €
|
Refresco
|
1,05 €
|
Cerveza
|
0,75 €
|
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
|
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:
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
|
Suscribirse a:
Entradas (Atom)