170 likes | 370 Views
Algoritma dan Struktur Data. k <= 5. KONDISI. BENAR. Perulangan do ….while (C++). Flowchart. C++ : do { < aksi > } While < kondisi >;. Algoritma : Repeat aksi Until < kondisi >. Statement. TIDAK. EXAMPLE. Algoritma Cetak_Angka
E N D
k <=5 KONDISI BENAR Perulangan do….while (C++) Flowchart • C++ : do { <aksi> } While <kondisi>; • Algoritma : Repeat aksi Until <kondisi> Statement TIDAK EXAMPLE • AlgoritmaCetak_Angka • {MencetakAngka 1 -5 denganmenggunakanstrukturperulangan 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 T END
While….. do Vs Repeat ….. Until • Repeat …..until pengujiankondisidiakhir aksiakandilakukan minimal satu kali • While …..do pengujiankondisidiawal adakemungkinanaksitidakdieksekusisamasekali • #include <iostream> • using namespace std; • void main() • { • string ulang; • ulang="y“; • do • { • cout<<"STMIK MDP "<<endl; • } • while ((ulang == "y") || (ulang=="Y")); system("pause"); • } • #include <iostream> • #include <string> • using namespace std; • void main() • { string ulang; • ulang=“t"; • while ((ulang == "y") || (ulang=="Y")) • { • cout<<"STMIK MDP "<<endl; • } • system("pause"); • } • VS
FUNGSI dan PROCEDURE • Blok program tersendiri yang merupakanbagiandari program lain yang lain (modulutama) • Mengerjakansuatutugas yang spesifik • Keuntungan : • Menghindaripenulisankode program yang samaberkali kali • Kemudahanmenulisdanmenemukankesalahan(debug) program • FUNGSI vs PROSEDUR • Bedanyaprosedurberisikanprosestertentu yang tidakakanmengembalikannilaikemodulutama • Fungsimengembalikannilaikemodulutama 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 {Penjelasantentangapa yang dilakukanprosedurtersebut} Deklarasi {semuanama yang dipakai (variabel ,konstanta) yang dipakaidiprosedurdanhanyaberlakudidalamprosedur} Deskripsi {Kumpulan instruksi}
Example PROSEDUR Procedure CetakHallo {Mencetakkata Hello World} Deklarasi {tidakada} Deskripsi write (‘Hallo ’) Tulislahproseduruntukmencetak string Hello World Tulislahproseduruntukmenghitung luassegitigaL=(alas x tinggi) /2 ! Procedure HitungLuasSegitiga {Menghitungluassetiga , luas=(alas x tinggi)/2} Deklarasi alas,tinggi,luas : real Deskripsi read (alas,tinggi) luas (alas*tinggi)/2 void CetakHallo() { cout<<“Hallo” } void HitungLuasSegitiga() { intluas,alas,tinggi; cout<<“alas ?”;cin>>alas cout<<“tinggi ?”;cin>>tinggi luas=alas*tinggi; cout<<luas }
PemanggilanProsedur • Prosedurdiaksesdengancaramemanggilnamaprosedurtersebutdari program utama • Di dalam program utama, harusadaprototipeprosedur. Supaya program utamadapatmengenaliprosedurtersebutdancaramengaksesprosedurtersebut • Prototipeprosedurberisikan header prosedur PROGRAM UTAMA PROGRAM UTAMA AlgoritmaHallo {Program Utamauntukmemcetak string Hallo} Deklarasi procedure CetakHallo Deskripsi CetakHallo AlgoritmaLuasSegitiga {Program Utamauntukmenghitungluassegitiga} Deklarasi procedure HitungLuasSegitiga Deskripsi HitungLuasSegitiga
Nama Global danNamaLokal • Namalokal • Konstanta,variabeldan lain lain yang dideklarasikandidalamprodedurtersebut. • Nama global • Di deklarasikanberlakusecara global (dapatdigunakandiseluruhbagian program) • void ContohGlobalLokal() • { cout<<nilai; • intangka=10; • cout<<angka • } • #include<iostream> • #include<string> using namespace std; • intnilai=60; void ContohGlobalLokal(); void main() { cout<<nilai; ContohGlobalLokal(); cout<<angka; //SALAH system("pause"); }
Parameter PadaProsedur Digunakanuntukpertukaraninformasi / data antara program utamadanprosedurataufungsi. Ada 3 jenis parameter 1. Parameter masukan (input parameter) 2. Parameter keluaran (output parmameter) 3. Paramatermasukan/keluaran (input/output parameter) AlgoritmaContohSatu {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 {tidakada} Deskripsi x x+1 y y+1 write(x,y)
Translasi parameter input PadaProsedur • #include<iostream> using namespace std; void Satu(intx,int y); void main() { inta,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 Prosedurdengan Parameter Input Procedure HitungRataRata (input n :integer) {Menghitung rata-rata N buahbilanganbulat yang dibacadaripirantimasukan. KeadaanAwal : N sudahberisibanyaknyabilanganbulat n>0 KeadaanAkhir : rata-rata seluruhbilanganbulatdicetakkepirantikeluaran } Deklarasi x : integer {data bilanganbulat yang diinputdaripirantimasukan} k : integer {counter untuk FOR } jumlah : integer {digunakanuntukjumlahseluruhbilangan} u : real Deskripsi jumlah 0 for k1 to N do read(x) jumlahjumlah +x end for u jumlah/N write(u) AlgoritmaRataRataBilanganBulat {program utama} Deklarasi Procedure HitungRataRata (input n :integer) Ndata : integer Deskripsi read(Ndata) HitungRataRata(Ndata)
Prosedurdengan Parameter Output Procedure Dua (input x:integer, output y:real) {Contoh parameter keluaran} Deklarasi {tidakada} Deskripsi x x+1 y x+10.5 AlgoritmaContohDua {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) write(b) Dua(a+5,b) • #include<iostream> using namespace std; • void Dua(int x, int *y); • void main() • { inta,b; • Dua(5, &b); • cout<<b<<endl; • cout<<"A ?"; cin>>a; • Dua(a, &b); • cout<<b<<endl; • Dua(a+5,&b); • cout<<b; • system("pause"); } void Dua(int x, int *y) { x=x+1; *y=x+3; }
Example Prosedurdengan 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 AlgoritmaRataRataBilanganBulat {program utama} Deklarasi Procedure HitungRataRata (input n :integer , output u : real) Ndata : integer Rata : real Deskripsi read(Ndata) HitungRataRata(Ndata,Rata) write(rata)
Prosedurdengan Parameter Input/Output Procedure Tiga (input/output x:integer) {Contoh parameter input/output} Deklarasi {tidakada} Deskripsi x x+10 write(‘Nilai X setelahakhirprosedurTiga’) write(‘ x = ’ , x) AlgoritmaContohTiga {program utama} Deklarasi Procedure Tiga (input/output x:integer) a : integer Deskripsi a15 write(‘Nilai a sebelumpemanggilan’) write(a) Tiga(a) write(‘Nilai a sesudahpemanggilan’) write(a) • #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 sesudahpemanggilan\n"; • cout<<"A = "<<a<<endl; system("pause"); } void Tiga(int *x) { *x=*x+30; cout<<"Nilai X setelahakhirprosedurTiga\n"; cout<<"x = "<<*x<<endl; }
Latihan AlgoritmaSegi_Empat {Program untukmenampilkan menu perhitungansegiempat (luas,kelilingdanpanjang diagonal )} Deklarasi NomorMenu,p,l : integer ProcedureHitungLuas ProcedureHitungKeliling(input panjang: integer , inputlebar : integer) Deskripsi write(‘ Menu SEGIEMPAT’) write(‘ 1. HitungLuas ‘) write(‘ 2. HitungKeliling’) write(‘ Masukkannomorpilihan (1/2) ‘) read(pil) case(pil) 1 : HitungLuas 2 : read(p,l) HitungKeliling(p,l) endcase BuatlahprosedurHitungLuasdanHitungKeliling ! ! ! ! !