BAHAN AJAR PEMROGRAMAN STRUKTURAL
KODE MATA KULIAH SEMESTER SKS DOSEN PENGAMPU
: :2 : 3 SKS : Eko Riswanto, S.T., M.Cs
PROGRAM STUDI TEKNIK INFORMATIKA
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN ILMU KOMPUTER EL RAHMA YOGYAKARTA 2016
BAB 1 KONSEP PEMROGRAMAN TERSTRUKTUR
Pemrograman Terstruktur merupakan suatu tindakan untuk membuat program yang berisi instruksi-instruksi dalam bahasa komputer yang disusun secara logis dan sistematis supaya mudah dimengerti, mudah dites, dan mudah dimodifikasi. Pemrograman terstruktur adalah bahasa pemrograman yang mendukung pembuatan program sebagai kumpulan prosedur. Prosedur-prosedur ini dapat saling memanggil dan dipanggil dari manapun dalam program dan dapat mengunakan parameter yang berbeda-beda untuk setiap pemanggilan. Bahasa pemrograman terstruktur adalah pemrograman yang mendukung abstraksi data, pengkodean terstruktur dan kontrol program terstruktur. Sedangkan Prosedur adalah bagian dari program untuk melakukan operasi-operasi yang sudah ditentukan dengan menggunakan parameter tertentu.
Sejarah Metodologi Pemrograman Pemrograman terstruktur pertama kali diungkapkan oleh Prof Edsger Djikstra dari Universitas Eindhoven sekitar tahun 1965. Dalam papernya, Djikstra mengusulkan peniadaan perintah GOTO pada pemrograman terstruktur. Berbeda dengan pendapat HD Millis yang mengungkapkan bahwa pemrograman terstruktur tidak tergantung pada ada tidaknya GOTO tetapi lebih pada struktur program itu sendiri. Dari pernyataan keduanya, memberikan gambaran tidak adanya definisi yang jelas untuk pemrograman terstruktur. Tetapi dapat digaris bawahi bahwa pemrograman terstruktur merupakan suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program.
Alasan Pemrograman Terstruktur ialah 1. Krisis metode pengembangan 2. Kemampuan tenaga programmer tertinggal 3. Sulitnya modifikasi program jika ada kesalahan atau perubahan 4. Sulitnya modifikasi kode program karena tidak terstruktur dengan baik
Manfaat Pemrograman Terstruktur 1. Dapat menangani program yang besar dan komplek 2. Dapat menghindari konflik internal team 3. Membagi kerja team berdasarkan modul-modul program yang sudah dirancang 4. kemajuan pengerjaan sistem dapat dimonitor dan dikaji Ciri – ciri Program Terstruktur (Good Program) 1. Run correctly (program handal)
2. Run efficiently (program menjadi sederhana / tidak rumit) 3. Be easy to read and understand (mudah dibaca dan ditelusuri) 4. Be easy to debug (program mudah ditelusuri kesalahannya) 5. Be easy to modify (program mudah dimodifikasi)
Tujuan dari pemrograman terstruktur adalah 1. Meningkatkan kehandalan suatu progam, 2. Program mudah dibaca dan ditelusuri, 3. Menyederhanakan kerumitan program, 4. Pemeliharaan program, dan 5. Peningkatkan produktivitas pemrograman.
Pemrograman terstruktur bercirikan: 1. mengandung teknik pemecahan yang tepat dan benar, 2. memiliki algoritma pemecahan masalah yang sederhana, standar dan efektif, 3. memiliki struktur logika yang benar dan mudah dipahami, 4. terdiri dari 3 struktur dasar yaitu urutan, seleksi dan perulangan, 5. menghindari penggunaan GOTO, 6. biaya pengujian rendah, Source Program penterjemah Machine Languages Komputer dan Pemrograman 7. memiliki dokumentasi yang baik, 8. biaya perawatan dan dokumentasi yang dibutuhkan rendah.
BAB 2 TIPE ARRAY
Definisi Array Array adalah tipe data yang dapat menampung sejumlah elemen dengan tipe yang sama. Pengaksesan elemen array dapat dilakukan dengan menyebutkan nama array dan indeks atau nomor elemennya. Dalam pemrograman array dapat dibedakan menjadi array berdimensi satu dan array berdimensi banyak.
Array Berdimensi Satu Array berdimensi satu adalah array yang memiliki satu tipe indek atau satu nomor subscript. Pendefinisian Tipe Array Bentuk : tipe_data nama_variabel_array[jumlah_elemen_array];
Contoh : int nilai[5];
didefnisikan sebuah variabel array dengan nama nilai yang mempunyai lima buah elemen. Penggambaran elemen array : Elemen array
Array Nilai 0
1
2
3
4
Nomor elemen
Gambar Gambaran array dimensi satu dalam C++ Dalam C++ nomor elemen dari array selalu diawali dengan 0 (nol). Penomoran elemen diberikan secara otomatis oleh C++, sehingga yang kita berikan pada saat pendefinisian array hanya jumlah elemennya saja.
Operasi Pada Array nilai[0] = 10;
Memasukkan data 10 pada array nilai nomor elemen 0. 10 0
1
2
3
4
Gambar Memberikan data pada nomor elemen 0 nilai[3] = nilai[0];
memasukkan data pada array nilai nomor elemen 3 dengan data yang ada pada array nilai nomor elemen 0.
10 0
10 1
2
3
4
Gambar Memberikan data pada nomor elemen 3
Untuk menampilkan data : cout<
//10
cout<
//10
Contoh program : Algoritmik Pseudocode Input_Data_Array // Akan dimasukkan 5 data dalam array dan mencetaknya //DEKLARASI int nilai[5] //DESKRIPSI { //membaca data read(nilai[1]) read(nilai[2]) read(nilai[3]) read(nilai[4]) read(nilai[5]) //menampilkan data write(nilai[1]) write(nilai[2]) write(nilai[3]) write(nilai[4]) write(nilai[5]) }
Program 2.1 /* contoh program array dimensi satu */ #include
#include void main() { clrscr(); //menghapus layar int nilai[5]; cout<<"Masukkan lima data nilai"<<endl; cout<<"========================"<<endl; cout<<"Nilai 1 : "; cin>>nilai[0]; cout<<"Nilai 2 : "; cin>>nilai[1]; cout<<"Nilai 3 : "; cin>>nilai[2];
cout<<"Nilai 4 : "; cin>>nilai[3]; cout<<"Nilai 5 : "; cin>>nilai[4]; cout<<endl; cout<<"Data nilai yang anda masukkan"<<endl; cout<<"1 2 3 4 5"<<endl; cout<<"============================="<<endl; cout<
Hasil eksekusi : Masukkan lima data nilai ======================== Nilai 1 : 89 Nilai 2 : 90 Nilai 3 : 75 Nilai 4 : 55 Nilai 5 : 95 Data nilai yang anda masukkan 1 2 3 4 5 ============================= 89 90 75 55 95
Dalam pengisian data ke dalam elemen array secara berulang dapat dilakukan dengan for. Contoh program diatas akan diganti pemasukkan datanya dengan menggunakan for : Algoritmik Pseudocode Input_Data_Array_dengan_for // Akan dimasukkan 5 data dalam array dan mencetaknya //DEKLARASI int i; int nilai[5] //DESKRIPSI { //membaca data for(i=0;i<5;i++) read(nilai[i]) //menampilkan data for(i=0;i<5;i++) write(nilai[3]) }
Program 2.2 /* contoh program array dimensi satu dengan for */ #include #include void main() { clrscr(); //menghapus layar int nilai[5]; cout<<"Masukkan lima data nilai"<<endl; cout<<"========================"<<endl; for (int i = 0; i < 5; i++) { cout<<"Nilai ke "<<(i+1)<<" : "; cin>>nilai[i]; } cout<<endl; cout<<"Data nilai yang anda masukkan"<<endl; cout<<"1 2 3 4 5"<<endl; cout<<"============================="<<endl; for (int i = 0; i < 5; i++) { cout<
Contoh program mencari nilai terbesar dan nilai terkecil dari sejumlah data yang dimasukkan dalam variabel array. #include #include void main() { int jum; int nilai[20]; cout<<"Jumlah data : "; cin>>jum; for (int i=0;i<jum;i++) { cout<<"Data ke - "<<(i+1)<<" : "; cin>>nilai[i]; }
//nilai pertama array dianggap sebagai //data terkecilk dan data terbesar
int min; min=nilai[0]; int maks; maks = nilai[0]; for(int i=0;i<jum;i++) { if (nilai[i] < min) min = nilai[i]; if (nilai[i] > maks) maks = nilai[i]; } cout<<"Nilai Terkecil : "<<min<<endl; cout<<"Nilai Terbesar : "<<maks<<endl; getch(); }
Hasil Eksekusi : Jumlah data : 5 Data ke - 1 : 8 Data ke - 2 : 6 Data ke - 3 : 9 Data ke - 4 : 4 Data ke - 5 : 5 Nilai Terkecil : 4 Nilai Terbesar : 9
Array Berdimensi Banyak Array berdimensi banyak adalah array yang memiliki lebih dari satu tipe indek atau lebih dari satu nomor subscript, misalnya memiliki dua, tiga dan seterusnya. Pendefinisian Tipe Array Dalam C++ Bentuk : tipe_data nama_variabel_array[jumlah_elemen_baris] [jumlah_elemen_kolom];
Contoh : int matrik[3][4];
didefnisikan sebuah variabel array dimensi dua dengan nama matrik yang mempunyai 3 elemen baris dan 4 elemen kolom. Penggambaran elemen array :
0
1
2
3
0 Elemen baris
1 2
Elemen kolom
Gambar Gambaran array dimensi 2 dalam C++
Operasi Pada Array matrik[1][2] = 23;
Memasukkan data 23 pada array matrik baris 1 dan kolom 2. 0
1
2
3
0 1
23
2
Gambar Memberikan data pada baris 1, kolom 2
matrik[2][3] = matrik[1][2];
memasukkan data pada array matrik baris 2, kolom 3 dengan data yang ada pada array matrik baris 1, kolom 2. 0
1
2
3
0 1 2
23 23
Gambar Memberikan data pada baris 2, kolom 3
Untuk menampilkan data : cout<<matrik[1][2]; //23 cout<<matrik[2][3]; //23
contoh program menghitung penjumlahan dua matrik. Syarat penjumlahan dua matrik adalah bahwa kedua matrik mempunyai ordo yang sama : Program 2.3 #include #include void main() { int a[10][10], b[10][10], c[10][10]; int brs,klm; clrscr();
cout<<"Masukan jumlah Baris : "; cin>>brs; cout<<"masukan Jumlah kolom : "; cin>>klm; for(int i=0;i>a[i][j]; } } for(int i=0;i>b[i][j]; } } for(int i=0;i
//menampilkan matrik A
cout<<"\nMatrik B"<<endl; //menampilkan matrik B for(int i=0;i
Contoh program menghitung perkalian dua matrik. Syarat perkalian dua matrik adalah bahwa jumlah baris matrik kedua sama dengan jumlah kolom matrik pertama. Program 2.4 #include #include void main() { int a[20][20], b[20][20], c[20][20]; int brsa, klmabrsb, klmb; cout<<"Baris matrik a : "; cin>>brsa; cout<<"Klm mtrik a Brs b : "; cin>>klmabrsb; cout<<"Klm matrik b : "; cin>>klmb; //input matrik A cout<<"Masukkan matrik A"<<endl; for(int i=0;i>a[i][j]; } cout<<"Masukkan matrik B"<<endl; for(int i=0;i>b[i][j]; } //perkalian dua matrik for(int i=0;i
cout<<endl; } getch(); }
BAB 3 STRING
Konstanta string Konstanta string ditulis dengan awalan dan akhiran tanda petik ganda (“), contoh : “Tes” “A”
„A‟
konstanta string diatas disimpan dalam memori secara berurutan dengan susunan : T
e
s
\0
Pada karakter terakhir terdapat karakter NULL (\0) yang berfungsi sebagai pengakhir string.
Variabel string Variabel string adalah variabel yang digunakan untuk menyimpan data string. Misalnya : char nama[20];
merupakan pernyataan untuk mendefinisikan variabel string dengan panjang maksimal 20 (termasuk NULL). Pernyataan diatas tidak lain digunakan untuk mendefinisikan array bertipe karakter.
Memasukkan data dari keyboard Untuk memasukkan data dari keyboard digunakan cin, tetapi pada cin yang biasa kita gunakan tidak dapat digunakan untuk membaca spasi. Untuk mengatasinya dapat kita gunakan fungsi getline(). Program 3.1 #include #include void main() { char nama[20]; char alamat[30]; cout<<"Masukkan nama : "; cin.getline(nama,sizeof(nama)); cout<<"Masukkan alamat : "; cin.getline(alamat,sizeof(alamat)); cout<<"\nNama anda : "<
Hasil eksekusi : Masukkan nama : Joko Purnomo Masukkan alamat : Jl. Kaliurang km 10 Nama anda : Joko Purnomo Alamat anda : Jl. Kaliurang km 10
Menyalin string Menyalin string berbeda dengan menyalin bilangan. Dalam c++ untuk menyalin string digunakan fungsi strcpy().
Program 3.2 #include #include void main() { char teks1[20]; char teks2[30]; cout<<"Masukkan teks 1 : "; cin.getline(teks1,sizeof(teks1)); strcpy(teks2,teks1); cout<<"Isi teks 2 : "<
Hasil eksekusi : Masukkan teks 1 : Tes salin teks Isi teks 2 : Tes salin teks
toupper() dan tolower() Fungsi toupper() berguna untuk memperoleh huruf kapital dari suatu huruf kecil, sedangkan tolower() berguna untuk memperoleh huruf kecil dari suatu huruf kapital. Program 3.3 #include #include #include void main() { char teks1[20]; char teks2[30]; cout<<"Masukkan huruf kecil : "; cin.getline(teks1,sizeof(teks1)); for(int i=0;i
Hasil eksekusi : Masukkan huruf kecil : ngetes Isi teks 1 : NGETES MASUKKAN HURUF KAPITAL : NYOBA Isi teks 2 : nyoba
Menghitung panjang string dengan strlen() Contoh program : Program 3.4 #include #include void main() { char teks[50]= "Jangan bersedih, Bajaj pasti berlalu"; cout<<strlen(teks);
getch(); }
Hasil eksekusi : 36
Menggabungkan string dengan strcat() Program 3.5 #include #include void main() { char teks1[30]= "Belajar C++ memang mudah "; char teks2[30]= "Semudah membalik tank baja"; cout<<strcat(teks1,teks2); getch(); }
Hasil eksekusi : Belajar C++ memang mudah Semudah membalik tank baja
BAB 4 F U N G S I
Fungsi adalah sebuah blok pernyataan yang berisi sejumlah pernyataan yang dikemas dalam sebuah nama yang dapat dipanggil beberapa kali dibeberapa tempat dalam program. Tujuan pembuatan fungsi : Memudahkan dalam mengembangkan program, karena program dipecah menjadi programprogram yang lebih kecil. Menghemat ukuran program, ini akan terasa kalau ada beberapa deretan instruksi yang sama digunakan pada beberapa tempat didalam program.
Deklarasi/prototipe fungsi Deklarasi / prototipe sebuah fungsi berupa : Nama fungsi Tipe nilai balik fungsi Jumlah dan tipe argumen
Format deklarasi untuk fungsi yang menghasilkan nilai balik : Tipe Nama_fungsi(daftar_parameter);
Format deklarasi untuk fungsi yang tidak menghasilkan nilai balik : void Nama_fungsi(daftar_parameter);
Definisi fungsi Setiap fungsi yang dipanggil didalam program harus didefinisikan terlebih dahulu yang letaknya bisa dimana saja. Khusus untuk fungsi yang disediakan oleh sistem, definisi sebenarnya sudah ada dalam pustaka yang disebut file header.
Fungsi tanpa Nilai Balik Adakalanya suatu fungsi
tidak perlu memiliki nilai balik. Misalnya fungsi yang hanya
dimasudkan untuk menampilkan suatu keterangan saja. Pada fungsi seperti ini, tipe nilai balik fungsi yang diperlukan adalah void. Contoh :
void tampilkan_judul () { cout << “PT. Maju Mundur” << endl; cout << “Jl. Buntu No. 76” << endl; cout << “Yogyakarta” << endl; }
pada contoh fungsi diatas, tidak ada pernyataan return, mengingat fungsi tidak memiliki nilai balik. Namun penggunaan pernyataan return secara eksplisit juga diperkenankan. Dalam hal ini digunakan berbentuk : return
Jadi contoh diatas dapat ditulis : void tampilkan_judul() { cout << “PT. Maju Mundur” << endl; cout << “Jl. Buntu No. 76” << endl; cout << “Yogyakarta” << endl; return; }
Program 4.1 #include #include //prototipe fungsi void garis(); void tampilkan_judul(); //fungsi utama void main() { clrscr(); tampilkan_judul(); garis(); getch(); } //definisi fungsi void garis() { cout<<"=========================="<<endl; } void tampilkan_judul () { cout << "PT. Maju Mundur" << endl; cout << "Jl. Buntu No. 76" << endl; cout << "Yogyakarta" << endl; return; }
Hasil eksekusi : PT. Maju Mundur Jl. Buntu No. 76 Yogyakarta ==========================
Argumen fungsi Argumen fungsi adalah nilai bawaan yang akan disertakan saat pemanggilan fungsi. Program 4.2 #include #include
void cetak(int jum); void main() { clrscr(); cetak(10); getch(); } void cetak(int jum) { for(int i = 1; i <= jum; i++) cout<
Hasil eksekusi : 1. Teks ini tercetak 10 kali 2. Teks ini tercetak 10 kali 3. Teks ini tercetak 10 kali 4. Teks ini tercetak 10 kali 5. Teks ini tercetak 10 kali 6. Teks ini tercetak 10 kali 7. Teks ini tercetak 10 kali 8. Teks ini tercetak 10 kali 9. Teks ini tercetak 10 kali 10. Teks ini tercetak 10 kali
Pada contoh diatas pada fungsi cetak mempunyai argumen fungsi bernama jum bertipe int. Pada pemanggilan fungsi cetak harus disertai dengan jumlah argumen yang akan diberikan pada saat fungsi dipanggil. cetak(10);
Contoh program yang mengandung fungsi untuk mencetak teks ditengah layar dan mencetak teks pada koordinat tertentu : Program 4.3 #include #include void hapus() { clrscr(); } void henti() { getch(); } //prototipe fungsi mencetak pada koordinat tertentu void cetak(int klm, int brs, char *teks); //prototipe fungsi mencetak pada tengah layar void cetakc(int brs, char *teks); void main() { hapus(); cetakc(1,"TULISAN INI TERCETAK DI TENGAH LAYAR"); cetakc(2,"===================================="); cetak(3,4,"Tulisan ini tercetak pada baris 4 kolom 3"); henti(); } //definisi fungsi void cetak(int klm, int brs, char *teks) {
gotoxy(klm,brs);cout<
Hasil eksekusi : TULISAN INI TERCETAK DI TENGAH LAYAR ==================================== Tulisan ini tercetak pada baris 4 kolom 3
Lingkup variabel Lingkup variabel menentukan keberadaan suatu variabel tertentu dalam fungsi. Ada variabel yang hanya dikenal di suatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga variabel yang dapat diakses oleh semua fungsi. Variabel Otomatis Variabel yang didefinisikan di dalam suatu fungsi berlaku sebagai variabel lokal bagi fungsi. Artinya, variabel tersebut hanya dikenal didalam fungsi tempat variabel didefinisikan. Sifat dari variabel otomatis adalah :
Variabel akan diciptakan pada saat fungsi dipanggil dan variabel akan sirna pada saat fungsi berakhir.
Variabel hanya dikenal pada fungsi yang mendefinisikan.
Inisialisasi oleh pemrogram akan dikerjakan setiap kali fungsi dipanggil
Program 4.4 #include #include void coba(); // Prototipe fungsi void main() { int x = 22; // Variabel lokal pada main() double y = 2.22; clrscr(); cout << "Pada fungsi main() : x = " << x << " y = " << y << endl; coba(); // Panggil fungsi alpha cout << "Pada fungsi main() : x = " << x << " y = " << y << endl; getch(); } // Definisi fungsi alpha() void coba() { int x = 20; // Variabel lokal pada coba() double y = 3.14; cout << "Pada fungsi coba() : x = " << x << " y = " << y << endl; }
Hasil ekseskusi : Pada main() : x = 22 y = 2.22 Pada coba() : x = 20 y = 3.14 Pada main() : x = 22 y = 2.22
Variabel Eksternal Variabel eksternal adalah variabel yang didefinisikan diluar fungsi manapun. Variabel ini dikenal juga sebagai variabel global, sebab variabel ini dikenal disemua fungsi. Program 4.5 #include #include int nilai = 50; // Variabel eksternal void tambah(); // Prototipe fungsi void main() { clrscr(); cout << nilai << endl; tambah(); cout << nilai << endl; tambah(); cout << nilai << endl; getch(); } // Definisi fungsi void tambah () { nilai ++ ; // Variabel eksternal dinaikkan }
Hasil eksekusi : 50 51 52
Program 4.6 int nilai = 50; void tambah(); void main() { clrscr(); cout << nilai << tambah(); cout << nilai << tambah(); cout << nilai << getch(); } // Definisi fungsi void tambah () { extern nilai; nilai ++ ; }
// Variabel eksternal // Prototipe fungsi
endl; endl; endl;
// Variabel eksternal dinaikkan
Variabel Statis Variabel eksternal maupun otomatis dapat berkedudukan sebagai variabel statis. Suatu variabel statis mempunyai sifat : -
Jika variabel lokal berdiri sebagai variabel statis, maka : -
Variabel tetap hanya dapat diakses pada fungsi yang mendefinisikannya
-
Variabel tidak hilang saat eksekusi fungsi berakhir
- Inisialisasi oleh pemrogram akan dilakukan sekali saja selama program dijalankan. -
Jika variabel eksternal dijadikan sebagai variabel statis,variabel ini dapat diakses oleh semua file yang didefinisikan pada file yang sama dengan variabel eksternal tersebut.
Program 4.7 #include #include void saya_ingat(); // Prototipe fungsi void main() { int mana = 50; clrscr(); saya_ingat(); saya_ingat(); saya_ingat(); cout << " main() : mana = " << mana << endl; getch(); } // Pada fungsi berikut // mana didefinisikan sebagai variabel statis void saya_ingat() { static int mana = 77; // variabel statis mana ++; // Naikkan sebesar 1 cout << " Saya_ingat () : mana = " << mana << endl; }
Hasil eksekusi : Saya_ingat () : mana = Saya_ingat () : mana = Saya_ingat () : mana = main() : mana =
78 79 80 50
Fungsi Dengan Nilai Balik Adalah fungsi yang memberikan nilai balik ke pemanggil fungsi. Contoh : // Prototipe funsi long kuadrat (long l); ------------------------------------// Definisi fungsi long kuadrat(long l)
{ return(l * l); }
Pernyataan return di dalam fungsi digunakan untuk memberikan nilai balik fungsi. Pada contoh diatas, fungsi kuadrat() memberikan nilai balik berupa nilai kuadrat dari argumen. Program 4.8 #include #include #include long kuadrat(long l);
// prototipe fungsi
void main() { clrscr(); for ( long bil = 200; bil < 2000; bil+= 200 ) cout << setw(8) << bil << setw(8) << kuadrat(bil) << endl; getch(); } // Definisi fungsi long kuadrat(long l) { return( l * l ); }
Hasil eksekusi : 200 400 600 800 1000 1200 1400 1600 1800
40000 160000 360000 640000 1000000 1440000 1960000 2560000 3240000
Contoh program yang mengandung fungsi tanpa nilai balik dan fungsi dengan nilai balik : Program 4.9 #include #include #include <string.h> void char void char
judul(); tanya(); isi(); huruf(float rat);
void cetak(int a, int b, char *tek) { gotoxy(b,a);cout<
isi(); getch(); } void judul() { cetakc(1,"DAFTAR NILAI"); cetakc(2,"PRODI TEKNIK INFORMATIKA"); cetak(4,4,"================================================================= ========"); cetak(5,4,"|"); cetak(5,7,"No"); cetak(5,10,"|"); cetak(5,14,"NIM"); cetak(5,21,"|"); cetak(5,27,"N A M A"); cetak(5,44,"|"); cetak(5,46,"UTS"); cetak(5,50,"|"); cetak(5,52,"UAS"); cetak(5,56,"|"); cetak(5,58,"TUGAS"); cetak(5,64,"|"); cetak(5,66,"NILAI HRF"); cetak(5,76,"|"); cetak(6,4,"================================================================= ========"); } void isi() { int nim,uts,uas,tugas,tot; char nama[15],maxnm[15],minnm[15]; float rata, maxnil,minnil,ratkelas,totrat; char jawab; static int i = 1; maxnil=0;minnil=100;totrat=0; do { gotoxy(4,6+i);cout<<"|"; gotoxy(7,6+i);cout<>nim; gotoxy(21,6+i);cout<<"|"; gotoxy(23,6+i);cin>>nama; gotoxy(44,6+i);cout<<"|"; gotoxy(46,6+i);cin>>uts; gotoxy(50,6+i);cout<<"|"; gotoxy(52,6+i);cin>>uas; gotoxy(56,6+i);cout<<"|"; gotoxy(58,6+i);cin>>tugas; gotoxy(64,6+i);cout<<"|"; tot=uts+uas+tugas; rata=tot/3; totrat=totrat+rata; ratkelas=totrat/i; if (rata>maxnil) { maxnil=rata; strcpy(maxnm,nama); } if (rata<minnil) { minnil=rata; strcpy(minnm,nama); } gotoxy(69,6+i);cout<
jawab=tanya(); if (jawab=='t') { gotoxy(4,7+i); cout<<"=============================================================== =========="; gotoxy(4,8+i);cout<<"Jumlah data : "<>jw; gotoxy(20,3);clreol(); return(jw); } char huruf(float rat) { if (rat>80) return('A'); else if (rat>70) return('B'); else if (rat>60) return('C'); else if (rat>50) return('D'); else return('E'); }
Operator Resolusi Lingkup Pada C++ terdapat operator dua buah tanda titik dua ( :: ). Operator ini disebut operator resolusi lingkup (scope resolution). Kegunaanya untuk mengakses variabel yang didefinisikan diluar suatu fungsi. Program 4.10 #include #include int x = 50; // Variabel eksternal void main() { double x; // Definisi variabel lokal clrscr(); x = 5.678901234; // Variabel lokal yang diberi nilai cout << x << " " << ::x << endl; ::x = 77; // Variabel eksternal yang diberi nilai cout << x << " " << ::x << endl; getch(); }
Hasil eksekusi :
5.6789 50 5.6789 77
Referensi Referensi digunakan untuk memberikan nama alias dari variabel. Bentuk pendeklarasiannya : int &ref = nama_variable ; Tanda & mengawali nama referensi. Setelah pendeklarasian seperti diatas, ref menjadi nama alias dari nama_variabel. Penggubahan nilai terhadap nama_variabel dapat dilakukan melalui nama_variabel itu sendiri atau melalui referensi ref, sebagaimana dapat dilihat pada contoh dibawah ini. Program 4.11 #include #include void main() { int i ; int &r = i; // Deklarasi referensi clrscr(); i =10; cout << "i = " << i << endl; cout << "r = " << r << endl; r = 55; cout << "i = " << i << endl; cout << "r = " << r << endl; getch(); }
Hasil eksekusi : i r i r
= = = =
10 10 10 55
Tampak bahwa pengubahan nilai terhadap i maupun r memberikan efek sama. Operator juga bekerja pada suatu variabel maupun referensinya dengan efek yang sama. Program 4.12 #include #include void main() { int i = 55; int &r = i; // Referensi clrscr(); cout << "i = " << i << " r = " << r <<endl; i ++ ; cout << "i = " << i << " r = " << r << endl; r ++ ;
cout << "i = " << i << " r = " << r << endl; getch(); }
Hasil eksekusi : i = 55 r = 55 i = 56 r = 56 i = 57 r = 57
Operator ++ pada i maupun r akan mengubah nilai keduanya, karena i dan r menyiratkan memori yang sama. Dalam fungsi pengiriman argumen dapat bersifat berdasar nilai dan berdasar referensi. Pengiriman argumen berdasarkan nilai yaitu argumen yang dikirimkan dimaksudkan tidak untuk diubah sekembalinya dari pemanggilan fungsi. Sedangkan pengiriman argumen berdasar referensi yaitu argumen yang dikirimkan dimaksudkan untuk diubah sekembalinya dari pemanggilan fungsi. Program 4.13 #include #include void tukar(int a, int b); void main() { int nil1,nil2; cout<<"Nilai 1 : "; cin>>nil1; cout<<"Nilai 2 : "; cin>>nil2; cout<<"Nilai 1 sebelum tukar : "<
Hasil eksekusi : Nilai Nilai Nilai Nilai
1 2 1 2
: 10 : 20 sebelum tukar : 10 sebelum tukar : 20
Nilai Nilai Nilai Nilai
1 2 1 2
dalam tukar : dalam tukar : sesudah tukar sesudah tukar
20 10 : 10 : 20
Pada contoh diatas fungsi tukar memiliki dua argumen fungsi yang pengirimannya berdasar nilai karena sekembali dari pemanggilan fungsi argumen yang dikirimkan nilainya tetap. Sehingga fungsi tukar diatas tidak menghasilkan nilai sesuai dengan yang diharapkan yaitu menukar kedua nilai yang dikirimkan. Untuk mengatasi permasalahan diatas maka argumen pada fungsi tukar dikirimkan secara referensi : Program 4.14 #include #include void tukar(int &a, int &b); void main() { int nil1,nil2; cout<<"Nilai 1 : "; cin>>nil1; cout<<"Nilai 2 : "; cin>>nil2; cout<<"Nilai 1 sebelum tukar : "<
Hasil eksekusi : Nilai Nilai Nilai Nilai Nilai Nilai Nilai Nilai
1 2 1 2 1 2 1 2
: 10 : 20 sebelum tukar sebelum tukar dalam tukar : dalam tukar : sesudah tukar sesudah tukar
: 10 : 20 20 10 : 20 : 10
Array sebagai argumen fungsi Array dapat juga berkedudukan sebagai parameter dalam argumen fungsi :
Program 4.15 #include #include const int brs = 10; const int klm = 10; void jumlah(int a[brs][klm],int b[brs][klm],int c[brs][klm], int jbr, int jkl); void main() { int mat_a[brs][klm], mat_b[brs][klm], mat_c[brs][klm]; int br,kl; clrscr(); cout<<"Masukan jumlah Baris : "; cin>>br; cout<<"masukan Jumlah kolom : "; cin>>kl; for(int i=0;i
>mat_a[i][j]; } } for(int i=0;i
>mat_b[i][j]; } } jumlah(mat_a,mat_b,mat_c,br,kl); clrscr(); cout<<"Matrik A"<<endl; for(int i=0;i
//menampilkan matrik A
cout<<"\nMatrik B"<<endl; //menampilkan matrik B for(int i=0;i
void jumlah(int a[brs][klm],int b[brs][klm],int c[brs][klm],int jbr, int jkl) { for(int i=0;i<jbr;i++) { for(int j=0;j<jkl;j++) { c[i][j]=a[i][j]+b[i][j]; } } }
Inline Function Inline function dengan cukup menyisipkan kata-kata inline didepan tipe nilai balik fungsi dalam pendefinisian fungsi. Contoh : inline int jumlah (int x, int y) { return(x + y); }
inline function disarankan dipakai pada fungsi yang sering dipanggil dan ukurannya kecil (terdiri satu atau dua pernyataan), terutama jika dilibatkan pada pernyataan pengulangan proses (while, for dan do-while). Misalnya pada bentuk seperti berikut : for
(int i = 1; i < 100; i++) cout << i << “.” << jumlah (i, 2 * i) << endl;
jika fungsi jumlah() tidak ditulis sebagai inline function, proses tersebut akan menjadi relatif lambat. Program 4.16 #include #include // Definisi fungsi sebagai inline inline int jumlah(int x, int y) { return(x + y ); } void main() { clrscr(); for (int i = 1; i < 100; i ++ ) cout << i << " . " << jumlah(i, 2 * i) << endl; getch(); }
Function Overloading Function Overloading atau Overloading terhadap fungsi memungkinkan sebuah fungsi dapat menerima bermacam-macam tipe dan memberikan nilai balik yang bervariasi pula.
Program 4.17 #include #include // Prototipe fungsi int kuadrat (int i); long kuadrat(long l); double kuadrat(double d); void main() { cout << kuadrat(2) << endl; cout << kuadrat(66666) << endl; cout << kuadrat(1.2) << endl; getch(); } // Definisi fungsi int kuadrat (int i) { return(i * i); } long kuadrat (long l) { return(l * l); } double kuadrat (double d) { return(d * d); }
Hasil eksekusi : 4 149388260 1.44
Rekursi Fungsi dalam C++ dapat dipakai secara rekursi, artinya suatu fungsi dapat memanggil fungsi yang merupakan dirinya sendiri. Penerapan rekursi diantaranya untuk menghitung nilai : Xn
Dengan n merupakan bilangan bulat positif. Solusi dari persoalan ini berupa : Jika n = 1 maka Xn = X Selain itu : Xn = X * X2 – 1 * X3 – 1
Program 4.18 #include #include long int pangkat ( int x, int n); void main() { int x, y; clrscr(); cout << "Menghitung x ^ y "<< endl; cout << "x = " ; cin >> x ; cout << "y = " ; cin >> y ; cout << x << " ^ " << y << " = " << pangkat(x, y) << endl;
getch(); } long int pangkat(int x, int n) { if (n == 1 ) return(x); else return(x * pangkat(x, n - 1)); }
Hasil elsekusi : Menghitung x ^ y x = 3 y = 4 3 ^ 4 = 81