Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Computacin
Laboratorio #1: Descripcin del Entorno de PSeInt
GUA DE LABORATORIO #1
DESCRIPCIN DEL ENTORNOY USO DE PSeInt
1.1
INTRODUCCIN
PseInt (Pseudo Intrprete) es un Entorno de Desarrollo Integrado (IDE, por sus siglas en
ingls) para PseudoCdigo, un lenguaje de programacin imperativa simple y en castellano.
Es decir, PseInt es un editor e intrprete de programas escritos en PseudoCdigo. Su
interfaz grfica permite crear, almacenar, ejecutar y corregir fcilmente programas en
PseudoCdigo.
La sencillez del PseudoCdigo lo hace ideal para la enseanza de la programacin. Permite escribir
programas con instrucciones condicionales (Si-Entonces-Sino, Segun) y ciclos (Mientras, Hasta Que,
Para), y tambin usar valores numricos (nmeros decimales), lgicos, caracteres y arreglos. Tambin
provee funciones de entrada/salida y algunas funciones matemticas.
Este proyecto se encuentra en http://pseint.sourceforge.net y de all se puede descargar la ltima
versin del programa y acceder al foro de soporte.
1.2
HISTORIA DE PSEINT
PSeInt es una herramienta desarrollada por Pablo Novara para aprender la lgica de programacin,
orientada a estudiantes sin experiencia en dicha rea. Mediante la utilizacin de un simple y limitado
pseudo-lenguaje intuitivo y en espaol, permite comenzar a comprender conceptos bsicos y
fundamentales de un algoritmo computacional. Nacido originalmente como proyecto final para la
materia Programacin I de las carrerasde Ingeniera en Informtica Facultad de Ingeniera y Ciencias
Hdricas de la Universidad Nacional del Litoral, es en realidad un intrprete de pseudocdigo basado en
los contenidos de la ctedra de Fundamentos de Programacin de dicha carrera.
El software comenz a desarrollarse en octubre de 2003 utilizando Borland C++ Builder por la
facilidad que brinda para el desarrollo de interfaces visuales y estar presente en los laboratorios de la
facultad. Se inici con una prueba de concepto, ya que era el primer proyecto que iba a desarrollar con
C++. A esta inexperiencia con el lenguaje se le atribuyeron algunos errores de diseo y muchas
ineficiencias en la implementacin que con el tiempo se fueron notando y, cuando se poda, fueron
corregidas. Al ser este un software para uso exclusivamente didctico, no se presentan grandes
problemas de rendimiento (no se tiene que interpretar algoritmos de miles de lneas sumamente
complejos) por lo que se puedo tomar ciertas libertades en la implementacin. Ms an, se debe tener
en cuenta que el objetivo principal del intrprete no es slo interpretar un buen cdigo, sino tambin
sealar correctamente los errores de uno incorrecto. La versin original, presentado el 29 de diciembre
del mismo ao, tena cientos de errores latentes, slo corra bajo Windows y se limitaba a interpretar el
algoritmo o marcar sus errores de sintaxis.
Casi dos aos ms tarde se empez a crear el proyecto en SourceForge y publicar as el software bajo la
Licencia Pblica General (GPL) y a portarlo al sistema operativo GNU/Linux. El intrprete propiamente
dicho estaba escrito mayormente en ANSI/ISO C++ por lo que no present mayores dificultades, pero la
interfaz grfica debi desarrollarse desde cero, eligindose para tal fin la librera GTK+ por estar est
presente en la mayora de las distribuciones de Linux y tener alguna experiencia en la utilizacin de la
misma.
Algunos de los grandes cambios realizados entre 2006 y 2009 son el desarrollo de una nueva interfaz
unificada para todas las versiones eliminando finalmente la dependencia de las bibliotecas de Borland
(propietarias y obsoletas), el agregado de un mdulo para convertir el pseudocdigo a cdigo C++ y la
inclusin de un pequeo sistema de pseudo-depuracin para realizar pruebas de escritorio o seguir el
algoritmo paso a paso. Adems, a lo largo de estos aos se han ido encontrando y corrigiendo cientos
de errores en la interpretacin del pseudocdigo. Esto, junto con un mal diseo inicial de las
estructuras de datos internas hizo que el cdigo fuente del intrprete se llenase de parches y tornara
muy difcil de mantener e imposible agregar nuevas funcionalidades. Por esto, a fines de 2008 se
decidi reescribir las partes ms crticas desde cero utilizando un diseo ms adecuado. Durante casi
dos aos (2009 y 2010) no hubo actualizaciones del software ya que estaba justo en medio del cambio.
En las vacaciones 2010-2011 se pudo completar la integracin del nuevo sistema y durante el primer
cuatrimestre de este ao se vio una seguidilla de versiones y correcciones publicadas como en los
viejos tiempos, ya que al comenzar a utilizar el nuevo cdigo comenzaron a surgir los nuevos
problemas y nuevos errores que corregir. Finalmente, el cdigo del intrprete se ha estabilizado otra
vez y el cambio ha sido para mejor sin dudas, la ltima actualizacin fue el 11-03-2014.
1.3
PSeInt est pensado para asistir a los estudiantes que se inician en la construccin de programas o
algoritmos computacionales. El pseudocdigo se suele utilizar como primer contacto para introducir
conceptos bsicos como el uso de estructuras de control, expresiones, variables, etc, sin tener que lidiar
con las particularidades de la sintaxis de un lenguaje real. Este software pretende facilitarle al
principiante la tarea de escribir algoritmos en este pseudolenguaje presentando un conjunto de
ayudas y asistencias, y brindarle adems algunas herramientas adicionales que le ayuden a encontrar
errores y comprender la lgica de los algoritmos.
1.4
1.
2.
3.
4.
5.
6.
7.
8.
9.
Figura 1
Barra de Herramientas: Puede mostrar u ocultar la barra de herramientas (la barra que se ubica justo
debajo de la barra de mens y contiene iconos de accesos rpidos a las acciones ms utilizadas)
mediante el tem Mostrar Barra de Herramientas del men Configurar.
Panel de Comandos: El panel de comandos le permite introducir acciones o estructuras de control en
su algoritmo mediante un clic. Se ubica por defecto en la parte derecha de la ventana y al seleccionar
una de sus primitivas introduce en el cdigo del proceso actual la plantilla de la misma, marcando con
recuadros las partes de la misma que debe completar (expresiones, acciones, valores, etc).
rea de Informacin de Ejecucin: Se actualiza cada vez que se ejecuta el algoritmo. En ella
aparecen los errores encontrados, ya sean de sintaxis (antes de ejecutarse) o errores en tiempo de
ejecucin. Al hacer clic sobre los mismos, automticamente se seleccionar la lnea que contiene dicho
error en el rea de trabajo. Si la ejecucin se interrumpe de forma anormal (presionando Ctrl+Pause o
finalizando el proceso mediante Windows), dicha informacin no puede ser actualizada.
1.5.2
MEN Archivo
Figura 2
MEN Editar
Deshacer: Deshace el ltimo cambio realizado al
pseudocdigo. Solo tiene un nivel.
Rehacer: Deshace el ltimo cambio realizado al
pseudocdigo. Solo tiene un nivel.
Cortar, Copiar y Pegar: Interactan entre el texto del rea
de trabajo y el portapapeles de Windows para cortar, copiar o
pegar texto seleccionado.
Mover Hacia Arriba: Mueve el los elementos
seleccionados a la lnea de arriba.
Mover Hacia Abajo: Mueve el los elementos
seleccionados a la lnea de abajo.
4
Buscar: Localiza una cadena dentro del algoritmo. No distingue entre maysculas y minsculas.
Buscar Anterior: Repite la ultima bsqueda realizada comenzando desde la ubicacin del cursor.
Buscar Siguiente: Repite la ultima bsqueda realizada comenzando desde la ubicacin del cursor.
Reemplazar: Permite realizar la bsqueda de una palabra y reemplazarla por otra.
Seleccionar Todo: Selecciona todo el pseudocdigo.
Duplicar Lneas:Permite duplicar la(s) lneas seleccionadas.
Eliminar Lneas: Permite eliminar la(s) lneas seleccionadas.
Comentar Lneas: Permite comentar la(s) lneas seleccionadas.
Descomentar Lneas: Permite descomentar la(s) lneas seleccionadas.
Corregir Indentado: El indentado agrega o quita tabulaciones a las lneas para indentar
correctamente el cdigo segn su estructura y anidamiento.
1.5.4
MEN Configurar
Resaltar Bloques Lgicos: Cuando esta opcin est activada, colocar el cursor de edicin de
texto en la primer o ltima lnea de una estructura de control en el pseudocdigo, todas las lneas
correspondientes a la estructuras se resaltan mediante un fondo amarillo, para indicar de forma
visual el alcance de dicha estructura.
Utilizar Ayudas Emergentes: Estas ayudas le indican qu debe escribir luego de cada palabra
clave. Se muestran como globos emergentes sobre el cdigo e indican el tipo de accin, expresin,
etc. que debe introducir a continuacin. Puede activar o desactivar estas ayudas mediante el tem
Utilizar Ayudas Emergentes del men Configuracin.
Utilizar Indentado Inteligente: El indentado inteligente agrega o quita tabulaciones a las
lneas para indentar correctamente el cdigo segn su estructura y anidamiento (por ejemplo, luego
de una lnea que abre un bucle PARA, la siguiente tendr un indentado mayor). Estas acciones se
realizan en conjunto con la seleccin de palabras claves en el men de autocompletado. Puede
activar o desactivar estas acciones mediante el tem Indentado Inteligente del men
Configuracin.
Comprobar Sintaxis Mientras Escribe: Cuando esta opcin se encuentra habilitada, PSeInt
verifica la sintaxis del pseudocdigo automticamente unos segundos despus de que el usuario deja
de escribir, sin necesidad de intentar ejecutar el algoritmo. Cuando se encuentran errores, se marcan
con un subrayado ondulado en color rojo, y si se coloca el cursor de texto sobre la instruccin se
despliega la descripcin abreviada del mismo. De esta forma, el alumno puede ir viendo la validez de
su pseudocdigo desde el punto de vista sintctico en tiempo real mientras lo desarrolla. Puede
activar o desactivar estas ayuda el tem Comprobar Sintaxis Mientras Escribe del men
Configuracin.
Opciones del Lenguaje(perfiles):Esta configuracin se realiza la primera vez que se ejecuta
PSeInt, pero se puede modificar por medio de esta opcin para configurar las caractersticas del
lenguaje.
No permitir utilizar variables o posiciones de arreglos sin inicializar: Si esta opcin est
deshabilitada se puede utilizar variables sin incializar (que nunca fueron ledas o asignadas en
expresiones o para mostrar en pantalla. En este caso asumen el valor por defecto 0, "", o FALSO segn
el tipo que corresponda. Si esta opcin est seleccionada escribir o evaluar una expresin que involucra
una variable sin inicializar genera un error en tiempo de ejecucin.
Obligar a definir los tipos de variables: Si esta opcin 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 opcin 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 pseudocdigo 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 opcin esta activada se puede
concatenar el contenido de dos variables de tipo carcter con el operador +. Por ejemplo:
NombreCompleto &- Nombre+" "+Apellido;
Habilitar funciones para el manejo de cadenas: Esta opcin habilita el uso de las funciones
Longitud, Subcadena, Maysculas, Minsculas y Concatenar, que operan sobre cadenas de caracteres.
Vea funciones para una mejor descripcin de las mismas.
Permitir las palabras Y, O, NO y MOD para los operadores &, |, ~ y %: Con esta opcin habilitada
PSeInt acepta las palabras clave Y, O, NO, y MOD como sinnimos de los operadores &, |, ~ y %
respectivamente. Notar que en este caso estas palabras sern palabras reservadas y no se podrn
utilizar como nombres de variables.
Utilizar arreglos en base 0: Si esta opcin 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 opcin est seleccionada se puede
utilizar una variable o una expresin que involucre variables para dimensionar un arreglo (por
ejemplo, se puede pedir al usuario del programa el tamao leyendo un numero 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 tamao de los arreglos estticos sea una constante (por ejemplo, C y
C++).
Permitir asignar con el signo igual (=): Esta opcin habilita la asignacin con el signo igual (Ej:
x=0;). En muchos casos esta sintaxis de asignacin no se permite, ya que en muchos lenguajes no se
utiliza el mismo operador para asignar y comparar, como sucede al activar esta opcin. En cualquier
caso, las otras dos sintaxis de asignacin (con <- y con :=) siguen siendo vlidas.
Permitir definir funciones/subprocesos: Esta opcin habilita el uso de la palabras claves
SubProceso y Funcin (ambas completamente equivalentes) para permitir definir nuevas funciones en
pseudocdigo. Vea subprocesos para ms detalles.
Utilizar sintaxis flexible: Esta opcin 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 segn con la palabra O, utilizar la estructura REPETIR-MIENTRAS QUE como
variante de REPETIR-HASTA QUE, etc. Adems, permite utilizar acentos y ees en los nombres de
variables. Muchas de las variaciones de la sintaxis resultan en construcciones ms naturales en un
verdadero pseudocdigo, pero no son posibles o son incompletas en un lenguaje de programacin real.
Permitir condiciones en lenguaje coloquial: Esta opcin permite expresar las condiciones en un
lenguaje ms coloquial con construcciones como "X ES PAR", "X NO ES MULTIPLO DE 5", "X ES IGUAL A
Y", "X ES ENTERO", etc. Esta opcin activa adems el uso de palabras clave para reemplazar
operadores.
Usar diagramas de Nassi-Schneiderman: Si esta opcin est deshabilitada el editor de diagramas
flujo graficar este tipo de diagramas en lugar de los diagramas de flujo clsicos utilizados
originalmente por PSeInt. Esta opcin no modifica el lenguaje, por lo que tambin se puede
activar/desactivar directamente desde el men Configurar mediante el tem Usar diagramas de NassiSchneiderman, de forma que el usuario pueda alternar fcilmente entre uno y otro tipo de diagrama si
lo desea.
1.5.5
MEN Ejecutar
Figura 6.
Ejecutar: Ejecuta el algoritmo en una nueva ventana de consola. Si el algoritmo contiene errores de
sintaxis, no ser ejecutado.
Ejecutar Paso a Paso:
La ejecucin paso a paso permite realizar un seguimiento ms detallado de la ejecucin del algoritmo.
Es decir, permite observar en tiempo real qu instrucciones y en qu orden se ejecutan, como as
tambin observar el contenido de variables o expresiones durante el proceso.
Si el panel de ejecucin paso a paso no se encuentra visible, puede acceder al mismo mediante el botn
ubicado en el margen derecho de la ventana, o bien iniciando la ejecucin paso a paso mediante el
botn de ejecucin paso a paso en la barra accesos rpidos (ubicado entre los botones para ejecutar y
dibujar diagrama de flujo) o el atajo de teclado F5.
El botn "Comenzar" del panel sirve para iniciar la ejecucin automtica. Cuando lo utilice, el algoritmo
comenzar a ejecutarse automticamente, avanzando de una instruccin a intervalos de tiempo
regulares. Cada instruccin que se vaya ejecutando segn el flujo del programa se ir seleccionando en
el cdigo de dicho algoritmo indicando adems la lnea con una flecha verde o amarilla sobre el margen
izquierdo del pseudocdigo. La velocidad con que avanza la ejecucin del algoritmo puede ajustarse
desplazando el control rotulado como "Velocidad" en el panel.
Otra forma de comenzar la ejecucin paso a paso es utilizar el botn "Primer Paso" del mismo panel.
Este botn iniciar la ejecucin, pero a diferencia de "Comenzar" no avanzar de forma automtica,
sino que se parar sobre la primer lnea del programa y esperar a que el usuario avance manualmente
cada paso con el mismo botn (que pasar a denominarse Avanzar un Paso).
Cuando el intrprete llega a una instruccin que involucra una llamada a un subproceso, puede avanzar
directamente a la siguiente lnea (ejecutando todo el subproceso como una nica unidad a modo de
caja negra, sin reflejar cmo es el flujo de ejecucin dentro del mismo), o puede avanzar lnea por lnea
dentro del subproceso. Esto depende del estado del cuadro "Entrar en subprocesos".
El botn "Pausar/Continuar" sirve para detener momentneamente la ejecucin automtica del
algoritmo y reanudarla nuevamente despus. Detener el algoritmo puede servir para analizar el cdigo
fuente, o para verificar qu valor tiene asignado una variable o cuanto valdra una determinada
expresin en ese punto.
Para determinar el valor de una variable o expresin, una vez pausada la ejecucin paso a paso, utilice
el botn "Evaluar...". Aparecer una ventana donde podr introducir cualquier nombre de variable o
expresin arbitraria (incluyendo funciones y operadores), para luego observar su valor. Una forma
rpida de observar el valor de una variable consiste en hacer click con el botn derecho del ratn sobre
la misma en el panel de variables (ubicado en el margen izquierdo de la ventana).
Si desea analizar cmo evolucionan uno o ms variables a lo largo de la ejecucin del algoritmo, puede
activar la "Prueba de escritorio". Esta opcin genera una tabla donde las columnas representan
variables o expresiones, y las filas los distintos estados ordenados por los que pasa el programa a
medida que se va ejecutando.
Finalmente, la opcin "Explicar con detalle cada paso" despliega en la parte inferior de la
ventana un panel donde el intrprete comentar los pasos especficos que realiza al interpretar cada
instruccin. All aparecen por ejemplo las expresiones que se evalan y sus resultados, las variables
que se leen o asignan, las decisiones que controlan el flujo de ejecucin en las estructuras de control,
etc. El panel dispone de un botn para avanzar manualmente, ya que no permite el modo de avance
automtico.
Verificar Sintaxis: La verificacin de sintaxis permite realizar un seguimiento ms detallado de la
sintaxis del algoritmo y en caso de encontrar un error mostrar una descripcin de la instruccin
invlida y sugerencias de cmo solucionar dicho error sintctico.
Ejemplo:
Figura 7.
1.5.6
MEN Ayuda
Figura 8.
10
ndice: Muestra un ndice de contenidos con los temas de ayuda del intrprete.
intrprete
Ayuda Rpida:Muestra
Muestra una ventana en donde se puede introducir la palabra que hace referencia al
tema de bsqueda y en caso de encontrar informacin muestra la ayuda correspondiente.
correspondiente
Ejemplos:PSeInt
PSeInt incluye un conjunto de algoritmos de diferentes niveles de dificultad para
ejemplificar la sintaxis y el uso del pseudocdigo.
Acerca de...: Muestra informacin de la aplicacin.
1.6
EL PSEUDOCDIGO EN PSEINT
PSEINT:
DEFINICIN DE VARIABLES:
11
CARACTER, TEXTO y CADENA son sinnimos para definir variables de tipo carcter. Estas pueden
contener cero, uno o ms caracteres arbitrarios y no tienen
tienen una longitud mxima. Si se declara una
variable de este tipo y en una lectura el usuario ingresa un nmero o un valor lgico, se asignar una
cadena que contiene el texto ingresado (ejemplo: "1", "VERDADERO", etc).
Si se intenta asignar a una variable ya definida un dato de un tipo incorrecto se producir un error en
tiempo de ejecucin.
1.6.2
OPERACIN DE ASIGNACIN:
//asigna 1 a var
// incrementa en 1 el acumulador
1.6.3 ENTRADAS
La instruccin Leer permite ingresar informacin desde el ambiente.
Leer variablel , variable2 , ... , variableN
variableN;
Esta instruccin Lee
ee N valores desde el ambiente (en este caso el teclado) y los asigna a las N variables
mencionadas. Pueden incluirse una o ms variables, por lo tanto el comando leer uno o ms valores.
Si la variable existe se pierde su valor anterio
anteriorr ya que tomar el valor nuevo, razn por la cual se dice
que la lectura es "destructiva" (destruye el valor que tena previamente la variable).
Ejemplos:
Leer Cantidad;
Leer Valor1,Valor2,Valor3;
12
1.6.4
SALIDAS
1.6.5
OPERADORES Y FUNCIONES
Este pseudolenguaje dispone de un conjunto bsico de operadores y funciones que pueden ser
utilizados para la construccin de expresiones ms o menos complejas.
La siguiente tabla muestra los operadores de este lenguaje:
13
Figura 9
Figura 10
14
Observaciones:
1. Se pueden introducir comentarios luego de una instruccin, o en lneas separadas, mediante el uso
de la doble barra ( // ). Todo lo que precede a //, hasta el fin de la lnea, no ser tomado en cuenta al
interpretar el algoritmo.
2. Note que no puede haber instrucciones fuera del programa, aunque si comentarios.
3. Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener otras adentro, pero la
estructura contenida debe comenzar y finalizar dentro de la contenedora.
4. Los identificadores, o nombres de variables, deben constar slo de letras y nmeros, comenzando
siempre con una letra.
5. Las constantes de tipo carcter se escriben entre comillas ().
6. En las constantes numricas, el punto (.) es el separador decimal.
7. Las constantes lgicas son Verdadero y Falso.
1.7
1.7.1
1.7.2
15
1.8
Figura 12.
Figura 13.
16
EJERCICIOS RESUELTOS:
Dada la matrcula y 5 calificaciones de un alumno obtenidas a lo largo del semestre, construya un
algoritmo que imprima la matricula del alumno y el promedio de sus calificaciones.
Diagrama de Flujo
17
Escriba un algoritmo que dado como datos el nombre de un dinosaurio, su peso y su longitud,
expresados estos dos ltimos en libras y pies respectivamente; escriba el nombre del dinosaurio, su
peso expresado en kilogramos y su longitud expresada en metros.
Consideraciones:
1 tonelada = 1000 kg
1 pie = 0.3047 metros
Diagrama de Flujo
18
Escriba un algoritmo tal que dado como datos el radio y altura de un cilindro, calcule e imprima el
area y volumen del mismo cilindro.
Consideraciones:
Volumen de un cilindro = * radio2 * altura
Area o superficie del cilindro = 2 * radio * altura
Diagrama de Flujo
19
Diagrama de flujo
20
EJERCICIOS PROPUESTOS:
1. Realizar un algoritmo que calcule el permetro y el rea de un rectngulo dada la base y
laaltura del mismo.
2. Dado el siguiente algoritmo corrija los errores que encuentre para que calcule e imprime el
promedio de 3 nmeros.
3. Dado el siguiente algoritmo corrija los errores tal que dadas las horas trabajadas de una
persona y el valor por hora. Calcular su salario e imprimirlo.
4. El dueo de una tienda compra un artculo a un precio determinado. Obtener el precio en que lo
debe vender para obtener una ganancia del 20%.
5. Dados el cateto A y la hipotenusa C, el cateto B se calcula
B2 = C2 A2
Elabore un algoritmo que lea el tamao del cateto A y la hipotenusa C; y calcule e imprima el
tamao del cateto B.
6. Dados dos ngulos de un tringulo se puede calcular el tercer ngulo. Se sabe que la suma de los
ngulos de un tringulo es 180 grados. Elabore un algoritmo que lea los ngulos A y B e
imprima el ngulo C.
21