ProgramacionU#117.qxd 4/28/01 6:06 PM Page 76
E X P E R T O S
P R O G R A M A C I Ó N
CREANDO NUESTRA PROPIA CALCULADORA
Delphi: el hijo de Pascal
Generalmente, los PRIMEROS PASOS en el área de la
programación se realizan con Pascal, debido a que sus
sentencias no son complicadas ni difíciles de entender.
La empresa BORLAND nos ofrece esta alternativa en
LENGUAJES VISUALES que nos permitirán hacer
nuestras propias aplicaciones con base en Pascal.
Alex VALENCIA
[email protected]
Estudiante de Ciencias de la Computación y
experto en programación.
D
elphi es un lenguaje de programación muy flexible y fácil
de usar, sobre todo para aquellas personas que dominan
el conocido lenguaje Pascal. Si bien en estos últimos años los
lenguajes como Visual Basic o JAVA han tenido una gran reper-
cusión dentro del mundo de la programación visual, Delphi no
se queda atrás, y presenta las características típicas de los len-
guajes visuales, lo que lo vuelve fácil de aprender para cual-
quiera que sepa usar este tipo de herramientas, o bien para
quien quiera comenzar a usarlas. La interfase del programa re-
sulta muy familiar para los programadores de Visual Basic. Con-
tiene objetos muy similares y la mayoría de sus propiedades son
las mismas (en la Figura 1 se muestra la pantalla de un pro-
yecto en blanco).
Sin embargo, existen ciertas diferencias entre este lenguaje
y Visual Basic, desde del punto de vista del manejo de ciertas
estructuras y, obviamente, sintáctico. El objetivo de esta nota
es cubrir algunos aspectos básicos que nos resultarán útiles
para nuestra calculadora de ejemplo y para guiarnos por los
primeros pasos en Delphi.
Procedimientos y funciones
A diferencia de Visual Basic, el lenguaje Delphi usa proce-
dimientos y funciones para ejecutar el código que utiliza
nuestro programa. La diferencia principal entre ambos es que
las funciones reciben parámetros y devuelven el resultado en
el nombre de la función (como en VB). En cambio, los proce-
dimientos se encargan de ejecutar un código prescrito que se
basará en parámetros que se califican de “entrada”, “salida”
y de “entrada/salida”, a través de los cuales enviaremos da-
tos y recibiremos resultados. La forma de declararlos está en
la Tabla 1.
Variables y constantes
A diferencia de otros lenguajes y al igual que C, Delphi usa
referencias en las declaraciones de variable, lo que significa
que utiliza punteros a una dirección donde se almacena el da-
to que queremos escribir o leer.
Esto lo vuelve mas útil en algunas cosas; tal vez una de las
más importantes sea el tipo de dato string, que es manejado
Figura 1. Ésta es la pantalla principal
de Delphi. Como se ve, no es muy
diferente de otros programas de
lenguaje visual, por lo cual no nos
resultará difícil familiarizarnos con él.
Figura 2. Aquí está nuestro primer
programa. En una de esas, Bill nos
compra los derechos para incluirlo en su
próximo Windows.
Figura 3. Aquí vemos cómo quedaría la
interfase gráfica de la calculadora.
Obviamente, podemos hacerla como más
nos guste.
76
u s e r s . t e c t i m e s . c o m
ProgramacionU#117.qxd 4/28/01 6:07 PM Page 77
Si no tenemos Delphi,
podemos bajarlo de la
página oficial,
www.borland.com/downloads, donde
hay una versión trial de
30 días de duración.
como cadena, donde podremos indexar un carácter específico,
lo que hace mucho más flexible el trabajo sobre este tipo de
datos.
También encontraremos otros tipos de datos, que podremos
utilizar en nuestras aplicaciones y que desarrollaremos a me-
dida que avancemos en nuestra aplicación de ejemplo (se de-
tallan en la Tabla 2). En esta ocasión, construiremos una
sencilla calculadora.
El manejo de las constantes es similar que en los demás len-
guajes, pero además, podremos usar constantes del tipo ty-
ped, que nos permitirán utilizar estructuras de datos (vecto-
res, registros, punteros, etc.) como constantes.
El clásico mensaje
Para familiarizarnos y perderle el miedo a Delphi, empezare-
mos con el típico ejemplo del mensaje. En este caso, usamos
el clásico “Hello World” u “Hola mundo“, que aparecerá cuan-
do presionemos un botón.
1) Creemos, dentro de un form vacío, sólo un botón, con el
nombre botón y el caption El clásico mensaje. El caption se-
rá el texto que aparecerá en él.
2) Ahora hacemos doble clic para dirigirnos al código del
evento clic.
3) Escribimos el siguiente código:
begin {El Begin y End estan escritos por de-
fault}
application.messagebox(‘hello World’, ‘mensaje de
prueba’,MB_OK)
end;
Una vez terminado, podremos hacer correr el programa con
<F9> y ejecutar esta “útil” aplicación. Esto debería quedar
como se ve en la Figura 2. Delphi es más estricto que VB, ya
que las funciones deben incluir todos sus parámetros; en ca-
so contrario, mostrará un error.
Nuestra propia calculadora
Ahora comenzaremos a programar una aplicación un poco
más útil y, de esta forma, podremos adentrarnos un poco más
en el lenguaje Delphi. Haremos una calculadora con las fun-
ciones básicas, para lo cual la interfase gráfica quedará como
nos muestra la Figura 3, con 16 botones y un objeto memo
(debido a que nos permite alinear a la derecha), alineándolo
con la propiedad Align.
Debemos tener en cuenta un par de cosas antes de empezar,
como que hay que mantener el primer operando en el display
hasta ingresar el otro, no perder el último operando para ha-
cer que la tecla <=> funcione consecutivamente, etc., pero
iremos viendo todo esto a medida que creemos las funciones.
Debido a que necesitaremos muchas comprobaciones (posi-
bles acciones por parte del usuario), deberemos definir algu-
nos flags o banderas que nos sirvan de guía. La Tabla 3 mues-
tra las variables que usaremos y definiremos como globales,
o sea que se declaran fuera de los procedimientos (como en
VB, pero sin la palabra Public) y debajo de la palabra reser-
vada VAR.
Como toda buena calculadora, debe inicializarse con el 0,
por lo cual en el evento formcreate de nuestra form escribi-
remos:
display.Text := ‘0’; {asignamos la cadena ‘0’ al
❙ Tabla 1: Parámetros
En esta tabla se indica la forma de declarar parámetros de
entrada, salida y entrada/salida.
Tipo de parámetro Declaración
Entrada (por valor) Procedure calc (X:integer)
Salida
Entrada/salida
(por referencia)
Procedure calc (out num:integer)
Procedure calc(var X, Y:
Integer);
u s e r s . t e c t i m e s . c o m
77
ProgramacionU#117.qxd 4/28/01 6:07 PM Page 78
E X P E R T O S
P R O G R A M A C I Ó N
display}
{inicialización de flag}
Bien, ahora debemos hacer que los números nos respondan,
así que creamos un procedimiento:
Procedure numero (display: TMemo; num:char; var
flag:boolean);
{ojo!!, hay que pasar al display por parámetro tam-
bién, otra cosa diferente a VB}
Begin
if (display.Text = ‘0’) then {primero verificamos el
0}
display.text:= num
else
begin
rificar la existencia del punto.
var
aux:string;
flagpun:boolean;
j,i:integer;
begin
aux:=display.text; {copiamos la cadena a una
variable auxiliar}
i:=length(aux); {contamos sus caracteres con la
función ‘length’}
for j:=1 to i do {recorremos la cadena}
begin
if aux[j] = ‘.’ then {verificamos el punto}
flagpun:=true
end;
if flag = true then {Este flag indica si esta-
if flagpun= false then {si no había, lo agrega-
mos en una operación}
begin
display.text:= num ;
flag:=false
end
else
display.text:= display.text + num ;
end
end;
Como muestra el código, debemos crear un flag (variable
boolean) que pasará por parámetro y nos será útil para man-
tener el número del primer operador en el display cuando ha-
ya una operación activada.
Sólo basta colocar este procedimiento en el evento Clic de
los botones de los números y el punto con los parámetros co-
rrectos, y listo:
numero (display,’1’, flagop); {ejemplo para el botón
de la tecla 1}
Para el punto (.) es diferente, ya que, si usamos el mismo
procedimiento que utilizamos para los números, nos dará la
opción de repetir más de una vez el carácter del punto
(¿2.45.6? No es un número muy bonito). Por eso desarrolla-
mos otro procedimiento para éste, que irá incluido directa-
mente en el evento Clic, como se muestra a continuación, y
donde usaremos la posibilidad de indexar un caracter para ve-
❙ Tabla 2: Tipos de datos
mos}
end;
display.text:=display.text+’.’
Cambio de tipo de datos
Aquí se nos presenta un importante problema, que será co-
mún a la mayoría de las aplicaciones que creemos en lengua-
jes visuales. Éste es el cambio de tipo de dato. Como se sabe,
un objeto memo devuelve, en su propiedad .text, una cadena
de caracteres y no un número real; por esta razón, si sumamos
“1” + “2”, el resultado será “12”, ya que concatenamos texto.
Debemos cambiar el tipo de dato a real para que los sume co-
mo números reales.
En VB existe la función Val, con la que pasamos por paráme-
tro la cadena y nos devuelve el número; pero en Delphi no te-
nemos tanta suerte, y deberemos acudir a las variables de ti-
po variant, que nos permitirán cambiar el tipo de dato. Para
esto, creamos dos funciones, Textoreal y Realtotex, que usa-
remos para este problema. Como son funciones, se trata de có-
digo transportable y reutilizable, y podremos usarlas en cual-
quier otra aplicación que creemos con sólo incluirla, o crear
una Unit con nuestras propias funciones. El código sería el si-
guiente:
function textoreal (tex:string): real;
var
aux: variant;
begin
aux:= tex; {del texto al variant}
textoreal:= aux; {del variant
Éstos son otros tipos de datos útiles que podemos utilizar en nuestras aplicacio-
nes.
Tipo de dato Descripción
Enumerado
Dato de definición de valores
Puntero
Subrango
Dato de dirección de memoria
Dato definido en un rango
ordinal de un tipo de dato.
Ejemplo
Type colores = (blue,
green, red)
Type pchar=^char
I := 0..99
I := ‘A’..’Z’
78
u s e r s . t e c t i m e s . c o m
Comentarios de: Delphi: el hijo de Pascal (0)
No hay comentarios