como hacer pseudocodigo
TRANSCRIPT
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 números, texto, etc.
Estos datos pueden variar o no durante el proceso de ejecución del
algoritmo, según esa variación, pueden ser:
Variables: es un objeto en el que su contenido puede variar durante el proceso de ejecución 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: acumulación 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.
12345
Inicio A<-5 B<-3 C<-A+BFin
Si mostráramos 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 también 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 numéricas, puede contener un numero real o entero.
Algo muy recomendable a la hora de programar es llamar a las variables por un nombre
significativo sobre lo que contenga para mejorar su legibilidad. Por ejemplo, si queremos
almacenar un día 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, también 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 expresión (una suma, varias operaciones, etc.) que utiliza.
Estasvariables son: Contadores: se utilizan para contar cualquier suceso que se necesite dentro de un
programa. Se realiza en dos operaciones:o Inicialización: 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 expresión 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 cálculos con una misma operación. Se realiza en dos operaciones:o Inicialización: debe ser inicializado con un valor neutro según el tipo de operación que
realicemos, si es una suma se inicializará en 0 y si es un producto se inicializará en 1.o Acumulación: realiza la acumulación con estas expresiones según el tipo
de operación:
acumulador <- acumulador+variable o acumulador <- acumulador*variable Interruptores: se utilizan para transmitir información 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:o Numérico: puede ser un 0 o 1.o Lógico: puede ser true o false.
OPERADORES
Hola a todos, hoy os explicare los operadores que podemos utilizar para realizar operaciones
con variables de todo tipo.
Los tipos de operadores son:
Aritméticos: son análogas a las fórmulas matemáticas, se usan para variables numéricas. 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 truncáramos el resultado de una división. Por ejemplo, 5 DIV 2 seria 2 no 2’5.
MOD es el resto del DIV. Por ejemplo, 5 MOD 2 es igual a 1.
Un consejo para recordar la posición es simplemente imaginar una división y que podemos
coger el cociente o el resto, según el operador usado.
NOTA: Si usas PSeInt, DIV no lo reconoce, si quieres una división 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.
Lógicas: solo pueden dar dos valores true o false. Pueden ser:o Relacionales: pueden comparar dos valores, mediante un símbolo. 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:
12345678910
Inicio A<-5 B<-3 C<-A>B D<-A<B E<-A>=B F<-A<=B G<-A=B H<-A<>BFin
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 Lógicos: combina condiciones, según el tipo de operador se deberá cumplir una u
otra función. 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:
1234567
Inicio A<-5 B<-3 C<-6 D<-1 E<-C>A AND D<B F<-C>A OR D>B G<-NOT FFin
89E 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). También podemos poner
una condición delante de NOT si queremos invertir su resultado.
NOTA: Si usas PSeInt, si quieres usar AND deberás escribir Y en su lugar, si quieres
usarOR deberás escribir O y si quieres usar NOT deberás escribir NO (condición o variable).
Espero que os sea de ayuda.
Asignacion en PseudocodigoHola a todos, hoy os explicare una parte importante la asignación donde veremos como se
comportan las variables cuando asignamos valores en ellas.
La asignación es la operación 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 pseudocódigo solo debemos saber
que no podemos mezclar distintos tipos de valores.
Por ejemplo, si tenemos una variable con un valor numérico y queremos volver asignarle un valor de otro tipo, una cadena de texto por ejemplo, nos daría un error porque
no coincidirían los tipos. En cambio si ese valor fuera
un valor numérico no daría ningún 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:12345
Inicio A<-5+1 A<-2-1 A<-A+7Fin
Vayamos por pasos, la variable A al principio vale 6, después, A valdrá 1 y por ultimo valdrá 8.
Como vemos al final prevalece el ultimo resultado, el valor 6 y 1 desaparecerían, siempre y cuando se almacene en la misma variable.
Por último, debemos saber que en una operación de asignación debemos empezar a leer en
la parte de la derecha, que puede contener un valor o una expresión (una suma, varias
operaciones, etc.). Es decir, que primero tenemos que ver el valor o expresión y ese valor final
sera el se asigne a la variable.
Variable<-valor o expresiónDebéis saber, que cuando tenemos una expresión, como por ejemplo, 5+10/2, en
pseudocódigo no se sigue la prioridad de la operación es decir, que se suma 5+10 y se divide
entre 2. Si queremos que una operación tenga mas prioridad debemos ponerla entre paréntesis, por ejemplo, 5+(10/2), realizara la operación del paréntesis antes de realizar
la suma.
Para probar lo que hemos aprendido, os invito a realizar este ejercicio, pensarlo y mirar
la solución para ver si coincide.
123456789
Inicio A <- 5 B <- 7 C <- 2 A <- A + B + C B <- C / 2 A <- A / B + A ^ C C <- A+(B-C)-BFin
a) ¿Qué valor contiene A después de la quinta linea?
b) ¿Qué valor contiene B después de la sexta linea?
c) ¿Qué valor contiene A después de la septima linea?
d) ¿Qué valor contiene C después de la octava linea?
Spoiler SeleccionarEsconder
a) A tendrá un valor de 14, ya que es el resultado de 5+7+2. Después de esta operación, el 5 que tenia desaparece.b) B tendrá un valor de 1, ya el resultado de 2/2 es 1. Después de esta operación, 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 paréntesis que el resultado es -1 y la expresión se queda de esta forma: 210-1-1
Operacion de entrada y salida en PseudocodigoHola a todos, hoy os explicare como utilizar las operaciones de entrada y salida
enpseudocódigo, para poder mostrar o introducir información.
Para pedir al usuario que introduzca un valor por teclado, usaremos
la operación leer. Después de esta operación debe ir una variable donde se guarde lo que el
usuario introduzca. Por ejemplo:
Leer ASi usa PSeInt, si usas la operación leer y ejecutas, te dejaras que escribas un valor.
Para mostrar por pantalla un valor, usaremos la operación escribir. Después de
esta operación si ponemos una variable, nos mostrara el valor que contenga la variable.
Escribir A
También se puede mostrar mensajes, simplemente después de la operación escribir escribimos
el texto que queremos mostrar entre comillas, esto ayuda mucho al usuario para saber que tipo
dato debe introducir. Por ejemplo
1234
Inicio Escribir "Introduce un día del mes" Leer diaFin
Por último, también 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:
12345
Inicio Escribir "Introduce un dia del mes" Leer dia Escribir "Has introducido el día " 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 cuestión de estética.
Espero que os sea de ayuda.
Funciones internas en PseudocodigoHola a todos, hoy os explicare las funciones internas que podemos ejecutar enpseudocódigo,
para realizar ciertas operaciones.
Para utilizar estas funciones, debemos de escribir la función y entre paréntesis, deberemos
introducir los parámetros 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 función interna de la raíz 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) Raíz 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
MAYUSCULAS(S) Retorna una copia de la cadena S con todos sus caracteres en mayúsculas
MINUSCULAS(S) Retorna una copia de la cadena S con todos sus caracteres en minúsculas
SUBCADENA(S,X,Y) Retorna una nueva cadena que consiste en la parte de la cadena S que va desde la posición X hasta la posición Y. Empieza desde 0 y no desde 1.
CONCATENAR(S1,S2) Retorna una nueva cadena resulta de unir las cadenas S1 y S2.
Recuerda que debes almacenar el resultado en una variable. También puedes usarlo en
una condición.
Espero que os sea de ayuda.
Instrucción de control condicional en PseudocódigoHola a todos, hoy os explicare las instrucciones de control condicionales, que son,
como utilizarlas y algunos ejemplos.
Una instrucción de control condicional es un bloque de código que se ejecuta si cumple
una condición, que nosotros pongamos. Esta condición es una expresión lógica que debe dar
como resultado true o false, para ello es habitual usar los operadores relacionales y lógicos.
Las dos mas utilizadas son:
Condicional simple: si la condición es verdadera se ejecuta el bloque de código que contenga y ya esta. Su sintaxis es:
SI (condición) Entonces
Instrucciones
Fin-Si
Por ejemplo:
1
2
3
4
5
6
Inicio
Leer numero1
Si (numero1>0) Entonces
Escribir numero1 " es mayor que 0"
FinSi
Fin
Condicional doble: si la condición es verdadera se ejecuta el bloque de código que contenga y sino se cumple pues ejecuta otro bloque de codigo. Ejecuta uno o otro. Su sintaxis es:
SI (condición) Entonces
Instrucciones
Sino
Instrucciones
Fin-Si
Por ejemplo:
1
2
3
4
5
6
7
Inicio
Leer numero1
Si (numero1>0) Entonces
Escribir numero1 " es mayor que 0"
Sino
Escribir numero1 " es menor que 0"
FinSi
Fin
8
Algo que se suele hacer es anidar estructuras Si, se puede usar para especificar aun mas
una condición Debemos recordar que debemos cerrar las estructuras Si que abramos, es
recomendable tabular las instrucciones para mayor legibilidad. Veamos un ejemplo:1
2
3
4
5
6
7
8
9
10
11
Inicio
Si (condicion) Entonces
Si (condicion) Entonces
Instrucciones
Sino
Intrucciones
FinSi
Sino
Instrucciones
FinSi
Fin
También existe otra instrucción de control condicional, llamado segun sea, que según un valor
(de una variable, una constante, etc.) o expresión hace una operación u otra. No puede ser
una condición. Su sintaxis es:
Segun (valor o expresion) hacer
valor1:
Instrucciones
valor2:
Instrucciones
….
FinSegun
Por ejemplo:
1
2
3
4
5
Inicio
Leer mes
Segun mes Hacer
1:
escribir "Enero"
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2:
escribir "Febrero"
3:
escribir "Marzo"
4:
escribir "Abril"
5:
escribir "Mayo"
6:
escribir "Junio"
7:
escribir "Julio"
8:
escribir "Agosto"
9:
escribir "Septiembre"
10:
escribir "Octubre"
11:
escribir "Noviembre"
12:
escribir "Diciembre"
FinSegun
Fin
Espero que os sea de ayuda.
Instrucciones repetitivas o bucles en pseudocodigoHola 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 número determinado de veces. El número
de veces se indica mediante una condición, si la condición es verdadera ejecuta el bloque de código que contenga, cuando la condición sea falsa saldrá del bucle.Las dos estructuras que se usan son:
Mientras: Se evalúa la condición antes de iniciar el bucle, y se repiten sucesivamente las instrucciones mientras siga siendo cierta. Es importante que la variable que participe en la condición se modifique dentro del bucle, ya que sino sera un bucle infinito del que no saldrá. Susintaxis es:
Mientras (condición)Instrucciones
FinMientrasVeamos un ejemplo:
1234567
Inicio contador<-0 Mientras (contador<3) escribir contador contador<-contador+1 FinMientrasFin
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 condición 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, incrementándose en un valor. Se introduce en el bucle cuando la Vc es menor que la Vf. Para que lo recuerdes mejor, piensa en esta expresión, Vc<=Vf, incluyendo el valor final. Si el incremento es negativo, la condición cambia así, Vc>=Vf . Su sintaxis es:
Desde Vc<-Vi hasta Vf In constante
Instrucciones
FinDesdeSi usas PSeInt, tendrás que usar esta sintaxis:
Para Vc<-Vi hasta Vf con paso constante HacerInstrucciones
FinParaVeamos un ejemplo, usando el desde-hasta, si lo queremos usar en PseInt solo hay que
cambiar algunas palabras:
1234
Inicio Desde contador<-1 Hasta 5 Con Paso 1 Hacer escribir contador FinDesdeFin
5La 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 la estructura desde, la
inicialización y el incremento se hace en una linea.Entonces, ¿cual es mejor de los dos? La respuesta es según el caso, la estructura desde es mejor usarla cuando sabemos el rango, es decir, el inicio y fin. Por ejemplo, la suma
de los números 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 números que introduzca el usuario, sabemos cuando empieza pero no
cuando acaba.Otra diferencia a tener en cuenta, es la condición en la estructura mientras para que
entre la condición debe ser verdadera para que entre en el bucle y falso para salir y en
la estructura desdesiempre va a incluir <= 0 >=, recordar que para que se salga se debe
cumplir Vc<=Vf (siendo el incremento positivo).
Espero que os sea de ayuda.
Seguimiento en pseudocodigoHola a todos, hoy os explicare como realizar una técnica llamada seguimiento en
pseudocódigo.
El seguimiento es una técnica 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.
123456789
Inicio contador<-1 suma<-0 Mientras contador<=2 Hacer suma<-suma+contador contador<-contador+1 FinMientras Escribir sumaFin
Esto es lo que iremos haciendo durante el seguimiento:
Anotamos todas las variables que hay, en este caso, solo están las variables contador y suma, contador esta inicializado en 1 y suma en 0.
Tenemos una estructura mientas con una condición 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 condición se sigue
cumpliendo, 2<=2. Se ejecuta las siguientes instrucciones como antes, pero con valores diferentes. La
variablesuma valdrá 3 y contador 3.
Ahora en el mientras no se cumple la condición, ya que 3<=2 no es verdadero. Seguimos las instrucciones después 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 números para ver
que cumple lo que necesitamos.
En PSeInt, debemos pinchar en “ejecución paso a paso”, después en “comenzar”, aparecerá la ventana de ejecución e ira ejecutando linea
a linea.
Si queremos ver el valor de una variable en un momento concreto, pausamos la ejecución y pinchamos en “evaluar” y ponemos el nombre de la variable que queremos ver.
También podemos ejecutarlo linea a linea y modificar la velocidad de ejecución.
Espero que os sea de ayuda.
Declaracion de variables en pseudocodigoHola a todos, hoy os explicare la declaración de variables en pseudocodigo, como se debe
hacer correctamente.
Declarar variables significa indicar el tipo de dato que almacenara
las variables que participan en el programa.
Hasta ahora, no hemos declarado las variables, a partir de ahora acostumbraos a hacerlo si
lo hacéis en papel, es bueno acostumbrarse para que cuando empecemos con otros
lenguajes no nos cueste declarar las variables. 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 (numérico, lógico y cadena), antes del inicio del programa, separados por comas. Si veis
otra forma de declarar variables, también es valida. Es normal si al principio, no sabemos
todas las variables que pueden aparecer, con el tiempo lo identificaremos de una forma mas
rápida 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: numérico , suma: númerico
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
2
3
4
5
6
7
8
9
10
Var contador, suma: númerico
Inicio
contador<-1;
suma<-0;
Mientras contador<=5 Hacer
suma<-suma+contador;
contador<-contador+1;
FinMientras
Escribir suma
Fin
Espero que os sea de ayuda.
Análisis de un problema a resolver en pseudocódigoHola a todos, hoy os explicare como debemos analizar un problema de pseudocódigo.
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 análisis lo hagáis en papel, para que os sea mas sencilla
y tengáis 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 algún tipo de repetición dentro del algoritmo? ¿Hay alguna estructura condicional? ¿Que condición seria la mas adecuada, si tenemos un bucle o una estructura Si? ¿Que variables necesito en el algoritmo? ¿Como debería 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 comisión 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 algún tipo de repetición dentro del algoritmo? En este caso, se podría hacer con o sin repetición pero siempre que se pueda es bueno hacer un bucle. Como en este caso sabemos el rango, podemos usar una estructura desde-hasta, aunque también se puede hacer con un mientas. Esto ya es decisión nuestra.
¿Hay alguna estructura condicional? En este ejercicio no tenemos ninguna condición ya que nos pide que cumpla alguna condición concreta.
¿Que condición seria la mas adecuada, si tenemos un bucle o una estructura Si? Como obtenemos del enunciado, nos pide 3 ventas, así que una buena condición 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 comisión (estas dos ultimas pueden ser constantes).
¿Como debería iniciar las variables? Las constantes se deberán 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 pseudocódigo seria asi:
Spoiler SeleccionarMostrar
2 ) Escriba un algoritmo que determine cuales son los múltiplos 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 algún tipo de repetición dentro del algoritmo? Si tenemos una repetición, tendremos que ver si cada numero es o no múltiplo 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 números que sean múltiplos de 5.
¿Que condición seria la mas adecuada, si tenemos un bucle o una estructura Si? En el caso del bucle, la condición para salir deberá ser cuando el numero sea mayor que el limite. En el caso de la estructura condicional, la condición para que imprima el numero es que sea múltiplo de 5.
¿Que variables necesito en el algoritmo? Simplemente necesitamos almacenar el limite y contar los números entre 1 y el limite.
¿Como debería iniciar las variables? El variable contador se inicializara en uno. ¿Que resultado debo imprimir en pantalla? (Si es que hace falta) Solo
aquellos números que sean múltiplos de 5.
En pseudocódigo seria así:
Spoiler SeleccionarEsconder
12345678
Inicio Leer N Desde num<-1 Hasta N In 1 si (num MOD 5=0) Entonces Escribir num FinSi FinDesdeFin
EJERCISIOS
1) Dadas dos variables numéricas A y B, que el usuario debe teclear, se pide realizar un algoritmo que intercambie los valores de ambas variables y muestre cuanto valen al final las dos variables (recuerda la asignación).
Spoiler SeleccionarEsconder
Papel:1234567891011
Var A, B, C: numericaInicio Escribir "Introduce el valor de A" Leer A Escribir "Introduce el valor de B" Leer B C<-A A<-B B<-C Escribir "A vale " A " y B vale " BFin
PSeInt:12345678910
Proceso ejercicio_1 Escribir "Introduce el valor de A" Leer A Escribir "Introduce el valor de B" Leer B C<-A A<-B B<-C Escribir "A vale " A " y B vale " BFinProceso
2) Algoritmo que lea dos números, calculando y escribiendo el valor de su suma, resta, producto y división.
Spoiler SeleccionarEsconder
Papel:123456789101112131415
Var numero1, numero2, resultado: numericaInicio Escribir "Introduce el primer numero" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 resultado<-numero1+numero2 Escribir resultado resultado<-numero1-numero2 Escribir resultado resultado<-numero1*numero2 Escribir resultado resultado<-numero1/numero2 Escribir resultadoFin
PSeInt:1234567
Proceso ejercicio_2 Escribir "Introduce el primer numero" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 //inicializamos la variable resultado a 0 (recomendable) resultado<-0 //sumamos los numeros y escribimos su resultado
891011121314151617181920
resultado<-numero1+numero2 Escribir resultado //restamos los numeros y escribimos su resultado resultado<-numero1-numero2 Escribir resultado //multiplicamos los numeros y escribimos su resultado resultado<-numero1*numero2 Escribir resultado //dividimos los numeros y escribimos su resultado resultado<-numero1/numero2 Escribir resultadoFinProceso
3) Algoritmo que lea dos números y nos diga cual de ellos es mayor o bien si son iguales (recuerda usar la estructura condicional SI)
Spoiler SeleccionarEsconder
Papel:12345678910111213141516
Var numero1, numero2: numericaInicio Escribir "Introduce el primer numero" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 Si (numero1>=numero2) Entonces Si (numero1=numero2) Entonces escribir "los numeros " numero1 " " numero2 " son iguales" Sino Escribir numero1 " es el mayor de los dos" FinSi Sino Escribir numero2 " es el mayor de los dos" FinSiFin
PSeInt:12345678910111213141516
Proceso ejercicio_3 Escribir "Introduce el primer numero" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 //comparamos los dos numeros, //si el primero es mayor o igual que el segundo entra Si (numero1>=numero2) Entonces //Si el numero1 y numero2 son iguales entra y escribe que son iguales //Sino lo son escribe que el numero1 es el mayor Si (numero1=numero2) Entonces escribir "los numeros " numero1 " " numero2 " son iguales" Sino Escribir numero1 " es el mayor de los dos" FinSi //Si el primer Si es falso, escribe que el numero2 es mayor Sino
17181920
Escribir numero2 " es el mayor de los dos" FinSiFinProceso
4) Algoritmo que lea tres números distintos y nos diga cual de ellos es el mayor (recuerda usar la estructura condicional Si y los operadores lógicos).
Spoiler SeleccionarEsconder
NOTA: De esta forma que esta hecha, aunque dos de los números sean iguales, siempre dirá el mayor.Papel:123456789101112131415161718
Var numero1, numero2, numero3: numericaInicio Escribir "Introduce el primer numero" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 Escribir "Introduce el tercer numero" Leer numero3 Si (numero1>numero2 AND numero1>numero3) Entonces Escribir "el numero " numero1 " es el mayor" Sino Si (numero2>numero3) Entonces Escribir "El numero " numero2 " es el mayor" Sino Escribir "El numero " numero3 " es el mayor" FinSi FinSiFin
PSeInt:123456789101112131415161718192021
Proceso ejercicio_4 Escribir "Introduce el primer numero" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 Escribir "Introduce el tercer numero" Leer numero3 //comparamos el numero1 con el numero2 y numero3 //Si las dos condiciones son verdaderas el numero1 es el mayor Si (numero1>numero2 Y numero1>numero3) Entonces Escribir "el numero " numero1 " es el mayor" //si el numero1 no es el mayor, //comparamos el numero2 con el numero3 Sino Si (numero2>numero3) Entonces Escribir "El numero " numero2 " es el mayor" Sino Escribir "El numero " numero3 " es el mayor" FinSi FinSiFinProceso
5) Diseñar un algoritmo que pida por teclado tres números; si el primero es negativo, debe imprimir el producto de los tres y si no lo es, imprimirá la suma.
Spoiler SeleccionarEsconder
Papel:123456789101112131415
Var numero1, numero2, numero3, resultado: numericaInicio Escribir "Introduce el primer numero" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 Escribir "Introduce el tercer numero" Leer numero3 Si (numero1<0) Entonces resultado<-numero1*numero2*numero3 Sino resultado<-numero1+numero2+numero3 FinSi Escribir resultadoFin
PSeInt:12345678910111213141516
Proceso ejercicio_5 Escribir "Introduce el primer numero" Leer numero1 Escribir "Introduce el segundo numero" Leer numero2 Escribir "Introduce el tercer numero" Leer numero3 //si el numero1 es menor que 0, //multiplicara los numero y sino los sumara Si (numero1<0) Entonces resultado<-numero1*numero2*numero3 Sino resultado<-numero1+numero2+numero3 FinSi Escribir resultadoFinProceso
6) Realizar un algoritmo que lea un número por teclado. En caso de que ese número sea 0 o menor que 0, se saldrá del programa imprimiendo antes un mensaje de error. Si es mayor que 0, se deberá calcular su cuadrado y la raiz cuadrada del mismo, visualizando el numero que ha tecleado el usuario y su resultado (“Del numero X, su potencia es X y su raiz X” ). Para calcular la raiz cuadrada se puede usar la función interna RAIZ(X) o con una potencia de 0,5.
Spoiler SeleccionarEsconder
Papel:12345
Var numero, potencia, raiz: numericaInicio Escribir "Introduce un numero" Leer numero Si (numero>0) Entonces potencia<-numero^2
678910111213
raiz_cuadrada<-numero^0,5 Escribir "Su potencia es " potencia " Escribir "Su raiz es " raiz_cuadrada Sino Escribir "Error, introduce un numero mayor que 0" FinSiFin
PSeInt:1234567891011121314
Proceso ejercicio_6 Escribir "Introduce un numero" Leer numero //si el numero es mayor que 0, calcula la potencia y la raiz //sino muestra un mensaje de error y sale del programa Si (numero>0) Entonces potencia<-numero^2 raiz_cuadrada<-RAIZ(numero) Escribir "Su potencia es " potencia Escribir "Su raiz es " raiz_cuadrada Sino Escribir "Error, introduce un numero mayor que 0" FinSiFinProceso
7) Un colegio desea saber qué porcentaje de niños y qué porcentaje de niñas hay en el curso actual. Diseñar un algoritmo para este propósito (recuerda que para calcular el porcentaje puedes hacer una regla de 3).
Spoiler SeleccionarEsconder
Papel:1234567891011
Var numero_niños, numero_niñas, resultado: numericaInicio Escribir "Introduce el numero de niños" Leer numero_niños Escribir "Introduce el numero de niñas" Leer numero_niñas porcentaje_niños<-numero_niños*100/(numero_niños+numero_niñas) porcentaje_niñas<-100-porcentaje_niños Escribir "Hay un " porcentaje_niños " % de niños Escribir "Hay un " porcentaje_niñas " % de niñasFin
PSeInt:12345678910
Proceso Ejercicio_7 Escribir "Introduce el numero de niños" Leer numero_niños Escribir "Introduce el numero de niñas" Leer numero_niñas //calculamos el porcentaje porcentaje_niños<-numero_niños*100/(numero_niños+numero_niñas) porcentaje_niñas<-100-porcentaje_niños Escribir "Hay un " porcentaje_niños " % de niños Escribir "Hay un " porcentaje_niñas " % de niñas"FinProceso
118) Una tienda ofrece un descuento del 15% sobre el total de la compra durante el mes de octubre. Dado un mes y un importe, calcular cuál es la cantidad que se debe cobrar al cliente.
Spoiler SeleccionarEsconder
Papel:1234567891011121314
Var mes: cadena importe, total:numericoInicio Escribir "escribe el importe de la compra" Leer importe Escribir "Introduce el mes" Leer mes Si (mes="octubre") Entonces total<-importe*0.85 Sino total<-importe FinSi Escribir totalFin
PSeInt:12345678910111213
Proceso ejercicio_8 Escribir "escribe el importe de la compra" Leer importe Escribir "Introduce el mes" Leer mes //Si el mes es octubre, se aplicara el descuento Si (mes="octubre") Entonces total<-importe*0.85 Sino total<-importe FinSi Escribir totalFinProceso
9) Realizar un algoritmo que dado un número entero, visualice en pantalla si es par o impar. En el caso de ser 0, debe visualizar “el número no es par ni impar” (para que un numero sea par, se debe dividir entre dos y que su resto sea 0)
Spoiler SeleccionarEsconder
Papel:12345678910
Var numero: numericaInicio Escribir "Introduce un numero" Leer numero Si (numero=0) Entonces Escribir "El " numero " no es par ni impar" Sino Si (numero MOD 2=0) Entonces Escribir "El " numero " es par" Sino Escribir "El " numero " no es par" FinSi
11121314
FinSiFin
PSeInt:1234567891011121314
Proceso ejercicio_9 Escribir "Introduce un numero" Leer numero Si (numero=0) Entonces Escribir "El " numero " no es par ni impar" Sino //comprobamos si el numero es par Si (numero MOD 2=0) Entonces Escribir "El " numero " es par" Sino Escribir "El " numero " no es par" FinSi FinSiFinProceso
10) Modificar el algoritmo anterior, de forma que si se teclea un cero, se vuelva a pedir el número por teclado (así hasta que se teclee un número mayor que cero) (recuerda la estructura mientras).
Spoiler SeleccionarEsconder
Papel:1234567891011121314
Var numero: numericaInicio Escribir "Introduce un numero" Leer numero Mientras (numero<=0) hacer Escribir "escribe un numero mayor que 0" Leer numero FinMientras Si (numero MOD 2=0) Entonces Escribir "El " numero " es par" Sino Escribir "El " numero " no es par" FinSiFin
PSeInt:1234567891011
Proceso ejercicio_10 Escribir "Introduce un numero" Leer numero //Hasta que no se introduzca un numero mayor que 0 no saldra del bucle Mientras (numero<=0) hacer Escribir "escribe un numero mayor que 0" Leer numero FinMientras Si (numero MOD 2=0) Entonces Escribir "El " numero " es par" Sino Escribir "El " numero " no es par"
121314
FinSiFinProceso
11) Algoritmo que nos diga si una persona puede acceder a cursar un ciclo formativo de grado superior o no. Para acceder a un grado superior, si se tiene un titulo de bachiller, en caso de no tenerlo, se puede acceder si hemos superado una prueba de acceso.
Spoiler SeleccionarEsconder
Papel:12345678910111213141516
Var bachiller, prueba_acceso: cadenaInicio Escribir "¿Tienes el titulo de bachiller?" Leer bachiller si (bachiller="si") Entonces Escribir "Puedes acceder al grado superior" Sino Escribir "¿Tienes la prueba de acceso superada?" Leer prueba_acceso si (prueba_acceso="si") Entonces Escribir "Puedes acceder al grado superior" Sino Escribir "No puedes acceder a un grado superior" FinSi FinSiFin
PSeInt:123456789101112131415
Proceso ejercicio_11 Escribir "¿Tienes el titulo de bachiller?" Leer bachiller si (bachiller="si") Entonces Escribir "Puedes acceder al grado superior" Sino Escribir "¿Tienes la prueba de acceso superada?" Leer prueba_acceso si (prueba_acceso="si") Entonces Escribir "Puedes acceder al grado superior" Sino Escribir "No puedes acceder a un grado superior" FinSi FinSiFinProceso
12) Desarrollar un algoritmo que nos calcule el cuadrado de los 9 primeros números naturales (recuerda la estructura desde-hasta)
Spoiler SeleccionarEsconder
Papel:12345
Var num, res: numericaInicio Desde num<-1 Hasta 9 In 1 res<-num^2 Escribir num " " res FinDesde
67
Fin
PSeInt:123456
Proceso ejercicio_12 Para num<-1 Hasta 9 Con Paso 1 res<-num^2 Escribir num " " res FinParaFinProceso
NOTA: este ejercicio también se puede hacer con la estructura Mientras, pero lo hemos hecho con la estructura Desde-Hasta porque sabemos el rango.
13) Se pide representar el algoritmo que nos calcule la suma de los N primeros números naturales. Nse leerá por teclado (no tenemos porque llamar a la variable N, podemos llamarla como queramos).
Spoiler SeleccionarEsconder
Papel:12345678910
Var N, contador, suma: numericaInicio Leer N suma<-0 Desde contador<-1 Hasta 5 In 1 suma<-N+suma N<-N+1 FinDesde Escribir sumaFin
PSeInt:123456789
Proceso ejercicio_13 Leer N suma<-0 Para contador<-1 Hasta 5 Con Paso 1 suma<-N+suma N<-N+1 FinPara Escribir sumaFinProceso
14) Se pide representar el algoritmo que nos calcule la suma de los N primeros números pares. Es decir, si insertamos un 5, nos haga la suma de 6+8+10+12+14.
Spoiler SeleccionarEsconder
Papel:123456789
Var N, contador, suma: numericaInicio Leer N contador<-0 Mientras (contador<5) Hacer si (N MOD 2=0) Entonces suma<-N+suma contador<-contador+1 FinSi N<-N+1 FinMientras
10111213
Escribir sumaFin
PSeInt:123456789101112
Proceso ejercicio_14 Leer N contador<-0 Mientras (contador<5) Hacer si (N MOD 2=0) Entonces suma<-N+suma contador<-contador+1 FinSi N<-N+1 FinMientras Escribir sumaFinProceso
15) Dada una secuencia de números leídos por teclado, que acabe con un –1, por ejemplo: 5,3,0,2,4,4,0,0,2,3,6,0,……,-1; Realizar el algoritmo que calcule la media aritmética. Suponemos que el usuario no insertara numero negativos.
Spoiler SeleccionarMostrar
16) Teniendo en cuenta que la clave es “eureka”, escribir un algoritmo que nos pida una clave. Solo tenemos 3 intentos para acertar, si fallamos los 3 intentos nos mostrara un mensaje indicándonos que hemos agotado esos 3 intentos. (Recomiendo utilizar un interruptor). Si acertamos la clave, saldremos directamente del programa.
Spoiler SeleccionarEsconder
Papel:123456789101112131415161718
Var clave: cadena acierto: booleano contador: numericaInicio contador<-0 acierto<-Falso Mientras (contador<3 AND acierto=falso) Hacer Leer clave si (clave="eureka") Entonces Escribir "la clave es correcta" acierto<-Verdadero FinSi contador<-contador+1 FinMientras si (contador=3 AND acierto=falso) Entonces Escribir "Ya no tienes mas intentos" FinSiFin
PSeInt:123
Proceso ejercicio_16 contador<-0 //interruptor
456789101112131415161718192021222324
acierto<-Falso //usamos un interruptor, cuando acertemos, //cambiara y la condicion sera falsa Mientras (contador<3 Y acierto=falso) Hacer //ponemos aqui leer porque con las variables //iniciales entra en el bucle Escribir "introduce la clave" Leer clave si (clave="eureka") Entonces Escribir "la clave es correcta" //el interruptor cambia cuando acertamos acierto<-Verdadero FinSi contador<-contador+1 FinMientras //este mensaje solo aparecera si hemos agotado //todos los intentos y no hemos acertado si (contador=3 Y acierto=falso) Entonces Escribir "Ya no tienes mas intentos" FinSiFinProceso
17) Algoritmo que lea números enteros hasta teclear 0, y nos muestre el máximo, el mínimo y la media de todos ellos. Piensa como debemos inicializar las variables.
Spoiler SeleccionarEsconder
Papel:12345678910111213141516171819202122
Var maximo, minimo, num, suma, media, contador: numericaInicio 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 " mediaFin
PSeInt:12
Proceso ejercicio_17 Leer num
345678910111213141516171819202122232425
//maximo y el minimo se inician con el numero que //insertemos para que lo podamos modificar //durante el programa minimo<-num maximo<-num suma<-0 Mientras (num<>0) Hacer si (num>maximo) Entonces maximo<-num FinSi si (num<minimo) Entonces minimo<-num FinSi suma<-suma+num contador<-contador+1 leer num FinMientras media<-suma/(contador) //escrbimos los resultados Escribir "El maximo es " maximo Escribir "El minimo es " minimo Escribir "La media es " mediaFinProceso
18) Algoritmo que visualice la cuenta de los números que son múltiplos de 2 o de 3 que hay entre 1 y 100.
Spoiler SeleccionarEsconder
Papel:123456789
Var num: numericaInicio 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 FinDesdeFin
PSeInt:12345678
Proceso ejercicio_18 Para num<-1 Hasta 100 Con Paso 1 //asi indicamos si un numero es multiplo de 3 o de 2 si (num MOD 2=0 o num MOD 3=0) Entonces Escribir num FinSi FinParaFinProceso
19) Leer tres números que denoten una fecha (día, mes, año). Comprobar que es una fecha válida. Si no es válida escribir un mensaje de error. Si es válida escribir la fecha cambiando el número del mes por su nombre. Ej. si se introduce 1 2 2006, se deberá imprimir “1 de febrero de 2006”. El año debe ser mayor que 0. (Recuerda la estructura segun sea).
NOTA: en PSeInt, si queremos escribir sin que haya saltos de linea, al final de la operacion escribir escribimos sin saltar.
Spoiler SeleccionarEsconder
Papel:123456789101112131415161718192021222324252627282930313233343536373839404142
Var dia, mes, año: numericaInicio Escribir "Introduce el dia" Leer dia Escribir "Introduce el mes" Leer mes Escribir "Introduce el año" Leer año //comprobamos que la fecha es correcto si ((dia<=31 y dia>=0) AND (mes<=12 y mes>=0) AND año>0) Entonces Escribir dia sin saltar //usamos el segun sea para escribir el mes Segun mes Hacer 1: escribir " de enero de" sin saltar 2: escribir " de febrero de " sin saltar 3: escribir " de marzo de " sin saltar 4: escribir " de abril de " sin saltar 5: escribir " de mayo de " sin saltar 6: escribir " de junio de " sin saltar 7: escribir " de julio de " sin saltar 8: escribir " de agosto de " sin saltar 9: escribir " de septiembre de " sin saltar 10: escribir " de octubre de " sin saltar 11: escribir " de noviembre de " sin saltar 12: escribir " de diciembre de " sin saltar FinSegun Escribir año Sino Escribir "error" FinSiFin
PSeInt:123
Proceso ejercicio_19 Escribir "Introduce el dia" Leer dia
456789101112131415161718192021222324252627282930313233343536373839404142
Escribir "Introduce el mes" Leer mes Escribir "Introduce el año" Leer año //comprobamos que la fecha es correcto si ((dia<=31 y dia>=0) y (mes<=12 y mes>=0) y año>0) Entonces Escribir dia sin saltar //usamos el segun sea para escribir el mes Segun mes Hacer 1: escribir " de enero de" sin saltar 2: escribir " de febrero de " sin saltar 3: escribir " de marzo de " sin saltar 4: escribir " de abril de " sin saltar 5: escribir " de mayo de " sin saltar 6: escribir " de junio de " sin saltar 7: escribir " de julio de " sin saltar 8: escribir " de agosto de " sin saltar 9: escribir " de septiembre de " sin saltar 10: escribir " de octubre de " sin saltar 11: escribir " de noviembre de " sin saltar 12: escribir " de diciembre de " sin saltar FinSegun Escribir año Sino Escribir "error" FinSiFinProceso
20) Calcular las calificaciones de un grupo de alumnos. La nota final de cada alumno se calcula según el siguiente criterio: la parte práctica vale el 10%; la parte de problemas vale el 50% y la parte teórica el 40%. El algoritmo leerá el nombre del alumno, las tres notas, escribirá el resultado y volverá a pedir los datos del siguiente alumno hasta que el nombre sea una cadena vacía. Las notas deben estar entre 0 y 10, si no lo están, no imprimirá las notas, mostrara un mensaje de error y volverá a pedir otro alumno.
Spoiler SeleccionarEsconder
Papel:12
Var alumno: cadena nota_teoria, nota_problemas, nota_teoria, nota_final: numericaInicio
3456789101112131415161718192021222324252627282930313233
Escribir "Introduce el nombre del alumno" Leer alumno Mientras alumno<>"" Hacer Escribir "Introduce la nota practica" leer nota_practica Escribir "Introduce la nota de problemas" leer nota_problemas Escribir "Introduce la nota de teoria" Leer nota_teoria //NOTA: este si esta agrupado por falta de espacio si (nota_practica<=10 AND nota_practica>=0) AND (nota_problemas<=10 AND nota_problemas>=0) AND (nota_teoria<=10 AND nota_teoria>=0) Entonces Escribir "El alumno " alumno Escribir "La nota practica es " nota_practica Escribir "La nota de problemas es " nota_problemas Escribir "La nota de teoria es " nota_teoria nota_practica<-nota_practica*0.1 nota_problemas<-nota_problemas*0.5 nota_teoria<-nota_teoria*0.4 nota_final<-nota_practica+nota_problemas+nota_teoria Escribir "La nota final es " nota_final Sino Escribir "Has escrito una nota incorrecta, vuelve a intentarlo" FinSi
Escribir "Introduce el nombre de otro alumno" Leer alumno FinMientrasFin
PSeInt:123456789101112131415161718
Proceso ejercicio_20 Escribir "Introduce el nombre del alumno" Leer alumno Mientras alumno<>"" Hacer //si introducimos un nombre de alumno //correcto, entrara en el bucle Escribir "Introduce la nota practica" leer nota_practica Escribir "Introduce la nota de problemas" leer nota_problemas Escribir "Introduce la nota de teoria" Leer nota_teoria //comprobamos si las notas tienen un rango correcto //NOTA: este si esta agrupado por falta de espacio si (nota_practica<=10 y nota_practica>=0) y (nota_problemas<=10 y nota_problemas>=0) y (nota_teoria<=10 y nota_teoria>=0) Entonces Escribir "El alumno " alumno Escribir "La nota practica es " nota_practica Escribir "La nota de problemas es " nota_problemas Escribir "La nota de teoria es " nota_teoria nota_practica<-nota_practica*0.1
192021222324252627282930313233
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 FinMientrasFinProceso
21) Algoritmo que lea un número entero (lado) y a partir de él cree un cuadrado de asteriscos con ese tamaño. Los asteriscos sólo se verán en el borde del cuadrado, no en el interior.Ejemplo, para lado = 4 escribiría:
***** * * * ****
Spoiler SeleccionarEsconder
NOTA: este tipo de ejercicios cambian mucho en papel y en PSeInt, en papel es mas sencillo que en PSeInt.Papel:12345678910111213141516171819
Var lado, asterisco, espacio: numericaInicio Leer lado Desde asterisco<-1 Hasta lado In 1 Escribir "*" FinDesde escribir " " desde asterisco<-1 Hasta lado-2 In 1 Escribir "*" Desde espacio<-1 Hasta lado-2 In 1 Escribir " " FinDesde Escribir "*" escribir " " FinDesde Desde asterisco<-1 Hasta lado In 1 Escribir "*" FinDesdeFin
PSeInt:123
Proceso ejercicio_21 Leer lado Para asterisco<-1 Hasta lado Con Paso 1 Escribir "*" Sin Saltar
456789101112131415161718
FinPara escribir " " Para asterisco<-1 Hasta lado-2 Con Paso 1 Escribir "*" Sin Saltar Para espacio<-1 Hasta lado-2 Con Paso 1 Escribir " " sin saltar FinPara Escribir "*" Sin Saltar escribir " " FinPara Para asterisco<-1 Hasta lado Con Paso 1 Escribir "*" Sin Saltar FinParaFinProceso
22) Algoritmo que lea un número entero (altura) y a partir de él cree una escalera invertida de asteriscos con esa altura. Debera quedar asi, si ponemos una altura de 5.***** **** *** ** *
Spoiler SeleccionarEsconder
Papel:1234567891011121314151617
Var altura, asterisco, espacio, espacio_linea, asterisco_linea: numericaInicio Leer altura asterisco<-altura espacio<-0 Desde linea<-1 hasta altura In 1 Desde espacio_linea<-0 hasta espacio In 1 Escribir " " FinDesde Desde asterisco_linea<-1 hasta asterisco In 1 Escribir "*" FinDesde asterisco<-asterisco-1 espacio<-espacio+1 Escribir " " FinDesdeFin
PSeInt:12345678
Proceso ejercicio_22 Leer altura //iniciamos las variables segun lo necesitamos asterisco<-altura espacio<-0 Para linea<-1 hasta altura con paso 1 //escribimos los espacios iniciales Para espacio_linea<-0 hasta espacio con paso 1 Escribir " " sin saltar FinPara
91011121314151617181920
//escribimos los asteriscos de la escalera Para asterisco_linea<-1 hasta asterisco con paso 1 Escribir "*" sin saltar FinPara //aumentamos los espacios y disminuimos los asteriscos asterisco<-asterisco-1 espacio<-espacio+1 Escribir " " FinParaFinProceso
23) Algoritmo que dado un año, nos diga si es bisiesto o no. Un año es bisiesto bajo las siguientes condiciones: Un año divisible por 4 es bisiesto y no debe ser divisible entre 100.
Si un año es divisible entre 100 y además es divisible entre 400, también resulta bisiesto.
NOTA: este ejercicio tiene muchas formas de hacerlo si quieres comprobar que es correcto, puedes probarlo aquí, también encontraras información sobre las condiciones de cuando un año es bisiesto.
Spoiler SeleccionarEsconder
Papel:1234567891011121314
Var año: numericaInicio Escribir "Introduce un año" leer año si (año MOD 4=0 y año MOD 100<>0)Entonces Escribir "El año " año " es bisiesto" Sino si (año MOD 400=0 y año MOD 100=0) Entonces Escribir "El año " año " es bisiesto" Sino escribir "El año " año " no es bisiesto" FinSi FinSiFin
PSeInt:123456789101112
Proceso ejercicio_23 Escribir "Introduce un año" leer año si (año MOD 4=0 y año MOD 100<>0)Entonces Escribir "El año " año " es bisiesto" Sino si (año MOD 400=0 y año MOD 100=0) Entonces Escribir "El año " año " es bisiesto" Sino escribir "El año " año " no es bisiesto" FinSi FinSiFinProceso
1324) El siguiente es el menú de un restaurante de bocadillos. Diseñar un algoritmo capaz de leer el número de unidades consumidas de cada alimento ordenado y calcular la cuenta total. Vamos a suponer que estos precios son fijos, es decir, que son constantes (recuerda que en PSeInt no se usa comas para separar la parte decimal de la parte entera).
Producto Precio
Bocadillo de jamón 1,5 €
Refresco 1,05 €
Cerveza 0,75 €
Spoiler SeleccionarEsconder
Papel:12345678910111213141516
Inicio JAMON=1.5 REFRESCO=1.05 CERVEZA=0.75 total=0 Escribir "Introduce la cantidad de bocadillos de jamon" Leer cant_jamon Escribir "Introduce la cantidad de refresco" Leer cant_refresco Escribir "Introduce la cantidad de cerveza" Leer cant_cerveza //NOTA: las 2 siguientes lineas van en una linea total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO) +(cant_cerveza*CERVEZA)) Escribir totalFin
PSeInt:123456789101112131415
Proceso ejercicio_24 JAMON=1.5 REFRESCO=1.05 CERVEZA=0.75 total=0 Escribir "Introduce la cantidad de bocadillos de jamon" Leer cant_jamon Escribir "Introduce la cantidad de refresco" Leer cant_refresco Escribir "Introduce la cantidad de cerveza" Leer cant_cerveza //NOTA: los dos siguientes van en una linea total<-((cant_jamon*JAMON)+(cant_refresco*REFRESCO) +(cant_cerveza*CERVEZA)) Escribir totalFinProceso
Producto Precio
1625) Algoritmo que nos calcule las raíces de una ecuación de segundo grado. Controlar el caso de que las soluciones sean imaginarias.
Spoiler SeleccionarEsconder
Papel:12345678910111213141516171819
Var a,b, c, raizcua, x1, x2: numericaInicio Escribir "escibe el valor de a" Leer a Escribir "escibe el valor de b" Leer b Escribir "escibe el valor de c" Leer c neg<--b raizcua<-(b^2-4*a*c)^0.5 Si raizcua<=0 Entonces Escribir "La ecuacion no se puede resolver" Sino x1<-(neg+raizcua)/(2*a) x2<-(neg-raizcua)/(2*a) Escribir x1 Escribir x2 FinSiFin
PSeInt:123456789101112131415161718
Proceso ejercicio_25 Escribir "escibe el valor de a" Leer a Escribir "escibe el valor de b" Leer b Escribir "escibe el valor de c" Leer c neg<--b raizcua<-(b^2-4*a*c)^0.5 Si raizcua<=0 Entonces Escribir "La ecuacion no se puede resolver" Sino totalx1<-(NEG+Raizcua)/(2*a) totalx2<-(NEG-Raizcua)/(2*a) Escribir Totalx1 Escribir Totalx2 FinSiFinProceso