Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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 estar definido, es decir, debe de dar un mismo resultado (si ponemos los mismos datos no
puede dar un resultado distinto).
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:
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
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
^
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
>=
<=
<>
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
OR
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).
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 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
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).
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)
AZAR (X)
LONGITUD(S)
Funcion
Significado
MAYUSCULAS(S)
MINUSCULAS(S)
SUBCADENA(S,X,
Y)
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.
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.
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.
Que condicin seria la mas adecuada, si tenemos un bucle o una estructura Si?
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 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
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.
Funciones internas.
Instrucciones de control.
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
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
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
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
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:
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