Sabtu, 13 November 2010

tambahan materi flowchart case of

FLOWCHART CASE…OF…


Pernyataan CASE merupakan alternative dari pernyataan IF untuk masalah dengan pilihan bergada.padaa masalah tertentu, CASE lebih memberikan kejelasan dari pada IF. Namun perlu diketauhi bahwa semua persoalan yang dapat ditangani oleh CASE bisa ditangani oleh IF, tetapi tidak sebaliknya.

BENTUK PERNYATAAN CASE
CASE nilai OF
Daftar_nilai_1 : pernyataan_1;
Daftar_nilai_2 : pernyataan_2;

Daftar_nilai_m : pernyataan_m;
ELSE
Pernyataan_n
END.



BENTUK DIAGRAM UMUM :
 



Pada bentuk diatas nilai dapat berubah ekspresi bertipe ordinal (misalnya char, byte, dan Boolean). Daftar_nilai dapat berupa satu atau beberapa konstanta bertipe ordinal, yang sesuai dengan tipe dari nilai.
Pengujian akan dilakukan dengan mencocokkan nilai dan daftar_nilai. Mulai dari yang teratas. Jika ada suatu pengujian tidak ada yang cocok, daftar_nilai berikutnya akan diperiksa. Jika ada yang cocok, pernyataan yang terletak sesudah tanda : akan dijalankan dan kemudian eksekusi akan dilanjutkan menuju end.
            Bagian else hanya akan dijalankan kalau tidak ada satupun daftar nilai yang cocok.





tambahan materi algoritma for to do

For…to… vs For…do… dan for…downto… vs For…downdo…




Sabtu, 06 November 2010

algoritma for...to...do

For…to… vs For…do… dan for…downto… vs For…

downdo…

Pengulangan dengan menggunakan For, merupakan salah satu teknik pengulangan yang paling tua dalam bahasa pemrograman. For digunakan untuk mengulang statement atau satu blok statement berulang kali sejumlah yang ditentukan. Atau dapat pula dikatakan Struktur perulangan for merupakan struktur untuk meuliskan perulangkan selama dalam kondisi tertentu. Nilai perulangan sudah ditentukan dengan sebuah nilai awal dan nilai akhir. Nilai awal merupakan nilai yang diberikan untuk memulai suatu instruksi yang berada didalam blok tersebut. Perulangan terhadap pernyataan atau instrukti tersebut akan berhenti jika kondisi akhir yang telah disebut terpenuhi.
Hampir semua bahasa pemrograman menyediakan metode ini, meskipun sintaksnya mungkin berbeda. Pada struktur For kita harus tahu terlebih dahulu seberapa banyak badan loop akan diulang. Struktur ini menggunakan sebuah variable yang biasa disebut sebagai loop’s counter, yang nilainya akan naik atau turun selama proses pengulangan.
Sintaks dari statement For dalam bentuk diagram adalah sebagai berikut :
Bentuk Umum :
  1. FOR id := v1 TO v2 DO statement
  2. FOR id := v1 DOWNTO v2 DO statement

Flowchart umum untuk struktur For tampak pada gambar berikut dan perhatikan penggunaan simbol preparation pada flowchart.

Dalam mengeksekusi sebuah pengulangan dengan For ada langkah-langkahnya, urutan langkah-langkahnya adalah sebagai berikut:
  1. Menetapkan nilai counter sama dengan awal.
  2. Memeriksa apakah nilai counter lebih besar dari pada nilai akhir. Jika benar maka keluar dari proses pengulangan. Apabila kenaikan bernilai negatif, maka proses akan memeriksa apakah nilai counter lebih kecil daripada nilai akhir. Jika benar maka keluar dari proses pengulangan.
  3. Mengeksekusi pernyataan yang ada di badan loop.
  4. Menaikkan/menurunkan nilai counter sesuai dengan jumlah yang ditentukan pada argument increment. Apabila argument increment tidak ditetapkan maka secara default nilai counter akan dinaikkan 1.
  5. Ulang kembali mulai langkah no 2.

Satu hal yang penting yang harus kita perhatikan adalah nilai counter selalu ditetapkan diawal dari pengulangan. Apabila kita mencoba merubah nilai akhir pada badan loop, maka tidak akan berdampak pada berapa banyak pengulangan akan dilakukan.
Contoh Algoritma untuk mencetak pernyataan sebanyak 100 kali.
Mungkin kalian pernah ketika masih di sekolah dasar melakukan perbuatan nakal yang membuat kalian disuruh menuliskan pernyataan tertentu sebanyak 100 kali sebagai hukuman atas kenakalan tersebut. Misalkan pernyataan yang harus ditulis adalah “Saya tidak akan mengulangi perbuatan itu lagi”.
Pada contoh ini, kita memerlukan variabel counter, misalkan kita beri nama I. Nilai awalnya adalah 1 dan nilai akhirnya adalah 100. Sedangkan increment atau kenaikan tiap kali pengulangan dari I adalah satu. Perintah untuk mencetak pernyataan akan diulang satu persatu sampai nilai akhir dari counter terpenuhi (100). Flowchart penyelesaian untuk contoh ini dapat dilihat pada berikut.

Pernyataan For…to…do dapat dituliskan dengan sintaks For counter=nilai_awal To nilai_akhir Do aksi/blok aksi dimana nilai_akhir lebih besar dari nilai awal. Untuk pernyataan yang sebaliknya dapat digunakan perintah For..Downto..Do dengan sintaks For counter=nilai_awal downto nilai_akhir do aksi/blok aksi dimana nilai_awal lebih besar dari nilai akhir.
For..to akan menghasilkan nilai incremental atau penambahan satu setiap kali terjadi perulangan. Sedangkan for...do dipergunakan ketika nilai yang akan digunakan sudah diketahui dengan nilai yang ada di dalamnya selalu ditambah atau dikurangi satu ketika mengalami perulangan. Atau dapat pula dikatakan for…do adalah perulangan dengan penghitung (counter). Dalam beberapa sumber juga disebutkan bahwa For do merupakan struktur pengulangan dimana aksi dilakukan sebanyak hitungan pencacah pengulangan. Pencacah pengulangan dapat diset sesuai dengan nilai yang ingin kita mulai. Misalnya for pencacah pengulangan dari x sampai y do
berarti aksi dilakukan sebanyak hitungan pencacah pengulangan, yaitu dari x sampai y sebanyak b-a+1 kali.

Sintaks:
FOR variable := startindex (TO/DOWNTO) endindex DO BEGIN
statement;
END;

Dari sintaks di atas, terdapat dua jenis perubahan yang dapat digunakan, yaitu TO dan DOWNTO. TO akan menghasilkan nilai incremental atau penambahan satu setiap kali terjadi perulangan. Sedangkan DOWNTO akan menghasilkan nilai decremental atau pengurangan satu setiap kali terjadi perulangan.

Contoh penggunaan FOR...DO:

for i:=1 to 10 do begin
write(i,' ');
end;
for j:=10 downto 1 do begin
write(j,' ');
end;


Syntax for .. Do

For NamaVarKendali := Awal to Akhit Do
Pernyataan;
Atau
For NamaVarKendali := Awal to Akhit Do
Begin
Pernyataan1;
Pernyataan2; blok pernyataan
End;
Atau
For NamaVarKendali := Awal Downto Akhit Do
Pernyataan;
Atau
For NamaVarKendali := Awal Downto Akhit Do
Begin
Pernyataan1;
Pernyataan2; blok pernyataan
End;

Statemen/pernyataan atau blok pernyataan akan dikerjakan selama nilai dari NamaVarKendali dari Awal ke Akhir dengan kenaikan/penurunan satu langkah. Jika Awal lebih kecil Akhir kita pakai to, sedangkan jika Awal lebih besar Akhir kita pakai downto.
NamaVarKendali adalah idetifier yang bertype ordinal seperti byte, integer atau char dan tidak dapat bertype string atau real. Berikut adalah program untuk mencetak karakter mulai dari awal sampa akhir dan dari akhir sampai awal, diman awal dan akhir dinputkan dari keyboard. Awal, akhir bertype char.

Program CetakKarakter;
Uses Crt;
Var
Awal, Akhir, Karak : Char;
Begin
Clrscr;
Write('Karakter awal : ');Readln(Awal);
Write('Karakter akhir : ');Readln(Akhir);
writeln;
Write('N A I K : ');
For Karak := Awal to Akhir Do
Write(karak);
Writeln;
Write('T U R U N : ');
For Karak := Akhir downto Awal Do
Write(karak);
Readln
End.

contoh diatas adalah jika statemen yang diulang tunggal, yaitu hanya Write(karak). Cobalah jika awal diisi dengan ‘1’ san akhir diisi dengan ‘z’, apa ourputnya. Cobalah jika write(karak) diganti writeln(karak), apakah ada perubahan, bagaiman penjelasannya. Sering kita temukan bahwa pernyataan yang akan dulang bukan tunggal, tetapi banyak sehingga kita harus memakai blok pernyataan.
Example Algoritma untuk For-do:
Program cetak banyak_Belajar yang rajin oce!
{ mencetak ‘ Belajar yang rajin oce!’ sebanyak 5 kali }
Deklarasi
i : integer ( pencacah pengulangan )
Algoritma
for i <– 1 to 5 do ( ulangi sebanyak 5 kali )
Write ( ‘Belajar yang rajin oce!’ )
endfor
· Output
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!
Belajar yang rajin oce!

Perbedaan for…to… dengan for…downto…
Pernyataan for…to… digunakan untuk pengulangan secara menaik (ascending). Sedangkan for…downto…digunakan untuk pengulangan secara menurun (descending).








fkowchart case...of...

FLOWCHART CASE…OF…

Struktur CASE-OF…ELSE merupakan pengembangan dari struktur CASE-OF dan juga merupakan pengembangan dari standar Pascal. Pada struktur CASE-OF bila tidak ada kondisi yang terpenuhi berarti tidak ada statemen di dalam lingkungan CASE-OF yang diproses. Dengan struktur CASE-OF…ELSE, bila tidak ada kondisi yang terpenuhi, maka statemen yang akan diproses dalam lingkungan CASE-OF adalah statemen yang ada di ELSE.


Contoh program:
Contoh 1:
uses wincrt;
var
Pilihan:byte;
R,L,T,Luas:real;
Begin
R:=0;
L:=0;
T:=0;
ClrScr;
GotoXY(10,2);Writeln(‘–> PILIHAN < --');
GotoXY(10,4);Writeln('1.Menghitung Luas Lingkaran');
GotoXY(10,6);Writeln('2.Menghitung Luas Segitiga');
GotoXY(10,8);Writeln('3.Menghitung Luas Bujur Sangkar');
GotoXY(10,20);Write('Pilih Nomer(1-3)?');Read(pilihan);
ClrScr;
case Pilihan of
1:Begin
Write ('Jari-jari lingkaran?');Readln(R);
Luas:=Pi*R*R;
Writeln('Luas Lingkaran=',Luas:9:2);
End;
2:Begin
Write('Panjang sisi alas?');Readln(L);
Write('Tinggi Segitiga?');Readln(T);
Luas:=0.5*L*T;
Writeln;
Writeln('Luas segitiga=',Luas:9:2);
End;
3:Begin
write('Panjang bujur sangkar?');Readln(T);
Write('Lebar bujur sangkar?');Readln(L);
Luas:=T*L;
Writeln;
Writeln('Luas bujur sangkar=',Luas:9:2);
End;
Else
Begin
Writeln('Pilihannya hanya 1,2,atau3');
Writeln('Anda tadi pilih nomer berapa?......Sembarangan aja milih!!!!!!!');
End;
End;
End.
Hasil eksekusi program adalah:
-->PILIHAN<–
Menghitung Luas Lingkaran
Menghitung Luas Segitiga
Menghitung Luas Bujur-Sangkar

Contoh 2:
program des_hexa;
uses wincrt;
var x,des,hexa: integer;
A,B,C,D,E,F: string;

begin
clrscr;
write('brp des_nya?????');readln(des);
x:=28;
repeat
GOTOXY (X,12);
hexa:= des mod 16;
des := des mod 16;
x:=x-1;
case hexa of
0..9:write(hexa) ;
10:write('A') ;
11:write('B') ;
12:write('C') ;
13:write('D') ;
14:write('E') ;
15:write('F') ;
until des=0;
end.

Contoh 3:
Program Hari;
uses wincrt;
Var
KodeBulan : integer;

Begin
Write ('bingung Menghitung Jumlah Hari ?? Tulislah kode bulannya [1..12] :');
readln(kodebulan);

Case KodeBulan Of
1, 3, 5, 7, 8, 10, 12: Writeln (' Jumlah hari adalah 31');
4,6,9, 11 : Writeln ('Jumlah Hari adalah 30');
2 : Writeln ('Jumlah adalah 28 atau 29, kalo tahun kabisat berarti ya 29 hari.');
end;
end.

Contoh 4:
program Channel_TV;
uses wincrt;

Var
no_ke : Integer;
Saluran_ke : string;

begin
Write ('Masukkan Saluran yang anda pilih ');
readln (no_ke);

Case no_ke of
1: saluran_ke := 'TVRI';
2: saluran_ke := 'TPI';
3: saluran_ke := 'RCTI';
4: saluran_ke := 'SCTV';
5: saluran_ke := 'ANTV';
6: saluran_ke := 'Indosiar';
else
saluran_ke := 'Saluran anda salah, Error Not Responding!! Try Again.. he..he..he';
end;
writeln ('Saluran ke ',no_ke, ' adalah ', saluran_ke);
end.

Contoh 5:
program case1;
uses wincrt;
var nip,nama : string;
pendapatan,pajak : real;
gol : char;
begin
clrscr;
writeln(‘——— DAFTAR PAJAK ———-’);
writeln(‘_________________________________’);
write (‘NIP : ‘);readln(nip);
write (‘Nama Karyawan : ‘);readln(nama);
write (‘Golongan [A,B,C] : ‘);readln(gol);
write (‘Pendapatan : ‘);readln(pendapatan);
case upcase(gol) of
A’ : begin
writeln(‘Golongan ini bebas pajak’);
pajak := 0;
end;
B’ : pajak := 0.1 * pendapatan;
C’ : pajak := 0.2 * pendapatan;
else write(‘Salah melakukan Penginputan data ‘);
end;
writeln(‘Pajak : Rp. ‘,pajak:9:2);
end.

Tampilan saat case Di running

Sedangkan untuk program IF

program if1;
uses wincrt;
var nip,nama : string;
pendapatan,pajak : real;
gol : char;
begin
clrscr;
writeln(‘——— DAFTAR PAJAK ———-’);
writeln(‘_________________________________’);
write (‘NIP : ‘);readln(nip);
write (‘Nama Karyawan : ‘);readln(nama);
write (‘Golongan [A,B,C] : ‘);readln(gol);
write (‘Pendapatan : ‘);readln(pendapatan);
if (gol = ‘A’ )or (gol = ‘a’) then
pajak := 0
else if (gol = ‘B’) or (gol = ‘b’) then
pajak := 0.1 * pendapatan
else if (gol = ‘C’) or (gol = ‘c’) then
pajak := 0.2 * pendapatan
else write(‘Salah melakukan Penginputan data ‘);
writeln(‘Pajak : Rp. ‘,pajak:9:2);
end.