Escolar Documentos
Profissional Documentos
Cultura Documentos
- INTRODUCCION DELPHI
Proceso u operacin
AREA = BASE * ALTURA 2
Variable(s) salida
AREA
LA
FUNCION
PARA
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:
42.- Calcule las anualidades que tendra que pagar una persona que pidio un
prestamo. Dependiendo del tiempo que el elija y el interes por ao. Formula
(Anualidad=(Prestamo/Tiempo)+interes)
43.- Determinar cuanto ganara una persona en base a la horas trabajadas.
Tomando en cuenta el pago por hora.
44.- Convertir horas a segundos.
45.- Calcular la fuerza. Formula (fuerza = trabajo / tiempo)
3.- BORLAND DELPHI BUILDER 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
Operacin
SUMA
RESTA
MULTIPLICACION
DIVISION
DIVISION ENTERA
MODULO O RESIDUO
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
Para resolver los problemas de potencias y races, se usan ciertas
instrucciones especiales que proporciona el lenguaje, llamadas funciones
matemticas, en pascal existe todo un conjunto de instrucciones o funciones
matemticas.
Y ademas deberan recordar sus leyes de logaritmos y de potencias:
Con el uso de los logaritmos, los procesos de multiplicacin, divisin,
elevacin a potencias y extraccin de races entre nmeros reales pueden
simplificarse de la manera siguiente.
= 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 estamos sumando los logaritmos, es decir al
resultado de la suma de logaritmos le tenemos que sacar su antilogaritmo, para
conocer el resultado final(100) de la mulptiplicacion.
Ejemplo en pascal
Real alfa
Alfa := Exp( Ln(5) + Ln(20) );
Como se observa primero se calculan los logaritmos de 5 y de veinte con (Ln),
luego los sumamos y a este resultado le extraemos el antilogaritmo con (EXP)
que seria el resultado final.
Otro ejemplo si se tiene la potencia 53 entonces aplicando la regla de
logaritmos el programa quedaria:
Real alfa
2+ 3* 4 := 20(incorrecto)
:= 14 (correcto)
1.- Parntesis
2.- Potencias y races
3.- Multiplicaciones y divisiones
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
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
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 ;
Edit10.Text := '3,1416';
String temporal := Edit10.Text;
Observar que aunque se cargue con un dato aparentemente de tipo REAL la
propiedad TEXT solo puede contener STRINGS.
Se usaran mucho a lo largo de todo el curso las siguientes funciones de
BROLAND DELPHI para estar conviertiendo de STRINNS a VALORES
NUMERICOS y tambien de VALORES NUMERICOS a STRINGS.
a) Val(Edit1.Text,temporal,error) ESTA FUNCION TOMA LA STRING
QUE ESTA EN TEXT Y LA MANDA O CARGA LA VARIABLE
NUMERICA (INTEGER O REAL ) TEMPORAL, APARTE VAL CARGA
UNA VARIABLE INTEGER ERROR CON UN CODIGO DE ERROR SI SE
DIO ALGUN ERROR EN EL PROCESO DE CONVERSION, ES DECIR
VAL SE USA PARA CONVERTIR TEXT A VARIABLES NUMERICAS.
B) STR( 3.1416,temporal ) SE USA PARA CARGAR UNA VARIABLE
STRING TEMPORAL CON UN DATO O VALOR NUMERICO
DETERMINADO, RECORDAR QUE SE USA PARA CONVERTIR DATOS
NUMERICOS A STRINGS, NO TEXT
C) Edit1.Text:=FloatToStr(123.45) SE USA PARA CARGAR LA
PROPIEDAD TEXT DE UN EDIT CON UN DATO O VARIABLE ENTERA
O REAL.
D) FloatToDecimal (PROCEDIMIENTO) CONVIERTE U FLOTANTE A
DECIMAL
E) FloatToStr (FUNCION) EJEMPLO CASO C) CONVIERTE
FLOTANTE A STRING
F) FloatToStrF (FUNCION) SIMILAR A C) PERO SE PUEDE
AGREGAR UN FORMATO, PARTE ENTERA Y DECIMALES (VER
EJEMPLOS EN PROGRAMAS )
G) FloatToText(FUNCION) CONVIERTE FLOTANTES A TEXT,
INCLUYENDO FORMATO, PARTE ENTERA Y DECIMALES.
temp := StrToFloat(Edit1.Text)* 5;
Edit1.Text := FloatToStrF(temp,ffGeneral,5,2);
ffExponent, ffFixed, ffGeneral, ffNumber
NOTA:
ffCurrency,
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.
Es decir, por ejemplo, si se pide resolver el problema de multiplicar dos
nmeros cualesquiera, se ocuparan tres ` cajas Edit,(factor1, factor2,
producto), es en estos casos donde se usan tres componentes Edit como si
fuesen tres variables simples directamente.
Ya en programa se ocupan 3 componentes Label para ttulos (Multiplicando,
Multiplicador, Multiplicacin), tres componentes Edit para los datos (dos
proporcionados por el usuario y uno calculado por el programa) y un
componente Button(OK) para realizar la operacin.
Codigo;
procedure TForm1.Button1Click(Sender: TObject);
var
temp:Real;
begin
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
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;
c) Pantalla de ejecucin o de salida
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.
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:
El componente Panel1 puede contener una toda una serie lgica de otros
componentes.
Solo se deber recordar colocar primero todos los paneles en la forma y
encima de ellos los componentes que contendrn.
Este componente tambin tiene una serie de propiedades que le dan una mejor
presentacin usando las propiedades BevelInner, BevelOuter, BevelWidth, y
BorderWidth.
Es decir se puede dividir una sola ventana en varias partes, por ejemplo en un
panel se ponen los componentes donde se capturan los datos de un problema
junto con el botn de OK, y en otro panel se construye la salida, por ejemplo
se crea un panel para capturar los datos de un empleado incluyendo sueldo
diario y das trabajados y un segundo panel contiene su cheque semanal de
pago ( problema sugerido tambin ).
Para modificar programas construidos sin paneles, el procedimiento para
agregarlos es:
1.- Mover todos los componentes abajo en la ventana.
2.- Colocar el panel en su posicion.
3.- Click en Componente a relocalizar.
4.- DobleClick, Copy
5.- DobleClick, Cut
6.- Click dentro del panel, donde se quiere el componente
7.- DobleClick, Paste
TAREAS PROGRAMACION BORLAND DELPHI
1.- REEDITAR E INCLUIR ESTE COMPONENTE PANEL, EN TODOS
LOS PROGRAMAS IMPARES HECHOS.
17.- BORLAND DELPHI COMPONENTE GROUPBOX (Standard)
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
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
<>
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
Val(Edit1.Text,temp,error);
if temp >= 1000 then
begin
Label2.Caption := 'RICO';
end
Else
begin
Label2.Caption := 'POBRE';
end
end;
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
CCC
CFC
FCC
FFF
CCcCc
CCcFc
CFfCc
CFfFf
FCfCc
FCfFf
FFfCc
FFfFf
Corrida:
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
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:
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).
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.
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
Programa
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
For x:= 10 to 20 do
begin ListBox1.Items.Add(IntToStr(x));
end;
end;
La pantalla de salida debe ser igual o parecida a la siguiente;
begin
ListBox1.Items.Add(IntToStr(x)+' pato');
x:=x+1;
end;
end;
corrida:
repeat
ListBox1.Items.Add(IntToStr(x)+' gato');
x:=x+1;
until (x>=10);
end;
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.
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
18 Edad[1]
20
25
30 Edad[4]
CIA ACME
ING MENS VTAS
(MILES DE $)
ENE FEB MAR ABR MAY
SUC A 10 12 15 10 9
SUC B 8 7 5 9 6
SUC C 11 18 20 14 17
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.
Tambin reciben el nombre de
unidimensionales en programacin.
vectores
en
lgebra,
arreglos
Los procesos normales con una lista o con sus elementos, incluyen declarar
toda la lista, capturar sus elementos, desplegarlos, realizar operaciones con
ellos, desplegarlos, etc.
Para declarar una lista se usa el siguiente formato;
VAR
nomlista :array [1..n] of Integer;
* ESTO SIGNIFICA que el arreglo debera declararse en la parte VAR
publica del programa (AL PRINCIPIO DEL PROGRAMA ARRIBA DEL
PROCEDIMIENTO BUTTONCLIK SE ENCUENTRAN ESTAS
PARTES VAR Y TYPE DEL PROGRAMA)
* Y el indice (n) es la cantidad de elementos de la lista.
ejemplos;
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.
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
2.- Mtodos;
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.
Como se observa contiene muchas propiedades y mtodos que facilitan
grandemente el trabajo con los elementos de una lista.
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:
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:
SUC B 4 5 6 15 5
SUC C 7 8 9 24 8
SUC D 10 11 12 33 11
TOTMES 22 26 30
PROMMES 5.5 6.5 7.8
En este ejemplo aparte de la tabla se ocupan 4 listas, dos para totales y dos
para promedios.
El cdigo en C++ es sencillo, pero cambiarlo a borland delphi, recordarlo y
aprenderlo para siempre:
//declaracin
float tabla[4][3], totsuc[4], promsuc[4];
float totmes[3], promes[3];
//observar tamaos de listas que referencian rengln
// listas que referencian columnas, se supone que la tabla // ya esta capturada.
//cdigo para operaciones para totales y promedios //renglones por sucursal:
for(reng=0;reng<=3;reng++)
for(col=0;col<=2;col++)
{ totsuc[reng]=totsuc[reng]+tabla[reng][col]; };
for(reng=0;reng<=3;reng++) promsuc[reng]=totsuc[reng] / 3.0 ;
// operaciones para totales y promedios por mes
for(reng=0;reng<=3;reng++)
for(col=0;col<=2;col++)
{totmes[col]=totmes[col]+tabla[reng][col]; };
for (col=0;col<=2;col++) prommes[col]=totmes[col]/4.0;
TAREAS PROGRAMACION BORLAND DELPHI
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.
IV UNIDAD BORLAND DELPHI INT A LAS BASES DE DATOS
1.- INTRODUCCION 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
10.- BANCOS
4.- TABLAS (CONTINUACION)
determinacin
de
atributos
campos
b) Crear una nueva con file, new, table, DD pregunta cual formato de tabla se
va a usar;
Tomar nota de las dos reas del editor, la primera de ellas es el field roster y
la segunda rea es la de propiedades de la tabla.
d) Se usa ahora la primera rea, para escribir los campos o atributos de la
tabla, la segunda columna es el tipo de dato del atributo, para asignar un tipo
de dato a un atributo, pulsar dos veces la barra espaciadora en el teclado para
que salga la siguiente lista de tipos de datos:
[] campo requerido
[] valor mnimo
[] valor mximo
[] valor de default
[] picture(mascarilla de edicin)
La propiedad siguiente tiene sus propios elementos y as sucesivamente.
De momento solamente dejar las propiedades o sus partes en blanco.
f) No olvidar usar la opcin SAVE abajo para guardar la tabla, en esta parte
sale la ventana normal de Windows para grabacin, esa ventana donde se
puede crear un nuevo folder, etc., solo buscar el directorio que se creo al
principio de la sesin con my computer, abrirlo(OPEN) y escribir un nombre
apropiado para la tabla por ejemplo (MITABLA).
Ya creada la tabla, es conveniente cargarle unos cuantos renglones registros o
datos para pruebas, esto se hace con:
c.1) Usar el icono de OPEN tabla
tambin en algn
carga sus datos desde el usuario y DBEdit los carga desde la tabla almacenada
en disco.
De este componente se deben colocar tantos de ellos en la forma, como
columnas existan en la tabla a procesar.
Sus dos propiedades mas importantes y en el orden abajo descrito son:
Propiedad DataSource = Click a un lado y seleccionar el DataSource al que se
quiere enlazar, por ejemplo DataSource1.
Propiedad DataField = Click a un lado y seleccionar el campo o atributo o
columna que se quiere representar o enlazar por ejemplo ClaveCliente,
NomCliente, etc.
Recordar que se deben colocar tantos DBEdit en la forma, como columnas
existan en la tabla, o como columnas se quieran presentar al usuario para su
manipulacin.
Recordar poner unos cuantos componentes Label, arriba del componente
DBEdit y cargarlos en su propiedad caption con el nombre del campo o
columna respectivo.
4.- Componente DBNavigator (Data Controls)
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:
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)
propiedad DataBaseName = c:\datos
propiedad TableName = Clientes.db
propiedad Active = True
Componente DataSource ( Data Access)
propiedad Dataset = Table1
Componente DBGrid ( Data Controls)
Este componente le presenta todos los renglones a la vez al usuario para su
procesamiento, en un formato muy similar al visto en el componente
StringGrid.
Su propiedad mas comn es:
DataSource = Click a un lado de la propiedad, para seleccionar el
DataSource respectivo a enlazar, por ejemplo DataSource1.
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)
propiedad DataSource = DataSource1
propiedad +VisibleButtons = activar o desactivar los botones
apropiados
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:
Table1.Filter = Edit1.Text;
Table1.Filtered = true;
}
TAREAS PROGRAMACION BORLAND DELPHI
1.- UNA TABLA DE AUTOS FILTRADA INTERNAMENTE POR COLOR
AZUL Y MODELO DE 1990 EN ADELANTE.
2.- UNA TABLA DE PROVEEDORES Y QUE SEA EL USUARIO QUIEN
CONSTRUYA EL FILTRO O CONDICION.
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
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.
Se debern poner tantos componentes QRDBText en esta banda o seccin de
detalle, como columnas de datos existan o se quieran desplegar de la tabla.
Propiedades:
Dataset = Table1
DataField = seleccionar columna apropiada
Font = color, tamao, etc. que se quieran
10 .-QRDBImage
Componente para desplegar e imprimir campos de tipo Graphics ( BMP, ICO,
WFW).
Propiedades:
Dataset = Table1
DataField = Seleccionar una columna de tipo Graphics
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
b)Programa:
<code>
Button1Click(TObject *Sender)
QuickRep1.Preview();
</code>
c)Pantalla
de
d)Pantalla
corrida:
de
Preview
durante
ejecucin:
bueno parte de
ella. TAREAS PROGRAMACION BORLAND DELPHI 1.- REPORTE CON
UN AUTO DE LA TABLA DE AUTOS 2.- REPORTE DE UN PROVEEDOR,
DE LA TABLA DE PROVEEDORES, PERO EL USUARIO SELECCIONA EL
FILTRO O LA CLAVE DEL PROVEEDOR ( CONSTRUIR DOS PANTALLAS,
UNA CON EL FILTRO Y BOTON DE IMPRESION O PREVIEW Y LA
SEGUNDA CON EL REPORTE).
14.- REPORTES DELPHI