Sub Type
Terdapat banyak sub tipe dari variabel, sebagai contoh, sub tipe sub tipe dari Integer berbeda-beda dalam rentang nilai dan ukuran byte yang dibutuhkan untuk menyimpannya dalam memori komputer.
Tabel dibawah ini berisi tipe-tipe interger, rentang nilai masing-masing, dan ukuran byte yang dibutuhkan dalam memori.
Kita dapat mengetahui nilai minimum dan maksimum dari masing-masing tipe dengan menggunakan fungsi Low, High, dan SizeOf. Sebagaimana contoh berikut:
programTypes; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes; begin Writeln('Byte: Size = ', SizeOf(Byte), ', Minimum value = ', Low(Byte), ', Maximum value = ', High(Byte)); Writeln('Integer: Size = ', SizeOf(Integer), ', Minimum value = ', Low(Integer), ', Maximum value = ', High(Integer)); Write('Press enter key to close'); Readln; end.
Percabangan Kondisional
Salah satu hal terpenting yang harus dimiliki peralatan cerdas (seperti komputer, peralatan yang bisa diprogram) adalah bahwa mereka dapat bereaksi dalam kondisi yang berbeda-beda. Hal ini dapat dilakukan dengan menggunakan percabangan kondisional. Sebagai contoh, suatu mobil yang dapat otomatis mengunci pintu ketika kecepatan mobil telah mencapai melebihi 40km/jam. Kondisi dalam kasus ini dapat dituliskan sebagai berikut:if kecepatan>=40 and pintu_belum_dikunci then kunci_pintu;
Mobil, mesin cuci, dan banyak alat listrik lain mengandung rangkaian sirkuit yang bisa diprogram seperti mikrokontroller, atau prosesor mini seperti ARM. Rangkaian sirkuti tersebut diprogram dengan menggunakan bahasa assembly, C, atau Free Pascal sesuai arsitekturnya.
Percabangan Kondisi IF
Statemen kondisi IF dalam bahasa Pascal sangat mudah dan jelas. Pada contoh berikut, kita ingin membuat program yang dapat mengambil keputusan kapan mematikan atau menghidupkan AC sesuai dengan kondisi temperatur ruangan.Program AC
var Temp: Single; begin Write('Please enter Temperature of this room :'); Readln(Temp); if Temp > 22 then Writeln('Please turn on air-condition') else Writeln('Please turn off air-condition'); Write('Press enter key to close'); Readln; end.Pada contoh ini kita diperkenalkan dengan statemen if then else dimana: Jika temperatur lebih besar daripada 22 derajat, maka program akan menampilkan tulisan:
Please turn on air-conditioner
sebaliknya, jika kondisi tidak sesuai (kurang atau sama dengan 22 derajat), maka akan menampilkan tulisan:
Please turn off air-conditioner
Kita juga dapat menggunakan banyak kondisi sekaligus seperti:
Anda dapat melakukan tes pada contoh di atas untuk mengetahui hasilnya.
var Temp: Single; begin Write('Please enter Temperature of this room :'); Readln(Temp); if Temp > 22 then Writeln('Please turn on air-conditioner') else if Temp < 18 then Writeln('Please turn off air-conditioner') else Writeln('Do nothing');
Anda dapat melakuka percobaan dengan mengisikan nilai temperatur yang berbeda-beda untuk mengetahui hasilnya.
Kita dapat membuat percabangan kondisi yang lebih kompleks, untuk meningkatkan kegunaannya:
var Temp: Single; ACIsOn: Byte; begin Write('Please enter Temperature of this room : '); Readln(Temp); Write('Is air conditioner on? if it is (On) write 1,', ' if it is (Off) write 0 : '); Readln(ACIsOn); if(ACIsOn = 1) and(Temp > 22) then Writeln('Do nothing, we still need cooling') else if(ACIsOn = 1) and(Temp < 18) then Writeln('Please turn off air-conditioner') else if(ACIsOn = 0) and(Temp < 18) then Writeln('Do nothing, it is still cold') else if(ACIsOn = 0) and(Temp > 22) then Writeln('Please turn on air-conditioner') else Writeln('Please enter a valid values'); Write('Press enter key to close'); Readln; end.
In the above example, we have used the new keyword (and) which means if the first condition returns
True (ACIsOn = 1), and the second condition returns True (Temp > 22), then execute the Writeln
statement. If one condition or both of them return False, then it will go to the else part.
Pada contoh di atas, kita menggunakan katakunci baru and yang mana ini berarti:
jika kondisi pertama menghasilkan nilai True (ACIsOn = 1), dan kondisi kedua juga menghasilkan nilai True (Temp > 22), maka statemen Writeln akan dijalankan. Jika salah satu atau kedua kondisi menghasilkan nilai False, maka bagian kode lain yang sesuai kondisi akan dijalankan.
Program Weight (berat badan)
Pada contoh kali ini, kita meminta pengguna untuk memasukkan tinggi badannya dalam satuan meter, dan berat badan dalam satuan kilogram. Program akan menghitung berat badan ideal berdasarkan yang dimasukkan, kemudian menampilkan hasilnya.
program Weight; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes, SysUtils { you can add units after this }; var Height: Double; Weight: Double; IdealWeight: Double; begin Write('What is your height in meters (e.g. 1.8 meter) : '); Readln(Height); Write('What is your weight in kilos : '); Readln(Weight); if Height >= 1.4 then IdealWeight:= (Height - 1) * 100 else IdealWeight:= Height * 20; if(Height < 0.4) or(Height > 2.5) or(Weight < 3) or (Weight > 200) then begin Writeln('Invalid values'); Writeln('Please enter proper values'); end else if IdealWeight = Weight then Writeln('Your weight is suitable') else if IdealWeight > Weight then Writeln('You are under weight, you need more ', Format('%.2f', [IdealWeight - Weight]), ' Kilos') else Writeln('You are over weight, you need to lose ', Format('%.2f', [Weight - IdealWeight]), ' Kilos'); Write('Press enter key to close'); Readln; end
Pada contoh ini, kita menggunakan kata kunci baru:
- Double, tipe data ini mirip Single. Keduanya adalah tipe data untuk angka pecahan, tapi Double memiliki presisi pecahan lebih tinggi, membutuhkan 8 byte memori, dimana Single hanya 4 byte.
- Kata lainnya adalah kata kunci Or dimana kita menggunakannya untuk memeriksa apakah salah satu dari dua kondisi terpenuhi apa tidak. Jika salah satu dari dua kondisi terpenuhi, maka baris perintah berikutnya akan jalankan. Sebagai contoh, jika kondisi pertama menghasilkan nilai True (Height<0.4), maka statemen Writeln('Invalid values') akan dijalankan. Jika kondisi pertama menghasilkan nilai False, maka kondisi kedua akan diperiksa, dan demikian seterusnya. Jika seluruh kondisi bernilai False (tidak terpenuhi), maka baris kode yang lain akan dieksekusi.
- Kita menggunakan kata kunci begin end dalam if karena pernyataan if hanya mengeksekusi satu baris kode. Begin end membuat adanya blok baris kode sebagai satu kesatuan yang harus dieksekusi seluruhnya jika kondisi if terpenuhi. Mari kita amati kedua statemen berikut ini:
Writeln('Invalid values'); Writeln('Please enter proper values');yang kemudian dikonversikan menjadi satu statemen menggunakan begin dan end.
if(Height < 0.4) or(Height > 2.5) or(Weight < 3) or (Weight > 200) then begin Writeln('Invalid values'); Writeln('Please enter proper values'); end
Tidak ada komentar:
Posting Komentar