Você está na página 1de 35

REPEAT UNTIL

Su diferencia bsica con el ciclo while es que la prueba de condicin es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una vez, porque primero ejecuta las instrucciones y al final evala la condicin; Tambin se le conoce por esta razn como ciclo de condicin de salida. Su formato general es : cargar o inicializar variable de condicin; repeat instrucciones ; instruccion de salida del ciclo until (condicion) ; programa ejemplo:

procedure TForm1.Button1Click(Sender: TObject);

var

x:integer;

begin

x:=1;

repeat

ListBox1.Items.Add(IntToStr(x)+' gato');

x:=x+1;

until (x>=10);

end;

CORRIDA:

FOR

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 momento permite resolver el problema del for (desplegar un conjunto de datos o resultados a la vez). Tanto ComboBox como ListBox permiten cargar todos sus elementos o valores, dentro de un programa, usando un mtodo llamado Add(valor) en su propiedad Items, como se ve en el siguiente programa ejemplo; Para este problema se ocupa poner en Form1, un componente Button OK que en su evento OnClick contiene el for y la carga del componente ListBox, con el siguiente; Pantalla de diseo

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;

Este procedimiento y mtodo igualmente trabaja con un componente ComboBox. Recordar que todos los componentes visuales analizados hasta ahora, en sus propiedades text o caption, entran y salen puras strings.

Por eso en el programa se uso la funcion IntToStr(variable entera) para cargar una string en el componente LISTBOX. Practicar hasta conseguir tener esta pantalla de salida o de ejecucin, cuando se consiga entonces ya se esta listo para lo siguiente. TAREAS PROGRAMACION BORLAND DELPHI 1.- CONSTRUIR UN PROGRAMA QUE DESPLIEGUE LOS NUMEROS DEL 20 AL 30. 2.- DESPLEGAR LOS ENTEROS ENTRE 30 Y 50 ACOMPAADOS DE SU POTENCIA CUADRADA Y RAIZ CUBICA RESPECTIVA ( OCUPA TRES ListBox o mejor aun, un solo listbox y vayan encadenando las trings temporales con el signo + ). 3.- DESPLEGAR UNA TABLA DE MULTIPLICAR QUE EL USUARIO INDIQUE .

WHILE

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condicin permanezca como verdadera, en el momento en que la condicin se convierte en falsa el ciclo termina. Su formato general es : Cargar o inicializar variable de condicion; while ( condicion ) do begin instrucciones; instruccion de salida de ciclo ; end; programa ejemplo;

var

x:integer;

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.

CONCLUCIONES DE CICLOS

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 .

IF

Es la instruccin condicional mas usada en los diversos lenguajes de programacin, su formato completo y de trabajo en borland delphi es : cargar o asignar la variable de condicin; if condicin Then begin grupo cierto de instrucciones; end else begin grupo falso de instrucciones; end; Primus.- Observar donde van y donde no van los puntos y comas; Secundus.- Si un if no ocupa un grupo falso de instrucciones, entonces no se pone el else, y la llave antes del else si terminara con punto y coma. Programa Ejemplo:

Codigo:

procedure TForm1.Button1Click(Sender: TObject);

var

temp,error:integer;

begin

Val(Edit1.Text,temp,error);

if temp >= 1000 then

begin

Label2.Caption := 'RICO';

end

Else

begin

Label2.Caption := 'POBRE';

end

end;

Corrida:

TAREAS PROGRAMACION BORLAND DELPHI 1.- Capturar un numero cualesquiera e informar si es o no es mayor de 100 2.- Capturar un numero entero cualesquiera e informar si es o no es mltiplo de 4 ( recordar el operador mod(%), analizado en el tema de operadores aritmticos). 3.- Capturar los cinco datos mas importantes de un Empleado, incluyendo el sueldo diario y los das trabajados esto en un panel, desplegarle su cheque semanal en un segundo panel solo si gan mas de $500.00 en la semana, en caso contrario desplegarle un bono de despensa semanal de $150.00 en un tercer panel. 4.- Capturar los datos mas importantes de un estudiante incluyendo tres calificaciones, todo esto en una ventana, una segunda ventana que contiene una boleta de calificaciones es llamada si el estudiante es de la carrera de medicina, en caso contrario una tercera ventana despliega un oficio citando a los padres del estudiante a una platica amistosa con los maestros dela escuela. 5.- Capturar los datos mas importantes de un producto cualesquiera, incluyendo cantidad, precio, etc., desplegar una orden de compra, solo si el producto es de origen nacional, en caso contrario no hacer nada.

CONDICIONES COMPUESTAS

En muchas ocasiones es necesario presentar mas de una condicin para su evaluacin al computador. Por ejemplo que el computador muestre la boleta de un alumno, si este estudia la carrera de medicina y su promedio de calificaciones es mayor de 70. Una condicin compuesta se define como dos o mas condiciones simples unidas por los llamados operadores lgicos. Los operadores lgicos que BORLAND DELPHI reconoce son; OPERADOR SIGNIFICADO AND OR NOT 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 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 casos posibles, la mitad empiezan con Cierto 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 , y se puede

parcial contra la ultima condicin, y ultimo operador, para obtener la evaluacin final. Ejemplo una condicin compuesta de tres condiciones simples, donde el primer operador lgico es el y y el segundo operador lgico es el O, dara la siguiente tabla de verdad. 1cs 'y' 2cs Eva Parcial 'o' 3cs Eva final CCcCc CCcFc CFfCc CFfFf FCfCc FCfFf FFfCc FFfFf TAREAS PROGRAMACION BORLAND DELPHI 1.- Construir un programa que capture un numero cualesquiera e informe si es o no es mayor de 50 y mltiplo de tres. ( solo escribir el mensaje de respuesta de manera muy clara y esto resuelve el problema ) 2.- Construir un programa que indique si un numero es un par positivo. 3.- Capturar los datos de un producto incluyendo su cantidad en existencia, construir un panel que despliegue una orden de compra si la cantidad en existencia del producto es menor que el punto de reorden, o si el origen del producto es nacional. 4.- Construir el programa del ejemplo del empleado, pero construirlo con tres ventanas, la del empleado, la del cheque y la del bono.

CASE

Tambin existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez, en estos casos, o se usan una condicin compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instruccin case; La instruccin case es una instruccin de decisin mltiple, donde el compilador prueba o busca el valor contenido en una variable contra una lista de constantes

ints o chars, cuando el computador encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este ultimo es opcional. El formato de esta instruccin es el siguiente; capturar o asignar variable de condicin; CASE var int o char OF const1: begin instruccin(es); end; const2: begin instruccin(es); end; const3: begin instruccin(es); end; else begin instruccin(es); end END; OBSERVAR donde se usan y donde no se usan los ( : ) y los ( ; ) Mejor un ejemplo practico: Codigo:

procedure TForm1.Button1Click(Sender: TObject);

begin

case Edit1.Text[1] of

'a': begin Label2.Caption := 'AGUILA'; end;

'b','B': begin Label2.Caption := 'BECERRO'; end;

'c': begin Label2.Caption := '5 ' + 'CABALLOS'; end;

else begin Label2.Caption := 'No Hay' end;

end

end;

Corrida:

Recordar que la propiedad Text de cualquier componente, puede usar o accesar cualquier [posicin o carcter] usando los corchetes por ejemplo; si Edit4 = Juan entonces: Label3.Caption = Edit4Text[2]; pasa solo la 'u' al caption Notas: 1.- Solo se puede usar como variable de condicin una variable entera o variable char. 2.- Se esta usando como variable de condicin, solo la primera letra o carcter de la caja de edicin, que es equivalente a una variable char. 3.- Observar que usando corchetes ej. [posicin] en la propiedad Text, se puede referenciar o procesar cualquier carcter dentro del Texto. 4.- Las constantes que estamos buscando y comparando son de tipo char, por eso se deben encerrar entre apstrofes ( '). 5.- Si se quiere resolver el problema de maysculas o minsculas en el teclado, observar que las dos constantes se separan con comas, En particular, instrucciones de tipo case se utilizaban para construir programas de seleccin de mens, donde al usuario se le planteaban dos o tres problemas distintos y el propio usuario seleccionaba cual de ellos quera ejecutarse. TAREAS BORLAND DELPHI 1.- Construir una ventana que contenga el siguiente men

1. conversin de pesos a dlares 2. conversin de libras a kilogramos

3. conversin de kilmetros a millas 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

ARREGLOS TIPO LISTA


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 vectores en lgebra, o arreglos unidimensionales en programacin. 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 procedimientos o eventos del programa. o compartidas por todos los

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. TAREAS PROGRAMACION BORLAND DELPHI 1.- Capturar y desplegar 5 precios de productos cualesquiera, usando dos panel, uno para capturar y uno para desplegar.

2.- Capturar 4 sueldos en un panel, desplegarlos aumentados en un 25% en otro panel. 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.

NARREGLOS TIPO 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

TAREAS PROGRAMACION BORLAND DELPHI 1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE CUATRO PRODUCTOS CUALESQUIERA, QUE SE PRODUCEN EN TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA. 2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES POR VENTAS DURANTE LOS TRES PRIMEROS MESES DEL AO DE CUATRO SUCURSALES DE UNA CADENA DE AUTOREFACCIONES, AGREGAR AL FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR SUCURSAL. 3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS POR TRES VENDEDORES DIFERENTES DE 5 TIPOS DE MUEBLES DE LINEA BLANCA, AGREGAR ADEMAS LISTAS DE COMISIONES TOTALES POR VENDEDORES Y POR TIPO DE MUEBLE Y LISTAS DE COMISIONES PROMEDIO POR VENDEDORES Y POR TIPO DE MUEBLES.

SUGERENCIA; PRIMERO HACER UN BOSQUEJO EN PAPEL DE COMO QUEDARAN LOS CUADROS Y LAS LISTAS EN PANTALLA.

LIST BOX Este componente permite procesar visualmente un conjunto de elementos de tipo string. Este componente hereda muchas de las propiedades y mtodos de TStringList y TStrings, que son las clases bases de las cuales hereda propiedades y metodos, mas algunas propiedades y mtodos propios tales como: 1.-Propiedades; Capacity.- Es la cantidad o tamao del arreglo de apuntadores a los objetos en la lista. Count.- Numero de objetos contenidos actualmente en la lista Items.- Se usa para referenciar o accesar los objetos en la lista. Recordar que las propiedades en un programa, se manejan con el formato nomobjeto.nompropiedad. 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. Como se observa contiene muchas propiedades y grandemente el trabajo con los elementos de una lista. mtodos que facilitan

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: BorderStyle.- Despliega la lista con un marco sencillo o sin marco. Canvas.- Se utiliza para asociar un rea de dibujo o de imagen a un tem de la lista (consultar ayuda de esta propiedad en ListBox puesto que es interesante). Columns.- Define una determinada cantidad de columnas para su despliegue dentro del ListBox. ItemIndex.- Se utiliza para seleccionar la posicin o ndice de un tem o elemento en la lista. Items.- Es la propiedad que mas se ha venido usando, se utiliza para accesar las diversas propiedades y mtodos de las strings en la lista. Sorted.- Se usa para ordenar alfabticamente los elementos ListBox1.Sorted := true; ) Style.- Define diversos o varios estilos o formas de ListBox. Mtodos: Clear.- Elimina todos los elementos a la vez. 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 ; de la lista(

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:

TAREAS PROGRAMAS BORLAND DELPHI 1.- CAPTURAR EN UNA LISTA LOS SUELDOS DE 6 EMPLEADOS Y DESPLEGARLOS EN UNA SEGUNDA LISTA AUMENTADOS EN UN 30% 2.- CAPTURAR EN UNA LISTA LOS PESOS EN KILOGRAMOS DE 6 PERSONAS DESPLEGARLOS EN UNA SEGUNDA LISTA CONVERTIDOS A LIBRAS Y ADEMAS SOLO LOS MAYORES DE 100 LIBRAS. 3.- CAPTURAR EN SUS 4 LISTAS RESPECTIVAS MATRICULA, NOMBRE Y DOS CALIFICACIONES DE 5 ALUMNOS, DESPUES CALCULAR UNA LISTA DE PROMEDIOS DE CALIFICACIONES. 4.- CAPTURAR EN SUS LISTAS RESPECTIVAS NUMEMPLEADO, NOMEMPLEADO, DIAS TRABAJADOS Y SUELDO DIARIO DE 5 EMPLEADOS, DESPLEGAR EN OTRA PANTALLA O PANEL LA NOMINA PERO SOLO DE AQUELLOS EMPLEADOS QUE GANAN MAS DE $300.00 A LA SEMANA.

STRING GREED

Este componente es de los mas importantes, para el procesamiento de muchos datos, permite concentrar, procesar y mostrar gran cantidad de informacin para la vista del usuario. Este componente presenta, manipula y procesa conjuntos de datos de tipo strings en forma tabular, es decir en forma de tablas, matrices, cuadros concentrados, ejemplo; CIA ACME INGRESOS POR VENTAS MENSUALES MILLONES DE PESOS ENE FEB MAR ABR SUC A 1 2 3 4 SUC B 5 6 4 5

SUC C 6 7 8 9 Recordar que son los datos numricos internos quienes se procesan (es decir, se capturan, se realizan operaciones con ellos, se despliegan, etc.), es la informacin externa quien le da sentido. Y RECORDAR QUE SUS INDICES EMPIEZAN EN RENGLON=0 y COLUMNA=0. Algunas de sus propiedades y mtodos mas interesantes son: ColCount.- Determina la cantidad de columnas que contendr la tabla. Recordar que para efectos de programacin, la primera de ellas es la columna 0. RowCount.- Determina la cantidad de renglones que contendr la tabla. Recordar que para efectos de programacin, el primero de ellos es el rengln 0. Fixedcol , Fixedrow.- Determinan la cantidad de columnas y renglones fijos o de encabezado, estas propiedades ponerlas en 0. +Options, goediting = true; Para que permita editar o capturar datos al usuario. +Options, gotab = true; Para que el usuario pueda navegar entre celdas usando la tecla del tabulador. Cells[columna,rengln], Es la propiedad mas importante, porque es la que permite el acceso a cualquier celda de la tabla, ej. StringGrid1.Cells[1,1] := 'PATO'; Edit1.Text=StringGrid1.Cells[0,0]; Las dems propiedades investigarlas en la ayuda del borland delphi . Para procesar todos los elementos de la tabla, solo recordar que se deben usar dos ciclos for uno externo para controlar columnas y uno interno para controlar rengln ( observar que es lo inverso de las tablas o arreglos normales). Ejemplo capturar una tabla de 3 * 4 enteros, y restarles 4 despus; Pantalla de Diseo: (inspector objetos)

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) ENE FEB MARZO TOTALSUC PROMSUC SUC A 1 2 3 6 2 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 capturada.

referencian

columnas,

se

supone

que

la

tabla

//

ya

esta

//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.

CONBO BOX 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 1.- REEDITAR LOS PROBLEMAS YA RESUELTOS, AGREGANDO ESTE COMPONENTE EN LOS CASOS DE CAPTURAS QUE LO PUEDEN ADMITIR ( CAPTURAS DONDE YA SE TIENEN LAS ENTRADAS SELECCIONADAS O CONOCIDAS DE ANTEMANO).

OPERADORES 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 Operacin + * / Div SUMA RESTA MULTIPLICACION DIVISION DIVISION ENTERA

Mod

MODULO O RESIDUO

Como nota importante a recordar siempre; Si se usa el operador DIV en problemas de divisin entre enteros, pascal trunca la parte residual, es decir;

// rea de declaracin de variables

real a;

// rea de operaciones

a := 10 div 4;

// rea de despliegue de resultados

desplegar a; -> En pantalla sale ( 2.000000 )

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

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. 1.- El logaritmo de un producto es igual a la suma de los logaritmos de los factores. Log ( a . m) = log a + log m 2.- El logaritmo de un cociente es igual a la diferencia de los logaritmos de los trminos Log(a:m) = log a - log m 3.-El logaritmo de una potencia es igual al exponente por el logaritmo de la base. Log am = m * Log a 4.- El logaritmo de una raiz es igual al logaritmo del radicando dividido por el ndice de la raz

log

= 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 Alfa = EXP(5 * Ln(3)); Y si se tiene que obtener la raiz de 9 9 en borland delphi sera: Alfa = EXP( 1/2 * Ln(9));