Pseudocódigo Es un lenguaje artificial e informal que ayuda a los programadores a desarrollar algoritmos. El Pseudocódigo es similar al lenguaje cotidiano; es cómodo y amable con el usuario, aunque no es realmente in verdadero lenguaje de computadora. No se ejecutan en las computadoras mas bien sirven para ayudar al programadora razonar un programa antes de intentar escribirlo en algún lenguaje. Un programa ejecutado en Pseudocódigo puede ser fácilmente convertido en un programa en C++, si es que esta bien elaborado. Por ejemplo supongamos que la nota para aprobar un examen es de 60. El enunciado en Pseudocódigo sería:
Si calificación >= 60 entonces
Mostrar "Aprobado"
FinSi
El mismo enunciado se puede escribir en C++ como:
if ( calif >= 60 )
cout << "Aprobado";
Nótese que la operación de trasladar el Pseudocódigo a código fuente, se lo realiza con el mínimo esfuerzo, no se necesita de un mayor análisis.
Llevando el Ejemplo2.1 a Pseudocódigo.
Se puede refinar más aun el algoritmo:
Inicializar variables.
Inicializar los aprobados (aprobados) en 0
Inicializar los reprobados (reprobados) en 0
Inicializar el número de estudiantes (estudiantes) en 0
Introducir las primeras 10 calificaciones y contar los aprobados y los reprobados.
Mientras (while) el contador estuantes es menor o igual que 10 entonces
Introducir el siguiente resultado de examen
Si el estudiante aprobó
Sumar 1 a aprobados
Si no
Sumar 1 a reprobados
FinSi
Sumar 1 al contador estudiantes
FinMientras
Imprimir un resumen de los resultados de exámenes y decidir si se debe aumentar o no la colegiatura.
Imprimir el número de aprobados
Imprimir el número de reprobados
Si estudiantes es más 8 entonces
Imprimir "Aumentar la colegiatura".
FinSi
Lo anterior fue un ejemplo de pseudocodigo y c++ pero a continuacion veremos solo ejemplos de pseudocodigo como tal y ¿porque no? usaremos Pseint para ver como funciona el pseudocodigo y quede mucho mas claro lo que es el pseudocodigo.
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 descargarlo checa el link que te dejo a continuacion en el hipervinculo. Click aquí para descargar Pseint.
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 «//».
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.
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];
Existen otras palabras claves que realizan acciones simples, todas ellas junto con las anteriores, son las llamadas secuenciales. Borrar 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.
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.
// 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;
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
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.
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:
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:
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:
En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior:
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:
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:
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:
En la siguiente imagen puedes ver un diagrama de flujo del ejemplo anterior:
Hay funciones ya integradas en PSeInt, casi todas matemáticas, son las siguientes:
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 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 |