Sie sind auf Seite 1von 38

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Introduccin a la programacin - Pseudocdigo


Curso: Introduccin a la programacin - Pseudocdigo
1 - Introduccin
Una de las mayores dificultades con las que se encuentran los hispanoparlantes que
empiezan a programar es el idioma.
Por una parte, la mayora de lenguajes de programacin se basan en el ingls, por lo que
un estudiante de habla hispana tiene que aprender que "write" o "print" son las palabras
equivalentes a "escribir".
Adems, la mayora de lenguajes tienen rdenes que realmente son abreviaturas de una o
varias palabras inglesas, de modo que el aprendiz tiene que entender o memorizar
palabras como "printf" o "writeln" incluso para realizar las tareas ms sencillas.
Para colmo, la mayora de entornos de programacin estn tambin en ingls (mens,
mensajes de error y aviso, etc).
Por eso, una herramienta habitual para ayudar a los que empiezan es el "Pseudocdigo",
algo as como un falso lenguaje de programacin en espaol, que ayuda a asimilar con
ms facilidad las ideas bsicas.
El pseudocdigo soluciona el primer problema: no hace falta aprender ingls para
entender los conceptos bsicos. Pero "histricamente" no solucionaba el problema del
"entorno de programacin": no existan entornos para programar en pseudocdigo, as
que tpicamente ha sido una herramienta para usar "con lapiz y papel".
Algunas universidades han creado sus propios "intrpretes de pseudocdigo", para ayudar
a los alumnos de primer curso a crear los programas "pensando en espaol", pero
permitindoles adems probar esos programas desde un entorno "casi real".
Existen varios de estos "intrpretes de pseudocdigo", que permiten teclear nuestro
programa y ver cual sera el resultado, pero hay uno que me parece especialmente bueno:
PSEINT, que adems realza con colores la sintaxis de nuestros programas para ayudar a
detectar errores, tiene autocompletado para permitir ganar tiempo, est disponible para
Windows y Linux, es gratuito(1), etc. ste es el que usaremos en este curso introductorio.
Eso s, no existe un estndar claro en cuanto a pseudocdigo, puede que la sintaxis que
empleen en tu universidad o centro de estudios sea ligeramente diferente a la que
veremos aqu. Aun as, esperamos poder ayudarte a coger con facilidad las nociones
bsicas.
(1) PSEINT realmente es ms que gratis, es "de cdigo abierto": cualquiera puede ver
cmo est creado, de forma que incluso si su autor perdiera el inters por el proyecto,
otras personas podran retomarlo, lo que le garantiza una vida mucho mayor.

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO


PSEINT se puede descargar desde
http://pseint.sourceforge.net/
Y Si Me Atrevo Con El Ingls?
PseInt es una herramienta til y que, tras un perodo de aparente abandono, ha sido
retomada por su autor original, quien le ha aadido nuevas posibilidades que la
modernizan.
Si aun as quieres llegar ms all y no te asusta el ingls, bien porque lo conozcas o bien
porque ests dispuesto a aprender 30 palabras, ests de suerte: el pseudocdigo en
ingls se parece a varios lenguajes de programacin, as que podras aprender los
conceptos bsicos usando "entornos reales".
Posiblemente Pascal sera el lenguaje que ms se parecera al pseudocdigo, y por eso
durante mucho tiempo se ha considerado un lenguaje muy adecuado para aprender, pero
hoy en da est un tanto anticuado. Una alternativa ms moderna es Python, bien
diseado y que est disponible para muchos sistemas operativos.
Si quieres aprender cualquier de ellos dos, en mi web podrs encontrar cursos de ambos:
tanto dePython como Pascal.

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

2 - Toma de contacto
Vamos a empezar por lo ms sencillo: escribir en pantalla.
Si queremos crear un programa que muestre algn en pantalla, en la mayora de
versiones de pseudocdigo usaremos la orden ESCRIBIR (en otras versiones puede
ser IMPRIMIR o MOSTRAR). A continuacin de esta palabras, entre comillas,
detallaremos el texto que deseamos que aparezca en pantalla.
Escribir "Hola"

Hacerlo usando PSEINT tambin es casi igual de simple. En el caso de PSEINT, cada
programa debe encerrarse entre las palabras "Proceso" (para indicar dnde comienza)
y "FinProceso" (para sealar dnde termina). Pero eso no aade ninguna dificultad,
porque cuando entramos a PSEINT, ese esqueleto de programa ya aparece escrito:

En la lnea vaca que hay entre "Proceso" y "FinProceso", deberemos comenzar a


teclear nuestro programa, en este caso empezando por la palabra "Escribir". Veremos

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

que PSEINT se da cuenta de que se trata de una orden que conoce, y nos recuerda
cmo es la orden exacta, incluso cuando apenas llevamos unas pocas letras:

Podemos terminar de teclear la palabra, o bien pulsar Intro para que se complete
automticamente. En cualquier caso, tras terminar la palabra "Escribir", se nos
propone que escribamos "una o ms expresiones, separadas por comas"; en nuestro
caso, ser ser la palabra "Hola", entre comillas:

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Mientras que estamos tecleando, PseInt mostrar un mensaje de aviso que nos
recuerda que no ser correcto hasta que terminemos de escribir el texto y cerremos
las comillas:

El programa casi completo, a falta de un pequeo detalle, debera quedar as:

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

La primera lnea todava es "Proceso sin_titulo". Podemos emplear un nombre ms


significativo para nuestro programa. Como este es el primero de los ejemplos del
curso, el nombre podra ser "Ejemplo001":

Nuestro programa est completo: podemos comprobar su funcionamiento pulsando el


botn "Ejecutar", cuya imagen recuerda al "Play" de los equipos de msica:

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Y entonces aparecer una nueva ventana que nos muestra el resultado de nuestro
programa (por supuesto, se trata de la palabra Hola):

Si nos interesa guardar el programa para poder acceder a l ms adelante, deberemos


usar la opcin "Guardar":

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Un programa puede estar formado por ms de una orden, claro. Bastar con pulsar
Intro despus del final de la orden "Escribir", para crear una nueva lnea en blanco. De
hecho, ni siquiera es necesario teclear la orden, porque PseInt permite utilizar las
estructuras de programacin ms habituales simplemente haciendo clic en el
correspondiente botn del panel derecho:

En ese caso, aparecer un panel inferior, que nos recordar detalles adicionales sobre
esa orden:
8

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Aadimos otro texto que deseemos mostrar:

Y el nuevo resultado del programa sera:

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Si te parece que PseInt te da demasiadas ayudas (aunque quiz nunca sean


demasiadas cuando uno empieza), las podras desactivar desde el men Configurar /
Asistecncias:

Por supuesto, no slo podemos escribir textos prefijados. Podemos usar nuestro
ordenador como calculadora, que nos muestre el resultado de una operacin
aritmtica:
Proceso Ejemplo002
Escribir 20+30
FinProceso

Como es habitual en matemticas, el smbolo + ser el que utilizaremos para calcular


una suma. Laresta se indicar con -, la multiplicacin con *, la potencia con ^ y
10

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

la divisin con /. Una operacin menos habitual, el resto de la divisin, tambin tiene
un smbolo asociado: %. Lo usaremos con frecuencia para saber si un nmero es
mltiplo de otro (por ejemplo, ser mltiplo de 10 si su resto entre 10 es 0, o ser
impar si su resto entre 2 es 1).
Proceso Ejemplo002b
Escribir 15%2
FinProceso

Se puede escribir varios textos en la misma lnea si se emplea la orden ESCRIBIR SIN
SALTAR (o Escribir Sin Bajar), como en este ejemplo:

Proceso Ejemplo002c
Escribir Sin Saltar "9876 * 54321 = "
Escribir 9876 * 54321
FinProceso

Tambin podemos incluir comentarios, aclaraciones, que nos ayuden a explicar la


lgica del programa o cualquier detalle que no sea evidente. En el caso de PseInt,
cualquier lnea que comience con una doble barra (//) se considerar un comentario y
no se tendr en cuenta en el momento de analizar nuestro programa:
// Ejemplo de comentario en un fuente de PseInt

En el prximo apartado puntualizaremos un poco ms lo que hemos hecho en este


ltimo programa y poco despus veremos cmo comprobar condiciones.
Ejercicio de repaso propuesto 2.1: Crea un programa que escriba "Comienzo a
aprender"

11

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Ejercicio de repaso propuesto 2.2: Crea un programa que escriba el resultado de


multiplicar 123 por 134
Ejercicio de repaso propuesto 2.3: Crea un programa que calcule el cuadrado de 25
Ejercicio de repaso propuesto 2.4: Crea un programa que escriba el resultado de
dividir 37 entre 5
Ejercicio de repaso propuesto 2.5: Crea un programa que escriba el resto de la
divisin de 37 entre 5
(Nota: no has conseguido resolver alguno de los ejercicios propuestos? Puedes
preguntar tus dudas en el foro de la clase.

3 - Variables
Vamos a hacer algo un poco ms complejo: vamos a sumar dos nmeros que no estn
prefijados dentro del programa, sino que deber teclear el usuario.
Para eso, usaremos la orden "Leer", que nos permite obtener un dato que el usuario
teclee y dejarlo guardado para utilizarlo despus. Deberemos dar un nombre temporal
a estos datos que leemos del usuario. Parece razonable que el primer nmero que
teclee el usuario se llame algo como "primerNumero", y el segundo sea algo como
"segundoNumero". El resultado que queremos obtener ser la suma de ese primer
nmero y ese segundo nmero, as que nuestro programa podra quedar as:
Proceso Ejemplo003
Escribir "Dime un numero"
Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero
Escribir "Su suma es ", primerNumero + segundoNumero

12

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

FinProceso

(Nota: Esa es la apariencia de PseInt funcionando sobre Linux, muy similar a la que
muestra cuando se utiliza en Windows).
El resultado de este programa debera ser algo como (dependiendo de los datos que
se introduzcan):

13

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Esas dos palabras, "primerNumero" y "segundoNumero" representan a nmeros que


no tienen un valor prefijado. Eso es lo que llamaremos "variables". En las variantes de
pseudocdigo que emplean en muchas universidades y centros de estudio (ya
habamos avisado de que no existe ningn estndar totalmente asentado) debemos
"declarar las variables" antes de usarlas: decir qu tipo de dato es el que querremos
representar con ese nombre. En nuestro ejemplo anterior se trataba de dos nmeros
enteros, as que el programa sera:
Proceso Ejemplo003b
Definir primerNumero como Entero
Definir segundoNumero como Entero

Escribir "Dime un numero"


Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero
Escribir "Su suma es ", primerNumero + segundoNumero
FinProceso

Esto se debe a que en la mayora de lenguajes de programacin "reales" es necesario


detallar qu tipo de datos querremos guardar en cada variable, para que la
herramienta de programacin sepa exactamente qu cantidad de memoria ser
necesario reservar para guardar ese dato.
En el caso de PSEINT, se puede escoger entre distintas sintaxis. La sintaxis que viene
"por defecto" (si no se cambia nada) es la llamada "flexible", que permite que no se
declaren las variables antes de usarlas, pero existen otras variantes de sintaxis,
empleadas por ciertas universidades, en las que s puede ser obligatorio hacerlo.

Por otra parte, no siempre querremos que el valor de una variable lo introduzca el
usuario. Habr veces que seamos nosotros mismos los que demos el valor inicial a
una variable desde nuestro programa, bien para usarlo en una serie de clculos
posteriores, o bien por legibilidad (es ms fcil entender algo como
14

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

"longitudCircunferencia = 2 * pi * radio" que algo como "longitudCircunferencia = 6.28 *


radio".
La forma de dar un valor a una variable es con la secuencia de smbolos "<-":
radio <- 3
longitudCircunferencia <- 2 * pi * radio

(esos smbolos representan una flecha, para indicar que el valor 3 se va a guardar
dentro del espacio de memoria reservado para la variable llamada "radio").

Y qu ocurre si usamos una variable sin haberle dado valor? Esto sucede a veces
por despiste, si tecleamos mal el nombre de una variable, como en este fragmento de
programa:
primerNumero <- 2
Escribir

primerNmero

Si lees ese fragmento con cuidado, vers que el nombre de la variable que aparece en
la segunda lnea es incorrecto, falta la letra "u". Qu sucede en ese caso? En algunos
lenguajes (pocos, afortunadamente) se da por sentado que es una variable nueva, y se
le da el valor 0; en el caso de PseInt, igual que en la mayora de lenguajes actuales,
obtendremos un mensaje de error que nos dir que estamos usando una variable que
no tena valor.
Ejercicio de repaso propuesto 3.1: Crea un programa que escriba el resultado de
multiplicar los dos nmeros que introduzca el usuario
Ejercicio de repaso propuesto 3.2: Crea un programa que calcule la superficie de un
rectngulo a partir de su base y su altura, y que despus muestre el valor de dicha
superficie.
Ejercicio de repaso propuesto 3.3: Crea un programa que calcule la superficie de un
crculo a partir de su radio (la frmula es "PI * radio2") y que despus muestre el valor
de dicha superficie (pista: para calcular el cuadrado de un nmero puedes usar la
opercin "potencia": x^2, o bien multiplicar el nmero por l mismo: x2=x*x).
15

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

4 - Comprobando Condiciones (1: Si)


En casi cualquier secuencia de instrucciones para un ordenador, ser vital poder
comprobar si se cumple alguna condicin. Una primera forma bsica de comprobar
condiciones es con la orden "SI". Su uso bsico sera
Si condicion Entonces
pasos_a_dar_si_es_verdadero
SiNo
pasos_a_dar_si_es_falso
FinSi

El bloque "SiNo" es opcional: podemos optar por no indicar lo que queremos que se
haga cuando no se cumpla la condicin.

16

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Para ayudarnos a planificar el comportamiento de una secuencia de instrucciones, se


suele usar como ayuda los llamados "diagramas de flujo". En estos diagramas, una
condicin se representa como un rombo, del que salen dos flechas: una para la
secuencia de acciones a realizar si se cumple la condicin y otra para cuando no se
cumple:

As, si en PSeInt hacemos clic en el icono de la parte derecha que representa la


condicin SI-ENTONCES, aparece un esqueleto de programa casi completo, para que
hagamos los cambios que nos interesen:

Slo tenemos que escribir la condicin que realmente nos interesa, y la serie de pasos
que se deben dar si se cumple y si no se cumple, de modo que nuestro programa
podra quedar as:
Proceso Ejemplo004
Escribir "Dime un numero"

17

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero
Si primerNumero > segundoNumero Entonces
Escribir "El primero es mayor"
Sino
Escribir "El segundo es mayor"
FinSi
FinProceso

Su resultado sera ste:

En ese ejemplo hemos comparado si un valor es mayor que el otro (>). Los
operadores de comparacin que tenemos disponibles son:
Operador relacional

Significado

Ejemplo

>

Mayor que

3>2

<

Menor que

2<3

Igual que

3=3

<=

Menor o igual que

5<=5

>=

Mayor o igual que

6>=5

18

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Ejercicio de repaso propuesto 4.1: Crea un programa que pida dos nmeros al
usuario y responda si son iguales o no lo son.
Tambin es posible comprobar varias condiciones a la vez, para hacer construcciones
ms complejas, como: "si a es mayor que b y b es mayor que c", o como "si a es igual
a 1 o b es igual a 1 ". Los operadores lgicos que de los que disponemos son:

Operador lgico

Significado

Ejemplo

&Y

Conjuncin (y).

(7>4) & (2=1) //falso

|O

Disyuncin (o).

(1=1 | 2=1) //verdadero

~ NO

Negacin (no).

~(2<5) //falso

Un ejemplo de su uso sera:


Proceso Ejemplo004b

Escribir "Dime un numero"


Leer primerNumero

Si primerNumero > 0

primerNumero = 0 Entonces

Escribir "Es mayor o igual que cero"


Sino
Escribir "Es negativo"
FinSi

FinProceso

Ejercicio de repaso propuesto 4.2: Haz una variante del ejemplo 004b, usando el
operador ">=".
19

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Ejercicio de repaso propuesto 4.3: Crea un programa que pida un nmero al usuario
y diga si es positivo, negativo o cero.
Ejercicio de repaso propuesto 4.4: Haz un programa que pida al usuario dos
nmeros y diga cuntos de ellos son positivos.
Ejercicio de repaso propuesto 4.5: Crea un programa que pida al usuario dos
nmeros y muestre su divisin si el segundo no es cero, o un mensaje de aviso en
caso contrario.
Ejercicio de repaso propuesto 4.6: Prepara un programa que pida al usuario tres
nmeros y diga cul es el mayor de los tres.

5 - Comprobando Condiciones (2: Segun)


Es frecuente tener que comprobar ms de una condicin a la vez, o bien varias
condiciones consecutivas. En concreto, un caso especialmente habitual es el de que
una variable pueda un valor de entre varios. Por ejemplo, en el sistema de notas
escolares espaol clsico, ciertas notas numricas tienen "nombres" asociados: un 5
es un aprobado, un 9 y un 10 son sobresaliente, etc. Si queremos hacer un programa
que convierta de la nota numrica a su equivalente escrito, podramos emplear varias
rdenes IF, una tras la otra. Pero en muchos lenguajes de programacin (y por tanto,
tambin en muchas variantes de pseudocdigo) existe una alternativa ms compacta y
ms legible: la orden "SEGUN". Esta rden permite hacer unas cosas u otras segn el
valor que tome una variable. Su uso sera as:
Segun variable Hacer
valor1: pasos_a_dar_si_es_el_valor1
valor2: pasos_a_dar_si_es_el_valor2
valor3: pasos_a_dar_si_es_el_valor3
De Otro Modo:
pasos_a_dar_si_es_otro_valor
FinSegun

El bloque "De Otro Modo" es opcional: si detallamos todos los valores posibles, no
sera necesario utilizarlo.
20

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

El nmero de valores que podemos probar es indefinido: no tiene por qu ser 3, sino
que pueden ser menos casos o muchos ms.
Segn la variante de pseudocdigo (o el lenguaje de programacin) que empleemos,
puede haberrestricciones en el tipo de datos que es aceptable. Por ejemplo, en el
caso de PseInt, la variable tiene que tener un valor numrico, no puede ser un texto.
Al igual que ocurra con la orden SI, existe un smbolo que podemos usar en los
diagramas de flujo para ayudarmos a planificar nuestro programa (aunque este
smbolo est menos extendido que el de SI):

As, si en PseInt hacemos clic en el icono del panel derecho que representa la
condicin SEGUN, aparece un esqueleto de programa casi completo, para que
hagamos los cambios que nos interesen:

21

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Slo tenemos que escribir la condicin que realmente nos interesa, y la serie de pasos
a dar si se cumple y si no se cumple, de modo que nuestro programa podra quedar
as:
Proceso EjemploCasos
Escribir "Introduzca la nota";
Leer nota;

22

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Segun nota Hacer


10:
Escribir "Ha obtenido un sobresaliente alto";
9:
Escribir "Ha obtenido un sobresaliente bajo";
8:
Escribir "Ha obtenido un notable alto";
7:
Escribir "Ha obtenido un notable bajo";
6:
Escribir "Ha obtenido un aprobado alto";
5:
Escribir "Ha obtenido un aprobado";
De Otro Modo:
Escribir "Ha suspendido";
FinSegun
FinProceso

Su resultado sera ste:

23

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Pero no siempre habr que comprobar condiciones una nica vez. Es muy frecuente
que haya que hacerlo de forma repetitiva. Por ejemplo, "pedir una contrasea al
usuario hasta que sea la correcta", o an ms cercano al mundo real, "pedir una
contrasea al usuario hasta que sea la correcta o agote sus intentos". De eso
hablaremos en la prxima entrega.
Ejercicio de repaso propuesto 5.1: Haz un programa que pida un nmero al usuario
un nmero de da de la semana (del 1 al 7) y escriba el nombre de ese da (por
ejemplo, "martes" para el da 2). Debes emplear la orden SEGUN.
Ejercicio de repaso propuesto 5.2: Crea una variante del ejercicio 5.1, en la que
emplees varios SI-ENTONCES en vez de SEGUN.
Ejercicio de repaso propuesto 5.3: Crea un programa que pida un nmero al usuario
un nmero de mes (por ejemplo, el 4) y escriba el nombre del mes correspondiente
(por ejemplo, "abril"). Debes usar la orden SEGUN.
Ejercicio de repaso propuesto 5.4: Crea una variante del ejercicio 5.3, en la que
emplees varios SI-ENTONCES en vez de SEGUN.

24

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

6 - Condiciones Repetitivas (1: Mientras)


Habitualmente, una condicin se deber comprobar ms de una vez. Por ejemplo, una
condicin de error puede repetirse: el usuario que introduce mal una contrasea por
primera vez puede equivocarse tambin en una segunda ocasin.
Por eso, igual que cualquier lenguaje de programacin tiene una orden "si", la gran
mayora de ellos tendr una orden "mientras", que permite que un fragmento de un
programa se repita mientras una cierta condicin se siga cumpliendo (por ejemplo,
mientras la contrasea que teclee el usuario sea incorrecta, el usuario deber volver a
introducirla).
Tambin existe un smbolo habitual en los diagramas de flujo para representar este
tipo de condiciones repetitivas, en las que si se cumple la condicin, se realiza una
serie de acciones y se vuelve a comprobar la condicin, y as sucesivamente hasta
que la condicin no se cumpla:

Y en el caso de PseInt, ese icono generara un esqueleto de programa como ste:

25

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Por ejemplo, un programa capaz de sumar muchos nmeros, todos los que el usuario
quisiera, y en el que hubiera que escribir "0" para indicar que queremos terminar,
podra ser as:
Proceso Mientras01
Escribir "Dime un numero";
Leer x;
suma <- 0;
Mientras x <> 0 Hacer
suma <- suma + x;
Escribir "Hasta ahora, la suma es ", suma;
Escribir "Dime otro numero";
Leer x;
FinMientras
Escribir "Terminado";
FinProceso

Y su ejecucin mostrara algo como:

26

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Esta estructuras repetitivas reciben tambin el nombre de "bucles".


Hay ms formas de comprobar condiciones repetitivas. Pronto las veremos...
Ejercicio de repaso propuesto 6.1: Crea un programa que pida al usuario una
contrasea, de forma repetitiva mientras que no introduzca "1234". Cuando finalmente
escriba la contrasea correcta, se le dir "Bienvenido" y terminar el programa.
Ejercicio de repaso propuesto 6.2: Haz un programa que permita calcular la suma
de pares de nmeros. Pedir dos nmeros al usuario y mostrar su suma, volviendo a
repetir hasta que ambos nmeros introducidos sean 0.
Ejercicio de repaso propuesto 6.3: Crea un programa que genere dos nmeros al
azar entre el 0 y el 100, y pida al usuario que calcule e introduzca su suma. Si la
respuesta no es correcta, deber volver a pedirla tantas veces como sea necesario
hasta que el usuario acierte.
Pista: como vers en el apartado 10, para generar un nmero al azar del 0 al 100
puedes hacer numero <- AZAR(101)

27

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

7 - Condiciones Repetitivas (2: Repetir-Hasta)


Es tambin muy frecuente que un bloque de programa que quiz se repita, deba
ejecutarse al menos una vez. Por ejemplo, si queremos pedir un dato al usuario, quiz
exista algn error y haya que insistir, pero al menos deberemos pedrselo una primera
vez.
En estos casos, la estructura "mientras" no es la ms adecuada: no podemos
comprobar la condicin al principio, sino despus de haber pedir el valor. En estos
casos (que son muy frecuentes), sera ms razonable usar otra estructura de
programacin en la que la condicin se compruebe despus de dar ciertos pasos. Esa
estructura es "repetir... hasta":
Su representacin en un diagrama de flujo sera:

Y en el caso de PseInt, ese icono generara un esqueleto de programa como ste:

28

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Por ejemplo, un programa que pida al usuario una clave de acceso, y que no le
permita seguir hasta que la introduzca correctamente, se podra hacer as:
Proceso Repetir01
Repetir
Escribir "Dime tu clave de acceso";
Leer clave;
Si clave <> 1234 Entonces
Escribir "Clave incorrecta";
FinSi
Hasta Que clave=1234
Escribir "Bienvenido!";
FinProceso

Cuyo resultado sera:

29

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Queda otra forma de repetir fragmentos de programa. Pronto estaremos con ella...
Ejercicio de repaso propuesto 7.1: Crea un programa que pida al usuario un cdigo
de usuario y una contrasea. Deber repetirse hasta que el cdigo sea "1" y la
contrasea sea "1234".
Ejercicio de repaso propuesto 7.2: Haz un programa que permita calcular la suma
de pares de nmeros. Pedir dos nmeros al usuario y mostrar su suma, volviendo a
repetir hasta que ambos nmeros introducidos sean 0. Esta vez debers usar
"Repetir", por lo que tu solucin no ser igual que la del ejercicio 6.2, que empleaba
"Mientras".
Ejercicio de repaso propuesto 7.3: Prepara un programa que divida dos nmeros
que introduzca el usuario. Si el segundo nmero es cero, se le deber avisar y volver a
pedir tantas veces como sea necesario, hasta que introduzca un nmero distinto de
cero, momento en que se calcular y mostrar el resultado de la divisin

30

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

8 - Repetir Un Cierto Nmero De Veces: Para


En muchas ocasiones, no querremos que algo se repita mientras se cumpla una
condicin, sino un cierto nmero de veces. Por ejemplo, para escribir "Hola" 3 veces
en pantalla existe una orden ms cmoda que la orden "mientras" o la orden "repetir...
hasta". Es la orden "para", que hace que una variable tome una serie de valores que
se van incrementando. Por ejemplo, una estructura como "para x con valores desde 2
hasta 4" hara que un bloque de programa se repitiera 3 veces. En la primera
repeticin, la variable "x" tendra el valor 2, en la segunda tendra el valor 3 y en la
tercera tendra el valor 4. La sintaxis exacta en PseInt es: "
Para variable <- valorInicial Hasta valorFinal Hacer"
Su representacin en un diagrama de flujo sera:

Y en el caso de PseInt, ese icono generara un esqueleto de programa como ste:

Por ejemplo, un programa que mostrara los nmeros del 1 al 10, podra ser:

31

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Proceso Para01
Para x <- 1 Hasta 10 Hacer
Escribir x;
FinPara
FinProceso

Cuyo resultado sera:

Si no queremos avanzar de uno en uno, sino con un incremento distinto, podemos


indicar otro tamao de "paso":
Proceso Para02
Para x <- 10 Hasta 20 Con Paso 2 Hacer
Escribir x;
FinPara
FinProceso

Y obtendramos:

32

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Hemos visto casi todas las construcciones que podremos encontrar en los lenguajes
de programacin convencionales (y, por tanto, al planificarlos usando pseudocdigo).
En la prxima entrega veremos alguna otra posibilidad, como el manejo de matrices y
las funciones matemticas, para pasar despus a algunos ejemplos completos.
Ejercicio de repaso propuesto 8.1: Crea un programa que escriba los nmeros del 5
al 15, ambos incluidos.
Ejercicio de repaso propuesto 8.2: Crea un programa que escriba los mltiplos del 3,
desde el 3 hasta el 30, usando un paso de tamao 3.
Ejercicio de repaso propuesto 8.3: Crea un programa que escriba los mltiplos del 3,
desde el 3 hasta el 30, contando del uno al diez pero mostrando ese contador
multiplicado por tres.
Ejercicio de repaso propuesto 8.4: Crea un programa que escriba los nmeros del
20 al 10, descendiendo.
Ejercicio de repaso propuesto 8.5: Crea un programa que escriba la tabla de
multiplicar del 5: desde "5 x 0 = 0" hasta "5 x 10 = 50"
Ejercicio de repaso propuesto 8.6: Tambin se puede contar usando una orden
"mientras" o una orden "repetir", si usas una variable como contador e incrementas (o
33

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

disminuyes) su valor en cada pasada de forma manual. Comprubalo creando un


programa que escriba los nmeros del 1 al 15 usando "mientras" en vez de "para".
Las estructuras repetitivas ("bucles") se pueden incluir una dentro de otra si fuera
necesario. El resultado se conoce como un "bucle anidado". Por ejemplo, si se desea
dibujar un rectngulo usando asteriscos, se puede plantear como escribir de forma
repetitiva varias filas que, a su vez estn formadas cada una por varias columnas, de
forma tambin repetitiva, como muestra este ejemplo:
// Rectngulo formado por asteriscos
Proceso Rectangulo
Escribir Sin Saltar "Introduce el ancho: "
Leer ancho
Escribir Sin Saltar "Introduce el alto: "
Leer alto
Para fila<-1 Hasta alto Hacer
Para columna <- 1 Hasta ancho Hacer
Escribir Sin Saltar "*" ;
FinPara
Escribir "";

// Avance de lnea tras cada fila

FinPara
FinProceso

Ejercicio de repaso propuesto 8.7: A partir del ejemplo que dibuja un rectngulo de
asteriscos, crea un que dibuje un cuadrado (deber pedir slo un dato, el lado, y
ambas rdenes "para" debern tener ese valor como lmite).
Ejercicio de repaso propuesto 8.8: Dibuja un tringulo creciente de asteriscos, del
tamao que indique el usuario. Por ejemplo, si escoge 4, el resultado debera ser:
*
**
***
****

34

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

9 - Matrices
Cuando necesitamos manejar muchos datos, generalmente hay soluciones ms
efectivas que tener muchas variables. Por ejemplo, si hay que guardar 10 nmeros,
resultar incmodo usar 10 variables llamadas n1, n2, n3, n4, n5, n6, n7, n8, n9, n10;
si se trata de 100 nmeros, puede pasar de resultar incmodo a ser totalmente
inviable. En esos casos, ser ms eficiente almacenar esos 100 datos "juntos",
formando lo que se conoce como una "matriz", en vez de usar 100 variables distintas.
La palabra "matriz" es una traduccin del ingls "array". Algunos autores lo traducen
alternativamente como tabla, vector o incluso "arreglo".
Normalmente, en una matriz podremos acceder individualmente a cada uno de sus
elementos usando corchetes: el primer dato sera algo como "dato[1]".
Como primer contacto, se puede crear una matriz de 3 elementos, guardar datos en
sus 3 posiciones y mostrar el primer dato y el tercero as:
Proceso Matriz3

Dimension datos[3]

datos[1] <- 10
datos[2] <- 25
datos[3] <- 50

Escribir "El primer dato es ", datos[1]


Escribir "Y el tercero es ", datos[3]

FinProceso

Como una matriz puede contener muchos datos, es frecuente recorrerlas de forma
repetitiva, empleando una orden "para". As un ejemplo que nos pida 6 datos y luego
los muestre en orden contrario al que se han introducido podra ser:

35

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Proceso MostrarAlReves

Dimension datos[6]

Para i <- 1 Hasta 6 Hacer


Escribir "Dime el dato numero ", i
Leer datos[i]
FinPara

Escribir "Los datos al reves son: "


Para i <- 6 Hasta 1 Con Paso -1 Hacer
Escribir datos[i]
FinPara

FinProceso

Que mostrara algo como:

(Haremos ejemplos ms avanzados como parte de los ejercicios)


Ejercicio de repaso propuesto 9.1: Crea un programa que pida un nmero al usuario
un nmero de mes (por ejemplo, el 4) y diga cuntos das tiene (por ejemplo, 30).
Debes usar una matriz.
Ejercicio de repaso propuesto 9.2: Haz un programa que pida al usuario 5 datos, los
guarde en una matriz y luego muestre su media (la suma de los 5 datos, dividida entre
5).
Ejercicio de repaso propuesto 9.3: Crea una versin ampliada del ejercicio 9.2, en la
que se pida al usuario 5 datos, se guarden en una matriz y finalmente se calcule su
media, se muestre sta y se muestren tambin los valores mayores que la media).
Ejercicio de repaso propuesto 9.4: Si has estudiado lo que es un vector, crea un
programa que reserve espacio para dos vectores de 3 componentes, pida al usuario
36

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

sus valores y calcule la suma de ambos vectores (su primera componente ser x1+y1,
la segunda ser x2+y2 y as sucesivamente).
Ejercicio de repaso propuesto 9.5: Si has estudiado lo que es un vector, prepara un
programa que reserve espacio para dos vectores de 3 componentes, pida al usuario
sus valores y calcule su producto escalar (x1y1+ x2y2+x3y3).
Ejercicio de repaso propuesto 9.6: Haz un programa que pida al usuario 7 nmeros
enteros y calcule (y muestre) cul es el mayor de ellos. Nota: para calcular el mayor
valor de una matriz, hay que comparar cada uno de los valores que tiene almacenados
con el que hasta ese momento es el mximo provisional. El valor inicial de este
mximo provisional no debera ser cero (porque el resultado sera incorrecto si todos
los nmeros son negativos), sino el primer elemento de la matriz.
Ejercicio de repaso propuesto 9.7: Crea un programa que prepare un array con 10
datos prefijados, luego pregunte al usuario qu dato desea buscar, avise si ese dato no
aparece, y que en caso contrario diga cuntas veces se ha encontrado.

Tambin se pueden crear arrays "de dos dimensiones" (por ejemplo, 3 filas y dos
columnas), que se acercan ms al concepto matemtico de matriz:
Proceso Matriz32

Dimension datos[3,2]

datos[1,1] <- 10
datos[2,1] <- 25
datos[3,1] <- 50

datos[1,2] <- 11
datos[2,2] <- 26
datos[3,2] <- 51

Escribir "El primer dato en la primera columna es ", datos[1,1]

37

CENTRO EDUCATIVO FRANCISCANO EL ESPIRITU SANTO

Escribir "Y el ultimo de la segunda columna ", datos[3,2]

FinProceso

Ejercicio de repaso propuesto 9.8: Crea un programa que pida al usuario dos
bloques de 10 nmeros cada uno (usando un array de dos dimensiones). Despus
deber mostrar el mayor dato que se ha introducido en cada uno de esos dos bloques.
Ejercicio de repaso propuesto 9.9: Si has estudiado lgebra matricial, haz un
programa que calcule el determinante de una matriz de 2x2, a partir de datos que
introduzca el usuario.
Ejercicio de repaso propuesto 9.10: Si has estudiado lgebra matricial, prepara un
programa que calcule el determinante de una matriz de 3x3.

38

Das könnte Ihnen auch gefallen