Program Konversi Suhu dengan Pascal

Posted: Desember 2, 2008 in Pascal

Pernah mendengan kata-kata seperti Celcius, Fahrenheit, Reamur dan Kelvin???, mereka bukanlah nama-nama binatang apalagi nama tumbuh-tumbuhan..  he he, tetapi mereka merupakan satuan yang sering digunakan pada temperatur suhu. Jika anda pernah mendengarnya, Pernahkan anda melakukan konversi suhu dari suatu satuan ke satuan lainnya?.

Dalam tulisan ini saya mencoba untuk membuat sebuah program komputer yang dapat digunakan untuk mengkonversi suhu dari satu satuan ke satuan lainnya. Program saya buat menggunakan bahasa Pascal.

Bahasa Pascal merupakan bahasa yang didunia industri kurang banyak dipakai, tapi merupakan bahasa yang sangat banyak digunakan oleh instansi-instansi pendidikan untuk membangun kuda-kuda yang tangguh bagi seorang programmer.

Berikut adalah program Pascal yang saya gunakan untuk memecahkan persoalan konversi suhu. Satuan suhu yang saya libatkan hanya empat yaitu Celcius, Reamur, Fahrenheit dan Kelvin. Sebenarnya banyak satuan untuk temperatur yang dipakai dalam dunia ini, kebetulan cuma empat itu yang pernah saya pelajari dari pelajaran Fisika sewaktu duduk dibangku SMP.

OK.. sekarang masuk kebagian aplikasi, Secara teknis aplikasi akan meminta input Jenis dan Besar Temperatur Suhu yang akan dikonversi, jika jenis input suhu adalah Celcius, maka output program adalah satuan suhu dalam Reamur, Fahrenheit dan Kelvin. Jika jenis suhu adalah Reamur, maka output program adalah suhu dalam Celcius, Fahrenheit dan Kelvin, dst…

Versi Pascal yang saya pakai adalah Pascal versi Windows, tepatnya Pascal 1.5. Jika anda menggunakan Pascal for DOS / Turbo Pascal, silahkan ganti statement Uses WinCrt dengan Uses Crt dan diawal program utama ditambahkan dengan ClrScr.

Program KonversiSuhu;
uses wincrt;
var InpSuhu:real; {C=Celcius, R=Reamur, F=Fahrenheit, K=Kelvin}
    OutC, OutR, OutF, OutK:real;
    JenisSuhu:char;
    InpSuhuString:string; {var penampung input suhu dalam string}
    tempSuhu:real;        {var sementara untuk konver string ke real}
    ErrCode:integer;      {var untuk menampung error saat konversi string ke real}

label 100,200;

{program utama}
begin
     {menu}
     100: {label 100}
     write('Masukan jenis suhu C/R/F/K  : ');
     readln(JenisSuhu);
     JenisSuhu:=upcase(JenisSuhu); {mengubah jenis suhu ke upper case}

     if (JenisSuhu <> 'C') then
        if (JenisSuhu <> 'R' )  then
           if (JenisSuhu <> 'F' ) then
              if (JenisSuhu <> 'K' ) then
              begin
                 writeln ('Jenis suhu salah, silahkan ulangi!');
                 writeln;
                 goto 100;
              end;

     200: {label 200}
     write('Masukan besar suhu          : ');
     readln(InpSuhuString);
     val(InpSuhuString,inpSuhu,ErrCode);
     if ErrCode <> 0 then
     begin
        writeln('Data suhu yang dimasukan tidak valid, masukan data numerik!');
        writeln;
        goto 200;
     end;

     writeln;

     { hitung konversi suhu}

     writeln('Hasil Konversi Suhu, Untuk Suhu ', inpSuhu:6:2,' ',JenisSuhu);
     writeln('--------------------------------------');
     if (JenisSuhu = 'C') then {jika input suhu dalam celcius}
     begin
          OutR:=InpSuhu * 4/5;
          OutF:=(InpSuhu *9/5) + 32;
          OutK:=InpSuhu + 273;

          writeln('Suhu dalam Reamur      = ', OutR:6:2);
          writeln('Suhu dalam Fahrenheit  = ', OutF:6:2);
          writeln('Suhu dalam Kelvin      = ', OutK:6:2);
     end
     else if (JenisSuhu = 'R')  then  {jika input suhu dalam reamur}
     begin
          OutC:=InpSuhu * 5/4;
          OutF:=(InpSuhu * 9/4) + 32;
          OutK:=(InpSuhu * 5/4) + 273;

          writeln('Suhu dalam Celcius     = ', OutC:6:2);
          writeln('Suhu dalam Fahrenheit  = ', OutF:6:2);
          writeln('Suhu dalam Kelvin      = ', OutK:6:2);
     end
     else if (JenisSuhu = 'F') then  {jika input suhu dalam fahrenheit}
     begin
          OutC:=InpSuhu * 5/9;
          OutR:=(InpSuhu * 4/9) + 32;
          OutK:=(InpSuhu * 5/9) + 273;

          writeln('Suhu dalam Celcius     = ', OutC:6:2);
          writeln('Suhu dalam Reamur      = ', OutR:6:2);
          writeln('Suhu dalam Kelvin      = ', OutK:6:2);
     end
     else if (JenisSuhu = 'K') then  {jika input suhu dalam kelvin}
     begin
          OutC:=InpSuhu - 273;
          OutR:=(InpSuhu - 273) * 4/5;
          OutF:=((InpSuhu - 273) * 9/5) + 32;

          writeln('Suhu dalam Celcius     = ', OutC:6:2);
          writeln('Suhu dalam Reamur      = ', OutR:6:2);
          writeln('Suhu dalam Fahrenheit  = ', OutF:6:2);
     end;
     readln;
end. {end program}
About these ads
Komentar
  1. Apocalypse mengatakan:

    bagai mana caranya membuat program yang apabila dimasukkan angka 5 maka akan menghasilkan keluaran sebagai berikut :

    [IMG]http://i406.photobucket.com/albums/pp141/oniapocalypse/untitled.jpg[/IMG]

    dimohon solusinya.

  2. adek mengatakan:

    bagaimana caranya membuat algoritma sebuah bilangan habis dibagi 7?

    mohon pencerahan.

    Trims

    • astawan mengatakan:

      @adek
      kalau maksudnya adalah setiap bilangan yang kita input akan habis dibagi oleh 7, maka kita dapat gunakan fungsi mod, jika hasil dari mod adalah 0 (nol) maka bilangan tersebut habis dibagi oleh angka 7.

      contoh:

      program bagi7;
      uses crt;
      var
         bil : integer;
      
      begin
           clrscr;
           write('Masukan bilangan! ');readln(bil);
           if bil mod 7 = 0 then
              writeln('Bilangan ',bil,' habis dibagi 7')
           else
              writeln('Bilangan ',bil,' tidak habis dibagi 7!');
           readln;
      end.
      
  3. vinkerz mengatakan:

    Mas mu tnya. Klu tempSuhu, tnda , val truz :6:2 tu stu prstu pnya mksd apa dlm program konversi suhu tu?
    D m0hon bgt pnjLzan’a, sya bth skLi inf0 ini..

    • astawan mengatakan:

      6:2 itu untuk memformat data bilangan real,
      misal punya bilangan 20, jika format tidak kita atur maka pascal akan menampilkan bilangan 20 menjadi 2.0000000000E+01.
      Tetapi jika kita format dengan 6:2 (dialokasikan untuk keseluruhan 6 digit, dan 2 digit dibelakang koma), sehinggal 20 menjadi 20.00.
      6:2 -> —-.–

  4. vinkerz mengatakan:

    Mksd’a tanda ..?

  5. vinkerz mengatakan:

    Tanda lebih kecil lebih bzar itu lo?

Berikan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s