0% encontró este documento útil (0 votos)
425 vistas48 páginas

PSeInt - MANUAL 2024

Este documento presenta PSeInt, una herramienta educativa para la enseñanza de la programación. Explica las características del lenguaje pseudocódigo de PSeInt y las opciones para personalizarlo, como permitir diferentes sintaxis y estructuras de control.

Cargado por

Camila Mon
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
425 vistas48 páginas

PSeInt - MANUAL 2024

Este documento presenta PSeInt, una herramienta educativa para la enseñanza de la programación. Explica las características del lenguaje pseudocódigo de PSeInt y las opciones para personalizarlo, como permitir diferentes sintaxis y estructuras de control.

Cargado por

Camila Mon
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 48

INTRODUCCIÓN A LA PROGRAMACIÓN

1 “A”

MANUAL DE PSeInt
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

PSeInt

Contenido Página

Introducción 3

Primeros Pasos 8

Tipos de Datos 16

Variables 17

Operadores 19

Funciones Matemáticas 20

Funciones de Texto 21

Primitivas Secuenciales (Entrada, Salida, Asignación) 22

Estructura de Control: Si-Entonces 25

Estructura de Control: Selección Múltiple 28

Estructura de Control: Mientras-Hacer 30

Estructura de Control: Repetir-Hasta 32

Estructura de Control: Para 34

Arreglos 37

Manejo de Cadenas de Texto 39

SUBPROCESOS: Creación de Funciones y Procedimientos 42

2
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

1) Introducción

PSeInt (PSeudo Intérprete) es una herramienta educativa utilizada para asistir a


estudiantes en sus primeros pasos en programación. PSeInt ayuda a escribir
algoritmos utilizando un pseudo-lenguaje simple, intuitivo y en español.

El objetivo es permitir al estudiante centrar la atención en los conceptos


fundamentales que debe aprender, sin perder tiempo en los detalles de un lenguaje
o del uso de un intérprete o compilador. Permite ejecutar el algoritmo para
observar su funcionamiento y verificar los resultados.
En esta cátedra vamos a utilizar siempre la última versión del programa que deben
descargar de:

http://pseint.sourceforge.net/index.php?page=descargas.php

PSEINT realmente es más que gratis, es "de código abierto": cualquiera puede ver
cómo está creado, de forma que incluso si su autor perdiera el interés por el
proyecto, otras personas podrían retomarlo, lo que le garantiza una vida mucho
mayor.

3
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Personalización del Lenguaje


Hay ciertas características del pseudocódigo que pueden personalizarse para
adaptarse a las preferencias de cada docente. Por defecto, PSeInt utiliza la
configuración más flexible y natural posible, pero ofrece una lista de
configuraciones predefinidas denominadas "perfiles". Se puede acceder a la lista de
perfiles desde el ítem "Opciones del Lenguaje..." del menú "Configurar".

Si ninguno de los perfiles resulta adecuado se puede utilizar el botón


"Personalizar" ubicado debajo de la lista de perfiles para definir una por una las
siguientes posibles personalizaciones:

• No permitir utilizar variables o posiciones de arreglos sin inicializar: Si


esta opción está deshabilitada se puede utilizar variables sin inicializar (que
nunca fueron leídas o asignadas en expresiones o para mostrar en pantalla. En
este caso asumen el valor por defecto 0, "", o FALSO según el tipo que
corresponda. Si esta opción está seleccionada escribir o evaluar una expresión
que involucra una variable sin inicializar genera un error en tiempo de
ejecución.

4
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

• Obligar a definir los tipos de variables: Si esta opción está deshabilitada no


se puede utilizar una variable sin previamente definir su tipo. Para esto se debe
utilizar la palabra clave DEFINIR. Ej. "DEFINIR X COMO REAL". Los tipos
posibles son ENTERO, NUMERICO/REAL, LOGICO, CARACTER/TEXTO.

• Controlar el uso de “;” al final de sentencias secuenciales: Si esta opción


está activada obliga a colocar punto y coma “;” al final de las instrucciones
secuenciales, como se hace en lenguajes como C++ o Pascal (útil para
acostumbrarse antes de dar el salto desde el pseudocódigo a un lenguaje real).
si está desactivada el uso del punto y coma es opcional.

• Permitir concatenar variables de texto con el operador +: Si esta opción


esta activada se puede concatenar el contenido de dos variables de tipo
carácter con el operador +. Por ejemplo: NombreCompleto &- Nombre+"
"+Apellido;

• Habilitar funciones para el manejo de cadenas: Esta opción habilita el uso


de las funciones Longitud, Subcadena, Mayúsculas, Minúsculas y Concatenar,
que operan sobre cadenas de caracteres. Vea funciones para una mejor
descripción de las mismas.

• Permitir las palabras Y, O, NO y MOD para los operadores &, |, ~ y %: Con


esta opción habilitada PSeInt acepta las palabras clave Y, O, NO, y MOD como
sinónimos de los operadores &, |, ~ y % respectivamente. Notar que en este
caso estas palabras serán palabras reservadas y no se podrán utilizar como
nombres de variables.

• Utilizar arreglos en base 0: Si esta opción esta activada, el primer elemento


de un arreglo de N elementos será el 0 y el último el N-1, mientras que en caso
contrario el primero será el 1 y el último el N.

• Permitir utilizar variables para dimensionar arreglos: Si esta opción está


seleccionada se puede utilizar una variable o una expresión que involucre
variables para dimensionar un arreglo (por ejemplo, se puede pedir al usuario
del programa el tamaño leyendo un número y utilizarlo luego para crear el
arreglo). Este suele ser el caso de los lenguajes interpretados, mientras que los
lenguajes compilados suelen exigir que el tamaño de los arreglos estáticos sea
una constante (por ejemplo, C y C++).

• Permitir asignar con el signo igual (=): Esta opción habilita la asignación con
el signo igual (Ej.: x=0;). En muchos casos esta sintaxis de asignación no se
permite, ya que en muchos lenguajes no se utiliza el mismo operador para
asignar y comparar, como sucede al activar esta opción. En cualquier caso, las
otras dos sintaxis de asignación (con <- y con :=) siguen siendo válidas.

5
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

• Permitir definir funciones/subprocesos: Esta opción habilita el uso de las


palabras claves SubProceso y Función (ambas completamente equivalentes)
para permitir definir nuevas funciones en pseudocódigo. Vea subprocesos para
más detalles.

• Utilizar sintaxis flexible: Esta opción habilita variaciones opcionales en la


sintaxis: omitir la palabra HACER en un bucle MIENTRAS o PARA, utilizar la
palabra DESDE para indicar el valor de inicio de un ciclo PARA, separar la
expresiones/variables en una lectura/escritura con espacios en lugar de comas,
agregar la palabra OPCION, CASO o SI ES antes de un caso en un SEGUN,
separar los valores para un mismo caso en un según con la palabra O, utilizar la
estructura REPETIR-MIENTRAS QUE como variante de REPETIR-HASTA QUE,
etc. Además, permite utilizar acentos y eñes en los nombres de variables.
Muchas de las variaciones de la sintaxis resultan en construcciones más
naturales en un verdadero pseudocódigo, pero no son posibles o son
incompletas en un lenguaje de programación real. Ninguna de estas variaciones
cambiará el significado o comportamiento de un algoritmo, solo sirven para
simplificar su escritura.

• Permitir condiciones en lenguaje coloquial: Esta opción permite expresar


las condiciones en un lenguaje más coloquial con construcciones como "X ES
PAR", "X NO ES MULTIPLO DE 5", "X ES IGUAL A Y", "X ES ENTERO", etc. Esta
opción activa además el uso de palabras clave para reemplazar operadores.

• Limitar la estructura Según a variables de control numéricas: Muchos


lenguajes solo permiten utilizar números enteros para las expresiones de
control de la estructura de selección múltiple (\"Según\" en PSeInt). Si habilita
esta opción, PSeInt aplicará esta restricción. En caso contrario, podrá utilizar
también variables de tipo caracter.

• Permitir omitir el paso -1 en ciclos Para: Con esta opción activa, si no se


especifica el valor del \"paso\" en una estructura de tipo \"Para\", se utiliza +1
o -1 según corresponda. Se determina comparando los valores iniciales y
finales, si el primero es mayor al segundo +1, o -1 en caso contrario. Si se
desactiva esta opción, se utilizará siempre +1 como paso por defecto.

• Usar diagramas de Nassi-Schneiderman: Si esta opción está deshabilitada el


editor de diagramas flujo graficará este tipo de diagramas en lugar de los
diagramas de flujo clásicos utilizados originalmente por PSeInt. Esta opción no
modifica el lenguaje, por lo que también se puede activar/desactivar
directamente desde el menú Configurar mediante el ítem Usar diagramas de
Nassi-Schneiderman, de forma que el usuario pueda alternar entre uno y otro.

6
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

A continuación, se incluye un pseudocódigo de ejemplo escrito para los perfiles


Estricto y Flexible, ilustrando algunas diferencias entre configuraciones:

Proceso Estricto

Definir VAL_MAYOR, CANT, I Como Enteros;


Dimension ARREGLO[100];
Escribir "Ingrese la cantidad de números:";
Leer CANT;
Para i <- 1 Hasta CANT Hacer
Escribir "Ingrese un numero:";
Leer ARREGLO[I];
FinPara
VAL_MAYOR <- 0;
Para i <- 1 Hasta CANT Hacer
Si ARREGLO[I] > VAL_MAYOR Entonces
VAL_MAYOR <- ARREGLO[i];
FinSi
FinPara
Si VAL_MAYOR MOD 2 = 0 Entonces
Escribir "El mayor es ",VAL_MAYOR," y es par";
Sino
Escribir "El mayor es ",VAL_MAYOR," y es impar";
FinSi
FinProceso
Proceso Flexible
Escribir "Ingrese la cantidad de números:"
Leer CANT
Dimension ARREGLO[CANT]

Para Cada Elemento de ARREGLO


Escribir "Ingrese un numero:"
Leer ELEMENTO
Fin Para

VAL_MAYOR<-0
Para Cada ELEMENTO de ARREGLO
Si ELEMENTO Es Mayor Que VAL_MAYOR

7
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

VAL_MAYOR<-ELEMENTO
Fin Si
Fin Para

Si VAL_MAYOR Es Par
Escribir "El mayor es " VAL_MAYOR " y es par"
Sino
Escribir "El mayor es " VAL_MAYOR " y es impar"
Fin Si
FinProceso

2) PSeInt: Primeros Pasos


Si queremos crear un programa que muestre algún en pantalla, en la mayoría de
versiones de pseudocódigo usaremos la orden ESCRIBIR (en otras versiones puede
ser IMPRIMIR o MOSTRAR). A continuación de esta palabras, entre comillas,
detallaremos el texto que deseamos que aparezca en pantalla.

Escribir "Hola"

Hacerlo usando PSEINT también es casi igual de simple. En el caso de PSEINT, cada
programa debe encerrarse entre las palabras "Proceso" (para indicar dónde
comienza) y "FinProceso" (para señalar dónde termina).

8
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Pero eso no añade ninguna dificultad, porque cuando entramos a PSEINT, la


estructura de programa ya aparece escrito:

En la línea vacía que hay entre "Proceso" y "FinProceso", deberemos comenzar a


teclear nuestro programa, en este caso empezando por la palabra "Escribir".
Veremos que PSEINT se da cuenta de que se trata de una orden que conoce, y nos
recuerda cómo es la orden exacta, incluso cuando con apenas unas pocas letras:

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

9
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Mientras tecleamos, 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 pequeño detalle, debería quedar así:

10
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

La primera línea todavía es "Proceso sin_titulo". Podemos emplear un nombre más


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

El programa está completo: podemos comprobar su funcionamiento pulsando el


botón "Ejecutar", cuya imagen recuerda al "Play" de los equipos de música:

11
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

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 más adelante,


deberemos usar la opción "Guardar":

12
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Un programa puede estar formado por más de una orden, claro. Bastará con pulsar
Intro después del final de la orden "Escribir", para crear una nueva línea en blanco.
De hecho, ni siquiera es necesario teclear la orden, porque PseInt permite utilizar
las estructuras de programación más habituales simplemente haciendo clic en el
correspondiente botón del panel derecho:

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

13
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Añadimos otro texto que deseemos mostrar:

Y el nuevo resultado del programa sería:

14
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

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


demasiadas cuando uno empieza), las podrías desactivar desde el menú
Configurar / Asistencias:

15
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

3) TIPOS DE DATOS

• Tipos Simples: Numérico (entero, real), lógico, caracter.


• Estructuras de Datos: Arreglos.

Los identificadores, o nombres de variables, deben constar sólo de letras,


números y/o guión_bajo (_), comenzando siempre con una letra.

Tipos de Datos Simples

Tipo de dato Descripción


entero Tipo de dato asociado a cantidades enteras.
No poseen parte decimal. Ejemplo: 5, 6, -15, 199,…
Tipo de dato asociado a cantidades con parte decimal.
real
Por ejemplo: 0.06, -3.4, 2.16, 1000.345,…
Se refiere a aquellos datos que pueden tomar solo
lógico
dos posibles valores falso (F) o verdadero (T)
Asociado a aquellos datos que contienen caracteres alfanuméricos
caracter/cadena (letras, número, signos de puntuación, etc), encerrados entre
comillas (pueden ser dobles o simples)

Estructuras de Datos: Arreglos

Los arreglos son estructuras de datos homogéneas (todos sus datos son del mismo
tipo) que permiten almacenar un determinado número de datos bajo un mismo
identificador, para luego referirse a los mismo utilizando uno o más subíndices.
Los arreglos pueden pensarse como vectores, matrices, etc. Para poder utilizar un
arreglo, primero es obligatorio su dimensionamiento; es decir, definirlo
declarando los rangos de sus subíndices, lo cual determina cuantos elementos se
almacenarán y como se accederá a los mismos.

16
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

4) VARIABLES

Una variable en un algoritmo computacional es una posición de memoria donde se


puede almacenar información. Por ejemplo, si un programa debe obtener el área
de un triángulo, seguramente la base del mismo y su altura se carguen en memoria
en dos variables para poder realizar el cálculo. El resultado, probablemente
también se asigne en una variable luego del cálculo 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 pseudocódigo el concepto es
similar. Una variable representa un lugar donde guardar cierta información.
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, números y el guión bajo. No puede contener ni
espacios ni operadores, ni coincidir con una palabra reservada o función del
lenguaje, para no generar ambigüedad.
Ejemplos de identificadores válidos son:
A, B, C, Lado1, Total, Nombre_y_Apellido, DireccionCorreo
En la mayoría de los lenguajes reales los nombres de variables no pueden contener
acentos, ni diéresis, ni eñes. En PSeInt, esto se permite si se activa la Sintaxis
Flexible (ver Opciones del Pseudocódigo).
En algunos lenguajes se puede guardar cualquier información en cualquier
variable, mientras en otros las variables solo pueden guardar cierto tipo de
información. En PSeInt las variables tienen un tipo de dato asociado, por lo que
durante la ejecución del algoritmo una variable deberá guardar datos siempre del
mismo tipo. Por ejemplo, si una variable se utiliza para guardar números, no puede
utilizarse luego para guardar texto. Este tipo se puede declarar explícitamente con
la palabra clave Definir, o se puede dejar que el intérprete 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 definición
explicita es opcional, pero se puede configurar el lenguaje para que la misma sea
obligatoria.
Hay dos formas de crear una variable y/o asignarle un valor: la lectura y la
asignación. Si se lee o asigna un valor en una variable que no existe, esta se crea. Si
la variable ya existía, esta toma el nuevo valor, perdiendo el viejo. Por esto se dice
que la asignación y la lectura son acciones destructivas (aunque se debe notar que
en la asignación pueden intervenir más de una variable, y solo se destruye el
contenido previo de la que se encuentra a la izquierda del signo de asignación).
Una vez inicializada, la variable puede utilizarse en cualquier expresión (para
realizar un cálculo en una asignación, para mostrar en pantalla, como condición en
una estructura de control, etc.)

17
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Configurar la definición explícita de variables

Usaremos las variables declaradas en forma explícita con su tipo de dato, para se
deberá acceder a la opción “Configurar” y elegir “Opciones del lenguaje
(perfiles…) :

luego seleccionar “Estricto”, y Aceptar:

Declaración de variables

En sintaxis estricta, siempre que necesitemos hacer un programa, tendremos que


declarar variables para poder guardar la información que introduzcamos.

Ejemplos de declaración de variables:

DEFINIR numero Como Entero; //Numero es en una variable de tipo entero

DEFINIR nombre Como Cadena; //nombre es en una variable de tipo cadena

18
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

5) OPERADORES

Este pseudolenguaje dispone de un conjunto básico de operadores que pueden ser


utilizados para la construcción de expresiones más o menos complejas.

Operador Significado
Relacionales
> mayor
< menor
= igual
<= menor o igual
>= mayor o igual
<> distinto
Lógicos
% ó Y conjunción
| ó O disyunción
~ ó O negación
Algeraicos
+ suma
- resta
* multiplicación
/ división
^ potenciación
% ó MOD módulo (resto de la división entera)

La jerarquía de los operadores matemáticos es igual a la del álgebra, aunque puede


alterarse mediante el uso de paréntesis.

19
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

6) FUNCIONES MATEMÁTICAS

Casi cualquier lenguaje de programación tiene incorporadas ciertas funciones


matemáticas, de modo que nos permita calcular raíces cuadradas, logaritmos,
senos y cosenos, etc.

Función Significado

RC(X) o RAIZ(x) Raíz Cuadrada de X

ABS(X) Valor Absoluto de X

LN(X) Logaritmo Natural de X

EXP(X) Función Exponencial de X

SEN(X) Seno de un ángulo X (medido en radianes)

COS(X) Coseno de un ángulo X (medido en radianes)

TAN(X) Tangente de un ángulo X (medido en radianes)

ASEN(X) Arco seno de X

ACOS(X) Arco coseno de X

ATAN(X) Arco tangente de X

TRUNC(X) Parte entera de X

REDON(X) Entero más cercano a X

AZAR(X) Entero aleatorio entre [0 y x-1]

ALEATORIO(A,B) Entero aleatorio en el rango [A, B]

20
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

7) FUNCIONES DE TEXTO

PseInt incluye ciertas funciones de manejo de cadenas de texto que es habitual


encontrar en casi cualquier lenguaje de programación.

Función Significado
LONGITUD(S) Cantidad de caracteres de la cadena S
MAYUSCULAS(S) Retorna una copia de la cadena S con todos sus
caracteres en mayúsculas
MINUSCULAS(S) Retorna una copia de la cadena S con todos sus
caracteres en minúsculas
SUBCADENA(S,X,Y) Retorna una nueva cadena que consiste en la parte de
la cadena S que va desde la posición X hasta la
posición Y (incluyendo ambos extremos). Las
posiciones utilizan la misma base que los arreglos,
por lo que la primer letra será la 0 o la 1 de acuerdo
al perfil del lenguaje utilizado.
CONCATENAR(S1,S2) Retorna una nueva cadena resulta de unir las
cadenas S1 y S2.
CONVERTIRANUMERO(X) Recibe una cadena de caracteres que contiene un
número y devuelve una variable numérica con el
mismo.
CONVERTIRATEXTO(S) Recibe un real y devuelve una variable numérica con
la representación como cadena de caracteres de
dicho real.

21
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

8) PRIMITIVAS SECUENCIALES (ENTRADA, SALIDA, ASIGNACIÓN)

Lectura o entrada

La instrucción Leer permite ingresar información a una


variable.

LEER <variable1> , <variable2>, … <variableN>;

Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los
asigna a las N variables mencionadas. Pueden incluirse una o más variables, por lo
tanto el comando leerá uno o más valores.

Escritura o salida

La instrucción Escribir permite mostrar valores al ambiente.

ESCRIBIR <expr1> , <expr2>, … <exprN>;

Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores
obtenidos de evaluar N expresiones. Dado que puede incluir una o más
expresiones, mostrará uno o más valores

Si en algún punto de la línea se encuentran las palabras clave "SIN SALTAR" o "SIN
BAJAR" los valores se muestran en la pantalla, pero no se avanza a la línea
siguiente, de modo que la próxima acción de lectura o escritura continuará en la
misma línea. En caso contrario, se añade un salto de línea luego de las expresiones
mostradas.

ESCRIBIR Sin Saltar <exprl> , ... , <exprN>;


ESCRIBIR <exprl> , ... , <exprN> Sin Saltar;

Asignación

La instrucción de asignación permite almacenar un valor en


una variable.

<variable> <- <expresión> ;

Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego se


asigna el resultado a la variable de la izquierda. El tipo de la variable y el de la
expresión deben coincidir.

22
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Ejemplos en PSeInt

Esas dos palabras, "primerNumero" y "segundoNumero" representan a números


que no tienen un valor prefijado. Eso es lo que llamaremos "variables".

Proceso Ejemplo
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 mayoría de lenguajes de programación "reales" es


necesario detallar qué tipo de datos querremos guardar en cada variable, para que
la herramienta de programación 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 en nuestro caso usaremos la
sintaxis obligatoria.

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 cálculos
posteriores, o bien por legibilidad (es más fácil entender algo como
"longitudCircunferencia = 2 * pi * radio" que algo como "longitudCircunferencia =
6.28 * radio".

23
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

La forma de dar un valor a una variable es con la secuencia de símbolos "<-":

radio <- 3
longitudCircunferencia <- 2 * pi * 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, verás que el nombre de la variable que aparece
en la segunda línea 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 mayoría de
lenguajes actuales, obtendremos un mensaje de error que nos dirá que estamos
usando una variable que no tenía valor.

ERROR 215: Variable no inicializada

24
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

9) ESTRUCTURA DE CONTROL: SI-ENTONCES

La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-


Sino depende del valor de una condición lógica. Si Entonces Sino FinSi
Si <condición> Entonces

<instrucciones>

Sino

<instrucciones>

FinSi

Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones


que correspondan: las instrucciones que le siguen al Entonces si la condición es
verdadera, o las instrucciones que le siguen al Sino si la condición es falsa. La
condición debe ser una expresión lógica, que al ser evaluada retorna Verdadero o
Falso.

La cláusula Entonces debe aparecer siempre, pero la cláusula Sino puede no estar.
En ese caso, si la condición es falsa no se ejecuta ninguna instrucción y la ejecución
del programa continúa con la instrucción siguiente.

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 condición se representa como un rombo, del que salen dos flechas: una para la
secuencia de acciones a realizar si se cumple la condición y otra para cuando no se
cumple:

25
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

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


condición SI-ENTONCES, para hacer los cambios que nos interesen:

Sólo tenemos que escribir la condición que realmente nos interesa, y la serie de
pasos que se deben dar si se cumple y si no se cumple:

Proceso Ejemplo
Escribir "Dime un numero"
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

26
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

También es posible comprobar varias condiciones a la vez, para hacer


construcciones más 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 lógicos que de los que
disponemos son:

Un ejemplo de su uso sería:

Proceso Ejemplo
Escribir "Dime un numero"
Leer primerNumero

Si primerNumero > 0 o primerNumero = 0 Entonces


Escribir "Es mayor o igual que cero"
Sino
Escribir "Es negativo"
FinSi

FinProceso

27
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

10) ESTRUCTURA DE CONTROL: Selección Múltiple

La secuencia de instrucciones ejecutada por una instrucción Segun depende del


valor de una variable numérica.

Segun <variable> Hacer

<número1>: <instrucciones>

<número2>,<número3>: <instrucciones>

<...>

De Otro Modo: <instrucciones>

FinSegun

Esta instrucción permite ejecutar opcionalmente varias acciones posibles,


dependiendo del valor almacenado en una variable de tipo numérico. Al ejecutarse,
se evalúa el contenido de la variable y se ejecuta la secuencia de instrucciones
asociada con dicho valor.

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

El número de valores que podemos probar es indefinido: no tiene por qué ser 3,
sino que pueden ser menos casos o muchos más.

Según la variante de pseudocódigo (o el lenguaje de programación) que


empleemos, puede haber restricciones en el tipo de datos que es aceptable. Por
ejemplo, en el caso de PseInt, la variable tiene que tener un valor numérico, no
puede ser un texto.

28
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Al igual que ocurría con la orden SI, existe en PseInt el icono del panel derecho que
representa la condición SEGUN, para que bacer los cambios que nos interesen:

Sólo tenemos que escribir la condición que realmente nos interesa, y la serie de
pasos a dar si se cumple y si no se cumple.

Proceso EjemploCasos
Escribir "Introduzca la nota";
Leer nota;
Segun nota Hacer
10: Escribir "Ha obtenido un sobresaliente alto";
9: Escribir "Ha obtenido un sobresaliente bajo";
6, 7, 8: Escribir "Ha obtenido un aprobado";
De Otro Modo:
Escribir "Ha desaprobado";
FinSegun
FinProceso

29
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

11) ESTRUCTURA DE CONTROL: MIENTRAS-HACER

La instrucción Mientras ejecuta una secuencia de instrucciones mientras una


condición sea verdadera.

Mientras <condición> Hacer

<instrucciones>

FinMientras

Al ejecutarse esta instrucción, la condición es evaluada. Si la condición resulta


verdadera, se ejecuta una vez la secuencia de instrucciones que forman el cuerpo
del ciclo. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la
condición y, si es verdadera, la ejecución se repite. Estos pasos se repiten mientras
la condición sea verdadera.

Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca, si al
evaluar por primera vez la condición resulta ser falsa.

Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un


ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo deben contener
alguna instrucción que modifique la o las variables involucradas en la condición, de
modo que ésta sea falsificada en algún momento y así finalice la ejecución del ciclo.

Y en el caso de PseInt, ese icono generaría un esqueleto de programa como éste:

30
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Por ejemplo, un programa capaz de sumar muchos números, todos los que el
usuario quisiera, y en el que hubiera que escribir "0" para indicar que queremos
terminar, podría ser así:

Proceso Mientras
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

Estas estructuras repetitivas reciben también el nombre de "bucles".

31
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

12) ESTRUCTURA DE CONTROL: REPETIR-HASTA

La instrucción Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta


que la condición sea verdadera.

Repetir

<instrucciones>

Hasta Que <condición>

Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo


del ciclo se ejecuta una vez y luego se evalúa la condición. Si la condición es falsa, el
cuerpo del ciclo se ejecuta nuevamente y se vuelve a evaluar la condición. Esto se
repite hasta que la condición sea verdadera.

Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo del
ciclo serán ejecutadas al menos una vez.

Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna
instrucción que modifique la o las variables involucradas en la condición de modo
que en algún momento la condición sea verdadera y se finalice la ejecución del
ciclo.

Si se utiliza sintaxis flexible (ver Opciones del Pseudocódigo) 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 condición
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.

Y en el caso de PseInt, ese icono generaría un esqueleto de programa como éste:

32
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Por ejemplo, un programa que pida al usuario una clave de acceso, y que no le
permita seguir hasta que la introduzca correctamente, se podría hacer así:

Proceso Repetir
Repetir
Escribir "Dime tu clave de acceso";
Leer clave;
Si clave <> 1234 Entonces
Escribir "Clave incorrecta";
FinSi
Hasta Que clave=1234
Escribir "Bienvenido!";
FinProceso

33
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

13) ESTRUCTURA DE CONTROL: PARA

La instrucción Para ejecuta una secuencia de instrucciones un número


determinado de veces.

Para <variable> <- <inicial> Hasta <final> Con Paso <paso> Hacer

<instrucciones>

FinPara

Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta


la secuencia de instrucciones que forma el cuerpo del ciclo. Luego se incrementa la
variable <variable> en <paso> unidades y se evalúa si el valor almacenado en
<variable> superó al valor <final>. Si esto es falso se repite hasta que <variable>
supere a <final>. Si se omite la cláusula Con Paso <paso>, la variable <variable> se
incrementará en 1.

Si se habilita la sintaxis flexible en la configuración del lenguaje se pueden utilizar


dos alternativas. La primerA variante consiste en reemplazar el operador de
asignación por la palabra clave Desde:

Para <variable> Desde <inicial> Hasta <final> Con Paso <paso> Hacer ...

De esta forma, la lectura de la sentencia resulta más obvia. Además, con sintaxis
flexible, si no se especifica el paso pero el valor final es menor al inicial, el bucle
recorrerá los valores en orden inverso como si el paso fuera -1.

Y en el caso de PseInt, ese icono generaría un esqueleto de programa como éste:

34
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Por ejemplo, un programa que mostrara los números del 1 al 10, podría ser:

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

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


indicar otro tamaño de "paso":

Proceso Para02
Para x <- 10 Hasta 20 Con Paso 2 Hacer
Escribir x;
FinPara
FinProceso

35
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

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 rectángulo usando asteriscos, se puede plantear como escribir de forma
repetitiva varias filas que, a su vez están formadas cada una por varias columnas,
de forma también repetitiva, como muestra este ejemplo:

// Rectángulo formado por asteriscos


Proceso rectangulo
DEFINIR ancho, alto, fila, columna Como Entero;
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 línea tras cada fila
FinPara
FinProceso

36
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

14) ARREGLOS
Cuando necesitamos manejar muchos datos, generalmente hay soluciones más
efectivas que tener muchas variables. Por ejemplo, si hay que guardar 10 números,
resultará incómodo usar 10 variables llamadas n1, n2, n3, n4, n5, n6, n7, n8, n9,
n10; si se trata de 100 números, puede pasar de resultar incómodo a ser
totalmente inviable. En esos casos, será más eficiente almacenar esos 100 datos
"juntos", formando lo que se conoce como una "arreglo" (tabla o vector), en vez de
usar 100 variables distintas.
Normalmente, en una arreglo podremos acceder individualmente a cada uno de
sus elementos usando corchetes: el primer dato sería algo como "dato[1]".
Como primer ejemplo, se puede crear un arreglo de 3 elementos, guardar datos en
sus 3 posiciones y mostrar el primer dato y el tercero así:

Proceso Arreglo
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 un arreglo puede contener muchos datos, es frecuente recorrerlos 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 podría ser:

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

37
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

También se pueden crear arreglos "de dos dimensiones" (por ejemplo, 3 filas y
dos columnas), que se acercan más al concepto matemático de matriz:

Proceso Matriz
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]


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

38
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

15) MANEJO DE CADENAS DE TEXTO

PseInt incluye ciertas funciones de manejo de cadenas de texto que es habitual


encontrar en casi cualquier lenguaje de programación.

Las dos más sencillas son las que permiten convertir un texto a mayúsculas y a
minúsculas:

Proceso Cadenas01
Escribir "Dime tu nombre"
Leer nombre
Escribir "En mayúsculas quedaría:"
Escribir Mayusculas(nombre)
Escribir "En minúsculas quedaría:"
Escribir Minusculas(nombre)
FinProceso

Para resolver problemas reales de computación, hay otras dos funciones que dan
más posibilidades: una nos dicen la longitud de una cadena y otra permite extraer
una subcadena, desde cierta posición inicial hasta cierta posición final:

Proceso Cadenas02
Escribir "Dime tu nombre"
Leer texto
Escribir "Su longitud es:"
Escribir Longitud(texto)
Escribir "Su primera letra es:"
Escribir Subcadena(texto, 1, 1)
FinProceso

39
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Como ejemplo de su uso real, es posible mostrar un texto incluyendo un espacio en


blanco adicional entre cada letra y la siguiente, si se crea un programa como éste:

Proceso Cadenas02b
Escribir "Dime tu nombre"
Leer texto
Escribir "Con espacios adicionales, quedaría:"
Para x <- 1 Hasta Longitud(texto) Hacer
Escribir Sin Saltar Subcadena(texto, x, x)
Escribir Sin Saltar " "
FinPara
Escribir ""
FinProceso

(Si usamos la configuración normal de PseInt, las posiciones dentro de la cadena se


empezarán a contar desde uno; ya sabemos, como vimos en el apartado sobre
"arreglos", que en muchos otros lenguajes de programación se empieza a contar
desde cero; PseInt también se puede configurar para trabajar así).

40
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

También es posible "concatenar" dos cadenas, es decir, formar una nueva cadena
a partir de la unión de esas dos. Por ejemplo, el resultado de Concatenar("1a",
"2b") sería la cadena de texto "1a2b". Así, el ejemplo del rectángulo de asteriscos se
podría hacer, de forma alternativa, creando primero una cadena que fuera la fila de
asteriscos y luego mostrándola varias veces, así:

// Rectángulo formado por asteriscos


// No funciona con versiones de PseInt de antes de Octubre de 2012
Proceso Rectangulo2
Escribir Sin Saltar "Introduce el ancho: "
Leer ancho
Escribir Sin Saltar "Introduce el alto: "
Leer alto
// Creamos una fila formada por asteriscos
filaDeAsteriscos <- ""
Para columna <- 1 Hasta ancho Hacer
filaDeAsteriscos <- Concatenar( filaDeAsteriscos, "*" )
FinPara

// Y la mostramos varias veces


Para fila<-1 Hasta alto Hacer
Escribir filaDeAsteriscos
FinPara
FinProceso

41
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

16) SUBPROCESOS: Creación De Funciones y Procedimientos

Si el perfil de lenguaje seleccionado lo permite (ver Opciones del Pseudocódigo), se


pueden declarar nuevas funciones o subprocesos en un algoritmo en
Pseudocódigo. La sintaxis para ello es la siguiente:

SubProceso variable_de_retorno <- nombre_funcion (argumento_1,


argumento_2, ... )

acción 1;
acción 1;
.
.
.
acción n;

FinSubproceso

Comienza con la palabra clave SubProceso (o Función, son equivalentes) seguida


de la variable de retorno, el signo de asignación, el nombre del subproceso, y
finalmente, la lista de argumentos entre paréntesis. Existen variantes para esta
estructura. Si la función no retorna ningún valor, pueden omitirse el identificador
variable_de_retorno y el signo de asignación, es decir, colocar directamente el
nombre y los argumentos a continuación de la palabra clave SubProceso. Si el
subproceso no recibe ningún valor pueden colocarse los paréntesis vacíos u
omitirse, finalizando la primer línea 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 pseudocódigo.

Además, 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 demás expresiones por valor.

El pasaje por referencia implica que si la función modifica el argumento, se


modificará en realidad la variable que se utilizó en la llamada, mientras que el
pasaje por valor implica que la función opera con una copia de la variable (o el
resultado de la expresión) que se utilizó en la llamada, por lo que las
modificaciones que aplique la función no se verán reflejadas fuera de la misma.

Para invocar a la función se debe utilizar su nombre y entre paréntesis los


parámetros, que podrán ser expresiones sólo si el tipo de pasaje es por referencia.
Una llamada puede ser en sí una instrucción, pero si la función retorna algún valor,
también puede utilizarse como operando dentro de una expresión.

42
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Vamos a empezar por crear un subproceso (o "subrutina", o "procedimiento") que


escriba 20 guiones, que podríamos utilizar para subrayar textos. Un programa
completo que escribiera tres textos y los subrayara podría ser:

Proceso SubProcesos01
Escribir " Primer ejemplo"
Para x <- 1 Hasta 20 Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""

Escribir " Segundo ejemplo"


Para x <- 1 Hasta 20 Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""

Escribir " Tercer ejemplo"


Para x <- 1 Hasta 20 Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
FinProceso

43
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Muy repetitivo. Sería un poco más elegante si lo reescribimos así:

Subproceso Subrayar
Para x <- 1 Hasta 20 Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
FinSubproceso

Proceso SubProcesos02
Escribir " Primer ejemplo"
Subrayar

Escribir " Segundo ejemplo"


Subrayar

Escribir " Tercer ejemplo"


Subrayar
FinProceso

44
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Mucho más legible, pero todavía no está tan bien como debería: siempre estamos
escribiendo 20 guiones, aunque el texto sea más largo o más corto. En la mayoría
de lenguajes de programación se puede indicar detalles adicionales ("parámetros")
para que se puedan utilizar desde dentro de esa subrutina. Por ejemplo, en nuestro
caso podríamos indicarle qué texto queremos escribir y qué longitud queremos
que tenga la secuencia de guiones:

Subproceso EscribirSubrayado(texto, cantidad)


Escribir texto
Para x <- 1 Hasta cantidad Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
FinSubproceso

Proceso SubProcesos03
EscribirSubrayado(" Primer ejemplo", 16)
EscribirSubrayado(" Segundo ejemplo", 17)
EscribirSubrayado(" Tercer ejemplo", 16)
FinProceso

45
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

Lo anterior, todavía es un poco redundante: en general, querremos escribir tantos


guiones como letras tenga el texto, así que no será necesario indicar ese dato.
Desde octubre de 2012, PseInt incluye ciertas funciones predefinidas para manejo
de cadenas de texto; una de ellas es "Longitud", que nos indica la cantidad de letras
que tiene un texto, de modo que nuestro programa se podría simplificar así:

Subproceso EscribirSubrayado(texto)
Escribir texto
Para x <- 1 Hasta Longitud(texto) Hacer
Escribir Sin Saltar "-"
FinPara
Escribir ""
FinSubproceso

Proceso SubProcesos04
EscribirSubrayado("Primer ejemplo")
EscribirSubrayado("Segundo ejemplo")
EscribirSubrayado("Tercer ejemplo")
FinProceso

46
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

También podemos crear subprocesos que realicen ciertas operaciones aritméticas


y devuelvan un resultado, como las funciones matemáticas. Se puede hacer con la
misma palabra "subproceso" que hemos empleado hasta ahora, pero muchos
lenguajes de programación distinguen entre un "procedimiento" o "subrutina",
cuando se da una serie de pasos pero no se devuelve ningún valor (como habíamos
hecho hasta ahora), y una "función", cuando sí se devuelve un resultado (como
haremos en esta ocasión), así que usaremos esta última nomenclatura.

Su desarrollo se parece mucho a lo que hemos hecho hasta ahora, con la diferencia
de que escogeremos un nombre para la variable que guardará el resultado, así:

Funcion resultado <- Maximo( n1, n2)


Si n1 > n2 Entonces
resultado <- n1
Sino
resultado <- n2
FinSi
FinFuncion

Proceso Funciones01
Escribir "El máximo de 5 y 12 es:"
Escribir Maximo(5,12);
Escribir "El máximo de 25 y 12 es:"
Escribir Maximo(25,12);
Finproceso

Este programa crea una función que calcula cuál es el mayor de los dos números
que se le indican como parámetro, y la usa dos veces, para mostrar el máximo de
dos valores prefijados.

47
UNIVERSIDAD NACIONAL DEL SUR Introducción a la Programación 1”A”
Escuela Superior de Comercio

No sólo podemos devolver valores numéricos; también podemos devolver cadenas


o "valores de verdad" (verdadero, falso). Por ejemplo, podemos crear una función
que calcule si un número es primo o no (lo vamos a hacer de la forma más simple
pero también de la menos eficiente: aplicar la definición, probando a dividir entre
todos los números que hay entre 1 y n; si hemos encontrado dos divisores -o
menos, para el número uno-, entonces el número es primo):

SubProceso resultado <- Primo ( num )


DEFINIR cont, cantidadDivisores como Entero;
cantidadDivisores <- 0;
Para cont <- 1 Hasta num Hacer
Si num MOD cont = 0 Entonces
cantidadDivisores <- cantidadDivisores + 1;
FinSi
Fin Para
Si cantidadDivisores <= 2 Entonces
resultado <- verdadero;
Sino
resultado <- falso;
Fin Si
FinSubProceso

Proceso PrimosDel1Al30
DEFINIR n COMO entero;
Para n <- 1 hasta 30
Si Primo(n) Entonces
ESCRIBIR n;
FinSi
FinPara
FinProceso

48

También podría gustarte