Dokumen tersebut membahas tentang algoritma, struktur data, dan pemrograman terstruktur menggunakan bahasa C++. Pokok bahasannya meliputi tipe data, algoritma, struktur data, penulisan program C++, pemilihan, pengulangan, dan pemrograman modular menggunakan fungsi.
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. ALGORITMA, STRUKTUR DATA DAN
PEMROGRAMAN TERSTRUKTUR
Akmal, S.Si, MT
Erick Paulus, S.Si, M.Kom
Mata Kuliah : Struktur Data
2. Tujuan
mahasiswa dapat membuat program
yang terstruktur dan modular
menggunakan prosedur dan fungsi dengan
tipe data dasar / sederhana menggunakan
bahasa C++ dengan benar
3. Pokok Bahasan
Tipe Data dan Abstract Data Type (ADT)
Algoritma dan bahasa C++
Pemrograman Terstruktur (Fungsi / Prosedur)
4. Pemrograman Dan Algoritma
Algoritma adalah rangkaian terurut langkah-langkah yang logis dan
sistematis yang disusun untuk menyelesaikan suatu masalah
Program secara umum adalah : kumpulan instruksi atau perintah yang
disusun sedemikian rupa sehingga mempunyai urutan nalar yang logis
untuk menyelesaikan suatu persoalan yang dimengerti oleh komputer.
3 Skema Dasar Algoritma
1. Runtunan
2. Pemilihan / Seleksi
3. Pengulangan
Penulisan algoritma :
a. Diagram Alir / Flow Chart
b. Kode Semu / Pseudo Code
5. Struktur dan tipe data
Struktur data adalah koleksi dari elemen-elemen data yang dinyatakan dengan
sebuah nama, dengan sifat setiap elemen dapat memiliki tipe yang berlainan.
Struktur data biasa dipakai untuk mengelompokkan beberapa informasi yang
berkaitan menjadi sebuah kesatuan.
* Hirarki Tipe Data
a. Tipe sederhana
- Tipe ordinal
unsigned char 1 byte 0 .. 255
signed char/char 1 byte -128 .. 127
int 2 byte -32768 .. 32767
unsigned int 2 byte 0 .. 65535
longint 4 byte -2.147.483.648 .. 2.147.483.647
- Tipe real
float 4 byte 3.4E-38 .. 3.4E38
double 8 byte 1.7E-308 .. 1.7E308
· b. Tipe terstruktur
Tipe string
larik (array)
rekaman (record/structure)
berkas (file)
· c. Tipe pointer
6. Penulisan program dengan C++
/* Nama program :
Nama : Akmal
NPM :
Tanggal buat :
Deskripsi :
******************************************************/
// deklarasi header file / Preprocessor directive
// deklarasi fungsi / void
main() {
/* KAMUS Data*/
/* Deskripsi Algoritma*/
}
7. Pemilihan / Seleksi
Analisa Kasus Tunggal ( If )
If digunakan untuk melakukan proses penyeleksian.
Jika nilai if yang diseleksi bernilai true maka semua statement
yang ada di dalam blok if akan dijalankan.
Jika dijalankan maka akan didapatkan output "i = 1". Karena seleksi
pada kurung if() menghasilkan nilai true (!= 0), yaitu nilai i
adalah benar satu(1).
main() {
int i = 1;
if (i==1){
cout<<"i = 1”<<endl;
}
}
8. Analisa 2 kasus komplementer (If Else)
Pernyataan Else digunakan sebagai alternatif apabila proses
seleksi if menghasilkan nilai false (==0). Maka semua block yang
ada pada statement else akan dijalankan
Dapat dilihat bahwa di dalam seleksi if(i==1) menghasilkan nilai
false karena nilai i adalah 2. Maka blok yang dijalankan adalah
blok else, yaitu mencetak i is not 1
main() {
int i = 2;
if(i==1){
cout<<"i = 1”<<endl;
}
else{
cout<<"i is not 1”<<endl;
}
}
9. Analisa Banyak Kasus (If-Else IF)
Alternatif else if digunakan sebagai pilihan jika proses seleksi ada
banyak. Misalkan kita harus menyeleksi variable untuk beberapa
pilihan
Jalankan program dan akan dicetak i = 0. Karena seleksi pertama
yang memenuhi persyaratan. Yaitu if(i==0). Seleksi yang lain
yang tidak memenuhi persyaratan tidak akan dijalankan
main() {
int i = 0;
if(i==0){
cout<<"i = 0”<<endl;
}else if(i==1){
cout<<"i = 1”<<endl;
}else if(i==2){
cout<<"i = 2”<<endl;
}else{
cout<<"i is not 0, 1, or 2”<<endl;
}
}
10. PENGULANGAN / ITERASI
Pengulangan dengan Statement for
Syntaxnya adalah sbb :
for (inisialisasi ; kondisi kontinu; update) {
aksi ;
}
Ini merupakan bentuk yang sederhana untuk pengontrolan sebuah loop yang terdiri
atas tiga bagian terpisah. Ketiganya ini dimungkinkan untuk kosong.
contoh:
// Menghitung Sigma(i) = 1 + 2 + 3 + ... + n dengan for
main() {
int n, sigma = 0;
cout << “Masukkan bilangan integer positif”; cin >> n;
for (int i = 1; i <= n; i++) {
sigma += i;
}
cout << “Jumlahnya dari << n <<“ bil. pertama adalah : “ << sigma << endl;
}
11. Pengulangan dengan Statement while
syntaxnya adalah sbb :
while (kondisi) {
aksi;
}
Pertama sekali kondisi diperiksa dan jika kondisi tidak nol (contoh true) maka
statement akan dieksekusi kemudian kondisi dievaluasi lagi sampai kondisi adalah
nol (contoh false).
contoh :
// Program menghitung Sigma(i) = 1 + 2 + 3 + ... + n
// dengan while
main() {
int i=1, n, sigma = 0;
cout << “Masukkan bilangan integer positif”; cin >> n;
while (i<=n) {
sigma +=i;
i++;
}
cout << “Jumlah dari << n <<“ bil. pertama adalah : “ << sigma << endl;
}
12. Pengulangan dengan Statement do ... while
Syntaxnya adalah sbb:
do {
aksi
} while (kondisi);
Statement ini akan mengerjakan statement minimal satu kali (pertama yang
dilakukan) dan kemudian baru dievaluasi kondisinya. Akan terus diulang selama
kondisi bukan nol. Berhenti sampai kondisi bernilai nol (contoh false).
contoh :
main() {
int n, f = 1;
cout << “Masukkan bil integer positif : “; cin >> n;
cout << n << “ faktorial adalah : “;
do {
f *= n;
n--;
} while (n > 1);
cout << f << endl;
}
13. Pernyataan break
Pernyataan break digunakan untuk keluar dari suatu
pengulangan ( loop) sehingga perintah-perintah lain
sesudah perintah break dalam suatu loop tidak akan
dikerjakan.
Contoh : mencetak angka 1 .. 3
int bil;
for (bil = 1; bil <= 10 ; bil++) {
if (bil == 4)
break;
cout << bil << endl;
}
14. Pernyataan continue
Pernyataan continue dimaksudkan untuk mengarahkan
eksekusi lompat ke kondisi pernyataan for, do…while atau
while sehingga kondisi akan dievaluasi lagi.
Contoh : Mencetak 0 1 2 4
int i = 0;
while (i < 5) {
if (i == 3){
i++;
continue;
}
cout << i << endl;
i++;
}
15. Pengertian Fungsi
Fungsi adalah objek (bagian program/rutin) yang
digunakan untuk memodularkan program
dengan suatu ciri mengembalikan suatu nilai
(return value)
Semua variables yang dideklarasikan dalam
fungsi merupakan variable lokal, yang hanya
diketahui dalam fungsi bersangkutan
Fungsi bisa memiliki parameter yang
menyediakan komunikasi antara function dengan
modul yang memanggil fungsi tsb. (Parameter
formal dan Parameter aktual)
Parameters bersifat local variables
16. Penulisan Fungsi
TipeHasil namaFungsi(tipe1 par1, tipe2 par2 …) {
// kamus data local
……….
// Isi Fungsi
……….
return (hasil); // pengembalian hasil ke pemanggil
}
Pemanggilan :
hsl = namaFungsi (akt1, akt2 …)
Atau
cout<< namaFungsi (akt1, akt2 …)
Antara parameter actual dengan parameter formal harus bersesuaian
yaitu bertipe sama dan banyaknya juga sama
17. Fungsi void
Procedure atau subroutine pada bahasa lain diimplementasikan pada C++
dengan menjadikannya sebagai fungsi dengan menempatkan kata kunci
void didepan nama procedure yang dibuat.
Dalam hal ini tidak diperlukan adanya pengembalian nilai dari fungsi,
sehingga perintah return tidak dimasukkan
Penulisan Fungsi void
void NamaFungsi(tipe1 par1, tipe2 par2 …) {
// kamus data local
……….
// Isi Fungsi void
……….
}
Pemanggilan
NamaFungsi(akt1, akt2, …..)
18. Perbedaan Passing by value dan Passing by reference
Penulisan di parameter formal
Tipe par
Penulisan di parameter formal
Tipe& par
Formal hanya bisa baca nilai actual
(read only)
Bisa baca dan tulis (read /write)
Parameter formal merupakan salinan
dari aktual
Merupakan alias atau sinonim
Formal tidak mempengaruhi aktual Formal mempengaruhi aktual
Parameter aktual bisa berupa
konstanta, variable, dan ekspresi
Parameter aktual hanya dengan
variable
By value By reference
19. Latihan dan Tugas
1. Buat program modular untuk menampilkan output sbb (dicetak angka dan asterik):
Banyak baris : 4 (diinputkan dari keyboard)
1. * 1. * * * *
2. * * 2. * * *
3. * * * 3. * *
4. * * * * 4. *
Gunakan skema nested loop dengan a. 2 buah for
b. 2 buah while
2. Tentukan hasil program modular berikut:
void fungsiLoop1(int n) {
for (int i=0; i < n ; i++) {
if (i%2 == 0) cout << i+1 << endl;
else if (i%3 ==0) continue;
else if (i%5 ==0) break;
cout << "Akhir Dalam Loop"<<endl;
}
cout << "Akhir Luar Loop"<<endl;
}
int main() {
fungsiLoop1(8);
}
void fungsiLoop2(int n){
int i=1;
while (i < n) {
if (i < 3)
i += 2;
else cout << (i++) <<endl;
cout<< “Akhir loop” << endl;
}
cout << "ni = " << i;
}
int main() {
fungsiLoop2(7);
}
20. 3. Buatlah program modular untuk mencari pangkat suatu bilangan dengan menggunakan
perulangan.
Masukkan satu bilangan : 2
Masukkan pangkatnya : 3
2 pangkat 3 pangkat (2,3) = 8
4. Buatlah program modular untuk menampilkan lagu anak ayam berikut menggunakan
perulangan:
Masukkan banyak anak ayam : 10 (dinputkan)
Lagunya :
Anak ayam turunlah 10
Mati satu tinggal 9
Anak ayam turunlah 9
Mati satu tinggal 8
…
Anak ayam turunlah 1
Mati satu tinggal induknya