Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMACIN
(CompiProgramacin)
Resumen
elaboracin de algoritmos que sirven de base para la codificacin de los diversos programas que
tendrn que desarrollar.
Programar es algo ms que aprender un lenguaje; es tambin tener el conocimiento previo para
analizar y disear un algoritmo que de solucin a un problema planteado. Un lenguaje de
programacin no es ms que el vehculo con el que se da forma a las ideas; por tanto este no es lo
primordial; lo es ms bien la lgica de programacin, que a su vez aportar parmetros de solucin
al problema que se desea resolver.
CompiProgramacin es una herramienta que servir como recurso didctico para el proceso de
formacin en lgica de programacin, y al mismo tiempo permitir al usuario, de manera
interactiva, la creacin de algoritmos, su depuracin y seguimiento paso a paso; tambin le ayudar
en la evaluacin de expresiones aritmtica y/o lgicas.
2. Qu es CompiProgramacin?
utilizando el paradigma estructurado1. La herramienta cuenta con una interfaz comunicativa con un
modelo pedaggico que le permite al estudiante un fcil aprendizaje de la sintaxis y las reglas
semnticas del seudocdigo, para esto la herramienta cuenta con un analizador gramatical con
recuperacin de errores con
Con CompiProgramacin pueden manejarse los siguientes conceptos del paradigma estructurado:
2
3
El software fue desarrollado como trabajo de grado para optar al ttulo de Magster en Ingeniera de Sistemas de
la Universidad Nacional de Colombia
El pseudocdigo es un lenguaje para especificar un algoritmo
El applet es un programa en Java que es diseado para ser ejecutado desde otra aplicacin, normalmente desde
un navegador de Internet.
El manejo de procedimientos
Este es el mdulo principal de CompiProgramacin. Cuenta con una interfaz que contiene tres
ventanas: la primera permite crear, modificar eliminar un seudocdigo, abrirlo desde
un archivo, como tambin almacenarlo en disco (al ingresar a la aplicacin est
contiene un ejercicio ejemplo de seudocdigo). Para la creacin del pseudocdigo es
necesario que ste contenga un procedimiento principal, en el cual se escribirn todas
las instrucciones del algoritmo. Su esquema es el siguiente:
procedimiento principal()
constantes
<declaracin de constantes>
variables
<declaracin de variables>
inicio
<instrucciones>
fin_procedimiento
Adems CompiProgramacin cuenta con tipos de datos (reales, enteros) y palabras reservadas. Las
palabras reservadas no pueden ser nombre de variables, constantes, funciones o procedimientos. Las
palabras reservadas de CompiProgramacin son:
leer: permite almacenar en una variable un valor ledo desde el teclado, su formato es:
leer (<nombre de variable>)
Ejemplo: Si deseamos almacenar en una variable X un valor digitado desde el teclado, escribiramos
lo siguiente:
leer(X)
si: representa una toma de decisin sencilla, es decir, si la condicin es verdadera se realizan
las acciones que pertenezcan al si y continuara con el resto del programa. Si la condicin es
falsa no entrara al si y por consiguiente todas las instrucciones que estn en el si no se
ejecutaran. Su formato es:
si (<condicin>) entonces
<accin>
fin_si
Ejemplo:
Si tenemos A=10 y B=8
si (A>B) entonces
escribir("Hola Gente")
fin_si
Como la condicin en verdadera (A es mayor que B) entrar al si e imprimir Hola Gente.
si sino: representa una toma de decisin con dos opciones, si la condicin es verdadera se
ira por el si, en caso contrario entrara al sino. En esta sentencia de control el programa solo
tomara una de las dos posibilidades y en ningn caso las dos alternativas. Su formato es:
si (<condicin>) entonces
<accion1>
sino
<accion2>
fin_si
Seleccionar: es una toma de decisin con varias opciones, esto es, segn sea el valor de una
variable escoger un solo caso entre varias alternativas. Su formato es:
seleccionar (<variable>) de
caso 1<literal>:
<instrucciones>
retornar
caso 2 <literal>:
<instrucciones>
retornar
otrocaso:
<instrucciones>
retornar
fin_seleccionar
Ejemplo: Si tenemos A=2
seleccionar (A) de
caso 1:
escribir("en el caso uno")
retornar
caso 2:
escribir("en el caso dos")
retornar
.
otrocaso:
escribir("No es un nmero")
retornar
fin_seleccionar
Es este ejemplo como la variable A tiene un valor de 2 ingresara al caso 2 e imprimira en pantalla
"en el caso dos".
para / hasta: ejecuta las instrucciones del ciclo un nmero especificado de veces y de modo
automtico controla el nmero de iteraciones o pasos a travs del cuerpo del ciclo. Su
formato es:
para (<variable> = <valor inicial> hasta <valor final> paso <valor_incremento>) hacer
<instrucciones>
fin_para
mientras: La estructura repetitiva mientras es aquella donde el cuerpo del ciclo se repite
mientras se cumple una determinada condicin. Si se evala falsa, ninguna accin se toma y
el programa prosigue en la siguiente instruccin despus del ciclo. Si la expresin es
verdadera, entonces de ejecuta las instrucciones del ciclo, despus de lo cual se evala de
nuevo la expresin. Este proceso se repite una y otra vez mientras la expresin sea
verdadera. Su formato es:
mientras (<condicin>) hacer
<instrucciones>
<incremento> <decremento>
fin_mientras
haga / mientras: existen muchas situaciones en las que se desea que un ciclo se ejecute al
menos una vez antes de comprobar la condicin de repeticin. En la estructura mientras si el
valor de la expresin es inicialmente falso, el cuerpo del ciclo no se ejecutar; por ello, se
necesitan otros tipos de estructuras repetitivas. La estructura haga/mientras se ejecuta por lo
menos una vez. Su formato es:
haga
<instrucciones>
mientras (<condicin>)
Ejemplo : capturar dos nmeros e imprimir la suma de estos por medio de una funcin
funcion suma(arg:entero, arg2:entero ):entero
variables
c:entero
inicio
c=arg+arg2
retornar c
fin_funcion
procedimiento principal()
variables
alto: real
ancho: real
largo: real
volumen: real
inicio
escribir("Escriba el alto: ")
leer(alto)
escribir(cambioLinea)
escribir("Escriba el ancho: ")
leer(ancho)
escribir(cambioLinea)
escribir("Escriba el largo: ")
leer(largo)
escribir(cambioLinea)
volumen = largo * alto * ancho
escribir("el volumen de la caja es: ")
escribir(volumen)
fin_procedimiento
Una tercera ventana permite visualizar la traduccin del seudocdigo a los lenguajes de
programacin C++ y Java (autnomos y applets); estas traducciones pueden ser almacenadas en
disco. Continuando con el ejemplo anterior, al realizar la traduccin a C++ la herramienta genera el
siguiente cdigo:
#include <iostream.h>
void main()
{
float alto;
float ancho;
float largo;
float volumen;
cout<<"Escriba el alto: ";
cin>>alto;
cout<<"\n";
cout<<"Escriba el ancho: ";
cin>>ancho;
cout<<"\n";
cout<<"Escriba el largo: ";
cin>>largo;
cout<<"\n";
volumen=largo*alto*ancho;
cout<<"el volumen de la caja es: ";
cout<<volumen;
}
import java.awt.*;
import java.applet.*;
public class MyClase extends Applet{
public boolean action(Event e, Object o) {
float alto=0;
float ancho=0;
float largo=0;
float volumen=0;
if(e.target==myButton1){
alto = Float.parseFloat(t_alto.getText());
ancho = Float.parseFloat(t_ancho.getText());
largo = Float.parseFloat(t_largo.getText());
l_aux17.setText(""+"Escriba el alto: ");
l_aux19.setText(""+"Escriba el ancho: ");
l_aux21.setText(""+"Escriba el largo: ");
volumen=largo*alto*ancho;
l_aux23.setText(""+"el volumen de la caja es: ");
l_volumen.setText(""+volumen);}
return true;}
public void init(){
add(l_aux17 = new Label());
add(t_alto = new TextField(10));
add(l_aux19 = new Label());
add(t_ancho = new TextField(10));
add(l_aux21 = new Label());
add(t_largo = new TextField(10));
add(l_aux23 = new Label());
add(l_volumen = new Label());
add(myButton1 = new Button("Respuesta"));}
Button myButton1;
TextField t_alto;
TextField t_largo;
TextField t_ancho;
Label l_aux19;
Label l_volumen;
Label l_aux17;
Label l_aux23;
Label l_aux21;}
La interfaz tambin cuenta con submens y una serie de iconos que permiten que la interaccin
usuario sistema se efecte de forma sencilla y dinmica.
Es la parte del compilador4 que verifica el programa fuente, carcter a carcter, y a partir de ste
construye unas entidades primarias llamadas tokens5. En otras palabras, el analizador lexicogrfico
transforma el programa fuente en unidades lexicogrficas (Vanegas, 2005: 14), (TEUFEL, 1995).
Un compilador es un programa que recibe como entrada un programa escrito en un lenguaje de nivel medio o
superior (el programa fuente) y lo transforma a su equivalente en lenguaje ensamblador (el programa objeto).
El token es una palabra del lenguaje conformada por smbolos terminales de la gramtica. En lenguaje Java un
token puede ser variable, pero dependiendo del contexto tendr diferentes interpretaciones; en cambio el token int
denota un tipo de dato entero.
Comprueba que las sentencias que componen el texto fuente sean correctas en el lenguaje
correspondiente, creando una representacin interna que corresponde a la sentencia analizada. De
esta manera se garantiza que slo sern procesadas las sentencias que pertenezcan al lenguaje
fuente. As como en las dems etapas, durante el anlisis sintctico se van mostrando los errores que
se encuentran (Vanegas, 2005: 14), (TEUFEL, 1995).
Para acceder a este mdulo debe existir un pseudocdigo previamente compilado (sin errores
sintcticos ni semnticos) y almacenado en disco.
Este mdulo de ejecucin paso a paso contiene la misma interfaz del mdulo compilador y
traductor de Seudocdigo a C++ y Java. En l se encontrarn tres ventanas: la primera permite al
usuario hacer un seguimiento del algoritmo paso a paso, visualizando lnea por lnea el
pseudocdigo; en la segunda ventana se visualizarn los diferentes valores que toman las variables y
constantes contenidas en el algoritmo; una tercera ventana permite visualizar la simulacin de una
consola con las entrada y salidas del programa. El mdulo tambin contiene las opciones que le
permitan realizar el seguimiento del algoritmo, a saber: inicio, paso a paso, reiniciar y ejecucin
contina.
Para acceder a este mdulo no es necesario que exista un pseudocdigo, pero s es necesario acceder
el mdulo compilador y traductor de pseudocdigo a C++ y Java. All el usuario puede realizar la
evaluacin de una expresin aritmtica y/o lgica, visualizando paso a paso el procedimiento de
evaluacin de la expresin.
El mdulo cuenta con cuatro ventanas. La primera permite el ingreso de variables; el usuario puede
escribir el nombre y valor de cada una de las que intervienen en la evaluacin de la expresin; en
una segunda ventana se visualiza el valor de cada variable mostrando el tipo de dato, nombre y valor
de la variable. La tercera ventana permite visualizar el proceso de evaluacin paso a paso y en la
cuarta se visualizan los posibles errores contenidos en la expresin.
El evaluador de expresiones sta compuesto por los analizadores gramaticales que son utilizados en
el mdulo compilador y traductor de pseudocdigo a C++ y Java.
6. Conclusiones
CompiProgramacin es una herramienta que sirve de apoyo didctico para todos los interesados
en la lgica de programacin, con el propsito de analizar y disear algoritmos que den solucin
a un problema planteado.
La herramienta cuenta con una interfaz comunicativa diseada con propsitos pedaggicos; ella
permite al usuario una interaccin agradable con el sistema y su fcil manejo. El usuario siempre
estar en contacto con la aplicacin, permitindole manejar los diferentes mdulos de la
aplicacin con sencillez.
CompiProgramacin contiene una ayuda didctica que permite al usuario la operacin sencilla
para la creacin de seudocdigo y la traduccin a los lenguajes de programacin C++ y Java;
adems puede hacerse un seguimiento paso a paso del seudocdigo para determinar las entradas
y salidas del algoritmo.
Compiprogramacin contiene una ayuda en ambiente Windows que permite conocer todo acerca
de la aplicacin, la gramtica del seudocdigo, la relacin de errores sintcticos y semnticos
identificables y las funciones preexistentes.
REFERENCIAS BIBLIOGRFICAS
[1] DEITEL, H y DEITEL, P. Cmo programar el Java. 5 edicin. Mxico D.F.: Prentice Hall. 2004.
[2] JOYANES AGUILAR, Lus. Fundamentos de programacin, algoritmos y estructura de datos, 1 ed.
Mxico D.F.: Prentice Hall. 2003.
[3] TEUFEL, Bernand; SCHMIDT, Stephanie y TEUFEL, Thomas. Compiladores, conceptos fundamentales.
Wilmington, Delaware, USA: Addison-Wesley. 1995.
[4] VANEGAS, Carlos Alberto. Compilador y traductor de pseudocdigo para la lgica de programacin.
Trabajo de grado para optar al ttulo de Magster en Ingeniera de Sistemas. Bogot: Universidad Nacional de
Colombia. 2005.
BIBLIOGRAFA RECOMENDADA
[1] AHO A., John E. and Ullman Jeffrey D., Compiladores: principios, Tcnicas y Herramientas,,. 1 Edicin.
Addison- Wesley. 1988.
[2] BECERRA SANTAMARIA, Cesar. Lenguaje C, el nuevo concepto. Tomo I. Bogot: Kimpres Ltda. 1993.
[3] BOOCH, Grandy. Anlisis y diseo orientado a objetos con aplicaciones. 2. ed. USA: 1996.
[4] CEBALLOS,, Carmona Miguel Angel. Trabajo de Lenguajes y Autmatas. ITESI, Febrero de 2002.
[5] JOYANES AGUILAR, Lus. Fundamentos de programacin, algoritmos y estructura de datos, 1 ed.
Mxico D.F.: Prentice Hall. 1998.
[6] LEMONE, Karen. Fundamentos de compiladores, como traducir al lenguaje de computadora. 1. ed.
Mxico D.F.: Continental. 1996.
[7] PRESSMAN, Roger. Ingeniera del software, un enfoque prctico. 3. ed. Madrid: McGraw Hill. 1994.
[8] The on-line Java 2 SDK Documentation.2001. En: http://java.sun.com/j2se/1.3/docs/index.html