1. I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente
GUÍA DE LABORATORIO N° 02
OBJETIVOS:
• Manejo de diferentes controles.
• Programar objetos en diferentes eventos.
• Utilización de variables de memoria.
• Estructuras de control: Decisión, Repetitivas
1.1 CONSIDERACIONES INICIALES
Debe abrir su proyecto de la guía de laboratorio Nº 01, y deberá agregar formularios para las aplicaciones
siguientes:
1.2 CREACIÓN DE LA UNIDAD DE CÓDIGO DELPHI “MÓDULO” FORMULARIO (Calificaciones.pas)
Se pide:
Se pide hallar el promedio y la puntuación de un alumno, según cuatro notas entre 0 y 20 ya que estas representan
las calificaciones de un estudiante del curso de Programación Distribuida y Concurrente.
Promedio Puntuación
19 – 20 A
16 – 18 B
11 – 15 C
06 – 10 D
00 – 05 E
Diseño del formulario:
a) En el formulario inserte los controles necesarios para
obtener la siguiente apariencia:
7 Label
7 Edit
4 UpDown
3 BitBtn
b) Ahora procedemos a establecer la Propiedades a los objetos, principalmente la propiedad (Name):
Objeto Propiedad Valor Asignado
Form1 Name FrmCalificaciones
Edit1 Name edAlumno
Edit2 Name edN1
Edit3 Name edN2
Edit4 Name edN3
Edit5 Name edN4
Edit6 Name edPromedio
Edit7 Name edPuntuacion
UpDown1 Associate edN1
Max 20
Min 0
UpDown2 Associate edN2
Max 20
Min 0
Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac02 (1 de 6)
2. I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente
UpDown3 Associate edN3
Max 20
Min 0
UpDown4 Associate edN4
Max 20
Min 0
Button1 Name btnCalcular
Button2 Name btnNuevo
Button3 Name btnSalir
NOTA: establezca las demás propiedades que usted crea
conveniente.
c) Ahora proceda a escribir el código correspondiente a los objetos necesarios:
Objeto: frmCalificaciones Evento: OnCreate
procedure TfrmCalificaciones.FormCreate(Sender: TObject);
begin
edn1.ReadOnly:=true;
edn2.ReadOnly:=true;
edn3.ReadOnly:=true;
edn4.ReadOnly:=true;
edpromedio.ReadOnly:=true;
edpuntuacion.ReadOnly:=true;
end;
Objeto: edAlumno Evento: OnExit
procedure TfrmCalificaciones.edAlumnoExit(Sender: TObject);
begin
edalumno.Text:=UpperCase(edalumno.text);
end;
Objeto: btnCalcular Evento: OnClick
procedure TfrmCalificaciones.btnCalcularClick(Sender: TObject);
var
n1,n2,n3,n4:integer;
prom:double;
puntos:string;
begin
// Entrada
n1:=strtoint(edn1.text);
n2:=strtoint(edn2.text);
n3:=strtoint(edn3.text);
n4:=strtoint(edn4.text);
// Proceso
prom:=round((n1+n2+n3+n4)/4);
If (prom >=19) And (prom <=20) Then
begin
puntos:= 'A';
end
Else If (prom >= 16) And (prom <= 18) Then
begin
puntos:= 'B';
end
Else If (prom >= 11) And (prom <= 15) Then
begin
puntos:= 'C';
end
Else If (prom >= 6) And (prom <= 10) Then
begin
puntos:= 'D';
end
Else If (prom >= 0) And (prom <= 5) Then
Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac02 (2 de 6)
3. I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente
begin
puntos:= 'E';
end
Else
begin
Showmessage('Error de datos');
End;
//Salida
edpromedio.text:=floattostr(prom);
edpuntuacion.text:=puntos;
end;
Objeto: btnNuevo Evento: OnClick
procedure TfrmCalificaciones.btnNuevoClick(Sender: TObject);
begin
edalumno.clear;
edn1.clear;
edn2.clear;
edn3.clear;
edn4.clear;
edpromedio.clear;
edalumno.SetFocus;
end;
Objeto: btnSalir Evento: Onclick
procedure TfrmCalificaciones.btnSalirClick(Sender: TObject);
begin
close;
end;
1.3 CREACIÓN DE LA UNIDAD DE CÓDIGO DELPHI “MÓDULO” (Empleados.pas)
Se pide:
Desarrollar una aplicación que permita calcular las boletas de pagos de los trabajadores de una constructora. Debe
ingresar el código del trabajador, apellidos, nombres, seleccionar la cargo (Gerente, Administrador, Contador), luego
de seleccionar el cargo deberá mostrar el sueldo respectivo, así mismo deberá preguntar si desea adelanto Si ó No, Si
responde Sí, procederá a ingresar el adelanto respectivo, considerando que éste no debe superar el 25% del Sueldo;
luego denerá seleccionar Categoría (A1, A2, A3), según la categoría selccionada se calculará su bonificación; luego
seleccionar las aportaciones (Fonavi, Imp. Renta), según las aportaciones seleccionadas se calculará el monto
correspondiente; finalizado ello nos deberá calcular el Total Neto a Pagar al trabajador. Para el Sueldo, Bonificación y
aportaciones deberá guiarse de la siguiente tabla:
Cargo Sueldo Categoría Bonificación Aportaciones Retención
Administrador 1600.00 A1 10% Sueldo Fonavi 7% Total Hon.
Gerente 1200.00 A2 15% Sueldo Imp. Renta 10% Total Hon.
Contador 900.00 A3 20% Sueldo
Diseño del formulario:
a) En el formulario inserte los controles necesarios desde el
cuadro de Herramientas de Windows Form para obtener
la siguiente apariencia:
Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac02 (3 de 6)
4. I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente
b) Ahora procedemos a establecer la Propiedad (Name) a los siguientes objetos:
Objeto Propiedad Valor Asignado
Form1 Name FrmEmpleados
Edit1 Name edCodigo
Edit2 Name edApellidos
Edit3 Name edNombres
ComboBox1 Name cboCargo
Edit4 Name edSueldo
Edit5 Name edAdelanto
Edit6 Name edBonificacion
Edit7 Name edHonorarios
Edit8 Name edFonavi
Edit9 Name edRenta
Edit10 Name edNeto
Radiobutton1 Name rbtCatA1
Radiobutton2 Name rbtCatA2
Radiobutton3 Name rbtCatA3
checkBox1 Name chkFonavi
checkBox2 Name chkRenta
Button1 Name btnCalcular
Button2 Name btnNuevo
Button3 Name btnSalir
NOTA: establezca las demás propiedades que usted crea
conveniente.
c) Ahora proceda a escribir el código correspondiente a los objetos necesarios:
Objeto: frmEmpleados Evento: OnCreate
procedure TfrmEmpleados.FormCreate(Sender: TObject);
begin
cbocargo.items.add('Gerente');
cbocargo.items.add('Administrador');
cbocargo.items.add('Contador');
end;
Objeto: cboCargo Evento: Onchange
procedure TfrmEmpleados.cboCargoChange(Sender: TObject);
var
suel:double;
begin
Case cbocargo.itemindex of
0: suel:=1600.00;
1: suel:=1200.00;
2: suel:=900.00;
end;
edsueldo.Text:=floattostr(suel);
If MessageDlg ('¿Solicitará Adelanto?', mtConfirmation ,[mbyes,mbno],0)= mrYes Then
begin
edadelanto.Enabled:=true;
edadelanto.SetFocus;
end
else
begin
edadelanto.Enabled:=false;
end;
end;
Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac02 (4 de 6)
5. I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente
Objeto: edAdelanto Evento: Onchange
procedure TfrmEmpleados.edAdelantoChange(Sender: TObject);
var
max,adel:double;
begin
max:=strtofloat(edsueldo.text) * 0.25;
adel:=strtofloat(edadelanto.Text);
if adel > max then
begin
showmessage('El adelanto no es permitido…');
edadelanto.text:='0';
edadelanto.SetFocus;
end;
end;
Objeto: rbtCatA1 Evento: OnClick
procedure TfrmEmpleados.rbtCatA1Click(Sender: TObject);
begin
edbonificacion.Text := floattostr(strtofloat(edSueldo.Text) * 0.1);
end;
Objeto: rbtCatA2 Evento: Onclick
procedure TfrmEmpleados.rbtCatA2Click(Sender: TObject);
begin
edbonificacion.Text := floattostr(strtofloat(edSueldo.Text) * 0.15);
end;
Objeto: rbtCatA3 Evento: Onclick
procedure TfrmEmpleados.rbtCatA3Click(Sender: TObject);
begin
edbonificacion.Text := floattostr(strtofloat(edSueldo.Text) * 0.2);
end;
Objeto: edBonificacion Evento: OnChange
procedure TfrmEmpleados.edBonificacionChange(Sender: TObject);
begin
edhonorarios.text:=floattostr(strtofloat(edsueldo.Text)+strtofloat(edbonificacion.Text));
end;
Objeto: chkFonavi Evento: Onclick
procedure TfrmEmpleados.chkFonaviClick(Sender: TObject);
begin
if chkfonavi.Checked = true Then
begin
edfonavi.Text:= floattostr(strtofloat(edhonorarios.Text) * 0.07);
end
else
begin
edfonavi.Text:='0';
end;
end;
Objeto: chkRenta Evento: Onclick
procedure TfrmEmpleados.chkRentaClick(Sender: TObject);
begin
if chkrenta.Checked = true Then
begin
edrenta.Text:= floattostr(strtofloat(edhonorarios.Text) * 0.1);
end
else
begin
edrenta.Text:='0';
end;
end;
Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac02 (5 de 6)
6. I.S.T. “F.P.G.V.”
Computación e Informática Programación Distribuida y Concurrente
Objeto: btnCalcular Evento: Onclick
procedure TfrmEmpleados.btnCalcularClick(Sender: TObject);
var
desc:double;
begin
desc:=strtofloat(edadelanto.Text) + strtofloat(edfonavi.Text) + strtofloat(edrenta.Text);
edneto.Text:= floattostr(strtofloat(edhonorarios.Text) - desc);
end;
TAREA ENCARGADA: Desarrolle las siguientes aplicaciones según los siguientes enunciados:
1. Hacer un Programa que permita calcular la propina de un niño, si se toma en cuenta el siguiente cuadro:
Edad condición Propina Comportamiento
2 – 14 Niño 28.50 B(Bueno)100 %
15 – 25 Joven 45.00 R(Regular) 60 %
Más de 26 Adulto 00.00 M (Malo) 12 %
Ejemplo:
Ing. la Edad .................................... : 5
Ing. su Comportamiento .................. : R
El Niño Recibe 17.10 soles de Propina.
2. Desarolle una aplicación el cual nos permita realizar un diagnóstico para un paciente considerando los siguientes
síntomas:
TOS PERSISTENTE
SUDORACIÓN Y TEMPERATURA
CATARRO
De acuerdo a los síntomas que presenta se determionará el diasnóstico considernado que:
Si tiene los tres síntomas entonces el paciente tiene PRINCIPIOS DE TUBERCULSIS.
Si de los tres síntomas solo presente dos entonces tiene CATARRO CRONICO
Si de los tres síntomas sólo presenta uno entonces tiene RESFRIO COMÚN.
Mediante una aplicación se debe mostrar el diagnóstico del paciente.
3. La compañía de teléfonos necesita la siguiente información por cada cliente para emitir su recibo de pago
correspondiente: nombre, dirección, número telefónico y cantidad de llamadas realizadas al mes; para lo cual se
debe considerar que si la cantidad de llamadas no excede a 50, la tarifa por llamada es de S/. 0.50 y si fuera
mayor a 50 pero no exceda a 150, la tarifa por llamada adicional es de S/. 0.30; finalmente si la cantidad de las
llamadas fuera mayor a 150, la tarifa por llamada adicional es de S/. 0.60. Se pide realizar el programa
correspondiente que permita mostrar los datos del cliente, así como el importe a pagar detallando los cálculos
efectuados.
Docente: Lic. José Luis Ponce Segura www.vigilvirtual.com Prac02 (6 de 6)