Algoritma Algoritma adalah urutan langkahlangkah logis penyelesaian masalah

  • Slides: 122
Download presentation
Algoritma • Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis •

Algoritma • Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis • Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah • Urutan logis berarti urutan langkah harus benar, dan langkah-langkah itu sendiri juga harus benar

 • Berasal dari ahli matematikia Arab : • Abu Ja’far Muhammad Ibnu Musa

• Berasal dari ahli matematikia Arab : • Abu Ja’far Muhammad Ibnu Musa Al. Khuwarizmi

Algoritmna merupakan kerangka dasar dari konsep suatu program untuk menyelesaikan masalah. Algoritma tidak terikat

Algoritmna merupakan kerangka dasar dari konsep suatu program untuk menyelesaikan masalah. Algoritma tidak terikat dari suatu bahasa pemrograman manapun atau dengan kata lain bahasa yang digunakan adalah bebas dengan bahasa apapun, baik memakai bahasa Indonesia, bahasa Inggris atau bahasa lainnya.

menerapkan algoritma dalam kehidupan sehari-hari • • Menyapu halaman Mencuci piring Mandi Dan banyak

menerapkan algoritma dalam kehidupan sehari-hari • • Menyapu halaman Mencuci piring Mandi Dan banyak contoh lainnya …

 • Setiap orang punya pola pikir yang berbeda, karena itu akan menghasilkan algoritma

• Setiap orang punya pola pikir yang berbeda, karena itu akan menghasilkan algoritma yang berbeda • Algoritma dikatakan benar apabila dapat memecahkan masalah • Perlu dipertimbangkan masalah efisiensi dalam penyusunan algoritma • Pemilihan rute jalan, misalnya : – Beberapa rute mungkin akan menghasilkan tujuan yang sama – Ada rute yang lebih efisien dibanding rute lainnya – Sebaiknya yang diambil adalah rute terpendek

Penulisan Algoritma : • Algoritma dapat dinotasikan dalam beberapa cara, yaitu: • Dengan untaian

Penulisan Algoritma : • Algoritma dapat dinotasikan dalam beberapa cara, yaitu: • Dengan untaian kalimat deskriptif (natural) – Tapi sering membingungkan (ambiguous) • Dengan pseudocode – Sudah lebih dekat ke bahasa pemrograman, namun sulit dimengerti oleh orang yang tidak mengerti pemrograman • Dengan flowchart – Bagus secara visual akan tetapi repot kalau algoritmanya panjang

FLOWCHART • Flowchart lebih baik dibandingkan pseudocode • Merupakan gambaran dalam bentuk diagram alir

FLOWCHART • Flowchart lebih baik dibandingkan pseudocode • Merupakan gambaran dalam bentuk diagram alir dari algoritma-algoritma dalam suatu program yang menyatakan arah alur program tersebut • Disajikan dalam bentuk grafik/gambar • Dapat membantu programmer maupun orang lain dalam memahami alur program (apa saja input, proses dan output dari program) • Representasi visual, karena itu lebih mudah dipahami • Jumlah simbol yang digunakan sedikit, karena itu lebih sederhana dan lebih mudah dipelajari

Flow Chart • flow chart (diagram alir) – (menggambarkan urutan langkah-langkah kegiatan /program mulai

Flow Chart • flow chart (diagram alir) – (menggambarkan urutan langkah-langkah kegiatan /program mulai dari awal sampai akhir dengan menggunakan simbol atau gambar tertentu. ) • Kegunaan : mendesain dan mempresentasikan program

Lambang Flowchart Terminator (mulai/selesai) Input/output Proses Decision (percabangan) Data Flow (Aliran data) Preparation (pemberian

Lambang Flowchart Terminator (mulai/selesai) Input/output Proses Decision (percabangan) Data Flow (Aliran data) Preparation (pemberian nilai awal suatu variabel) Call (memanggil prosedur/fungsi) Connector (di halaman yg sama Connector ( di halaman lain)

Mulai Inputkan nilai (tugas, uts, uas) NA = 25%tg+25%uts+50%uas NA>60 Lulus Selesai Gagal

Mulai Inputkan nilai (tugas, uts, uas) NA = 25%tg+25%uts+50%uas NA>60 Lulus Selesai Gagal

 • PEmrograman : aktifitas yg dilakukan dengan membat intruksi untuk menyelesaikan permasalahan yg

• PEmrograman : aktifitas yg dilakukan dengan membat intruksi untuk menyelesaikan permasalahan yg dimenegeti oleh komputer • Program : coding, hasil pemrograman • Bahasa Pemrograman : Bahasa program yang digunakan untuk membuat urutan instruksi yg dimengerti oleh komputer. • Pemrograman (programer) : orang yg membuat program komputer.

Algoritma dengan pseudo-code kecil bilangan pertama if ( bilangan kedua < kecil) kecil bilangan

Algoritma dengan pseudo-code kecil bilangan pertama if ( bilangan kedua < kecil) kecil bilangan kedua if ( bilangan ketiga < kecil) kecil bilangan ketiga Ouput(kecil)

Flow chart untuk menentukan bilangan terkecil

Flow chart untuk menentukan bilangan terkecil

Kriteria/ Aspek Penting dari Algoritma 1. Finiteness • Algoritma harus berhenti after a finite

Kriteria/ Aspek Penting dari Algoritma 1. Finiteness • Algoritma harus berhenti after a finite number of steps 2. Definiteness • Setiap langkah harus didefinisikan secara tepat, tidak boleh membingungkan (ambiguous) 3. Input • Sebuah algoritma memiliki nol atau lebih input yang diberikan kepada algoritma sebelum dijalankan 4. Output • Sebuah algoritma memiliki satu atau lebih output, yang biasanya bergantung kepada input 5. Effectiveness • Setiap algoritma diharapkan miliki sifat efektif

beberapa langkah umum dalam pembuatan suatu program yaitu • Mendefinisikan masalah – mendefinisikan permasalahan.

beberapa langkah umum dalam pembuatan suatu program yaitu • Mendefinisikan masalah – mendefinisikan permasalahan. langkah ini harus dilakukan untuk menentukan masalah yang ada serta ditentukan pula input dan output program • Mencari solusinya – Bila untuk mendapatkan solusi harus melalui langkah yang terlalu rumit dapat dilakukan pembagian masalah dalam beberapa modul-modul kecil agar mudah untuk dikerjakan. Lalu modul-modul kecil tersebut digabungkan menjadi satu untuk dapat menentukan solusi. • • • Menentukan algoritma Menulis program Menguji program Mendokumentasikan program Merawat program

TIGA BAGIAN ALGORITMA : • Judul (Header) • Kamus • Algoritma

TIGA BAGIAN ALGORITMA : • Judul (Header) • Kamus • Algoritma

Contoh : JUDUL ( Header) – Program Luas_Kubus { judul algoritma } KAMUS –

Contoh : JUDUL ( Header) – Program Luas_Kubus { judul algoritma } KAMUS – Kamus : • X, Y : integer • Cari : boolean ALGORITMA – Algoritma : • Input (c, d) • If c < d then • e a+b • Else • e a-b • Output( e )

Contoh penulisan kasus algoritma Bahasa natural Pseudo code Program nilai_maksimal Kamus X = nilai

Contoh penulisan kasus algoritma Bahasa natural Pseudo code Program nilai_maksimal Kamus X = nilai pertama Y = nilai kedua Hasil = hasil perbandingan Algoritma Program Nilai_maksimal Kamus hasil, x, y : integer Algoritma input(x, y) if x > y then hasil x else hasil y output(hasil) a. Masukkan Nilai x dan y b. Jika x lebih besar dari y, nilai terbesar adalah x jika tidak maka nilai terbesar adalah nilai y c. Cetak hasil nilai yg terbesar

TIPE DATA, OPERATOR DAN EKSPRESI Program Komputer memanipulasi data (variabel dan konstanta) di dalam

TIPE DATA, OPERATOR DAN EKSPRESI Program Komputer memanipulasi data (variabel dan konstanta) di dalam memori. • TIPE DATA : – Untuk menyatakan tipe data dari sebuah variabel (peubah) pada Deklarasi. • OPERATOR : – Menspesifikasikan operasi apa yang dapat dilakukan terhadap peubah (variabel) dan konstanta. • EKSPRESI : – Mengkombinasikan peubah-peubah dan konstanta untuk menghasilkan hasil baru.

TIPE DATA 1. TIPE DATA DASAR : – Tipe yang dapat langsung dipakai. 2.

TIPE DATA 1. TIPE DATA DASAR : – Tipe yang dapat langsung dipakai. 2. TIPE DATA BENTUKAN : – Tipe dasar atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya.

1. TIPE DATA DASAR • Dalam pemrograman, yang termasuk ke dalam tipe dasar adalah

1. TIPE DATA DASAR • Dalam pemrograman, yang termasuk ke dalam tipe dasar adalah : Bilangan lojik, bilangan bulat, karakter, bilangan riil, dan string • Bilangan lojik, bilangan bulat, dan karakter disebut juga dengan TIPE ORDINAL (nilainya ada dalam urutan).

BILANGAN LOJIK • NAMA TIPE : – Boolean • RANAH NILAI : – Dua

BILANGAN LOJIK • NAMA TIPE : – Boolean • RANAH NILAI : – Dua buah nilai : Benar (true) dan Salah (false) – bilangan logik : benar 1, salah 0 • KONSTANTA : – True dan False • OPERASI : – Operasi Logika atau operasi boolean – Operasi logika menghasilkan nilai : true atau false – Operator logika : AND, OR dan XOR

BILANGAN LOJIK - next a b not a a and b a or b

BILANGAN LOJIK - next a b not a a and b a or b a xor b True False True False True False True False false True false False

BILANGAN LOJIK - next • Contoh operasi logika : • Misalkan X, Y, dan

BILANGAN LOJIK - next • Contoh operasi logika : • Misalkan X, Y, dan Z adalah peubah (variabel) bertipe boolean. • Dimana : – X bernilai true, Y bernilai false, dan Z bernilai true • Maka : operasi logika hasil ---------------------( x and y) or z true A and ( y or z) true Not (x and z) false (y xor z) and y false

BILANGAN BULAT • Bilangan yang tidak mengandung pecahan desimal, misal : 34, 8, 0,

BILANGAN BULAT • Bilangan yang tidak mengandung pecahan desimal, misal : 34, 8, 0, -17, 45678901, dsb • NAMA TIPE : – Integer • RANAH NILAI : – tipe Rentang nilai Byte 0. . 255 Shortint -128. . 127 Word 0. . 65535 Integer -32768. . 32767 Longint -2147483648. . 2147483647 Format 8 bit 16 bit 32 bit

BILANGAN BULAT - next • Contoh ; • deklarasi : • X : byte

BILANGAN BULAT - next • Contoh ; • deklarasi : • X : byte • Y : integer • Maka : – Peubah X tidak dapat dioperasikan untuk nilai di atas 255 – Peubah Y tidak dapat dioperasikan untuk nilai di atas 32767

Contoh program Program salahtipe; Uses wincrt; Var a, b, x : short. Int; Begin

Contoh program Program salahtipe; Uses wincrt; Var a, b, x : short. Int; Begin a: =10; b: =20; X: =a*b; {x akan bernilai -56, bukan 200} Writeln(‘Nilai x=‘, x); End.

BILANGAN BULAT - next • KONSTANTA : – Harus ditulis tanpa mengandung titik desimal

BILANGAN BULAT - next • KONSTANTA : – Harus ditulis tanpa mengandung titik desimal : – Contoh : 78, -14, 7654, 0, 5, 9999, dsb • OPERASI : 1. Operasi aritmetika : + (tambah) (kurang) * (kali) Div (hasil bagi bilangan bulat) Mod (sisa hasil bagi) Contoh : 3 + 10 hasil : 13 10 DIV 3 hasil : 3 10 MOD 3 hasil : 1

BILANGAN BULAT - next 2. Operasi Perbandingan : • Menghasilkan nilai boolean (true dan

BILANGAN BULAT - next 2. Operasi Perbandingan : • Menghasilkan nilai boolean (true dan false) < ≤ > ≥ = ≠ Lebih kecil atau sama dengan Lebih besar atau sama dengan Sama dengan Tidak sama dengan

Contoh : operasi perbandingan 3<8 True 74 > 101 False 17 = 17 True

Contoh : operasi perbandingan 3<8 True 74 > 101 False 17 = 17 True (24 div 3) ≠ 8 false

BILANGAN RIIL • Bilangan yang mengandung pecahan desimal : 3. 65, 0. 003, 29.

BILANGAN RIIL • Bilangan yang mengandung pecahan desimal : 3. 65, 0. 003, 29. 0, . 24, dll • NAMA TIPE : – Real • RANAH NILAI : tipe Real Single Double extended Rentang nilai 2. 9 x 10 -39. . 1. 7 x 1038 1. 5 x 10 -45. . 3. 4 x 1038 5. 0 x 10 -324. . 1. 7 x 10308 3. 4 x 10 -4932. . 1. 1 x 104932 Format 6 byte 4 byte 8 byte 10 byte

BILANGAN RIIL - next • KONSTANTA : harus ditulis dengan tanda titik desimal contoh

BILANGAN RIIL - next • KONSTANTA : harus ditulis dengan tanda titik desimal contoh : 0. 78, -14. 2376, 0. 0, . 5, 99. 0 • OPERASI : 1. operasi Aritmetika + (tambah, -(kurang), *(kali), / (bagi) Contoh: 6. 4 + 5. 7 hasil : 12. 1 8. 0 – 2. 8 hasil: 5. 2 10/2. 5 hasil: 4. 0 (operasi bilangan campuran) 7. 2 * 0. 5 hasil : 3. 6

BILANGAN RIIL - next 2. Operasi Perbandingan : menghasilkan nilai boolean (true dan false)

BILANGAN RIIL - next 2. Operasi Perbandingan : menghasilkan nilai boolean (true dan false) < ≤ Lebih kecil atau sama dengan > ≥ Lebih besar atau sama dengan ≠ Tidak sama dengan Tipe bilangan riil tidak mengenal operator kesamaan (=), karena bilangan riil tidak bisa disajikan secara tepat oleh komputer, Misal : 1/3 tidak sama dengan 0. 33333, sebab 1/3 = 0. 33333…(dg angka 3 yg tidak pernah berhenti).

KARAKTER • Semua huruf-huruf abjad, semua tanda baca, karakter khusus, karakter kosong (null) ‘’.

KARAKTER • Semua huruf-huruf abjad, semua tanda baca, karakter khusus, karakter kosong (null) ‘’. • NAMA TIPE : – Char • RANAH NILAI : – Adalah semua huruf di dalam alfabet (‘a’. . ’z’, ‘A’. . ’Z’, angka desimal (‘ 0’. . ’ 9’), tanda baca(‘. ’, ’: ’, ’!’, dll), operator aritmetika(‘+’, ’-’, dll), karakter khusus(‘$’, ’#’, ’@’, dll) • KONSTANTA : – Karakter harus diapit oleh tanda petik tunggal. • Contoh : ‘h’, ‘y’, ‘ ‘, ‘ 9’, ‘$’

KARAKTER - next • OPERASI : – Hanya Operasi Perbandingan : < Lebih kecil

KARAKTER - next • OPERASI : – Hanya Operasi Perbandingan : < Lebih kecil ≤ Lebih kecil atau sama dengan > Lebih besar ≥ Lebih besar atau sama dengan = Sama dengan ≠ Tidak sama dengan Contoh : ‘a’ = ‘a’ hasil: true ‘T’ = ‘t’ hasil: false ‘y’ ≠ ‘y’ hasil: false ‘m’ < ‘z’ hasil: true ‘q’ > ‘z’ hasil : false

STRING • Adalah untaian karakter dengan panjang tertentu. • NAMA TIPE : – String

STRING • Adalah untaian karakter dengan panjang tertentu. • NAMA TIPE : – String • RANAH NILAI : – Deretan karakter yg telah didefinisikan pada ranah karakter. • KONSTANTA : – Semua konstanta string harus diapit oleh tanda petik tunggal. Contoh: ‘BANDUNG’, ‘ganesha’, ‘Jl. Pahlawan no. 76’, ‘…………………’, ‘k 768532’, dll.

STRING - next • OPERASI : 1. Operasi Penyambungan (Concatenation): – Operator : +

STRING - next • OPERASI : 1. Operasi Penyambungan (Concatenation): – Operator : + (penyambungan, bukan tambah) Contoh : ‘Teknik’ + ‘Informatika’ hasil : ‘Teknik Informatika’ ‘aaa’ + ‘ bbb’ hasil: ‘aaa bbb’ ‘ 1’ + ‘ 2’ hasil: ’ 12’ 2. Operasi Perbandingan :

STRING - next 2. Operasi Perbandingan menghasilkan nilai boolean (true dan false) < ≤

STRING - next 2. Operasi Perbandingan menghasilkan nilai boolean (true dan false) < ≤ > ≥ Lebih kecil atau sama dengan Lebih besar atau sama dengan = ≠ Sama dengan Tidak sama dengan Contoh: ‘abcd’ = ‘abc’ hasil: false ‘aku’ < ‘AKU’ hasil: true

Syarat penamaan (variabel, konstanta, nama type bentukan, nama field, nama fungsi, nama prosedur) •

Syarat penamaan (variabel, konstanta, nama type bentukan, nama field, nama fungsi, nama prosedur) • Harus unik (tidak boleh dua buah nama yang sama) • Harus dimulai dengan huruf alfabet (tidak boleh dimulai dg angka, spasi, atau karakter khusus lainnya) • Huruf besar dan huruf kecil tidak dibedakan • Karakter penyusun nama hanya boleh huruf alfabet, angka, dan ‘_’ (underscore) • Tidak boleh mengandung operator aritmetika, relasional, tanda banca, dan karakter khusus lainnya • Karakter tidak boleh dipisah dengan spasi • Panjang nama tidak dibatasi

Contoh penamaan NAMA Contoh yg salah Contoh yg benar 6 titik Nilai ujian PT-1

Contoh penamaan NAMA Contoh yg salah Contoh yg benar 6 titik Nilai ujian PT-1 Hari! A 1 Titik 6 atau titik_6 Nilai. Ujian atau Nilai_ujian PT_1 atau PT 1 Hari A 1

Yg diberi nama dalam Algoritma : 1. Peubah (variable) : Tempat menyimpan nilai yg

Yg diberi nama dalam Algoritma : 1. Peubah (variable) : Tempat menyimpan nilai yg isinya dapat diubah Contoh: X, nilai_ujian, jumlah : real k : integer 2. Konstanta (constant) Tempat penyimpanan di dalam memori yg nilainya tetap selama pelaksanaan program dan. Notasi yg digunakan adalah const Contoh ; const phi = 3. 14, Nmaks = 100, sandi = ‘xyz’, dll

Yg diberi nama dalam Algoritma -next: 3. Tipe Bentukan : Nama tipe bentukan diberikan

Yg diberi nama dalam Algoritma -next: 3. Tipe Bentukan : Nama tipe bentukan diberikan oleh pemrogram contoh: Type titik : record <x: real, y : real> Type Jam : record < hh : integer {0. . 23} mm : integer {0. . 59} ss : integer {0. . 59} > P : titik J 1, J 2 : Jam Titik dan Jam adalah nama tipe, sedangkan P adalah variabel yg bertipe Titik, J 1 dan J 2 adalah variabel yg bertipe Jam

Yg diberi nama dalam Algoritma -next: 4. Nama Fungsi : Function Maksimum (input A,

Yg diberi nama dalam Algoritma -next: 4. Nama Fungsi : Function Maksimum (input A, B : integer) integer { mengembalikan nilai terbesar antara A dan B} Maksimum adalah nama fungsi 5. Nama prosedur : Procedure Tukar(input/output A, B : integer) { mempertukarkan nilai A dan B} Tukar adalah nama prosedur

NILAI dalam Algoritma • Nilai adalah besaran dari tipe data yang terdefinisi (tipe dasar

NILAI dalam Algoritma • Nilai adalah besaran dari tipe data yang terdefinisi (tipe dasar atau tipe bentukan) • Dapat berupa data yg disimpan di dalam peubah atau konstanta, nilai dari hasil hitung, atau nilai yg dikirim oleh fungsi • Pada ALgoritma, memanipulasi nilai di dalam peubah/variabel (yg bertipe sama)

Pengisian NIlai ke dalam Peubah (Variable): 1. Pengisian secara langsung (assignment): Mengisi sebuah nilai

Pengisian NIlai ke dalam Peubah (Variable): 1. Pengisian secara langsung (assignment): Mengisi sebuah nilai ke dalam peubah secara langsung (nilai yg diisikan harus bertipe sama dg tipe peubah) contoh : M 16 P M*2 M P + 100 P P+M 2. Pembacaan : Nilai peubah dapat diisi secara eksternal dafri piranti masukan, misalnya dari keyboard, dari file, mouse, dsb. Akan membaca sesuai apa yg kita masukkan (inputkan). Contoh : Read (M) : komputer membaca nilai M yg diinputkan dari luar (mis: keyboard), jika nilai yg diketik adalah 78, maka lokasi memori yg bernama M sekarang berisi 78

EKSPRESI • Transformasi nilai menjadi keluaran dilakukan melalui sutu perhitungan (komputasi) • Cara perhitungan

EKSPRESI • Transformasi nilai menjadi keluaran dilakukan melalui sutu perhitungan (komputasi) • Cara perhitungan itu dinyatakan dalam suatu ekspresi • Ekspresi terdiri atas : OPERAND dan OPERATOR

Tiga macam ekspresi : 1. Ekspresi Aritmetik (operator aritmetik): Contoh : a*b, a*b/c, a

Tiga macam ekspresi : 1. Ekspresi Aritmetik (operator aritmetik): Contoh : a*b, a*b/c, a div b * c, a+b*c : d a*b (tipe data d harus sama dengan hasil hitungan ekspresi a*b) 2. Ekspresi Relasional (operator relasional): Contoh : not ada, ada or ketemu, x < 5, ada or (x=y), dll. 3. Ekspresi String (operator penyambungan (+)) Contoh : ‘Jl. Ganesa’ + ‘No. 12’

Jenis Proses Algoritma • Algoritma berisi langkah 2 penyelesaian suatu masalah (berurut, pemilihan, pengulangan

Jenis Proses Algoritma • Algoritma berisi langkah 2 penyelesaian suatu masalah (berurut, pemilihan, pengulangan aksi) Konstruksi Algoritma : • Runtunan (sequence process) • Pemilihan (selection process) • Pengulangan (repetition process)

Runtunan (sequence process) • • Terdiri dari satu atau lebih pernyataan Tiap pernyataan dikerjakan

Runtunan (sequence process) • • Terdiri dari satu atau lebih pernyataan Tiap pernyataan dikerjakan secara berurutan sesuai dg urutan penulisannya (sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan) Bentuk umum : proses 1 proses 2 proses 3 … Contoh: mempertukarkan dua nilai dari dua buah variabel (peubah) A dan B. Algoritma : 1. isikan nilai A ke dalam C 2. isikan nilai B ke dalam A 3. isikan nilai C ke dalam B Hasil akhir : varibel A berisi nilai dari varibale B, dan variabel B berisi nilai dari variabel A.

Pemilihan (selection process) • Sebuah aksi dikerjakan jika kondisi tertentu dipenuhi (True) dan apabila

Pemilihan (selection process) • Sebuah aksi dikerjakan jika kondisi tertentu dipenuhi (True) dan apabila suatu kondisi tidak terpenuhi (false) maka program akan melakukan aksi lain (jika ada) atau langsung keluar dari blok pemilihan. Contoh: jika lampu traffic light berwarna merah, maka berhenti • Dalam Algoritma dan pemrograman Struktur pemilihan dapat didefinisikan dengan dua cara yaitu menggunakan statemen IF atau CASE.

Struktur IF • Statemen IF akan diikuti oleh ekspresi (sebagai kondsi yang diperiksa) dan

Struktur IF • Statemen IF akan diikuti oleh ekspresi (sebagai kondsi yang diperiksa) dan selalu berpasangan dengan kata kunci THEN. Bentuk umum dari selection process : IF if kondisi then aksi

Pemilihan (selection process)-IF-next • Struktur pemilihan If-then : hanya memberikan satu pilihan aksi •

Pemilihan (selection process)-IF-next • Struktur pemilihan If-then : hanya memberikan satu pilihan aksi • Struktur pemilihan If-then-else – Memilih satu dari dua buah aksi bergantung pada nilai kondisinya. bentuk umum : if kondisi then aksi 1 else aksi 2 Contoh : if x > y then tulis x sebagai bilangan terbesar else tulis y sebagai bilangan terbesar

Algoritma Pemilihan satu Aksi (IF-THEN) Contoh: Mencetak “genap” jika data masukan adalah bilangan genap.

Algoritma Pemilihan satu Aksi (IF-THEN) Contoh: Mencetak “genap” jika data masukan adalah bilangan genap. Notasi Algoritma : Program Genap {mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap} Kamus x : integer Algoritma Read (x) If x mod 2 = 0 then write(‘genap’) endif

Algoritma Pemilihan dua aksi (IF-THEN-ELSE) Contoh: Mencetak “genap” jika data masukan adalah bilangan genap

Algoritma Pemilihan dua aksi (IF-THEN-ELSE) Contoh: Mencetak “genap” jika data masukan adalah bilangan genap atau mencetak “ganjil” jika data masukan adalah bilangan ganjil. Notasi Algoritma : Program Genap {mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap dan mencetak “bilangan ganjil jika sebuah bilangan bulat yang dibaca merupakan bilangan ganjil} Kamus x : integer Algoritma Read (x) If x mod 2 = 0 then write(‘genap’) Else write(‘ganjil’) endif

Pemilihan (selection process)-Nested-IF • Struktur pemilihan bersarang (nested-if) : – terdapat strktur IF didalam

Pemilihan (selection process)-Nested-IF • Struktur pemilihan bersarang (nested-if) : – terdapat strktur IF didalam IF lainnya – Aksi yang dilakukan lebih dari 2 buah Bentuk umum : if kondisi 1 then aksi 1 else if kondisi 2 then aksi 2 else aksi-alternatif Contoh : if x > y then if x > z then tulis x sebagai bilangan terbesar else tulis z sebagai bilangan terbesar else if y > z then tulis y sebagai bilangan terbesar else tulis z sebagai bilangan terbesar

Tiga aksi atau lebih (Nested-IF) • Tiga kasus : • Empat kasus : Notasi

Tiga aksi atau lebih (Nested-IF) • Tiga kasus : • Empat kasus : Notasi algoritma : If kondisi 1 then aksi 1 Else if kondisi 2 then aksi 2 else if kondisi 3 then aksi 3 endif If kondisi 1 then aksi 1 Else if kondisi 2 then aksi 2 else if kondisi 3 then aksi 3 else if kondisi 4 then aksi 4 endif

Algoritma Pemilihan tiga aksi atau lebih (Nested-IF) Contoh: Menentukan bilangan positif, negatif atau nol

Algoritma Pemilihan tiga aksi atau lebih (Nested-IF) Contoh: Menentukan bilangan positif, negatif atau nol dari sebuah bilangan bulat yang diinput dari piranti masukan. Notasi Algoritma : Program Jenis. Bilangan. Bulat {menentukanapakah sebuah bilangan bulat merupakan bilangan positif, negatif, atau nol } Kamus x : integer Algoritma Read (x) If x > 0 then write(‘positif’) Else if x < 0 then write(‘negatif’) else if x = 0 then write(‘nol’) endif

Tugas • Buat Notasi Algoritma untuk statemen pemilihan 4 kasus. • Transformasikanlah Algoritma di

Tugas • Buat Notasi Algoritma untuk statemen pemilihan 4 kasus. • Transformasikanlah Algoritma di atas ke dalam bahasa Pascal

kelebihan struktur/jenis proses pemilihan • kemampuannya yg memungkinkan pemroses mengikuti jalur aksi yg berbeda

kelebihan struktur/jenis proses pemilihan • kemampuannya yg memungkinkan pemroses mengikuti jalur aksi yg berbeda berdasarkan kondisi yg ada • Memungkinkan menulis algoritma untuk permasalah praktis yg demikian kompleks.

Struktur CASE Konstruksi CASE dapat menyederhanakan IF THEN ELSE yang bertingkat (lebih dari 2

Struktur CASE Konstruksi CASE dapat menyederhanakan IF THEN ELSE yang bertingkat (lebih dari 2 kasus)

Konstruksi CASE ekspresi Nilai 1 : aksi 1 Nilai 2 : aksi 2 Nilai

Konstruksi CASE ekspresi Nilai 1 : aksi 1 Nilai 2 : aksi 2 Nilai 3 : aksi 3. . . Nilain : aksin Otherwise : aksix if ekspresi = nilai 1 then aksi 1 else if ekspresi = nilai 2 then aksi 2 else if ekspresi = nilai 3 then aksi 3 end. CASE else {otherwise} aksi x endif --------------------------------------Ekspresi menghasilkan suatu nilai (konstanta), range dari konstanta yang bukan bertipe real.

Contoh CASE • Algoritma untuk membaca nomor hari (integer) , lalu menuliskan nama hari

Contoh CASE • Algoritma untuk membaca nomor hari (integer) , lalu menuliskan nama hari sesuai dengan angka harinya. ---------------------------------------Read(nomor_hari) CASE nomor_hari 1: write(‘Minggu’) 2: write(‘Senin’) 3: write(‘Selasa’) 4: write(‘Rabu’) 5: write(‘Kamis’) 6: write(‘Jum’at’) 7: write(‘Sabtu; ) Otherwise: write(‘bukan hari yang benar’) end. CASE

NOTASI ALGORITMA PROGRAM Nama. Hari { mencetak nama hari berdasarkan nomor hari (1. .

NOTASI ALGORITMA PROGRAM Nama. Hari { mencetak nama hari berdasarkan nomor hari (1. . 7) } KAMUS Nomor_hari : integer ALGORITMA Read(nomor_hari) CASE nomor_hari 1: write(‘Minggu’) 2: write(‘Senin’) 3: write(‘Selasa’) 4: write(‘Rabu’) 5: write(‘Kamis’) 6: write(‘Jum’at’) 7: write(‘Sabtu; ) Otherwise: write(‘bukan hari yang benar’) end. CASE

Tidak semua bahasa pemrograman menyediakan struktur CASE Gunakan struktur IF-THEN-ELSE

Tidak semua bahasa pemrograman menyediakan struktur CASE Gunakan struktur IF-THEN-ELSE

Ekuivalesi if-then-else dg CASE If-Then-Else Read(angka) If angka = 1 then write(‘satu’) Else if

Ekuivalesi if-then-else dg CASE If-Then-Else Read(angka) If angka = 1 then write(‘satu’) Else if angka = 2 then write(‘dua’) elses if angka = 3 then write(‘tiga’) elses if angka = 4 then write(‘empat’) else write(‘angka yg dimasukan salah’) endif Case Read(angka) Case angka 1: write(‘satu’) 2: write(‘dua’) 3: write(‘tiga’) 4: write(‘empat’) otherwise : write(‘angka yg dimasukan salah’) endcase

Latihan CASE • Buat algoritma untuk konversikan Huruf ke Status dari Nilai Mahasiswa, dengan

Latihan CASE • Buat algoritma untuk konversikan Huruf ke Status dari Nilai Mahasiswa, dengan menggunakan Struktur CASE. Seperti : A = Sangat Baik B = Baik C = Cukup D = Kurang E = Sangat Kurang

Uji kasus • Lihat hal 126 (hand book)

Uji kasus • Lihat hal 126 (hand book)

Jenis Proses : PENGULANGAN (Repetition Process) • Kelebihan komputer dibanding manusia adalah kemampuan untuk

Jenis Proses : PENGULANGAN (Repetition Process) • Kelebihan komputer dibanding manusia adalah kemampuan untuk melaksanakan perintah berulangkali tanpa mengenal lelah dan bosan • Dalam algoritma, pengulangan (repetition atau looping) dapat dilakukan beberapa kali sampai kondisi pemberhentian pengulangan tercapai

Struktur Pengulangan <inisialisasi> Awal pengulangan Badan pengulangan Akhir pengulangan <terminasi> • Inisialisasi dan terminasi

Struktur Pengulangan <inisialisasi> Awal pengulangan Badan pengulangan Akhir pengulangan <terminasi> • Inisialisasi dan terminasi tidak selalu harus ada, namun pada beberapa kasus inisialisasi umumnya diperlukan

Tiga konstruksi pengulangan • FOR (pengulangan tanpa kondisi : jumlah pengulangan sudah diketahui, sebelum

Tiga konstruksi pengulangan • FOR (pengulangan tanpa kondisi : jumlah pengulangan sudah diketahui, sebelum konstruksi pengulangan dieksekusi) • WHILE • REPEAT WHILE dan REPEAT (pengulangan dengan kondisi : jumlah pengulangan tidak diketahui sebelum eksekusi program, yang dapat ditentukan hanyalah kondisi berhenti pengulangan )

Pengulangan - FOR • Diperlukan sebuah peubah (variable) pencacah (counter) untuk menghitung sudah berapa

Pengulangan - FOR • Diperlukan sebuah peubah (variable) pencacah (counter) untuk menghitung sudah berapa kali pengulangan dilakukan • Bentuk umum pengulangan FOR ada dua macam : – FOR menaik (ascending) / FOR positif – FOR menurun (descending) / FOR negatif

FOR menaik (ascending) / FOR positif Bentuk umum: For pencacah nilai_awal to nilai_akhir do

FOR menaik (ascending) / FOR positif Bentuk umum: For pencacah nilai_awal to nilai_akhir do Aksi Endfor

Contoh pengulangan FOR Positif untuk Satu Aksi PROGRAM cetak_satuaksi KAMUS i: integer {pencacah pengulangan}

Contoh pengulangan FOR Positif untuk Satu Aksi PROGRAM cetak_satuaksi KAMUS i: integer {pencacah pengulangan} ALGORITMA For i 1 to 5 do {ulang sebanyak 5 kali} Write(‘I Love Dinda’) endfor {aksi yang diulang}

Contoh Notasi Algoritma pengulangan FOR Positif untuk membuat tabel PROGRAM cetak_tabel KAMUS a, b,

Contoh Notasi Algoritma pengulangan FOR Positif untuk membuat tabel PROGRAM cetak_tabel KAMUS a, b, c: integer Bagi : real; ALGORITMA Write(‘------------------’) write(‘a a*a*a 1/a’) Write(‘------------------’) for a 1 to 10 do b a*a c a*a*a bagi 1/a Write(a, b, c, bagi) Endfor Write(‘------------------’)

FOR menurun (descending) / FOR negatif Bentuk umum: For pencacah nilai_akhir downto nilai_awal do

FOR menurun (descending) / FOR negatif Bentuk umum: For pencacah nilai_akhir downto nilai_awal do Aksi Endfor

Contoh pengulangan FOR Negatif untuk Satu Aksi PROGRAM cetak_ulangnegatif KAMUS : i: integer {pencacah

Contoh pengulangan FOR Negatif untuk Satu Aksi PROGRAM cetak_ulangnegatif KAMUS : i: integer {pencacah pengulangan} ALGORITMA : For i 10 downto 1 do menurun} Write(i) endfor {Aksi yang diulang} {ulang sebanyak 10 kali secara

Pengulangan FOR tersarang (nested-FOR) • Perulangan FOR berada perulangan FOR yang lainnya • Perulangan

Pengulangan FOR tersarang (nested-FOR) • Perulangan FOR berada perulangan FOR yang lainnya • Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan bertambah, masuk lagi ke perulangan dalam sampai habis, dst. Dan berakhir pada akhir pengulangan luar.

Contoh : Pengulangan FOR tersarang (nested-FOR) PROGRAM nested_for KAMUS I, j: integer {pencacah pengulangan}

Contoh : Pengulangan FOR tersarang (nested-FOR) PROGRAM nested_for KAMUS I, j: integer {pencacah pengulangan} ALGORITMA For i 1 to 3 do For j 1 to 2 do write(i, j) endfor Endfor

Struktur pengulangan- repeat-until • Bentuk umum : Repeat aksi Until kondisi (pengulangan aksi dilakukan

Struktur pengulangan- repeat-until • Bentuk umum : Repeat aksi Until kondisi (pengulangan aksi dilakukan hingga kondisi berhenti terpenuhi) - Pengulangan akan dijalankan terus kalau kondisi masih bernilai FALSE - Pengulangan berhenti, jika kondisi bernilai TRUE

while-do vs repeat-until • Repeat-until vs Kondisi pengulangan Di evaluasi di akhir while-do kondisi

while-do vs repeat-until • Repeat-until vs Kondisi pengulangan Di evaluasi di akhir while-do kondisi pengulangan di evaluasi di awal Pernyataan REPEAT memiliki makna yang sama dg WHILE Dalam beberapa masalah kedua pernyataan tsb komplemen satu sama lain.

Contoh : ALGORITMA : I 1 Repeat write (‘hello pascal’) I I+1 Until I

Contoh : ALGORITMA : I 1 Repeat write (‘hello pascal’) I I+1 Until I > 10

WHILE atau REPEAT ? • Gunakan konstruksi WHILE pada kasus yg mengahruskan terlebih dahulu

WHILE atau REPEAT ? • Gunakan konstruksi WHILE pada kasus yg mengahruskan terlebih dahulu pemeriksaan kondisi objek sebelum objek dimanipulasi • Gunakan konstruksi REPEAT pada kasus yg terlebih dahulu memanipulasi objek, baru kemudian memeriksa kondisi objek tsb.

perbandingan WHILE (benar) Repeat ( salah) • • • • ALGORITMA : S 0

perbandingan WHILE (benar) Repeat ( salah) • • • • ALGORITMA : S 0 Read(x) While x ≠ 0 do s s + 1/x read(x) Endwhile Write (s) ALGORITMA : S 0 Repeat read(x) s s + 1/x Until x = 0 • Write (s)

perbandingan Repeat ( benar) ALGORITMA : Repeat write(‘ MENU ‘) write(‘ 1. Baca Data’)

perbandingan Repeat ( benar) ALGORITMA : Repeat write(‘ MENU ‘) write(‘ 1. Baca Data’) write(‘ 2. cetak data’) write(‘ 3. keluar’) write(‘masukan pilihan anda(1/2/3) ? ‘) read(nomormenu) case nomormenu 1 : write (‘anda memilih menu nomor 1’) 2 : write(‘anda memilih meniu nomo 2’) 3 : write(‘keluar program’ endcase Until nomormenu = 3 While (salah) ALGORITMA : While nomormenu≠ 3 do write(‘ MENU ‘) write(‘ 1. Baca Data’) write(‘ 2. cetak data’) write(‘ 3. keluar’) write(‘masukan pilihan anda(1/2/3) ? ‘) read(nomormenu) case nomormenu 1 : write (‘anda memilih menu nomor 1’) 2 : write(‘anda memilih meniu nomo 2’) 3 : write(‘keluar program’ endcase endwhile

Latihan • Buatlah sebuah algoritma lengkap, untuk menghitung jumlah deret bilangan bulat dari 3

Latihan • Buatlah sebuah algoritma lengkap, untuk menghitung jumlah deret bilangan bulat dari 3 sampai dengan 10. dengan menggunakan konstruksi pengulangan REPEAT-UNTIL ! • Transformasika algoritma di atas ke program komputer dg bahasa pascal • Lakukan modifikasi algoritma dan program komputer di atas untuk menghitung nilai rata-rata, dan tampiikanlah nilai rata-rata tsb.

PEMROGRAMAN MODULAR • adalah suatu teknik pemrograman di mana program yang biasanya cukup besar

PEMROGRAMAN MODULAR • adalah suatu teknik pemrograman di mana program yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian program yang lebih kecil. • Dalam beberapa bahasa pemrograman disebut : sub-rutin, modul, prosedur, atau fungsi.

STRUKTUR POHON PROGRAM A SUBPROGRAM A 1 SUBPROGRAM A 21 SUBPROGRAM A 3 SUBPROGRAM

STRUKTUR POHON PROGRAM A SUBPROGRAM A 1 SUBPROGRAM A 21 SUBPROGRAM A 3 SUBPROGRAM A 22

ILUSTRASI DEKLARASI A, B, Temp : integer ALGORITMA { baca nilai A dan B}

ILUSTRASI DEKLARASI A, B, Temp : integer ALGORITMA { baca nilai A dan B} read(A) read(B) {proses pertukaran} temp A A B B temp { tulis nilai A dan B setelah pertukaran } output(A) output(B)

Dipecah subprogram DEKLARASI A, B : integer Baca(A, B: Integer) ALGORITMA: read(A) read(B) Tukar(A,

Dipecah subprogram DEKLARASI A, B : integer Baca(A, B: Integer) ALGORITMA: read(A) read(B) Tukar(A, B: integer) DEKLARASI temp : integer {peubah bantu} ALGORITMA temp A A B B temp Tulis(A, B : integer) ALGORITMA output(A) output(B) ALGORITMA Baca(A, B) Tukar(A, B) Tulis(A, B)

KEUNTUNGAN Pemrogram Modular 1. Program lebih pendek 2. Mudah menulis (banyak programer) 3. Mudah

KEUNTUNGAN Pemrogram Modular 1. Program lebih pendek 2. Mudah menulis (banyak programer) 3. Mudah dibaca dan dimengerti (bandingkan dg nonmodular dg banyak instruksi) 4. Mudah didokumentasi 5. Mengurangi kesalahan dan mudah mencari kesalahan(debug) program 6. Kesalahan yang terjadi bersifat “lokal”

Dua bentuk pemrogram modular : PROSEDUR dan FUNGSI • Struktur setiap subprogram tersebut pada

Dua bentuk pemrogram modular : PROSEDUR dan FUNGSI • Struktur setiap subprogram tersebut pada hakekatnya sama , yaitu : – Nama modul (subprogram) – Bagian deklarasi – Algoritma (intruksi yg akan dilaksanakan) • Perbedaan penggunaannya dalam bahasa pemrograman Pascal : – Prosedur merupakan modul(subprogram) yg melakukan aktifitas tertentu tanpa adanya pengembalian nilai – Fungsi terdapat pengembalian nilai

PROSEDUR • Dalam bahasa pemrograman • Prosedur adalah modul program yang mengerjakan tugas/aktifitas yg

PROSEDUR • Dalam bahasa pemrograman • Prosedur adalah modul program yang mengerjakan tugas/aktifitas yg spesifik dan menghasilkan suatu efek netto (membandingkan keadaan awal dan keadaan akhir dari suatu aktifitas prosedur) • Setiap prosedur perlu mendefinisikan keadaan awal sebelum rangkaian instruksi di dalam prosedur dilaksanakan, dan keadaan akhir yg diharapkan setelah instruksi di dalam prosedur dilaksanakan

STRUKTUR PROSEDUR • JUDUL (header) nama prosedur dan deklarasi parameter(kalau ada) • DEKLARASI mengumumkan

STRUKTUR PROSEDUR • JUDUL (header) nama prosedur dan deklarasi parameter(kalau ada) • DEKLARASI mengumumkan nama dan tipe data • ALGORITMA badan prosedur (instruksi) *sama dengan struktur ALGORITMA

Nama Prosedur • Nama yang unik • Sebaiknya diawali dengan kata kerja karena prosedur

Nama Prosedur • Nama yang unik • Sebaiknya diawali dengan kata kerja karena prosedur berisi suatu aktifitas – Misalnya: Hitung. Luas, Tukar, Cari. Maks, Tulis, dll.

Parameter • Adalah nama-nama peubah (variabel) yang dikdeklarasikan pada bagian header (judul) prosedur dan

Parameter • Adalah nama-nama peubah (variabel) yang dikdeklarasikan pada bagian header (judul) prosedur dan titik dimana dipanggil. • Penggunaan parameter menawarkan mekanisme pertukaran informasi (antara yg memanggil (program/algoritma utama) dg prosedur itu sendiri)

Parameter dibedakan menjadi dua : • Parameter aktual (argumen) : – Parameter yg disertakan

Parameter dibedakan menjadi dua : • Parameter aktual (argumen) : – Parameter yg disertakan pada waktu pemanggilan prosedur (parameter yg ada program/algoritma utama). • Parameter formal : – Parameter yg dideklarasikan di dalam bagian header prosedur itu sendiri. • Ketika prosedur dipanggil, parameter aktual menggantikan parameter formal. • Tiap-tiap parameter aktual berpasangan dengan parameter formal yg bersesuain (berkorespondasi satu)

Notasi algoritma untuk PROSEDUR Procedure Nama. Prosedur(deklarasi parameter, jika ada) {spesifikasi prosedur, berisi penjelasan

Notasi algoritma untuk PROSEDUR Procedure Nama. Prosedur(deklarasi parameter, jika ada) {spesifikasi prosedur, berisi penjelasan tentang apa yg dilakukan oleh prosedur ini. K. awal : keadaan sebelum prosedur dilaksanakan. K. akhir : keadaan setelah prosedur dilaksanakan} DEKLARASI {semua nama yg dipakai di dalam prosedur dan hanya berlaku lokal di dalam prosedur ini} ALGORITMA {badan prosedur, berisi urutan instruksi}

Pendeklarasian Parameter dalam prosedur bukanlah keharusan Contoh : Procedure Hitung. Luas. Segitiga {menghitung luas

Pendeklarasian Parameter dalam prosedur bukanlah keharusan Contoh : Procedure Hitung. Luas. Segitiga {menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2} {K. awal : sembarang} {K. akhir : luas segitiga tercetak} DEKLARASI Alas, tinggi, luas : real ALGORITMA Read(alas, tinggi) Luas (alas * tingg) / 2 Write(luas)

Pemanggilan Prosedur • Prosedur bukan program yg beridiri sendiri • Prosedur tidak dapat dieksekusi

Pemanggilan Prosedur • Prosedur bukan program yg beridiri sendiri • Prosedur tidak dapat dieksekusi secara langsung. • Instruksi-instruksi di dalam prosedur dapat dilaksanakan bila prosedur itu diakses. • Prosedur diakses dg cara memanggil namanya dari program pemanggil (misalnya dari program utama atau modul program lainnya) • Jika prosedur tanpa parameter, maka pemanggilannya cukup dg nama prosedurnya saja, contoh : Hitung. Luas. Segitiga

Notasi Algoritma : PROGRAM Segitiga {menghitung luas segitiga} DEKLARASI Procedure Hitung. Luas. Segitiga {menghitung

Notasi Algoritma : PROGRAM Segitiga {menghitung luas segitiga} DEKLARASI Procedure Hitung. Luas. Segitiga {menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2} {K. awal : sembarang} {K. akhir : luas segitiga tercetak} DEKLARASI Alas, tinggi, luas : real ALGORITMA Read(alas, tinggi) Luas (alas * tinggi) / 2 Write(luas) ALGORITMA Hitung. Luas. Segitiga

KUIS • BUATLAH NOTASI ALGORITMA UNTUK MELAKUKAN PEMANGGILAN PROSEDUR LUASSEGITIGA SEBANYAK 3 X

KUIS • BUATLAH NOTASI ALGORITMA UNTUK MELAKUKAN PEMANGGILAN PROSEDUR LUASSEGITIGA SEBANYAK 3 X

Nama Global dan Nama Lokal • Nama Lokal : Nama-nama (Konstanta, peubah(variabel), tipe, dll)

Nama Global dan Nama Lokal • Nama Lokal : Nama-nama (Konstanta, peubah(variabel), tipe, dll) yang dideklarasikan di dalam prosedur (termasuk parameter, jika ada). (hanya dikenal/digunakan dalam lingkup (scope) prosedur tersebut • Nama Global : Nama-nama (Konstanta, peubah(variabel), tipe, dll) yang dideklarasikan di dalam program utama. (dapat dikenal/digunakan dibagian manapun dalam program (progam utama maupun prosedur).

PROGRAM Segitiga {menghitung luas N buah segitiga} DEKLARASI I, N : integer alas, tinggi

PROGRAM Segitiga {menghitung luas N buah segitiga} DEKLARASI I, N : integer alas, tinggi : real Procedure Hitung. Luas. Segitiga {menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2} {K. awal : sembarang} {K. akhir : luas segitiga tercetak} DEKLARASI luas : real ALGORITMA Luas (alas * tinggi) / 2 Write(luas) ALGORITMA read(N) { tentukan banyaknya segitiga } for I 1 to N do read(alas, tinggi Hitung. Luas. Segitiga endfor ________________________________ Nama Peubah (variabel) I, N, alas, tinggi variabel GLOBAL Nama Peubah (variabel) luas variabel LOKAl

Menggunakan variabel Global atau variabel Lokal • Bila suatu peubah (variabel) digunakan di seluruh

Menggunakan variabel Global atau variabel Lokal • Bila suatu peubah (variabel) digunakan di seluruh bagian program (baik program utama maupun prosedur), maka deklarasikanlah peubah tsb secara Global. • Bila suatu peubah (variabel) hanya digunakan di dalam prosedur, maka deklarasikanlah peubah tsb secara Lokal. • Gunakan peubah global sedikit mungkin • Penggunaan variabel lokal membuat program lebih elegan • Penggunaan variabel lokal dapat meminimumkan usaha pencarian kesalahan yg disebabkan oleh nama-nama tsb.

Parameter • Prosedur yg baik adalah prosedur yg independen dari program utama/ program yg

Parameter • Prosedur yg baik adalah prosedur yg independen dari program utama/ program yg memanggilnya. • Prosedur yg baik tidak menggunakan peubah-peubah global di dalam prosedur. • Jika program utama perlu mengomunikasikan nilai peubah Global ke dalam prosedur, maka gunakanlah PARAMETER.

Parameter - next • Penggunaan parameter adalah mekanisme pertukaran informasi antara prosedur dengan yang

Parameter - next • Penggunaan parameter adalah mekanisme pertukaran informasi antara prosedur dengan yang memaggilnya (program utama maupun subprogram lainnya). • Prosedur dengan parameternya (Parameter Formal) dapat diakses dg cara memanggil namanya dari program yg memanggilnya yg disertai dg parameter dari program yg memanggil tsb (Parameter Aktual). Contoh: Nama. Prosedur(parameter aktual) • Tiap parameter aktual berpasangan dg paramater formal yg bersesuaian

Parameter - next • Ketika prosedur dipanggil, parameter aktual berkoresponden satu-satu dengan parameter formal

Parameter - next • Ketika prosedur dipanggil, parameter aktual berkoresponden satu-satu dengan parameter formal (parameter yg dideklarasikan pada bagian header prosedur)

Aturan korespondensi satu • Jumlah parameter aktual harus sama dengan jumlah parameter formal. •

Aturan korespondensi satu • Jumlah parameter aktual harus sama dengan jumlah parameter formal. • Tiap parameter aktual harus bertipe sama dengan tipe parameter formal yg sesuai. • Tiap parameter aktual harus diekspresikan dalam cara yg taat azas dg parameter formal yg bersesuaian, bergantung pada jenis parameter formal.

Jenis parameter formal yg disertakan di dalam prosedur : • Parameter Masukan (input parameter)

Jenis parameter formal yg disertakan di dalam prosedur : • Parameter Masukan (input parameter) : Parameter yg nilainya berlaku sebagai masukan untuk prosedur. • Parameter Keluaran (Output parameter): Parameter menampung keluaran yg dihasilkan oleh prosedur. • Parameter masukan/keluaran (input/output parameter) : Parameter yg berfungsi sebagai masukan sekaligus keluaran bagi prosedur tsb.

Parameter masukan • Nilai parameter aktual diisikan ke dalam parameter formal yg sesuai. •

Parameter masukan • Nilai parameter aktual diisikan ke dalam parameter formal yg sesuai. • Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai parameter aktual. • Nama parameter aktual boleh berbeda dg nama parameter formal yg sesuai

Contoh : paramater masukan Procedure Hitung. Luas. Segitiga(input alas, tinggi : real) {menghitung luas

Contoh : paramater masukan Procedure Hitung. Luas. Segitiga(input alas, tinggi : real) {menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2} {K. awal : alas dan tinggi sudah terdefinisi nilainya} {K. akhir : luas segitiga tercetak} DEKLARASI luas : real ALGORITMA Luas (alas * tinggi) / 2 Write(luas)

Program utama yg memanggil nama prosedur: harus mendeklarasikan nama prosedur dan memanggilnya dg parameter

Program utama yg memanggil nama prosedur: harus mendeklarasikan nama prosedur dan memanggilnya dg parameter aktual yg sesuai PROGRAM Segitiga {menghitung luas N buah segitiga} DEKLARASI I, N : integer alas, tinggi : real Procedure Hitung. Luas. Segitiga(input alas, tinggi : real) {menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2} {K. awal : alas dan tinggi sudah terdefinisi nilainya } {K. akhir : luas segitiga tercetak} DEKLARASI luas : real ALGORITMA Luas (alas * tinggi) / 2 Write(luas) ALGORITMA read(N) { tentukan banyaknya segitiga } for I 1 to N do read(alas, tinggi Hitung. Luas. Segitiga(alas, tinggi) endfor

nama parameter aktual tidak harus sama dengan nama parameter formal : yg dipentingkan adalah

nama parameter aktual tidak harus sama dengan nama parameter formal : yg dipentingkan adalah nilainya PROGRAM Segitiga {menghitung luas N buah segitiga} DEKLARASI I, N : integer a, t : real Procedure Hitung. Luas. Segitiga(input alas, tinggi : real) {menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2} {K. awal : alas dan tinggi sudah terdefinisi nilainya } {K. akhir : luas segitiga tercetak} DEKLARASI luas : real ALGORITMA Luas (alas * tinggi) / 2 Write(luas) ALGORITMA read(N) { tentukan banyaknya segitiga } for I 1 to N do read(a, t) Hitung. Luas. Segitiga(a, t) endfor

Parameter aktual boleh berupa ekspresi atau konstanta Contoh : • Hitung. Luas. Segitiga(a*0. 2,

Parameter aktual boleh berupa ekspresi atau konstanta Contoh : • Hitung. Luas. Segitiga(a*0. 2, t*0. 1) • Hitung. Luas. Segitiga(12, 6)

Parameter keluaran • Parameter keluaran dideklarasikan di dalam header prosedur, sebagaimana parameter masukan •

Parameter keluaran • Parameter keluaran dideklarasikan di dalam header prosedur, sebagaimana parameter masukan • Parameter keluaran dideklarasikan dengan keyword OUTPUT. • Ketika prosedur yg mengandung parameter keluaran dipanggil, maka nama parameter aktual menggantikan (substitute) nama parameter formal yg bersesuaian.

Contoh : parameter keluaran-next PROGRAM Segitiga {menghitung luas N buah segitiga} DEKLARASI I, N

Contoh : parameter keluaran-next PROGRAM Segitiga {menghitung luas N buah segitiga} DEKLARASI I, N : integer a, t, L : real Procedure Hitung. Luas. Segitiga(input alas, tinggi : real, output luas: real) {menghitung luas segitiga dengan rumus : L = (alas x tinggi)/2} {K. awal : alas dan tinggi sudah terdefinisi nilainya } {K. akhir : luas segitiga tercetak} ALGORITMA Luas (alas * tinggi) / 2 ALGORITMA read(N) { tentukan banyaknya segitiga } for I 1 to N do read(a, t) Hitung. Luas. Segitiga(a, t, L) Write(L) endfor

Parameter masukan/keluaran • Prosedur harus dapat mengakomodasi baik masukan dari dan keluaran ke blok

Parameter masukan/keluaran • Prosedur harus dapat mengakomodasi baik masukan dari dan keluaran ke blok program pemanggil • Maka gunakan parameter masukan/ keluaran • Bila parameter aktual diubah nilainya di dalam badan prosedur, maka sesudah pemanggilan prosedur nilai parameter aktual di titik pemanggilan juga berubah • Parameter masukan/keluaran dideklarasikan di dalam header prosedur dengan keyword INPUT/OUTPUT • Parameter aktual harus berupa peubah, tidak boleh berupa ekspresi atau konstanta

Contoh : parameter masukan/keluaran PROGRAM Cetak 0 Sampai 10 { mencetak nilai dari 0

Contoh : parameter masukan/keluaran PROGRAM Cetak 0 Sampai 10 { mencetak nilai dari 0 sampai 10 } DEKLARASI x : integer procedure Inc(input/output x : integer) {menaikan nilai x sebesar 1} {K. Awal : x sudah terdefinisi nilainya} {K. Akhir : nilai x bertambah 1} DEKLARASI ALGORITMA x x+1 ALGORITMA X 0 repeat write(x) inc(x) until x > 10

Parameter masukan - PROGRAM xyz DEKLARASI a, b : integer Procedure tambah(input x, y:

Parameter masukan - PROGRAM xyz DEKLARASI a, b : integer Procedure tambah(input x, y: integer) Deklarasi Algoritma x x+4 Y y +4 write(‘nilai x dan y di akhir prosedur tambah: ’) Write(‘ x=‘, x) Write(‘ y=‘, y) ALGORITMA a 15 B 10 Write(‘nilai a dan b sebelum panggil prosedur tambah: ’) Write(‘ a=‘, a) Write(‘ b=‘, b) Tambah(a, b) Write(‘nilai a dan b sesudah panggil prosedur tambah: ’) Write(‘ a=‘, a) Write(‘ b=‘, b) parameter masukan/keluaran PROGRAM xyz DEKLARASI a, b : integer Procedure tambah(input/output x, y: integer) Deklarasi Algoritma x x+4 Y y +4 write(‘nilai x dan y di akhir prosedur tambah: ’) Write(‘ x=‘, x) Write(‘ y=‘, y) ALGORITMA a 15 B 10 Write(‘nilai a dan b sebelum panggil prosedur tambah: ’) Write(‘ a=‘, a) Write(‘ b=‘, b) Tambah(a, b) Write(‘nilai a dan b sesudah panggil prosedur tambah: ’) Write(‘ a=‘, a) Write(‘ b=‘, b)

Program dg prosedur atau tanpa prosedur • Dianjurkan menulis program yg modular • Program

Program dg prosedur atau tanpa prosedur • Dianjurkan menulis program yg modular • Program yg dipecah menjadi beberapa prosedur menunjukkan teknik pemrograman yg baik dan terstruktur

Prosedur dg parameter atau tanpa parameter • Dianjurkan menulis prosedur dg parameter • Parameter

Prosedur dg parameter atau tanpa parameter • Dianjurkan menulis prosedur dg parameter • Parameter dapat mengurangi kebutuhan penggunaan peubah (variabel) global

Parameter masukan atau parameter keluaran • Bila prosedur menghasilkan keluaran yg digunakan oleh program

Parameter masukan atau parameter keluaran • Bila prosedur menghasilkan keluaran yg digunakan oleh program pemanggil, gunakan parameter keluaran untuk menampung keluaran tsb. • Bila prosedur tidak menghasilkan keluaran, atau kalaupun menghasilkan keluaran tapi keluaran tsb hanya digunakan di dalam prosedur itu saja, maka gunakan parameter masukan. • Bila prosedur menerima masukan sekaligus keluaran pada parameter yg sama, gunakan parameter masukan/keluaran.