martes, 9 de noviembre de 2021

Algoritmos en Pseudocódigo con PSeInt. Lo más básico

https://terepebernal.com/blog/pseudocodigo/algoritmos-pseint-lo-mas-basico/#div-comment-525

Algoritmos en Pseudocódigo con PSeInt. Lo más básico




PSeInt es una aplicación informática de software libre que sirve para escribir algoritmos en pseudocódigo y ejecutarlos, y además genera diagramas de flujo de dichos algoritmos. La práctica de escribir algoritmos con PSeInt puede ayudarte a aprender a programar.

El pseudocódigo no es un lenguaje de programación, pero es un «falso lenguaje» intermedio entre nuestro lenguaje natural y un lenguaje de programación. A través de él se pueden escribir los algoritmos con un lenguaje más próximo al nuestro. Una vez que tienes un algoritmo escrito en pseudocódigo lo puedes escribir en cualquier otro lenguaje. Utilizar esta aplicación puede ser una buena manera de empezar para aprender a programar. En su página oficial puedes descargar PSeInt.

Si quieres estar al tanto de las novedades y publicaciones de esta página web

Suscríbete


En este artículo podrás ver algunos ejemplos de algoritmos en PSeInt y lo básico sobre cómo usar PSeInt.

Cómo hacer un algoritmo en PSeInt. Su estructura

En programación un algoritmo o programa es una secuencia de acciones o instrucciones que resuelve un determinado problema. A continuación verás cómo hacer un algoritmo en PSeInt:

Algoritmo (nombre_programa)
   // Esto es un comentario
      acción 1;        
      acción 2;
        .
        .
        .
      acción n;
FinAlgoritmo

Algoritmo y FinAlgoritmo son las palabras clave que se utilizan para abrir y cerrar, respectivamente, el algoritmo o programa. Y después, cada acción o instrucción puede consistir en: definiciones de variables, mostrar texto por pantalla, pedir datos al usuario por teclado, borrar la pantalla, expresiones matemáticas o lógicas, estructuras de control (condicionales, bucles, …), etc. Para escribir comentarios se empieza la línea con los símbolos «//».

Variables y tipos de datos de los algoritmos con PSeInt

Una variable es un espacio de la memoria donde guardar información. La información que se guarda en la variable puede ser de diversos tipos y puede ir cambiando a lo largo del programa. A la variable hay que darle un nombre para identificarla, y ese nombre estará formado solo por letras, números y el guion bajo únicamente; no debe contener espacios ni operadores, ni palabras claves del lenguaje. Identificadores de variable correctos podrían ser: nombre_usuario, fecha_2018, edad, A, X, suma, …

Cada variable tiene un tipo de dato asociado, por lo que siempre guardará el mismo tipo de dato. Una variable que guarde un número no podrá guardar después otro tipo que no sea un número. Los tipos de datos en PSeInt pueden ser: NUMERO, NUMERICO, ENTERO, REAL, CARACTER, TEXTO, CADENA y LOGICO. Para declarar una variable se utiliza la palabra clave Definir. A continuación veremos la sintaxis y un ejemplo de como declarar variables:

// Sintaxis para declarar variables
   Definir (var1, var2, ..., varN) Como (tipo_de_dato);

// Ejemplos
   Definir nombre Como Texto;
   Definir edad Como Entero;
   Definir respuesta Como Logico;

Una vez declarada la variable se le puede asignar un valor y también pedir por teclado ese valor (leer). También existe una palabra clave para mostrar datos por pantalla, esta es Escribir, si se utiliza Sin Saltar, no se hace un salto de línea después, sino se utiliza se hará un salto de línea.

// Asignación de variables
   var1 <- valor;

// Lectura de variables
   Leer var1;
   Leer var2 Sin Saltar;

// Mostrar datos por pantalla
   Escribir (cadena_texto);
   Escribir var1;

// Ejemplos
   nombre <- "Antonio";

   Escribir "Introduce tu nombre: ";
   Leer nombre;
   Escribir "¿Edad?: " Sin Saltar;
   Leer edad;

Los tipos de datos anteriores son simples, además existen los arreglos, que son algo más complejos, son las matrices matemáticas, estructuras de datos homogéneos del mismo tipo que pueden tener varias dimensiones. También se suelen llamar arrays.

Ilustración de un cubo

Para declarar un arreglo se utiliza la palabra clave Dimension, puedes verlo en los dos ejercicios básicos que siguen:

// Sintaxis declaración de un arreglo
   Dimension (nombre_arreglo) [(max1), (max2), ..., (maxN)];

// Arreglo para almacenar las notas de 8 alumnos para 5 asignaturas.
   Dimension notas[8,5];
   notas[1,1]<-8;
   notas[1,2]<-4.5;
   notas[1,3]<-9.2;
   notas[1,4]<-7;
   notas[1,5]<-3;

// Para mostrarlo por pantalla
   Escribir "Las notas del alumno 1 son:";
   Escribir "Asignatura 1: " Sin Saltar;
   Escribir notas[1,1];
   Escribir "Asignatura 2: " Sin Saltar;
   Escribir notas[1,2];
   Escribir "Asignatura 3: " Sin Saltar;
   Escribir notas[1,3];
   Escribir "Asignatura 4: " Sin Saltar;
   Escribir notas[1,4];
   Escribir "Asignatura 5: " Sin Saltar;
   Escribir notas[1,5];

El resultado sería:
Ejemplo de uno de los algoritmos con PSeInt

Algunas instrucciones o comandos simples de los algoritmos con PSeInt

Existen otras palabras claves que realizan acciones simples, todas ellas junto con las anteriores, son las llamadas secuencialesBorrar Pantalla se utiliza para limpiar la pantalla, dejarla vacía como el que limpia una pizarra. Esperar se utiliza para parar el algoritmo un intervalo de tiempo, que se indica a continuación junto a la unidad de dicho intervalo, que puede ser segundos y milisegundos, por ejemplo: Esperar 5 Segundos;Esperar Tecla se utiliza también para parar el algoritmo hasta que el usuario pulsa una tecla.

Expresiones y operadores de los algoritmos con PSeInt

Las expresiones son combinaciones de constantes, variables y operadores que nos permiten trabajar con los datos. Dependiendo de los operadores utilizados en ellas, pueden ser de varios tipos: aritméticas, relacionales, lógicas, alfanuméricas y de asignación.

Expresión aritmética
Aquella en la que se utilizan operadores aritméticos y como operandos datos numéricos.
+, -, *, /, ^, % o MOD
Expresión relacional
Aquella en la que se utilizan operadores relacionales y el resultado de esta expresión siempre será verdadero o falso.
>, <, >=, <=, =, <>
Expresión lógica
Aquella en la que se utilizan exclusivamente operadores lógicos y el resultado también será siempre verdadero o falso.
Y o &, O o |, NO o ~
Expresión alfanumérica
Aquella que se utiliza para unir cadenas de texto. Se usa el operador de concatenación y como operandos, cadenas de texto.
+
Expresión de asignación
Aquella que se utiliza para asignarle un valor a una variable. Se usa el operador de asignación y como operandos el nombre de variable a la izquierda y el valor que se le asigna a la derecha.
<-
// Expresiones aritméticas
   56 + 45;
   62 - 15;
   100 MOD 4;

// Expresiones relacionales
   56 < 45;
   62 = 15;
   100 >= 4;

// Expresiones lógicas
   5 > 4 O  6 < 2;
   15 < 25 Y  var1 = var2;
   NO(48 < 20);

// Expresiones alfanuméricas
   "Hola Mundo" +  ", qué tal va todo";

// Expresiones de asignación
   nombre <- "Juan Luis Sánchez";
   edad <- 45;

PSeInt Ejemplo – Resumen

A continuación puedes ver el pseudocódigo de un sencillo algoritmo llamado Op_Aritméticas, que puede servir como ejemplo de todo lo comentado hasta ahora en este artículo. Son ejercicios básicos de pseudocódigo en PSeInt.

Este pequeño programa pide dos números al usuario y muestra por pantalla el resultado de las operaciones aritméticas básicas. Podemos ver también una función integrada de PSeInt que no se había mencionado hasta ahora, pero que ha sido necesario usar para poder concatenar cadenas de texto, se trata de la función ConvertirATexto(número).

Algoritmo Op_Aritmeticas
   // Programa que realiza las 6 operaciones aritméticas
   // básicas para dos números enteros y muestra los resultados por pantanlla.
   Definir x,z Como Entero;  // Estos son los dos operandos
   Dimension resultados[6];  // Arreglo para guardar resultado operaciones
   Dimension operaciones[6];  //Arreglo para guardar símbolo operaciones

   operaciones[1] <- ' + ';  // Suma
   operaciones[2] <- ' - ';  // Resta
   operaciones[3] <- ' * ';  // Producto
   operaciones[4] <- ' / ';  // División
   operaciones[5] <- ' ^ ';  // Potencia
   operaciones[6] <- ' MOD ';  // Resto

  // Pedimos los dos números al usuario por teclado
   Escribir 'Dame el primer número: ' Sin Saltar;
   Leer x;
   Escribir 'Dame el segundo número: ' Sin Saltar;
   Leer z;

  // Asignar a cada posición del array resultados, la expresión aritmética que le corresponde
   resultados[1] <- x+z;
   resultados[2] <- x-z;
   resultados[3] <- x*z;
   resultados[4] <- x/z;
   resultados[5] <- x^z;
   resultados[6] <- x MOD z;

   Escribir 'Pulsa una tecla para continuar...';
   Esperar Tecla;
   Borrar Pantalla;

   Escribir ConvertirATexto(x) + operaciones[1] + ConvertirATexto(z) + ' = ';
   Escribir resultados[1];
   Esperar 2 Segundos;
   Escribir ConvertirATexto(x) + operaciones[2] + ConvertirATexto(z) + ' = ';
   Escribir resultados[2];
   Esperar 2 Segundos;
   Escribir ConvertirATexto(x) + operaciones[3] + ConvertirATexto(z) + ' = ';      Escribir resultados[3];
   Esperar 2 Segundos;
   Escribir ConvertirATexto(x) + operaciones[4] + ConvertirATexto(z) + ' = ';
   Escribir resultados[4];
   Esperar 2 Segundos;
   Escribir ConvertirATexto(x) + operaciones[5] + ConvertirATexto(z) + ' = ';
   Escribir resultados[5];
   Esperar 2 Segundos;
   Escribir ConvertirATexto(x) + operaciones[6] + ConvertirATexto(z) + ' = ';
   Escribir resultados[6];
   Esperar 2 Segundos;
FinAlgoritmo

Sentencias o estructuras de Control de Flujo en PSeInt

Las sentencias o estructuras de control de flujo permiten cambiar y controlar la ejecución del programa. Pueden ser condicionales e iterativas o de repetición.

Condicional Simple (Si-Entonces)

Con la estructura de control condicional si-entonces se evalúa una condición, y dependiendo del resultado, verdadero o falso, se ejecuta un bloque de instrucciones u otro. A continuación verás la sintaxis de la estructura y un ejemplo en el que se piden dos valores (A y B) por teclado, se evalúan con la estructura, y según el resultado muestra un texto u otro por pantalla.

// Sintaxis de estructura Si-Entonces
   Si (condición) Entonces
       (intrucciones)
   SiNo
       (intrucciones)
   FinSi

// Ejemplo
   Escribir "Introduce el valor de A: " Sin Saltar;
   Leer A
   Escribir "Introduce el valor de B: " Sin Saltar;
   Leer B

   Si (A = B) Entonces
      Escribir "A es igual a B";
   SiNo
      Escribir "A es distinto de B";
   FinSi

En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior:
Ejemplo condicional simple pseudocódigo PseInt

Selección Multiple

Con esta estructura también se evalúa una variable, pero se pueden incluir varias opciones, es decir, se pueden tomar varios caminos con la misma estructura, no únicamente dos, como con la estructura si-entonces. Cada opción tiene su bloque de instrucciones a ejecutar. A continuación puedes ver la sintaxis y un ejemplo en el que podemos escoger entre tres valores numéricos enteros, del 1 al 3, u otro distinto, dependiendo de cual elegimos nos muestra un mensaje por pantalla.

// Sintaxis de estructura Selección Múltiple
   Segun (variable) Hacer
      (número 1):  (instrucciones)
      (número 2), (número 3):  (instrucciones)
      (...)
      De Otro Modo:  (instrucciones)
   FinSegun

// Ejemplo
   Definir opcion Como Entero;
   Escribir "Elige una opción (1 - 3): " Sin Saltar;
   Leer opcion;

   Segun opcion Hacer
      1:
         Escribir "Has elegido la opción 1";
      2:
         Escribir "Has elegido la opción 2";
      3:
         Escribir "Has elegido la opción 3";
      De Otro Modo:
         Escribir "Has elegido una opción distinta";
   FinSegun

En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior:

Ejemplo Selección Múltiple pseudocódigo PseInt

Bucle o Ciclo Mientras PSeInt

Esta estructura de control repetitiva permite que mientras se cumpla una condición, se ejecute un bloque de instrucciones determinado. A continuación verás la sintaxis y un ejemplo donde se recorre el array mi_tabla usando la variable i como contador, y el resultado de multiplicar a i por 10 se le asigna a mi_tabla[i], después se muestran los datos introducidos en mi_tabla por pantalla, recorriendo el array usando nuevamente la variable i como contador.

// Sintaxis de estructura Mientras
   Mientras (condición) Hacer
        (secuencia de acciones)
   FinMientras

// Ejemplo
   Dimension mi_tabla[10];
   Definir i Como Entero;

   i <- 1;
   Mientras (i <= 10) Hacer
      mi_tabla[i] <- i*10;
      i <- i+1;
   FinMientras

   i <- 1;
   Mientras (i <= 10) Hacer
      Escribir "mi_tabla[" Sin Saltar;
      Escribir i Sin Saltar;
      Escribir "] = " Sin Saltar;
      Escribir i Sin Saltar;
      Escribir "x10 = " Sin Saltar;
      Escribir mi_tabla[i];
      i <- i+1;
   FinMientras

El resultado de la ejecución del ejemplo anterior:

Ejemplo mientras tabla del 10

En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior:

Diagrama flujo tabla del 10

Bucle o Ciclo Repetir PSeInt

Esta estructura de control repetitiva es muy parecida a la anterior, pero mientras en la anterior la condición se evalúa al principio de la estructura, en ésta se hace al final. Aquí se repite un bloque de instrucciones hasta que se cumple una condición determinada. A continuación verás la sintaxis y un ejemplo cuya ejecución da el mismo resultado que el ejemplo anterior, pero utilizando la estructura de control repetir en lugar de la estructura mientras. Como puedes comprobar en la anterior era mientras que i sea menor o igual que 10 hacer (secuencia de acciones), y en ésta es repetir (secuencia de acciones) hasta que i sea mayor que 10.

// Sintaxis de estructura Repetir
   Repetir
        (secuencia de acciones)
   Hasta Que (condición)

// Ejemplo
   Dimension mi_tabla[10];
   Definir i Como Entero;

   i <- 1;
   Repetir
      mi_tabla[i] <- i*10;
      i <- i+1;
   Hasta Que(i>10)

   i <- 1;
   Repetir
      Escribir "mi_tabla[" Sin Saltar;
      Escribir i Sin Saltar;
      Escribir "] = " Sin Saltar;
      Escribir i Sin Saltar;
      Escribir "x10 = " Sin Saltar;
      Escribir mi_tabla[i];
      i <- i+1;
   Hasta Que(i>10)

En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior:

Diagrama flujo ejemplo repetir

Bucle o Ciclo Para PSeInt

Es otra estructura de control repetitiva pero en este caso la propia estructura inicializa una variable que se va a usar de contador, además, va sumándole la cantidad paso y por último incluye el valor final que debe tomar la variable para salir del bucle. A continuación vemos la sintaxis y también el mismo ejemplo que hemos visto con las estructuras mientras y repetir, que como ves, su ejecución da exactamente el mismo resultado.

// Sintaxis de estructura Para
   Para  (variable_numerica <- valor_inicial) Hasta (valor_final) Con Paso (paso) Hacer
         (secuencia_de_acciones)
   Fin Para

// Ejemplo
   Dimension mi_tabla[10];
   Definir i Como Entero;

   Para i <- 1 Hasta 10 Con Paso 1 Hacer
         mi_tabla[i] <- i*10;
   Fin Para

   Para i <- 1 Hasta 10 Con Paso 1 Hacer
      Escribir "mi_tabla[" Sin Saltar;
      Escribir i Sin Saltar;
      Escribir "] = " Sin Saltar;
      Escribir i Sin Saltar;
      Escribir "x10 = " Sin Saltar;
      Escribir mi_tabla[i];
   Fin Para

En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior:

Diagrama flujo ejemplo Para

Funciones en PSeInt

Las funciones son un conjunto de instrucciones que realizan tareas específicas y pueden retornar un valor y también recibirlos (parámetros) para realizar operaciones con ellos. Las funciones pueden ser llamadas desde otras funciones e incluso puede llamarse a sí misma. A continuación puedes ver su sintaxis y el ejemplo de una función sencilla, una suma de tres números enteros; recibirá tres valores a través de los parámetros a, b y c y devolverá la suma con la variable de retorno resultado.

// Sintaxis de Función
   Funcion (var_retorno) <- (nombre_funcion) (argumento1, argumento2, ....)
      acción 1;
      acción 2;
         .
         .
      acción n;
   FinFuncion

// Ejemplo
   Funcion resultado <- sumaTres (a, b, c)
      Definir resultado Como Entero;
       resultado <- a+b+c;
   FinFuncion

// Ejemplo de llamada de la función
   Definir a, b, c, S Como Entero;
   Escribir "Dame el primer número: " Sin Saltar;
   Leer a;
   Escribir "Dame el segundo: " Sin Saltar;
   Leer b;
   Escribir "El tercero, por favor: " Sin Saltar;
   Leer c;
   S <- sumaTres (a, b, c);
   Escribir "La suma de " Sin Saltar;
   Escribir a Sin Saltar;
   Escribir " + " Sin Saltar;
   Escribir b Sin Saltar;
   Escribir " + " Sin Saltar;
   Escribir c Sin Saltar;
   Escribir " es igual a " Sin Saltar;
   Escribir S;

Resultado de la ejecución para los números 12, 24 y 50:

Resultado ejemplo función

En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior:

Diagrama flujo función Suma de tres

Hay funciones ya integradas en PSeInt, casi todas matemáticas, son las siguientes:

FUNCIÓNSIGNIFICADO
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 X
COS(X)Coseno de X
TAN(X)Tangente de X
ASEN(X)Arcoseno de X
ACOS(X)Arcocoseno de X
ATAN(X)Arcotangente de X
TRUNC(X)Parte entera de X
REDON(X)Entero más cercano a X
AZAR(X)Entero aleatorio en el rango[0;x-1]
ALEATORIO(A,B)Entero aleatorio en el rango [A;B]
LONGITUD(S)Longitud de la cadena S
MAYUSCULAS(S)Devuelve una copia de la cadena S en mayúsculas
MINUSCULAS(S)Devuelve una copia de la cadena S en minúsculas
SUBCADENA(S,X,Y)Devuelve 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)
CONCATENAR(S1,S2)Devuelve una cadena nueva resultado de unir las cadenas S1 y S2
CONVERTIRANUMERO(X)Convierte a número la variable X
CONVERTIRATEXTO(S)Convierte a texto la variable S

Puedes ver más sobre ejercicios básicos de Pseudocódigo y PSeInt en:


 

No hay comentarios:

Publicar un comentario