Escolar Documentos
Profissional Documentos
Cultura Documentos
En general un problema de
Proceso u operacin
AREA = BASE * ALTURA 2
Variable(s) salida
AREA
PARA CUALQUIER
Observar para el caso de constantes fijas o conocidas (PI) no se debe dar como dato de
entrada su valor, en cambio colocar directamente su valor dentro de la formula, en la
parte de operaciones del problema.
Pero recordar tambin que existirn problemas sencillos donde:
Una formula grande o muy compleja puede ser ms segura y fcil de resolver, si
es descompuesta y resuelta en partes, juntando al final los parciales para obtener
el resultado final.
ingeniero de software) del mismo, como son las variables donde se almacenan datos,
funciones( pequeos mdulos con cdigo), etiquetas, clases, objetos, etc.
En BORLAND DELPHI un identificador es una palabra compuesta de letras y/o
nmeros de hasta 32 caracteres significativos, empezando siempre con una letra.
Una variable se define como un identificador que se utiliza para almacenar todos los
datos generados durante la ejecucin de un programa.
Existen ciertas reglas en cuanto a variables:
RANGO
Caracter ASCII
0 a 255
-32,768 a 32,767
1E-38 a 1E+38
TRUE o FALSE
-128 a 127
0 a 65535
-2147483648 a 214748364
Cadena caracteres
Para el caso de strings se prodra usar cualquiera de los dos siguientes formatos:
Var
Nombre:string;
Carrera:string[30];
Para el primer caso delphi pascal reserva 255 bytes de memoria, para el caso de carrera
pscal solo reservara 30 bytes, es obvio cual de los dos casos es mas eficiente.
TEMA 5: OPERADORES ARITMETICOS BORLAND DELPHI
Un operador es un smbolo especial que indica al compilador que debe efectuar una
operacin matemtica o lgica.
DELPHI reconoce los siguientes operadores aritmticos:
Operador
+
*
/
Div
Mod
Operacin
SUMA
RESTA
MULTIPLICACION
DIVISION
DIVISION ENTERA
MODULO O RESIDUO
El problema no es el tipo real, sino que por definicin de la divisin entre enteros pascal
trunca la parte residual.
El operador (%) devuelve el residuo entero de una divisin entre enteros, ejemplo;
// rea de declaracin
integer alfa;
// rea de operaciones
alfa := 23 mod 4;
// rea de despliegue
desplegar alfa; -> El resultado en pantalla es 3
Otro ejemplo;
alfa := 108 mod 10;
desplegar alfa; -> El resultado en pantalla es 8
= m/n log a
Las dos funciones que se usan para resolver este problema son:
Ln(x) Nos regresa el logaritmo natural del numero x.
EXP(x) nos regresa eX es decir el antilogaritmo de un numero.
Otra vez si se ocupa resolver la multiplicacion de 5 * 20, la regla de logaritmos nos dice
que el resultado es = log(5) + log(20) aunque en pascal se usa Ln(5) + Ln(20) pro en
estos casos lo que se tiene de resultado no es 100 sino el logaritmo de 100, porque
2+ 3* 4 := 20(incorrecto)
:= 14 (correcto)
Recordar siempre, que antes de plantear una formula en un programa se deber evaluar
contra el siguiente:
Orden de operaciones:
1.- Parntesis
2.- Potencias y races
3.- Multiplicaciones y divisiones
4.- Sumas y restas
5.- Dos o ms de la misma jerarqua u orden, entonces resolver de izquierda a derecha
aqu los parntesis estn de mas, porque por orden de operaciones, multiplicacin y
divisin tienen la misma jerarqua y entonces se resuelven de izquierda a derecha, en
otras palabras ni que falten parntesis ni que sobren parntesis.
7.- DELPHI ENTRADAS / SALIDAS EN PROGRAMACION VISUAL
nomobjetopropiedad := nvovalor;
ej.; Form2Color := clRed;
Eventos, son todos aquellos sucesos de carcter externo que afectan o llaman la atencin
del objeto, para estos caso la forma o ventana:
1. Debe tener capacidad de detectar el evento
2. Aun mas importante debe tener capacidad de reaccionar y emitir una respuesta,
mensaje o conducta apropiada a el evento detectado.
Evento es por ejemplo que otro objeto llamado humano, pulse el objeto tecla ESC, o
haga click derecho con el objeto ratn en alguna parte de la ventana , etc. , es en estos
casos, cuando la ventana detecta un evento de estos, la propia forma deber responder
de manera apropiada.
Esta respuesta no es automtica, sino son la serie de instrucciones del lenguaje (o
programa) que los ingenieros de software disean(o programan), en otras palabras son
los eventos quienes contendrn los programas.
Es tambien el Inspector de Objetos, quien contiene todos los posibles eventos asociados
a la forma.
Para los primeros programas en Borland Delphi solo se usaran propiedades sencillas
como color, font, etc. de Form1, y no se usan, de momento los eventos que puede
detectar Form1.
9.- BORLAND DELPHI PROGRAMAS, FORMAS Y COMPONENTES
Es decir toda la interfase que se quiera manejar con el usuario del programa, no consiste
mas que de una coleccin de componentes agrupados en una forma o ventana.
La coleccin de componentes que pone a nuestra disposicin DELPHI estn agrupados
en diversos folder o pestaas o paginas en la barra de componentes, las principales
categorias para este curso contienen los siguientes componentes:
Standard.- Frames MainMenu PopupMenu Label Edit Memo Button CheckBox
RadioButton ListBox ComboBox ScrollBar GroupBox RadioGroup Panel ActionList
Para incorporar un componente a una forma solo basta seleccionarlo con un click
derecho en su icono y luego colocar el cursor dentro de la forma en el lugar donde se
quiere que aparezca y volver a hacer un click derecho.
Tambin los componentes son objetos de borland delphi y como tales tambin tienen
asociados propiedades y eventos, tales como los tiene la forma principal, solo que
existen pequeas variaciones en cuanto a sus propiedades y eventos propios con
respecto a Form1.
Recordar adems, que es el Inspector de Objetos en primera instancia quien permite
asociar o modificar propiedades especificas tanto a una forma como a un componente.
Este componente se utiliza para desplegar textos o mensajes estticos dentro de las
formas, textos tales como encabezados, solicitud al usuario del programa para que
proporcione algn dato o informacin(edad, dame sueldo, etc.), en cierta forma hace las
funciones de printf, cout, writeln, print, display, etc., pero solo cuando se consideran en
su parte de mensajes.
Tambin es un objeto en Borland Delphi y por tanto tiene asociados sus propias
propiedades y eventos, al mismo tiempo como se est usando dentro del objeto form1,
muchas propiedades que se definan para el objeto Form1, el objeto Label1 las va a
heredar.
Si bien es cierto que el objeto se llama Label, pero cuando se ponen dentro de una forma
Borland Delphi los va numerando automticamente, si se ponen tres Labels en Form1,
ellos se llaman o simbolizan o se procesan o programan con Label1, Label2, Label3.
Es la propiedad Caption, la que lleva el contenido del mensaje que se quiere desplegar
en la pantalla, solo click derecho a un lado de la propiedad Caption en el Inspector de
Objetos, teniendo seleccionada la caja Label1 en la forma y escribir el texto indicado.
11.- COMPONENTE BUTTON(Standard)
Este botn tambin puede activar su evento OnClick, cuando el usuario presione la tecla
<ENTER>, solo poner la propiedad Default en true, en este caso el botn de ordenes, se
le conoce como botn de default.
Igualmente puede activar su evento OnClick cuando el usuario, presione la tecla
<ESC>, solo poner la propiedad Cancel en true, a este caso se le conoce como
CANCEL BUTTON.
PRACTICA
Construir un primer programa que consiste en un forma que contenga los cinco datos
mas importantes de un automvil, y uno de esos datos solo deber aparecer cuando el
usuario haga click en el botn de ejecucin o de orden o de OK.
Para este programa se ocupa, una forma, dos componentes labels para encabezados
apropiados al problema, 10 componentes labels para textos y datos, un componente
Button.
Para el ultimo componente Label su propiedad Caption se dejara en blanco o vaca para
que sea el usuario del programa quien lo cargue al apretar el botn de ordenes o botn
de OK.
Recordar que Borland Delphi va numerando automticamente todos los componentes en
el programa en forma consecutiva, es decir al finalizar el diseo del programa se
tendrn, los componentes form1, label1,label2,label3,..button1.
El procedimiento completo para crear y ejecutar el programa es:
1.- Cargar Delphi
2.- Al cargarlo ya estar en la pantalla la primera forma (Form1).
3.- Antes de poner el primer componente usar la opcin, File Save Project As, aparece la
siguiente ventana:
Para aadirle el cdigo(en este ejemplo que cargue el Caption de Label12 al tiempo de
ejecucin del programa y por decisin del propio usuario) existen dos maneras:
En el Inspector de Objetos, hacer click en la pestaa o folder llamado event y ahora en
lugar de propiedades el Inspector de Objetos, muestra todos los eventos que el
componente puede detectar(observar y anotarlos), ahora click en la cajita que esta a un
lado del evento llamado OnClick y con este paso aparece el siguiente minieditor de
programas de Borland Delphi:
Observar que ya trae listo el evento Button1Onclick() para programarse y es dentro del
BEGIN-END donde se construye el programa.
Solo escribir dentro de las llaves la instruccin Label8.Caption := FORD;
NomComponente.NomPropiedad := NvoValor;
Observar que Caption se carga como si fuese una variable de tipo string,
dentro de un programa, es decir entre apostrofes ( ' ).
Observar que atrs del editor esta Form1, si se selecciona con un click, este
procedimiento lo regresa a la forma para seguir arreglando o colocando nuevos
elementos.
Form/Unit
izquierda.
La otra manera y mas sencilla de cargar el editor, es haciendo un dobleclick dentro del
componente.
8.- Ahora ya esta lista la forma o programa para ejecutarse, tambin existen dos
maneras:
1. Usar la opcin Run que esta arriba en la barra de mens.
2. Usar icono run
en barra de herramientas.
Nota.- Tambin se puede usar tambin la primera letra dentro del botn de comando o
de ordenes (OK) para activar las instrucciones o acciones del botn, es decir se puede
usar click en botn o solo pulsar la letra O, para que se ejecute este ultimo
procedimiento , solo poner un smbolo & en el caption del botn antes de la letra O.
El programa ya en ejecucin debe ser similar(pero mejor diseado) al siguiente ejemplo:
Edit2.Text := 5;
Label3.Caption := 'PATO';
Edit4.Text := 3 * 6.2 ;
%5:5d > despliega cinco digitos enteros y cinco decimales, si el dato tiene menos
partes enteras se rellenara con ceros 0000.
%u > similar a %d excepto que no muestra el signo (+/-) del dato.
%e > despliega en notacion cientifica o exponencial.
%f > fijo dos decimales por default.
%g > el compilador decide si lo manda a decimal o exponencial.
%n > similar a %f solo que los miles se separan con comas.
%m > formato monetario.
%x > lo convierte a hexadecimal.
J) StrToCurr(FUNCION) > CONVIERTE UNA STRING A FORMATO
MONETARIO.
H) StrToFloat (FUNCION) > CONVIERTE STRING A FLOTANTE.
I) TextToFloat(FUNCION) CONVIERTE TEXT A FLOTANTE.
ing-point value from a null-terminated string.
Cuando un usuario lo carga con un dato recordar que el dato almacenado queda de tipo
texto, no importa lo que haya escrito el usuario.
Para resolver el problema de usar datos numricos dentro del Text de un componente
Edit, en operaciones matemticas, solo USAR LAS FUNCIONES APROPIADAS,
como se muestra en el siguiente ejemplo.
temp := StrToFloat(Edit1.Text)* 5;
Edit1.Text := FloatToStrF(temp,ffGeneral,5,2); NOTA: ffCurrency, ffExponent, ffFixed,
ffGeneral, ffNumber
Recordar que el usuario, usara un componente Edit para almacenar los datos de entrada
del problema, muchas veces estos datos son de tipo numrico, por ejemplo en un
componente Edit se almacena la cantidad de pesos, el precio de un articulo, la edad de
una persona, etc.
Solo recordar siempre usar el componente Edit, directamente como una variable
cualquiera(con su mtodo o funcin correspondiente ) y construir la operacin o
formula con los propios componente o cajas edit.
corrida:
notas:
Como se observa este componente Edit permite capturar datos por parte del usuario del
programa.
Es mas sencillo considerar, estos componentes como variables normales y usarlos
directamente.
Solo en problemas algebraicos usar propiedad Text con las funciones apropiadas.
Respetar la ortografa en el ejemplo, sobre todo en las instrucciones (las que terminan
con ;)
Si son muchas operaciones en un problema, el procedimiento es similar, solo resolverlo
por partes ya que una formula que contenga cuatro o cinco Edit, se convierte en un
rengln de cdigo gigante.
sin embargo es mas sencillo usar el mtodo que se usa en el programa dado de ejemplo
para la multiplicacin, es decir considerar los componentes Edit como variables
normales, y usar:
Edit3.Text:=Format('%0.2f',[temp]);
Edit8Text.ToDouble();
Para el caso de resultados decimales , la salida incluye todo el conjunto de decimales
asociados a un tipo double(muchos ceros), para resolver este problema se pueden usar
directamente algunos mtodos asociados a la clase AnsiString , por ejemplo uno de esos
mtodos es;
Format('string de formato', var real);
La string de formato contiene una serie de simbolos literales que se utilizan para darle el
formato de salida deseado, esto simbolos o constantes literales son;
Const. Lit. Significado
0(cero) Rellena con 0(ceros) todas las posiciones indicadas, ejemplo 0000.00 para el
numer 23.4 la string de salida seria 0023.40
# Constante muy usada para formato de valores numricos, esta constante solo
despliega el valor numrico normal.
. Se utiliza para separar la parte entera de la parte decimal.
,(coma) Se utiliza para separar el valor numrico en unidades de millar.
E+, E-, e+, e- Se utilizan para convertir a notacin cientfica exponencial el valor de
salida.
b)Programa
El cdigo o miniprograma ( es miniprograma porque no se tiene que programar mucho
de la pantalla), solo disearla, y dentro del evento Click del componente Button1, queda
as;
procedure TForm1.Button1Click(Sender: TObject);
var
temp:Real;
begin
temp := StrToFloat(Edit1.Text)* StrToFloat(Edit2.Text)/ 2;
Edit3.Text:=Format('%0.2f',[temp]);
end;
Recordar que cuando se capturen los datos de base y altura, no dejar espacios en blanco
antes del primer numero o se darn problemas y errores de conversin a valores
numricos.
Para resolver mejor este problema de formatos mas adecuados para captura de datos, se
usaran nuevos componentes que se analizan mas adelante.
TAREAS PROGRAMACION BORLAND DELPHI
1.- CONVERTIR A PROGRAMAS 7 DE LOS PROBLEMAS VISTOS EN EL
MODELO DE SOLUCION.
13.- COMPONENTE MaskEdit (Adicional)
Este componente es muy similar en su uso al componente Edit, excepto que proporciona
una mascara especializada para el formato de datos, es decir se puede usar para que el
usuario proporcione datos con formatos bien definidos, como son valores numricos
que incluyan puntos y comas por ejemplo 3,345.87, o que incluyan smbolos como el de
$, o para el caso de fechas que lleven su propio separador como por ejemplo 02/28/97.
Tambin se puede usar, para asegurarse que el dato proporcionado por el usuario, solo
incluya nmeros, o solo contenga letras, etc.
Para darle formato al dato que el usuario debe proporcionar solo hacer dobleclick a un
lado de la propiedad EditMask en el Inspector de Objetos y esto nos da el siguiente
minieditor de datos:
Recordar que este formato es para capturas, no para despliegues, puesto que para
este caso (despliegue) se usa FormatFloat().
carcter significado
Cualquier otro carcter que no aparezca en la tabla anterior, puede aparecer en una
mascara, pero solo se tomara en cuenta como una literal cualesquiera, es decir son
insertados automticamente y el cursor los brinca.
El segundo campo o parte de una mascara es un carcter simple que indica que carcter
literal debe ser incluido como parte del texto del componente MaskEdit, por ejemplo
(000)_000-0000;0;*,
Un 0 en el segundo campo indica que solo deben capturarse los diez dgitos marcados
con O, en lugar de los 14 que tiene la mascara.
El tercer campo de la mascara, es el carcter que se quiera que aparezca en lugar de
espacios en blancos.
Nota: para procesarlo usar solo Text DE MANERA NORMAL COMO SE
RELIZO EN EL TEMA ANTERIOR DE EDIT.
TAREAS PROGRAMACION BORLAND DELPHI
1.- OTROS 7 DE LOS PROBLEMAS QUE VIENEN EL EL TEMA DE MODELO DE
SOLUCION.
14.- COMPONENTE ComboBox (Standard) BORLAND DELPHI
Existen muchas ocasiones en donde el usuario del programa tiene que proporcionar
datos que provienen de un conjunto finito y muy pequeo de posibles respuestas, esto
significa que cada vez que se ejecute el programa, el usuario estar proporcionando las
mismas respuestas.
Ejemplo de esta clase de datos, son por ejemplos Municipio en BC, las posibles
respuestas solo son (Tecate, Tijuana, Mexicali, Ensenada, Rosarito), otro ejemplo es
Sexo (Hombre, Mujer), etc.
Para situaciones como esta, existen componentes que permiten programar por
adelantado las posibles respuestas, y el usuario solo debe seleccionar la respuesta
apropiada , en lugar de tener que escribirla.
Este componente ComboBox nos permite definir en primera instancia un conjunto de
datos o valores respuestas asociados a una caja de edicin cualesquiera, as ahora el
usuario tendr la oportunidad de seleccionar un dato del conjunto de datos o respuestas
ya predefinido.
Este componente ComboBox tiene dos partes, una parte de encabezado, para poner el
nombre del grupo de respuestas( por ejemplo municipios, sexo, etc.), que se carga
usando la propiedad Text del componente.
La segunda parte es la lista de opciones o respuestas que se debe cargar al tiempo de
diseo de la ventana, en el momento de poner el componente ComboBox1, solo hacer
dobleclick a un lado de la propiedad Items en el Inspector de objetos y sale el siguiente
editor de strings:
Al momento de ejecucin del programa, toda la lista de respuestas, estarn a la vista del
usuario, para que este ultimo la seleccione.
Recordar que el usuario al momento de ejecucin del programa, solo vera el
encabezado, para seleccionar su respuesta deber apretar la flechita que esta a un lado
del encabezado.
Para procesar este componente:
Usar su popiedad Text de manera normal, es decir si la respuesta se ocupa en string,
Solo usar ComboBox1.Text, o si la respuesta se quiere numerica solo convertir Text a
flotante de manera normal ( ver el ejemplo del tema EDIT ).
TAREAS PROGRAMACION BORLAND DELPHI
Lo primero que hay que entender para poder resolver este problema es que en borland
delphi , cada forma o ventana tiene asociado ciertos recursos, ademas de los
componentes que contiene, tambien una serie de recursos especiales, en general, la
forma, los recursos y los objetos hijos o componentes, se encuentran relacionados todos
ellos, en un archivo especial, llamado Unit1.pas.
Es decir si se crea una segunda forma o ventana,, dicha form2, junto con sus recursos,
componentes, etc., se encontrara contenida en el archivo llamado Unit2.pas y as
sucesivamente.
Pero recordar y tambin tomar en cuenta, que los componentes de esta segunda
forma, tambin se simbolizaran y procesaran normalmente, es decir ellos tambin
sern (Edit1, Label5, etc.).
Para crear una segunda forma (form2), solo usar el icono de new Form
que se
encuentra en la barra de herramientas, recordar adems que los otros iconos de dicha
barra sirven para estarse intercambiando entre formas y Unit(cdigo fuente).
La segunda forma se construye normalmente, pero queda el problema de donde queda el
botn de ordenes, le respuesta es, se pone en la primera forma o ventana principal del
programa.
El proceso en este botn es similar a todos los programas anteriores, es decir primero se
capturan los datos ( pantalla o ventana de captura)luego se resuelve las operaciones y
luego traspasar los datos a los componentes de la segunda forma o ventana.
Para poder realizar este procesos, solo usar ahora un nuevo formato de trabajo con
todos los componentes usados, para que ahora incluyan la forma que lo contiene,
es decir se usa ahora ;
NOMFORMA.NOMCOMPONENTE.NOMPROPIEDAD
Ejemplos;
a) Form5.Edit3.Text := Form1.Edit2.Text;
// se esta pasando el texto de edit2 de primera
// ventana al texto de edit3 de la quinta ventana
b) REAL alfa := StrToFloat(Form2.Edit4.Text);
// se esta poniendo en una variable real el contenido
// de la caja cuatro de la tercera ventana
como se observa, procesar los elementos de dos ventanas, es sencillo pero adems
existen ciertas condiciones que debern cuidarse para que estos procesos
funcionen, estas condiciones son:
Crear, armar y disear todas las ventanas primero, junto con sus componentes y
miniprogramas.
Cualquier ventana que mencione o contenga una referencia dentro de su cdigo a otra
ventana, deber incluir en su Unit respectiva, la unidad (Unit) de la otra forma o
ventana, esto es muy similar a lo que se hace en PASCAL para el manejo de unidades.
Para incluir la unidad(Unit) de la otra forma o ventana, solo tener seleccionada o al
frente la ventana que llama, y usar la orden File, USE Unit, que se encuentra en arriba
en la barra de men, junto con el Run, Compile, etc., al dar esta orden(File USE Unit)
sale una lista con todas las unidades(Unit) que ya se disearon, seleccionar la apropiada
y ya se incluir automticamente en la forma o ventana actual.
Si una ventana o forma referencia dos o mas formas diferentes, entonces usar la orden
File, USE Unit, tantas veces como sea necesario.
Este procedimiento permite construir programas con dos o mas ventanas, pero el
problema es que todas ellas estarn a la vista del usuario, para resolver este problema, el
procedimiento mas sencillo es poner en False la propiedad visible de la forma o ventana
que se quiera tener oculta y poner cualquiera de las siguientes instrucciones en el cdigo
del programa para que aparezcan o desaparezcan a voluntad;
- Form2.Visible := true;
- Form2.Show(); // similar a la anterior(pero mas corta)
3) Form2.ShowModal(); // no permite accesar la primera ventana, hasta
que se cierra(X) la segunda ventana.
Este componente visual permite realizar en forma fcil toda una serie de tareas comunes
en Windows.
En principio es parecido al componente Button, pero en el ejemplo de arriba observar
que incluye un grfico o bitmap, que lo hace mas agradable y visible al usuario.
Es en su propiedad KIND, en el inspector de objetos, donde se pueden definir
cualquiera de sus diez opciones, como lo muestra la siguiente pantalla.
a)
si sueldo > 3000
desplegar rico
si no
desplegar pobre
fin-si
b)
si sexo = 'm'
imprime mujer
si no
imprime hombre
fin-si
La condicin
<>
IN
Significado
Igual que
Mayor que
Menor que
Mayor o igual que
Menor o igual que
No es igual o es diferente que
Pertenece A
Corrida:
SIGNIFICADO
Y LOGICO
O LOGICO
NO NEGACIOn
Para que el computador evale como CIERTA una condicin compuesta que contiene el
operador lgico and, las dos condiciones simples deben ser ciertas.
Para que el computador evale como CIERTA una condicin compuesta que contiene el
operador lgico or, basta con que una de las condiciones simples sea cierta.
La cantidad total de casos posibles cuando se unen dos o mas condiciones simples esta
dada por la relacin donde n = cantidad de condiciones, la primera mitad de ellos
ciertos y la segunda mitad falsos.
Ejemplo, si formamos una condiciona compuesta con dos condiciones simples y el
operador lgico y, la cantidad total de casos posibles serian
, y se puede
construir la siguiente tabla de verdad.
Tabla de verdad con and
1cs 2cs Eval
CCC
CFF
FCF
FFF
La evaluacin final se obtiene usando la regla anteriormente descrita para una condicin
compuesta, que contiene el operador and.
Esta tabla significa lo siguiente;
1.- Cualquiera que san la cantidad de datos procesados siempre caer en uno de estos
cuatro posibles casos.
La tabla de verdad para una condicin compuesta con OR es la siguiente;
1cs 2cs Eval
CCC
CFC
FCC
FFF
Como se observa, una condicin compuesta con OR, es menos restrictiva, o el 75%
de los casos terminaran ejecutando el grupo CIERTO de instrucciones de la instruccin
condicional.
Construir una tabla de verdad para una condicin compuesta de tres o mas condiciones
simples, es tambin tarea sencilla, solo recordar que;
1.- La cantidad posible de casos es
y la otra mitad empiezan c con falso.
2.- Para evaluar esta condicin triple, primero se evalan las dos primeras incluyendo su
operador, bajo las reglas ya descritas y luego se evala, el resultado parcial contra la
ultima condicin, y ultimo operador, para obtener la evaluacin final.
CCcCc
CCcFc
CFfCc
CFfFf
FCfCc
FCfFf
FFfCc
FFfFf
Corrida:
4. fin de men
seleccionar opcin [ ] Este es el edit del switch().
Para resolver este programa, primero disear las cuatro formas o ventanas que se
ocupan, y en la primera forma que contiene el men para el usuario, programar el
evento onclick del Button de ordenes con la instruccin case, los case solo contienen
cdigo para llamar o poner a la vista del usuario la ventana o forma respectiva.
Y adems recordar poner en cada ventana de solucin de un problema un botn de
orden, con cdigo de regreso a la ventana de men, solo escribir en el Caption de este
botn la palabra [men] y en su evento OnClick ocultar la ventana de problema y poner
visible la ventana o forma del men o mejor aun usar los bitbuttons.
2.- Construir un programa que capture un deporte y despliegue la imagen de dos
implementos deportivos apropiados, usar los componentes de imagen de borland delphi.
3.- Evaluar cualquier funcin vista para cuando x =3,-4, 5
7.- DELPHI COMPONENTES VISUALES DE SELECCION Y DECISIN
Las instrucciones if y case, nos permiten tomar decisiones o realizar seleccionase dentro
del cdigo de un programa.
BORLAND DELPHI proporciona una serie de componentes visuales que permiten al
usuario, no al programador, tomar decisiones en pantalla, el programador solo se
encarga de implantar cdigo adecuado a la decisin tomada por el usuario.
8.- COMPONENTE CheckBox (Standard) DELPHI
En los ejemplos, los componentes checkbox, son las cajas donde el usuario toma un
decisin (ej. 3) o realiza una seleccin (ej. 1,2)
Existen dos maneras de programar este componente:
- Cuando el usuario selecciona un checkbox la propiedad Checked refleja esta decisin
quedando cargada con las constantes true o false, en estos casos solo validar con un if
por cada CheckBox dentro de nuestro botn de ordenes, el estado de dicha propiedad.
Programa ejemplo:
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked Then
Begin Label1.Caption := 'CALIENTE' end
else begin Label1.Caption := ' '; end;
if CheckBox2.Checked Then
Begin Label2.Caption := 'FRIO' end
else begin Label2.Caption := ' '; end;
if CheckBox3.Checked Then
Begin Label3.Caption := 'TEMPLADO' end
else begin Label3.Caption := ' '; end;
end;
corrida:
Notas:
1.- Observar que por cada checkbox en la forma se ocuapara un if.
2.- La propiedad Checked estara cargada con TRUE o FALSE al ejecutarse el programa
y por tanto la instruccion IF ejecutara la parte cierta o la parte falsa de instrucciones
apropiada, es decir se uso CHECKBOX.CHECKED directamente en la instruccion
porque seria equivalente a CHECKBOX.CHECKED = TRUE.
b) El segundo mtodo para programar el componente, involucra el evento OnClick de
este componente CheckBox, este evento OnClick es activado automticamente en
cuanto el usuario realiza o marca o toma su seleccin, es claro que si no se programa
este evento el usuario no observara ningn proceso, sino que tendr que indicar que ya
hizo su decisin, apretando el botn de OK.
Pero si se programa el evento OnClick de este componente con el cdigo adecuado, ni
se tendr que agregar un botn OK, ni se ocupara usar un if(Checked), porque el usuario
ya indico cual es su decisin o seleccin.
Recordar que para programar este evento OnClick, solo hacer un dobleclick, dentro del
componente.
Este mtodo es el mejor porque evita cdigo de mas y cada componente solo tiene
asociado el cdigo que ocupa.
TAREAS PROGRAMACION BORLAND DELPHI
1.- Evaluar la funcin
para x 2,-5, 8 (usar un CheckBox por cada
valor de x, y programar cada evento OnClick de cada CheckBox con la operacin
correspondiente y el despliegue del resultado).
2.- Construir un panel con los datos de un automvil, un segundo panel muestra un plan
de financiamiento a dos aos y un tercer panel muestra un plan de financiamiento a tres
aos. ( son dos checkbox en el primer panel y no hay botn de ok).
3.- Construir el programa de men, que se dejo en el tema de instruccin case ( aqu no
se ocupa case ni pedir la opcin, ni botn de ok, solo un CheckBox programado a un
lado de cada opcin del men).
Tambin se pueden desplegar los botones en una o mas columnas, usando la propiedad
Columns en el Inspector de Objetos, para indicarle cuantas columnas de RadioButton se
quieren manejar.
TAREAS BORLAND DELPHI
1.- CAPTURAR LOS CINCO DATOS MAS IMPORTANTES DE UN CLIENTE,
USANDO RadioButton PARA LAS RESPUESTAS, UN SEGUNDO PANEL ABAJO
EN LA FORMA DESPLIEGA EN COMPONENTES NORMALES EDIT O LABEL
LAS SELECCIONES DEL USUARIO
2.- CONSTRUIR UN CUESTIONARIO DE 6 PREGUNTAS SOBRE LOS HABITOS
DE ESTUDIO DE UN ESTUDIANTE.
3.- CONSTRUIR UN CUESTIONARIO DE 5 PREGUNTAS CON LAS
PREFERENCIAS POLITICAS DE UNA PERSONA, UN PANEL ABAJO
DESPLIEGA UN CONCENTRADO CON TOTALES Y PORCENTAJES
ACUMULADOS POR CADA PREGUNTA.
ES DECIR UN USUARIO RESPONDE EL CUESTIONARIO APRIETA EL BOTON
DE OK, EL PANEL DE ABAJO SE ACTUALIZA PARA MOSTRAR TOTALES Y
PORCIENTOS DE CADA PREGUNTA, Y SE LIMPIAN LAS RESPUESTAS, UN
SEGUNDO USUARIO RESPONDE EL CUESTIONARIO. Y ASI
SUCESIVAMENTE.
CONTADORES ;
ACUMULADORES ;
Con este componente MainMenu se forman las barras de men normales en cualquier
programa de Windows (la barra que contiene File, Edit, etc.) junto con sus opciones
correspondientes.
Cuando se pone este componente en una forma, se deber entender que form1 ahora
mostrara o desplegara una barra de men, tal como si fuese una ventana normal de
Windows.
Para construir un programa de seleccin de men;
1.- Poner un componente MainMenu en una parte de la forma donde no estorbe (esto es
porque este componente queda flotando dentro de Form1 y solo activa o se convierte en
barra de men al momento de ejecucin del programa).
2.- Para cargarle las opciones, no del cdigo que ejecutara cada opcin, solo dobleclick
dentro de este componente para que aparezca el siguiente diseador de mens.
1.- No es Form1, es una forma especial que se parece mucho, pero solo se activa cuando
se hace un dobleclick en un componente MainMenu.
2.- La barra superior es el men, cada opcin del men ( Moneda, Temperatura,
Distancias, etc.) tienen sus propias subopciones o submenus.
3.- Para escribir las opciones( Moneda, Temperatura, etc.) primero hacer un click en la
parte correspondiente (en el lugar que ocupan o donde se desplegaran) y escribir en la
propiedad Caption del Inspector de Objetos la palabra correspondiente.
4.- Para escribir las subopciones, primero hacer click en la opcin correspondiente ( por
ejemplo en la parte donde esta la palabra Distancias) y ya aparece abajo de ella la
primera subopcion marcada y seleccionada (es un cuadrito que se pone abajo de
Distancias) y escribir en el Caption Del Inspector de Objetos la palabra adecuada a la
subopcion correspondiente (ejemplo Millas-Kms), al escribir y usar tecla <ENTER> en
el caption ya aparece el cuadrito de la segunda subopcion.
5.- Para marcar una letra de una opcin o subopcion como HotKey ( lo siento no se
pudo traducir), solo poner el signo & antes de la letra correspondiente.
6.- Con los pasos 3,4,5 ya queda construido el men, pero ahora falta cargarles el
cdigo o programa a ejecutar por y a cada opcin o subopcion del men, recordar que
estos eventos tambin se activan al hacer un click el usuario en cada opcin o a
seleccionar la primera letra(si se uso el &), para cargar cdigo entonces.
7.- Solo dobleclick en la opcin o subopcion correspondiente y ya aparece el minieditor
de programas, listo con el evento OnClick de la opcin o subopcion correspondiente.
8.- El cdigo a escribir en la mayor parte de los casos, solo consiste en ocultar la
ventana principal y llamar la ventana que contendr el programa correspondiente a la
opcin deseada.
9.- Para terminar y regresar a la forma principal solo click en la X del diseador de
mens.
TAREAS PROGRAMACION BORLAND DELPHI
1.- EL DE LA MUESTRA CON DOS CONVERSIONES MONETARIAS, DOS
OPCIONES DE TEMPERATURAS Y DOS DE DISTANCIAS.
Recordar que este componente PopupMenu se tiene que pegar a otro componente, por
ejemplo un Label o un Edit, etc.
Para crear un PopupMenu, solo seleccionar el componente PopupMenu en la barra de
componentes y ponerlo en una parte de la forma donde no estorbe (tambin queda
flotando).
Para cargarlo de opciones solo dobleclick en dicho componente e igual que en
componente MainMenu, sale el minieditor, click en la parte donde va la opcin escrita y
escribir la palabra en la propiedad Caption del Inspector de Objetos.
Para cargarle el cdigo a cada opcin , solo dobleclick en la opcin correspondiente.
Para salirse del minieditor, solo click en la [X] de arriba.
Por ultimo y muy importante, recuerde que se tiene que pegar a un componente
cualesquiera, para esto solo seleccionar el componente y click en la propiedad popup del
componente, sale la lista con todos los componentes PopupMenu que ya se hayan
construidos.
TAREAS PROGRAMACION BORLAND DELPHI
1.- CONSTRUIR UN MENU CON LAS SIGUIENTES OPCIONES:
[AUTOS] FINANCIAMIENTO A 2,3,4 aos
[LAVADORAS] FINANCIAMIENTO A 2,3 aos
13.- CICLO FOR DELPHI
Instrucciones para ciclos, resuelven el problema de repetir todo el programa, o cierta
parte del programa mas de una vez.
Este ciclo es uno de los mas usados para repetir una secuencia de instrucciones, sobre
todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una
instruccin simple o compuesta.
Su formato general es:
for VARCONTROL := ValorInicial to ValorFinal do
begin instrucciones; end;
ejemplo:
FOR x :=1 TO 10 DO
BEGIN Label4.Caption := 'pato'; END;
Casos Particulares;
1.- El ciclo comienza en uno y se incrementa de uno en uno, este es el caso mas general.
2.- Pero el valor inicial puede se diferente de uno, ejemplo;
for x := 5 to 15 DO begin etc
3.- Incluso el valor inicial puede ser negativo, ejemplo;
for x := -3 to 8 do etc
4.- Los incrementos tambin pueden ser diferentes al de uno en uno, solo alterar el
contador de ciclos dentro del for pero tener cuidado que el ultmo cambio no se salga del
limite del ciclo y usar un if para validar el limite de contador;
for x := 1 to 20 do begin inst(es) x := x + 3 if x 20 then x x:=19 etc..
5.- Un ejemplo para usarlo en los problemas sugeridos mas adelante;
ejemplo;
desplegar los nmeros enteros, comprendidos entre el 10 y el 20.
Ocupamos ahora un componente que pueda almacenar y desplegar un conjunto de los
10 resultados, el nico componente visto hasta ahora con esta capacidad es el
componente ComboBox, sin embargo existe otro componente llamado
ListBox(Standard), muy similar a ComboBox, excepto que no tiene encabezado y todos
sus elementos los mantiene a la vista del usuario, no ocultos como el ComboBox, dicho
componente ListBox se analiza a fondo en la siguiente unidad, pero es el que de
Programa
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
For x:= 10 to 20 do
begin ListBox1.Items.Add(IntToStr(x));
end;
end;
begin
x:=1;
while (x<=10) do
begin
ListBox1.Items.Add(IntToStr(x)+' pato');
x:=x+1;
end;
end;
corrida:
While puede llevar dos condiciones, en este caso inicializar 2 variables de condicin y
cuidar que existan 2 de rompimiento de ciclo.
El grupo cierto de instrucciones puede ser una sola instruccin o todo un grupo de
instrucciones.
La condicin puede ser simple o compuesta.
A este ciclo tambin se le conoce tambin como ciclo de condicin de entrada prueba
por arriba, porque este ciclo evala primero la condicin y posteriormente ejecuta las
instrucciones.
TAREAS PROGRAMACION BORLAND DELPHI
1.- DESPLEGAR ENTEROS ENTRE 50 Y 80
2.- DESPLEGAR MULTIPLOS DE 4 ENTRE 60 Y 20 ACOMPAADOS DE SU
LOGARITMOS DE BASE 10 Y BASE e RESPECTIVOS ( A REVISAR LA AYUDA
Y BUSCAR LAS FUNCIONES MATEMATICAS DE BORLAND DELPHI )
3.- CONSTRUIR LA TABLA DE DIVIDIR QUE EL USUARIO INDIQUE.
CORRIDA:
Otra diferencia bsica con el ciclo while es que, aunque la condicin sea falsa desde un
principio, el cuerpo de instrucciones se ejecutara por lo menos una vez.
TAREAS PROGRAMACION BORLAND DELPHI
1.- DOS DE LAS DEL FOR
2.- DOS DE LAS DEL WHILE
16.- CONCLUSIONES CICLOS DELPHI
El problema de dado un problema cualesquiera en borland delphi , cual ciclo se debe
usar se resuelve con:
Si se conoce la cantidad exacta de veces que se quiere que se ejecute el ciclo o si el
programa de alguna manera puede calcularla usar for.
Si se desconoce la cantidad de veces a repetir el ciclo o se quiere mayor control sobre la
salida o terminacin del mismo entonces usar while.
Si se quiere que al menos una vez se ejecute el ciclo entonces usar repeat until .
No confundir esto con el tipo de dato o rango de datos que una variable tiene la
capacidad de almacenar.
Por ejemplo si se quiere almacenar nombre y edad de 15 personas, con el mtodo
tradicional se ocuparan 30 variables o 30 componentes visuales, y solo es nombre y
edad de 15 personas, agreguen mas datos y mas personas y ya es tiempo de empezar a
analizar otro tipo de variables y de componentes.
Es decir, en problemas que exigen manejar mucha informacin o datos a la vez,
variables escalares o componentes visuales de manipulacin de datos normales (edit,
label, etc.), no son suficientes, ya que su principal problema es que solo permiten
almacenas un dato a la vez.
Se ocupa entonces variables o sus correspondientes componentes visuales que sean
capaces de almacenar y manipular conjuntos de datos a la vez.
Variables de tipo arreglo y sus correspondientes componentes visuales, si permiten
almacenar y procesar conjuntos de datos del mismo tipo a la vez.
Cada dato dentro del arreglo, se le llama elemento del arreglo y se simboliza y
procesa(captura ,operacin ,despliegue ), usando el nombre del arreglo respectivo y un
subndice indicando la posicin relativa del elemento con respecto a los dems
elementos del arreglo.
NOMBRES
Juan
Pedro Nombres[2]
Jos
Ana Nombres[4]
Carmen
EDAD
18 Edad[1]
20
25
30 Edad[4]
Sin embargo sus problemas son similares a los de variables normales, es decir hay que
declararlos, capturarlos, hacer operaciones con ellos, desplegarlos, compararlos, etc.
Para propsitos del aprendizaje se analiza o clasifican en grupos diferentes los arreglos
que ofrece BORLAND DELPHI, ellos son;
1.- Arreglos tradicionales en PASCAL (internos dentro del programa)
2.- Componentes Visuales de tipo Arreglo
2.- ARREGLOS TRADICIONALES EN DELPHI
En programacin tradicional siempre se manejan dos tipos de arreglos, los arreglos tipo
listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados,
matrices o bidimensionales, en ambos casos son variables que permiten almacenar un
conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas
que cada uno de estos tipos contiene, como en los siguientes ejemplos;
1. ARREGLOS TIPO LISTA
Juan
Pedro Nombres[2]
Jos
Ana Nombres[4]
Carmen
18 Edad[1]
20
25
30 Edad[4]
CIA ACME
Como se observa, la diferencia principal entre un arreglo tipo lista, y un arreglo tipo
tabla, son las cantidades de columnas que contienen.
NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN
ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLES
FINANCIEROS ADMINISTRATIVOS.
EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE
VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS SON
PRECISAMENTE LOS DEL ALGEBRA MATRICIAL Y NO ES PROPOSITO O
LUGAR INDICADO PARA TRATAR PROBLEMAS Y OPERACIONES CON
MATRICES.
3.- ARREGLOS TIPO LISTA DELPHI
Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de
datos del mismo tipo organizados en una sola columna y uno o mas renglones.
VAR
Edades : array[1..12] of integer;
Sueldos : array[1..10] of Real;
Municipios : array[1..5] of string[20];
Nota: en caso de listas de strings observar que la string se le asigna un tamao
especifico.
notas:
Declaracin.- Es necesario recordar, que la declaracin de un arreglo tipo lista se puede
hacer en dos lugares diferentes, dependiendo de si solo se usa un botn de ordenes en la
pantalla, o si dos o mas botones de ordenes, estarn procesando el arreglo, el segundo
caso, es el mas comn.
Si un solo botn, en toda la ventana va a realizar, todos los procesos ( declaracin,
captura, operaciones, comparaciones, despliegue), con la lista, solo hacer la declaracin
de la lista, al principio del evento onclick, como lo muestra el programa ejemplo.
El dato capturado, proviene de momento de un componente visual escalar y por tanto
para capturas se usan algunas variables de control como lo muestra el siguiente
programa ejemplo, para capturar y procesar cuatro edades, el cdigo y pantalla se es;
Programa ejemplo;
var
Form1: TForm1;
edad : array[1..5] of integer;
ren:integer=1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
if ren <= 5 then
begin
edad[ren]:=StrToInt(Edit1.Text);
ListBox1.Items.Add(IntToStr(edad[ren]));
ren := ren + 1 ; Edit1.Text :=' ';
end;
if ren = 6 Then ShowMessage ('LISTA LLENA');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
r:integer;
begin
for r := 1 to 5 do
begin
ListBox1.Items.Add(IntToStr(edad[r] * 12));
end;
end;
Pantalla de corrida
Notas:
La declaracion del arreglo y la variable de control renglon se realiza en la parte VAR del
PROGRAMA no las partes verdes de var que se han puesto dentro del procedimiento
buttonclick como se ha realizado en todos los programas que se han construido hasta la
fecha.
Recordar que estas variables son globales o compartidas por todos los procedimientos o
eventos del programa.
Se uso un componente nuevo el ShowMessage('MENSAJE'); para desplegar un
mensaje de lista llena.
Para el caso de operaciones y comparaciones con todos los elementos de la lista a la
vez, se deber usar un ciclo for con una variable entera llamada rengln, misma que
tambin se usara como ndice de la lista como se hizo en el problema ejemplo.
Recordar que todos los datos internos de la lista estarn almacenados en la memoria ram
del computador, para despliegues se usa un componente visual que permite manipular
un conjunto de datos a la vez, el ListBox, pero se tiene que usar un ciclo for() para ir
aadiendo o agregando elemento por elemento como se observa en el problema ejemplo
que se ha venido desarrollando.
3.- Capturar los datos de 5 productos comprados en una tienda, incluyendo nombre,
precio y cantidad en sus 3 listas respectivas, despus calcular una cuarta lista con el
gasto total por cada producto desplegarlo todo en un segundo panel e incluir tambin el
gran total.
4.- Capturar en una lista solamente 6 nmeros mltiplos de 5, se debe de estar capture y
capture nmeros hasta que se completen los 6 mltiplos de 5.
4.- BORLAND DELPHI ARREGLOS TABLA
Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo organizados
en dos o mas columnas y uno o mas renglones.
Para declarar un arreglo de este tipo se usa el siguiente formato:
VAR
Nomtabla: array[1..1,1..c] of Integer;
Para procesar ( recordar solo operaciones y comparaciones) internamente todos los
elementos de la tabla se ocupan dos ciclos for uno externo para controlar rengln y uno
interno para controlar columna.
Solo recordar que en capturas, se debern usar logica de control ya sea con variables
globales o se pueden usar controles o componentes ocultos de tipo label o edit y en
despliegue usar un ListBox como lo muestra el programa ejemplo.
Programa delphi
var
Form1: TForm1;
calif : array[1..3,1..4] of integer;
ren:integer=1;col:integer=1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Label2.Caption:=IntToStr(ren);
Label3.Caption:=IntToStr(col);
calif[ren,col]:=StrToInt(Edit1.Text);
col := col+1;
Edit1.Text :=' ';
if (col=5) then
begin ren:=ren+1; col:=1;
end;
if (ren=4)
then
begin
ShowMessage('TABLA LLENA');
Edit1.Visible := false;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
r:integer;c:integer;
temp:string;
begin
for r := 1 to 3 do
begin
for c:= 1 to 4 do
begin
// operaciones calif + 10 puntos
calif[r,c]:=calif[r,c]+10;
// juntando columnas para desplegar
temp:= temp + IntToStr(calif[r,c])+ ' ';
end;
// desplegando
ListBox1.Items.Add(temp);
temp:='';
end;
end;
Pantalla de salida
1.-Propiedades;
2.- Mtodos;
Add.- Inserta un objeto nuevo al final de la lista y regresa el lugar o posicin donde hizo
la insercin.
Clear.- Se usa para vaciar el arreglo, tambin libera la memoria ocupada por los objetos
de la lista.
Delete.- Se usa para eliminar un objeto especifico, lleva como argumento o parmetro la
posicin del objeto.
Exchange.- Intercambia dos objetos de la lista.
Expand.- Se usa para agregar mas espacio para nuevos objetos en la lista.
First.- Se utiliza para regresar al primer objeto de la lista.
IndexOf.- Regresa la posicin del objeto en la lista.
Insert.- Inserta un objeto en la posicin deseada.
Last.- Regresa la posicin del ultimo objeto en la lista.
Move.- Mueve el objeto de una posicin a otra posicin.
Pack .- Compacta todos los objetos en una lista y libera la memoria ocupada por los
objetos que estaban en la parte inferior de la lista.
Remove.- Remueve o elimina un objeto especificado, el resto los recorre a la posicin
que ocupaba el objeto eliminado.
Sort.- Ordena los objetos de la lista, usando QuickSort.
Se puede aadir, eliminar e insertar tems en la lista usando los mtodos Add, Delete,
Insert con la propiedad Items, que tambin es de tipo TStrings.
Si se quiere que ListBox presente varias columnas, solo cambiar el valor de la
propiedad Columns, para ordenar o clasificar los tems, usar la propiedad Sorted.
Se puede permitir que un usuario realice una seleccin mltiple, poniendo la propiedad
MultiSelect en true, la propiedad ExtendedSelect determina como se realiza la seleccin
mltiple.
Para determinar cual tem en particular esta seleccionado solo validar la propiedad
Selected, para conocer cuantos tems se han seleccionado revisar los valores de la
propiedad SelCount.
Propiedades:
Mtodos:
En la practica para cargar o capturar sus elementos, se deber usar el mtodo Add, ya
que no se permite cargar directamente sus datos o elementos por el usuario del
programa, solo usar cdigo como el analizado en los temas anteriores ;
Recordar que se pueden usar todos los mtodos, para insertar, eliminar, contar, etc.
Si los valores son de tipo numrico, se pueden efectuar procesos con ellos de dos
maneras:
Pasando los valores de ListBox a una variable numrica de tipo arreglo y procesando
esta ultima variable.
Usar instrucciones directamente de proceso con las funciones INTTOSTR y
STRTOINT.
Si es necesario pasar el contenido de ListBox1 a ListBox2, solo usar la propiedad Text
en ambas, ej.; (ListBox2.Text := ListBox1.Text).
LO MAS IMPORTANTE A TOMAR EN CUENTA Y RECORDAR ES QUE A
DIFERENCIA DE ARREGLOS TRADICIONALES LISTBOX EMPIEZA SU
PRIMRE INDICE O RENGLON EN 0 ( CERO ) COMO ES COMUN EN EL
LENGUAJE DE PROGRAMACION C++, RECORDAR AJUSTAR SUS CICLOS
DE PROCESOS Y SUS CONTADORES DE CONTROL PARA QUE TOMEN
ESTA NOTA EN CONSIDERACION.
Ejemplo con ListBox, para este caso se pide capturar 5 edades en un ListBox, luego
sumarle 3 aos a cada una usando el mismo ListBox, y desplegarlas en un segundo
ListBox convertidas a meses.
Pantalla de diseo:
Cdigo:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Edit1.Text);
Edit1.Text := '';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
r, temp :integer;
Begin
for r:=0 to ListBox1.Items.Count - 1 do
begin
temp := StrToInt(ListBox1.Items.Strings[r]) * 12;
ListBox2.Items.Add(IntToStr(temp));
end;
end;
Pantalla de salida:
FORM1:
Programa;
procedure TForm1.Button1Click(Sender: TObject);
var
c,r,temp:integer;
begin
for c:=0 to 2 do begin
for r:=0 to 3 do
begin
temp:= StrToInt(StringGrid1.Cells[c,r])-4;
StringGrid1.Cells[c,r] := IntToStr(temp);
end; end; end;
Pantalla de Corrida:
[[|Un proceso muy comn con tablas, cuadros y concentrados es agregarles listas [[|[[|de
totales y promedios ya sea por columna o por rengln o ambas , por ejemplo;]]]]]]
CIA ACME
INGRESOS MENSUALES
(MILES DE PESOS)
1.- Construir un concentrado que despliegue los costos fijos de tres diversos productos
que se fabrican en cuatro sucursales de una empresa MAQUILADORA.
2.- Construir un concentrado que contenga los ingresos por ventas mensuales de los 4
primeros meses del ao de tres sucursales de una cadena refaccionara, agregar listas de
ingresos totales por mes e ingresos promedios por sucursal.
3.- Construir un cuadro que contenga las calificaciones de 5 materias de cuatro alumnos
cualesquiera, incluir promedios de calificaciones por materia y por alumno.
los datos que ya contiene, otro procedimiento para desplegarlos en pantalla ya cuando
ha sido capturada y as sucesivamente.
a.2) Archivos, que en principio pueden entenderse como una especie de almacenes o
bodegas para almacenamiento de datos en forma permanente en disco, es decir un
archivo de empleados en disco contiene todos los datos de todos los empleados de una
empresa.
Igualmente los archivos ocupan su propios programas o subrutinas o procedimientos
especializados por ejemplo, procedimientos para crear los archivos, para almacenar o
dar de altas los registros en el archivo, procedimientos para buscar un registro
determinado, procedimiento para dar de baja un registro, etc.
a.3) Una aplicacin, que es un programa que se encarga de coordinar todos los
programas descritos y presentrselos a los usuarios de manera clara, fcil y accesible y
entendible.
Salta a la vista que construir un sistema de informacin por ejemplo para una tienda de
vdeo o para un refaccionara, etc. involucra un gran cantidad de trabajo de
programacin, puesto que hay que programar muchas variables registros, muchos
archivos en disco, y una o varias aplicaciones.
Este modelo se usa todava en la actualidad, pero es obvio que mejores maneras, mas
rpidas, seguras y eficientes existen en la actualidad para resolver estos problemas, y
esto nos lleva al segundo modelo de datos.
[[|Modelo de Bases de Datos Relacinales, este modelo intenta simplificar la
construccin de sistemas de informacin como los antes descritos, este modelo solo
incluye en forma simple los siguientes elementos:]]
Tablas es una combinacin de las variables registro y de los archivos del modelo
anterior.
Es decir cuando un programador moderno define o declara una tabla en un programa,
realmente esta haciendo dos cosas por el precio de una, es decir crea una variable
registro en memoria que almacenara los datos y al mismo tiempo ya esta creando un
archivo en disco que se llamara igual que la tabla o variable registro y que
automticamente se convertir en un espejo de la tabla en memoria, es decir cuando se
cargan los datos en la tabla en memoria, tambin se estarn cargando ala vez en disco.
Otra vez cuando el programador escribe cdigo para capturar los datos y mandarlos a la
tabla en pantalla-memoria, realmente tambin lo esta haciendo para darlos de alta en
disco.
Aplicacin, que tiene la misma funcin que en el modelo anterior.
No confundir este concepto de tablas en base de datos con el concepto de tablas, vistos
en el capitulo de arreglos, aunque en la practica se parecen mucho la diferencia es que
los datos no se van a disco.
Como se observa en este modelo, es mas sencillo construir sistemas de informacin con
el, puesto que la parte programatica se reduce ampliamente.
3.- TABLAS DELPHI
Una Tabla simple, representa una unidad de informacin de una entidad lgica de
informacin:
Tabla Empleado:
Clave Empleado
Nombre Empleado
Direccin Empleado
Edad Empleado
Telfono Empleado
etc. Empleado
Tabla Proveedor:
Clave Proveedor
Nombre Proveedor
Empresa Proveedor
Telfono Proveedor
Fax Proveedor
Celular Proveedor
etc. Proveedor
Tabla Autos:
Numero de Serie
Modelo
Marca
Tipo
Color
Capacidad
etc.
Observar que cada tabla, empieza con una clave generalmente de tipo numrica.
Todos los elementos de la tabla, solo hacen referencia hacia el mismo ente o sujeto de
informacin.
Cada elemento solo representa o debe contener un solo dato de informacin.
No se respetan o siguen al pie de la letra estos tres postulados y empiezan los
problemas al tiempo de programacin.
Existe una segunda forma o manera de representar las tablas, ejemplo:
Tabla: Camisas
NumCamisa Marca Estilo Medida Color Material
1 Jeans Manga Corta Grande Azul Algodn
2 Volis Camiseta Mediana Negra Poliester
3 Genrica Manga Larga Chica Morado Rayn
etc. etc. etc. etc. etc. etc.
Tabla: Clientes
NumCliente NomCliente DirCliente TelCliente
1 Juan Prez Av. aba 121212
El trabajo correcto con bases de datos relacinales, se divide en dos grandes pasos o
etapas bien diferenciadas entre si:
En la primera etapa se disea la tabla , con sus campos, llaves y condiciones especiales,
luego se usa un paquete o programa de software especializado en la construccin,
mantenimiento y administracin de la base de datos, este software se usa para convertir
la tabla o tablas ya bien diseadas en un archivo en disco.
Estos paquetes, o software reciben el nombre de DBMS(DATA BASE
MANAGEMENT SYSTEM) o sistema administrador de bases de datos.
Este software se especializa en la creacin, mantenimiento, seguridad, privacidad, etc.
de un conjunto de tablas o mejor dicho una base de datos, los DBMS mas comunes son
Oracle, SqlServer, Informix, Sysbase, etc.
Borland la compaa que fabrica C++Builder, proporciona junto con el BORLAND
DELPHI , un mini DBMS llamado DataBase Desktop, mismo que se encuentra en el
mismo folder o subdirectorio que el BORLAND DELPHI, y que tambin se usara para
construir las tablas y/o archivos fsicos.
La segunda etapa consiste en construir la aplicacin o aplicaciones que ya tendrn
acceso o podrn manipular los datos contenidos en la tabla, estas aplicaciones se
escriben usando ya sea lenguajes clsicos de programacin como BASIC, PASCAL,
COBOL, CBUILDER, DELPHI, etc., o tambin se pueden accesar paquetes comunes
de manipulacin de archivos o bases de datos como DBASE, CLIPPER, VISUALFOX,
ACCESS, etc.
DISEO Y CREACION DE UNA TABLA
El primer paso antes de usar el paquete correspondiente a esta tarea, es disear la tabla
completamente, esto exige:
1. Nombre apropiado y determinacin de atributos y campos correspondientes
2. Seleccionar y determinar el atributo principal o campo clave o llave primaria que
se utiliza como el identificador nico que permite diferenciar cada instancia o
rengln diferente dentro de la tabla.
3. Tambin se puede seleccionar otros campos que puedan servir mas adelante para
ordenar de manera diferente la tabla, es decir una tabla en principio ya est
ordenada por el campo clave, por ejemplo, la matricula de un alumno, el numero
de empleado, etc., pero existirn muchas ocasiones mas adelante donde se puede
pedir un orden diferente, por ejemplo, por ciudad, por carrera, por nombre, por
edad, etc., la buena ingeniera de una base de datos exige tomar en cuenta estos y
otros muchos problemas y detalles.
A estos atributos o campos especiales se les conoce como claves o llaves secundarias,
que internamente generan otra tabla especial llamada tabla o archivo de ndices, (tabla o
archivo que contiene dos campos,
el primero es la clave secundaria ordenada y el segundo la posicin o rengln donde se
encuentra en la tabla original).
Como se observa existen muchos e interesantes tipos de datos, de momento solo usar
los mas comunes, enteros, short, numricos, y alpha para el caso de strings.
c.2) Entrar al modo de edicin usando la opcion TABLE EDIT TABLE o TECLA F9 o
icono EDIT
(para que se vea este icono maximizar DATABASE DESKTOP) y
PROCEDIMIENTO Y COMPONENTES
1.- Colocar un componente Table (Data Access )
Este componente contiene todos los procesos mas usuales para la manipulacin
y procesamiento de los datos en renglones de la tabla.
como se observa, es una pequea barra de botones, donde cada uno de ellos,
representa y ejecuta un proceso con todo un rengln de la tabla, dichos procesos
son:
Button Significado
Recordar poner unos cuantos componentes Label arriba de los botones del navegador
para su aclaracin, uso y manejo al usuario.
Sus dos propiedades mas importantes son:
Propiedad DataSource = Click a un lado y seleccionar el DataSource al que se quiere
enlazar, por ejemplo DataSource1.
Propiedad +VisibleButtons = Click en el signo +, para activar(True) o desactivar(False)
los botones de proceso de renglones de la tabla, que se quieran mostrar u ocultar al
usuario.
Con estos cuatro componentes ya se construye una aplicacin, ejemplo;
Pantalla de Diseo:
Pantalla de ejecucin:
TAREAS PROGRAMACION BORLAND DELPHI
1.- Construir aplicaciones para la mitad de las tablas hechas en el DataBase
Desktop.
8.- APLICACION POR TABLA DELPHI
En este tipo de aplicacin, al usuario se le presenta toda la tabla completa a la vez para
su procesamiento y manipulacin.
Para construir esta tipo de aplicacin, solo se ocupan tres componentes y dos de ellos ya
son conocidos, estos componentes son:
Componente Table ( Data Access)
Una caracterstica interesante, es que este componente DBGrid, trae asociado un editor
de columnas, solo poner el componente DBGrid en la forma, enlazarlo al DataSource y
luego doble click dentro del DBGrid y aparece el siguiente editor:
Primero usar el botn Add All Fields para cargar todos los campos columnas a la
primera ventana y de esta ventana ir seleccionando el campo o columna a procesar,
observar que se pueden agregar nuevas columnas, o eliminar columnas existentes y para
cada columna que se vaya seleccionando ya funciona la segunda parte del editor.
Componente DBNavigator( Data Access)
Aunque este componente no se ocupa en este tipo de aplicacin, puesto que el usuario
puede realizar todos los procesos bsicos directamente dentro de la tabla, es conveniente
poner un navegador para darle una segunda opcin o manera de realizar los procesos
bsicos.
Un ejemplo de aplicacin con esta estructura es:
Pantalla de Diseo
Pantalla de ejecucin:
TAREAS PROGRAMACION BORLAND DELPHI
1.- CONSTRUIR APLICACIONES CON ESTE FORMATO PARA LA SEGUNDA
MITAD DE LAS TABLAS CREADAS CON EL DATABASE DESKTOP.
9.- PROCESOS BASICOS DELPHI
Analizaremos ahora algunos procesos tambin bsicos que pueden realizarse con los
dos tipos de aplicaciones y que adems no estn contemplados en algunos de los
botones del navegador.
OPERACIONES CON CAMPOS
Para el caso de aplicaciones construidas con componentes DBEdit, recordar que
comparte muchas propiedades y mtodos con el componente edit, as que es valido por
ejemplo en una aplicacin donde la tabla tiene el campo edad en DBEdit3) poner un
componente edit1 para desplegarlos en meses y realizar la siguiente operacin en el
onclick de un botn apropiado como lo muestra el siguiente programa ejemplo
procedure TForm1.Button1Click(Sender: TObject);
var
meses:integer;
begin
meses := StrToInt(DBEdit3.Text) * 12;
Edit1.Text := IntToStr(meses);
end;
corrida:
temp:= DBGrid1.Fields[2].AsInteger * 5;
Edit1.Text:=IntToStr(temp);
end;
corrida:
Los parmetros del mtodo Locate(), son;
Locate(Columna de bsqueda ,Dato a buscar , [loCaseInsensitive, loPartialKey]);
cuando opcin = loCaseInsensitive ignora diferencia entre maysculas y minsculas
cuando opcin = loPartialKey resultado parcial, ejemplo si se busca ju se
posesiona en el primer rengln donde ese campo empiece con ju, ejemplo Juan,
juvenal, etc.
TAREAS PROGRAMACION BORLAND DELPHI
1.- CONSTRUIR UNA APLICACION DE BUSQUEDAS PARA UNA TABLA DE
AUTOS, CON OPCIONES DE BUSQUEDA POR CLAVE, MODELO, COLOR,
PRECIO.
11.- FILTROS DELPHI
Un filtro es una condicin que permite desplegar solo determinada informacin de una
tabla.
= ClaveCliente < 3
= Ciudad <> 'Tijuana'
= ClaveCliente > 2 and Ciudad = 'Tijuana'
onclickbutton1()
{ DBImage1.PasteFromClipboard(); }
Recordar que para usar estos mtodos, el Clipboard de Windows ya debe estar cargado
con la imagen, para pruebas sencillas, minimizar la aplicacin, cargar el PaintBrush o
Paint, cargar un archivo grafico por ejemplo un BMP, seleccionarlo luego Edit Copy,
cerrar el Paint o PaintBrush y maximizar la aplicacin y aplicar cualquiera de los dos
mtodos.
Es evidente que tambin se pueden usar CTRL C, CTRL X, CTRL Del(ver edit de
cualquier ventana), CopyToClipboard() (ver ayuda de DBImage), etc., para diferentes
procesos.
Recordar adems que la tabla fsica no actualiza el campo correspondiente con su
imagen, si no se avanza de rengln, o se usan los botones Next, Refresh, Update del
navegador.
7.- Para cargar o capturar una imagen directamente desde un archivo en disco de
extensin .BMP (u otros similares) solo usar un componente DBImage ya sea en
aplicaciones por rengln o por tabla, un componente Button de ordenes y el siguiente
cdigo;
OnClickButton1()
{ DBImage1.Picture.LoadFromFile('C:\datos\mifoto.jpg'); }
Ya debe estar en el directorio o folder datos dicho archivo grafico y adems otra vez
recordar, que aunque la imagen ya esta en la pantalla, todava no se manda a la tabla a
disco si no se ejecuta un avance de rengln o un Next, etc.
8.- La propiedad Stretch en DBImage, la amplia, otro mtodo es ponerlas en Clipboard
o archivo ya con el tamao apropiado.
TAREAS PROGRAMACION BORLAND DELPHI
1.- UNA TABLA DE MAMIFEROS COMPLETA INCLUYENDO IMAGENES
2.- UNA TABLA DE PRODUCTOS O MERCANCIAS INCLUYENDO SU FOTO
13.- QREPORT BORLAND DELPHI
Imprimir tablas o construir reportes sobre las mismas, es tambin una tarea comn en
los sistemas de informacin basados en bases de datos.
Lo bueno es que se tiene un folder o pestaa llamada QReport cargada de componentes
visuales especializados en la impresin de reportes, esta librera de componentes, no es
hecha por Borland, es hecha por una compaa llamada QSOFT
QReport
Practica para construir un reporte que contiene la cdula de un y solamente un cliente
de la tabla de clientes.
Los componentes y propiedades a usar son:
1.- Table1
DataBaseName = c:\datos
TableName = Clientes.db
Active = true
Filtered = true
Dataset = Table1
Zoom = 50
3.- QRShape1
Se usara para crear un rectngulo para encabezados de la cdula de un cliente.
Son varios tipos o formas las que existen de QRShape, rectngulos, lneas, crculos, etc.,
rectngulo es default, y la propiedad para cambiar de forma es Shape.
Acomodarlo y expanderlo en la parte superior de la hoja de impresin (QickRep1).
Sus propiedades a usar son:
- +Pen = Click en signo + y poner:
Color = clgreen
Width = 5
4.- QRLabel1
Similar a label, contienen textos o mensajes estticos.
Colocarlo dentro del rectngulo o seccin de encabezado.
Propiedades:
Caption = CIA ACME
+Font = dar color y tamao de font
5.- QRSysData1
Componente especiales que contienen datos fijos de impresin, tales como numero de
pagina, fecha, hora, etc.
Colocarlo tambin dentro de la seccin o banda de encabezado.
propiedades:
Data = click a un lado y seleccionar qrsdate
6.- QRSysData2
Otro del anterior, colocarlo dentro de la banda de encabezado, propiedad
Data = click a un lado y seleccionar qrsPageNumber
7.- QRShape2
Con este se forma ahora un seccin, rectngulo o banda principal.
Cuando un reporte, imprime mas de un rengln, por ejemplo todos los clientes, esta
parte de la hoja recibe el nombre de banda de detalle.
Propiedades:
- +Pen = darle color y tamao(Width) apropiados.
8.- QRLabel###
Colocar varios dentro de la banda de detalle, con caption apropiado, ejemplo, clave,
nombre, foto, etc.
9.- QRDBText1
Componente para desplegar cada dato de una celda o campo o columna de una tabla, es
similar a DBEdit pero es esttico, es decir solo despliega.
Dataset = Table1
10 .-QRDBImage
Componente para desplegar e imprimir campos de tipo Graphics ( BMP, ICO, WFW).
Propiedades:
Dataset = Table1
Stretch = true
Notas:
1.- El componente QuickRep, tiene la propiedad +Frame, para que tambin pueda
desplegar e imprimir un marco apropiado.
2.- Para ir desplegando un Preview de impresin al tiempo del diseo del reporte, solo
dobleclick dentro de la hoja de impresin (QuickRep) para que aparezca una ventana de
Preview de impresin.
3.- Para Preview o impresin en tiempo de ejecucin, solo aadir un botn de ordenes
OK, y usar solo una de las siguientes instrucciones:
OnClickButton1() {
QuickRep1.Preview();
o QuickRep1.Print();
solo una de las dos } ejemplo: a)Pantalla de diseo
Button1Click(TObject *Sender)
QuickRep1.Preview();
b)Programa: <code>
Lo mas importante a tomar en cuenta es cada componente QRBand que se ponga dentro
de un reporte, se deber definir usando su propiedad BandType, como una cualquiera de
los seis tipos de bandas, es decir,
QRBand1 = banda de encabezado,
QRBand2 = Banda de titulo,
QRBand3 = Banda de detalle, etc.
En general el procedimiento completo es:
1.-Poner un componente Table en la forma y nadamas cargarle sus tres propiedades
bsicas( no usar filtros).
2.-Poner un Componente QuickRep( es la hoja de impresin) y cargarle las propiedades
ya descritas en procedimiento de impresin anterior.
3.- Colocar y expandir un primer componente QRBand dentro del componente
QuickRep y primero asociarle el tipo de banda que representa, por ejemplo de
encabezado o de titulo, recordar que un reporte no necesariamente tiene que llevar las
seis bandas.
A este componente QRBand, cambiarle propiedades de font, frame, color, etc.
4.- Colocar dentro del componente QRBand1, los componentes necesarios y apropiados
como se indico en el cuadro anterior de bandas y significados, por ejemplo QRLabel,
etc.
5.-Colocar otro componente QRBand en la hoja de impresin, expanderlo y definirlo
como banda de titulo o banda de encabezado de columnas, etc.
6.-Repetir los pasos anteriores, hasta completar todas las bandas.
7.- Colocar un botn de ordenes OK, y asociarle el cdigo de Preview o de impresin.