You are on page 1of 4

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Math, StdCtrls;

type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; edtInputTinggi: TEdit; edtTemperaturUdara: TEdit; edtTekananUdara: TEdit; edtKerapatanUdara: TEdit; edtLapisanAtmosfer: TEdit; scbInputTinggi: TScrollBar; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; procedure scbInputTinggiChange(Sender: TObject); procedure edtInputTinggiChange(Sender: TObject); function CekLapisanAtmosfer ( Tinggi : Real ): string; procedure HitungISA (Tinggi : real); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Tekanan : real; Temperatur : real; Kerapatan : real; implementation {$R *.dfm} procedure TForm1.HitungISA (Tinggi : real); var Ti : real; Pi : real; Li : real; Ri : real; Hi : real; R : real; begin

R := 29.271; If (Tinggi >= 0) and (Tinggi < 11000) then begin Ti := 288.15; Pi := 101325; Li := -0.0065; Ri := 1.225; Hi := 0; Temperatur := Ti * (1+Li/Ti * (Tinggi - Hi)); Tekanan := Pi * Power(1+Li/Ti * (Tinggi - Hi), -1/(R*Li)); Kerapatan := Ri * Power(1+Li/Ti * (Tinggi - Hi), -(1+1/(R*Li))); end; If (Tinggi >= 11000) and (Tinggi < 20000) then begin Ti := 216.65; Pi := 22632; Li := 0; Ri := 0.3639; Hi := 11000; Temperatur := Ti; Tekanan := Pi * exp( -(Tinggi - Hi)/(R * Ti)); Kerapatan := Ri * exp( -(Tinggi - Hi)/(R * Ti)); end; If (Tinggi >= 20000)and(Tinggi < 32000) then begin Ti := 216.65; Pi := 5475; Li := 0.0010; Ri := 0.0880; Hi := 20000; Temperatur := Ti * (1+Li/Ti * (Tinggi - Hi)); Tekanan := Pi * Power(1+Li/Ti * (Tinggi - Hi), -1/(R*Li)); Kerapatan := Ri * Power(1+Li/Ti * (Tinggi - Hi), -(1+1/(R*Li))); end; If (Tinggi >= 32000)and(Tinggi < 47000) then begin Ti := 228.65; Pi := 868; Li := 0.0028; Ri := 0.0132; Hi := 32000; Temperatur := Ti * (1+Li/Ti * (Tinggi - Hi)); Tekanan := Pi * Power(1+Li/Ti * (Tinggi - Hi), -1/(R*Li)); Kerapatan := Ri * Power(1+Li/Ti * (Tinggi - Hi), -(1+1/(R*Li))); end; If (Tinggi >= begin Ti := 270.65; Pi := 110.90; Li := 0; Ri := 0.0014; Hi := 47000; Temperatur := Tekanan := Kerapatan := end; 47000)and(Tinggi < 51000) then

Ti; Pi * exp( -(Tinggi - Hi)/(R * Ti)); Ri * exp( -(Tinggi - Hi)/(R * Ti));

If (Tinggi >= 51000)and(Tinggi < 71000) then begin Ti := 270.65; Pi := 66.90; Li := -0.0028; Ri := 0.00084; Hi := 51000; Temperatur := Ti * (1+Li/Ti * (Tinggi - Hi)); Tekanan := Pi * Power(1+Li/Ti * (Tinggi - Hi), -1/(R*Li)); Kerapatan := Ri * Power(1+Li/Ti * (Tinggi - Hi), -(1+1/(R*Li))); end;

If (Tinggi >= 71000)and(Tinggi <= 80000) then begin Ti := 214.65; Pi := 3.95; Li := -0.0020; Ri := 0.00006; Hi := 71000; Temperatur := Ti * (1+Li/Ti * (Tinggi - Hi)); Tekanan := Pi * Power(1+Li/Ti * (Tinggi - Hi), -1/(R*Li)); Kerapatan := Ri * Power(1+Li/Ti * (Tinggi - Hi), -(1+1/(R*Li))); end; //edtTemperaturUdara.Text := FloatToStr(Temperatur); //edtTekananUdara.Text := FloatToStr(Tekanan); //edtKerapatanUdara.Text := FloatToStr(Kerapatan); edtTemperaturUdara.Text := FloatToStrF(Temperatur, ffFixed, 8, 2); edtTekananUdara.Text := FloatToStrF(Tekanan, ffFixed, 8, 2); edtKerapatanUdara.Text := FloatToStrF(Kerapatan, ffFixed, 8, 6); end; function TForm1.CekLapisanAtmosfer(Tinggi : real) : string; var strNama: string; begin If (Tinggi >= 0) and (Tinggi < 11000) then begin strNama := 'Troposphere' ; end; If (Tinggi >= 11000) and (Tinggi < 20000) then begin strNama := 'Stratosphere Bawah' ; end; If (Tinggi >= 20000)and(Tinggi < 32000) then begin strNama := 'Stratosphere Tengah' ; end; If (Tinggi >= 32000)and(Tinggi < 47000) then begin strNama := 'Stratosphere Atas' ; end;

If (Tinggi >= 47000)and(Tinggi < 51000) then begin strNama := 'Stratopause' ; end; If (Tinggi >= 51000)and(Tinggi < 71000) then begin strNama := 'Mesosphere Bawah' ; end; If (Tinggi >= 71000)and(Tinggi <= 80000) then begin strNama := 'Mesosphere Atas' ; end; result := strNama end; procedure TForm1.scbInputTinggiChange(Sender: TObject); var posTinggi : Integer; begin posTinggi := scbInputTinggi.Max - scbInputTinggi.Position; edtInputTinggi.Text := IntToStr (posTinggi); end; procedure TForm1.edtInputTinggiChange(Sender: TObject); var strInputTinggi : string; InputTinggi : real; kodeerror : integer; posTinggi : integer; begin strInputTinggi := edtInputTinggi.Text; // lakukan filtering val(strInputTinggi, InputTinggi, kodeerror); if (kodeerror <>0) then begin ShowMessage('Bisa ngetik teu?, salahna aya di : ' + IntToStr (kodeerror)); end else begin // lakukan perhitungan // InputTinggi := StrToFloat(strInputTinggi); edtLapisanAtmosfer.Text := CekLapisanAtmosfer(InputTinggi); posTinggi := scbInputTinggi.Max - Round(InputTinggi); scbInputTinggi.Position := posTinggi; HitungISA(InputTinggi); end; end; end.

You might also like