1 Algoritma dan Pemograman I ( Bahasa Pemograman C ) Rizal, S.Si., M.IT2 2 MODUL I PENGENALAN BAHASA C A. MENGENAL BAHASA C Bahasa C merupakan perkemb...
Algoritma dan Pemograman I ( Bahasa Pemograman C ) Rizal, S.Si., M.IT
2
MODUL I PENGENALAN BAHASA C
A.
MENGENAL BAHASA C Bahasa C merupakan perkembangan dari bahasa BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Selanjutnya bahasa ini memberikan 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 tinggi di dunia menjadikan bahasa C sebagai salah satu mata kuliah wajib. Selain itu, banyak bahasa pemrograman populer seperti PHP dan Java menggunakan sintaks dasar yang mirip bahasa C. Oleh karena itu, kita juga sangat perlu mempelajarinya. Banyak compiler yang telah dibuat untuk menjalakan program dalam bahasa C, untuk praktikum ini akan digunakan compiler MinGW Developer Studio 2.05. Pemilihan compiler ini disebabkan sudah dapat running (dijalankan) pada system windows XP dan sudah bersifat GUI (Graphical User Interface), sehingga diharapkan akan memudahkan praktikan dalam melakukan Praktikum ini.
B.
MENGENAL EDITOR MinGW Developer Studio 2.05 Untuk menjalankan editor ini, hanya perlu menekan START Æ PROGRAM Æ MinGW Developer Studio Æ MinGW Developer Studio. Setelah ini dilakukan maka akan tampilan layar seperti berikut ini:
3
Pada dialog box New terdapat dua buah Tab yaitu Project dan Files. Tab Project digunakan untuk memilih jenis project yang akan dibangun, sedangkan tab Files digunakan untuk memilih jenis file yang akan dimasukkan kedalam project. Untuk praktikum ini, kita menggunakan project yang berjenis Win32 Console Application (project yang berbasis DOS). Hal ini disebakan resource computer tidak banyak digunakan untuk praktikum ini, sehingga program bisa berjalan dengan cepat. Pada textbox project name, diisikan dengan nama project yang akan kita buat/bangun ini. Sedangkan pada textbox location, kita memilih lokasi tempat penyimpanan project di harddisk. Setelah tombol OK di tekan, layar akan berganti dengan gambar berikut:
4
Terdapat sebuah listbox bernama FileView, itu merupakan navigasi untuk project kita ini. Kemudian di menu bar klik File Æ New sehingga akan mengeluarkan sebuah dialog menu lagi, seperti gambar berikut:
Pada textbox File Name, diisi dengan nama file yang akan kita insert kedalam Project. Terdapat 4 jenis file yang bias diinputkan kedalam project yaitu source file, header file, resource file, dan text file. Source file digunakan untuk menuliskan source code (coding/sintaks-sintaks) dari program yang akan dibangun. Header file digunakan untuk membuat sebuah file header (file library) yang baru yang tidak disediakan oleh compiler. Resource file digunakan untuk menghubungkan coding program dengan coding dari program yang lain. Textfile digunakan untuk menuliskan file teks (seumpama file read me, instruction, dll). Silahkan tuliskan nama file di textbox file name, misal coba, kemudian klik sekali pada source file (C/C++ source file) dan klik OK. Tampilan program akan berubah seperti gambar berikut:
5
Pada tab coba.cpp (nama file sesuai dengan nama yang anda berikan pada textbox file name). Dilayar tersebut kita menuliskan sintak-sintak (source code) program yang akan kita buat. Untuk percobaan pertama ini, dilayar tersebut silahkan ketikkan source code sebagai berikut: #include<stdio.h> #include int main() { printf(“Selamat Belajar Bahasa C”); return 0; }
Harus diperhatikan, compiler C bersifat case sensitive. Artinya penulisan sintaks harus diperhatikan huruf besar dan huruf kecil. Nim dan nim merupakan dua penulisan yang berbeda di dalam bahasa C. Setelah selesai, silahkan compile coding tersebut dengan mengklik icon compile atau dengan menekan shortcut CTRL+F7. Perintah ini dilakukan untuk mengcompile coding sebelum coding tersebut di-generate file objeknya. Apabila ada kesalahan, dapat dilihat di layar Build (layar dibawah layar coding). Pesan-pesan kesalahan akan ditampilkan dilayar tersebut jika ada.
6
Apabila tidak ada kesalahan, untuk men-generate file objek, klik icon menruning program atau dengan menekan shortcut CTRL+F5. Keluar sebuah kotak dialog dan klik OK. Apabila berhasil, maka dilayar akan keluar tampilan seperti berikut ini:
Silahkan ubah source code (coding) di layar coba.cpp dengan sintaks berikut: #include<stdio.h> #include int main() { printf(“Nama: nama saya”); printf(“Nim: Nim Saya”); printf(“Angka 100 nilai yang mau saya dapat”); return 0; }
Setelah selesai, silahkan compile dan run lagi program tersebut dan lihat/perhatikan hasilnya. C.
STRUKTUR DASAR BAHASA C Bahasa C memiliki beberapa eleman dasar antara lain : 1.
Karakter Mengacu dari sistem stardard kode internasional ANSI karakter yang dikenal didalam bahasa C adalah karakter abjad/huruf, angka, dan simbol-simbol khusus.
2.
Keyword
7
Seperti bahasa program lainnya,bahasa C memiliki keyword atau dalam istilah lainnya adalah reserverd word. Keyword adalah suatu kata yang memiliki makna dan fungsi tertentu. Hampir semua keyword didalam C dituliskan dalam dalam format huruf kecil. 3.
Identifier Merupakan pengenal baru yang digunakan secara bebas untuk penamaan variabel, konstanta, fungsi, kelas, template, dan namespace.
4.
Tipe data Merupakan pengelompokan data yang digunakan untuk merepresentasikan jenis sebuah nilai yang terdapat pada program. Sebuah tipe data dikelompokkan berdasarkan nilai jangkauan, penggunaan sejumlah memori (RAM), dan faktor ketelitian. Bahasa C mengelompokkan a. Tipe data dasar Bahasa C memiliki beberapa tipe data dasar Tipe data
b. Tipe data pemodif Terdiri dari long, short, signed, unsigned. Keempat tipe tersebut digunakan untuk memodifikasi tipe data dasar yang ada. Seperti contoh berikut ini : int main() { /*variabel angka bertipe int dengan jangkauan antara 2147483648 s/d 2147483647*/ long int angka; /*variabel nilai bertipe int dengan jangkauan antara 0 s/d 65,535*/ unsigned int nilai; }
8
c.
Tipe data tersturktur Terdiri dari tipe data array dan struktur
d. Tipe data pointer Yaitu tipe yang digunakan untuk membuat variable memory yang dinamis bisa digunakan untuk menyimpan alamat memori ataupun data. 5.
Operator Operator berkaitan erat dengan kata operasi. Operator ditandai dengan sebuah atau beberapa simbol dan kata. Bahasa C memiliki beragam jenis operator dengan kelompok operator BINARY sebagai berikut : a. Operator assignment operator Penugasan Penugasan hasil bagi Penugasan penjumlahan Penugasan geser kiri Penugasan operasi AND Penugasan operasi OR
Symbol
Operator
Symbol
= /= += <<= &= !=
Penugasan perkalian Penugasan sisa bagi Penugasan pengurangan Penugasan geser kanan Penugasan operasi XOR
*= %= -= >>= ^=
b. Operator aritmatika operator Symbol
Operator
Symbol
+ * /
Sisa bagi Penambahan dengan nilai Pengurangan dengan nilai
% ++ --
Symbol
Operator
Symbol
Penjumlahan Pengurangan Perkalian Pembagian c. Operator Bit operator Geser Kiri Geser Kanan AND d. Operator Logika Operator Symbol AND
Operator OR Operator XOR Komplemen
<< >> &
Operator
&&
OR
e. Operator relasi operator
Symbol
Kurang dari
<
! ^ ~
Symbol ||
Operator Tidak sama dengan
Operator NOT
Symbol !=
Symbol !
9
Lebih dari Sama dengan
> ==
Kurang sama dengan Lebih sama dengan
f. Operator Pointer Operator Mengambil data alamat memori Mengambil data dari alamat memori 6.
<= >=
Simbol & *
Punctuator Punctuator adalah simbol-simbol yang berkenaan sebagai tanda baca pada struktur penulisan bahasa C. Punctuator tersebut adalah sebagai berikut : [] () {} #
7.
Bracket Parentheses Braces Pound Sign
, : ;
Koma Colon Semicolon
… * =
Ellipsis Asterisk Equal Sign
Variable dan konstanta Variabel dan konstanta identik dengan penamaan identifier. Identifier untuk variabel digunakan nilai yang dinamis, sedangkan konstanta untuk nilai tetapan. Sebagai contoh : int angka=10; //identifier angka digunakan sebagai konstanta char ch; // indentifier ch digunakan sebagai variabel
8.
Operasi I/O dalam C/C++ Bahasa C mengenalkan banyak ragam jenis operasi I/O (input/output). Hal ini dipengaruhi oleh file header yang digunakan. Misalkan pada bahasa C, diperkenalkan operasi I/O printf dan scanf, dimana perintah I/O ini berada didalam file header stdio.h. Lalu kemudian bahasa C++ mengembangkannya pada file header lainnya yaitu iostream.h, dimana didalamnya diperkenalkan standart I/O lainnya, salah satunya adalah cout dan cin. Perhatikan contoh berikut ini : #include <stdio.h> #include int main() { int no_absen; char nama[15]; printf(“hallo, selamat datang\n”); printf(“Masukkan nama anda : “); scanf(“%s”,&nama); printf(”Masukkan no absen anda : “);
10 scanf(“%d”,&no_absen); return 0; }
dari contoh diatas, file header yang digunakan adalah stdio.h dan conio.h Latihan: 1. Ketik source code berikut, kemudian perhatikan hasilnya: #include <stdio.h> #include int main() { int c; double a; float b; long int x; char nama[15]; char F; printf("Masukkan printf("Bilangan printf("Bilangan printf("Bilangan printf("Bilangan printf("Bilangan printf("Masukkan
angka berdasarkan tipe data\n"); Bulat (int):");scanf("%d",&c); Riil (float):");scanf("%f",&b); double:");scanf("%lf",&a); long Integer:");scanf("%li",&x); Karakter:");scanf("%c",&F); nama anda (string) : ");scanf("%s",&nama);
printf("\n Tampilkan kembali yang anda input tadi\n"); printf("integer: %d\nLong Integer: %li\nFloat: %f\nLong Float: %lf\nKarakter: %c\nString: %s",c,x,b,a,F,nama); return 0; }
2. Buatlah program menjumlahkan dua buah angka dimana angka yang akan dijumlahkan merupakan angka yang diinputkan 3. Buatlah program untuk output berikut Laboratorium Pemograman Teknik Informatika Unimal =============================================================== NIM : NAMA : ALAMAT : =============================================================== IDENTITAS ANDA: NIM NAMA ALAMAT =============================================================== ===============================================================
11
MODUL II PERNYATAAN KENDALI - PENGUJIAN
A.
PERNYATAAN KENDALI IF Dalam bahasa C, penyataan kendali IF pada dasarnya memiliki struktur sebagai berikut: If (kondisi/ekspresi) { pernyataan;}
...... 2.1
jika digambarkan dengan diagram alir:
Pengembangan dari bentuk dasar diatas apabila ada pernyataan lainnya adalah sebagai berikut : If(ekspresi) {pernyataan benar;}else {pernyataan salah;}
...... 2.2
Jadi, dari bentuk dasar sebelumnya bisa dikembangkan lagi menjadi bentuk diagram alir dibawah ini.
Namun jika jumlah kondisi lebih dari 2 keadaan maka penyusunannya bisa dituliskan seperti sintaks berikut ini : If(ekspresi1) {pernyataan_1;} Else if(ekspresi2) {pernyataan_2;} … … Else if(ekspresiN) {pernyataan_N;} Else { Pernyataan lain;}
...... 2.3
12
Pada kondisi tertentu, terkadang terdapat kasus berantai,dimana didalam proses seleksi terdapat proses seleksi juga. Hal ini dapat dilakukan oleh if. Kasus ini disebut oleh if sebagai nested if (if bersarang) dan digambarkan seperti gambar berikut : If(ekspresi_1) { If(ekspresi_11) { Pernyataan_jika_ekspresi_11_benar;} Else { pernyataan_jika_ekspresi_11_salah;} } Else { pernyataan_jika_ekspresi_1_salah;}
B.
...... 2.4
PERNYATAAN KENDALI SWITCH Selain if, ada juga alternatif pemilih kondisi yaitu menggunakan pernyataan kendali switch. Sedikit berbeda dengan if, switch digunakan untuk menguji nilai konstanta atau tetapan, sedangkan if bisa bervariasi. Bentuk umum switch adalah berikut : switch(ungkapan) { Case nilai_1: pernyataan_jika_nilai_1_benar; break; Case nilai_2: pernyataan_jika_nilai_2_benar; break; … … Case nilai_N: pernyataan_jika_nilai_N_benar; break; Default: pernyataan_lain; }
...... 2.5
Seperti halnya if, switch juga bisa dituliskan secara bersarang (nested switch). switch(ungkapan) { Case nilai_1: switch(ungkapan) { Case nilai_1: jika_nilai_1_benar; break; Case nilai_2: jika_nilai_2_benar; break; … … Case nilai_N: jika_nilai_N_benar; break; Default: pernyataan_lain; }break; Case nilai_2: pernyataan_jika_nilai_2_benar; break; … … Case nilai_N: pernyataan_jika_nilai_N_benar; break; Default: pernyataan_lain; }
.... 2.6
13
C.
LATIHAN a. Latihan untuk struktur 2.1. Tulislah listing program berikut: #include <stdio.h> #include int main() { int a,c=10; printf("masukkan sebuah nilai:");scanf("%d",&a); if(a<10) { printf("Nilai %d lebih kecil dari %d\n",a,c);} printf("Jumlah %d+%d=%d\n",a,c,a+c); return 0; }
Perhatikan Output yang diberikan oleh program jika di berikan input angka yang lebih kecil dari 10 dan angka yang lebih besar dari 10. b.
Latihan untuk struktur 2.2. Tulislah listing program berikut: #include <stdio.h> #include int main() { int a,c; printf("masukkan nilai angka pertama:");scanf("%d",&a); printf("masukkan nilai angka kedua:");scanf("%d",&c); if(a
Perhatikan Output yang diberikan oleh program jika di berikan input angka pertama 4 dan angka kedua 5, serta angka pertama 5 dan angka kedua 4. c.
Latihan untuk struktur 2.3. Tulislah listing program berikut: int main() { int a,b,c; printf("masukkan nilai angka pertama:");scanf("%d",&a); printf("masukkan nilai angka kedua:");scanf("%d",&b); printf("masukkan nilai angka ketiga:");scanf("%d",&c); if(a>c && a>b) { printf("Angka %d terbesar dari %d dan %d \n",a,b,c);} else if (c>a && c>b) {printf("Angka %d terbesar dari %d dan %d \n",c,b,a);} Else {printf("Angka %d terbesar dari %d dan %d \n",b,c,a);} return 0; }
Perhatikan Output yang diberikan oleh program
14
d.
Latihan untuk struktur 2.4. Tulislah listing program berikut: int main() { int a,b,c; printf("masukkan nilai angka pertama:");scanf("%d",&a); printf("masukkan nilai angka kedua:");scanf("%d",&b); printf("masukkan nilai angka ketiga:");scanf("%d",&c); if(a>c) { if(a>b) printf("Angka %d terbesar dari %d dan %d \n",a,b,c); else printf("Angka %d terbesar dari %d dan %d \n",b,c,a); } else if (c>a) { if(c>b) printf("Angka %d terbesar dari %d dan %d \n",c,b,a); else printf("Angka %d terbesar dari %d dan %d \n",b,c,a); } else { printf("Angka %d terbesar dari %d dan %d \n",b,c,a); } return 0; }
Perhatikan Output yang diberikan oleh program e.
Latihan untuk struktur 2.5. Tulislah listing program berikut: int main() { int a,b,c; printf("masukkan sebuah angka antara 1 - 3:");scanf("%d",&a); switch(a) { case 1: printf("Anda Memasukkan angka satu");break; case 2: printf("Anda Memasukkan angka dua"); break; case 3: printf("Anda Memasukkan Angka Tiga");break; default: printf("Inputan Salah, Input angka 1-3"); } return 0; }
Perhatikan Output yang diberikan oleh program jika diinputkan angka 3 dan angka 5 f.
Latihan untuk struktur 2.6. Tulislah listing program berikut:
int main() { char unit; int j; printf("Anda Unit Apa? (A/B/C):");scanf("%c",&unit); switch(unit)
15 { case 'A': printf("Apa Jenis Kelamin Anda (L/P)?:\n"); printf("Angka 1 untuk laki-laki dan angka 2 untuk perempuan: ");scanf("%d",&j); switch(j) { case 1: printf("Anda dari Unit %c yang berjenis kelamin Laki-laki",unit);break; case 2: printf("Anda dari Unit %c yang berjenis kelamin Perempuan",unit);break; default: printf("Inputan jenis jelamin salah"); } break; case 'B': printf("Apa Jenis Kelamin Anda (L/P)?:\n"); printf("Angka 1 untuk laki-laki dan angka 2 untuk perempuan: ");scanf("%d",&j); switch(j) { case 1: printf("Anda dari Unit %c yang berjenis kelamin Laki-laki",unit);break; case 2: printf("Anda dari Unit %c yang berjenis kelamin Perempuan",unit);break; default: printf("Inputan jenis jelamin salah"); } break; case 'C': printf("Apa Jenis Kelamin Anda (L/P)?:\n"); printf("Angka 1 untuk laki-laki dan angka 2 untuk perempuan: ");scanf("%d",&j); switch(j) { case 1: printf("Anda dari Unit %c yang berjenis kelamin Laki- Laki",unit);break; case 2: printf("Anda dari Unit %c yang berjenis kelamin Perempuan",unit);break; default: printf("Inputan jenis jelamin salah"); } break; default: printf("Inputan Salah, Input Unit A/B/C"); } return 0; }
Perhatikan Output yang diberikan oleh program. D.
TUGAS: Pada sebuah toko terdapat beberapa jenis produk susu dan beberapa ukuran seperti tampak pada table harga berikut: Produk Susu NUTRILON PROMIL SIMILAC
Ukuran 400gr (K) Ukuran 900gr (B) Rp. 77.000,Rp. 145.000,Rp. 45.000,Rp. 90.000,Rp. 90.000,Rp. 175.000,-
Buatlah program dengan inputan nama produk dan ukuran yang akan menghasilkan output harga dari produk tersebut.
16
MODUL III PERNYATAAN KENDALI – PERULANGAN
A.
TEORI DASAR Looping adalah pengulangan perintah-perintah sampai mencapai keadaan tertentu. Struktur perulangan terdiri atas dua bagian : 1)
Kondisi pengulangan yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan perulangan
2)
Isi atau badan perulangan yaitu satu atau lebih pernyataan (aksi) yang akan diulang.
Pada dasarnya sebuah proses looping berkaitan erat dengan kendali uji. Dimana kendali uji digunakan untuk menghentikan segala aktifitas berulang jika memenuhi suatu persyaratan tertentu. Pada umumnya proses looping bisa digambarkan pada diagram alir berikut ini :
B.
BENTUK PERULANGAN FOR Pernyataan for digunakan untuk menghasilkan pengulangan (looping) beberapa kali tanpa penggunaan kondisi apapun. Pada umumnya looping yang dilakukan oleh for telah diketahui batas awal, syarat looping dan perubahannya. Selama kondisi terpenuhi, maka pernyataan akan terus dieksekusi. Bentuk struktur dari perulangan for adalah sebagai berikut: for (insialisasi; kondisi; perubahan) { Pernyataan; }
……….. 3.1
Penjelasan bagian-bagian for : ¾ Bagian inisialisasi wajib diberikan sebagai batas awal sebuah perulangan.
17
¾ Bagian kondisi bersifat optional, yaitu jika diberikan maka proses looping akan berlangsung selama syarat memenuhi kondisi. Namun jika tidak, maka proses looping akan dilakukan tanpa batas. ¾ Bagian perubahan juga bersifat optional, yaitu jika diberikan maka proses looping akan berlangsung seiring dengan proses perubahan variabel peubah. Sebaliknya proses looping akan berlangsung dengan isi variable peubah konstan/tetap. Pernyataan (bentuk) perulangan for juga bisa dibuat sebagai sebuah perulangan bersarang (nested loop), dimana strukturnya adalah sebagai berikut: for (insialisasi; kondisi; perubahan) { Pernyataan; for (insialisasi; kondisi; perubahan) { Pernyataan; } }
C.
…… 3.2
BENTUK PERULANGAN WHILE Pernyataan while merupakan salah satu pernyataan yang berguna untuk memproses suatu pernyataan atau beberapa pernyataan beberapa kali tanpa diketahui pasti berapa kali perulangan tersebut akan dilakukan. Pernyataan while memungkinkan statemen-statemen yang ada didalamnya tidak diakukan sama sekali. Struktur umum dari perulangan while adalah sebagai berikut: Inisialisasi; while (kondisi) { Pernyataan; Perubahan; }
…… 3.3
Pernyataan akan dilaksanakan (dijalankan) apabila kondisi bernilai benar (kondisi terpenuhi), jika kondisi sudah bernilai salah maka perulangan akan berhenti.
D.
BENTUK PERULANGAN DO…WHILE Pernyataan do…while mirip seperti pernyataan while, hanya saja pada do…while, pernyataan yang terdapat didalamnya minimal akan sekali dieksekusi. Bentuk umum dari perulangan do…while adalah:
18 Inisialisasi; do { pernyataan; perubahan; } while(kondisi);
….. 3.4
Pernyataan akan dilaksanakan selama kodisi masih dalam keadaan benar. Sama seperti perulangan while, hanya saja pernyataan paling sedikit akan dilaksanakan sekali.
E.
BENTUK PERULANGAN CONTINUE-BREAK Pernyataan break akan selalu terlihat digunakan bila menggunakan pernyataan switch. Pernyataan ini juga digunakan dalam loop. Bila pernyataan ini dieksekusi, maka akan mengakhiri loop dan akan menghentikan iterasi pada saat tersebut. Pernyataan continue digunakan untuk pergi ke bagian awal dari blok loop untuk memulai iterasi berikutnya. Bentuk struktur dari perulangan for adalah sebagai berikut: for(insialisasi; kondisi; perubahan) { if(kondisi) continue; { pernyataan; } if(kondisi) break; }
F.
….. 3.5
PERNYATAAN GOTO Pernyataan goto, diperlukan untuk melakukan suatu lompatan ke suatu pernyataan berlabel yang ditandai dengan tanda “ : “. Bentuk Umumnya : goto bawah; Pernyataan_1; Pernyataan_2; bawah: pernyataan_3;
….. 3.6
Dari bentuk diatas dapat dilihat bahwa apabila pernyataan goto dijalankan, maka pernyataan_3 akan dijalankan sedangkan pernyataan_1 dan pernyataan_2 akan dilewati (tidak akan dijalankan).
19
G.
LATIHAN 1) Latihan untuk struktur 3.1 int main() { int i; for(i=1;i<=10;i++) { printf(“%d\t”,i); } return 0; }
Perhatikan output yang diberikan oleh program. 2) Latihan untuk struktur 3.2 int main() { int i,j; for(i=1;i<=10;i++) { for(j=1;j<=10;j++) { printf(“*”); } printf(“\n”); } return 0; }
Perhatikan output yang diberikan oleh program. 3) Latihan untuk struktur 3.3 int main() { int i; i=1; while(i<=10) { printf(“%d\t”,i); i=i+1; } return 0; }
Perhatikan output yang diberikan oleh program. 4) Latihan untuk struktur 3.4 int main() { int i; i=1; do
Perhatikan output yang diberikan oleh program. 5) Latihan untuk struktur 3.5 int main() { int i,j; for(i=1;i<=10;i++) { if(i==4) continue; { printf("%d\t",i); } if(i==8) break; } return 0; }
Perhatikan outputnya, ketika nilai i=4, maka program akan menambahkan nilai i sehingga nilai i menjadi 5. Dan perulangan akan berhenti (dihentikan) apabila nilai i sudah bernilai 8 (i=8). 6) Latihan untuk struktur 3.6 int main() { printf("Pernyataan Pertama\n"); goto bawah; printf("Pernyataan Kedua\n"); bawah: printf("Pernyataan Ketiga"); return 0; }
Perhatikan output yang dihasilkan, pernyataan “Pernyataan Kedua” tidak akan ditampilkan ke output disebabkan ketika baris goto bawah; ditemukan, maka program akan langsung menuju ke baris “ bawah: printf(“Pernyataan Ketiga”); “.
H.
TUGAS 1)
Buatlah program untuk mencetak deret 10 9 8 7 6 5 4 3 2 1
2)
Buatlah program untuk mencetak (gunakan perulangan while atau for) **** *** ** *
21
3)
Buatlah program yang menampilkan 5 buah bilangan, yaitu mulai dari bilangan ke 5 sampai bilangan ke 1 dengan nilai awal bilangan 8. Tampilan bilangan tersebut adalah menurun dan contohnya adalah : bilangan ke 5, i=3 (diperoleh dari 8-5) dan seterusnya sampai bilangan 1, i=7 (diperoleh dari 8-1=7).
22
MODUL IV FUNGSI
A. TEORI DASAR Secara harfiah, struktur penulisan didalam bahasa C disusun secara modular (tersubprogram). Bahkan pada program utamanya juga berbentuk modul. Secara umum bentuk fungsi didalam C adalah sebagai berikut : Tipe_data nama_fungsi ( daftar_parameter) { Tubuh_fungsi; }
Setiap fungsi harus didefinisikan tipe datanya, hal ini dikarenakan bahwa fungsi memiliki return value (nilai balik) dan setiap nilai balik harus diketahui tipe datanya. Bahasa C memiliki built-in function (fungsi internal), namun fungsi dapat juga diciptakan sendiri oleh pemrogram. Setiap fungsi yang diciptakan harus memiliki nama yang unik atau berbeda antara satu dengan yang lain. Pada bagian lain dari fungsi, terdapat daftar parameter. Parameter adalah nama-nama peubah yang dideklarasikan pada bagian header fungsi. Daftar parameter dipisahkan oleh tanda koma, dan setiap parameter harus bertipe data. Terkadang fungsi tidak memiliki daftar parameter, namun merupakan keharusan menempatkan tanda parentheses ‘()’ pada fungsi tersebut.
B. DEKLARASI Ada dua cara yang dapat digunakan untuk mendeklarasikan fungsi, yaitu: 1) Secara Langsung Yaitu dengan menempatkan fungsi diatas fungsi main(), Seperti contoh berikut ini : int kali(int angka_1, int angka_2) { return angka_1*angka_2; } int main(); { printf(“Hasil kali antara 2 dan 3 adalah”,kali(2,3)); return 0; }
23
2) Secara Tak Langsung Yaitu dengan menempatkan nama prototype fungsi diatas fungsi main() dan implementasi prototype fungsi dibawahnya Seperti contoh berikut ini : int kali(int angka_1, int angka_2); //Prototype fungsi int main(); { printf(“Hasil kali antara 2 dan 3 adalah”, kali(2,3)); return 0 } int kali(int angka_1, int angka_2);//implementasi prototype fungsi { return angka_1*angka_2 }
C. PARAMETER Seperti yang telah dijelaskan sebelumnya, bahwa parameter merupakan sebuah peubah. Dari penggunaannya, parameter bisa dilewatkan kedalam sebuah fungsi dengan 2 cara, antara lain: 1)
Call by Value Adalah suatu cara melewatkan sebuah nilai pada parameter. Perhatikan contoh sebelumnya yaitu pada fungsi kali saat dijalankan di program utama.
2)
Call by Reference Adalah suatu cara melewatkan alamat sebuah variabel pada sebuah parameter. Untuk jenis parameter ini, perlu ditambahkan operator pointer yaitu & atau * didepannya. Coba latih contoh berikut ini #include #include<stdio.h> int kali(int angka_1, int angka_2); //Prototype fungsi int jumlah(int *angka_1, int *angka_2); //Prototype fungsi int main() { int a, b; a=10; b=10; printf("Hasil kali antara a dan b adalah %d\n",kali(a,b)); printf("Hasil jumlah antara a dan b adalah %d",jumlah(&a,&b)); return 0; }
24 int kali(int angka_1, int angka_2) //implementasi prototype fungsi { angka_1=angka_1 * angka_2; return angka_1; } int jumlah(int *angka_1, int *angka_2) //implementasi prototype fungsi { *angka_1=*angka_1+*angka_2; return *angka_1; }
D. REKURSIF Rekusif adalah pemanggilan oleh dirinya sendiri. Oleh karena fungsi bisa menghasilkan nilai balik, maka fungsi bisa juga bisa memanggil dirinya sendiri. Contohnya adalah sebagai berikut : int faktorial(int); //deklarasi fungsi int main() { printf("%d",faktorial(5)); return 0; } int faktorial(int angka_1) //implementasi prototype fungsi { if (angka_1==0) return 1; else return angka_1*faktorial(angka_1-1); }
Dari contoh tersebut, akan menghasilkan nilai: 120, yaitu berasal dari perkalian: 1*2*3*4*5.
E. TUGAS 1)
Buatlah fungsi untuk menghitung luas suatu bangun (segitiga, persegi panjang, kubus)?
2)
Buatlah fungsi untuk menghitung hasil pangkat bilangan misalkan 2 pangkat 3 hasilnya adalah 8.
25
MODUL V ARRAY A. DASAR TEORI Array atau larik merupakan sekumpulan data yang mempunyai nama dan tipe yang sama. Array sering disebut juga sebagai variabel berindeks. Nilai suatu data dalam array ditentukan oleh nama dan indeks. Array banyak digunakan pada operasi yang melibatkan indeks seperti pada statistik dan matriks. Tipe data array dapat berupa array satu dimensi, dua dimensi, tiga dimensi atau banyak dimensi. Secara umum bentuk array didalam C adalah sebagai berikut : Tipe_data Nama_array[ukuran];
Untuk bentuk array lebih dari 1 dimensi, digambarkan bentuknya seperti berikut : Tipe_data Nama_array[ukuran_1] [ukuran_2] …[ukuran_n];
Contoh, Char nama[10];
Array diatas menjelaskan bahwa array nama merupakan array berdimensi satu dengan ukuran 10 kali jumlah memori tipe char. Posisi awal hitung array dimulai dari posisi 0 bukannya 1, sehingga jika nama dideklarasikan seperti contoh diatas, maka berarti bahwa posisi awal array nama adalah 0 dan yang terakhir adalah 9 (bukanlah 10). B. REPRESENTASI ARRAY Untuk bisa menggunakan tipe array didalam program maka perlu mendeklarasikan seperti contoh sebelumnya. Sedangkan untuk pengisian nilai pada array dilakukan secara satu persatu bersesuaian dengan nomor indeksnya misalkan : double nilai[5]; nilai[0]=7.5; nilai[1]=10; nilai[2]=5.5; nilai[3]=6.75; nilai[4]=8.25;
Atau dengan mendeklaraksikannya sebagai konstanta array, seperti contoh berikut : double nilai[5]={7.5,10,5.5,6.75,8.25};
Khusus untuk tipe char sebagai string bisa langsung dituliskan semua karakter didalam tanda petik dua seperti contoh berikut :
26 char nama[15]=”Marlena”;
C. LATIHAN 1) Array 1 dimensi Berikut ini contoh coding (program) untuk menginputkan dan menampilkan kembali array 1 dimensi. int main() { int i,bil_bulat[5]; float bil_real[5]; char nama[20]; /* menginputkan array bil_bulat, bil_ganjil */ for(i=0;i<5;i++) { printf("Masukkan bilangan bulat ke %d:",i+1); scanf("%d",&bil_bulat[i]); printf("Masukkan bilangan pecahan ke %d:",i+1); scanf("%f",&bil_real[i]); } /* menginputkan array nama */ printf("Masukkan Nama Anda :");scanf("%s",&nama); /* menampilkan isi array bil_bulat, bil_ganjil */ for(i=0;i<5;i++) { printf("bilangan bulat ke %d: %d\n",i+1,bil_bulat[i]); printf("bilangan bulat ke %d: %f\n",i+1,bil_real[i]); } /* menampilkan array nama */ printf("Nama Anda : %s",nama); return 0; }
Perhatikan output yang diberikan. 2) Array 2 dimensi Berikut ini contoh listing program yang menginputkan dan menampilkan kembali array 2 dimensi (matriks). Listing program berikut merupakan program penjumlahan dua buah matriks dimana elemen-elemen dari matrik diinputkan oleh pengguna. int main() { int i,j; int matrikA[3][3], matrikB[3][3], matrikHasil[3][3];
27 /* menginputkan elemen dari matriks A */ for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("Masukkan elemen A[%d][%d]:",i+1,j+1); scanf("%d",&matrikA[i][j]); } } /* menginputkan elemen dari matriks B */ for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("Masukkan elemen B[%d][%d]:",i+1,j+1); scanf("%d",&matrikB[i][j]); } } /* menampilkan elemen dari matriks A */ printf("\n Elemen dari matriks A adalah:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d\t",matrikA[i][j]); } printf("\n"); } /* menampilkan elemen dari matriks B */ printf("\n Elemen dari matriks B adalah:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d\t",matrikB[i][j]); } printf("\n"); } /* Operasi Penjumlahan 2 matriks */ for(i=0;i<3;i++) { for(j=0;j<3;j++) { matrikHasil[i][j]=matrikA[i][j]+matrikB[i][j]; } } /* menampilkan elemen dari matriks Hasil Penjumlahan */ printf("\n Matriks hasil Penjumlahan adalah:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) {
D. TUGAS 1) Buatlah program yang menghitung jumlah elemen dalam suatu array (larik) dengan array (larik) 1 dimensi {1,3,5,4,7,2,99,16,45,67,89,45}. 2) Buatlah program yang membalikkan sebuah string, contoh: jika diinputkan sebuah string: SELAMAT maka akan dikeluarkan output: TAMALES