Modul 1 Pengenalan Bahasa C
1. Sejarah
Bahasa C merupakan perkembangan dari bahasa BCPL yang dikembangkan oleh oleh Marti Martin n Richa Richards rds pada pada tahun tahun 196 1967. 7. Sela Selanju njutny tnyaa bahas bahasaa ini ini memb member erika ikan n ide ide kepada Ken Thompson yang kemudian mengembangkan bahasa yang disebut bahasa B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis Ricthie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah AT&T Bell Laboratories). Bahasa C pertama kali digunakan di computer Digital Equipment Corporation PDP-11 yang menggunakan system operasi UNIX. Hingga saat ini penggunaan bahasa C telah merata di seluruh dunia. Hampir semua perguruan perguruan tinggi di dunia menjadikan menjadikan bahasa C sebagai salah satu mata kuliah wajib. Selain itu, banyak bahasa pemrograman populer seperti PHP dan Java menggunakan sint sintak akss dasa dasarr yang yang miri mirip p baha bahasa sa C. Oleh Oleh kare karena na itu, itu, kita kita juga juga sang sangat at perl perlu u mempelajarinya.
2. Kelebihan dan Kekurangan Bahasa C Kelebihan Bahasa C •
Bahasa C tersedia hampir di semua jenis computer.
•
Kode Kode bahas bahasaa C sifat sifatny nyaa adala adalah h porta portabl blee dan dan fleksi fleksibel bel untuk untuk semua semua jenis jenis
computer. •
Bahasa C hanya menyediakan sedikit kata-kata kunci, hanya terdapat 32 kata
kunci. •
Proses executable program bahasa C lebih cepat
•
Dukungan pustaka yang banyak.
•
C adalah bahasa yang terstruktur
•
Bahasa C termasuk bahasa tingkat menengah
Kekurangan Bahasa C •
Banyakny Banyaknyaa Operat Operator or serta serta fleksibi fleksibilit litas as penulis penulisan an program program kadang-ka kadang-kadang dang
membingungkan pemakai. 1
•
Bagi pemula pada umumnya akan kesulitan menggunakan pointer
3. Mengenal Editor Bahasa C 3.1 Memulai Bahasa C
Buka Editor Bahasa C yang ada, seperti Bordland C, Turbo C, dan sebagainya. Semua program yang ada di tutorial ini bisa dicoba Turbo C.
3.2 Sekilas Mengenai Editor Turbo C
Untuk mengkompilasi Program, langkah-langkahnya sbb :
Pilih menu Compile dengan menekan Alt + C
Pilih Submenu Compile
Enter
Akan ditampilkan hasil kompilasi Program, tekan sembarang tombol Untuk menjalankan program :
Pilih menu Run dengan menekan Alt + R
Pilih submenu Run dan tekan Enter
3.3 Menu-menu dalam Turbo C :
Menu-menu dalam Turbo C++ seperti terlihat pada gambar 1.
Gambar 1.1 Tampilan Editor Turbo C++
2
•
Bagi pemula pada umumnya akan kesulitan menggunakan pointer
3. Mengenal Editor Bahasa C 3.1 Memulai Bahasa C
Buka Editor Bahasa C yang ada, seperti Bordland C, Turbo C, dan sebagainya. Semua program yang ada di tutorial ini bisa dicoba Turbo C.
3.2 Sekilas Mengenai Editor Turbo C
Untuk mengkompilasi Program, langkah-langkahnya sbb :
Pilih menu Compile dengan menekan Alt + C
Pilih Submenu Compile
Enter
Akan ditampilkan hasil kompilasi Program, tekan sembarang tombol Untuk menjalankan program :
Pilih menu Run dengan menekan Alt + R
Pilih submenu Run dan tekan Enter
3.3 Menu-menu dalam Turbo C :
Menu-menu dalam Turbo C++ seperti terlihat pada gambar 1.
Gambar 1.1 Tampilan Editor Turbo C++
2
File, terdiri dari :
(1) New, untuk memulai program baru (2) Open, untuk mengambil atau membuka program (3) Save, untuk menyimpan file/program (4) Save as, untuk menyimpan file/program (5) Save all, untuk menyimpan seluruh file/program (6) Print, untuk mencetak program (7) Exit, untuk keluar dari Turbo C Edit, terdiri dari :
(1) Undo, untuk membatalkan pengeditan terakhir (2) Redo, untuk kembali ke pengeditan terakhir yang telah di undo. (3) Cut, untuk memotong bagian tertentu dari program. (4) Copy, untuk menduplikasi bagian program (5) Paste (6) Clear, untuk menghapus bagian tertentu dari program (7) Select All Search, terdiri dari :
(1) Find… (2) Replace… (3) Search again… (4) Browse symbol (5) dst View, terdiri dari :
(1) Class Expert (2) Project (3) Message (4) Classes (5) dst Project , terdiri dari :
(1) App expert… (2) New projext.. (3) Open project… (4) New target… (5) dst 3
Debug, terdiri dari
(1) run, untuk menjalakan program (2) Stop over (3) Target into (4) Toggle breakpoint (5) Dst Tool, terdiri dari :
(1) Resource workshop (2) Grep (3) Winsight (4) Winspector (5) Key Map Compiler Options, terdiri dari :
(1) Project…. (2) Target… (3) Environment… (4) dst Window, terdiri dari :
(1) Cascade (2) Tile horison (3) Tile vertical (4) dst Help, terdiri dari
(1) Contens (2) Keyword search (3) Keybord (4) dst
4. Penulisan Program Bahasa C
Program Bahasa C tidak mengenal aturan penulisan di kolom tertentu, jadi bisa dimulai dari kolom manapun. Namun demikian, untuk mempermudah pembacaan program dan untuk keperluan dokumentasi, sebaiknya penulisan bahasa C diatur sedemikian rupa sehingga mudah dan enak dibaca.
4
Contoh penulisan Program Bahasa C yang baik dan yang kurang baik, lihat pada listing 1.1 dan listing 1.2.
#include “stdio.h” void main() { printf(“Bahasa C\n”); }
listing 1.1 #include “stdio.h” void main() { printf(“Bahasa C”); }
listing 1.2
Kedua listing di atas bila dijalankan akan menghasilkan hasil yang sama berupa tulisan “Bahasa C” di layar, namun dari segi penulisannya listing 1.1 tampaknya lebih mudah dibaca dan lebih rapih dibanding dengan listing 1.2.
Modul 2 Struktur Dasar Bahasa C
1. Tipe Data
Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer. Misalnya saja 5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5 dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika keduanya bertipe float maka akan menghasilkan nilai 2.5000000. Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih efisien dan efektif. Dalam bahasa C terdapat lima tipe data dasar, yaitu: No 1 2 3
Tipe Data char int float
Ukuran 1 byte 2 byte 4 byte
Range (jangkauan) -128 s/d 127 - 32768 s/d 32767 -3.4E-38 s/d 3.4E+38
5
Format %c %i, %d %f
Keterangan Karakter/string Integer/bilangan bulat Float/bilangan pecahan
4 5
double void
8 byte 0 byte
-1.7E-308 s/d 1.7+308 -
%lf -
Pecahan presisi ganda Tidak bertipe
Listing 2.1 Contoh pendeklarasian tipe data /* Contoh Program : */ #include "stdio.h" #include "conio.h" void main() { int x; float y; char z; double w; clrscr(); /* untuk membersihkan layar */ x = 10; /* variable x diisi dengan 10 */ y = 9.45; /* variable y diisi dengan 9.45 */ z = 'C'; /* variable z diisi dengan karakter "C" */ w = 3.45E+20; /* variable w diisi dengan 3.45E+20 */ printf("Nilai dari x adalah : %i\n", x); printf("Nilai dari y adalah : %f\n", y); printf("Nilai dari z adalah : %c\n", z); printf("Nilai dari w adalah : %.2f\n", w); getch(); }
2. Konstanta
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses program berlangsung. Konstanta nilainya selalu tetap. Konstanta harus didefinisikan terlebih dahulu di awal program. Konstanta dapat bernilai integer, pecahan, karakter dan string. Contoh konstanta : 50; 13; 3.14; 4.50005; ‘A’; ‘Bahasa C’. Selain itu, bahasa C juga menyediakan beberapa karakter khusus yang disebut karakter escape, antara lain:
\a : untuk bunyi bell (alert) \b : mundur satu spasi (backspace) \f : ganti halaman (form feed) \n : ganti baris baru (new line) \r : ke kolom pertama, baris yang sama (carriage return) \v : tabulasi vertical 6
\0 : nilai kosong (null) \’ : karakter petik tunggal \” : karakter petik ganda \\ : karakter garis miring 3. Variable
Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya selalu tetap, nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan. Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai berikut: •
Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf.
•
Bahasa C bersifat case-sensitive artinya huruf besar dan kecil dianggap berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda,
•
Tidak boleh mengandung spasi.
•
Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah (underscore). Yang termasuk symbol khusus yang tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -, +, = dsb
•
Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
Contoh penamaan variabel yang benar : NIM, a, x, nama_mhs, f3098, f4, nilai, budi, dsb .
Contoh penamaan variable yang salah: %nilai_mahasiswa, 80mahasiswa, rata-rata, ada spasi, penting!, dsb
4. Deklarasi
Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program. Identifier dapat berupa variable, konstanta dan fungsi.
4.1 Deklarasi Variabel
Bentuk umum pendeklarasian suatu variable adalah : Nama_tipe nama_variabel;
Contoh : int x; // Deklarasi x bertipe integer
7
char y, huruf, nim[10]; // Deklarasi variable bertipe char float nilai; // Deklarasi variable bertipe float double beta; // Deklarasi variable bertipe double int array[5][4]; // Deklarasi array bertipe integer char *p; // Deklarasi pointer p bertipe char
4.2 Deklarasi Konstanta
Dalam bahasa C konstanta dideklarasikan menggunakan preprocessor #define. Contohnya: #define PHI 3.14 #define nim “0111500382” #define nama “Sri Widhiyanti”
4.3 Deklarasi Fungsi
Fungsi merupakan bagian yang terpisah dari program dan dapat diaktifkan atau dipanggil di manapun di dalam program. Fungsi dalam bahasa C ada yang sudah disediakan sebagai fungsi pustaka seperti printf(), scanf(), getch() dan untuk menggunakannya tidak perlu dideklarasikan. Fungsi yang perlu dideklarasikan terlebih dahulu adalah fungsi yang dibuat oleh programmer. Bentuk umum deklarasi sebuah fungsi adalah: Tipe_fungsi nama_fungsi(parameter_fungsi);
Contohnya: float luas_lingkaran(int jari); void tampil(); int tambah(int x, int y);
5. Operator
Operator merupakan simbol atau kata yang dapat digunakan dalam program untuk melakukan suatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai memberikan nilai ke suatu variabel, membandingkan dua buah nilai, dsb.
5.1 Operator Penugasan
Operator Penugasan ( Assignment operator ) dalam bahasa C berupa tanda sama dengan (“=”). Contoh :
8
nilai = 80; A = x * y;
Artinya: variable “nilai” diisi dengan 80 dan variable “A” diisi dengan hasil perkalian antara x dan y. 5.2 Operator Aritmatika
Bahasa C menyediakan lima operator aritmatika, yaitu:
. * : untuk perkalian . / : untuk pembagian . % : untuk sisa pembagian (modulus) . + : untuk pertambahan . - : untuk pengurangan Catatan: operator % digunakan untuk mencari sisa pembagian antara dua bilangan.
Misalnya: 9 % 2 = 1 9 % 3 = 0 9 % 5 = 4 9 % 6 = 3
/* Contoh Program 2 */ /* Penggunaan operator % untuk mencetak deret bilangan genap antara 1 - 100 */ #include "stdio.h" #include "conio.h" void main() { int bil; clrscr(); // untuk membersihkan layar for (bil=1; bil<100; bil++) { if(bil % 2 == 0) //periksa apakah 'bil' genap printf("%5.0i", bil); } getch(); }
/*Contoh program 3 */
9
#include "stdio.h" #include "conio.h" void main() { clrscr(); // untuk membersihkan layar printf("Nilai dari 9 + 4 = %i", 9 + 4); /* mencetak hasil 9 + 4 */ printf("\n"); printf("Nilai dari 9 - 4 = %i", 9 - 4); /* mencetak hasil 9 - 4 */ printf("\n"); printf("Nilai dari 9 * 4 = %i", 9 * 4); /* mencetak hasil 9 * 4 */ printf("\n"); printf("Nilai dari 9 / 4 = %i", 9 / 4); /* mencetak hasil 9 / 4 */ getch(); }
5.3 Operator Hubungan (Perbandingan)
Operator Hubungan digunakan untuk membandingkan hubungan antara dua buah operand (sebuah nilai atau variable. Operator hubungan dalam bahasa C:
5.3.1 Operator Arti Contoh <
Kurang dari x < y Apakah x kurang dari y
<=
Kurang dari sama dengan x <= y Apakah x kurang dari sama dengan y
> Lebih
dari x > y Apakah x lebih dari y
>=
Lebih dari sama dengan x >= y Apakah x lebih dari sama dengan y
==
Sama dengan x == y Apakah x sama dengan y
!=
Tidah sama dengan x != y Apakah x tidak sama dengan y
5.4 Operator Logika
Jika operator hubungan membandingkan hubungan antara dua buah operand, maka operator logikadigunakan untuk membandingkan logika hasil dari operator-operator hubungan.
Operator logika ada tiga macam, yaitu : . && : Logika AND (DAN) . || : Logika OR (ATAU) . ! : Logika NOT (INGKARAN)
5.5 Operator Bitwise
10
Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada di memori. Operator bitwise dalam bahasa C: . << : Pergeseran bit ke kiri . >> : Pergeseran bit ke kanan . & : Bitwise AND . ^ : Bitwise XOR (exclusive OR) . | : Bitwise OR . ~ : Bitwise NOT
5.6 Operator Unary
Operator Unary merupakan operator yang hanya membutuhkan satu operand saja. Dalam bahasa C terdapat beberapa operator unary, yaitu: Operator Arti/Maksud Letak Contoh Equivalen •
Unary minus Sebelum operator A + -B * C A + (-B) * C
•
++ Peningkatan dengan penambahan nilai 1 Sebelum dan sesudah A++ A = A
+1 •
Penurunan dengan pengurangan nilai 1 Sebelum dan sesudah A-- A = A – 1
•
sizeof Ukuran dari operand dalam byte Sebelum sizeof(I) -
•
! Unary NOT Sebelum !A -
•
~ Bitwise NOT Sebelum ~A -
•
& Menghasilkan alamat memori operand Sebelum &A -
•
Menghasilkan nilai dari pointer Sebelum *A -
Catatan Penting !
Operator peningkatan ++ dan penurunan -- jika diletakkan sebelum atau sesudah operand terdapat perbedaan. Perhatikan contoh berikut:
/* Contoh Program 4 */ /* Perbedaan operator peningkatan ++ yang diletakkan di depan dan dibelakang operand */ #include #include void main() { int x, nilai; clrscr(); x = 5;
11
nilai = ++x; /* berarti x = x + 1; nilai = x; */ printf("nilai = %d, x = %d\n", nilai, x); nilai = x++; /* berarti nilai = x; nilai = x + 1; */ printf("nilai = %d, x = %d\n", nilai, x); getch(); }
/* Contoh Program 5 */ #include "stdio.h" #include "conio.h" void main() { int b, nilai; clrscr(); // untuk membersihkan layar b = 15; nilai = --b; /* berarti b = b - 1; nilai = b; */ printf("nilai = %d, b = %d\n", nilai, b); nilai = b--; /* berarti nilai = b; b = b + 1; */ printf("nilai = %d, b = %d\n", nilai, b); getch(); }
6. Komentar Program
Komentar program hanya diperlukan untuk memudahkan pembacaan dan pemahaman suatu program (untuk keperluan dokumentasi program). Dengan kata lain, komentar program hanya merupakan keterangan atau penjelasan program. Untuk memberikan komentar atau penjelasan dalam bahasa C digunakan pembatas /* dan */ atau menggunakan tanda // untuk komentar yang hanya terdiri dari satu baris. Komentar program tidak akan ikut diproses dalam program (akan diabaikan). Contoh program: /* Contoh program 6 */ #include "stdio.h" #include "conio.h" void main() { clrscr(); /* Ini untuk membersihkan layar tampilan */ printf("Contoh Penggunaan Komentar"); //komentar tidak ikut diproses
12
getch(); /* Dan ini untuk menahan tampilan di layer */ }
MODUL III PERINTAH INPUT DAN OUTPUT
C++ menyediakan perintah output/input yang dapat digunakanuntuk mencetak sesuatu hasil dari program atau mendapatkan sesuatu input dari keyboard. Operasi yang dimaksudkan adalah printf dan scanf.
1. Perintah Output
Perintah ini digunakan untuk menampilkan hasil di dalam C++.
1.1 Printf
Digunakan untuk menampilkan hasil yang terformat dengan menggunakan format spesification, seperti yang terlihat pada tabel 3.1 Tabel 3.1 Fungsi Printf Fungsi Pustaka %d %c %s %f %e %u %x %p
Keterangan
Untuk nilai integer Untuk nilai char Untuk nilai string Untuk nilai floating point Untuk nilai floating point dengan bentuk eksponential Untuk nilai integer tak bertanda Untuk nilai integer dalam bentuk hexadesimal Untuk nilai pointer
1.2 Puts
Digunakan hanya untuk menampilkan nilai string. Perhatikan contoh program berikut ini:
listing program 3.1 contoh penggunaan puts /* Nama program : puts.cpp
*/
#include main () { char *nama; nama=”Lina Dewi”;
13
puts (nama); }
bila program dijalankan, maka akan didapatkan hasil:
Lina Dewi
1.3 Putchar
Digunakan hanya untuk menampilkan nilai karakter. Perhatikan contoh program berikut ini: listing program 3.2 contoh penggunaan putchar /* Nama program : putchar.cpp
*/
#include main () { char a; a=’B’; putchar (a); putchar (‘\n’); putchar (‘-’); }
bila program dijalankan, maka akan didapatkan hasil:
B 1.4 Cout
Fungsi cout hampir sama dengan printf, puts, maupun putchar. Perpedaannya terletak di: 1. Preprosesor Jika menggunakan printf, puts, maupun putchar preprosesor yang digunakan adalah #include , sedangkan pada cout preprosesornya menggunakan #include .
2. Komentar Pada printf, puts, maupun putchar komentar menggunakan simbol /* dan diakhiri dengan */, sedangkan pada cout komentarnya menggunakan simbol //.
14
3. Ganti Baris Kalau printf, puts, maupun putchar ganti baris atau garis barunya menggunakan simbol \n, sedangkan pada cout ganti baris atau garis barunya menggunakan simbol \n atau endl.
2. Perintah Input
Perintah ini digunakan untuk memasukkan berbagai jenis data ke dalam keyboard.
2.1 Scanf
Digunakan untuk memasukkan berbagai jenis data melalui keyboard. Perhatikan contoh program berikut ini: listing program 3.3 contoh penggunaan scanf /* Nama program : scanf.cpp
*/
#include main () { int nilai, tugas; printf (“Masukkan sebuah nilai:”); scanf(“%d”,&nilai); printf (“Masukkan nilai tugas:”); scanf(“%d”,&tugas); if (nilai>70 && tugas>=75) printf(“Lulus\n”); else printf(“Tidak Lulus\n”); }
2.2 Getch
Digunakan untuk membaca sebuah karakter tanpa di akhiri ENTER. Bentuk umumnya adalah sebagai berikut: Karakter=getch();
Getch membaca karakter tunggal yang dimasukkan lewat keyboard tetapi hasilnya tidak ditampilkan melalui layar.
2.3 Getche
Digunakan untuk membaca sebuah karakter tanpa di akhiri ENTER. Bentuk umumnya adalah sebagai berikut: 15
Karakter=getche();
Getche membaca karakter tunggal yang dimasukkan lewat keyboard dan hasilnya akan ditampilkan pada layar.
2.4 Cin
Fungsi cin ini berpasangan dengan fungsi cout, dimana fungsi cin adalah untuk memasukkan nilai variabel ke dalam program melalui keyboard. Perhatikan contoh program berikut ini: listing program 3.4 contoh penggunaan cin /* ---------------------------------*/ /* Program : cin.cpp */ /* ---------------------------------*/ #include main() { int kali, bil1, bil2; float luas, keliling; cout << "Masukan bilangan pertama:"; cin >> bil1; cout << "\n”; cout << "Masukan bilangan kedua:"; cin >> bil2; kali=bil1*bil2; cout << "\n”; cout << "Hasil perkalian " << bil1 << ” dan “ << bil2 << “ adalah “ << kali << endl; }
Contoh soal dan jawaban
1. Buatlah program untuk menghitung luas dan keliling empat persegi panjang. Adapun rumus luas dari empat persegi panjang adalah Luas=panjang*lebar, sedangkan keliling empat persegi panjang adalah Keliling=2*(panjang+lebar). Panjang dan lebar dimasukkan melalui scanf.
Jawaban /* ---------------------------------*/ /* Program : soal1.cpp */ /* ---------------------------------*/ #include main() { int panjang,lebar,luas, keliling; printf ("masukan panjang:"); scanf("%d",&panjang); printf ("masukan lebar:"); scanf("%d",&lebar); luas=panjang*lebar;
16
keliling=2*(panjang+lebar); printf ("Jadi luasnya adalah : %d\n",luas); printf ("Jadi keliling adalah : %d\n",keliling); }
2. Buatlah program menghitung luas dan keliling lingkaran. Adapun rumus luas lingkaran
adalah
Luas=phi*r*r,
sedangkan
keliling
lingkaran
adalah
Keliling=2*phi*r. Catatan r adalah jari-jari dan phi = 3.141593. Jari-jari dimasukkan kedalam scanf. Jawaban /* ---------------------------------*/ /* Program : soal2.cpp */ /* ---------------------------------*/ #include main() { int jari; float luas, keliling; printf ("masukan jari-jari:"); scanf("%d",&jari); luas=3.141593*jari*jari; keliling=2*3.141593*jari; printf ("Jadi luasnya adalah : %f\n",luas); printf ("Jadi keliling adalah : %f\n",keliling); }
Latihan:
1. Buatlah program untuk menghitung luas dan volume balok. Adapun rumus dari luas balok adalah Luas=(2*p*l)+(2*p*t)+(2*l*t), sedangkan volume balok adalah Volume=p*l*t. Catatan p adalah panjang, l adalah lebar, dan t adalah tinggi. Masukkan panjang, lebar, dan tinggi melalui scanf. 2. Buatlah program untuk menghitung nilai mata uang dalam bentuk dollar, yen, dan peso. Adapun inputannya adalah nilai rupiah, dengan rumus: Dollar=rupiah/8250 Yen=rupiah/4000 Peso=rupiah/2500
Rupiah dimasukkan ke dalam scanf.
17
Modul 4 DECISION I (PENYELESAIAN KONDISI ) Decision digunakan untuk memilih salah satu alternatif jawaban yang tepat dari
pilihan yang ada. Penyeleksian kondisi dapat diibaratkan sebagai katup atau kran yang mengatur jalannya air. Bila katup terbuka maka air akan mengalir dan sebaliknya bila katup tertutup air tidak akan mengalir atau akan mengalir melalui tempat lain. Fungsi penyeleksian kondisi penting artinya dalam penyusunan bahasa C, terutama untuk program yang kompleks.
1. STRUKTUR KONDISI “IF….”
Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau bernilai benar, maka pernyataan yang ada di dalam blok if akan diproses dan dikerjakan. Bentuk umum struktur kondisi if adalah: if(kondisi) pernyataan;
Contoh Program 1: /* Program struktur kondisi if untuk memeriksa suatu kondisi */ #include “stdio.h” #include “conio.h” void main() { float nilai; printf(“Masukan nilai yang didapat : “); scanf(“%f”, &nilai); if(nilai > 65) printf(“\n ANDA LULUS !!!!\n”); getch(); }
18
Bila program tersebut dijalankan dan kita memasukan nilai 80, maka perintah mencetak perkataan LULUS !!!! akan dilaksanakan, namun sebaliknya bila kita memasukan sebuah nilai yang kurang dari 65 maka program akan berhenti dan tidak dihasilkan apa-apa.
Contoh Program 2 : /* Program contoh penerapan struktur kondisi if */ #include"stdio.h" #include"conio.h" void main() { clrscr(); int a,b,c,max; printf("Entry bil 1 : ");scanf("%i",&a); printf("Entry bil 2 : ");scanf("%i",&b); printf("Entry bil 3 : ");scanf("%i",&c); if((a>b)&&(a>c)) max=a; if((b>a)&&(b>c)) max=b; if((c>a)&&(c>b)) max=c; printf("Bil terbesar : %i\n",max); if(max>0) printf("Bil tsb adalah bil positif\n"); if(max<0) printf("Bil tsb adalah bil negatif"); getch(); }
2. STRUKTUR KONDISI “IF......ELSE….”
Dalam struktur kondisi if.....else minimal terdapat dua pernyataan. Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua yang dilaksanakan. Bentuk umumnya adalah sebagai berikut: if(kondisi) pernyataan-1 else pernyataan-2
19
Contoh Program 3: #include “stdio.h” #include “conio.h” void main() { float nilai; clrscr(); printf(“Masukan nilai yang didapat : “); scanf(“%f”, &nilai); /* Masukan akan disimpan dalam variable nilai */ if (nilai > 65) printf(“\n LULUS !!!\n”); else printf(“\n TIDAK LULUS !!!\n”); getch(); }
Bila program tersebut dijalankan dan kita memasukan nilai 80 maka akan dicetak perkataan “LULUS !!!” namun bila kita memasukan nilai yang kurang dari 65 maka akan tercetak perkataan “TIDAK LULUS !!!”. Hal ini berbeda dengan struktur if dimana program akan berhenti bila kita memasukan nilai kurang dari 65.
3. STRUKTUR KONDISI IF DALAM IF
Perintah IF dalam IF sering disebut nested-if. Perintah ini mempunyai bentuk umum sebagai berikut: If (kondisi1) If (kondisi2) Pernyataan1; Else Pernyataan2; Else Pernyataan3;
20
Pernyataan If dalam if juga mempunyai bentuk yang majemuk yang sering disebut if bertingkat. Bentuk umumnya adalah sebagai berikut: If (kondisi1) Pernyataan1; Else if (kondisi2) Pernyataan2; Else if (kondisi3) Pernyataan3; … … ... else pernyataann;
Dalam hal ini jika kondisi 1 benar maka pernyataan1 yang dikerjakan dan apabila kondisi 1 tidak benar maka kondisi2 yang akan dilihat. Dan seterusnya, jika kondisi diatasnya tidak benar maka kondisi yang terakhir yang akan dikerjakan.
Contoh program 4: #include main() { int nilai; char huruf; printf (“Masukkan nilai:”);scanf(“%d”,&nilai); if (nilai>=81 && nilai<=100) huruf=’A’; else if (nilai>=71 && nilai<=81) huruf=’B’; else if (nilai>=61 && nilai<=71) huruf=’C’; else if (nilai>=51 && nilai<=61) huruf=’D’; else huruf=’E’; printf (“Jadi nilai huruf yang didapat adalah: %c\n”,huruf);
21
}
4. PERINTAH SWITCH
Perintah SWITCH merupakan pernyataan yang dirancang untuk menangani pengambilan keputusan yang melibatkan sejumlah pilihan alternatif yang diantaranya untuk menggantikan pernyataan IF bertingkat. Bentuk umumnya adalah sebagai berikut : SWITCH (Ekspresi) { Case konstanta1 : pernyataan1; break; Case konstanta2 : pernyataan2; break; Case konstanta3 : Pernyataan3; break; ... Case Konstantan : Pernyataan ; Break; Default : Pernyataann x ; }
Ekspresi dapat berupa ungkapan yang bernilai integer atau bertipe karakter. Setiap konstanta1, konstanta2, konstanta3, konstanta4 sampai dengan konstantan dapat berupa konstanta integer atau konstanta karakter. Setiap pernyataan1, pernyataan2, pernyataan3, pernyataan4 sampai pernytaannxdapat berupa sebuah atau beberapa pernyataan. Pengujian pada switch akan dimulai dari konstanta1. apabila nilainya cocok dengan ekspresi maka pernyataan satu akan dijalankan. Perintah break mnyebabkan eksekusi diarahkan ke akhir switch kalau nilai konstanta satu tidak sama dengan nilai ekspresi dan kemudian baru diteruskan pengujian dengan konstanta2 dan seterusnya. Jika sampai pada pengujian akhir tidak ada yang cocok maka default akan dijalankan.
22
Jika pernyataan break tidak diikutsertakan pada setiap case maka walaupun konstantanya cocok denan ekspresi, maka setelah pernyataan pada case tersebut dikerjakan akan dilanjutkan pada case berikutnya sampai ditemui pernyataan break pada akhir switch.
Program 5.1. Contoh program case /*---------------------------------------------*/ /* program : case.cpp */ /*--------------------------------------------*/ #include main ( ) { int kdhari ; printf (“ masukkan kode hari [1-7] : ”) ; scanf (“%d” , &kdhari) ; switch (kdhari) { case 1 : printf (“ senin ”); break; case 2 : printf (“ selasa ”); break; case 3 : printf (“ rabu ”); break; case 4 : printf (“ kamis ”); break; case 5 : printf (“ jum’at ”); break; case 6 : printf (“ sabtu ”); break; case 7 : printf (“ minggu ”); break; default : Printf (“ Kode tidak ada “); } }
Bila program di atas dijalankan maka hasilnya adalah sebagai berikut : Masukkan kode hari [1 – 7 ] : 1 Senin
Penjelasan : Dari program di atas, apabila dimasukkan kode hari = 1, maka sesuai kondisi yang diterapkan di dalam program yaitu case 1, maka pernyataan pertama yang ada pada case satu yaitu mencetak hari senin. Apabila dimasukkan kode hari = 2, maka
23
pernyataan kedua yang ada pada case 2 yaitu mencetak hari Selasa yang akan dikerjakan. Dan seterusnya tergantung dari kode hari yang dimasukkan.
MODUL 5 PERULANGAN (LOOPING) Dalam bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan proses yang berulangulang sebanyak keinginan kita. Misalnya saja, bila kita ingin menginput dan mencetak bilangan dari 1 sampai 100 bahkan 1000, tentunya kita akan merasa kesulitan. Namun dengan struktur perulangan proses, kita tidak perlu menuliskan perintah sampai 100 atau 1000 kali, cukup dengan beberapa perintah saja. Struktur perulangan dalam bahasa C mempunyai bentuk yang bermacam-macam.
STRUKTUR PERULANGAN “ WHILE”
Perulangan WHILE banyak digunakan pada program yang terstruktur. Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah.
Contoh Program 1 : /* Program Perulangan menggunakan while */ #include “stdio.h” #include “conio.h” void main() { int x; x = 1; /* awal variabel */ while (x <= 10) /* Batas akhir perulangan */ { printf(“%d BAHASA C\n”, x); x ++; /* variabel x ditambah dengan 1 */ } getch(); }
24
Jika program tersebut dijalankan maka akan menghasilkan hasil sebagai berikut 1 BAHASA C 2 BAHASA C 3 BAHASA C 4 BAHASA C 5 BAHASA C 6 BAHASA C 7 BAHASA C 8 BAHASA C 9 BAHASA C 10 BAHASA C
Pada perulangan while di atas, proses atau perintah mencetak kata-kata “BAHASA C” akan terus dilakukan selama variabel x masih kurang atau sama dengan 10. Setiap kali melakukan perulangan, nilai dari variabel x akan bertambah 1.
Contoh Program 2 : /* Program mencetak deret bilangan dengan menggunakan while */ #include"stdio.h" #include"conio.h" void main() { clrscr(); int i=1,x; while(i<=5) { x=1; while(x<=i) { printf("%i",x); x=x+1; } printf("\n"); i=i+1; } getch(); }
25
Contoh program 3 : #include #include void main() { int i = 0; while (i != 99) { printf ("\n Masukkan Sebuah Bilangan : "); scanf("%d",&i); printf ("\n Bilangan Anda adalah= %d",i); } }
STRUKTUR PERULANGAN “DO.....WHILE…”
Pada dasarnya struktur perulangan do....while sama saja dengan struktur while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di atas sementara pada perulangan do....while, seleksi while berada di bawah batas perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan.
Contoh Program 4 : #include “stdio.h” #include “conio.h” void main() { int x; x = 1; do { printf(“%d BAHASA C\n”, x); x ++; } while(x <= 10); getch(); }
STRUKTUR PERULANGAN “FOR”
Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya. Dari segi penulisannya, struktur perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan sederhana. Bentuk umum perulangan for adalah sebagai berikut:
for(inisialisasi; syarat; penambahan)
26
pernyataan;
Keterangan :
Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol. syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan. penambahan : pengatur perubahan nilai variabel kontrol. Contoh Program 5 : /* Program perulangan menggunakan for */ #include “stdio.h” #include “conio.h” void main() { int x; for(x = 1; x<= 10; x++) { printf(“%d BAHASA C\n”, x); } getch(); }
Contoh Program 6 : /* Mencari total dan rata-rata sejumlah bilangan menggunakan for */ #include"stdio.h" #include"conio.h" void main() { clrscr(); float r,i,x,t=0; int y; for(y=1; y<=3; y++) for(i=0; i<=2; i++) { printf("Entry bilangan %i : ",y);scanf("%f",&x); t=t+x; y=y+1; } printf("\n Total : %.2f",t); r=t/i; printf("\n Rata rata : %.2f",r); getch(); }
27
MODUL 6 ARRAY (LARIK)
Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan nama yang sama. Letak atau posisi dari elemen array ditunjukkan oleh suatu index. Dilihat dari dimensinya array dapat dibagi menjadi Array dimensi satu, array dimensi dua dan array multi-dimensi. 1. ARRAY DIMENSI SATU
Setiap elemen array dapat diakses melalui indeks. Indeks array secara default dimulai dari 0. Deklarasi Array
Bentuk umum : Tipe_array nama_array[ukuran]; Contoh : Nilai[0] Nilai[1] Nilai[2] Nilai[3] Nilai[4] int Nilai[5]; 70 80 82 60 75
Contoh Program 1 : /*Program untuk menginput nilai mahasiswa dimensi*/ #include #include void main() { int index, nilai[10]; clrscr(); /* input nilai mahasiswa */ printf(“Input nilai 10 mahasiswa : “); for(index=0; index < 10; index++) { printf(“Mahasiswa %i : “, index+1); scanf(“%i”, &nilai[index]); } /* tampilkan nilai mahasiswa */ printf(“Nilai mahasiswa yang telah diinput”); for(index=0; index < 10; index++) { printf(“%5.0i”, nilai[index]); } getch(); }
ke
dalam
array
satu
CATATAN :
String juga sebenarnya merupakan array yang bertipe karakter. Jumlah elemen array
28
menyatakan jumlah string. Contoh Program 2 : /*Program u/ menentukan jurusan & jenjang mahasiswa berdasarkan NIM*/ #include #include #include void main() { char jurusan[25], jenjang[10], nim[10], nama[20]; printf(“Masukkan nama Anda : “); gets(nama); printf(“Masukkan NIM Anda : “); gets(nim); /***** cari jurusan *****/ switch(nim[2]) { case ‘1’ : strcpy(jurusan, “Teknik Informatika”); break; case ‘2’ : strcpy(jurusan, “Sistem Informasi”); break; case ‘3’ : strcpy(jurusan, “Teknik Industri”); break; case ‘4’ : strcpy(jurusan, “Teknik Elektro”); break; default : printf(“Anda salah memasukkan NIM. Coba periksa lagi !”); break; } /***** cari jenjang *****/ if(nim[4] == ‘5’) { strcpy(jenjang, “Strata-1”); } else { if(nim[4] == ‘3’) { strcpy(jenjang,”Diploma-3”); } else printf(“ANda salah memasukkan NIM. Coba periksa lagi !”); } /***** tampilkan data mahasiswa *****/ printf(“ << Data Mahasiswa Universitas Mercu Buana >>“); printf(“\n Nama : %s”, nama); printf(“\n NIM : %s”, nim); printf(“\n Jurusan : %s”, jurusan); printf(“\n Jenjang : %s”, jenjang); getch(); }
2. ARRAY DIMENSI DUA
Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom. Bentuknya dapat berupa matriks atau tabel. Deklarasi array : Tipe_array nama_array[baris][kolom];
Contoh : Int X[3][4]; X[0][0] X[0][1] X[0][2] X[0][3]
29
X[1][0] X[1][1] X[1][2] X[1][3] X[2][0] X[2][1] X[2][2] X[2][3]
Cara mengakses array : Untuk mengakses array, misalnya kita ingin mengisi elemen array baris 2 kolom 3 dengan 10 maka perintahnya adalah sbb: X[1][2] = 10; Untuk mengisi dan menampilkan isi elemen array ada dua cara yaitu :
Row Major Order (secara baris per baris)
Column Major Order (secara kolom per kolom)
Contoh Program 3 : /* Program penjumlahan matriks dua dimensi */ #include "stdio.h" #include "conio.h" void main() { int A[3][4], B[3][4], X[3][4], Y[3][4], C[3][4], i, j; clrscr(); /******* Masukkan matriks A *******/ for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("input data matrik A[%i][%i] : ",i+1,j+1); fflush(stdin);scanf("%i",&A[i][j]); } } /******** Masukkan matriks B ********/ for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("input data matrik B[%i][%i] : ",i+1,j+1); fflush(stdin);scanf("%i",&B[i][j]); } } /******** Proses penjumlahan matriks A dan B ********/ for(i=0;i<3;i++) { for(j=0;j<4;j++) { X[i][j]=A[i][j]+B[i][j]; } } /******** Cetak isi matriks A ********/ printf("\n matrik A\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%6i",A[i][j]); printf("\n"); } printf("\n"); /******** Cetak isi matriks B *******/ printf("\n matrik B\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%6i",B[i][j]);printf("\n"); } printf("\n");
30
/******** Cetak hasil penjumlahan matriks A dan B *******/ printf("\n matrik penjumlahan A+B\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%6i",X[i][j]);printf("\n"); } printf("\n\n"); getch(); }
Contoh aplikasi Array untuk menghitung invers suatu matriks dengan ukuran m x n dengan metode Gauss-Jordan : Contoh Program 4: /* MENGHITUNG INVERS MATRIKS DENGAN METODE GAUSS-JORDAN */ #include #include void main() { float p[20], a[20][20], t; int m, i, j, k, x; clrscr(); printf("\nMasukkan ukuran matriks : \n"); scanf("%d", &m); printf("\nMasukkan nilai elemen matriks yang akan diinvers”); printf(“\nsecara baris per baris\n"); /* Membaca matriks asli */ for(i=1; i<=m; i++) { printf("\n"); for(j=1; j<=m; j++) { printf("A(%d,%d)= ",i, j); scanf("%f", &a[i][j]); } } /* Mencetak Matriks asli */ printf("\nMatriks asli : "); for(i=1; i<=m; i++) { printf("\n"); for(j=1; j<=m; j++) printf(" %.f", a[i][j]); } /* Proses inversi */ for(i=1; i<=m; i++) { p[i] = a[i][j]; a[i][j] = 1; for(j=1; j<=m; j++) { a[i][j] = a[i][j]/p[i]; } for(k=1; k<=m; k++) { if(k != i) { t = a[k][i]; a[k][i] = 0; for(x=1; x<=m; x++) a[k][x] = a[k][x] - a[i][x] * t; } } } /* Mencetak matriks hasil inversi*/ printf("\n\nMatriks inversi : \n");
31
for(i =1; i <=m; i++) { for(j=1; j<=m; j++) printf(" %.1f", a[i][j]); printf(" \n"); } getch(); }
3. ARRAY MULTI-DIMENSI
Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua. Bentuk umumnya yaitu : tipe_array nama_array[ukuran1][ukuran2]…[ukuranN];
Contoh : float X[2][4][3]; X[0][0][0] X[0][0][1] X[0][1][0] X[0][1][1] X[0][2][0] X[0][2][1] X[0][3][0] X[0][3][1]
X[0][0][2] X[0][1][2] X[0][2][2] X[0][3][2]
X[1][0][0] X[1][1][0] X[1][2][0] X[1][3][0]
X[1][0][1] X[1][1][1] X[1][2][1] X[1][3][1]
X[1][0][2] X[1][1][2] X[1][2][2] X[1][3][2]
LATIHAN 1. Buatkan program penjumlahan untuk menghitung matrik 2 x
2! 2. Buatlah sebuah program untuk menginput, menghitung dan
mencetak perkalian matriks 3 x 3!
Modul 8 FUNGSI 8.1 Pendahuluan
Fungsi merupakan bagian (blok) dari kode program yang dirancang untuk melaksanakan tugas tertentu. Fungsi merupakan bagian penting dalam pemrograman C, dengan tujuan:
Program menjadi terstruktur, sehingga mudah dipahami dan
mudah dikembangkan.
Dapat mengurangi pengulangan kode (duplikasi kode).
32
Tugas khusus yang dilakukan suatu fungsi dapat dilihat dari beberapa fungsi standard, seperti misalnya:
getch( ), dengan tugas untuk membaca kode tombol papan
ketik yang ditekan.
printf( ), dengan tugas untuk menampiolkan informasi atau
data ke layar. Pada umumnya fungsi memerlukan masukan yang dinamakan sebagai argumen atau parameter. Masukan ini selanjutnya diolah oleh fungsi dan hasil keluarannya dapat berupa sebuah nilai (disebut nilai keluaran fungsi atau nilai balik fungsi). Bentuk umum sebuah fungsi adalah sebagai berikut: Penentu_tipe nama_fungsi (daftar parameter) Deklarasi parameter { tubuh fungsi }
Penentu tipe digunakan untuk menentuka tipe keluaran fungsi, yang dapat dilipih dari salah satu tipe data yang berlaku dalam C, seperti char atau int . Jika penentu tipe tidak disebutkan , maka akan dianggap sebagai int . Sebuah fungsi dapat saja tidak mengandung parameter sama sekali, bahkan tanpa deklarasi parameter. Contoh: Nama fungsi Tanpa argumen Inisialisasi( ) tidak ada tanda titik-koma { awal fungsi return(0); tubuh fungsi } akhir fungsi
8.2 Memberi Nilai Akhir Fungsi
Sebuah fungsi dapat
mempunyai
nilai
keluaran (seperti
diperlihatkan pada contoh di atas), dan di dalam tubuh fungsi pernyataan yang diberikan ntuk memberikan nilai kahir fungsi dapat berupa pernyataan return.
33
Contoh program berikut ini memperlihatkan penyusunan dan penggunaan suatu fungsi. /* ------------------------------------------- */ /* File program : fungsi.cpp */ /* Contoh pembuatan fungsi */ /* ------------------------------------------- */ #include inisialisasi(); main() { int x, y; x = inisialisasi(); printf("x = %d\n", x); y = inisialisasi (); printf("y = %d\n", y); } inisialisasi() { return(0); }
Contoh hasil eksekusi: C>Fungsi x = 0 y = 0
Program di atas sekaligus menjelaskan bahwa suatu fungsi cukup didefinisikan satu kali, tetapi dapat digunakan beberapa kali untuk menghindari duplikasi kode dan menghemap penulisan program maupun penyimpanan kode dalam memori. Bagi suatu fungsi, jika suatu pernyataan return dieksekusi, maka eksekusi terhadap fungsi akan berakhir dan nilai pada parameter return akabn menjadi keluaran fungsi. Untuk fungsi yang tidak memiliki pernyataan return, maka tanda } akan digunakan sebagai tanda akhir eksekusi fungsi). Pada contoh berikut, fungsi digunakan untuk memperoleh nilai minimum diantara dua nilai yang ada pada parameternya. /* ---------------------------------------------------- */ /* File program : Minimum.cpp */
34
/* Contoh fungsi yang mengandung argumen */ /* ----------------------------------------------------- */ #include minimum(x,y) int x,y; { if (x < y) return(x); else return(y); } main() { int a = 20; int b = 44; int hasil; hasil = minimum(a,b); printf("Nilai terkecil = %d\n", hasil); printf("Nilai terkecil = %d\n", minimum(3,2)); }
contoh eksekusi: C>Minimum Nilai terkecil = 20 Nilai terkecil = 2
Fungsi pada program di atas mempunyai dua buah parameter berupa x dan y. oleh karena itu fungsi juga mengandung bagian untuk mendeklarasikan parameter, berupa : int x, y;
Penentuan nilai keluaran fungsi dilakukan pada tubuh fungsi, dengan pernyataan: if (x < y) return(x); else return(y);
Pernyataan di atas menyatakan:
Jika x < y, maka nilai keluaran fungsi adalah sebesar nilai x. Untuk keadaan selainnya ( x > y), maka keluaran fungsi
adalah sebesar y.
35
Fungsi minimum() dipanggil dua kali. Yang pertama: hasil = minimum(a,b); Yang memberikan nilai terkecil diantara a dan b ke bariabel hasil. Yang kedua dengan pernyataan: printf("Nilai terkecil = %d\n", minimum(3,2)); berupa instruksi untuk menampilkan nilai terkecil antara 3 dan 2. 8.3 Prototipe Fungsi
Dari kedua contoh program di atas, dapat dilihat bahwa penulisan tubuh fungsi bisa pada awal program maupun pada akhir program. •
Pada contoh program minimum.cpp, pendefinisian fungsi
dilakukan pada awal program sebelum pernyataan program utama (main()). Model penulisan ini merupakan model klasik. •
Pada program fungsi.cpp, pendefinisian fungsi dilakukan
setelah program utama, namun pada awal program (sebelum program utama), harus dituliskan nama fungsi dan parameternya yang diakhiri dengan tanda titik-koma. Pendeklarasian fungsi seperti pada program fungsi.cpp dikenal sebagai prototipe fungsi (function prototype). Prototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai:
Tipe keluaran fungsi Fungsi 75.
Jumlah parameter.
Tipe dari masing-masing parameter. Bagi kompiler, informasi dalam prototipe akan digunakan untuk
memeriksa keabsahan (validitas) parameter dalam pemanggilan fungsi. Salah satu keuntungan penggunaan prototipe, kompiler akan melakukan konversi seandainya antara tipe parameter dalam definisi dan parameter saat pemanggilan fungsi tidak sama, atau akan menunjukkan kesalahan kalau jumlah parameter dalam definisi dan saat pemanggilan berbeda. /* ----------------------------------------- */ /* File program : Jumlah.cpp
*/
36
/* Contoh fungsi dengan prototipe */ /* ----------------------------------------- */ #include float jumlah(float x,float y); main() { int a = 6; int b = 3; float c; c = jumlah(a,b); printf("a + b = %g\n",c); printf("Hasil printf("Hasil penjumlahan = %g\n", jumlah(20.1, 0.9)); } float jumlah(float x, float y) { return(x + y); }
hasil eksekusi : c>Jumlah a + b = 9 Hasil penjumlahan = 21
8.4 Parameter Formal dan Parameter Aktual
Para Parame mete terr form formal al adal adalah ah vari variab abel el yang yang ada ada pada ada daft daftar ar parameter dalam definisi fungsi. Pada fungsi jumlah( fungsi jumlah( ) program 6-3, x dan y dinamakan sebagai parameter formal. Parameter aktual adalah parameter (tidak selamanya menyatakan vari variab abel el))
yang ang
digu igunaka nakan n
dala dalam m
pema peman nggil ggilan an
fun fungsi. gsi.
Pada ada
pernyataan: c = jumlah(a, b); y = jumlah(20.1, 0.9);
a dan b merupakan parameter aktual dari fungsi jumlah (), demikian pula 20.1 dan 0.9 (meskipun bukan berupa variabel). 8.5 Cara Melewatkan Parameter
Terdapat dua cara untuk melewatkan parameter ke dalam fungsi, yaitu dengan cara:
37
Pemanggilan dengan nilai (call (call by value). value).
Pemanggilan dengan referensi (call (call by reference). reference).
Pemanggilan Pemanggilan dengan nilai merupakan merupakan cara yang digunakan digunakan pada contoh fungsi fungsi program program terdahulu. Pada pemanggilan pemanggilan dengan nilai, nila nilaii dari dari para parame mete terr ak aktu tual al ak akan an disa disali lin n ke para parame mete terr form formal. al. Dengan cara ini nilai parameter aktual tidak bisa berubah sekalipun nilai parameter formal berubah. /* ------------------------------------------- */ /* File program : Tukar.cpp */ /* Melihat pengaruh pemanggilan dengan nilai */ /* ------------------------------------------- */ #include void tukar (int, int); main() { int a,b; a = 88; b = 77; printf("Nilai printf("Nilai sebelum pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); tukar(a,b); printf("Nilai printf("Nilai sesudah pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); } void tukar (int x, int y) { int z; z = x; x = y; y = z; printf("Nilai printf("Nilai diakhir fungsi tukar()\n"); printf("x = %d y = %d\n\n",x,y); }
hasil eksekusi : c> Tukar Nilai sebelum pemanggilan fungsi a = 88 b = 77 Nilai diakhir fungsi tukar() x = 77 y = 88
38
Nilai sesudah pemanggilan fungsi a = 88 b = 77
Dari contoh program di atas terlihat bahwa hasil pemanggilan fungsi tukar( ), ), variabel a dan b (yang dilewatkan ke fungsi tukar ()) ()) tida tidak k beru beruba bah, h, wala walaup upun un pada pada fung fungsi si tukar ( ) telah telah terjad terjadii penukaran antara parameter x dan y. Hal ini terjadi karena x hanyalah salinan dari a dan y salinan dari b, serta definisi fungsi tidak mengembalikan nilai (diawali dengan void dan tidak ada instruksi return( ) ). Pemang Pemanggil gilan an dengan dengan referensi
meru merupa paka kan n upay upaya a
untu untuk k
melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat digunakan untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi. Adapun perubahan dalam parameter aktual adalah sebagai berikut: Tukar(&a, &b); /* variabel diawali dengan & */
Pendeklarasian parameter: int *px, *py ;
menyatakan bahwa px dan py adalah suatu variabel pointer, yaitu variabel yang berisi alamat variabel yang lain. /* ---------------------------------------------------------- */ /* File program : Tukar2.cpp */ /* Melihat pengaruh pemanggilan dengan referensi */ /* ---------------------------------------------------------- */ #include void tukar (int *px, int *py); main() { int a,b; a = 88; b = 77; printf("Nilai printf("Nilai sebelum pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); tukar(&a,&b); /* parameter alamat a dan alamat b */ printf("Nilai printf("Nilai sesudah pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); } void tukar (int *px, int *py)
39
{ int z; z = *px; *px = *py; *py = z; printf("Nilai diakhir fungsi tukar()\n"); printf("*px = %d *py = %d\n\n",*px,*py); }
Hasil eksekusi : c> Tukar2 Nilai sebelum pemanggilan fungsi a = 88 b = 77 Nilai diakhir fungsi tukar() *px = 77 *py = 88 Nilai sesudah pemanggilan fungsi a = 77 b = 88
8.6 Penggolongan Variabel Berdasarkan Kelas Penyimpanan
Suatu variabel disamping dapat digolongkan berdasarkan jenis/tipe
data,
juga
dapat
digolongkan
berdasarkan
kelas
penyimpanannya (storage class). Penggolongan berdasarkan kelas penyimpanan berupa: •
Variabel lokal
•
Variabel eksternal
•
Variabel statis
•
Variabel register
8.6.1 Varibel Lokal
Variabel lokal adalah variabel yang dideklarasikan dalam fungsi, yang mempunyai sifat: •
Secara otomatis akn diciptakan ketika fungsi dipanggil dan
akan hilang (dari memori) ketika eksekusi terhadap fungsi berakhir. •
Hanya dikenal oleh fungsi tempat variabel dideklarasikan.
40
•
Tidak ada inisialisasi secara otomatis (saat variabel diciptakan
nilainya tidak tentu (acak)). Dalam banyak literatur, variabel lokal disebut juga dengan variabel otomatis. Penerapan
variabel lokal
yaitu
jika variabel
tersebut hanya
digunakan oleh suatu fungsi tertentu, dan tidak dimaksudkan untuk digunakan oleh fungsi yang lain. 8.6.2 Variabel Eksternal
Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi, dan mempunyai sifat: •
•
Dapat diakses oleh semua fungsi. Jika tidak diberi nilai awal, secara otomatis diinisialisasi
dengan nilai sama dengan nol Contoh penggunaan variabel eksternal diperlihatkan pada contoh program Eksternal.cpp berikut ini: /* --------------------------------------------- */ /* File program : Eksternal.cpp */ /* Penggunaan variabel eksternal */ /* --------------------------------------------- */ #include int i = 273; /* variabel eksternal */ void tambah (void); main() { printf("Nilai awal i = %d\n",i); i += 7; printf("Nilai i kini = %d\n",i); tambah(); printf("Nilai i kini = %d\n",i); tambah(); printf("Nilai i kini = %d\n",i); } void tambah (void) { i++; }
41
Hasil eksekusi: C>Eksternal Nilai awal I = 273 Nilai I kini = 280 Nilai I kini = 281 Nilai I kini = 282
Pada contoh di atas i hanya dideklarasikan di bagian atas program, dan tidak dideklarasikan lagi pada fungsi main() maupun tambah(). Jadi i merupakan variabel eksternal, sehingga dapat digunakan oleh kedua fungsi yang ada pada program di atas. Satu hal yang perlu diingat, variabel eksternal harus dideklarasikan sebelum definisi fungsi yang akan menggunakannya. 8.6.3 Variabel Statis
Variabel statis dapat berupa variabel internal (didefinisikan di dalam fungsi) maupun variabel eksternal. Variabel statis mempunyai sifat: •
Jika variabel statis bersifat internal, maka variabel hanya
dikenal oleh fungsi tempat variabel dideklarasikan. •
Jika variabel statis bersifat eksternal, maka variabel dapat
digunakan oleh semua fungsi yang terletal pada file yang sama, tempat variabel statis dideklarasikan. •
Berbeda dengan variabel lokal, variabel statis tidak akan
hilang sekeluarnya dari fungsi (nilai pada variabel akan tetap diingat). •
Inisialisasi hanya dilakukan sekali, yaitu saat fungsi dipanggil
yang pertama kali. Jika tidak ada inisialisasi oleh pemrogram maka secara otomatis akan diberi nilai awal nol. Variabel statis diperoleh dengan menambahkan kata-kunci static di depan penentu tipe-data variabel. /* --------------------------------------------- */ /* File program : Statis.cpp */ /* Penggunaan variabel statis */ /* --------------------------------------------- */ #include void fungsi_y (void);
42
main() { int y = 20; fungsi_y(); fungsi_y(); printf("Nilai y dalam main() = %d\n",y); } void fungsi_y(void) { static int y; y++; printf("Nilai y dalam fungsi_y() = %d\n",y); }
Contoh eksekusi: C> Statis Nilai y dalam fungsi_y() = 1 Nilai y dalam fungsi_y() = 2 Nilai y dalam main() = 20 8.6.4 Variabel Register
Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori (RAM). Variabel register hanya dapat diterapkan pada variabel lokal atau parameter formal, yang bertipe char atau int . Variabel register biasa digunakan untuk variabel pengendali loop, dengan tujuan untuk mempercepat proses dalam loop, karena register mempunyai kecepatan yang jauh lebih tinggi dibanding RAM. Contoh pemakaian variabel register: /* --------------------------------------------- */ /* File program : Var_reg.cpp */ /* Penggunaan variabel register */ /* --------------------------------------------- */ #include main() {
43
register int i; /* variabel register */ int jumlah; for (i=1; i<=100; i++) jumlah++; printf("1+2+ ... +100 = %d\n",jumlah); }
Buatlah program yang sama tapi tidak menggunakan variabel register, kemudian bandingkan kecepatan kedua program tersebut. Jika belum terlihat perbedaannya, perbesar nilai batas loop, misalnya sampai 10000. Contoh program berikut ini memperlihatkan perbedaan lama waktu eksekusi antara program yang menggunakan variabel register dengan yang tanpa variabel register. /* --------------------------------------------- */ /* File program : tes_reg.cpp */ /* Penggunaan variabel register */ /* --------------------------------------------- */ #include #include main() { /* tanpa variabel register */ int i,j; register int a,b; /* variabel register */ long waktu_awal; waktu_awal = time('\0'); for (i=0; i<20000; i++) for(j=0;j<20000;j++) ; printf("Waktu total = %d detik\n",time('\0')- waktu_awal); /* dengan variabel register */ waktu_awal = time('\0'); for (a=0; a<20000; a++) for(b=0;b<20000;b++) ; printf("Waktu total = %d detik\n",time('\0')- waktu_awal); }
44
Contoh hasil eksekusi: C>tes_reg Waktu total = 7 detik Waktu total = 3 detik
Modul 10 FUNGSI II
10.1 Fungsi Dengan Parameter Parameter adalah suatu variabel yang berfungsi untuk menampung nilai yang akan dikirimkan ke dalam fungsi. Parameter itu sendiri terbagi dua macam, yaitu parameter formal dan parameter aktual.
10.1.1 Parameter Formal dan Parameter Aktual Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. Pada fungsi jumlah( ) program 6-3, x dan y dinamakan sebagai parameter formal. Parameter aktual adalah parameter (tidak selamanya menyatakan variabel) yang digunakan dalam pemanggilan fungsi. Untuk lebih memahaminya, perhatikan contoh pendefinisian fungsi dibawah ini:
TambahSatu(int X) { Return ++X; } Pada sintak di atas, variabel X dinamakan sebagai parameter formal. Sekarang perhatikan sintak berikut:
main() { int a = 10, hasil; hasil = TambahSatu(a); return 0; } Pada saat pemanggilan fungsi TambahSatu() di atas, variabel a dinamakan dengan parameter aktual
45
10.2 Cara Melewatkan Parameter Terdapat dua cara untuk melewatkan parameter ke dalam f ungsi, yaitu dengan cara:
Pemanggilan dengan nilai (call by value).
Pemanggilan dengan referensi (call by reference).
Pemanggilan dengan nilai merupakan cara yang digunakan pada contoh fungsi program terdahulu. Pada pemanggilan dengan nilai, nilai dari parameter aktual akan disalin ke parameter formal. Dengan cara ini nilai parameter aktual tidak bisa berubah sekalipun nilai parameter formal berubah.
/* ------------------------------------------- */ /* File program : Tukar.cpp */ /* Melihat pengaruh pemanggilan dengan nilai */ /* ------------------------------------------- */ #include tukar (int, int); main() { int a,b; a = 88; b = 77; printf("Nilai sebelum pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); tukar(a,b); printf("Nilai sesudah pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); } tukar (int x, int y) { int z; z = x; x = y; y = z; printf("Nilai diakhir fungsi tukar()\n"); printf("x = %d y = %d\n\n",x,y); } hasil eksekusi :
Nilai sebelum pemanggilan fungsi a = 88 b = 77
46
Nilai diakhir fungsi tukar() x = 77 y = 88 Nilai sesudah pemanggilan fungsi a = 88 b = 77 Dari contoh program di atas terlihat bahwa hasil pemanggilan fungsi tukar( ), variabel a dan b (yang dilewatkan ke fungsi tukar ()) tidak berubah, walaupun pada fungsi tukar ( ) telah terjadi penukaran antara parameter x dan y. Hal ini terjadi karena x hanyalah salinan dari a dan y salinan dari b, serta definisi fungsi tidak mengembalikan nilai (tidak ada instruksi return( ) ). Pemanggilan dengan referensi merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat digunakan untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi. Adapun perubahan dalam parameter aktual adalah sebagai berikut: Tukar(&a, &b); /* variabel diawali dengan & */ Pendeklarasian parameter: int *px, *py ; menyatakan bahwa px dan py adalah suatu variabel pointer, yaitu variabel yang berisi alamat variabel yang lain.
/*
----------------------------------------------------------
*/ /* File program : Tukar2.cpp */ /* Melihat pengaruh pemanggilan dengan referensi */ /* ---------------------------------------------------------#include tukar (int *px, int *py); main() { int a,b; a = 88; b = 77; printf("Nilai sebelum pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); tukar(&a,&b); /* parameter alamat a dan alamat b */ printf("Nilai sesudah pemanggilan fungsi\n"); printf("a = %d b = %d\n\n",a,b); }
47
tukar (int *px, int *py) { int z; z = *px; *px = *py; *py = z; printf("Nilai diakhir fungsi tukar()\n"); printf("*px = %d *py = %d\n\n",*px,*py); } Hasil eksekusi :
Nilai sebelum pemanggilan fungsi a = 88 b = 77 Nilai diakhir fungsi tukar() *px = 77 *py = 88 Nilai sesudah pemanggilan fungsi a = 77 b = 88
10.3 Penggolongan Variabel Berdasarkan Kelas Penyimpanan Suatu variabel disamping dapat digolongkan berdasarkan jenis/tipe data, juga dapat
digolongkan
berdasarkan
kelas
penyimpanannya
(storage
class).
Penggolongan berdasarkan kelas penyimpanan berupa: •
Variabel lokal
•
Variabel eksternal
•
Variabel statis
•
Variabel register
10.3.1 Varibel Lokal Variabel lokal adalah variabel yang dideklarasikan dalam fungsi, yang mempunyai sifat: •
Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan hilang (dari
memori) ketika eksekusi terhadap fungsi berakhir. •
Hanya dikenal oleh fungsi tempat variabel dideklarasikan.
•
Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya tidak
tentu (acak)). Dalam banyak literatur, variabel lokal disebut juga dengan variabel otomatis.
48
Penerapan variabel lokal yaitu jika variabel tersebut hanya digunakan oleh suatu fungsi tertentu, dan tidak dimaksudkan untuk digunakan oleh fungsi yang lain.
10.3.2 Variabel Eksternal Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi, dan mempunyai sifat: •
Dapat diakses oleh semua fungsi.
•
Jika tidak diberi nilai awal, secara otomatis diinisialisasi dengan nilai sama
dengan nol Contoh penggunaan variabel eksternal
diperlihatkan
pada contoh program
Eksternal.cpp berikut ini:
/* --------------------------------------------- */ /* File program : Eksternal.cpp */ /* Penggunaan variabel eksternal */ /* --------------------------------------------- */ #include int i = 273; /* variabel eksternal */ tambah (); main() { printf("Nilai awal i = %d\n",i); i += 7; printf("Nilai i kini = %d\n",i); tambah(); printf("Nilai i kini = %d\n",i); tambah(); printf("Nilai i kini = %d\n",i); }
tambah () { i++; } Hasil eksekusi:
Nilai awal i = 273
49
Nilai i kini = 280 Nilai i kini = 281 Nilai i kini = 282 Pada contoh di atas i hanya dideklarasikan di bagian atas program, dan tidak dideklarasikan lagi pada fungsi main() maupun tambah(). Jadi i merupakan variabel eksternal, sehingga dapat digunakan oleh kedua fungsi yang ada pada program di atas. Satu hal yang perlu diingat, variabel eksternal harus dideklarasikan sebelum definisi fungsi yang akan menggunakannya.
10.3.3 Variabel Statis Variabel statis dapat berupa variabel lokal (didefinisikan di dalam fungsi) maupun variabel eksternal. Variabel statis mempunyai sifat: •
Jika variabel statis bersifat internal, maka variabel hanya dikenal oleh fungsi
tempat variabel dideklarasikan. •
Jika variabel statis bersifat eksternal, maka variabel dapat digunakan oleh
semua fungsi yang terletal pada file yang sama, tempat variabel statis dideklarasikan. •
Berbeda dengan variabel lokal, variabel statis tidak akan hilang sekeluarnya
dari fungsi (nilai pada variabel akan tetap diingat). •
Inisialisasi hanya dilakukan sekali, yaitu saat fungsi dipanggil yang pertama
kali. Jika tidak ada inisialisasi oleh pemrogram maka secara otomatis akan diberi nilai awal nol. Variabel statis diperoleh dengan menambahkan kata-kunci static di depan penentu tipe-data variabel.
/* --------------------------------------------- */ /* File program : Statis.cpp */ /* Penggunaan variabel statis */ /* --------------------------------------------- */ #include fungsi_y (); main() { int y = 20; fungsi_y(); fungsi_y(); printf("Nilai y dalam main() = %d\n",y); }
50
fungsi_y() { static int y; y++; printf("Nilai y dalam fungsi_y() = %d\n",y); }
Contoh eksekusi:
Nilai y dalam fungsi_y() = 1 Nilai y dalam fungsi_y() = 2 Nilai y dalam main() = 20 10.3.4 Variabel Register Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori (RAM). Variabel register hanya dapat diterapkan pada variabel lokal atau parameter formal, yang bertipe char atau int . Variabel register biasa digunakan untuk variabel pengendali loop, dengan tujuan untuk mempercepat proses dalam loop, karena register mempunyai kecepatan yang jauh lebih tinggi dibanding RAM. Contoh pemakaian variabel register:
/* --------------------------------------------- */ /* File program : Var_reg.cpp */ /* Penggunaan variabel register */ /* --------------------------------------------- */ #include main() { register int i; /* variabel register */ int jumlah; for (i=1; i<=100; i++) jumlah++; printf("1+2+ ... +100 = %d\n",jumlah); }
51
Buatlah program yang sama tapi tidak menggunakan variabel register, kemudian bandingkan kecepatan kedua program tersebut. Jika belum terlihat perbedaannya, perbesar nilai batas loop, misalnya sampai 10000. Contoh program berikut ini memperlihatkan perbedaan lama waktu eksekusi antara program yang menggunakan variabel register dengan yang tanpa variabel register.
/* --------------------------------------------- */ /* File program : tes_reg.cpp */ /* Penggunaan variabel register */ /* --------------------------------------------- */ #include #include main() { /* tanpa variabel register */ int i,j; register int a,b; /* variabel register */ long waktu_awal; waktu_awal = time('\0'); for (i=0; i<20000; i++) for (j=0; j<20000;j++); printf("Waktu total = %d detik\n",time('\0')- waktu_awal); /* dengan variabel register */ waktu_awal = time('\0'); for (a=0; a<20000; a++) for (b=0; b<20000; b++) ; printf("Waktu total = %d detik\n",time('\0')- waktu_awal); } Contoh hasil eksekusi:
Waktu total = 7 detik Waktu total = 3 detik
MODUL 11 ARRAY
52
11.1 DEFINISI ARRAY Array adalah suatu variable yang merepresentasikan daftrar (list) atau kumpulan data yang memiliki tipe data sama. Setiap data yang terdapat dalam array tersebut menempati alamat memori yang berbeda disebut dengan elemen array. Untuk mengakses nilai suatu elemen array, kita akan menggunakan indeks dari array tersebut. Dalam bahasa C indeks array selalu dimulai dari angka 0 bukan 1.
Nilai ke-1 Alamat ke-1 0
Nilai ke-2 Alamat ke-2 1
… … …
Nilai elemen array
Nilai ke-N Alamat ke-N N-1
Alamat elemen array Untuk mendeklarasikan Indeks elemen array suatu
array satu dimensi dalam bahasa C adalah menggunakan tanda [ ] ( bracket ). Bentuk umum pendeklarasian array:
Tipe_data nama_array [banyak elemen] ; Contoh: int X[10] ; Penjelasan: Contoh diatas merupakan pendeklarasian array dengan nama X sebanyak 10 elemen data yang bertipe int. Untuk efisiensi program memasukkan nilai ke dalam elemen array umumnya dilakukan dengan menggunakan pengulangan.
#include #define MAX 5 main() { int X[MAX]; int j; printf("Memasukkan nilai : \n"); Contoh:
for(j=0;j
Bila dijalankan akan didapatkan output:
Memasukkan nilai : X[0] = 15 X[1] = 25 X[2] = 35 X[4] = 45 X[5] = 55 Menampilkan nilai : X[0] = 15 X[1] = 25 X[2] = 35 X[4] = 45 X[5] = 55 11.2 INISIALISASI ARRAY Sebagai contoh apabila kita memiliki tiga buah array dengan nama X, Y, dan Z yang semuanya bertipe int dan kita akan melakukan inisialisasi terhadap elemenelemennnya, maka kita dapat menuliskannnya dengan cara sebagai berikut:
Int X[5] = {15, 5, 35, 45, 55} ; Int Y[5] = {15} ; Int Z[5] = { 15, 0, 35} ; Pada baris pertama (array X), kita melakukan inisialisasi terhadap kelima elemen array, yaitu 15, 25, 35, 45 dan 55 sehingga array X dapat digambarkan sebagai berikut:
54
15 X[0]
25 X[1]
35 X[2]
45 X[3]
55 X[4]
Sedangkan pada baris kedua (aray Y), kita hanya akan melakukan inisialisasi terhadap elemen pertama saja (yaitu dengan nilai 15), artinya elemen lainnya masih kosong sehingga dapat digabarkan sebagai berikut:
15 Y[0]
0 Y[1]
0 Y[2]
0 Y[3]
0 Y[4]
Baris terakhir (array Z), kita melakukan inisialisasi terhadap elemen ke-1 dan ke-3, yaitu dengan nilai 15 dan 35. Namun perlu diperhatikan disini bahwa kita juga harus mengisikan nilai 0 untuk elemen ke-2. Apabila kita hanya menuliskan:
Int Z[5] = {15, 25} ; Maka kompilator akan menganggap kita melakukan inisialisasi terhadap elemen ke-1 dan ke-2 (bukan elemen ke-3), sehingga kita harus menuliskannnya sebagai berikut:
Int Z[5] = {15, 0, 35} ; Hal ini akan menyebabkan nilai dari array Z dapat digambarkan sebagai berikut:
15 Z[0]
0 Z[1]
35 Z[2]
0 Z[3]
0 Z[4]
Contoh:
#include main() { int X[5] = {15,25,35,45,55}; int Y[5] = {10}; int Z[5] = {15,0,35}; int j; for(j=0;j<5;j++) { printf("X[%d] = %2d, Y[%d] = %2d, Z[%d] = %2d\n",j,X[j],j,Y[j],j,Z[j]); } } 55
Bila dijalankan akan didapatkan output:
X[0] = 15
Y[0] = 15
Z[0] = 15
X[1] = 25
Y[1] = 0
Z[1] = 0
X[2] = 35
Y[2] = 0
Z[2] = 35
X[3] = 45
Y[3] = 0
Z[3] = 0
X[4] = 25
Y[4] = 0
Z[4] = 0
11.3 BEDA ARRAY DENGAN VARIABEL BIASA Perbedaan utama antara array dengan variabel biasa adalah sebuah sebuah array dapat mempunyai sejumlah nilai, sedangkan sebuah variabel biasa hanya dihubungkan dengan sebuah nilai saja. Misalkan terdapat tiga buah nilai yaitu 8, 5 dan 7. Jika nilai-nilai ini akan dihubungkan dengan sebuah nama saja, maka dapat digunakan sebuah array. Jika digunakan sebuah variabel untuk menyimpan nilai-nilai tersebut, maka harus digunakan tiga buah variabel dengan nama-nama yang berbeda, misalnya variabel X1 untuk menyimpan nilai 8, variabel X2 untuk menyimpan nilai 5 dan variabel X3 untuk nilai 7.
Contoh: program yang akan menghiutng jumlah dari tiga buah nilai yang disimpan di tiga buah variabel, yaitu X1 + X2 + X3.
#include main() { int X1=5, X2=3, X3=7, total=0; total=X1+X2+X3; printf("Total = %d\n",total); }
Bila dijalankan akan didapatkan output:
Total = 15 Contoh program diatas hanya digunakan untuk mengitung jumlah dari tiga buah variabel saja. Bagaimana jika banyaknya variabel yang akan dihitung jumlahnya 1000 buah? Untuk kasus seperti ini akan menjadi tidak praktis jika digunakan
56
variabel, teapi akan lebih praktis jika digunakan array untuk mewakili nilai-nilai tersebut.
Contoh: program yang akan menghasilkan output yang sama seperti program diatas tapi pada program ini kita aka menggunakan array.
#include main() { int X[3] = {5,3,7}, total=0; int j; for(j=0;j<3;j++) total=total+X[j]; printf("Total = %d\n",total); } Bila dijalankan akan didapatkan output:
Total = 15
LATIHAN!!! 1. Buat program untuk menghitung nilai rata-rata dari 5 buah bilangan. Buat dua program dengan menggunakan variabel biasa dan menggunakan array! #include 2. Buat program untuk menampilkan 10 nilai mahasiswa dengan inputan nilai main() bebas!
{3. Buat program untuk menghitung pangkat bilangan 1 sampai 10! float x1,x2,x3,x4,x5; float rata_rata; JAWABAN!!! printf("masukkan nilai:\n"); 1. Program yang menggunakan variabel biasa printf("nilai ke-1 :"); scanf("%f%",&x1); printf("nilai ke-2 :"); scanf("%f%",&x2); printf("nilai ke-3 :"); scanf("%f%",&x3); printf("nilai ke-4 :"); scanf("%f%",&x4); printf("nilai ke-5 :"); scanf("%f%",&x5); rata_rata=(x1+x2+x3+x4+x5)/5;
57
printf("nilai rata-rata = %.2f\n",rata_rata); }
Output:
Masukkan nilai: Nilai ke-1: 10 Nilai ke-2: 20 Nilai ke-3: 30 Nilai ke-4: 40 Nilai ke-5: 50 Program yang menggunakan array
#include #define MAX 5 main() { float A[MAX],jumlah=0,rata_rata; int j; printf("memasukkan nilai:\n"); for(j=0;j
Output:
Memasukkan nilai: A[0] = 10
58
A[1] = 20 A[3] = 30 A[4] = 40 A[5] = 50 Nilai rata-rata = 30.00
2.
#include main() { int index, nilai[10]; printf("input nilai 10 mahasiswa :\n "); for(index=0;index<10;index++) { printf("Mahasiswa %i:",index+1); scanf("%i",&nilai[index]); } printf ("Nilai mahasiswa yang telah diinput\n"); for(index=0;index<10;index++) { printf("%5.0i",nilai[index]); }
3. 3.}
Output:
Input nilai 10 mahasiswa : Mahasiswa 1: 10 Mahasiswa 2: 20 Mahasiswa 3: 30 Mahasiswa 4: 40
59
Mahasiswa 5: 50 Mahasiswa 6: 60 Mahasiswa 7: 70 Mahasiswa 8: 80 Mahasiswa 9: 90 Mahasiswa 10: 100
3.
#include main() { int square[100]; int i,k; for(i=0;i<10;i++) { k=i+1; square[i]=k*k; printf("\nPangkat dari %d adalah %d ",k,square[i]); } return 0; } Output: Pangkat dari 1 adalah 1
Pangkat dari 2 adalah 4 Pangkat dari 3 adalah 9 Pangkat dari 4 adalah 16 Pangkat dari 5 adalah 25 Pangkat dari 6 adalah 36 Pangkat dari 7 adalah 49 Pangkat dari 8 adalah 64 Pangkat dari 9 adalah 81 Pangkat dari 10 adalah 100
60
Modul 12 POINTER I
11.1 Pendahuluan
Pointer adalah suatu variabel yang menyimpan alamat dari suatu data, dan bukan menyimpan datanya sendiri. Sebagai contoh, jika px adalah pointer dan x adalah variabel yang ditunjuk oleh px , maka jika px berada pada alamat memori awal 1000, maka px akan berisi 1000, sedangkan datanya sendiri berupa nilai yang ada pada lokasi memori 1000. 11.2 Pendeklarasian Variabel Pointer
Variabel tipe pointer dideklarasikan dengan bentuk sebagai berikut: type *nama_variabel; dengan tipe dapat berupa sembarang tipe data, sedangkan nama_variabel adalah nama dari variabel pointer. Sebagai contoh: int px; /* contoh1*/ char pch1, pch2; /*contoh2*/ Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int. Pada contoh kedua, masing-masing variabel pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char . 11.3 Mengatur Pointer Agar Menunjuk ke Variabel Lain
Agar suatu pointer menunjuk ke variabel yang lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu variabel, dapat digunakan operator & (operator alamat, yang bersifat unaray ), dengan cara menempatkan operator di depan nama variabel. Sebagai contoh, jika x dideklarasikan sebagai variabel bertipe int , maka &x
61
berarti “alamat dari variabel x ”. Adapun contoh pemberian alamat ke suatu variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int ) yaitu: Px = &x;
Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x . Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x . 11.4 Mengakses Isi Suatu Variabel Melalui Pointer
Jika suatu variabel sudah ditunjuk oleh pointer, maka variabel tersebut dapat diakses melalui variabel itu sendiri (disebut sebagai pengaksesan tak langsung), ataupun melalui pointer (disebut pengaksesan langsung). Pengaksesan
tak
langsung
dilakukan
dengan
menggunakan
operator inderection berupa simbol * (bersifat unaray ), seperti contoh berikut: *px yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px ”. Sebagai contoh jika y bertipe int , maka sesudah dua pernyataan berikut: px = &x; y = *px; y akan berisi nilai yang sesuai dengan nilai x . Contoh
program
berikut
memperlihatkan
pointer. /* --------------------------------- */ /* File program : Pointer.cpp */ /* Contoh pemakaian pointer */ /* -------------------------------- */ #include main() { int x,y; /* x dan y bertipe int */ int *px; /* px pointer yang menunjuk */
62
pemakaian
variabel
/* obyek bertipe int */ x = 87; px = &x; /* px berisi alamat dari x */ y = *px; /* y berisi nilai yang ditunjuk px */ printf("Alamat x = %p\n", &x); printf("Isi px = %p\n", px); printf("Isi x = %d\n", x); printf("Nilai yang ditunjuk px = %d\n", *px); printf("Nilai y = %d\n", y); }
Contoh eksekusi: C> Pointer Alamat x = 5B87:2230 / 242F : 2226 Isi px = 5B87:2230 / 242F : 2226 Isi x = 87 Nilai yang ditunjuk px = 87 Nilai y = 87 Pada program di atas, dua pernyataan px = &x; y = *px; sebenarnya dapat digantikan dengan sebuah pernyataan y = x; 11.5 Tipe Variabel Pointer dan Tipe Obyek Yang Ditunjuk
Antara tipe pointer (sesuai dengan pendeklarasian pointer) dan tipe obyek yang akan ditunjuk oleh pointer haruslah sejenis. Jika misalnya pointer pu dimaksudkan untuk menunjuk data bertipe int maka data yang akan ditunjuk oleh pointer pu juga harus bertipe int.
Suatu kesalahan akan terjadi jika misalnya pointer float
digunakan untuk menunjuk data brtipe int . 11.6 Mengubah Isi Suatu Variabel Melalui Pointer
Contoh berikut memberikan gambaran tentang pengubahan isi suatu variabel secara tak langsung (yaitu melalui pointer). Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe float .
63
Selanjutnya dengan ungkapan d = 54.6; digunakan untuk mengisikan nilai 54.6 secara langsung ke variabel d . Perintah pd = &d; Digunakan untuk memberikan alamat dari d ke pd . Dengan demikian pd menunjuk ke variabel d . Sedangkan pernyataan berikut: *pd = *pd + 10; (atau: *pd += 10;) merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. Perintah di atas brarti “jumlahkan isi variabel yang ditunjuk oleh pd dengan 10 dan simpan hasilnya ke variabel tersebut”, atau identik dengan pernyataan: d = d + 10; Namun seandainya tidak ada instruksi Pd = &d; maka pernyataan: *pd = *pd + 10; tidak akan sama dengan d = d + 10; /* ---------------------------------- */ /* File program : Pointer2.cpp */ /* Pengubahan isi pointer */ /* -------------------------------- */ #include main() { float d, *pd; d = 54.6; printf("Isi d semula = %g\n", d); pd = &d; *pd = *pd + 10; printf("Isi d kini = %g\n", d); }
Contoh hasil eksekusi: C> Pointer2 Isi d semula = 54.6 64
Isi d kini = 64.6
11.7 Pointer dan Array
Hubungan antara struktur data pointer dan array dalam C sangatlah erat, sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer. Contoh berikut akan memberi gambaran tentang hubungan antara pointer dan array. Misalnya dalam suatu fungsi dideklarasikan: static int tgl_lahir[3] = { 01, 09, 64 }; dan int *ptgl; Kemudian diberikan pernyataan ptgl = &tgl_lahir[0]; maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks nol. Instruksi di atas juga dapat ditulis menjadi: ptgl = tgl_lahir; sebab nama array tanpa tanda kurung menyatakan alamat awal dari array. Sesudah penugasan seperti di atas, maka *ptgl dengan sendirinya menyatakan elemen pertama (berindeks sama dengan nol) dari array tgl_lahir . Contoh di atas dapat dipahami melalui contoh program berikut ini. /* ------------------------------------------- */ /* File program : Pointer3.cpp */ /* Pointer yang menunjuk array */ /* ------------------------------------------- */ #include main() { static int tgl_lahir[] = {24, 6, 1965 }; int *ptgl; ptgl = tgl_lahir; /* ptgl berisi alamat array */ printf("Nilai yang ditunjuk oleh ptgl = %d\n", *ptgl); printf("nilai dari tgl_lahir[0] = %d\n", tgl_lahir[0]); }
65
Contoh hasil eksekusi: C>Pointer3 Nilai yang ditunjuk oleh ptgl = 24 Nilai dari tgl_lahir[0] = 24 Jika ingin menampilkan seluruh elemen array tgl_lahir , maka dapat digunakan perintah for(i=0; i<3; i++) printf(“%d%, tgl_lahir[i]); Jika diimplementasikan dengan menggunakan pointer tgl_lahir[i] dapat digantikan menjadi *(ptgl + i) dengan terlebih dahulu mengatur ptgl agar menunjuk ke array tgl_lahir, sehingga penulisan instruksi penampilan isi array tgl_lahir dapat diubah menjadi: ptgl = tgl_lahir; for (i=0; i<3; i++0 printf(“%d “, *(ptgl + i)); Secara umum operasi pointer dapat diterangkan sebagai berikut: Misalkan a adalah suatu array, dan pa adalah pointer yang menunjuk array a, maka *(pa + i) akan menyatakan elemen array dengan indeks sama dengan i. Jadi *(pa + 0) identik dengan a[0] *(pa + 1) identik dengan a[1] *(pa + 2) identik dengan a[2] Ungkapan seperti pa + i memiliki arti “tambahkan nilai pa (berisi alamat) dengan i kali ukuran dari obyek yang ditunjuk oleh pa”. Jika pa dideklarasikan sebagai int *pa; maka obyek dari pa adalah data int (berukuran 2 byte). Cara lain dalam menampilkan isi suatu array yaitu dengan menaikkan isi variabel pointer dengan menggunakan operator ++.
66
*(ptgl + i) dapat diganti menjadi ptgl++ Misalkan suatu instruksi: int *pa; int a[3];
MODUL 13 STRING
13.1
Pendahuluan String
merupakan
suatu
kumpulan
karakter
yang
terangkai
secara
bersamaan. Dalam bahasa C, string bukan merupakan tipe data tersendiri, namun merupakan jenis khusus dari tipe array. Tipe string dapat digunakan sebagai konstanta, yang ditulis dengan diawali dan diakhiri tanda petik ganda. Misalnya:“ Teknik Informatika”. Konstanta string seperti di atas disimpan dalam memori secara berurutan, dengan komposisi sebagai berikut: T
E
K
N
I
K
I
N
F
O
R
M
A
T
I
K
A
Setiap karakter akan menempati memori sebesar 1 byte, dan byte terakhir otomatis akan berisi karakter NULL. Untuk setiap pendeklarasian string kita juga harus mengalokasikan ruang untuk menempatkan karakter null t ersebut. Contoh lain apabila kita ingin menyimpan teks “Cheri”, maka kita membutuhkan suatu array dengan 6 buah elemen. Hal ini artinya kita akan menempatkan 6 buah karakter, yaitu 5 buah karakter untuk teks “Cheri” dan 1 karakter untuk karakter null. Dibawah ini gambar yang akan merepresentasikannya.
C
S[0] S[1]
67
h
e
r
i
\0
S[2] S[3] S[4] S[5] Pada gambar diatas elemen S[5] berisi karakter null yang menunjukkan bahwa string tersebut telah berakhir.
13.2
Variabel String
Variabel string digunakan untuk menyimpan data string. Misalnya: char nama[15] ; Contoh diatas merupakan instruksi untuk mendeklarasikan variabel tipe string dengan panjang maksimal mengandung 15 karakter (termasuk karakter NuLL). Deklarasi di atas sebenarnya adalah deklarasi array bertipe char. Untuk memasukkan data string ke dalam suatu variabel dapat dilakukan dengan menggunakan instruksi gets( ), dengan bentuk umum pemakaiannya adalah: gets(nama_array); Jika menggunakan statemen scanf ( ), maka instruksinya akan menjadi: scanf(“%”,nama_array ); Di depan nama array tidak perlu ada operator &(operator alamat), karena nama array tanpa kurung siku sudah menyatakan alamat. Jika menggunakan scanf ( ), data string masukan tidak bisa mengandung spasi. Prototipe gets( ) terdapat pada file stdio.h.
/* -------------------------------------------------------- */ /* File program : nama.cpp */ /* Contoh memasukkan data string dari keyboard */ /*
---------------------------------------------------------
*/ #include main() { char nama[15]; printf("Nama anda: ");
68
gets(nama); printf("Halo,
%s.
Selamat
datang
di
Informatika.\n",nama); }
Bila dijalankan akan didapatkan output:
Nama anda : gadisa aulia Halo, gadisa aulia Selamat datang di informatika Pada program di atas, setelah deklarasi char nama[15], maka komputer akan menyediakan ruang pada memori sebanyak 15 karakter. Setelah pengguna memasukkan data nama : gadisa aulia, maka data string yang dimasukkan akan diletakkan pada area memori yang sudah dipesan. Karena data yang dimasukkan kurang dari 15 karakter, maka otomatis setelah karakter terakhir akan diisi dengan karakter NULL. Instruksi gets( ) akan membaca seluruh karakter yang diketik pada keyboard sampai tombol ENTER ditekan. Dalam hal ini tidak ada pengecekan terhadap batasan dari array yang merupakan argumennya. Jika string yang dimasukkan melebihi ukuran array, maka sisa string (panjang string dikurangi ukuran array plus karakter NULL) akan ditempatkan ke lokasi sesudah bagian akhir array.
13.3 Inisialisasi String Suatu variabel string dapat diinisialisasi seperti halnya variabel array yang lain, namun pada elemen terakhir harus berupa karakter NULL. Sebagai contoh: char kota[ ] = {‘Y’, ’o’, ’g’, ’y’, ’a’, ’k’, ’a’, ’r’, ’t’, ’a’, ’\0’}; Contoh diatas menyatakan bahwa variabel kota adalah variabel string dengan nilai awal berupa string “Yogyakarta”. Bentuk inisialisasi yang lebih singkat adalah: char kota[ ] = “Yogyakarta”; Pada bentuk ini, karakter NULL tidak perlu ditulis, karena secara implisit akan disisipkan oleh kompiler.
13.4
Menampilkan isi variabel string ke layar Untuk menampilkan isi variabel string, dapat digunakan salah satu dari
pernyataan berikut:
o
puts(var_string);
o
printf(“%s”,var_string);
69
o
printf(var_string);
Contoh program berikut ini akan menampilkan isi variabel kota, berdasarkan dua bentuk inisialisasi string.
/* -------------------------------------------------- */ /* File program : kota.cpp */ /* Contoh menampilkan data string ke layar */ /* -------------------------------------------------- */ #include void bentuk1(void); void bentuk2(void); main() { bentuk1(); bentuk2(); } void bentuk1(void) { char kota[]= {'Y','o','g','y','a','k','a','r','t','a','\0'}; puts(kota); } void bentuk2(void) { char kota[] = "Solo"; puts(kota); } Bila dijalankan akan didapatkan output:
Yogyakarta Solo
13.5
Manipulasi String Dalam manipulasi string terdapat proses pencarian, penyalinan,
pembandingan yang dilakukan terhadap string dan proses-proses yang lainnya.
70
13.5.1 Menggabungkan String Bahasa C telah menyediakan dua buah fungsi yang berguna untuk melakukan penggabungan string, yaitu fungsi strcat() dan strncat().
1. Fungsi strcat() Fungsi strcat() akan menambahkan salinan dari string str2 ke bagian kahir string str2. Contoh:
#include #include main() { char s1[50] = "pemograman "; char s2[21] = "menggunakan bahasa C"; strcat(s1, s2); printf("%s",s1); return 0; } Bila dijalankan akan didapatkan output:
Pemograman menggunakan bahasa C
2. Fungsi strncat() Fungsi ini juga berguna untuk menambahkan string dari string str2 ke dalam str1. namun disini kita diizinkan menentukan berapa banyak karakter (n) dari str2 yang digabungkan ke str1. Contoh:
#include #include main() { char s1[50] = "pemograman"; char s2[21] = "menggunakan bahasa c"; strncat(s1, s2, 11); printf("%s",s1); return 0; }
71
Bila dijalankan akan didapatkan output:
Pemograman menggunakan
13.5.2 Menentukan Panjang String Fungsi pustaka strlen() dapat digunakan untuk menghasilkan panjang dari suatu string. Contoh:
#include #include main() { char *Nama1 = "Widya Astuti"; char Nama2[7] = "Gadisa"; printf("Panjang string Nama1 = %d\n", strlen(Nama1)); printf("Panjang string Nama2 = %d\n", strlen(Nama2)); return 0; } Bila dijalankan akan didapatkan output:
Panjang string Nama1 = 12 Panjang string Nama2 = 6
13.5.3 Menyalin String Untuk menyalin nilai suatu string ke string yang lainnya tidak dapat dilakukan seperti halnya di kompiler yang lainnya. Misalnya S
adalah variabel yang sudah
dideklarasikan sebagai tipe string, maka S=”ABCDE” di bahasa C merupakan hal yang tidak benar. Untuk bahasa yang lain, hal ini dimungkinkan, karena bahasa tersebut menyediakan operator pengerjaan untuk nilai string. Akan tetapi C tidak menyediakan operator pengerjaan untuk string, sehingga proses penyalinan atau mengerjakan suatu nilai string ke variabel string yang lain harus dilakukan dengan fungsi pustakan strcpy(). Contoh:
#include #include main() { char String1[80]; char String2[]="ABCDE"; strcpy(String1, String2); printf("String pertama adalah : %s\n",String1);
72
printf("String kedua adalah : %s\n",String2); }
Bila dijalankan akan didapatkan output:
String pertama adalah : ABCDE String kedua adalah : ABCDE
Contoh lain:
#include #include main() { char string[10]; char *str1 = "abcdefghi"; strcpy(string,str1); printf("%s\n",string); return 0; }
Bila dijalankan akan didapatkan output:
Abcdefghi
13.5.4 Membandingkan Dua Nilai String Fungsi ini akan mengembalikan nilai bilangan bulat (integer) sebagai hasil perbandingan dua buah string. Adapun nilai yang akan dikembalikan dari perbandingan dua string diatas adalah seperti yang terdapat pada tabel berikut:
Nilai < 0 (negatif) 0 > 0 (positif)
Arti
str1 lebih kecil dari str2 str1 sama dengan str2 str1 lebih besar dari str2
73
Contoh:
#include #include main() { char *s1 = "Bahasa c"; char *s2 = "Bahasa c++"; char *s3 = "Bahasa c";
printf("nilai yang dikembalikan : %i\n", strcmp(s1,s2)); printf("nilai yang dikembalikan : %i\n", strcmp(s1,s3)); printf("nilai yang dikembalikan : %d\n", strcmp(s2,s1)); }
Bila dijalankan akan didapatkan output:
Nilai yang dikembalikan : -1 Nilai yang dikembalikan : 0 Nilai yang dikembalikan : 1
13.5.5 Melakukan Pencarian String Hal yang sering dilakukan dalam proses manipulasi string adalah suatu pencarian, dimana kita melakukan pencarian terhadap suatu string maupun karakter tertentu apakah terdapat dalam string lain atau tidak yaitu menggunakan fungsi pustaka strchr(). Contoh:
#include #include main() { char str[100] = "GADISA"; char karakter = 'D'; char *hasil; hasil = strchr(str,karakter); printf("Nilai kembalian : %s\n",hasil); printf("Karakter %c ditemukan pada indeks ke%d",karakter,(hasil - str)); return 0; } 74
Modul 14 KISI – KISI UAS 1. Buatlah program untuk mencari angka terbesar dari deretan angka berikut : 8, 10, 17, 24 dengan menggunakan fungsi! 2. Buatlah program untuk mencari angka terkecil dari deretan angka berikut : 3, 5, 14, 17 dengan menggunakan fungsi! 3. Buatlah fungsi untuk No 1 & 2 dengan deretan angka bebas! 4. Buatlah program untuk mencari angka terbesar dan terkecil dari deretan angka berikut : 17, 3, 10, 5, 24, 4, 8, 27, 20, 11 dengan menggunakan array! 5. Buatlah program untuk menghitung nilai tambah, kurang, kali dan bagi dengan menggunakan fungsi! 6. Buatlah program pencarian menggunakan array dengan 7 inputan denganoutput seperti dibawah ini! HARI[0] = SENIN HARI[1] = SELASA HARI[2] = RABU HARI[3] = KAMIS HARI[4] = JUMAT HARI[5] = SABTU HARI[6] = MINGGU Masukkan hari yang dicari : SABTU SABTU ditemukan dalam array yaitu pada hari ke-5 7. Buatkan program penjumlahan untuk menghitung matrik 2 x 2! 8. Buatkan program penjumlahan untuk menghitung matrik 3 x 2! 9. Buatlah program untuk menggabungkan kata “Universitas” dengan kata “Mercu Buana”!
75