100% encontró este documento útil (1 voto)
46 vistas16 páginas

Estructuras de Control: Ciclo For en Programación

El documento describe diferentes estructuras de control repetitivas como for y while para iterar bucles. También presenta algunos ejemplos de aplicaciones que usan bucles para calcular sumas, funciones recursivas y números abundantes impares.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
46 vistas16 páginas

Estructuras de Control: Ciclo For en Programación

El documento describe diferentes estructuras de control repetitivas como for y while para iterar bucles. También presenta algunos ejemplos de aplicaciones que usan bucles para calcular sumas, funciones recursivas y números abundantes impares.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

Capt.

7
ESTRUCTURAS DE CONTROL REPETITIVAS – For
La sentencia FOR
De todas las instrucciones de ciclos, los lazos for son los más sencillos de utilizar. Estos
siempre requieren el especificar explícitamente el total de iteraciones que el lazo
realizara. For presenta dos formatos:

Incrementos
for Vc:=ValorIni To ValorFin do
sentencias
incrementa el contador después de cada iteración.
Decrementos

For VC:=ValorIni downto ValorFin do


sentencias

decrementa el contador después de cada iteración.


Aquí:
VC: es una variable de control local (contador) de pito ordinal.
ValorIni y Valorfin son compatibles con VC.
Si ValorIni es mayor que ValorFin en una sentencia for … to, o menor que ValorFin en
una sentencia for … downto¸ la secuencia de sentencias nunca es ejecutada.
La sentencia for…to es casi equivalente a esta construcción While:
begin
Con:= ValorIni:
While cont <= ValorFin do
Sentencias
Cont := Succ(cont);
end;
end;
El ciclo for tiene dos limitaciones importantes:

1) El programador debe conocer pon anticipado el numero de veces que se


ejecutara el cuerpo del ciclo.
2) La variable de control, que tal vez no sea real, puede aumentar o disminuir solo
una etapa a la vez

1) Aplicación Suma

1
Desarrolle una aplicación que calcule el valor de la siguiente suma:

Siga estos pasos:

1. Crear una aplicación con formulario


2. En el formulario colocar: 3 etiqueta, 3 cuadros de edición, y 2 botones.
3. Modificar las propiedades de los componentes:

Control Propiedad Valor


Form1 Caption Sumatoria
Position poScreenCenter
Label1 Caption Ingrese n:
Label2 Caption Ingrese x
Label3 Caption Suma:
Edit1 Text ‘‘
Edit2 Text ‘‘
Edit3 Text ‘’
BitBtn1 Kind bkOK
Caption &Calcular
BitBtn2 Caption &Salir
Kind bkClose

Aspecto de la interfaz de usuario:

Asociemos un procedimiento al control Edit1 para el evento OnKeyPress:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);


begin
If key=#13 Then [Link];
If not (key in ['0'..'9',#8]) Then key:=#0
end;

2
Análogamente el código para el evento OnKeyPress del control Edit2 será:

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);


begin
If key=#13 Then [Link];
If not (key in ['0'..'9',',',#8]) Then key:=#0
end;
Asociemos un procedimiento al control BitBtn1 accionado por el evento OnClick. Este
procedimiento calculará el término enésimo, añadiéndole al acumulador S usando una
estructura repetitiva.
procedure TForm1.BitBtn1Click(Sender: TObject);
var n,k:Integer;
s,term,x:Real;
begin
Try
n:=StrToInt([Link]);
x:=StrToFloat([Link]);
s:=0;term:=1;
for k:=0 to n do
begin
term:=term*(-1)*x/(k+2);
s:=s+term
end;
[Link]:=FloatToStr(s);
[Link];
[Link]:=0;
[Link]:=Length([Link]);
Except
on EConvertError do
ShowMessage('El numero es muy grande');
end;
end;

El programa ejecutándose:

3
2) Suma de Potencias y Factoriales
Desarrolle una aplicación que calcule la siguiente suma:

Siga estos pasos:

1. Crear una aplicación con formulario.


2. En el formulario colocar: 2 etiquetas, 2 cuadros de edición, 1 button y 1 botón de
figura.
3. Modificar las propiedades de los componentes:

Control Propiedad Valor


Form1 Caption Sumatoria
Position poScreenCenter
Label1 Caption Ingrese un número:
Label2 Caption Resultado
Edit1 Text ‘‘
Edit2 Text ‘‘
ReadOnly True
Button1 Caption &Calcular
BitBtn1 Caption &Salir
Kind bkClose

Aspecto de la interfaz de usuario:

Asociemos un procedimiento al control Button1 accionado por el evento OnClick. Este


procedimiento ira formando el termino enésimo por divisiones parciales usando una
estructura repetitiva a fin de evitar caer en un error de desbordamiento.
procedure TForm1.Button1Click(Sender: TObject);
var fact,i,n,cont:integer;

4
suma,t:real;
begin
try
n:=StrToInt([Link]);
suma:=0;
for i:=1 to n do
begin
cont:=1;t:=1;
while cont<=i do
begin
t:=t*i/cont;
cont:=cont+1
end;
suma:=suma+t;
end;
[Link]:=FloatToStr(suma);
[Link];
[Link]:=0;
[Link]:=Length([Link])
Except
on EConvertError do
ShowMessage('El Numero es muy grande')
end;
end;
Programa ejecutándose:

3) Términos de una Función Recursiva


Sea una función definida para todos los enteros no negativos por la siguiente definición
recursiva:
F(0) = 1
F(1) = 2
F(n+2) = [F(n)]2.F(n*1) n > -1
Desarrolle una aplicación que pida el número de términos (m) y en base a este
produzca salidas similares a la siguiente (m=4):

5
F(i) S(i)
1 1
2 3
2 5
8 13
Siga estos pasos:

1. Crear una nueva aplicación con formulario.


2. Colocar en el formulario los siguientes componentes: 1 etiqueta, 1 cuadro de
edición, 1 control BitBtn y 1 control StringGrid.
3. Modificar las propiedades de los componentes:

Control Propiedad Valor


Form1 Caption Suma de términos de la recursiva
Label1 Caption Total de términos
Edit1 Text ‘‘
StringGrid Name Rejilla
Heigth 276
Left 2
Top 29
Width 615
BitBtn1 Caption &Salir
Kind bkClose

Aspecto de la interfaz de usuario:

6
En la sección Implementation digite el siguiente código de LimpiarRejilla.

procedure LimpiarRejilla(Rejilla:TStringGrid);
var i,j:byte;
begin
for i:=1 to [Link] do
for j:=1 to [Link] do
[Link][j,i]:=''
end;

Asociemos un procedimiento al formulario accionado por el evento OnCreate. Cuando el


usuario inicie la aplicación, este procedimiento se encargara de modificar la apariencia
de la rejilla.

procedure [Link](Sender: TObject);


var f,c:byte;
begin
[Link]:=WsMaximized;
[Link][0]:=25;
for f:=1 to [Link] do [Link][0,f]:=IntToStr(f);
for c:=1 to [Link] do [Link][c,0]:=Chr(64+c)
end;

Asociemos un procedimiento al control Edit1 para el evento OnKeyPress.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);


var
i,j,n:longint;
ant,act,sig,suma:extended;
begin
if key=#13 then
begin
try
n:=StrToInt([Link]);
if n>=3 then
begin
LimpiarRejilla(Rejilla);
Suma:=3;
[Link][1,1]:=FloatToStr(1);
[Link][2,1]:=FloatToStr(1);
[Link][1,2]:=FloatToStr(2);
[Link][2,2]:=FloatToStr(3);
for i:=3 to n do
begin
ant:=1;act:=2;
for j:=3 to i do
begin

7
sig:=sqr(ant)*act;
ant:=act;
act:=sig
end;
Suma:=Suma+sig;
[Link][1,i]:=FloatToStr(sig);
[Link][2,i]:=FloatToStr(suma)
end;
end;
except
on EOverFlow do
ShowMessage('Error de desbordamiento');
on EConvertError do
ShowMessage('El número es muy grande')
end;
[Link];
[Link]:=0;
[Link]:=Length([Link])
end;
if not (key in ['0'..'9',#8]) then key:=#0
end;

Programa ejecutándose:

4) Abundantes Impares
Un entero n se llama Abundante si es menor que la suma de sus divisores diferentes de
n. Por ejemplo, 12 es abundante, porque 12<1+2+3+4+6. Los números abundantes

8
impares son escasos. Desarrolle una aplicación que encuentre y muestre todos los
números impares menores que una cota ingresada por el usuario (Por ejemplo 10000).

Siga los siguientes pasos,

9
1. Crear una nueva aplicación
2. En el formulario colocar los siguientes componentes: 1 etiqueta, 1 cuadro de
edición, 1 botón figura y Cuadro de Lista.
3. Modificar las propiedades de los componentes:

Control Propiedad Valor


Form1 Caption Listar Abundantes Impares
Label1 Caption Total de términos
Edit1 Text ‘‘
BitBtn Kind bkClose
Caption &Salir

Aspecto de la interfaz de usuario:

Asociemos un procedimiento al control Edit1 para el evento OnKeyPress.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);


var
i,j,sum,n:integer;
begin
if key=#13 then
begin
try
n:=StrToInt([Link]);
[Link];
[Link]:=-11;
for i:=1 to n do
begin

10
sum:=0;
for j:=1 to i-1 do
if (i mod j = 0) then
sum:=sum+j;
if (i<sum) and (i mod 2 = 1) then
[Link](IntToStr(i))
end;
[Link]:=0;
[Link];
[Link]:=0;
[Link]:=Length([Link])
except
on EConvertError do
ShowMessage('El número es muy grande')
end
end;
if not (key in ['0'..'9',#8]) then key:=#0
end;

El programa ejecutándose:

5) Manejo de Listas
Elaborar una aplicación mediante la cual el usuario pueda seleccionar algún elemento de
Cuadro de Lista y trasladarlo a un Segundo Cuadro de Lista. El programa permitirá
trasladar un elemento por vez cuando el botón respectivo o sino al hacer doble clic sobre
el Cuadro de Lista que contiene en ese momento el Item. Asimismo se podrá trasladar
todos los elementos a la vez.

Siga los siguientes pasos:

1. Crear una aplicación con formulario

11
2. En el formulario colocar los siguientes componentes: 2 etiquetas, 2 Cuadros de
Lista, 4 botones y 1 control BitBtn.
3. Modificar las propiedades de los componentes.

Control Propiedad Valor


Form1 Caption Seleccione los campos
Label1 Caption Campos Disponibles
Label2 Caption Campos Seleccionados
Button1 Caption >
Button2 Caption >>
Button3 Caption <
Button4 Caption <<
BitBtn1 Caption &Salir
Kind bkClose

Luego de añadir los controles y modificar las propiedades se debe obtener una interfaz
similar a la de la figura:

Diseñada la interfaz de usuario, asociemos un procedimiento al formulario accionado por


el evento onCreate. Cuando el usuario inicie la aplicación, el cuadro de Lista ListBox1
mostrara los campos de una tabla especifica. Observe que el único botón habilitado es el
control Button2.

procedure [Link](Sender: TObject);


begin
[Link]('Id_Revista');
[Link]('Titulo');
[Link]('Fecha');
[Link]('Numero');
[Link]('Comentario');
[Link]('Portada');

12
[Link]:=false;
[Link]:=false;
[Link]:=false
end;

El método Add añade una cadena al final de la Lista.

Sintaxis:
[Link](Cadena);

Haga doble clic en control ListBox1. Al seleccionar algún elemento de la lista habilitarán
los dos primeros botones. En el controlador de evento que se abre en el Editor de
Código, digite el siguiente segmento

procedure TForm1.ListBox1Click(Sender: TObject);


begin
[Link]:=true;
[Link]:=true
end;

Haga doble clic en el control Button1. Aquí pasaremos el elemento seleccionado en el


Cuadro Lista ListBox1 al control ListBox2, luego lo removeremos de su posición
original. Digite el siguiente procedimiento en el Editor de Código:

procedure TForm1.Button1Click(Sender: TObject);


var indice:byte;
begin
indice:=[Link];
[Link]([Link][indice]);
[Link](indice);
[Link]:=false;
[Link]:=true;
if [Link]=0 then
[Link]:=false
end;

La propiedad ItemIndex retorna el numero ordinal del elemento seleccionado, partiendo


de que el primer elemento de la Lista tiene valor 0. Si no hay elemento seleccionado el
valor es -1.

Sintaxis:
[Link];

La propiedad Strings referencia la cadena en la lista por su posición

Sintaxis:
[Link]:Strings[posición];
13
El método Delete elimina una cadena especifica de la lista

Sintaxis:
[Link](posición);
Haga doble clic en el control ListBox2. Al seleccionar algún elemento de la lista se
habilitaran los dos últimos botones. En el controlador de evento que se abre en el Editor
de Código, digite el siguiente segmento:

procedure TForm1.ListBox2Click(Sender: TObject);


begin
[Link]:=true;
[Link]:=true
end;

Haga doble clic en el control Button3. Aquí pasaremos el elemento seleccionado en el


Cuadro de Lista ListBox2 al control ListBox1, luego lo removeremos de su posición
original. Digite el siguiente procedimiento en el Editor de Código:

procedure TForm1.Button3Click(Sender: TObject);


var indice:byte;
begin
indice:=[Link];
[Link]([Link][indice]);
[Link](indice);
[Link]:=false;
[Link]:=true;
if [Link]=0 then
[Link]:=false
end;

Haga doble clic en el control Button2. En esta sección trasladaremos todos los
elementos del Cuadro de Lista ListBox1 al control ListBox2. Removiéndolos a
continuación del primer control. En el controlador de evento que se abre en Editor de
Código, digite el siguiente segmento:

procedure TForm1.Button2Click(Sender: TObject);


var i,n:byte;
begin
n:=[Link];
for i:=0 to n-1 do
[Link]([Link][i]);
[Link];
[Link]:=false;
[Link]:=false;
[Link]:=true
end;
14
La propiedad Count devuelve el número de cadenas en la Lista.

Sintaxis:
[Link];
El método Clear borra todas las cadenas de la Lista.

Sintaxis:
[Link];

Haga doble clic en el control Button4. En esta sección trasladaremos los elementos del
Cuadro de Lista ListBox2 al control ListBox1, removiéndolos a continuación del
segundo control. En el controlador de evento que se abre en el Editor de Código, digite el
siguiente segmento:

procedure TForm1.Button4Click(Sender: TObject);


var i,n:byte;
begin
n:=[Link];
for i:=0 to n-1 do
[Link]([Link][i]);
[Link];
[Link]:=true;
[Link]:=false;
[Link]:=false
end;

Asociemos un procedimiento al control ListBox1 accionado por el evento DblClick. Este


procedimiento realizara la misma tarea que el evento OnClick del botón Button1. Digite
el siguiente procedimiento en el Editor de Código:

procedure TForm1.ListBox1DblClick(Sender: TObject);


var indice:byte;
begin
indice:=[Link];
[Link]([Link][indice]);
[Link](indice);
[Link]:=false;
[Link]:=true;
if [Link]=0 then
[Link]:=false
end;

Asociemos un procedimiento al control ListBox2 accionado por el evento DblClick. Este


procedimiento realizara la misma tarea que el evento OnClick del botón Button3. Digite
el siguiente procedimiento en el Editor de Código:

15
procedure TForm1.ListBox2DblClick(Sender: TObject);
var indice:byte;
begin
indice:=[Link];
[Link]([Link][indice]);
[Link](indice);
[Link]:=false;
[Link]:=true;
if [Link]=0 then
[Link]:=false
end;

Programa ejecutándose:

16

También podría gustarte