Programa numero 1. En este programa se puede visualizar claramente el uso de diferentes tipos de variables y la utilizacion de while , if sucesivos y case-of.
program banco;
var
saldoin,saldoF,montoD,montoR,saldointermedio:real;
operacion:char;
error:boolean;
begin
error:=false;
saldointermedio:=0;
writeln('Ingrese saldo Inicial');
Readln(saldoin);
saldoF:=Saldoin;
writeln('Ingrese D para deposito, R para retiro, F para finalizar');
readln(operacion);
while (operacion <> 'f' ) do
begin
case operacion of
'd','D':
begin
writeln('Ingrese monto de deposito');
readln(montoD);
saldoIntermedio:=saldointermedio+montoD;
writeln('Indique siguiente operacion');
readln(operacion);
end;
'r','R':
begin
writeln('Ingrese monto a retirar');
readln(montoR);
saldointermedio:=saldointermedio-montoR;
if montoR>5000 then
writeln('Superaste el limite de extraccion');
operacion:='f';
error:=true;
if (saldointermedio+saldoin)<0 p="" then=""> begin
writeln('Saldo insuficiente');
operacion:='f';
error:=true;
end
else
begin
writeln('Indique siguiente operacion');
readln(operacion);
end;
end;
end;
end;
saldoF:=saldoin+saldointermedio;
if error then
writeln('Volver a iniciar el programa')
else
writeln('El monto total es: ',saldoF:6:2);
end.
-----------------------------------------------------------------------------------------------------------
Programa numero 2. En este programa se puede visualizar la utilizacion de vectores y matrices (array's). A su vez tambien se hace uso de las funciones (function) y subrutinas (procedure) propias de lenguajes de programacion mas avanzados.
program Ejercicio;
type
TV= array[1..100,1..6] of real;
Vec= array[1..100] of byte;
var
Ma:tv;
Result:Vec;
N,L:byte;
Prom:real;
procedure IngresoD(var Ma:tv; var N:byte);
var
i,j:byte;
begin
writeln('Ingrese Numero de ciudades');
readln(N);
for j:=1 to 6 do
begin
For i:=1 to N do
read(Ma[i,j]);
end;
end;
Function Promedio(Ma:tv; N,J:byte):byte;
var
i,Cont:byte;
calc,prom:real;
begin
calc:=0;
for i:=1 to N do
calc:=calc + Ma[i,j];
Prom:=(calc/N);
cont:=0;
for i:=1 to N do
if Prom > (Ma[i,j]) then
cont:=cont+1;
promedio:=cont;
end;
function Comparacion(Ma:tv; N:byte):byte;
var
Resta,Maximo:real;
NUMCIU,i:byte;
begin
maximo:=0;
for i:=1 to N do
begin
Resta:=Ma[i,1]-Ma[i,6];
if Maximo <= Resta then
begin
Maximo:=Resta;
NUMCIU:=i;
end;
end;
Comparacion:=NUMCIU;
end;
procedure PorEncima(Ma:tv;var Result:Vec; N:byte; Prom:real; var L:byte);
var
i:byte;
begin
L:=1;
for i:=1 to N do
If (Ma[i,6]-Prom)>20 then
begin
Result[L]:=i;
L:=L+1
end;
end;
Procedure LecturaM(Result:Vec; L:byte);
var
i:byte;
begin
for i:=1 to L do
write(Result[i]:10);
end;
begin
IngresoD(Ma,N);
writeln('Para el año 2000, estuvieron ',Promedio(Ma,N,1),' ciudad por debajo del promedio');
Writeln('El numero de ciudad que mas ha disminuido el porcentaje es: ',Comparacion(Ma,N));
Prom:=Promedio(Ma,N,6);
PorEncima(Ma,Result,N,Prom,L);
writeln('Las ciudades que estuvieron un 20% por encima del promedio fueron: ');
LecturaM(Result,L);
end.
0>
---------------------------------------------------------------------------------------------------------
Ejercicio 3. En este ejercicio, a la vez que se usan de manera fluida los vectores tambien se puede apreciar el uso de la escritura por archivo. (Dificil de tratar en pascal, pero de gran utilidad para migrar hacia otros lenguajes mas avanzados).
program DonantesEjercicio;
type
TVDNI=array[1..100] of longint;
TVGS=array[1..100] of string;
TVSX=array[1..100] of char;
TVEd=array[1..100] of byte;
var
VDNI:TVDNI;
VGrupSang:TVGS;
VSexo:TVSX;
VEdad:TVEd;
N:byte;
Ganador:string;
Arch:text;
Procedure Inicializacion(var VDNI:TVDNI; var VGrupSang:TVGS; var VSexo:TVSX; var VEdad:TVEd ; var N:byte);
var
i:byte;
begin
writeln('Ingresar cantidad de donantes de sangre');
readln(N);
for i:=1 to N do
begin
writeln('Ingresar DNI');
readln(VDNI[i]);
writeln('Ingresar Grupo sanguineo');
readln(VGrupSang[i]);
writeln('Ingresar Sexo');
readln(VSexo[i]);
writeln('Ingresar edad');
readln(VEdad[i]);
end;
end;
function MenorGrup(VGrupSang:TVGS; N:byte):string;
var
i,O,A,AB,B,Lugar:byte;
x:string;
VecMin:TVEd;
Min:integer;
begin
O:=0;
A:=0;
AB:=0;
B:=0;
for i:=1 to N do
begin
x:=VGrupSang[i];
case x of
'0','O','o': O:=O+1;
'A','a':A:=A+1;
'AB','ab':AB:=AB+1;
'B','b':B:=B+1;
end;
end;
VecMin[1]:=O;
VecMin[2]:=A;
VecMin[3]:=AB;
VecMin[4]:=B;
Min:=300;
for i:=1 to 4 do
if VecMin[i]
begin
Min:=VecMin[i];
Lugar:=i;
end;
case Lugar of
1:MenorGrup:='O';
2:MenorGrup:='A';
3:MenorGrup:='AB';
4:MenorGrup:='B';
end;
end;
Procedure ArchivoP(N:byte; VGrupSang:TVGS; Ganador:string; VEdad:TVEd; VDNI:TVDNI);
var
i:byte;
begin
rewrite(Arch);
for i:=1 to N do
begin
if (VGrupSang[i]=Ganador) then
begin
if (VEdad[i]>=20) and (VEdad[i]<=25) then
Begin
Write(Arch, VDNI[i]:10,VEdad[i]);
writeln();
end;
end;
end;
close(Arch);
end;
begin
Inicializacion(VDNI,VGrupSang,VSexo,VEdad,N);
Ganador:=MenorGrup(VGrupSang,N);
Assign(Arch,'EJERCICIO.txt');
ArchivoP(N,VGrupSang,Ganador,VEdad,VDNI);
end.
----------------------------------------------------------------
Bueno espero que les haya servido de algo estos programas, si es que llegaron tan abajo jaja.
Es solo una parte de lo mucho que tuve que programar en este lenguaje, pero que no tiene importancia alguna puesto que es solo de aprendizaje.
No hay comentarios:
Publicar un comentario