como hacer pseudocodigo

43
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. 1 2 3 4 5 Inicio A<-5 B<-3 C<-A+B Fin 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

Upload: gerardo-carrillo-haro

Post on 28-Oct-2015

1.162 views

Category:

Documents


5 download

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