Upload
albaar-rubhasy
View
223
Download
2
Embed Size (px)
DESCRIPTION
Powerpoint pemrograman basis data & sql mg 5 fasilkom albaar rubhasy
Citation preview
Modul ke:
Fakultas
Program Studi
Struktur Kendali Menggunakan PL/SQLMembuat struktur kendali dengan PL/SQL
Albaar Rubhasy, S.Si., M.T.I.
05
FASILKOM
Sistem Informasi
Outline Perkuliahan
• Struktur Kendali• Kendali Kondisional• Kendali Iteratif• Kendali Sekuensial
Struktur KendaliModul 05: Struktur Kendali Menggunakan PL/SQLMembuat struktur kendali dengan PL/SQL
Teorema Struktur
• Menurut teorema struktur, setiap program komputer dapat ditulis menggunakan struktur kontrol dasar.
• Tiga tipe struktur kontrol dasar:– Pilihan (selection)– Pengulangan (iteration)– Uruta (sequence)
• Ketiga tipe struktur dapat dikombinasikan untuk menangani suatu permasalahan.
Ilustrasi Struktur Kendali Dasar
Perbedaan Ketiga Struktur KendaliSelection (Kendali Kondisional)
Menguji sebuah kondisi kemudian mengeksekusi suatu pernyataan atau yang lainnya, tergantung pada kondisi apakah benar atau salah
Iteration (Kendali Iteratif) Mengeksekusi urutan pernyataan berulang kali selama kondisi masih berlaku
Sequence (Kendali Sekuensial)
Mengeksekusi urutan pernyataan secara berurutan pada saat terjadi
*) Kondisi: variabel atau ekspresi yang mengembalikan nilai Boolean (TRUE atau FALSE)
Kendali KondisionalModul 05: Struktur Kendali Menggunakan PL/SQLMembuat struktur kendali dengan PL/SQL
Kendali Kondisional (IF dan CASE)• Seringkali kendali kondisional dibutuhkan
untuk mengambil tindakan alternatif karena dihadapkan pada suatu situasi.
• Ada dua tipe kendali kondisional:– IF: memungkinkan untuk menjalankan tindakan
berdasarkan nilai kondisinya– CASE: mengevaluasi satu kondisi di antara berbagai
tindakan alternatif
Pernyataan IF
• Ada tiga jenis pernyataan IF:– IF-THEN– IF-THEN-ELSE– IF-THEN-ELSEIF
Pernyataan IF-THEN
• Urutan pernyataan dieksekusi hanya jika kondisi benar.
• Jika kondisi bernilai false atau null, pernyataan IF tidak melakukan apa-apa.
• Kontrol akan selalu diloloskan ke perintah selanjutnya.
Bentuk Umum
IF condition THENsequence_of_statements
END IF;
Contoh Pernyataan IF-THENIF sales > quota THEN
compute_bonus(empid);UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;
Catatan:Penulisan pernyataan IF-THEN dapat diringkas dalam satu baris sepertiIF x > y THEN high := x; END IF;
Pernyataan IF-THEN-ELSE
• Urutan pernyataan dalam klausa ELSE dieksekusi hanya jika kondisi salah atau null.
• Klausa ELSE memastikan urutan pernyataan dieksekusi.
Bentuk Umum
IF condition THEN sequence_of_statements1ELSE sequence_of_statements2END IF;
Contoh Pernyataan IF-THEN-ELSEIF trans_type = 'CR' THEN
UPDATE accounts SET balance = balance + credit WHERE ...
ELSEUPDATE accounts SET balance = balance - debit WHERE ...
END IF;
Contoh Pernyataan IF-THEN-ELSEIF trans_type = 'CR' THEN
UPDATE accounts SET balance = balance + credit WHERE ...
ELSE IF new_balance >= minimum_balance THEN
UPDATE accounts SET balance = balance - debit WHERE ...
ELSE RAISE insufficient_funds; END IF;END IF;
Pernyataan IF-THEN-ELSEIF
• Jika kondisi pertama adalah FALSE atau null, klausa ELSIF menguji kondisi lain.
• Sebuah pernyataan IF dapat memiliki sejumlah klausa ELSIF, klausa ELSE akhir adalah opsional.
• Kondisi dievaluasi satu demi satu dari atas ke bawah. Jika kondisi apapun benar, urutan yang terkait laporan dieksekusi dan kontrol lolos ke pernyataan berikutnya. Jika semua kondisi adalah FALSE atau null, urutan dalam klausa ELSE dieksekusi.
Bentuk Umum
IF condition1 THEN sequence_of_statements1ELSIF condition2 THEN sequence_of_statements2ELSE sequence_of_statements3END IF;
Contoh Pernyataan IF-THEN-ELSEIFBEGIN ... IF sales > 50000 THEN bonus := 1500; ELSIF sales > 35000 THEN bonus := 500; ELSE bonus := 100; END IF;
INSERT INTO payroll VALUES (emp_id, bonus, ...);
END;
Pernyataan CASE
Bentuk Umum
CASE selectorWHEN expression1 THEN sequence_of_statements1;WHEN expression2 THEN sequence_of_statements2;...WHEN expressionN THEN sequence_of_statementsN;[ELSE sequence_of_statementsN+1;]
END CASE;
Pernyataan CASE
• Pernyataan dimulai dengan kata kunci CASE. Setelah itu dilanjutkan dengan selector.
• Selector dapat berupa fungsi atau variabel.• Setelah selector dilanjutkan dengan klausa WHEN yang diuji secara berurutan.
• Nilai dari selector menentukan klausa mana yang akan dieksekusi. Jika nilainya sama dengan ekspresi klausa WHEN, maka klausa tersebut dieksekusi.
Contoh Pernyataan CASE
CASE gradeWHEN 'A' THEN dbms_output.put_line('Excellent');WHEN 'B' THEN dbms_output.put_line('Very Good');WHEN 'C' THEN dbms_output.put_line('Good');WHEN 'D' THEN dbms_output.put_line('Fair');WHEN 'F' THEN dbms_output.put_line('Poor');ELSE dbms_output.put_line('No such grade');
END CASE;
Kendali IteratifModul 05: Struktur Kendali Menggunakan PL/SQLMembuat struktur kendali dengan PL/SQL
Kendali Iteratif (LOOP dan EXIT)• Pernyataan LOOP memungkinkan serangkaian
pernyataan dijalankan secara berulang.• Ada tiga tipe pernyataan LOOP:
– LOOP– WHILE-LOOP– FOR-LOOP
Pernyataan LOOP
• Setiap iterasi LOOP, serangkaian pernyataan dieksekusi.
• Jika proses berikutnya tidak diharapkan atau dimungkinkan, dapat digunakan pernyataan EXIT untuk menyelesaikan LOOP.
• Untuk menyelesaikan LOOP secara kondisional, dapat digunakan pernyataan EXIT-WHEN.
Bentuk Umum
LOOP sequence_of_statementsEND LOOP;
Contoh Pernyataan LOOP
LOOP ... IF credit_rating < 3 THEN ... EXIT; -- exit loop immediately END IF;END LOOP;-- control resumes here
Pernyataan WHILE-LOOP
• Sebelum setiap iterasi dari LOOP, kondisi dievaluasi.• Jika kondisi benar, urutan pernyataan dijalankan,
maka kontrol dilanjutkan di bagian atas LOOP.• Jika kondisi bernilai false atau null, LOOP dilewati dan
kontrol menuju kepada perintah selanjutnya.
Bentuk Umum
WHILE condition LOOP sequence_of_statementsEND LOOP;
Contoh Pernyataan WHILE-LOOP
WHILE total <= 25000 LOOP ... SELECT sal INTO salary FROM emp WHERE ... total := total + salary;END LOOP;
Pernyataan FOR-LOOP
• Rentang dievaluasi ketika FOR-LOOP pertama kali masuk dan tidak pernah dievaluasi.
• Setelah setiap iterasi, LOOP counter bertambah.
• Jika iterasi dimulai dari batas atas ke bawah, maka tambah kata kunci REVERSE. Jika tidak, maka iterasi dari batas bawah ke atas.
Bentuk Umum
FOR counter IN [REVERSE] lower_bound..higher_bound LOOP sequence_of_statementsEND LOOP;
Contoh Pernyataan FOR-LOOPFOR i IN 1..3 LOOP -- assign the values 1,2,3 to i sequence_of_statements -- executes three timesEND LOOP;
Kendali SekuensialModul 05: Struktur Kendali Menggunakan PL/SQLMembuat struktur kendali dengan PL/SQL
Kendali Sekuensial (GOTO dan NULL)• Berbeda dengan pernyataan IF dan LOOP,
pernyataan GOTO dan NULL tidak krusial untuk pemrograman PL/SQL.
• Pernyataan GOTO jarang digunakan. Namun terkadang dapat menyederhanakan logika.
• Pernyataan NULL dapat memperjelas makna dan tindakan dari pernyataan kondisional.
• Terlalu sering menggunakan pernyataan GOTO dapat menghasilkan kode yang kompleks dan tidak terstruktur (spaghetti code) yang sulit untuk dipahami dan diperlihara.
Pernyataan GOTO
• Pernyataan GOTO bercabang ke suatu label tanpa bersyarat.
• Label harus unik dalam lingkup dan harus mendahului pernyataan dieksekusi atau blok PL/SQL.
• Ketika dieksekusi, pernyataan GOTO mentransfer kendali ke pernyataan berlabel atau blok.
Bentuk Umum
BEGIN ... GOTO insert_row; ... <<insert_row>> INSERT INTO emp VALUES ...END;
Pernyataan GOTO
• Pernyataan GOTO bercabang ke suatu label tanpa bersyarat.
• Label harus unik dalam lingkup dan harus mendahului pernyataan dieksekusi atau blok PL/SQL.
• Ketika dieksekusi, pernyataan GOTO mentransfer kendali ke pernyataan berlabel atau blok.
Pernyataan NULL
Bentuk Umum
EXCEPTION WHEN ZERO_DIVIDE THEN ROLLBACK; WHEN VALUE_ERROR THEN INSERT INTO errors VALUES ... COMMIT; WHEN OTHERS THEN NULL;END;
Pernyataan NULL
• Pernyataan NULL tidak melakukan apapun selain kontrol lolos ke pernyataan berikutnya.
• Dalam membangun kondisional, pernyataan NULL memberitahu pembaca bahwa kemungkinan telah dipertimbangkan, tapi tidak ada tindakan yang perlu diambil.
Quiz• Buat program PL/SQL untuk menghitung Pajak
Penghasilan (PPh) Terutang• Rumus : (Penghasilan Tahunan – PTKP)* Tarif Pajak• PTKP:
• Pajak:
Jumlah Tanggungan Tidak Kawin (TK) Kawin (K)
0 24.300.000 26.325.000
1 26.325.000 28.350.000
2 28.350.000 30.375.000
3 30.375.000 32.400.000
Penghasilan Kena Pajak Tarif Pajak
Sampai dengan Rp 50.000.000 5%
Di atas Rp 50.000.000 s.d. Rp 250.000.000 15%
Di atas Rp 250.000.000 s.d. Rp 500.000.000 25%
Di atas Rp 500.000.000 30%
Bonus point bagi yg bisa retrieve data dari database!
Terima KasihAlbaar Rubhasy, S.Si., M.T.I.