Sei sulla pagina 1di 33

PSEUDOCDIGO

Introduccin a pseudocdigo
Hola a todos, antes de iniciarse en el mundo de la programacin, es bueno aprender este lenguaje:
el pseudocdigo, nos vendr bien para empezar a entender la programacin estructurada de la cual se
basan la mayora de lenguajes de programacin.
El pseudocdigo es un lenguaje de especificacin de algoritmos, usa una notacin en lenguaje natural,
representa la estructura de la programacin estructurada y hace que el paso final a la codificacin de un
programa sea relativamente fcil.
Lo mas recomendable para iniciarse en programacin es hacer algoritmosde ejercicios simples, con
distintos tipos de variables, estructuras de control, etc.
Es muy aconsejable hacerlos en papel, para realizar en un futuro buenos diseos de algoritmos, tambin hay
una herramienta llamada Pseint que nos permitir escribir en pseudocdigo para ejecutarlo en el equipo.
Pincha aqu para descargarlo.
Pero que es un algoritmo? Un algoritmo es una conjunto de pasos que especifica la secuencia de
operaciones a realizar en un problema o clase de problemas. Las caractersticas de un algoritmo son:

Debe ser preciso e indicar el orden de realizacin de cada paso.

Debe estar definido, es decir, debe de dar un mismo resultado (si ponemos los mismos datos no
puede dar un resultado distinto).

Debe ser finito, es decir, debe de acabar en algn punto.

Debe ser independiente de un lenguaje de programacin.


Si todo esto te resulta raro en un principio, es completamente normal, con el tiempo iris viendo que vais
mejorando poco a poco. En las siguientes entradas, iremos desarrollando poco a poco como escribir
enpseudocdigo, ademas de ejercicios para practicar (con su respectiva solucin dentro de un spoiler).
La estructura de un algoritmo escrito en pseudocdigo es algo parecido a esto:
Declaracin (Esta parte la veremos mas adelante, nos centraremos en el algoritmo en s al principio)
Inicio
Secuencia de instrucciones (operaciones de lectura, escritura, estructuras de control, etc.)
Final
Variables y constantes en pseudocdigo
Hola a todos, hoy os explicare que son las variables y las constantes y el uso que podemos hacer de ellas en
un algoritmo.
Cuando programemos, necesitamos un lugar donde guardar los datos con los que operamos, ya sean
nmeros, texto, etc.
Estos datos pueden variar o no durante el proceso de ejecucin del algoritmo, segn esa variacin, pueden
ser:

Variables: es un objeto en el que su contenido puede variar durante el proceso de ejecucin del
algoritmo, se identifican por un nombre y su tipo de valores que puede contener para realizar un uso
correcto (lo veremos mas adelante). Por ejemplo: acumulacin se una suma, realizar una cuenta, etc.

Constantes: es un objeto que permanece sin cambios durante todo el desarrollo del algoritmo. Por
ejemplo: el numero Pi, el IVA, etc. Para distinguirlos de las variables, podemos ponerle el nombre en
mayusculas, esto es simplemente un consejo.
Vamos a ver un simple ejemplo donde manipularemos tres variables.
Inicio
1
A<-5
2
B<-3
3
C<-A+B
4
Fin
5
Si mostrramos el resultado de C seria 8, ya que sumamos el valor de A que vale 5 y el valor de B que vale 3.
Una variable tambin puede guardar cadenas de texto (se indica encerrando el texto entre comillas),
booleanos o un valor que el usuario teclee por teclado.

Un momento, que es un booleano? Es un tipo de dato que solo puede almacenar dos valores, true o false,
son muy usados para poner condiciones en estructuras de control, como interruptores, etc. De todas formas,
lo veremos muy pronto.
En las variables numricas, puede contener un numero real o entero.
Algo muy recomendable a la hora de programar es llamar a las variablespor un nombre significativo sobre lo
que contenga para mejorar su legibilidad. Por ejemplo, si queremos almacenar un da del mes, esa variable
se puede llamar dia o si queremos almacenar el total de un producto, podemos usar precio_final.
Es recomendable no dejar espacios en blanco e inicializar las variables que no tiene que ser introducidas por
el usuario, tambin ser inicializada en 0.
Por ltimo, vamos a hablar de unas variables especiales que se usan para ciertas funciones, el nombre de
las variables pueden ser el que nosotros queramos como ya hemos dicho antes, lo especial de
estas variables es la expresin (una suma, varias operaciones, etc.) que utiliza. Estas variablesson:

Contadores: se utilizan para contar cualquier suceso que se necesite dentro de un programa. Se
realiza en dos operaciones:
o
Inicializacin: se inicia en 0 si realiza una cuenta natural o desde un valor inicial, si
queremos realizar otro tipo de cuenta.
o
Incremento: aumenta el valor de la variable en 1 si es una cuenta natural o con otro valor, si
se desea realizar otro tipo de cuenta. La expresin que se utiliza para la variable es:
contador <- contador + constante
Recuerda que contador, es el nombre que le hemos dado a la variable que puede ser el que queramos, la
constante puede 1 o cualquier numero que queramos.

Acumuladores: se utilizan para acumular resultados parciales de clculos con una misma operacin.
Se realiza en dos operaciones:
o
Inicializacin: debe ser inicializado con un valor neutro segn el tipo de operacin que
realicemos, si es una suma se inicializar en 0 y si es un producto se inicializar en 1.
o
Acumulacin: realiza la acumulacin con estas expresiones segn el tipo de operacin:
acumulador <- acumulador+variable o acumulador <- acumulador*variable

Interruptores: se utilizan para transmitir informacin de un punto a otro dentro del programa. Se
inicializan en un valor y en donde nosotros veamos que sea conveniente cambiamos el valor al contrario,
esto es de mucha utilidad cuando veamos los bucles y las estructuras de control. Solo pueden tomar dos
valores:

Numrico: puede ser un 0 o 1.

Lgico: puede ser true o false.

Asignacion en Pseudocodigo
Hola a todos, hoy os explicare una parte importante la asignacin donde veremos como se comportan las
variables cuando asignamos valores en ellas.
La asignacin es la operacin que usamos para dar un valor a una variable.
Debemos tener en cuenta el tipo de variable cuando almacenamos un valor en una variable, en otros
lenguajes son mas estrictos con este tema, pero en pseudocdigo solo debemos saber que no podemos
mezclar distintos tipos de valores.
Por ejemplo, si tenemos una variable con un valor numrico y queremos volver asignarle un valor de otro
tipo, una cadena de texto por ejemplo, nos dara un error porque no coincidiran los tipos. En cambio si ese
valor fuera un valor numrico no dara ningn error.

Otra aspecto a tener en cuenta, es que la asignacion es una operacion destructiva, es decir, que si
almacenamos un valor en la misma variable el valor que tenia antes desaparece. Veamos un ejemplo:
1
2
3
4
5

Inicio
A<-5+1
A<-2-1
A<-A+7
Fin

Vayamos por pasos, la variable A al principio vale 6, despus, A valdr 1 y por ultimo valdr 8. Como vemos
al final prevalece el ultimo resultado, el valor 6 y 1 desapareceran, siempre y cuando se almacene en la
mismavariable.
Por ltimo, debemos saber que en una operacin de asignacin debemos empezar a leer en la parte de la
derecha, que puede contener un valor o una expresin (una suma, varias operaciones, etc.). Es decir, que
primero tenemos que ver el valor o expresin y ese valor final sera el se asigne a la variable.
Variable<-valor o expresin
Debis saber, que cuando tenemos una expresin, como por ejemplo,5+10/2, en pseudocdigo no se sigue
la prioridad de la operacin es decir, que se suma 5+10 y se divide entre 2. Si queremos que
una operacin tenga mas prioridad debemos ponerla entre parntesis, por ejemplo, 5+(10/2), realizara la
operacin del parntesis antes de realizar la suma.
Para probar lo que hemos aprendido, os invito a realizar este ejercicio, pensarlo y mirar la solucin para ver si
coincide.
1
2
3
4
5
6
7
8
9

Inicio
A <B <C <A <B <A <C <Fin

5
7
2
A + B + C
C / 2
A / B + A ^ C
A+(B-C)-B

a) Qu valor contiene A despus de la quinta linea?


b) Qu valor contiene B despus de la sexta linea?
c) Qu valor contiene A despus de la septima linea?
d) Qu valor contiene C despus de la octava linea?
Esconder
a) A tendr un valor de 14, ya que es el resultado de 5+7+2. Despus de esta operacin, el 5 que tenia
desaparece.
b) B tendr un valor de 1, ya el resultado de 2/2 es 1. Despus de esta operacin, el 7 que tenia desaparece.
c) A tendr un valor de 210, ya que el resultado de 14/1+142.

d) C tendr un valor de 208, ya que primero se realiza la resta que hay entre parntesis que el resultado es 1 y la expresin se queda de esta forma: 210-1-1

Operadores Pseudocodigo
Hola a todos, hoy os explicare los operadores que podemos utilizar para realizar operaciones con variables
de todo tipo.
Los tipos de operadores son:

Aritmticos: son anlogas a las frmulas matemticas, se usan para variables numricas. Estos son
los operadores usados:
Operadores

Significado

Suma

Resta

Multiplicacion

Division

DIV

Division entera

MOD

Modulo (resto de la division entera)

^
Potencia
DIV es como si truncramos el resultado de una divisin. Por ejemplo, 5 DIV 2 seria 2 no 25.
MOD es el resto del DIV. Por ejemplo, 5 MOD 2 es igual a 1.
Un consejo para recordar la posicin es simplemente imaginar una divisin y que podemos coger el cociente
o el resto, segn el operador usado.

NOTA: Si
usas
PSeInt,
DIV
no
lo
reconoce,
si
quieres
una divisin entera
escribe trunc(operador1/operador2).
Si tenemos dos variables que contengan una cadena de texto cada una y las sumamos, se concatenaran
formando una nueva cadena.

Lgicas: solo pueden dar dos valores true o false. Pueden ser:
o
Relacionales: pueden comparar dos valores, mediante un smbolo. Estos son los
operadores usados:
Operador

Significado

>

Mayor que

<

Menor que

Igual que

>=

Mayor o igual que

<=

Menor o igual que

<>
Distinto que
Veamos uno ejemplo en los que se utilicen estos operadores:
Inicio
1
A<-5
2

B<-3
3
C<-A>B
4
D<-A<B
5
E<-A>=B
6
F<-A<=B
7
G<-A=B
8
H<-A<>B
9
Fin
10
Vemos que en este ejemplo, tenemos dos variables A y B con sus respectivos valores, que comparamos con
distintos operadores, en todos ellos el resultado sera un true o false.
C sera true porque 5 es mayor que 3 y D sera false porque 5 no es menor que 3, si tuvieran el mismo valor y
se usa el operador < o > el resultado seria false.
E sera true porque es mayor o igual que 3 y F sera false porque 5 no es menor o igual que 3, si tuvieran el
mismo valor y se usa el operador <= o >= el resultado seria true.
G seria false porque 5 no es igual que 3 y H seria true porque 5 es distinto que 3, si fueran iguales y se usa el
operador <> seria false.
o
Lgicos: combina condiciones, segn el tipo de operador se deber cumplir una u
otra funcin. Estos son los operadores usados:
Operador

Significado

AND

Almacenara True, solo si todos las condiciones son verdaderas

OR

Almacenara True, solo si alguna de las condiciones es verdadera

NOT
Cambia el valor al contrario
Lo mejor para ver como funcionan estos operadores es con un ejemplo:
Inicio
1
A<-5
2
B<-3
3
C<-6
4
D<-1
5
E<-C>A AND D<B
6
F<-C>A OR D>B
7
G<-NOT F
8
Fin
9
E sera true porque 6 es mayor que 5 (true) y porque 1 es menor que 3 (true). Si alguna de ella fuera falso, el
resultado seria false.
F sera true porque 6 es mayor que 5 (true) y porque 1 no es mayor que 3 (false). Aunque sea alguna falsa
sigue siendo true, si las dos fueran falsas, entonces su resultado seria true.
G sera false porque invierte el valor que hemos obtenido de F(true). Tambin podemos poner
una condicin delante de NOTsi queremos invertir su resultado.
NOTA: Si usas PSeInt, si quieres usar AND debers escribir Y en su lugar, si quieres
usar OR debers escribir O y si quieres usar NOT debers escribirNO (condicin o variable).

Operacion de entrada y salida en Pseudocodigo


Hola a todos, hoy os explicare como utilizar las operaciones de entrada y salida en pseudocdigo, para
poder mostrar o introducir informacin.
Para pedir al usuario que introduzca un valor por teclado, usaremos la operacin leer. Despus de
esta operacin debe ir una variable donde se guarde lo que el usuario introduzca. Por ejemplo:
Leer A

Si usa PSeInt, si usas la operacin leer y ejecutas, te dejaras que escribas un valor.
Para mostrar por pantalla un valor, usaremos la operacin escribir. Despus de esta operacin si ponemos
una variable, nos mostrara el valor que contenga la variable.
Escribir A
Tambin se puede mostrar mensajes, simplemente despus de la operacin escribir escribimos el texto que
queremos mostrar entre comillas, esto ayuda mucho al usuario para saber que tipo dato debe introducir. Por
ejemplo
1
2
3
4

Inicio
Escribir "Introduce un da del mes"
Leer dia
Fin

Por ltimo, tambin podemos mostrar un mensaje y el valor de una variable, lo unico que debemos hacer es
igual que antes pero donde queremos que se vea el valor de la variable, que no este entre comillas. Por
ejemplo:
1
2
3
4
5

Inicio
Escribir "Introduce un dia del mes"
Leer dia
Escribir "Has introducido el da " dia ",
gracias"
Fin

Si te das cuenta, la variable dia no esta entre la comillas dobles. Si quieres que te salga separado antes de
cerrar comillas deja un espacio en blanco, pero esto ya es una cuestin de esttica.
Instruccin de control condicional en Pseudocdigo
Hola a todos, hoy os explicare las instrucciones de control condicionales, que son, como utilizarlas y algunos
ejemplos.
Una instruccin de control condicional es un bloque de cdigo que se ejecuta si cumple una condicin,
que nosotros pongamos. Esta condicin es una expresin lgica que debe dar como resultado true o false,
para ello es habitual usar los operadores relacionales y lgicos.
Las dos mas utilizadas son:

Condicional simple: si la condicin es verdadera se ejecuta el bloque de cdigo que contenga y ya


esta. Su sintaxis es:
SI (condicin) Entonces
Instrucciones
Fin-Si
Por ejemplo:
Inicio
1
Leer numero1
2
Si (numero1>0) Entonces
3
Escribir numero1 " es mayor que 0"
4
FinSi
5
Fin
6

Condicional doble: si la condicin es verdadera se ejecuta el bloque de cdigo que contenga y sino
se cumple pues ejecuta otro bloque de codigo. Ejecuta uno o otro. Su sintaxis es:
SI (condicin) Entonces

Instrucciones
Sino
Instrucciones
Fin-Si
Por ejemplo:
Inicio
1
Leer numero1
2
Si (numero1>0) Entonces
3
Escribir numero1 " es mayor que 0"
4
Sino
5
Escribir numero1 " es menor que 0"
6
FinSi
7
Fin
8
Algo que se suele hacer es anidar estructuras Si, se puede usar para especificar aun mas una condicin
Debemos recordar que debemos cerrar las estructuras Si que abramos, es recomendable tabular
las instrucciones para mayor legibilidad. Veamos un ejemplo:
Inicio
1
Si (condicion) Entonces
2
Si (condicion) Entonces
3
Instrucciones
4
Sino
5
Intrucciones
6
FinSi
7
Sino
8
Instrucciones
9
FinSi
10
Fin
11
Tambin existe otra instruccin de control condicional, llamado segun sea, que segn un valor (de una
variable, una constante, etc.) o expresin hace una operacin u otra. No puede ser una condicin. Su
sintaxis es:
Segun (valor o expresion) hacer
valor1:
Instrucciones
valor2:
Instrucciones
.
FinSegun
Por ejemplo:
Inicio
1
Leer mes
2
Segun mes Hacer
3
1:
4
escribir "Enero"
5
2:
6
escribir "Febrero"
7
3:
8
escribir "Marzo"
9
4:
10
escribir "Abril"
11
5:
12
escribir "Mayo"
13
6:
14
escribir "Junio"
15

16
17
18
19
20
21
22
23
24
25
26
27
28
29

7:
escribir "Julio"
8:
escribir "Agosto"
9:
escribir "Septiembre"
10:
escribir "Octubre"
11:
escribir "Noviembre"
12:
escribir "Diciembre"
FinSegun
Fin

Instrucciones repetitivas o bucles en pseudocodigo


Hola a todos, hoy os explicare las instrucciones repetitivas o bucles , que son, su sintaxis y como debemos
utilizarlos correctamente.
Un bucle permite repetir una o varias acciones un nmero determinado de veces. El nmero de veces se
indica mediante una condicin, si la condicin es verdadera ejecuta el bloque de cdigo que contenga,
cuando la condicin sea falsa saldr del bucle.
Las dos estructuras que se usan son:

Mientras: Se evala la condicin antes de iniciar el bucle, y se repiten sucesivamente las


instrucciones mientras siga siendo cierta. Es importante que la variable que participe en la condicin se
modifique dentro del bucle, ya que sino sera un bucle infinito del que no saldr. Su sintaxis es:
Mientras (condicin)
Instrucciones
FinMientras
Veamos un ejemplo:
Inicio
1
contador<-0
2
Mientras (contador<3)
3
escribir contador
4
contador<-contador+1
5
FinMientras
6
Fin
7
Como veis usamos una variable contador que se ira incrementando dentro del bucle, cuando este contador
llegue a 3 saldr del bucle. Imprime en pantalla el 0, 1 y 2, el 3 no lo imprime porque 3<3 es falso, con lo que
hace que sale del bucle. Hay que tener muy claro la condicin de salida.

Desde-Hasta: se repiten las instrucciones desde una variable de control (Vc) a la que le damos
un valor inicial (Vi) hasta un valor final (Vf) que le indiquemos, incrementndose en un valor. Se
introduce en el bucle cuando la Vc es menor que la Vf. Para que lo recuerdes mejor, piensa en esta
expresin, Vc<=Vf, incluyendo el valor final. Si el incremento es negativo, la condicin cambia
as, Vc>=Vf . Su sintaxis es:
Desde Vc<-Vi hasta Vf In constante
Instrucciones
FinDesde
Si usas PSeInt, tendrs que usar esta sintaxis:
Para Vc<-Vi hasta Vf con paso
constante Hacer
Instrucciones
FinPara

Veamos un ejemplo, usando el desde-hasta, si lo queremos usar en PseInt solo hay que cambiar algunas
palabras:
Inicio
1
Desde contador<-1 Hasta 5 Con Paso 1 Hacer
2
escribir contador
3
FinDesde
4
Fin
5
La diferencia con la estructura mientras, es que en el mientras se necesita inicializar la variable fuera del
bucle y aumentarla dentro del bucle. Y en laestructura desde, la inicializacin y el incremento se hace en
una linea.
Entonces, cual es mejor de los dos? La respuesta es segn el caso, laestructura desde es mejor usarla
cuando sabemos el rango, es decir, el inicio y fin. Por ejemplo, la suma de los nmeros entre el 1 hasta el 20.
La estructura mientras es mejor usarlo en casos donde no conozcamos el final. Por ejemplo, la suma de los
nmeros que introduzca el usuario, sabemos cuando empieza pero no cuando acaba.
Otra diferencia a tener en cuenta, es la condicin en la estructura mientras para que entre
la condicin debe ser verdadera para que entre en el bucle y falso para salir y en la estructura
desde siempre va a incluir<= 0 >=, recordar que para que se salga se debe cumplir Vc<=Vf (siendo el
incremento positivo).

Funciones internas en Pseudocodigo


Hola a todos, hoy os explicare las funciones internas que podemos ejecutar en pseudocdigo, para realizar
ciertas operaciones.
Para utilizar estas funciones, debemos de escribir la funcin y entre parntesis, deberemos introducir
los parmetros que queramos como un numero, una cadena o incluso una variable. Debemos de tener en
cuenta lo que nos pide, por ejemplo, si queremos ponemos la funcin interna de la raz cuadrada, deberemos
darle un numero positivo para que se pueda realizar y no una cadena de texto o un numero negativo.
Las funciones son:
Funcion

Significado

RC(X) o RAIZ(X)

Raz cuadrada de X

ABS(X)

Valor absoluto de X

LN(X)

Logaritmo natural de X

EXP(X)

Funcion exponencial de X

SEN(X)

Seno de X

COS(X)

Coseno de X

TAN(X)

Tangente de X

ASEN(X)

Arcoseno de X

ACOS(X)

Arcocoseno de X

ATAN(X)

Arcotangente de X

TRUNC(X)

Parte entera de X

REDOND(X)

Entero mas cercano a X

AZAR (X)

Entero aleatorio entre 0 y 1

LONGITUD(S)

Cantidad de caracteres de la cadena S

Funcion

Significado

MAYUSCULAS(S)

Retorna una copia de la cadena S con todos


sus caracteres en maysculas

MINUSCULAS(S)

Retorna una copia de la cadena S con todos


sus caracteres en minsculas

SUBCADENA(S,X,
Y)

Retorna una nueva cadena que consiste en


la parte de la cadena S que va desde la
posicin X hasta la posicin Y. Empieza desde
0 y no desde 1.

CONCATENAR(S1 Retorna una nueva cadena resulta de unir las


,S2)
cadenas S1 y S2.
Recuerda que debes almacenar el resultado en una variable. Tambin puedes usarlo en una condicin.
Seguimiento en pseudocodigo
Hola a todos, hoy os explicare como realizar una tcnica llamadaseguimiento en pseudocdigo.
El seguimiento es una tcnica en la que comprobamos que el programa hace lo que queremos que haga, se
puede hacer en papel o en el PSeInt.
En papel, lo nico que se hace es comprobar el valor de la variables en cada linea y realizar la operaciones
que aparezcan como leer, escribir, etc.
Inicio
1
contador<-1
2
suma<-0
3
Mientras contador<=2 Hacer
4
suma<-suma+contador
5
contador<-contador+1
6
FinMientras
7
Escribir suma
8
Fin
9
Esto es lo que iremos haciendo durante el seguimiento:

Anotamos todas las variables que hay, en este caso, solo estn las variables contador y suma,
contador esta inicializado en 1 y suma en 0.

Tenemos una estructura mientas con una condicin contador<=2,ahora contador vale 1, 1<=2 es
verdadero, por lo que entra en el bucle.

Ahora realizamos la siguiente linea, suma<-suma+contador, es decir, suma<-0+1, es igual


a 1. Anotamos en suma 1.

En la siguiente linea, contador<-contador+1, es decir, contador<-1+1, contador ahora vale 2, lo


reemplazamos por el valor que tenia.

Volvemos al inicio del mientras, ahora contador vale 2, la condicin se sigue cumpliendo, 2<=2.

Se ejecuta las siguientes instrucciones como antes, pero con valores diferentes. La
variable suma valdr 3 y contador 3.

Ahora en el mientras no se cumple la condicin, ya que 3<=2 no es verdadero.

Seguimos
las
instrucciones despus del
bucle,
realizamos
la
linea Escribir
suma, como suma vale 3, lo escribiremos en pantalla.
Lo mas aconsejable es comprobar los valores limites (en este caso 2) para ver que todo esta bien. Si
pedimos datos por teclado al usuario, debemos probar con varios nmeros para ver que cumple lo que
necesitamos.
En PSeInt, debemos pinchar en ejecucin paso a paso, despus encomenzar, aparecer la ventana
de ejecucin e ira ejecutando linea a linea.

Si queremos ver el valor de una variable en un momento concreto, pausamos la ejecucin y pinchamos
en evaluar y ponemos el nombre de la variable que queremos ver.
Tambin podemos ejecutarlo linea a linea y modificar la velocidad de ejecucin.

Anlisis de un problema a resolver en pseudocdigo


Hola a todos, hoy os explicare como debemos analizar un problema de pseudocdigo.
Hasta ahora hemos visto como debemos construir el algoritmo en pseudocodigo, pero al tener un problema lo
primero que debemos hacer es analizar el problema para saber como debemos construir el algoritmo.
Os recomiendo que este anlisis lo hagis en papel, para que os sea mas sencilla y tengis mas libertad a la
hora de escribir.
Para empezar a analizar el problema, debemos leer atentamente el problema y extraer lo mas importante.
Para extraer lo mas importante podemos preguntarnos a nosotros mismos, por ejemplo:

Debe el usuario introducir datos?

Hay algn tipo de repeticin dentro del algoritmo?

Hay alguna estructura condicional?

Que condicin seria la mas adecuada, si tenemos un bucle o una estructura Si?

Que variables necesito en el algoritmo?

Como debera iniciar las variables?

Que resultado debo imprimir en pantalla? (Si es que hace falta)


Veamos algunos ejemplo practico, para ver como se analiza.
1 ) Un vendedor recibe un sueldo base mas un 10 % extra por comisin de sus ventas, el vendedor desea
saber cuanto dinero obtendr por concepto de comisiones por las tres ventas que ha realiza este mes, y el
total que recibir.
Empecemos analizando este enunciado, deberemos de preguntarnos las preguntas antes formuladas:

Debe el usuario introducir datos? El usuario solo deber introducir el valor de sus ventas

Hay algn tipo de repeticin dentro del algoritmo? En este caso, se podra hacer con o
sin repeticin pero siempre que se pueda es bueno hacer un bucle. Como en este caso sabemos el
rango, podemos usar una estructura desde-hasta, aunque tambin se puede hacer con un
mientas. Esto ya es decisin nuestra.

Hay alguna estructura condicional? En este ejercicio no tenemos ninguna condicin ya que nos
pide que cumpla alguna condicin concreta.

Que condicin seria la mas adecuada, si tenemos un bucle o una estructura Si? Como
obtenemos del enunciado, nos pide 3 ventas, as que una buena condicin seria que hasta una variable
del tipo contador sea mayor que 3 (incluyendo el 3) no nos pida mas ventas.

Que variables necesito en el algoritmo? Necesitaremos una variable que almacene el valor de la
venta, una variable contador para contar el numero de ventas, el total, el salario base y la comisin (estas
dos ultimas pueden ser constantes).

Como debera iniciar las variables? Las constantes se debern asignar los valores que
necesitemos, el total se inicializara a 0 y el contador a 1.

Que resultado debo imprimir en pantalla? (Si es que hace falta) Deberemos imprimir el total
que recibir el vendedor.
En pseudocdigo seria asi:
Esconder
Inicio
1
SALARIO_BASE=1000
2
COMISION=0.1
3
Desde contador<-1 Hasta 3 In 1
4
Escribir "Introduce la venta numero "
5
contador
6
Leer venta
7
total<-total+(venta*COMISION)
8
FinDesde
9
total<-SALARIO_BASE+total
10
Escribir "El vendedor gana " total
11
Fin
2 ) Escriba un algoritmo que determine cuales son los mltiplos de 5 comprendidos entre 1 y N.
Haremos lo mismo que antes, analizaremos el enunciado con las preguntas:

Debe el usuario introducir datos? El nico dato que debe introducir el usuario es el limite.
Normalmente, cuando se dice N es un dato que debe introducir el usuario.

Hay algn tipo de repeticin dentro del algoritmo? Si tenemos una repeticin, tendremos que
ver si cada numero es o no mltiplo de 5. Hay podemos usar una estructura desde-hasta, ya que
sabemos el rango (aunque sea un dato introducido por el usuario).

Hay alguna estructura condicional? En este ejercicio si tenemos una estructura condicional, ya
que imprimiremos solo aquellos nmeros que sean mltiplos de 5.

Que condicin seria la mas adecuada, si tenemos un bucle o una estructura Si? En el caso del
bucle, la condicin para salir deber ser cuando el numero sea mayor que el limite. En el caso de la
estructura condicional, la condicin para que imprima el numero es que sea mltiplo de 5.

Que variables necesito en el algoritmo? Simplemente necesitamos almacenar el limite y contar


los nmeros entre 1 y el limite.

Como debera iniciar las variables? El variable contador se inicializara en uno.

Que resultado debo imprimir en pantalla? (Si es que hace falta) Solo aquellos nmeros que
sean mltiplos de 5.
En pseudocdigo seria as:
Esconder
Inicio
1
Leer N
2
Desde num<-1 Hasta N In 1
3
si (num MOD 5=0) Entonces
4
Escribir num
5
FinSi
6
FinDesde
7
Fin
8

Declaracion de variables en pseudocodigo


Hola a todos, hoy os explicare la declaracin de variables enpseudocodigo, como se debe hacer
correctamente.
Declarar variables significa indicar el tipo de dato que almacenara lasvariables que participan en el
programa.
Hasta ahora, no hemos declarado las variables, a partir de ahora acostumbraos a hacerlo si lo hacis en
papel, es bueno acostumbrarse para que cuando empecemos con otros lenguajes no nos cueste declarar
lasvariables. En caso de hacerlo con PSeInt, no es necesario hacerlo, aunque se puede hacer con define.
Para declarar variables, lo nico que debemos hacer es indicar el nombre de la variable y su tipo
(numrico, lgico y cadena), antes del inicio del programa, separados por comas. Si veis otra forma de
declararvariables, tambin es valida. Es normal si al principio, no sabemos todas las variables que pueden
aparecer, con el tiempo lo identificaremos de una forma mas rpida y sencilla.
Lo importante de esto es reconocer que tipo de datos queremos que almacene una variable en concreto.
Por ejemplo:
1
2
3
4
5
6
7
8
9
10

Var contador: numrico , suma: nmerico


Inicio
contador<-1;
suma<-0;
Mientras contador<=5 Hacer
suma<-suma+contador;
contador<-contador+1;
FinMientras
Escribir suma
Fin

Si tenemos muchas variables del mismo tipo, podemos agupar las variables separandolas con comas. Por
ejemplo:
1
Var contador, suma: nmerico
2
Inicio
3
contador<-1;
suma<-0;
4
Mientras contador<=5 Hacer
5
suma<-suma+contador;
6
contador<-contador+1;
7
FinMientras
8
Escribir suma
9
10 Fin
Ejercicios propuestos y resueltos en pseudocodigo
Hola a todos, hoy os quiero dejar unos cuantos ejercicios propuestos y resueltos (en un spoiler) de
pseudocdigo.
Os recomiendo hacer estos ejercicios primero en papel, declarando las variables y hacer un seguimiento
cuando lo terminis de hacer para comprobar que hace lo que pide.
Los ejercicios no tienen una nica solucin, el objetivo es que haga lo que pide y si se pide que se haga de
una forma especifica hacerlo.

Los ejercicios resueltos estn en un spoiler resueltos en papel y PSeInt (por si los quieres guardar en un
fichero).
Aqu os dejo algunos posts anteriores para recordar algunos puntos por si lo necesitis:

Variables y constantes.

Operadores.

Asignacin.

Operaciones de entrada y de salida.

Funciones internas.

Instrucciones de control.

Instrucciones repetitivas o bucles.

Seguimiento.

Declaracin.

Anlisis de un problema.

Descarga de PSeInt.
Si tienes alguna duda o quieres proponer alguna solucin alternativa, deja un comentario en este post
o mndanos un mensaje a administrador@discoduroderoer.es Tambin dejare algunos comentarios para
explicar que hace cada paso. Puedes ponerlos con //
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).
Esconder
Papel:
Var A, B, C: numerica
1
Inicio
2
Escribir "Introduce el valor de A"
3
Leer A
4
Escribir "Introduce el valor de B"
5
Leer B
6
C<-A
7
A<-B
8
B<-C
9
Escribir "A vale " A " y B vale " B
10
Fin
11
PSeInt:
Proceso ejercicio_1
1
Escribir "Introduce el valor de A"
2
Leer A
3
Escribir "Introduce el valor de B"
4
Leer B
5
C<-A
6
A<-B
7
B<-C
8
Escribir "A vale " A " y B vale " B
9
FinProceso
10
2) Algoritmo que lea dos nmeros, calculando y escribiendo el valor de su suma, resta, producto y divisin.
Esconder
Papel:
Var numero1, numero2, resultado: numerica
1
Inicio
2
Escribir "Introduce el primer numero"
3
Leer numero1
4

Escribir "Introduce el segundo numero"


5
Leer numero2
6
resultado<-numero1+numero2
7
Escribir resultado
8
resultado<-numero1-numero2
9
Escribir resultado
10
resultado<-numero1*numero2
11
Escribir resultado
12
resultado<-numero1/numero2
13
Escribir resultado
14
Fin
15
PSeInt:
Proceso ejercicio_2
1
Escribir "Introduce el primer numero"
2
Leer numero1
3
Escribir "Introduce el segundo numero"
4
Leer numero2
//inicializamos la variable resultado a 0
5
(recomendable)
6
resultado<-0
7
//sumamos los numeros y escribimos su resultado
8
resultado<-numero1+numero2
9
Escribir resultado
10
//restamos los numeros y escribimos su resultado
11
resultado<-numero1-numero2
12
Escribir resultado
13
//multiplicamos los numeros y escribimos su
14
resultado
15
resultado<-numero1*numero2
16
Escribir resultado
17
//dividimos los numeros y escribimos su resultado
18
resultado<-numero1/numero2
19
Escribir resultado
20
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)
Esconder
Papel:
Var numero1, numero2: numerica
1
Inicio
2
Escribir "Introduce el primer numero"
3
Leer numero1
4
Escribir "Introduce el segundo numero"
5
Leer numero2
6
Si (numero1>=numero2) Entonces
7
Si (numero1=numero2) Entonces
8
escribir "los numeros " numero1 " " numero2 " son
9
iguales"
10
Sino
11
Escribir numero1 " es el mayor de los dos"
12
FinSi
13
Sino
14
Escribir numero2 " es el mayor de los dos"
15

FinSi
Fin
PSeInt:
Proceso ejercicio_3
1
Escribir "Introduce el primer numero"
2
Leer numero1
3
Escribir "Introduce el segundo numero"
4
Leer numero2
//comparamos los dos numeros,
5
//si el primero es mayor o igual que el segundo entra
6
Si (numero1>=numero2) Entonces
7
//Si el numero1 y numero2 son iguales entra y escribe que son
8
iguales
9
//Sino lo son escribe que el numero1 es el mayor
10
Si (numero1=numero2) Entonces
11
escribir "los numeros " numero1 " " numero2 " son
12
iguales"
13
Sino
14
Escribir numero1 " es el mayor de los dos"
15
FinSi
16
//Si el primer Si es falso, escribe que el numero2 es mayor
17
Sino
18
Escribir numero2 " es el mayor de los dos"
19
FinSi
20
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).
Esconder
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
Si (numero2>numero3) Entonces
11
Escribir "El numero " numero2 " es el
12
mayor"
13
Sino
14
Escribir "El numero " numero3 " es el
15
mayor"
16
FinSi
17
FinSi
18
Fin
PSeInt:
Proceso ejercicio_4
1
Escribir "Introduce el primer numero"
2
16

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.
Esconder
Papel:
Var numero1, numero2, numero3, resultado:
1
numerica
2
Inicio
3
Escribir "Introduce el primer numero"
4
Leer numero1
5
Escribir "Introduce el segundo numero"
6
Leer numero2
7
Escribir "Introduce el tercer numero"
8
Leer numero3
9
Si (numero1<0) Entonces
10
resultado<-numero1*numero2*numero3
11
Sino
12
resultado<-numero1+numero2+numero3
13
FinSi
14
Escribir resultado
15
Fin
PSeInt:
Proceso ejercicio_5
1
Escribir "Introduce el primer numero"
2
Leer numero1
3
Escribir "Introduce el segundo numero"
4
Leer numero2
5
Escribir "Introduce el tercer numero"
6
Leer numero3
7
//si el numero1 es menor que 0,
8
//multiplicara los numero y sino los sumara
9
Si (numero1<0) Entonces
10
resultado<-numero1*numero2*numero3
11
Sino
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

resultado<-numero1+numero2+numero3
13
FinSi
14
Escribir resultado
15
FinProceso
16
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.
Esconder
Papel:
Var numero, potencia, raiz: numerica
1
Inicio
2
Escribir "Introduce un numero"
3
Leer numero
4
Si (numero>0) Entonces
5
potencia<-numero^2
6
raiz_cuadrada<-numero^0,5
7
Escribir "Su potencia es " potencia "
8
Escribir "Su raiz es " raiz_cuadrada
9
Sino
10
Escribir "Error, introduce un numero mayor que
11
0"
12
FinSi
13
Fin
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
4
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)
9
Escribir "Su potencia es " potencia
10
Escribir "Su raiz es " raiz_cuadrada
11
Sino
12
Escribir "Error, introduce un numero mayor que 0"
13
FinSi
14
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).
Esconder
Papel:
Var numero_nios, numero_nias, resultado: numerica
1
Inicio
2
Escribir "Introduce el numero de nios"
3
Leer numero_nios
4
Escribir "Introduce el numero de nias"
5
Leer numero_nias
6
porcentaje_nios<-numero_nios*100/
7
(numero_nios+numero_nias)
8

9
10
11

porcentaje_nias<-100-porcentaje_nios
Escribir "Hay un " porcentaje_nios " % de nios
Escribir "Hay un " porcentaje_nias " % de nias

Fin
PSeInt:
Proceso Ejercicio_7
1
Escribir "Introduce el numero de nios"
2
Leer numero_nios
3
Escribir "Introduce el numero de nias"
4
Leer numero_nias
5
//calculamos el porcentaje
6
porcentaje_nios<-numero_nios*100/
7
(numero_nios+numero_nias)
8
porcentaje_nias<-100-porcentaje_nios
9
Escribir "Hay un " porcentaje_nios " % de nios
10
Escribir "Hay un " porcentaje_nias " % de nias"
11
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.
Esconder
Papel:
1
Var mes: cadena
2
importe, total:numerico
Inicio
3
Escribir "escribe el importe de la compra"
4
Leer importe
5
Escribir "Introduce el mes"
6
Leer mes
7
Si (mes="octubre") Entonces
8
total<-importe*0.85
9
Sino
10
total<-importe
11
FinSi
12
Escribir total
13
Fin
14
PSeInt:
Proceso ejercicio_8
1
Escribir "escribe el importe de la compra"
2
Leer importe
3
Escribir "Introduce el mes"
4
Leer mes
5
//Si el mes es octubre, se aplicara el
6
descuento
7
Si (mes="octubre") Entonces
8
total<-importe*0.85
9
Sino
10
total<-importe
11
FinSi
12
Escribir total
13
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)

Esconder
Papel:
1
Var numero: numerica
2
Inicio
Escribir "Introduce un numero"
3
Leer numero
4
Si (numero=0) Entonces
5
Escribir "El " numero " no es par ni impar"
6
Sino
7
Si (numero MOD 2=0) Entonces
8
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
2
Escribir "Introduce un numero"
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
7
Si (numero MOD 2=0) Entonces
8
Escribir "El " numero " es par"
9
Sino
10
Escribir "El " numero " no es par"
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 nmero por teclado
(as hasta que se teclee un nmero mayor que cero) (recuerda la estructura mientras).
Esconder
Papel:
1
Var numero: numerica
2
Inicio
Escribir "Introduce un numero"
3
Leer numero
4
Mientras (numero<=0) hacer
5
Escribir "escribe un numero mayor que 0"
6
Leer numero
7
FinMientras
8
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:
Proceso ejercicio_10
1
Escribir "Introduce un numero"
2
Leer numero
3

//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.
Esconder
Papel:
Var bachiller, prueba_acceso: cadena
1
Inicio
2
Escribir "Tienes el titulo de bachiller?"
3
Leer bachiller
4
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
10
Escribir "Puedes acceder al grado superior"
11
Sino
12
Escribir "No puedes acceder a un grado
13
superior"
14
FinSi
15
FinSi
16
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"
5
Sino
6
Escribir "Tienes la prueba de acceso superada?"
7
Leer prueba_acceso
8
si (prueba_acceso="si") Entonces
9
Escribir "Puedes acceder al grado superior"
10
Sino
11
Escribir "No puedes acceder a un grado
12
superior"
13
FinSi
14
FinSi
15
FinProceso
12) Desarrollar un algoritmo que nos calcule el cuadrado de los 9 primeros nmeros naturales (recuerda la
estructura desde-hasta)
4
5
6
7
8
9
10
11
12
13
14

Esconder
Papel:
Var num, res: numerica
1
Inicio
2
Desde num<-1 Hasta 9 In 1
3
res<-num^2
4
Escribir num "
" res
5
FinDesde
6
Fin
7
PSeInt:
Proceso ejercicio_12
1
Para num<-1 Hasta 9 Con Paso 1
2
res<-num^2
3
Escribir num " " res
4
FinPara
5
FinProceso
6
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 Nprimeros nmeros naturales. N se leer
por teclado (no tenemos porque llamar a la variable N, podemos llamarla como queramos).
Esconder
Papel:
Var N, contador, suma: numerica
1
Inicio
2
Leer N
3
suma<-0
4
Desde contador<-1 Hasta 5 In 1
5
suma<-N+suma
6
N<-N+1
7
FinDesde
8
Escribir suma
9
Fin
10
PSeInt:
Proceso ejercicio_13
1
Leer N
2
suma<-0
3
Para contador<-1 Hasta 5 Con Paso 1
4
suma<-N+suma
5
N<-N+1
6
FinPara
7
Escribir suma
8
FinProceso
9
14) Se pide representar el algoritmo que nos calcule la suma de los Nprimeros nmeros pares. Es decir,
si insertamos un 5, nos haga la suma de 6+8+10+12+14.
Esconder
Papel:
Var N, contador, suma: numerica
1
Inicio
2
Leer N
3
contador<-0
4
Mientras (contador<5) Hacer
5
si (N MOD 2=0) Entonces
6
suma<-N+suma
7

contador<-contador+1
8
FinSi
9
N<-N+1
10
FinMientras
11
Escribir suma
12
Fin
13
PSeInt:
1
Proceso ejercicio_14
Leer N
2
contador<-0
3
limite<-N
4
Mientras (contador<limite) Hacer
5
si (N MOD 2=0) Entonces
6
suma<-N+suma
7
contador<-contador+1
8
FinSi
9
N<-N+1
10
FinMientras
11
Escribir suma
12
FinProceso
13
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.
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
7
contador<-contador+1
8
Leer num
9
FinMientras
10
Escribir suma/(contador-1)
11
Fin
12
PSeInt:
Proceso ejercicio_15
1
Leer num
2
suma<-0
3
contador<-1
4
Mientras (num<>-1) Hacer
5
suma<-suma+num
6
contador<-contador+1
7
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 indicndonos que hemos agotado
esos 3 intentos. (Recomiendo utilizar un interruptor). Si acertamos la clave, saldremos directamente del
programa.

Esconder
Papel:
1
Var clave: cadena
2
acierto: booleano
3
contador: numerica
4
Inicio
contador<-0
5
acierto<-Falso
6
Mientras (contador<3 AND acierto=falso) Hacer
7
Leer clave
8
si (clave="eureka") Entonces
9
Escribir "la clave es correcta"
10
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"
16
FinSi
17
Fin
18
PSeInt:
Proceso ejercicio_16
contador<-0
1
//interruptor
2
acierto<-Falso
3
//usamos un interruptor, cuando acertemos,
4
//cambiara y la condicion sera falsa
5
Mientras (contador<3 Y acierto=falso) Hacer
6
//ponemos aqui leer porque con las
7
variables
8
//iniciales entra en el bucle
9
Escribir "introduce la clave"
10
Leer clave
11
si (clave="eureka") Entonces
12
Escribir "la clave es correcta"
13
//el interruptor cambia cuando
14
acertamos
15
acierto<-Verdadero
16
FinSi
17
contador<-contador+1
18
FinMientras
19
//este mensaje solo aparecera si hemos
20
agotado
21
//todos los intentos y no hemos acertado
22
si (contador=3 Y acierto=falso) Entonces
23
Escribir "Ya no tienes mas intentos"
24
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.
Esconder
Papel:
Var maximo, minimo, num, suma, media, contador:
1

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
3
que
4
//insertemos para que lo podamos modificar
5
//durante el programa
6
minimo<-num
7
maximo<-num
8
suma<-0
9
Mientras (num<>0) Hacer
10
si (num>maximo) Entonces
11
maximo<-num
12
FinSi
13
si (num<minimo) Entonces
14
minimo<-num
15
FinSi
16
suma<-suma+num
17
contador<-contador+1
18
leer num
19
FinMientras
20
media<-suma/(contador)
21
//escrbimos los resultados
22
Escribir "El maximo es " maximo
23
Escribir "El minimo es " minimo
24
Escribir "La media es " media
25
FinProceso
18) Algoritmo que visualice la cuenta de los nmeros que son mltiplos de 2 o de 3 que hay entre 1 y 100.
Esconder
Papel:
Var num: numerica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

Inicio
Desde num<-1 Hasta 100 In 1
//asi indicamos si un numero es multiplo de 3 o
de 2
si (num MOD 2=0 OR num MOD 3=0) Entonces
Escribir num
FinSi
FinDesde
Fin
PSeInt:
Proceso ejercicio_18
1
Para num<-1 Hasta 100 Con Paso 1
2
//asi indicamos si un numero es multiplo de 3 o
3
de 2
4
si (num MOD 2=0 o num MOD 3=0) Entonces
5
Escribir num
6
FinSi
7
FinPara
8
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.
Esconder
Papel:
Var dia, mes, ao: numerica
1
Inicio
2
Escribir "Introduce el dia"
3
Leer dia
4
Escribir "Introduce el mes"
5
Leer mes Escribir "Introduce el ao"
6
Leer ao
7
//comprobamos que la fecha es correcto
8
si ((dia<=31 y dia>=0) AND (mes<=12 y mes>=0) AND ao>0)
9
Entonces
10
Escribir dia sin saltar
11
//usamos el segun sea para escribir el mes
12
Segun mes Hacer
13
1:
14
escribir " de enero de" sin saltar
15
2:
16
escribir " de febrero de " sin saltar
17
3:
18
escribir " de marzo de " sin saltar
19
4:
20
escribir " de abril de " sin saltar
21
5:
22
escribir " de mayo de " sin saltar
23
6:
24
escribir " de junio de " sin saltar
25
7:
26
2
3
4
5
6
7
8
9

27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

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
PSeInt:
Proceso ejercicio_19
1
Escribir "Introduce el dia"
2
Leer dia
3
Escribir "Introduce el mes"
4
Leer mes
5
Escribir "Introduce el ao"
6
Leer ao
7
//comprobamos que la fecha es correcto
8
si ((dia<=31 y dia>=0) y (mes<=12 y mes>=0) y ao>0)
9
Entonces
10
Escribir dia sin saltar
11
//usamos el segun sea para escribir el mes
12
Segun mes Hacer
13
1:
14
escribir " de enero de" sin saltar
15
2:
16
escribir " de febrero de " sin saltar
17
3:
18
escribir " de marzo de " sin saltar
19
4:
20
escribir " de abril de " sin saltar
21
5:
22
escribir " de mayo de " sin saltar
23
6:
24
escribir " de junio de " sin saltar
25
7:
26
escribir " de julio de " sin saltar
27
8:
28
escribir " de agosto de " sin saltar
29
9:
30
escribir " de septiembre de " sin saltar
31
10:
32
escribir " de octubre de " sin saltar
33
11:
34
escribir " de noviembre de " sin saltar
35

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.
Esconder
Papel:
Var alumno: cadena
1
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"
7
leer nota_practica
8
Escribir "Introduce la nota de problemas"
9
leer nota_problemas
10
Escribir "Introduce la nota de teoria"
11
Leer nota_teoria
12
//NOTA: este si esta agrupado por falta de espacio
13
si (nota_practica<=10 AND nota_practica>=0)
14
AND (nota_problemas<=10 AND nota_problemas>=0)
15
AND (nota_teoria<=10 AND nota_teoria>=0) Entonces
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
22
nota_teoria<-nota_teoria*0.4
23
nota_final<-nota_practica+nota_problemas+nota_teoria
24
Escribir "La nota final es " nota_final
25
Sino
26
Escribir "Has escrito una nota incorrecta, vuelve a
27
intentarlo"
28
FinSi
29
30
Escribir "Introduce el nombre de otro alumno"
31
Leer alumno
32
FinMientras
33
Fin
36
37
38
39
40
41
42

PSeInt:
Proceso ejercicio_20
1
Escribir "Introduce el nombre del alumno"
2
Leer alumno
3

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 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:
****
* *
* *
****
Esconder
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
FinDesde
6
escribir " "
7
desde asterisco<-1 Hasta lado-2 In 1
8
Escribir "*"
9
Desde espacio<-1 Hasta lado-2 In 1
10
Escribir " "
11
FinDesde
12
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

Escribir "*"
13
escribir " "
14
FinDesde
15
Desde asterisco<-1 Hasta lado In 1
16
Escribir "*"
17
FinDesde
18
Fin
19
PSeInt:
1
Proceso ejercicio_21
2
Leer lado
3
Para asterisco<-1 Hasta lado Con Paso 1
4
Escribir "*" Sin Saltar
FinPara
5
escribir " "
6
Para asterisco<-1 Hasta lado-2 Con Paso 1
7
Escribir "*" Sin Saltar
8
Para espacio<-1 Hasta lado-2 Con Paso 1
9
Escribir " " sin saltar
10
FinPara
11
Escribir "*" Sin Saltar
12
escribir " "
13
FinPara
14
Para asterisco<-1 Hasta lado Con Paso 1
15
Escribir "*" Sin Saltar
16
FinPara
17
FinProceso
18
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.
*****
****
***
**
*
Esconder
Papel:
Var altura, asterisco, espacio, espacio_linea, asterisco_linea:
1
numerica
2
Inicio
3
Leer altura
4
asterisco<-altura
5
espacio<-0
6
Desde linea<-1 hasta altura In 1
7
Desde espacio_linea<-0 hasta espacio In 1
8
Escribir " "
9
FinDesde
10
Desde asterisco_linea<-1 hasta asterisco In 1
11
Escribir "*"
12
FinDesde
13
asterisco<-asterisco-1
14
espacio<-espacio+1
15
Escribir " "
16
FinDesde
17
Fin

PSeInt:
Proceso ejercicio_22
1
Leer altura
2
//iniciamos las variables segun lo necesitamos
3
asterisco<-altura
4
espacio<-0
5
Para linea<-1 hasta altura con paso 1
6
//escribimos los espacios iniciales
7
Para espacio_linea<-0 hasta espacio con paso 1
8
Escribir " " sin saltar
9
FinPara
10
//escribimos los asteriscos de la escalera
11
Para asterisco_linea<-1 hasta asterisco con paso 1
12
Escribir "*" sin saltar
13
FinPara
14
//aumentamos los espacios y disminuimos los
15
asteriscos
16
asterisco<-asterisco-1
17
espacio<-espacio+1
18
Escribir " "
19
FinPara
20
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
probarloaqu, tambin encontraras informacin sobre las condiciones de cuando un ao es bisiesto.
Esconder
Papel:
1
Var ao: numerica
Inicio
2
Escribir "Introduce un ao"
3
leer ao
4
si (ao MOD 4=0 y ao MOD 100<>0)Entonces
5
Escribir "El ao " ao " es bisiesto"
6
Sino
7
si (ao MOD 400=0 y ao MOD 100=0) Entonces
8
Escribir "El ao " ao " es bisiesto"
9
Sino
10
escribir "El ao " ao " no es bisiesto"
11
FinSi
12
FinSi
13
Fin
14
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"
5
Sino
6
si (ao MOD 400=0 y ao MOD 100=0) Entonces
7
Escribir "El ao " ao " es bisiesto"
8

Sino
9
escribir "El ao " ao " no es bisiesto"
10
FinSi
11
FinSi
12
FinProceso
13
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

Cerveza

0,75

Esconder
Papel:
Inicio
1
JAMON=1.5
2
REFRESCO=1.05
3
CERVEZA=0.75
4
total=0
5
Escribir "Introduce la cantidad de bocadillos de
6
jamon"
7
Leer cant_jamon
8
Escribir "Introduce la cantidad de refresco"
9
Leer cant_refresco
10
Escribir "Introduce la cantidad de cerveza"
11
Leer cant_cerveza
12
//NOTA: las 2 siguientes lineas van en una linea
13
total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO)
14
+(cant_cerveza*CERVEZA))
15
Escribir total
16
Fin
PSeInt:
Proceso ejercicio_24
1
JAMON=1.5
2
REFRESCO=1.05
3
CERVEZA=0.75
4
total=0
5
Escribir "Introduce la cantidad de bocadillos de
6
jamon"
7
Leer cant_jamon
8
Escribir "Introduce la cantidad de refresco"
9
Leer cant_refresco
10
Escribir "Introduce la cantidad de cerveza"
11
Leer cant_cerveza
12
//NOTA: los dos siguientes van en una linea
13
total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO)
14
+(cant_cerveza*CERVEZA))
15
Escribir total
16
FinProceso
25) Algoritmo que nos calcule las races de una ecuacin de segundo grado. Controlar el caso de que las
soluciones sean imaginarias.

Esconder
Papel:
1
Var a,b, c, raizcua, x1, x2: numerica
2
Inicio
3
Escribir "escibe el valor de a"
4
Leer a
Escribir "escibe el valor de b"
5
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
11
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
17
FinSi
18
Fin
19
PSeInt:
1
Proceso ejercicio_25
2
Escribir "escibe el valor de a"
3
Leer a
4
Escribir "escibe el valor de b"
Leer b
5
Escribir "escibe el valor de c"
6
Leer c
7
neg<--b
8
raizcua<-(b^2-4*a*c)^0.5
9
Si raizcua<=0 Entonces
10
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
16
FinSi
17
FinProceso
18

Potrebbero piacerti anche