Guia Pseint
Guia Pseint
Guia Pseint
INTRODUCCIÓN
Cuando nos enfrentamos a un problema en la vida cotidiana, su resolución
requiere que sigamos una serie de pasos; para tal fin. El conjunto ordenado de
pasos seguidos con el fin de resolver un problema o lograr un objetivo es
conocidocomo algoritmo.
¿Qué es PSEINT?
PSeInt es principalmente un intérprete de pseudocódigo. El proyecto nació
como trabajo final para la cátedra de Programación I de la carrera Ingeniería en
Informática de la Universidad nacional del Litoral, razón por la cual el tipo de
pseudocódigo que interpreta está basado en el pseudocódigo presentado en la
cátedra de Fundamentos de Programación de dicha carrera. Actualmente
incluye otras funcionalidades como editor y ayuda integrada, generación de
diagramas de flujo o exportación a código C++ (en etapa experimental).
Corregir indentado
Buscar
Ejecutar el algoritmo
El Pseudocódigo
Las características del este pseudolenguaje fueron propuestas en 2001 por el
responsable de la asignatura Fundamentos de Programación (Horacio Loyarte)
dela carrera de Ingeniería Informática de la FICH-UNL. Las premisas son:
• Sintaxis sencilla.
• Manejo de las estructuras básicas de control.
• Solo 3 tipos de datos básicos: numérico, carácter/cadenas de
caracteres ylógico (verdadero/falso).
• Estructuras de datos: arreglos.
Proceso SinTitulo
accion 1;
accion 1;
.
.
.
accion n;
FinProceso
Comienza con la palabra clave Proceso seguida del nombre del programa,
luego le sigue una secuencia de instrucciones y finaliza con la palabra
FinProceso. Una secuencia de instrucciones es una lista de una o más
instrucciones, cada una terminada en punto y coma.
Tipos de datos
• Tipos Simples: Numérico, Lógico, Caracter.
• 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.
Dimensionamiento (Arreglos-Arrays)
Expresiones
• Operadores.
• Funciones.
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.
Funciones matemática
Las funciones en el pseudocódigo se utilizan de forma similar a otros
lenguajes. Se coloca su nombre seguido de los argumentos para la misma
encerrados entre paréntesis (por ejemplo trunc(x)). Se pueden utilizar dentro de
cualquier expresión, y cuando se evalúe la misma, se reemplazará por el
resultado correspondiente. Actualmente, todas la funciones disponibles son
matemáticas (es decir que
7
Función Significado
RC(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
TRUNC(X) Parte entera de X
REDON(X) Entero más cercano a X
AZAR(X) Entero aleatorio entre 0 y x-1
Lectura o entrada
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.
Asignación o proceso
Escritura o salida
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.
9
• Repetitivas
o Mientras
o Repetir
o Para
Condicionales
Si-Entonces (If-Then)
Si <condición> Entonces
<instrucciones>
Sino
<instrucciones>
FinSi
Cada opción está formada por uno o más números separados por comas, dos
puntos y una secuencia de instrucciones. Si una opción incluye varios números, la
secuencia de instrucciones asociada se debe ejecutar cuando el valor de la
variable es uno de esos números.
Repetitivas/Bucles
Mientras Hacer (while)
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,
11
de modo que ésta sea falsificada en algún momento y así finalice la ejecución del
ciclo.
Repetir
<instrucciones>
Hasta Que <condición>
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.
Para (for)
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
El botón "Comenzar" del panel sirve para iniciar la ejecución automática. Cuando
lo utilice, el algoritmo comenzará a ejecutarse lentamente y cada instrucción que
se vaya ejecutando según el flujo del programa se irá seleccionando en el código
de dicho algoritmo. La velocidad con que avance la ejecución del algoritmo,
inicialmente depende de la seleccionada en el menú "Configuración", aunque
mientras la ejecución paso a paso está en marcha, puede variarla desplazando el
control rotulado como "Velocidad" en el panel.
Algunas Observaciones
Ejemplos de Algoritmos
PSeInt incluye un conjunto de algoritmos de diferentes niveles de dificultad para
ejemplificar la sintaxis y el uso del pseudocódigo. A continuación se describen los
ejemplos disponibles:
Si intentos=0 Entonces
Escribir "El numero era: ",num_secreto;
Sino
Escribir "Exacto! Usted adivinó en ",11-intentos," intentos.";
FinSi
15
FinProceso
Proceso Adivina_Numero
definir intentos Como Entero;
definir num_secreto como entero;
definir num_ingresado Como Entero;
intentos<-9;
num_secreto <- azar(100)+1;
Si intentos=0 Entonces
Escribir "El numero era: ",num_secreto;
Sino
FinSi
FinProceso
16
Algoritmo Promedio
Definir n Como Real;
Definir i Como Real;
Definir acum Como Real;
Definir prom Como Real;
Definir dato Como Real;
Escribir 'Ingrese la cantidad de NUMEROS QUE DESEA PROMEDIAR:';
Leer n;
acum <- 0;
Para i<-1 Hasta n Hacer
Escribir 'Ingrese el dato ',i,':';
Leer dato;
acum <- acum+dato;
FinPara
prom <- acum/n;
Escribir 'El promedio es: ',prom;
FinAlgoritmo
17
Proceso Escribir_nombre
pantalla: "Progr...saludar"
'programa'?: sumar a yb
Leer a;
Suma<-(a+b); //
Suma=a+b;
FinProceso
19
Proceso repetir_nombre
Escribir "Ingresa tu nombre"; //muestra en teclado: ingresa ti nombre
leer nombre; //leer/ingresar por teclado el nombre
Para i<-1 Hasta 5 Con Paso 1 Hacer //para: use la opción del menú
de la derecha
Escribir " " , nombre; // escribe el nombre 5 veces, las comillas
le dan espacio
FinPara //fin del comando "Para"
FinProceso //fin del proceso
Proceso sin_titulo
escribir "Digita un numero"; //Muestra en pantalla la instrucción
leer a; //ingresa la variable 'a' (número menor a 10)
Para a<-a+1 Hasta 10 Con Paso 1 Hacer //Comando Para: está al
final derecha de este IDE
escribir " ", a; //El espacio entre comillas ("") solo ajusta el
texto debajo de la variable ingresada
FinPara //Fin del comando Para
FinProceso //Fin del proceso
Proceso suma_n_numeros
21
Proceso sumar_numero
Repetir
22
a<-a
tot<-tot
tot<-Tot+a;
Escribir "Ingrese un número (0 para salir)";
Leer a;
Hasta Que a = 0
Escribir "Total: ",tot;
FinProceso
Proceso numero_entre_0_10
Escribir "Ingresa un numero";
23
Leer a;
Segun a Hacer
0,1,2,3: Escribir "Correcto!!! ", a, " está en el rango de 0 a 10";
6,5,4: Escribir "Correcto!!! ", a, " está en el rango de 0 a 10";
10,9,8,7: Escribir "Correcto!!! ", a, " está en el rango de 0 a
10";
De Otro Modo:
Escribir "Error...", a, " es mayor que 10...Debes escribir
un numero del 0 al 10";
FinSegun
FinProceso
24
Proceso calculadora
escribir "Que quieres hacer?";
escribir "1: Sumar";
escribir "2: Restar";
escribir "3: Multiplicar";
escribir "4: Dividir";
leer a;
Si a=1 Entonces
escribir "digita un valor";
leer b;
escribir "digita un segundo valor:";
leer c
d<-b+c;
escribir " La Suma de ", b, " + ", c, " = ", d
Sino
Si a=2 Entonces
escribir "digita tu valor";
leer b;
escribir "digita tu segundo valor:";
leer c
d<-b-c;
escribir " La Resta de " , b, " - ", c, " = ", d
Sino
Si a=3 Entonces
escribir "digita tu valor";
leer b;
escribir "digita tu segundo valor:";
leer c
d<-b*c;
escribir " La Multiplicación de " , b, " * ", c," = " , d
Sino
Si a=4 Entonces
escribir "digita tu valor";
leer b;
escribir "digita tu segundo valor:";
leer c
d<-b/c;
escribir " La División de " , b, " / ", c, " = ", d
Sino
FinSi
FinSi
25
FinSi
FinSi
FinProceso
26
9. Restar a de b
//Algoritmo que determina el mayor de dos números 'a' y 'b'. Desarrollado por RPC
Proceso cálculo_mental_sumas
Escribir "Cálculo mental de dos números: le ganas a una máquina?";
Escribir "Ingresar un numero A";
Leer A;
Escribir "Ingresar un numero B";
Leer B;
Escribir "Piensa: La Suma A + B = ?";
Leer Piensa; //Piensa es la variable (pensada) por el usuario
Suma <- A + B; // Función Suma
Si piensa = Suma Entonces
Escribir "Correcto!!!...Eres bueno/a en sumar"
Sino
Escribir "Error...Necesitas estudiar!!!"
FinSi
FinProceso
32
33
34
//Algortimo para calcular el tiempo transcurrido entre dos horas H-1 y H-2.
Desarrollado por RPC
Proceso Calcular_tiempo_dos_horas
Escribir "Programa para clacular el Tiempo transcurrido entre
doshoras";
Escribir "Hora-1 (h1, m1)"; //H-1 expresado en
Horas:minutosLeer h1; //introduce h1 por teclado
Leer m1; //introduce m1 por
tecladoEscribir "Hora-2 (h2,
m2)";
Leer
h2;
Leer
m2;
dh<-(h2-h1); //operador diferencia_horas
dm<-(m2-m1); //operador
diferencia_minutos
Si dh<0 Entonces //si dh es negativo (<0) volver
positivodh<-(-1*dh) // multiplicar por -1
35
Sino
dh<-dh // dh>0 positivo, no se 'hace ninguna operación'
FinSi
Si dm<0 Entonces //idem a la línea 12
dm<-(-1*dm) //idem a la línea 13
Sino
dm<-dm //idem a la línea 15
FinSi
36
Escribir "La El tiempo trascurrido entre H-1 y H-2 es: ", dh, "
horas ",dm, " minutos ";
FinProceso
37
Proceso Salario
Escribir "Ingresar horas trabajadas por semana":
Leer HT; //ingresa por teclado las
horas_trabajadas_semanaEscribir "Ingresar el salario
Bs/hora";
Leer SH; //ingresa por teclado el salario
Bs/horaSalario<-HT*SH; //operador
Escribir "El Salario Semanal ganado es: ", " ", Salario, "
Bs";FinProceso
Proceso Promedio
Escribir "Ingrese la cantidad de
datos";Leer N;
acum<-0;
prom<-
acum/N
prom;FinProceso
40