Manual de Pseudocodigo y Programacion Estructurada Ariel Villar PDF
Manual de Pseudocodigo y Programacion Estructurada Ariel Villar PDF
Manual de Pseudocodigo y Programacion Estructurada Ariel Villar PDF
Introducción
ÍNDICE GENERAL
Introducción ............................................................................................................................................. 2
Introducción a la Programación ............................................................................................................... 4
Definición intuitiva de Programa ......................................................................................................... 6
Variables y Operadores ............................................................................................................................ 9
Asignaciones .......................................................................................................................................... 13
Entrada y Salida de Información ............................................................................................................ 15
Resolución de Problemas ....................................................................................................................... 17
Contador ................................................................................................................................................. 19
Acumulador o Sumador ......................................................................................................................... 19
Estructuras de Selección......................................................................................................................... 20
Estructuras Repetitivas ........................................................................................................................... 25
Estructura Mientras ............................................................................................................................ 28
Estructura Repetir ............................................................................................................................... 29
Vectores .............................................................................................................................................. 31
Matrices .............................................................................................................................................. 35
Funciones y Procedimientos................................................................................................................... 41
Funciones ........................................................................................................................................... 42
Procedimientos ................................................................................................................................... 46
Pseudocódigo ......................................................................................................................................... 48
Introducción a la programación - Autor: Lola Cárdenas Luque ............................................................ 55
Estructuras de control; secuenciales y selectivas ............................................................................... 56
Asignaciones ...................................................................................................................................... 57
Alternativas dobles ............................................................................................................................. 59
Alternativas múltiples ........................................................................................................................ 60
BIBLIOGRAFÍA .................................................................................................................................... 63
Introducción a la Programación
INTRODUCCIÓN:
Muchas veces el término programación puede llegar tener interpretaciones tan variadas como confusas. Lo
cierto es que la programación en el ser humano es tan connatural de lo que pensamos. Los programas de
computadoras pueden ser comparados como una receta de cocina. Si Ud. tiene un problema a resolver y
quiere realizar la preparación de un huevo frito, deberá seguir las instrucciones que diga la receta para ese tipo
de preparación, es decir, se deberá respetar una serie de pasos para llegar a la preparación del plato de
cocina. Estos pasos deben respetarse siguiendo un camino lógico, porque de lo contrario, si no se respetase
no se podría llegar al fin que es la preparación del plato. Por ejemplo, para preparar una tortilla de papa la
receta podría ser:
Ahora bien, si en estos pasos que nos indica la receta, llegáramos a invertir o permutar cualquiera de sus
pasos, se podría correr el riesgo de no llegar a concluir la preparación de la comida propuesta, es decir, no se
llegaría al fin propuesto. Es decir que las recetas se pueden definir con el conjunto de pasos, ordenados con un
criterio adecuado, para cumplir un determinado fin. Lo mismo ocurre con los programas informáticos, también
son un conjunto de instrucciones ordenadas lógicamente, que el computador es capaz de interpretar, con el fin
de conseguir un fin determinado.
Para ilustrar, otro ejemplo de la vida cotidiana, se verá el caso de los pasos que realizamos para ver una
película de vídeo, podría hacer:
1. La descripción de cada paso no me lleva a ambigüedades: los pasos son absolutamente explícitos
y no inducen a error.
2. El número de pasos es finito.
Ejercicio Grupal:
En grupo de hasta 4 alumnos, deberán dar un ejemplo de la vida cotidiana donde se deberá detallar los pasos
a seguir para cumplir el fin del ejemplo propuesto.
Hasta aquí, han aparecido conceptos muy significativos para introducirnos en el mundo de la programación,
ellos son: conjunto, secuencia, orden, problema, ambigüedad, etc.
De ahí que nace un concepto que se puede abarcar de manera intuitiva, y es el concepto de Algoritmo. Se
puede considerar al Algoritmo como la series de pasos a seguir, ordenados lógicamente de acuerdo a un
criterio determinado, con el fin de resolver un problema concreto.
¿QUÉ ES UN ALGORITMO?
Esta palabra se deriva MUSA AL-KHOWARIZMI, nombre de un matemático árabe que vivió en el siglo IX. El
diccionario de la RAE lo define como el “método y notación en las distintas formas de cálculo”.
La conceptualización algoritmo, para los fines de éste curso, se va a definir como el conjunto de operaciones
perfectamente especificadas y ordenadas, cuyo objeto es obtener un resultado partiendo de unos datos a fin de
resolver un problema concreto.
Ejemplo 1:
Conclusión: Este modelo de algoritmo representa la solución para hallar cualquier superficie de
un rectángulo conociendo sus dos lados.
“S”, “A” y “T” son las variables de nuestro algoritmo porque las mismas varían según el valor
que le asignemos a “A” y “T”.
En este ejemplo “A” y “T” se denominan variables independientes porque a dichas variables se
le pueden asignar valores arbitrarios o al azar.
A la variable “S”, se la denomina variable dependiente porque “depende” su valor del valor
asignado por las variables independientes.
Por ejemplo: si A=3 y T=4, entonces S=12; en cambio, si A=8 y T=9, entonces S=72.
Ejemplo 2:
La superficie de un triángulo es base por altura, todo divido por dos.
La representación de un algoritmo podría ser:
Por analogía del ejemplo 1, podemos decir que R, A, B son la variables de nuestro algoritmo (porque
se valor varían dependiendo del ejemplo que busquemos).
Las variables B y A son variables independientes, y la variable R es dependiente.
Ahora, bien, el valor “2”, dentro del algoritmo, siempre va a seguir siendo “2”. Decimos pues, que el 2
de nuestro algoritmo es una constante del problema porque nunca va a variar su valor.
A saber, siempre en un algoritmo aparecen dos elemento fundamentales las constantes y las variables.
Si llevamos la lógica que un algoritmo es un “camino” que nos conduce a la resolución de un problema;
podemos decir que la aplicación de un algoritmo a la informática se denominaría PROGRAMA DE
COMPUTACIÓN.
ALGORITMO PROGRAMA
Entonces, en un programa de computación se pueden aplicar todos los conocimientos apropiados sobre
algoritmos como ser: variables, constantes, operadores, expresiones. Lo nuevo que se agrega al concepto de
programa es término “Palabra Reservada”. Una palabra reservada debe ser clara y precisa; y es aquella capaz
de ser reconocida por el computador y llevar a cabo (una orden) durante la ejecución de un programa
informático.
Programa: es un secuencia de órdenes claras y precisas ordenadas dadas al computador, que puede ser
capaz de cumplirlas para resolver un problema.
Orden 1
Orden 2 PROGRAMA
Orden 3
...
Orden n
¿Porqué decimos que los comandos, órdenes o instrucciones deben estar ordenadas?
Rta. Veamos con un ejemplo: si en la vida cotidiana necesitamos poner en marcha el arranque de un automóvil, el número
los pasos serían:
1. Abrir la puerta
2. Sentarse
3. Colocar la llave en el tambor
4. Dar arranque
5. Escuchar que el motor arranque
6. Se encendió el motor.
Analicemos (descompongamos) nuestro ejemplo. Lo hemos divido en 6 pasos básicos, asumiendo que se pueden subdividir
en muchos mas, ahora nos preguntamos ¿qué pasaría si permutamos el paso 3 por el 1 y el 4 por el 6? ¿Podríamos cumplir
con nuestro fin...?
Lo mismo pasa con nuestros programas, el conjuntos de ordenes que hacemos deben tener un orden lógico u ordenado o
con algún sentido, de manera tal que al ser ejecutado por el procesador de nuestro computador obtengamos como resultado
un programa coherente.
PSEUDOCÓDIGO
¿Qué es el PseudoCódigo? ¿Para qué sirve?...
Veamos un ejemplo, de la vida cotidiana….
Aller travailler à Andare a
Go work at sept heures du lavorare alle
Ve a trabajar a las seven in the soir. sette di sera.
siete de la tarde... evening. Francés Italiano
Español Inglés
Una persona que habla varios idiomas. Pero el pensamiento de dar el mensaje que la persona tenga que ir a trabajar a la
tarde es Universal.
En este ejemplo, vemos aun programador que quiere mostrar por pantalla un Mensaje “Hola Mundo”, ese pensamiento o
estructura universal se denomina PseudoCódigo. Después, él elegirá el Lenguaje de Programación (Idioma) que más sea
apropiado según sea el caso.
Variables y Operadores
Las cosas se definen en la computadora mediante datos, los algoritmos que vamos a
diseñar van operar sobre esos datos. A nivel de la máquina los datos se representan como
una serie de bits (dígito 1 ó 0). Los tipos de datos que vamos a manejar a lo largo del tutorial
son: numéricos y carácter (también llamados alfanuméricos), existen además, los datos de
tipo lógicos que solo pueden tener uno de dos valores : verdadero o falso.
Datos Numéricos
Los datos numéricos pueden ser de varias clases: enteros, enteros largos, de doble
precisión, de simple precisión, de coma flotante, reales; cuya definición depende del
lenguaje de programación utilizado.
Ejemplos: 1,0,-5,12.432, …
Los datos de tipo carácter o alfanuméricos están compuestos por el conjunto finito y
ordenado de caracteres que la computadora reconoce:
Ejemplos:
caracteres alfabéticos : A,B,C,.......Z ; a,b,c,.......z
caracteres numéricos : 0,1,2, ......9 (que no son números)
caracteres especiales : +, /, *, ?,%,$, #, !, ,ä,¦,{},~,etc.
Variables
Ten en cuenta que las operaciones que se pueden realizar con dos o más variables
exigen que éstas sean del mismo tipo. No podemos "sumar", por ejemplo una variable
alfanumérica a otra numérica y viceversa como por ejemplo:
Recopilación Prof. Ariel Villar 9
Manual de Pseudocódigo – Programación Estructurada
Operaciones
Las variables se pueden procesar utilizando operaciones apropiadas para su tipo.
Los operadores son de 4 clases:
OPERADORES
Relacionales
Aritméticos
Alfanuméricos
Lógicos
Los operadores relacionales se utilizan para formar expresiones que al ser
evaluadas producen un valor de tipo lógico: verdadero o falso. Ellos son:
Signo Operador
> Mayor que
< Menor que
= Igual a
<= Menor o igual que
>= Mayor o igual que
<> Distinto
Ejemplos:
Ejemplo Resultado
25 <= 25 Verdadero
25 <> 25 Falso
25 <> 4 Verdadero
50 <= 100 Verdadero
500 >= 1 Verdadero
1=6 Falso
Cuando se comparan caracteres alfanuméricos se hace uno a uno, comenzando por
la izquierda hacia la derecha.
Si las variables son de diferente longitud, pero exactamente iguales, se considera que
la de menor longitud es menor.
Los datos alfanuméricos son iguales si y solo si tienen la misma longitud y los mismos
componentes.
Las letras minúsculas son mayores que las mayúsculas y cualquier caracter numérico
es menor que cualquier letra mayúscula o minúscula; Así:
carácter numérico < mayúsculas < minúsculas.
Ejemplos:
Comparación Resultado
"A" < "B" Verdadero
"AAAA" > "AAA" Verdadero
"B" > "AAAA" Verdadero
"C" < "c" Verdadero
"2" < "12" Falso
Estas comparaciones se realizan utilizando el valor ASCII de cada carácter
Para tratar los números se utilizan los operadores aritméticos:
Signo Significado
+ Suma
- Resta
* Multiplicación
/ División
^ Potenciación
MOD o ENT Resto de la división entera
El único operador alfanumérico se utiliza para unir o concatenar datos de este tipo:
Recopilación Prof. Ariel Villar 11
Manual de Pseudocódigo – Programación Estructurada
Signo Significado
+ Concatenación
Ejemplos:
Expresión Resultado
"Pseudo" + "código" "Pseudocódigo"
"3" + "4567" "34567"
"Hola " + "que tal ?" "Hola que tal ?"
Los operadores lógicos combinan sus operandos de acuerdo con las reglas del álgebra de
Boole para producir un nuevo valor que se convierte en el valor de la expresión, puede ser
verdadero o falso.
Signo Significado
OR Suma lógica (O)
AND Producto lógico (Y)
NOT Negación (NO)
Ejemplos:
Expresión Resultado
Verdad AND Falso Falso
NOT Falso Verdad
Verdad OR Falso Verdad
Ejemplo:
Importe=55
saldo=2000
edad=30
sexo=1
Asignaciones
A 100; significa que a la variable A se le ha asignado el valor 100, ahora A vale 100.
suma 5+10; asigna el valor 15 a la variable suma a través de una asignación aritmética.
x (z + v); asigna el valor de la suma de las variables z y v a la variable x. El resultado depende de los
valores que se asignen a x y a z
Importante:
Toda asignación es destructiva.
Esto quiere decir que el valor que tuviera antes la variable se pierde y se reemplaza
por el nuevo valor que asignamos, así cuando se ejecuta esta secuencia:
o B 25
o B 100
o B 77
Significa que el valor final que toma B será 77 pues los valores 25 y 100 han sido
destruidos.
Cuando una variable aparece a ambos lados del símbolo de asignación como:
CC+1
Consejos:
Conviene inicializarlas al comenzar el programa con cero, aunque no es
obligatorio por ahora (en algunos lenguajes de programación sí es necesario).
Recordemos que no se pueden asignar valores a una variable de un tipo
diferente al suyo.
BC–A
Otro ejemplo:
J J*3
¿Qué valor tiene J al final ? Veamos.
Primero se asigna 33 a la variable J, J vale entonces 33; luego:
J <<= J + 5
Seguimos: J J * 3
Esto es: Multiplicar 3 al valor de J y asignarlo a la variable J.
J <<= 38 * 3 ; J <<= 114
Los datos que vamos a obtener del usuario para procesarlos también deben ser
asignados a variables, la operación de lectura, lee un dato y lo asigna a una variable. La
instrucción para la lectura de un dato es leer o también ingresar. Por ejemplo:
leer numero
Esta instrucción pide al usuario un valor que será asignado a la variable numero, es decir, en
numero se almacena el valor ingresado por el usuario.
Representa la lectura de tres valores que se van a almacenar en las variables Edad, Peso y
Sexo; en ese mismo orden.
Ahora bien, cuando queramos mostrar el resultado del algoritmo, un mensaje, un valor, etc,
vamos a utilizar el comando que muestre los resultados por pantalla. A continuación
mostraremos algunos comandos de salida de pantalla en distintos software o lenguajes:
Imprimir-mostrar Es el comando general para pseudocódigo
Escribir Es el comando para Pseint
@ fila, columna say Es el comando para Foxpro
printf(“cadena control”, variable); Es el comando para C
Etc.
imprimir-mostrar "Hola" ; muestra en la pantalla el mensaje Hola, Hola va entre comillas porque es una cadena.
Ingrese su edad
leer Edad
leer Ciudad, País
imprimir-mostrar Variable o lista de variables separadas por comas.
Ejemplos:
Imprimir-mostrar promedio
Imprimir-mostrar TotalMes, TotalAño, TotalGeneral
Imprimir-mostrar "Así se muestra un mensaje o comentario"
En resumen: Las instrucciones disponibles para escribir un programa dependen del lenguaje
de programación utilizado. Existen instrucciones -o acciones- básicas que se pueden
implementar de modo general en cualquier algoritmo y que soportan todos los lenguajes de
programación. Estas son:
1- Instrucciones de inicio/fin
2- Instrucciones de asignación
3- Instrucciones de lectura
4- Instrucciones de escritura
Resolución de Problemas
Si se tienen, por ejemplo A = 5 y B = 10, se quiere intercambiar el valor de las variables, así:
A = 10; B = 5.
No podemos asignar directamente el valor de una a la otra porque uno de los valores
se destruiría; de modo que esto no se puede hacer:
A <<= B (el valor de A se pierde y quedaría A = 10 ; B = 10) .
La solución consiste en asignar el valor de una de las variables a otra variable auxiliar.
inicio
leer A,B
Auxiliar <<= A
A <<= B
B <<= Auxiliar
imprimir A,B
fin
Auxiliar <<= A ........ Se asigna a Auxiliar el valor 10. Auxiliar vale 10.
A B Auxiliar
10 5 10
A <<= B ........ Se asigna a A el valor de B para intercambiar. Ahora el valor de las variables es:
A B Auxiliar
5 5 10
B <<= Auxiliar ........ El valor de A que se guardó en Auxiliar se asigna a B para el intercambio.
A B Auxiliar
5 10 10
El intercambio está hecho. Luego se imprimen los respectivos valores ya intercambiados con la línea:
imprimir.mostrar A,B
Contador
Un contador es una variable destinada a contener valores que se van incrementando o
decrementando cada vez que se ejecuta la acción que lo contiene. El incremento o decremento es
llamado paso de contador y es siempre constante.
Por ejemplo; el marcador de un partido de fútbol, cada vez que un equipo anota un gol,
aumenta su marcador en una unidad.
En las carrera de automóviles, cada vez que un vehículo pasa por la línea de meta, se
incrementa en una unidad el número de vueltas dadas al circuito, o bien se decrementa en una
unidad el número de vueltas que quedan por realizar.
Aunque el incremento es siempre constante, el paso de contador no necesariamente puede
ser la unidad como en los ejemplos que se han dado más arriba; también puede incrementarse o
decrementarse a de dos, tres, cuatro,.... n; es decir, puede ser cualquier número que conserva el
mismo valor durante todo el programa.
La sintaxis de una variable contador es:
Observación: Cuando una variable aparece a ambos lados del símbolo de asignación,
conviene inicializarlas a cero.
Acumulador o Sumador
Es una variable que nos permite guardar un valor que se incrementa o decrementa en
forma NO constante durante el proceso. En un momento determinado tendrá un valor y al
siguiente tendrá otro valor igual o distinto. Por ejemplo; cuando realizamos un depósito en el
banco, la cantidad depositada cada vez no es siempre la misma; unas veces será una
cantidad y otras veces distinta. Lo mismo ocurre cuando realizamos algún retiro, pero
decrementando la cantidad total.
La sintaxis es:
acumulador <<= acumulador + variable (al incrementar)
acumulador <<= acumulador - variable (al decrementar)
Ejemplos:
saldo <<= saldo + entrega
saldo <<= saldo – retiro
suma <<= suma + numero
A <<= A + edad
Estructuras de Selección
La estructura de selección, se ejecuta condicionalmente, es decir, si una cierta
condición es verdadera se ejecuta un bloque de instrucciones, si es falsa se ejecuta un
bloque diferente de instrucciones. Por ejemplo, si en el cine proyectan "Star Wars Episode I",
entonces hay que formar fila para comprar los billetes e ingresar al cine, si no, decidimos
otra actividad como ir a bailar.
Si utilizamos una selección es para indicar que según el resultado cierto o falso de
una expresión vamos a tomar una decisión de realizar determinadas acciones especificadas;
seleccionamos las acciones a realizar.
La instrucción que permite tomar una decisión, basada en una condición es Si...Entonces. Al
evaluar la condición, Si...entonces puede devolver solo dos resultados posibles: Verdadero o
Falso; es decir, Si o No.
El formato de la estructura de selección es:
si <condición> entonces
instrucción 1
instrucción 2
...................
instrucción n
si-no
instrucción a
instrucción b
...................
instrucción z
fin-si
En este caso, la condición es {señal de ocupado}, que puede ser verdadera o falsa. Si
es verdadera, entonces debemos colgar el teléfono y si no, podemos realizar la
conversación.
Ejemplo:
Si A = 5 entonces
imprimir "A es 5"
si - no
imprimir "A no es igual a 5"
fin – si
Si {condición} entonces
instrucción 1
instrucción 2
Recopilación Prof. Ariel Villar 20
Manual de Pseudocódigo – Programación Estructurada
.........
instrucción n
fin – si
Por ejemplo;
Ejemplos
Introducir un número por teclado y determinar si es positivo o negativo.-
Para saber si un número es positivo o negativo, debemos saber si es menor o mayor a cero.
Si es mayor, el número es positivo y si es menor resulta negativo. Utilizamos Si... para
evaluar como es el número con respecto a cero y mostramos los mensajes correspondientes
en cada caso. Así:
inicio
leer Numero
Si Numero < 0 entonces
imprimir "El número es negativo"
si-no
imprimir "El número es positivo"
fin-si
fin
inicio
leer Número A, Número B
Si Número A < Número B entonces
Imprimir-mostrar “El menor es:", Número B
si-no
imprimir-mostrar "El mayor es:", Número A
fin-si
fin
En este ejemplo, que pasaría si los números fueran iguales?. Hagamos la prueba
Luego de leer los números, por ejemplo: Número A=100 y Número B=100 se ejecutan
las instrucciones:
inicio
leer Número A, Número B
Recopilación Prof. Ariel Villar 21
Manual de Pseudocódigo – Programación Estructurada
Esta solución contiene dos estructuras de repetición, una dentro de la otra (anidada).
En caso de ser necesario podemos anidar tantas estructuras de selección como sea
necesario. El algoritmo averigua si A es menor a B, si no lo es, tenemos otras dos
posibilidades: que sea menor o igual, esto es lo que determina la estructura anidada.
Otro ejemplo de estructuras de repetición anidadas, consiste en dado un número del 1
al 7, establecer al día de la semana.
inicio
leer numero
Si número =1 entonces
imprimir "Domingo"
si-no
Si número =2 entonces
imprimir ="Lunes"
si-no
Si número =3
imprimir "Martes"
si-no
Si número =4 entonces
imprimir "Miércoles"
si-no
Si Número =5 entonces
imprimir "Jueves"
si-no
Si número =6 entonces
imprimir "Viernes"
si-no
Si número =7 entonces
imprimir "Sábado"
si-no
imprimir "El número debe estar entre 1 y 7"
fin-si
fin-si
fin-si
fin-si
fin-si
fin-si
fin-si
fin
Así, utilizando esta estructura, el problema del día de la semana será así:
inicio
Leer numero
Según sea numero
Caso = 1
imprimir "Domingo"
Caso = 2
imprimir =“Lunes"
Caso = 3
imprimir ="Martes"
Caso = 4
imprimir "Miércoles"
Caso = 5
imprimir "Jueves"
Caso = 6
imprimir "Viernes"
Caso = 7
imprimir "Sábado"
Otro Caso
imprimir "El número debe estar entre 1 y 7"
fin-según
fin
Lo cual resulta menos engorroso que varios Si... entonces anidados. Es posible anidar
Si... entonces dentro de estructuras Según sea y viceversa.
Observa que la instrucción Otro Caso ejecuta una o varias instrucciones cuando no se
cumple ningún caso de los contemplados más arriba. Otro Caso debe estar siempre al final
(cuando sea necesario, si no o es se puede omitir Otro Caso)
El uso de una u otra estructura depende de cada persona, pero en general cuando las
condiciones a evaluar son muchas, se utiliza Según Sea.-
TDias = 31
caso = 2,4,6,11
TDías =30
caso = 2
TDías=28
fin-según
Estructuras Repetitivas
Donde:
variable: variable índice
Vi: valor inicial de la variable índice
Vf: valor final de la variable índice
[incremento]: el número que se incrementa (o decrementa) a la variable índice en cada
iteración del bucle, si se omite es 1.
Ejemplo:
Imprimir todos los números del 1 al 100.
Inicio
desde I = 1 hasta 100
imprimir I
fin-desde
fin
I es la variable índice con un valor inicial de 1, se incrementa uno en cada paso hasta
100.
Podemos notar que la estructura desde comienza con un valor inicial de la variable
índice y las acciones se ejecutan hasta que el valor inicial sea MAYOR que el que el Valor
final.
La variable índice se incremente en uno (en el ejemplo) y si este nuevo valor del
índice no es mayor que el valor final, se ejecuta de nuevo la acción imprimir.
En este caso se visualizará los números 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ....97, 98, 99, 100 El
incremento o paso de contador es siempre 1 si no es especifica lo contrario.
Otro Ejemplo:
Recopilación Prof. Ariel Villar 25
Manual de Pseudocódigo – Programación Estructurada
Dónde:
La variable índice comienza en 2, se imprime 2 y en el siguiente paso se incrementa
(suma) 2 a la variable índice que pasa a valer 4; se imprime el 4 y como 4 es menor que 300
(valor final) , se pasa a una nueva iteración incrementando nuevamente en 2 el índice, que
ahora vale 6; y así sucesivamente...
Aquí se visualizan: 2, 4, 6, 8, 10, 12, 14, 16, 18, ..... 296, 298, 300
Ejemplo 3: Imprimir los valores comprendidos entre el 460 y 500 en orden inverso.
Debemos mostrar: 500, 499, 498, 497, ..... 462, 461, 460. En este caso haremos un
decremento a la variable índice (no un incremento como en los ejemplos anteriores).
Tenemos que comenzar nuestra variable índice en 500 y decrementar una unidad hasta
alcanzar el 460, así:
el ciclo) I
1 500
2 499
3 498
4 497
5 496
.... ....
39 462
40 461
41 460
Como salida tenemos, entonces: 500, 499, 498, 497, 496, 495, 494, .... 464, 463, 462,
461, 460.
Estructura Mientras
Como su nombre lo indica, esta estructura repite el cuerpo del bucle mientras se
cumpla una determinada condición. Su sintaxis es:
mientras {condición}
acción 1
acción 2
acción 3
.....
acción n
fin mientras
instrucción X
Lo primero que el computador hace es examinar la condición, lo que puede dar como
resultado dos posibilidades:
De esto se deduce que el cuerpo del bucle de una estructura mientras puede repetirse cero
o más veces, veces que son determinadas por el cumplimiento o no de la condición.
Ejemplo
Estructura Repetir
La estructura repetir cumple la misma función que la estructura mientras. La diferencia
está en que la estructura mientras comprueba la condición al inicio y repetir lo hace al final;
por eso la estructura repetir se ejecuta por lo menos una vez..
La sintaxis es:
repetir
instrucción 1
instrucción 2
instrucción 3
......
hasta {condición}
instrucción X
Recordemos una vez más las diferencias entre las estructuras mientras y repetir
MIENTRAS REPETIR
Comprobación de la condición al final,
Comprobación de la condición al inicio, antes de
después de haber ingresado una vez al
entrar al bucle
bucle
Las instrucciones del cuerpo del bucle se
Las instrucciones del cuerpo del bucle se
ejecutan en forma repetitiva si la condición es
ejecutan si la condición es falsa
verdadera
Las acciones del bucle se pueden ejecutar 0 o Las acciones del bucle se ejecutan por lo
más veces menos una vez
Ejemplo
repetir
imprimir "La contraseña es incorrecta !"
hasta contraseña = "josua"
En resumen, hemos visto dos tipos de estructuras repetitivas, el primer tipo en la que
conocemos el número de veces que se repetirá el bucle o ciclo (Desde ....fin-desde; y el
segundo tipo en el cual no conocemos el numero de veces en se repite el ciclo ya que está
determinado por el cumplimiento o no de una condición (mientras ..... fin-mientras y
repetir....hasta).
Toda estructura Desde....fin-desde tiene una estructura mientras....fin-mientras o
repetir.....hasta equivalente.
Recopilación Prof. Ariel Villar 29
Manual de Pseudocódigo – Programación Estructurada
Vectores
Hasta ahora hemos trabajado con datos simples que representaban un número, un
carácter o una cadena. Sin embargo, en ocasiones se necesita procesar una colección de
valores que están relacionados entre sí por algún método, por ejemplo, una lista de
calificaciones, de los meses del año, temperaturas a lo largo de una semana, etc.
El procesamiento de estos datos utilizando datos simples es muy difícil. Por eso, se
han definido en la programación varias estructuras de datos, que son una colección
caracterizada por alguna organización y por las operaciones que se definen en ella.
Una de estas estructuras son los vectores.
Un vector es un conjunto de elementos del mismo tipo que comparten un nombre
común; algo así como una variable que puede almacenar al mismo tiempo más de un valor.
Los vectores reciben también el nombre de tablas, listas o arrays.
Un vector es un conjunto ordenado y homogéneo. Ordenado porque el primer
elemento, segundo, tercero... n-ésimo puede ser identificado y homogéneo porque sus
elementos son todos del mismo tipo (numéricos o alfanuméricos, pero no una combinación
de ambos).
Gráficamente, un vector se representa como una tabla:
Vemos, entonces que un elemento se referencia por el nombre del vector y la posición
que ocupa dentro de él. El número que se coloca entre paréntesis se llama índice y designa
la posición del elemento en el vector.
Cada elemento del vector se puede procesar como si fuera una variable simple.
La dimensión de un vector está dada por la cantidad de elementos que contiene y
debe ser definida al comenzar el programa.
Cargar un vector
La asignación de valores a los elementos de un vector se realiza de esta forma:
A(4) <<= 0
A(7) <<= 4
etc.
Por lo tanto, para que el vector A contenga los valores que se han mostrado como
ejemplo, se han hecho estas asignaciones:
A(1) <<= 12
A(2) <<= 50
A(3) <<= -5
A(4) <<= 0
A(5) <<= 100
A(6) <<= 33
A(7) <<= 4
A(8) <<= 7
A(9) <<= 5
A(10) <<= 99
Por supuesto que no vamos a cargar un vector de 100 elementos, escribiendo 100
asignaciones.
La carga de un vector se hace por medio del ciclo desde....fin desde . Nuestro bucle
va a comenzar en 1 hasta un número N que es la longitud del vector.
Pero antes, no demos olvidar que el vector debe ser dimensionado. Al dimensionar un
vector le decimos a la máquina que reserve los espacios de memoria necesarios para los
elementos del vector.
Los problemas relacionados con vectores tendrán casi siempre esta forma
inicio
Leer dimensión del vector
Dimensionar Vector
Cargar Vector
Procesamiento de los elementos del vector (según lo que se pida)
Imprimir Vector
fin
Cargar el vector
Ejercicio: Cargar un vector de 30 componentes.
Ahora bien, el usuario deberá siempre poder determinar la dimensión del vector sobre
el que quiera trabajar. Por eso, vamos a leer la dimensión del vector en una variable:
inicio
Leer N
dimensionar V(N)
desde I = 1 hasta N
Leer V(I)
fin desde
fin
Imprimir un vector
El procedimiento para imprimir un vector es casi exactamente igual al proceso de
carga, con la diferencia que en lugar de leer, vamos a imprimir. Para el caso de nuestro
vector V de N componentes:
desde I = 1 hasta N
imprimir V(I)
fin desde
Es bueno volver a señalar que los elementos de un vector son todos del mismo tipo
(todos numéricos o todos alfanuméricos).
Arrays
Un array es conjunto finito y ordenado de elementos del mismo tipo (homogéneos). Son
Recopilación Prof. Ariel Villar 33
Manual de Pseudocódigo – Programación Estructurada
Matrices
Un array bidimensional o matriz es un conjunto de datos homogéneos (todos del
mismo tipo), cada uno de los cuales debe referenciarse por dos índices. Los índices
determinan la posición de una fila y una columna.
MAT(4, 5)
MAT(4, 6)
MAT(5, 1) -------------- comienza el quinto bucle para recorrer la quinta fila
MAT(5, 2)
MAT(5, 3)
MAT(5, 4)
MAT(5, 5)
MAT(5, 6) -------------- Fin de ambos bucles
Una matriz también puede recorrerse por columnas. Al programar, no siempre podremos
predefinir el tamaño de un matriz, por eso, solicitaremos al usuario que ingrese la cantidad
de filas y columnas con las que desea dimensionar una matriz:
inicio
leer cantfila, cantcolumna
dimensionar MAT(cantfila, cantcolumna)
desde fila=1 hasta cantfila
desde columna=1 hasta cantcolumna
leer MAT(fila,columna)
fin-desde
fin-desde
fin
inicio
leer cantfila, cantcolumna
Recopilación Prof. Ariel Villar 37
Manual de Pseudocódigo – Programación Estructurada
inicio
leer cantfila, cantcolumna
dimensionar M (cantfila, cantcolumna)
desde I = 1 hasta cantfila
desde J=1 hasta cantcolumna
leer M(I, J)
fin-desde
fin-desde
desde I=1 hasta cantfila
desde J=1 hasta cantcolumna
suma suma + M(I, J)
fin-desde
fin-desde
promedio f suma / (cantfila * cantcolumna)
desde I = 1 hasta cantfila
desde J=1 hasta cantcolumna
imprimir M(I, J)
fin-desde
fin-desde
fin
Una matriz que tiene la misma cantidad de filas y de columnas se llama matriz
cuadrada.
1 2 3 4 5
2
3
4
5
Esta es una matriz cuadrada de orden 5.
Las matrices cuadradas tienen ciertas características; por ejemplo, los elementos en
donde el número de filas es igual al número de columnas se llama diagonal principal
(señalados en amarillo): Los elementos de la diagonal principal tienen, entonces, la
propiedad de que fila = columna
Recopilación Prof. Ariel Villar 38
Manual de Pseudocódigo – Programación Estructurada
La diagonal principal define así dos áreas bien notorias, una que está por encima y
otra por debajo. La región determinada por los elementos situados sobre la diagonal
principal se llama matriz triangular superior que tiene la propiedad de que fila < columna.
A y B son de igual dimensión, por lo tanto existe una matriz C que es la suma de A y B
11 14 13 69
21 19 89 52
12 20 151 30
2- Producto Escalar por una matriz: Si A es una matriz de orden (dimensión) MxN y K
es un escalar, el producto de K*A es igual a otra matriz D también de orden MxN en donde
casa D (i, j) = K * A (i ,j):
Matriz A:
1 2 3 4 5 6
Recopilación Prof. Ariel Villar 39
Manual de Pseudocódigo – Programación Estructurada
7 8 9 10 11 12
0 -1 -2 -3 21 22
33 3 0 5 12 4
Escalar: 5
Resultado de multiplicar la matriz A por el escalar (numero) 5
Matriz D
5 10 15 20 15 30
35 40 45 50 55 60
0 -5 -10 -15 105 110
165 15 0 25 60 20
Funciones y Procedimientos
En general un problema complejo puede ser resuelto de manera más fácil y eficiente
si se divide en problemas más pequeños y concentrándonos en cada etapa en la solución de
ese "subproblema". Esto implica que el gran problema original será resuelto por medio de
varios módulos, cada uno de los cuales se encarga de resolver un subproblema
determinado. Esos módulos, se conocen con el nombre de subalgoritmos. Un subalgoritmo
no es más que un algoritmo que tiene la función de resolver un subproblema.
Los subalgoritmos se escriben sólo una vez, luego es posible hacer referencia a ellos
("llamarlos") desde diferentes puntos de un pseudocódigo. La ventaja obvia es que nos
permite reutilización y evita la duplicación de códigos.
Los subalgoritmos son independientes entre si, en el sentido de que se puede escribir
y verificar cada módulo en forma separada sin preocuparse por los demás módulos. Por ello,
es menos complicado localizar un error y también se puede modificar el código sin tener que
tocar o rehacer varias partes del mismo.
Los subalgoritmos pueden ser dos tipos: Funciones y Procedimientos (también
llamadas subrutinas o subprogramas).
Notemos que al utilizar procedimientos y funciones se establece un límite para el
alcance de las variables, unas tendrán efecto y valor sólo en el subalgoritmo y otras en el
algoritmo principal, también es posible especificar que una variable tenga efecto en el
algoritmo principal y todos los subalgoritmos. Este punto lo estudiaremos con más detalle en
la sección Ámbito de variables.
Los subalgoritmos pueden recibir valores del algoritmo principal (parámetros) ,
trabajar con ellos y devolver un resultado al algoritmo principal: No existen limitaciones en
cuanto a las acciones que pueda ejecutar un subalgoritmo. Un subprograma puede, a su
vez, invocar o llamar a otros o a sus propios subprogramas, inclusive puede llamarse a sí
mismo (esto se conoce como recursividad).
Funciones
Desde el punto de vista matemático, una función es una expresión que toma uno o
más valores llamados argumentos y produce un valor que se llama resultado. Este resultado
es además, único. Ejemplos de funciones matemáticas son los logaritmos, funciones
trigonométricas (seno, coseno, etc).
El en ambiente de programación y diseño de algoritmos, las funciones tienen
exactamente el mismo significado. Es decir, se realizan ciertos cálculos con una o más
variables de entrada y se produce un único resultado. En programación y diseño de
algoritmos, este resultado podrá ser un valor numérico, alfanumérico o lógico. Es decir, una
función puede devolver un resultado que puede ser una cadena, un número o un valor de
tipo lógico (verdadero o falso). Esto hace que en los lenguajes de programación, debamos
especificar de que tipo es una función. Una función será de tipo numérica cuando devuelva
un número y será de tipo alfanumérica o string cuando devuelva una cadena. En el caso de
las funciones de tipo numérico se tienen subdivisiones que están dadas por los tipos de
datos soportados por el lenguaje (integer o entero, simple o single, doble precisión o double,
real, etc). O sea que cuando una función numérica devuelva un valor numérico entero (sin
decimales) será de tipo entera o integer. Si devuelve un valor decimal será doble o simple,
dependiendo del grado de exactitud que se desea; sin embargo como esto es propio de
lenguajes de programación no se tendrá en cuenta en este tutorial (las funciones serán
numéricas cuando devuelvan un dato numérico y de tipo string cuando devuelvan una
cadena, sin necesidad de especificar esto previamente en el algoritmo). Puedes consultar al
profesor de la materia que te proporcione más detalles sobre los tipos de datos y su
aplicación en las funciones.
Tomemos como ejemplo al función matemática sen(x). En este caso la función se
llama sen (seno) y el argumento o valor que se pasa a la función para que lo procese es x.
Así sen(90º)=1. Este valor es además único (por eso se llama función), es decir no existe
ningún otro número que la función pueda procesar y devolver 1 más que 90º.
Cuando utilicemos esta función en un pseudocódigo y necesitemos el valor del
sen(90º), debemos asignarlo a una variable, así:
valor = sen(90)
en este caso, la variable valor será = 1, por la tanto nuestra función es numérica.
Es así como se llaman a las funciones desde un pseudocódigo. Asignándolas siempre
a una variable que contendrá el valor devuelto por la función. Si no hacemos esta
asignación, la función no podrá ejecutarse ya que no tendrá un "lugar" donde descargar el
resultado. Por lo tanto la llamada a una función será siempre:
Ejemplos: La llamada a una función MES que devuelva el nombre del mes, pasándole
el valor numérico correspondiente será:
nombre_mes <<= MES(2) (esto devolvería "Febrero")
MES <<= nombre > Le decimos a la función que devuelva el resultado al algoritmo
principal
Fin función
Debes notar como pasan los valores desde el algoritmo principal a la función. en este
caso, cuando se llama a la función
nombre_mes MES (numero_mes)
el valor que se pasa a la misma está en la variable numero_mes que toma un valor
comprendido entre 1 y 12.
Cuando se llama a la función, este valor debe ser recibido por la misma, en este caso
en el cuerpo de la función se coloca entre paréntesis el nombre de la variable que recibirá el
valor:
Función MES (valor)
Si se pasan varios valores, todos deben ser recibidos en su correspondiente
variables.
La función toma el valor pasado desde el algoritmo y lo guarda en la variable valor
para procesarlo. Luego de que obtiene un resultado, en este caso el valor de nombre_mes,
se le ordena a la función que devuelva ese valor al algoritmo principal:
Procedimientos
Hemos visto que las funciones se utilizan para devolver como resultado un valor Sin
embargo, en ocasiones necesitaremos devolver más de un resultado o también ejecutar las
mismas líneas de código varias veces en un algoritmo (como por ejemplo una ordenación,
etc.) En estas situaciones la función no es apropiada y se utilizarán los procedimientos
(también llamados subrutinas).
Un procedimiento es un conjunto de sentencias o instrucciones que realizan una
determinada tarea y que pueden ser ejecutados desde más de un punto del programa
principal. Un procedimiento tiene una llamada, cuando el procedimiento se ejecuta
totalmente, vuelve al punto desde donde fue llamado y se ejecuta la siguiente instrucción.
El procedimiento se escribe como cualquier otro algoritmo, solo existen diferencias en
la parte inicial y final. Para nombrar los procedimientos se deben seguir las mismas reglas
que para las variables. Notemos que el objetivo de los procedimientos es ayudar en la
modularidad del programa y evitar la repetición de instrucciones ya que estas se pueden
escribir en un procedimiento y en lugar de repetirlas, llamar al procedimiento cuantas veces
sea necesario.
Desde el programa principal es posible pasar valores (numéricos, alfanuméricos o
combinación de ambos) al procedimiento. este utilizará esos valores para realizar un
determinado proceso. Los valores que se pasan a un procedimiento (en forma de variables)
se llaman parámetros (de igual forma que en las funciones).
Declaración de un procedimiento
La sintaxis para la declaración de un procedimiento es la siguiente:
Procedimiento Nombre_procedimiento (parámetros)
<......acciones...>
<......acciones...>
Fin Procedimiento
La llamada a un procedimiento se hace simplemente por su nombre:
Nombre_procedimiento(parámetros)
También es posible que no se pase ningún parámetro al procedimiento, en cuyo caso
la llamada se hace así:
Nombre_procedimiento()
Cuando no se pasan parámetros se puede obviar los paréntesis.
Nombre_procedimiento
Podemos utilizar procedimientos, por ejemplo para dibujar recuadros en la pantalla,
mostrar mensajes de error, realizar procesos en los que se debe devolver más de un
resultado, colocar en un procedimiento las líneas de código que se repiten varias veces en
un algoritmo.
Cuando necesitemos devolver más de un valor en un procedimiento, las variables que
se devolverán los resultados deben figurar en la lista de parámetros.
* Ejemplo: Procedimiento para calcular el cociente y resto de la división entre dos números
inicio
leer numeroA, numeroB
DIVISION (numeroA, numeroB, P, Q)
imprimir P, Q
fin
Pseudocódigo
El pseudocódigo que a continuación se define fue tomado de la guía EGEL lnfo-Comp del
CENEVAL. Sirve para escribir programas de computadora en lenguaje natural de tal manera que se
facilite la comprensión, prueba y posterior codificación en un lenguaje de programación específico.
1. Convenciones
2. Tipos de datos
3. Estructuras de datos
4. Operadores
5. Operaciones de cadenas
6. Comentarios
7. Estructuras de control
8. Funciones o procedimientos
9. Operaciones de entrada/salida
Bibliografía
1. Convenciones
La relación de convenciones empleadas en el pseudocódigo es la siguiente:
El pseudocódigo se escribe empleando la fuente Times New Roman Las palabras reservadas
del pseudocódigo se muestran en negritas
Los puntos "..." indican la posibilidad de repetir algún elemento del pseudocódigo
Cuando exista la posibilidad de elegir algún elemento a partir de un conjunto de elementos,
éstos se listarán separados por el símbolo "|"
Las diferentes opciones o posibilidades de uso del pseudocódigo se listan con viñetas
El pseudocódigo posee las características siguientes:
Se emplean oraciones en lenguaje natural, donde cada una se refiere a una actividad general
o específica
Se utiliza un lenguaje común, sin palabras rebuscadas
Se evitan errores gramaticales, abreviaciones y puntuaciones
2. Tipos de datos
Los tipos de datos básicos son:
string cadena de caracteres
integer número entero
real número real
boolean falso o verdadero
Estos tipos de datos se declaran de acuerdo con las formas siguientes:
tipo variable1
tipo variable2, variable3 , ... , variablen
tipo variablen1, variablen2, ... , variablenm = valor
donde: tipo puede ser string, integer, real o boolean.
3. Estructuras de datos
Las estructuras de datos son:
arreglos
tipo array1[rango1,...,rangon], ... , array2[rango1, ... , rangon]
donde: rangon: número de localidades deseadas. La primera localidad se referencia con uno.
tipo: es alguno de los tipos de datos básicos o alguna estructura de datos.
registros
Declaración:
record nombre_registro
tipo variable1
... ...
tipo variablen
end
Creación de un registro:
nombre_registro registro
La referencia a un campo de un registro se efectúa de la forma: registro.nombre_campo
archivos
Declaración:
file nombre_archivo
clases
Declaración:
class nombre_clase
variables y funciones miembros
end
Instanciación de un objeto:
nombre_clase objeto
La referencia a un campo de una clase se efectúa de la forma: objeto.nombre_campo. El
llamado a una función de una clase se efectúa de la forma:
objeto.nombre_función(lista_parámetros)
4. Operadores
Aritméticos:
+ suma
- resta
* multiplicación
/ división
mod módulo
div división entera
de comparación:
= igual
<> diferente
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
lógicos:
AND La expresión será verdadera si y sólo si ambas expresiones son verdaderas
OR La expresión será verdadera si al menos una expresión es verdadera
XOR La expresión será verdadera si y sólo si ambas expresiones son diferentes (verdadero y falso, o
viceversa)
NOT El valor de la expresión es la negación de la expresión original
Nota: La precedencia de los operadores la establecerán los paréntesis
5. Operaciones de cadenas
Las funciones para cadenas son las siguientes:
length (nombre_de_la_cadena)
Regresa un valor entero que "contiene" la longitud de la cadena nombre_de_la_cadena
substring(nombre_de_la_cadena,posición_inicial,longitud)
Regresa una cadena, en donde:
posición inicial es la posición a partir de la cual se copiará el contenido de nombre_de_la_cadena
longitud es el número de caracteres que se copiarán
La forma para copiar el contenido de una cadena hacia otra es:
cadena1=cadena2
La concatenación de cadenas puede ser:
cadena_1 =cadena_2 +cadena_3
cadena_1 =cadena_1 +cadena_2
6. Comentarios
Recopilación Prof. Ariel Villar 49
Manual de Pseudocódigo – Programación Estructurada
-- comentario
/* línea1
línea2
...
línean */
7. Estructuras de control
if c1 then
e1
else
e2
case variable | expresión of
valor1: e1
valor2: e2
...
valorn: en
otherwise: ex
end
donde: otherwise es opcional
lteraciones condicionales
while c1
e1
do
e1
until c1
for variable = valor_inicial to c1, incremento | decremento
e1
Notas:
Es posible efectuar combinaciones de las estructuras de control de secuenciación, condición e
iteración condicional
en puede ser una asignación, alguna estructura de control, combinación de estas últimas o una
secuenciación delimitada por las palabras reservadas de: begin y end
cn es una condición
Se recomienda que los pseudocódigos posean una indentación o sangría consistente
8. Funciones o procedimientos
func nombre_función (lista_parámetros): tipo
begin
e1
...
en
return variable | expresión | valor
end
donde:
lista_parámetros, : tipo y return son opcionales
Recopilación Prof. Ariel Villar 50
Manual de Pseudocódigo – Programación Estructurada
Algoritmo
Algoritmo: Secuencia finita de pasos (acciones) que sirven para resolver un problema.
Ejemplo de Rueda pinchada.
Algoritmo rueda pinchada
Abrir baúl
Sacar rueda auxilio
Sacar gato
Levantar coche
Repetir
Sacar tuerca
Hasta que No halla más tuercas
Sacar Rueda
Poner Rueda de Auxilio
Repetir
Poner Tuerca
Hasta que estén todas
Bajar coche
Guardar Rueda
Guardar Gato
Fin algoritmo
Herramientas para construir Algoritmos: Diagrama de flujo, diagrama de Jackson,
Pseudocódigo
Pseudocódigo: Se utiliza durante toda la carrera. Se asemeja al lenguaje de prog..
Una vez construido el algoritmo en pseudocódigo, se traduce a un lenguaje que “entiende la computadora”
quedando construido el programa.
El lenguaje que se utilizará es el Pascal, Versión Turbo Pascal 7.0.
Introducción al Pseudocódigo
Variable
Concepto de Variable: Casillero que tiene un Nombre (Referencia) y Contenido
Nombre: Identificador, debe ser una palabra compuesta sólo por letras, el carácter „_‟ y números. No puede
comenzar con un número.
Expresión
Expresión: Representa un valor
Está formada por:
è Valor o Variable
è Variable o Valor operador Expresión
Operadores
Los operadores pueden utilizarse:
Entre Números: Deben estar entre expresiones numéricas
Enteros : +, - , *, Div, Mod
Reales: +,-,*,%
Entre valores Lógicos: Deben estar entre expresiones lógicas
^ , v, ¬
Lógicos : >,<, >=, =<,=, +
Ejercicios de expresiones.
Indicar que valor representan las sig. Expresiones:
Exp1: 5+1
Exp2: A v B ^ (5>=Numero) A=V B=F Numero=4
Exp3: V ^ C C=F
Indicar que tipo de valores deben tener las siguientes variables para que las expresiones sean correctas.
Exp1: 5+Num/4
Exp2: (Letra + 5) v Numero
Exp3: (Numero * 7 / Letra) = „a‟
Acciones de Secuencia:
Asignar
Leer
Escribir
Escribir
Escribir: Permite exteriorizar una expresión.
Sintaxis:
Ejemplo:
Escribir(Numero+3)
Escribir(Letra, Numero+1, „Hola‟)
Nota: „Hola‟ no es un valor de ningún tipo conocido, es decir, no es un carácter, pero se anotará de esta forma
cuando se quiera escribir „H‟, ‟o‟, ‟l‟, ‟a‟.
Ejercicio:
Ingresar un Número y luego imprimir el cubo del mismo.
Asignar
Sintaxis:
Variable <- Expresión
Ejemplo:
Numero<-7
Letra<-„s‟
Ejercicio:
2
Almacenar en una variable el 8 * 6
Leer
Sintaxis:
Leer(Variable)
Ejemplo:
Leer(Numero) Cuando se ejecuta la acción se ingresará un valor y quedará almacenado en la variable
Leer(Letra)
Ejercicio:
Ingresar un Número y luego imprimir el cubo del mismo.
Acciones de Selección:
Si
Si, Permite tomar una decisión a partir de una expresión lógica.
Sintaxis:
Si <expresión lógica> Entonces
Recopilación Prof. Ariel Villar 53
Manual de Pseudocódigo – Programación Estructurada
Acción/es
Fin si
Ejemplo:
Si (Numero=4) Entonces
Escribir(„El número es un cuatro‟)
Escribir(„Ingrese otro número‟)
Leer (Numero)
Fin si
Ejercicio:
Ingresar un Número y decir si es mayor menor o igual a cero
EJERCITACION:
Estructuras repetitivas
01) Escribir un algoritmo que calcule el área de un triángulo.
02) Escribir un algoritmo que calcule el área de un rectángulo.
03) Escribir un algoritmo que calcule el área de un trapecio.
04) Escribir un algoritmo que calcule el precio de un artículo tras aplicarle un 16% de IVA.
05) Escribir un algoritmo que intercambie el contenido de dos variables.
Estructuras alternativas
01) Diseñar un esquema de menú de opciones, por ejemplo, un menú para seleccionar un
libro a leer de entre siete disponibles.
02) Escribir un algoritmo que lea tres números e imprima por pantalla el mayor de ellos.
03) Escribir un algoritmo que lea tres números e imprima por pantalla el menor de ellos.
En esta página:
Estructuras de control; secuenciales y selectivas
Elementos básicos para la descripción de algoritmos
Recopilación Prof. Ariel Villar 55
Manual de Pseudocódigo – Programación Estructurada
El principio y el fin
Asignaciones
Comentarios
Estructuras de control
Estructuras secuenciales
Estructuras selectivas
Ejercicios
Sobre estructuras secuenciales
Sobre estructuras selectivas
Asignaciones
Sobre las asignaciones ya hablamos la vez pasada, al tratar el tema de las variables,
vamos a recordarlo brevemente:
Cuando hayamos declarado una variable, llegará un momento en el que querremos
que la variable tome algún valor. Por ejemplo, tenemos una variable de tipo entero que se
llama I y queremos asignarle el valor 3, entonces, escribiremos:
I <- 3
Comentarios
Poner comentarios de lo que vamos haciendo es muy útil, sobre todo cuando llega la
hora de revisar el algoritmo, si no, más de una vez nos encontraremos diciendo "uumm...
¿qué demonios hacía esto?"
No cuesta nada documentar el código y nos ahorrará dolores de cabeza :) La
convención que seguiremos será poner los comentario entre llaves. Así, {esto será un
comentario}
Estructuras de control
Las estructuras de control tienen una finalidad bastante definida: su objetivo es ir
señalando el orden en que tienen que sucederse los pasos de un algoritmo.
Veamos un ejemplo: supongamos que acabamos de mostrar un mensaje en la
pantalla que pregunte al usuario "¿desea seguir adelante?".
Obviamente, de la respuesta del usuario va a depender la siguiente acción del
programa. Por ejemplo, si este mensaje se nos presenta tras haber pulsado un botón de
cerrar la aplicación, si nosotros elegimos "Sí", la aplicación se cerrará, y si elegimos "No", la
aplicación seguirá adelante.
El programador tiene que haber escrito código para las dos posibilidades, aunque
cuando el programa esté funcionando, sólo se elegirá una.
Las estructuras de control son de tres tipos:
Secuenciales
Selectivas
Repetitivas
Estructuras secuenciales
Una estructura de control secuencial, en realidad, no es más que escribir un paso del
algoritmo detrás de otro, el que primero se haya escrito será el que primero se ejecute (al
implementarlo, por ejemplo).
Veamos un ejemplo: queremos leer el radio de un círculo, calcular su área y mostrar
por pantalla al usuario el resultado.
Declaración de variables
REAL: radio, area
fin declaración de variables
inicio
mostrar por pantalla 'dame el radio del circulo'
leer del teclado la variable radio
área <- 3.14159*radio
mostrar por pantalla 'el área del circulo es:'
mostrar por pantalla el contenido de la variable área
fin
Notar una cosa: cuando queremos hacer cosas relativas a entrada o salida por algún
dispositivo, como el teclado, la pantalla o la impresora, yo pongo cosas como "mostrar por
pantalla", o "leer del teclado". Dado que cada lenguaje de programación tiene sus funciones
de entrada / salida, no uso la forma particular de ninguno, simplemente, lo que le diríamos al
ordenador en caso de que fuera una persona ("oye, por favor, sácame esto por impresora").
Por otro lado, cuando queramos decir que nos muestre el contenido de una variable,
yo he puesto "mostrar por pantalla el contenido de la variable área", pero podía haber puesto
igualmente "mostrar por pantalla área", o cosas similares. Vosotros elegís la forma que os
resulte más clara o más cómoda, lo importante es que las intenciones sean claras, o, lo que
es lo mismo, "no ambiguas" ;)
Además, si os fijáis, para que quede claro que una cosa es mostrar por pantalla una
cadena, y otra cosa es mostrar por pantalla el valor de una variable, el texto que aparece
entre ' ' es una cadena, mientras que el que no aparece entre ' ' no es una cadena, sino que
se refiere a una variable.
Ahora vamos a pasar a las estructuras selectivas y a las repetitivas. Para ello,
necesitamos primero hablar un poco de... CONDICIONES.
La palabra condición nos sugiere frases como "lo haré a condición de que me dejes tu
boli". Analicemos esta frase con un poco de detenimiento.
Decimos "lo haré", pero, ¿"lo haré" siempre, pase lo que pase? o, por el contrario, ¿"lo
haré" si antes hay algo que debe cumplirse? En la frase está claro que no se ha dicho "lo
haré" sin más, si no que hay como una pequeña cláusula "SI me dejas tu boli".
Ya nos ha vuelto a aparecer el SI; esto parece querer decir que debe ser algo
importante.
Lo que significa "SI me dejas tu boli" es lo siguiente, en caso de que la acción
"dejarme tu boli" sea cierta (o verdad, usaré ambas palabras), yo "lo haré". Pero si la acción
"dejarme tu boli" es falsa (o mentira), yo NO "lo haré".
En esto reside el "quid" de las estructuras que vamos a ver a continuación: se
EVALUA una condición, y se actúa en consecuencia, según que la condición sea
VERDADERA o FALSA.
Estructuras selectivas
Estas estructuras se utilizan para TOMAR DECISIONES (por eso también se llaman
estructuras de decisión o alternativas). Lo que se hace es EVALUAR una condición, y, a
continuación, en función del resultado, se lleva a cabo una opción u otra.
Alternativas simples
Son los conocidos "si... entonces". Se usan de la siguiente manera (una vez más, la
escritura es más o menos personal, siempre que las intenciones queden claras para todos):
yo quiero evaluar una condición, y si se cumple (es decir, si es cierta), entonces realizaré
una serie de pasos. Esto lo podemos escribir así:
SI se cumple la condición, ENTONCES:
Hago el paso 1
....
Hago el paso N
fin del SI
Muy estrictamente, sería:
SI se cumple la condición, ENTONCES:
inicio
Hago el paso 1
....
Hago el paso N
fin
fin del SI
pero con una buena sangría nos podemos evitar escribir de más ;) es importante
cerrar el SI, ya que, si no se cumple la condición, el programa seguirá a continuación de
donde termina el SI.
Por ejemplo, queremos calcular la raíz cuadrada de un número; sin embargo todos
sabemos (¡supongo! ;)) que la raíz cuadrada de un número negativo NO es un número real.
Esto quiere decir que, tras leer el número por teclado, tendremos que ver si es positivo, ya
que sólo en este caso podremos calcular su raíz cuadrada.
Recopilación Prof. Ariel Villar 58
Manual de Pseudocódigo – Programación Estructurada
inicio
mostrar por pantalla 'introduce un numero'
leer del teclado la variable numero
SI numero >= 0 ENTONCES:
raíz <- raiz_cuadrada(numero)
mostrar por pantalla 'la raíz cuadrada es:'
mostrar por pantalla raíz
fin del SI
fin
Como extraer una raíz cuadrada es una operación que, en principio, no es elemental,
yo he puesto raiz_cuadrada(numero), eso significa que, en alguna parte, tengo definida una
función que me calcula la raíz cuadrada de un número. Ya hablaremos de funciones y
subrutinas más adelante, pero hago esta aclaración para que conste que raiz_cuadrada no
forma parte de ningún tipo de especificación de pseudocódigo ;-)
Sin embargo, hubiera sido bonito haber podido avisar al usuario de que no podíamos
calcular la raíz cuadrada en caso de que el número fuera negativo, pero no os preocupéis,
para ello tenemos las...
Alternativas dobles
O el famoso trío "si ... entonces ... sino" ;-D
Se usan de esta forma: queremos evaluar una condición, si es verdad, realizaré una
serie de pasos, y SI NO es verdad (es decir, si es falsa, si es una puerca mentira cochina... ;)
), entonces realizaré otra serie de pasos. Esto lo podemos escribir así:
SI se cumple la condición, ENTONCES:
Hago el paso A1
....
Hago el paso AN
y SI NO se cumple la condición, ENTONCES:
Hago el paso B1
....
Hago el paso BM
fin del SI
Con esto, nuestro algoritmo para la raíz cuadrada quedaría:
Declaración de variables
REAL: numero, raíz
fin declaración de variables
inicio
mostrar por pantalla 'introduce un numero'
leer del teclado la variable numero
SI numero >= 0 ENTONCES:
raíz <- raiz_cuadrada(numero)
mostrar por pantalla 'la raíz cuadrada es:'
mostrar por pantalla raíz
SI NO es numero >=0 ENTONCES: {es decir, si numero es negativo}
mostrar por pantalla 'lo siento, no puedo calcular
la raíz cuadrada de un numero negativo'
fin del SI
Recopilación Prof. Ariel Villar 59
Manual de Pseudocódigo – Programación Estructurada
fin
Alternativas múltiples
Es muy probable que tengamos la necesidad de incluir en nuestros programas
alternativas con muchas opciones posibles. Esto lo podríamos hacer a base de anidar "si ...
entonces ... si no", pero si es un número elevado de alternativas, se hace demasiado
farragoso como para resultar inteligibles.
Por ejemplo, si queremos hacer un menú que dé a elegir cuatro opciones, un posible
algoritmo sería:
{Algoritmo MENU a base de 'si ... entonces ... sino'}
Declaración de variables
ENTEROS: opción
fin declaración de variables
inicio
mostrar por pantalla 'menú de opciones:'
mostrar por pantalla '1. Diccionario de sinónimos'
mostrar por pantalla '2. Diccionario de antónimos'
mostrar por pantalla '3. Buscar palabra'
mostrar por pantalla '4. Salir'
leer del teclado la variable opción
SI opción = 1 ENTONCES
{lo que toque a esta opción}
SI NO, ENTONCES
SI opción = 2 ENTONCES
{lo que toque a esta opción}
SI NO, ENTONCES
SI opción = 3 ENTONCES
{lo que toque a esta opción}
SI NO, ENTONCES
SI opción = 4 ENTONCES
{lo que toque a esta opción}
SI NO, ENTONCES
mostrar por pantalla 'opción incorrecta'
fin del SI
fin del SI
fin del SI
fin del SI
fin
Farragoso, ¿verdad?
Para evitar esto (¿os imagináis que en vez de cuatro fueran 20 las alternativas?), está
la estructura "según sea". La idea es esta; por ejemplo, como en el algoritmo que hemos
puesto del menú, pedimos al usuario que entre una opción, y hay cuatro posibilidades,
cuatro posibles valores para los que haremos algo.
Entonces, SEGUN lo que valga la variable opción, elegiremos una alternativa de entre
todas las posibles.
La forma de escribir esto en pseudocódigo es:
SEGUN SEA la variable o la expresión HACER
VALOR1: {las acciones que toque}
...
VALORN: {las acciones que toque}
por defecto: {las acciones que toque}
Recopilación Prof. Ariel Villar 60
Manual de Pseudocódigo – Programación Estructurada
fin SEGUN
¿Qué pinta ahí ese 'por defecto'?
No es más que una alternativa por si acaso se elige alguna opción no contemplada
entre las que se ofrece.
Como ejemplo, vamos a ver nuestro menú utilizando la alternativa múltiple
SEGUN SEA:
{Algoritmo MENU a base de 'según sea'}
Declaración de variables
ENTEROS: opción
fin declaración de variables
inicio
mostrar por pantalla 'menú de opciones'
mostrar por pantalla '1. Diccionario de sinónimos'
mostrar por pantalla '2. Diccionario de antónimos'
mostrar por pantalla '3. Buscar palabra'
mostrar por pantalla '4. Salir'
leer del teclado la variable opción
BIBLIOGRAFÍA