Algoritma dan Struktur Data 1
Perulangan do….while (C++) Flowchart Algoritma : Repeat aksi Until <kondisi> C++ : do { <aksi> } While <kondisi>; Statement KONDISI BENAR TIDAK EXAMPLE Algoritma Cetak_Angka {Mencetak Angka 1 -5 dengan menggunakan struktur perulangan do …….while} DEKLARASI k: integer DESKRIPSI k1 Repeat write(k) kk+1 until k < 5 START C++ int k; K=1; while (k <= 5) { cout<<k; } k=1 write k k=k+1 Y k <=5 T END
While….. do Vs Repeat ….. Until pengujian kondisi di akhir aksi akan dilakukan minimal satu kali While …..do pengujian kondisi di awal ada kemungkinan aksi tidak dieksekusi sama sekali #include <iostream> #include <string> using namespace std; void main() { string ulang; ulang=“t"; while ((ulang == "y") || (ulang=="Y")) { cout<<"STMIK MDP "<<endl; } system("pause"); #include <iostream> using namespace std; void main() { string ulang; ulang="y“; do cout<<"STMIK MDP "<<endl; } while ((ulang == "y") || (ulang=="Y")); system("pause"); VS
FUNGSI dan PROCEDURE Blok program tersendiri yang merupakan bagian dari program lain yang lain (modul utama) Mengerjakan suatu tugas yang spesifik Keuntungan : Menghindari penulisan kode program yang sama berkali kali Kemudahan menulis dan menemukan kesalahan(debug) program FUNGSI vs PROSEDUR Bedanya prosedur berisikan proses tertentu yang tidak akan mengembalikan nilai ke modul utama Fungsi mengembalikan nilai ke modul utama yang memanggilmya
Ilustrasi FUNGSI dan PROCEDURE PROGRAM UTAMA MODUL 1 A1 A2 A3 Call MODUL1 A4 A5 Call MODUL 2 A6 A7 Call MODUL 1 A8 M11 M21 M31 MODUL 2 M21 M22 M23
Pseudocode PROSEDUR Procedure NAMA_PROSEDUR {Penjelasan tentang apa yang dilakukan prosedur tersebut} Deklarasi {semua nama yang dipakai (variabel ,konstanta) yang dipakai di prosedur dan hanya berlaku di dalam prosedur} Deskripsi {Kumpulan instruksi}
Example PROSEDUR Tulislah prosedur untuk mencetak string Hello World Procedure CetakHallo {Mencetak kata Hello World} Deklarasi {tidak ada} Deskripsi write (‘Hallo ’) Tulislah prosedur untuk menghitung luas segitiga L=(alas x tinggi) /2 ! Procedure HitungLuasSegitiga {Menghitung luas setiga , luas=(alas x tinggi)/2} Deklarasi alas,tinggi,luas : real Deskripsi read (alas,tinggi) luas (alas*tinggi)/2 void CetakHallo() { cout<<“Hallo” } void HitungLuasSegitiga() { int luas,alas,tinggi; cout<<“alas ?”;cin>>alas cout<<“tinggi ?”;cin>>tinggi luas=alas*tinggi; cout<<luas }
Pemanggilan Prosedur Prosedur diakses dengan cara memanggil nama prosedur tersebut dari program utama Di dalam program utama, harus ada prototipe prosedur. Supaya program utama dapat mengenali prosedur tersebut dan cara mengakses prosedur tersebut Prototipe prosedur berisikan header prosedur PROGRAM UTAMA PROGRAM UTAMA Algoritma Hallo {Program Utama untuk memcetak string Hallo} Deklarasi procedure CetakHallo Deskripsi CetakHallo Algoritma Luas Segitiga {Program Utama untuk menghitung luas segitiga} Deklarasi procedure HitungLuasSegitiga Deskripsi HitungLuasSegitiga
Nama Global dan Nama Lokal Konstanta,variabel dan lain lain yang di deklarasikan di dalam prodedur tersebut. Nama global Di deklarasikan berlaku secara global (dapat digunakan di seluruh bagian program) #include<iostream> #include<string> using namespace std; int nilai=60; void ContohGlobalLokal(); void main() { cout<<nilai; ContohGlobalLokal(); cout<<angka; //SALAH system("pause"); } void ContohGlobalLokal() { cout<<nilai; int angka=10; cout<<angka }
Parameter Pada Prosedur Digunakan untuk pertukaran informasi / data antara program utama dan prosedur atau fungsi. Ada 3 jenis parameter 1. Parameter masukan (input parameter) 2. Parameter keluaran (output parmameter) 3. Paramater masukan/keluaran (input/output parameter) Algoritma ContohSatu {program utama} Deklarasi Procedure Satu (input x:integer, input y :integer) a,b : integer Deskripsi Satu(4,5) read(a,b) Satu(a,b) Satu(a+5,17) Procedure Satu (input x,y :integer) {Contoh parameter masukan} Deklarasi {tidak ada} Deskripsi x x+1 y y+1 write(x,y)
Translasi parameter input Pada Prosedur #include<iostream> using namespace std; void Satu(int x,int y); void main() { int a,b; Satu(4,5); cout<<“A ?”; cin>>a; cout<<“B ?”; cin>>b; Satu(a,b); Satu(a+50,b); system("pause"); } void Satu(int x, int y) { x=x+1; y=y+1; cout<<x<<endl; cout<<y<<endl; }
Example Prosedur dengan Parameter Input Procedure HitungRataRata (input n :integer) {Menghitung rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. Keadaan Awal : N sudah berisi banyaknya bilangan bulat n>0 Keadaan Akhir : rata-rata seluruh bilangan bulat dicetak ke piranti keluaran } Deklarasi x : integer {data bilangan bulat yang diinput dari piranti masukan} k : integer {counter untuk FOR } jumlah : integer {digunakan untuk jumlah seluruh bilangan} u : real Deskripsi jumlah 0 for k1 to N do read(x) jumlahjumlah +x end for u jumlah/N write(u) Algoritma RataRataBilanganBulat {program utama} Deklarasi Procedure HitungRataRata (input n :integer) Ndata : integer Deskripsi read(Ndata) HitungRataRata(Ndata)
Prosedur dengan Parameter Output Procedure Dua (input x:integer, output y:real) {Contoh parameter keluaran} Deklarasi {tidak ada} Deskripsi x x+1 y x+10.5 Algoritma ContohDua {program utama} Deklarasi Procedure Dua (input x:integer, output y :real) a,b : integer Deskripsi Dua(5,b) write(b) read(a) Dua(a,b) Dua(a+5,b) #include<iostream> using namespace std; void Dua(int x, int *y); void main() { int a,b; Dua(5, &b); cout<<b<<endl; cout<<"A ?"; cin>>a; Dua(a, &b); Dua(a+5,&b); cout<<b; system("pause"); } void Dua(int x, int *y) { x=x+1; *y=x+3; }
Example Prosedur dengan Parameter Output Procedure HitungRataRata (input n :integer, output u : real) {Menghitung rata-rata dengan parameter output } Deklarasi x : integer k : integer jumlah : integer Deskripsi jumlah 0 for k1 to N do read(x) jumlahjumlah +x end for u jumlah/N Algoritma RataRataBilanganBulat {program utama} Deklarasi Procedure HitungRataRata (input n :integer , output u : real) Ndata : integer Rata : real Deskripsi read(Ndata) HitungRataRata(Ndata,Rata) write(rata)
Prosedur dengan Parameter Input/Output Procedure Tiga (input/output x:integer) {Contoh parameter input/output} Deklarasi {tidak ada} Deskripsi x x+10 write(‘Nilai X setelah akhir prosedur Tiga’) write(‘ x = ’ , x) Algoritma ContohTiga {program utama} Deklarasi Procedure Tiga (input/output x:integer) a : integer Deskripsi a15 write(‘Nilai a sebelum pemanggilan’) write(a) Tiga(a) write(‘Nilai a sesudah pemanggilan’) #include<iostream> using namespace std; void Tiga(int *x); void main() { a=15; cout<<"Nilai A sebelum pemanggilan\n"; cout<<"A = "<<a<<endl; Tiga(&a); cout<<"Nilai A sesudah pemanggilan\n"; cout<<"A = "<<a<<endl; system("pause"); } void Tiga(int *x) { *x=*x+30; cout<<"Nilai X setelah akhir prosedur Tiga\n"; cout<<"x = "<<*x<<endl; }
Latihan Buatlah prosedur HitungLuas dan HitungKeliling ! ! ! ! ! Algoritma Segi_Empat {Program untuk menampilkan menu perhitungan segi empat (luas,keliling dan panjang diagonal )} Deklarasi NomorMenu,p,l : integer Procedure HitungLuas Procedure HitungKeliling(input panjang: integer , input lebar : integer) Deskripsi write(‘ Menu SEGIEMPAT’) write(‘ 1. Hitung Luas ‘) write(‘ 2. Hitung Keliling’) write(‘ Masukkan nomor pilihan (1/2) ‘) read(pil) case(pil) 1 : HitungLuas 2 : read(p,l) HitungKeliling(p,l) endcase Buatlah prosedur HitungLuas dan HitungKeliling ! ! ! ! !
Thank You! 17