Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INDOAMERICA
ESTRUCTURA DE DATOS
EJERCICIOS PROPUESTOS
1)
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"
PSeInt:
1
2
3
4
5
6
7
8
9
10
2)
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
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
3)
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
Algoritmo que lea dos nmeros y nos diga cul 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
PSeInt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
4)
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
Algoritmo que lea tres nmeros distintos y nos diga cul de ellos es el mayor
(recuerda usar la estructura condicional Si y los operadores lgicos).
NOTA: De esta forma que est 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
Si (numero2>numero3) Entonces
10
Escribir "El numero " numero2 " es el mayor"
11
Sino
12
Escribir "El numero " numero3 " es el mayor"
13
FinSi
FinSi
14
15 Fin
16
17
Docente: Ing. Javier Prado Lopez
Pg. 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
5)
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PSeInt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
6)
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
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.
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
PSeInt:
Proceso ejercicio_6
1
Escribir "Introduce un numero"
2
Leer numero
3
//si el numero es mayor que 0, calcula la potencia y la raiz
4
//sino muestra un mensaje de error y sale del programa
Si (numero>0) Entonces
5
potencia<-numero^2
6
raiz_cuadrada<-RAIZ(numero)
7
Escribir "Su potencia es " potencia
8
9
10
11
7)
Sino
1
2
3
4
5
6
7
8
9
10
PSeInt:
1
2
3
4
5
6
7
8
9
10
8)
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
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.
Papel:
1
2
3
4
5
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
9)
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
1
2
3
4
5
6
7
8
9
10
11
12
13
PSeInt:
Proceso ejercicio_9
1
Escribir "Introduce un numero"
2
Leer numero
3
Si (numero=0) Entonces
4
Escribir "El " numero " no es par ni impar"
10)
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
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
PSeInt:
1
Proceso ejercicio_10
2
Escribir "Introduce un numero"
3
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
9
Si (numero MOD 2=0) Entonces
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 ttulo de bachiller, en caso de no tenerlo, se puede acceder si hemos
superado una prueba de acceso.
Papel:
1
2
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
12)
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
Papel:
1
2
3
4
5
6
7
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.
1
2
3
4
5
6
7
8
9
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.
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
PSeInt:
Proceso ejercicio_14
1
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
FinProceso
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.
Papel:
1
2
3
4
5
6
7
8
9
10
11
PSeInt:
1
2
3
4
5
6
7
8
9
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 indicndonos que hemos agotado esos 3 intentos.
Docente: Ing. Javier Prado Lopez
Pg. 11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PSeInt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 nmeros enteros hasta teclear 0, y nos muestre el mximo,
el mnimo 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
PSeInt:
Proceso ejercicio_17
1
Leer num
2
//maximo y el minimo se inician con el numero que
//insertemos para que lo podamos modificar
3
//durante el programa
4
minimo<-num
5
maximo<-num
6
suma<-0
7
Mientras (num<>0) Hacer
si (num>maximo) Entonces
8
maximo<-num
9
FinSi
10
si (num<minimo) Entonces
11
minimo<-num
12
FinSi
suma<-suma+num
13
contador<-contador+1
14
leer num
15
FinMientras
16
media<-suma/(contador)
//escribimos los resultados
17
Escribir "El maximo es " maximo
18
Escribir "El minimo es " minimo
19
Escribir "La media es " media
20 FinProceso
18)
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 segn sea).
NOTA: en PSeInt, si queremos escribir sin que haya saltos de linea, al final de la
operacin escribir escribimos sin saltar.
Papel:
1
2
3
4
5
6
7
8
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Fin
PSeInt:
Proceso ejercicio_19
1
Escribir "Introduce el dia"
2
Leer dia
3
Escribir "Introduce el mes"
4
Leer mes
Escribir "Introduce el ao"
5
Leer ao
6
//comprobamos que la fecha es correcto
7
si ((dia<=31 y dia>=0) y (mes<=12 y mes>=0) y ao>0) Entonces
8
Escribir dia sin saltar
9
//usamos el segun sea para escribir el mes
Segun mes Hacer
10
1:
11
escribir " de enero de" sin saltar
12
2:
13
escribir " de febrero de " sin saltar
3:
14
escribir " de marzo de " sin saltar
15
4:
16
escribir " de
5:
escribir " de
6:
escribir " de
7:
escribir " de
8:
escribir " de
9:
escribir " de
10:
escribir " de
11:
escribir " de
12:
escribir " de
FinSegun
Escribir ao
Sino
Escribir "error"
FinSi
FinProceso
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
Fin
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
//correcto, entrara en el bucle
5
Escribir "Introduce la nota practica"
6
leer nota_practica
7
Escribir "Introduce la nota de problemas"
8
leer nota_problemas
9
Escribir "Introduce la nota de teoria"
Leer nota_teoria
10
//comprobamos si las notas tienen un rango correcto
11
//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)
y (nota_teoria<=10 y nota_teoria>=0) Entonces
14
Escribir "El alumno " alumno
15
Escribir "La nota practica es " nota_practica
16
Escribir "La nota de problemas es " nota_problemas
17
Escribir "La nota de teoria es " nota_teoria
18
nota_practica<-nota_practica*0.1
nota_problemas<-nota_problemas*0.5
19
nota_teoria<-nota_teoria*0.4
20
nota_final<-nota_practica+nota_problemas+nota_teoria
21
Escribir "La nota final es " nota_final
22
Sino
23
Escribir "Has escrito una nota incorrecta, vuelve a
intentarlo"
24
FinSi
25
Escribir "Introduce el nombre de otro alumno"
26
Leer alumno
27
FinMientras
28 FinProceso
29
Docente: Ing. Javier Prado Lopez
Pg. 17
21)
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
PSeInt:
Proceso ejercicio_21
1
Leer lado
2
Para asterisco<-1 Hasta lado Con Paso 1
3
Escribir "*" Sin Saltar
4
FinPara
escribir " "
5
Para asterisco<-1 Hasta lado-2 Con Paso 1
6
Escribir "*" Sin Saltar
7
Para espacio<-1 Hasta lado-2 Con Paso 1
8
Escribir " " sin saltar
9
FinPara
Escribir "*" Sin Saltar
10
escribir " "
11
FinPara
22)
Algoritmo que lea un nmero entero (altura) y a partir de l cree una escalera
invertida de asteriscos con esa altura. Deber quedar asi, si ponemos una altura
de 5.
*****
****
***
**
*
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PSeInt:
Proceso ejercicio_22
1
Leer altura
2
//iniciamos las variables segun lo necesitamos
3
asterisco<-altura
4
espacio<-0
Para linea<-1 hasta altura con paso 1
5
//escribimos los espacios iniciales
6
Para espacio_linea<-0 hasta espacio con paso 1
7
Escribir " " sin saltar
8
FinPara
9
//escribimos los asteriscos de la escalera
Para asterisco_linea<-1 hasta asterisco con paso 1
10
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.
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
PSeInt:
Proceso ejercicio_23
1
Escribir "Introduce un ao"
2
leer ao
3
si (ao MOD 4=0 y ao MOD 100<>0)Entonces
4
Escribir "El ao " ao " es bisiesto"
Sino
5
si (ao MOD 400=0 y ao MOD 100=0) Entonces
6
Escribir "El ao " ao " es bisiesto"
Sino
escribir "El ao " ao " no es bisiesto"
FinSi
FinSi
FinProceso
PRECIO
1,5
1,05
0,75
Papel:
1
2
3
4
5
6
7
8
9
10
11
12
13
Inicio
JAMON=1.5
REFRESCO=1.05
CERVEZA=0.75
total=0
Escribir "Introduce la cantidad de bocadillos de jamon"
Leer cant_jamon
Escribir "Introduce la cantidad de refresco"
Leer cant_refresco
Escribir "Introduce la cantidad de cerveza"
Leer cant_cerveza
//NOTA: las 2 siguientes lineas van en una linea
total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO)
+(cant_cerveza*CERVEZA))
Escribir total
Fin
PSeInt:
Proceso ejercicio_24
1
JAMON=1.5
2
REFRESCO=1.05
3
CERVEZA=0.75
4
total=0
25) Algoritmo que nos calcule las races de una ecuacin 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
PSeInt:
Proceso ejercicio_25
Escribir "escribe el valor de a"
1
Leer a