Documentos de Académico
Documentos de Profesional
Documentos de Cultura
U117 - Programación PDF
U117 - Programación PDF
EXPERTOS PROGRAMACIN
Figura 1. sta es la pantalla principal Figura 2. Aqu est nuestro primer Figura 3. Aqu vemos cmo quedara la
de Delphi. Como se ve, no es muy programa. En una de esas, Bill nos interfase grfica de la calculadora.
diferente de otros programas de compra los derechos para incluirlo en su Obviamente, podemos hacerla como ms
lenguaje visual, por lo cual no nos prximo Windows. nos guste.
resultar difcil familiarizarnos con l.
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
pgina oficial,
www.borland.com/downloads, donde
hay una versin trial de
30 das de duracin.
como cadena, donde podremos indexar un carcter especfico, Nuestra propia calculadora
lo que hace mucho ms flexible el trabajo sobre este tipo de Ahora comenzaremos a programar una aplicacin un poco
datos. ms til y, de esta forma, podremos adentrarnos un poco ms
Tambin encontraremos otros tipos de datos, que podremos en el lenguaje Delphi. Haremos una calculadora con las fun-
utilizar en nuestras aplicaciones y que desarrollaremos a me- ciones bsicas, para lo cual la interfase grfica quedar como
dida que avancemos en nuestra aplicacin de ejemplo (se de- nos muestra la Figura 3, con 16 botones y un objeto memo
tallan en la Tabla 2). En esta ocasin, construiremos una (debido a que nos permite alinear a la derecha), alinendolo
sencilla calculadora. con la propiedad Align.
El manejo de las constantes es similar que en los dems len- Debemos tener en cuenta un par de cosas antes de empezar,
guajes, pero adems, podremos usar constantes del tipo ty- como que hay que mantener el primer operando en el display
ped, que nos permitirn utilizar estructuras de datos (vecto- hasta ingresar el otro, no perder el ltimo operando para ha-
res, registros, punteros, etc.) como constantes. cer que la tecla <=> funcione consecutivamente, etc., pero
iremos viendo todo esto a medida que creemos las funciones.
El clsico mensaje Debido a que necesitaremos muchas comprobaciones (posi-
Para familiarizarnos y perderle el miedo a Delphi, empezare- bles acciones por parte del usuario), deberemos definir algu-
mos con el tpico ejemplo del mensaje. En este caso, usamos nos flags o banderas que nos sirvan de gua. La Tabla 3 mues-
el clsico Hello World u Hola mundo, que aparecer cuan- tra las variables que usaremos y definiremos como globales,
do presionemos un botn. o sea que se declaran fuera de los procedimientos (como en
1) Creemos, dentro de un form vaco, slo un botn, con el VB, pero sin la palabra Public) y debajo de la palabra reser-
nombre botn y el caption El clsico mensaje. El caption se- vada VAR.
r el texto que aparecer en l. Como toda buena calculadora, debe inicializarse con el 0,
2) Ahora hacemos doble clic para dirigirnos al cdigo del por lo cual en el evento formcreate de nuestra form escribi-
evento clic. remos:
3) Escribimos el siguiente cdigo: display.Text := 0; {asignamos la cadena 0 al
begin {El Begin y End estan escritos por de-
fault} Tabla 1: Parmetros
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
EXPERTOS PROGRAMACIN
end;
stos son otros tipos de datos tiles que podemos utilizar en nuestras aplicacio-
nes. function realtotex (num:real):
string;
Tipo de dato Descripcin Ejemplo var
Enumerado Dato de definicin de valores Type colores = (blue,
green, red) aux: variant;
Puntero Dato de direccin de memoria Type pchar=^char begin
Subrango Dato definido en un rango I := 0..99 aux:= num; {del real al
ordinal de un tipo de dato. I := A..Z variant}
realtotex:= aux; {del variant
78 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 79
LISTADO*: flagcons:=false;
flagop:=true
procedure opera (var operador:char; end;
operacion_actual:char ; display:TMemo; var end;
flagop,flagcons:boolean; var res:real);
begin /:
{operador: ltimo operador utilizado} begin
{operacin_actual: el nuevo operador} if flagcons =false then
begin
case operador of nume1:= textoreal(display.text);
+: res:= suma(res,nume1);
begin display.text:= realtotex (res);
if flagcons =false then flagop:=true
begin end
nume1:= textoreal(display.text); else
{cambiamos de tipo de dato} flagcons:=false;
res:= suma(res,nume1); {acumulamos el resultado} flagop:=true
display.text:= realtotex (res); {mostramos el end;
acumulador}
flagop:=true else {si no haba ningn operador presionado...}
end begin
else if flagcons =false then
begin begin
flagcons:=false; flagcons:=false;
flagop:=true operador :=operacion_actual;
end; if flagpor=true then
end; begin
res:= textoreal(display.text);
-: flagpor:=false;
begin flagop:= true
if flagcons =false then end
begin else
nume1:= textoreal(display.text); begin
res:= resta(res,nume1); case operacion_actual of
display.text:= realtotex (res); {verificamos cul es la operacin actual}
flagop:=true *:
end begin
else nume1:= textoreal(display.text);
begin res:= producto(res,nume1);
flagcons:=false; display.text:= realtotex (res);
flagop:=true flagop:=true
end; end;
end; /:
begin
*: nume1:= textoreal(display.text);
begin res:= cociente(res,nume1);
if flagcons =false then display.text:= realtotex (res);
begin flagop:=true
nume1:= textoreal(display.text); end;
res:= producto(res,nume1); +:
display.text:= realtotex (res); begin
flagop:=true nume1:= textoreal(display.text);
end res:= suma(res,nume1);
else display.text:= realtotex (res);
begin sigue en pgina 80
u s e r s . t e c t i m e s . c o m 79
ProgramacionU#117.qxd 4/28/01 6:08 PM Page 80
EXPERTOS PROGRAMACIN
viene de pgina 79 nes con los parmetros correctos, y asunto terminado. Reco-
mendamos hacer la prueba de escritorio (seguimiento de la
flagop:=true
funcin de las variables con papel y lpiz) para que sea ms
end;
comprensible, ya que explicar cada declaracin nos llevara
-:
unas cuatro o cinco revistas, porque el procedimiento contem-
begin
pla todas las posibles acciones por parte del usuario.
nume1:= textoreal(display.text);
res:= cociente(res,nume1);
Con este procedimiento resolvemos el ncleo del programa.
display.text:= realtotex (res);
Lo agregamos a cada operacin, y misin cumplida.
flagop:=true
begin
end;
opera(operador,+,display, flagop, flagcons, res);
end;
end;
end;
end;
Ahora nos falta asociar el cdigo del botn [CE], que slo
end;
inicializa los flags y resetea el display.
end;
procedure Tcalcu.resetClick(Sender: TObject);
operador:= operacion_actual; {actualizamos el
begin
operador}
operador:= ; {no hay operaciones asocia-
end;
das}
res:=0; {el resto se resetea}
display.Text := 0; {reseteamos el display}
al texto} flagpor:= true;
end; flagcons:=false;
El procedimiento general end;
Como buenos programadores, debemos encontrar la generali-
dad en los procedimientos de suma, resta, multiplicacin y Una vez terminado todo, estamos listos para compilar. Para
divisin. No es muy difcil, porque todos actan de la misma ello utilizamos [Project/Compile], y automticamente se
manera. Despus de ingresar dos operandos, devuelven un re- crear el archivo EXE de nuestra aplicacin.
sultado y listo. Lo nico que debemos tener en cuenta son las Antes de esto, podemos ponerle algn fondo o personalizar-
posibles combinaciones de teclas que el usuario puede presio- la de la manera que queramos. Ya estamos preparados para
nar. A continuacin mostramos el cdigo de este procedimien- usar nuestra propia calculadora hecha en Delphi.
to; bastar con incluirlo en cada evento Clic de las operacio-
La proyeccin Delphi
Si bien Delphi no ha sido un lenguaje muy difundido o utili-
Tabla 3: Variables del ejemplo zado bajo entorno Windows como lo fue el famoso y popular
Visual Basic, Linux lo vio con otros ojos. Su nueva versin del
stas son las variables que usaremos como globales para clsico sistema operativo, llamada Kirix, incluye gran parte de
la aplicacin. cdigo de Delphi para las tareas de administracin de proce-
sos y de memoria. Los programadores y expertos en Linux ase-
Nombre Tipo Uso guran que un buen programador debe saber programar en
Nume1 Real Operando auxiliar para los
clculos. Delphi.
Operador Char Indica de qu operacin se Entre otras cosas, Delphi se est orientando a la programa-
trata, +, -,* o /. cin de sitios web dinmicos, lo que le abre el paso para com-
EFlagcons Boolean Indica si se presion el = ms petir con los lenguajes que estn dominando esta rea, como
de una vez. PHP, Pearl o ASP.
Resultado Variant Variable utilizada para cambios
de tipo de datos. Por lo visto, ahora es muy necesario comenzar a entender
ERes Real Acumulador de resultados. Delphi, ya que parece ser un lenguaje prometedor que, en
Flagpor Boolean Indica que se ha presionado el
igual (=) y que se espera el primer
operando.
En el CD
EFlagpunto Boolean Indica que se ha ingresado un
. para no repetirlo.
P ara que no tengas que copiar todo el cdigo de los
ejemplos, y para no tener problemas de errores,
Flagop Boolean Indica si se ingres el primer ste fue incluido en la carpeta PROGRAMACIN del
operando para mantenerlo en
el display hasta que se ingrese CD que acompaa la revista.
el otro. Adems, tambin encontrars la calculadora fun-
cionando!
80 u s e r s . t e c t i m e s . c o m