Algoritmos Pseint
Algoritmos Pseint
VARIABLES
Variables
Una variable en un algoritmo computacional es una posicin de memoria donde se puede
almacenar informacin. Por ejemplo, si un programa debe obtener el rea de un tringulo,
seguramente la base del mismo y su altura se carguen en memoria en dos variables para
poder realizar el clculo. El resultado, probablemente tambin se asigne en una variable luego
del clculo para luego informarlo al usuario. Como su nombre lo indica, el valor almacenado
en una variable puede ir variando a medida que el programa avanza. En un
pseudocdigo el concepto es similar. Una variable representa un lugar donde guardar
cierta informacin.
En un algoritmo o programa se hace referencia a una variable mediante un identificador
(el nombre de la variable). Un identificador debe comenzar con letras, y puede
contener solo letras, nmeros y el guion bajo. No puede contener ni espacios ni
operadores, ni coincidir con una palabra reservada o funcin del lenguaje, para no
generar ambigedad. Ejemplos de identificadores vlidos son: A, B, C, Lado1, Total,
Nombre_y_Apellido, DireccionCorreo, ... En la mayora de los lenguajes reales los nombres de
variables no pueden contener acentos, ni diresis, ni ees. En PSeInt, esto se permite,
dependiendo del perfil de lenguaje seleccionado (nosotros usamos flexible).
En PSeInt las variables tienen un tipo de dato asociado, por lo que durante la ejecucin
del algoritmo una variable deber guardar datos siempre del mismo tipo. Por ejemplo, si una
variable se utiliza para guardar nmeros, no puede utilizarse luego para guardar texto. Puede
declarar explcitamente el tipo de una variable con la palabra clave Definir, o puede dejar
que el intrprete intente deducirlo a partir de los datos que se guardan en la misma y la
forma en que se la utiliza en el algoritmo. Si utiliza el perfil de lenguaje por defecto
(Flexible), la definicin explicita es opcional, pero se puede configurar el lenguaje
para que la sea obligatoria.
Hay dos formas de crear una variable y/o asignarle un valor: la lectura y la
asignacin. (<-). Por ejemplo, la asignacin "A<-0;" est indicando implcitamente que la
variable A ser una variable numrica. Una vez determinado el tipo de dato, deber
permanecer constante durante toda la ejecucin del proceso; en caso contrario el
proceso ser interrumpido. Si se lee o asigna un valor en una variable que no existe,
esta se crea. Si la variable ya exista, esta toma el nuevo valor, perdiendo el viejo.
Por esto se dice que la asignacin y la lectura son acciones destructivas (aunque se debe
notar que en la asignacin pueden intervenir ms de una variable, y solo se destruye el
contenido previo de la que se encuentra a la izquierda del signo de asignacin). Una vez
inicializada, la variable puede utilizarse en cualquier expresin (para realizar un clculo en
una asignacin, para mostrar en pantalla, como condicin en una estructura de control, etc.)
Tipos de Datos
Los tipos de datos simples se determinan automticamente cuando se crean las variables.
Las dos acciones que pueden crear una variable son la lectura (leer) y la asignacin (<- o
:=). Por ejemplo, la asignacin "A<-0;" est indicando implcitamente que la variable A ser
una variable numrica. Una vez determinado el tipo de dato, deber permanecer constante
durante toda la ejecucin del proceso; en caso contrario el proceso ser interrumpido.
Se puede definir el tipo de una variable antes de utilizarla. Esta definicin puede ser
obligatoria u opcional dependiendo de la configuracin del lenguaje.
Tipos Simples: Numrico, Lgico, Carcter.
Numrico: nmeros, tanto enteros como reales. Para separar decimales se utiliza el punto.
Ejemplos: 23 0 -2.3 3.14
Definicin de variables
La instruccin definir permite explicitar el tipo de una o ms variables. Esta definicin
puede ser opcional u obligatoria dependiendo de la configuracin del lenguaje. La sintaxis es:
Definir <var1> , <var2> , ... , <varN> Como [REAL/ENTERO/LOGICO/CARACTER];
Una variable debe definirse antes de ser utilizada por primera vez. Los arreglos, se definen
utilizando su identificador (sin subndices ni dimensiones) antes o despus de dimensionarlos,
y el tipo aplica para todos los elementos del mismo (ya que se trata de una estructura de
datos homognea).
Los tipos posibles son NUMERO, NUMERICO, REAL, ENTERO, LOGICO, CARACTER, TEXTO,
CADENA.
NUMERO, NUMERICO y REAL son sinnimos para el tipo de datos numrico bsico, que
puede almacenar tanto nmeros reales como enteros. El tipo ENTERO es una especializacin
que slo permite almacenar valores enteros; cualquier valor no entero que se lea o asigne en
una variable de este tipo ser truncado.
Una variable de tipo LOGICO slo puede tomar los valores VERDADERO y FALSO, pero
cuando se lee una variable ya definida como lgica, el usuario puede ingresar tambin las
abreviaciones V y F, o 0 y 1.
CARACTER, TEXTO y CADENA son sinnimos para definir variables de tipo carcter. Estas
pueden contener cero, uno o ms caracteres arbitrarios y no tienen una longitud mxima. Si
se declara una variable de este tipo y en una lectura el usuario ingresa un nmero o un valor
lgico, se asignar una cadena que contiene el texto ingresado (ejemplo: "1", "VERDADERO",
etc). Si se intenta asignar a una variable ya definida un dato de un tipo incorrecto se
producir un error en tiempo de ejecucin.
Cuando la configuracin del lenguaje habilita la sintaxis flexible, se pueden definir tipos de
variables de una forma alternativa y ms coloquial, mediante las palabras claves Es y Son,
como sigue:
<var> Es [REAL/ENTERO/LOGICA/CARACTER];
<var1> , <var2> , ... , <varN> Son [REALES/ENTEROS/LOGICAS/CARACTERES];
Lectura de variables
La instruccin Leer permite ingresar valor a una variable, por parte del programador.
Leer <variable1> , <variable2> , ... , <variableN> ;
Esta instruccin toma N valores desde el teclado y los asigna a las N variables
mencionadas. Pueden incluirse una o ms variables, por lo tanto el comando leer uno o ms
valores. Si una variable donde se debe guardar el valor ledo no existe, se crea
durante la lectura.
Si se utiliza sintaxis flexible se permite opcionalmente separar las variables a leer
simplemente con espacios en lugar de comas. Esto se configura en el cuadro de Opciones del
Pseudocdigo.
El ejemplo Suma muestra un programa muy simple que lee dos nmeros y calcula y
muestra la suma de los mismos. Si la variable existe se pierde su valor anterior ya que
tomar el valor nuevo, razn por la cual se dice que la lectura es "destructiva"
(destruye el valor que tena previamente la variable). En el ejemplo siguiente
definimos la variable intentos como entero, le asignamos el valor 15 y en cada ciclo le
restamos 1 a su valor hasta que la intentos llegue a valor cero.
Asignacin
La instruccin de asignacin permite almacenar una valor en una variable.
<expresin> ;
Escritura
La instruccin Escribir permite mostrar valores al monitor. Escribir <exprl> , <expr2> , ... ,
<exprN> ;
expresin, se escriben una a continuacin de la otra sin separacin, por lo que el algoritmo
debe explicitar los espacios necesarios para diferenciar dos resultados si as lo requiere.
Si en algn punto de la lnea se encuentran las palabras clave "SIN SALTAR" o "SIN BAJAR"
los valores se muestran en la pantalla, pero no se avanza a la lnea siguiente, de modo que la
prxima accin de lectura o escritura continuar en la misma lnea. En caso contrario, se
aade un salto de lnea luego de las expresiones mostradas.
Escribir Sin Saltar <exprl> , ... , <exprN>;
Sin Saltar;
Esta instruccin permite ejecutar opcionalmente varias acciones posibles, dependiendo del
valor almacenado en una variable de tipo numrico. Al ejecutarse, se evala el contenido de
la variable y se ejecuta la secuencia de instrucciones asociada con dicho valor.
Cada opcin est formada por uno o ms nmeros separados por comas, dos puntos y una
secuencia de instrucciones. Si una opcin incluye varios nmeros, la secuencia de
instrucciones asociada se debe ejecutar cuando el valor de la variable es uno de esos
nmeros. Opcionalmente, se puede agregar una opcin final, denominada De Otro Modo,
cuya secuencia de instrucciones asociada se ejecutar slo si el valor almacenado en la
variable no coincide con ninguna de las opciones anteriores. ES UN LAZO MUY BUENO PARA
PROGRAMAR MENUS
Este tipo de instruccin se podra realizar tambin con una secuencia tipo si
anidada, pero el cdigo nos quedara ms difcil.
LAZO REPETIR
(DO-WHILE)
Al ejecutarse esta instruccin, la secuencia de instrucciones que forma el cuerpo del ciclo se
ejecuta una vez y luego se evala la condicin. Si la condicin es falsa, el cuerpo del ciclo se
ejecuta nuevamente y se vuelve a evaluar la condicin. Esto se repite hasta que la condicin
sea verdadera.
Note que, dado que la condicin se evala al final, las instrucciones del cuerpo
del ciclo sern ejecutadas al menos una vez.
Adems, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna instruccin
que modifique la o las variables involucradas en la condicin de modo que en algn momento
la condicin sea verdadera y se finalice la ejecucin del ciclo.
Si se utiliza sintaxis flexible (ver Opciones del Pseudocdigo) se permite opcionalmente
utilizar Mientras Que en lugar de Hasta Que, de modo que el conjunto de acciones contenidas
en el bucle se ejecuta mientras que la condicin sea verdadera. Notar que la palabra Que es
la que diferencia el uso de la palabra Mientras en la estructura repetir de la estructura
Mientras. Es decir, si se omite la palabra que se considera como el comienzo de un bucle
Mientras en lugar del final de un bucle Repetir.
Podras diferenciar claramente este lazo del lazo mientras?
SUBPROCESOS
Si el perfil de lenguaje seleccionado lo permite (ver Opciones del Pseudocdigo), se pueden
declarar nuevas funciones o subprocesos en un algoritmo en Pseudocdigo. La sintaxis para
ello es la siguiente:
Funcion variable_de_retorno <- nombre_de_la_funcion ( argumento_1, argumento_2, ... )
accin 1;
accin 1;
.
accin n;
FinFuncion
Comienza con la palabra clave Funcion (alternativamente puede utilizarSubProceso
o SubAlgoritmo, son sinnimos) seguida de la variable de retorno, el signo de asignacin, el
nombre del subproceso, y finalmente, la lista de argumentos entre parntesis. Existen
variantes para esta estructura. Si la funcin no retorna ningn valor, pueden omitirse la
variable de retorno y el signo de asignacin. Es decir, se puede colocar directamente el
nombre y los argumentos a continuacin de la palabra clave Funcion. Si el subproceso no
recibe ningn valor pueden colocarse los parntesis vacos u omitirse, finalizando la primer
lnea con el nombre del subproceso. Las reglas para los nombres de subprocesos,
variables de retorno y argumentos son las mismas que para cualquier identificador
en pseudocdigo.
Adems, opcionalmente pueden agregarse las palabras claves Por Valor o Por Referencia
para indicar el tipo de pasaje en cada argumento. Si no se indica, los arreglos se pasan por
referencia, las dems expresiones por valor. El pasaje por referencia implica que si la funcin
modifica el argumento, se modificar en realidad la variable que se utiliz en la llamada,
mientras que el pasaje por valor implica que la funcin opera con una copia de la variable (o
el resultado de la expresin) que se utiliz en la llamada, por lo que las modificaciones que
aplique la funcin no se vern reflejadas fuera de la misma.
Para invocar a la funcin se debe utilizar su nombre y entre parntesis los
parmetros, que podrn ser expresiones slo si el tipo de pasaje es por referencia. Una
llamada puede ser en s una instruccin, pero si la funcin retorna algn valor, tambin puede
utilizarse como operando dentro de una expresin.