Sunteți pe pagina 1din 6

REPASO 2DO PARCIAL

CICLO FOR
El ciclo for es una sentencia que permite repetir una ms instrucciones un nmero finito
de veces. Su estructura es la siguiente:

for contador:=valor1 to valor2 do

Donde contador, valor1 y valor2 son nmeros enteros


Si contador cambia en forma descendente se debe sustituir la palabra reservada to
por downto
Al igual que en otros comandos, si se quiere ejecutar ms de una instruccin, se
deben agrupar entre Begin y End;

Ejemplo:
Dado un ciclo While para determinar si un nmero X es primo
N:=2;
//Se inicializan los divisores excluyendo al 1
while N<=(X div 2) do //Se buscan divisores hasta la mitad
if (X mod N)=0 then begin //Si se consigue al menos uno ya no es primo y
se rompe el ciclo
resp:=' NO es primo';
break;
end
else
inc(N);

As sera con un for


for N:=2 to (X div 2) do
if (X mod N)=0 then begin
se rompe el ciclo
resp:=' NO es primo';
break;
end;

//Se buscan divisores hasta la mitad


//Si se consigue al menos uno ya no es primo y

Ntese la disminucin en lneas de cdigo al usar el ciclo for.

ARREGLOS VECTORES
Un arreglo vector es un tipo de variable que contiene un nmero finito de elementos bajo
la misma denominacin. Es equivalente a usar una variable X con subndices tales como
X0, X1, X2, Xn.
Para poder usar un arreglo, primero debe ser definido en la seccin de declaracin de tipos
con el siguiente formato:

Type
Nombre = array [constante1 . . constante2] of tipo;
Donde constante1 es menor que constante2 y generalmente igual a 1, ambos son enteros y
tipo corresponde a cualquier tipo de variable ya sea predefinida por el lenguaje definida
por el programador antes de la definicin del arreglo.
Una vez definido el arreglo, se declara una variable que sea del tipo en cuestin, por
ejemplo:

Var
A : Nombre;
Para trabajar con A se debe hacer referencia a cada una de sus posiciones sin salirse del
rango definido en el tipo de variable, por lo que, en este ejemplo, cada vez que aparezca A
deber hacerlo en compaa de un subndice dentro de corchetes, es decir: A[n]. Por esto
ltimo, generalmente, se utiliza un ciclo for para trabajar con arreglos.
Ejemplo:
Ciclo que llena un vector con valores aleatorios
Type
Vector=array [1..100] of byte;
Var
A:Vector; i:byte;
Begin
randomize;
//Procedimiento que inicializa el generador aleatorio
for i:=1 to 5 do //Ntese que no necesariamente se deben usar las 100
posiciones
A[i]:=random(150); //El valor mximo del random es elegido por el
programador y debe ser menor igual que el valor mximo que soporte el
arreglo (en este ejemplo <=255).

End;

MATRICES
Una matriz no es ms que un arreglo de 2 dimensiones, generalmente llamadas filas y
columnas. Para moverse por cada posicin se utilizar, en la mayora de los casos, 2 ciclos
for cuyos valores iniciales y finales dependern de lo que se quiera hacer con la matriz.
Ejemplo:
Ciclos que llenan una matriz con valores aleatorios fila por fila (de 5 x 6)
Type
Matriz=array [1..10,1..20] of byte; //Ntese que las dimensiones no tienen
que ser iguales
Var
M:Matriz; i,j,F,C:byte;
Begin
randomize; F:=5; C:=6; //F y C podran ser ledos por pantalla si as se
requiere
for i:=1 to F do
for j:=1 to C do //Para este for, el valor de i es constante, por lo que se llena
fila por fila
A[i,j]:=random(200);

End;

STRINGGRID
Es un objeto que permite al programa interactuar con el usuario para trabajar con arreglos
y/ matrices. Sus caractersticas y propiedades ms importantes son las siguientes:

Siempre tiene 2 dimensiones, primero la columna y luego la fila. Ambas empiezan


en cero (0)
Para hacer referencia a cada posicin se utiliza la propiedad Cells. Ejm:
StringGrid1.Cells[0,0]:=1; //Esta sera la primera posicin
La cantidad de filas y columnas vienen definidas por las propiedades RowCount y
ColCount respectivamente. Y para fijar alguna de ellas se usan FixedRows y
FixedCols

Ejemplo:
Supongamos que queremos escribir en pantalla la matriz del ejemplo anterior en el objeto
StringGrid1
StringGrid1.RowCount:=F;
StringGrid1.ColCount:=C;
for i:=1 to F do
for j:=1 to C do

StringGrid1.Cells[j-1,i-1]:= A[i,j];

//Vase el intercambio de subndices debido a las caractersticas del StringGrid


PROCEDIMIENTOS
Un procedimiento es la agrupacin de varias instrucciones para un fin especfico. La
principal ventaja de usar procedimientos es que permite optimizar programas al reducir las
lneas de cdigo cuando, las instrucciones que contienen, se usan en ms de una ocasin
dentro del programa. Es equivalente a dividir un programa en varios subprogramas,
tambin conocido como programacin modular.
La estructura general es la siguiente:

Procedure Nombre (Variable(s) de Entrada; var Variable(s) de Salida);


Begin
//Aqu va todo el cdigo
End;
Donde Variable(s) de Entrada (Paso de Parmetros por Valor) y Variable(s) de Salida
(Paso de Parmetros por Variable) corresponden a la declaracin de una ms variables
que permitirn al procedimiento interactuar con el resto del programa, las primeras son
datos de entrada y las ltimas los resultados del cdigo ejecutado.
Ejemplo:
Disear un programa para saber si un nmero dado es o no primo
Procedure Primo(N:byte; var Resp:String);
Var
X:byte;
//Slo se declaran las variables locales del procedimiento
Begin
Resp:= 'SI es primo';
for X:=2 to (N div 2) do //Se buscan divisores hasta la mitad
if (N mod X)=0 then begin
//Si se consigue al menos uno ya no es primo y
se rompe el ciclo
Resp:= 'NO es primo';
break;
end;
End;
//A continuacin el llamado al procedimiento
Procedure TForm1.Button1Click(Sender: TObject);
Var
Numero:byte; Respuesta:String;
Begin
Numero:= strtoint(Edit1.Text);
//Lectura de pantalla
If (Numero>1) then begin

Primo(Numero,Respuesta); //OJO: Las variables no se llaman igual


pero son del mismo tipo
Showmessage(El nmero +inttostr(Numero)+Respuesta);
end; End;

FUNCIONES
Al igual que los procedimientos, una funcin es la agrupacin de varias instrucciones para
un fin especfico. Su caracterstica principal es que ella misma representa un valor (ya sea
numrico, alfanumrico booleano), por lo que, en su interior, aparece su nombre al menos
una vez del lado izquierdo de una asignacin y no lleva paso de variables entre sus
parntesis, es decir, no tiene variables de salida (por lo tanto no aparece la palabra
reservada Var en su encabezado).
La estructura general es la siguiente:

Function Nombre (Variable(s) de Entrada): Tipo de la funcin;


Begin
//Aqu va todo el cdigo
Nombre:=;
End;
Donde Variable(s) de Entrada (Paso de Parmetros por Valor) corresponde a la
declaracin de una ms variables de entrada que permitirn a la funcin ejecutar las
instrucciones que determinarn finalmente su valor.
Ejemplo:
Disear un programa para saber si un nmero dado es o no primo
Function Primo(N:byte):Boolean;
Var
X:byte;
//Slo se declaran las variables locales de la funcin
Begin
Primo:= True;
for X:=2 to (N div 2) do //Se buscan divisores hasta la mitad
if (N mod X)=0 then begin
//Si se consigue al menos uno ya no es primo y
se rompe el ciclo
Primo:= False;
break;
end;
End;
//A continuacin el llamado a la funcin
Procedure TForm1.Button1Click(Sender: TObject);
Var
Numero:byte;

Begin
Numero:= strtoint(Edit1.Text);
//Lectura de pantalla
If (Numero>1) then
If Primo(Numero) then //OJO: El resultado ya es de tipo boolean por
eso se puede usar directamente en el If
Showmessage(El nmero +inttostr(Numero)+ es Primo)
else
Showmessage(El nmero +inttostr(Numero)+ no es Primo);
End;