˘ ˇ S ˆ˙ · PDF filec c c Sc S c c c c c c c c c c ˘ c ˇ ˇ ˆ c c c c ˙c˝˛ c ˇ c˚ c˜ c c ˛ c c c!"c
C
Transcript of C
TUTORIAL BAHASA PEMROGRAMAN C
(Iwan Setiawan, ST, MT) Office: Automatic Control Laboratory, Electrical
Engineering of UNDIP
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Konsep pemrograman Terstruktur/prosedural Prinsip utama dari pemrograman terstruktur (structured programming)
adalah jika suatu proses telah sampai pada suatu titik tertentu, maka
proses selanjutnya tidak boleh melompat lagi ke baris sebelumnya,
kecuali untuk proses berulang. Dengan alasan ini pemrograman
terstruktur juga sering disebut sebagai pemrograman tanpa GOTO
(“GOTOless programming”). Dalam kebanyakan bahasa tingkat tinggi
seperti Basic, dan Fortran masih sering kita jumpai statemen GOTO
yang berfungsi melompatkan proses ke sembarang baris, diatas atau
dibawahnya, sedangkan untuk bahasa tingkat tinggi lainnya seperti
Pascal dan C, statemen GOTO ini dapat kita hindari pemakaiannya,
karena bahasa ini mendukung pemrograman terstruktur yang relative
lebih sempurna.
Ada beberapa kelebihan yang dimiliki oleh bahasa-bahasa yang
mendukung pemrograman terstruktur ini, diantaranya yaitu:
• Relative Mudah menulis program terstruktur, karena masalah
pemrograman yang rumit dapat dipecahkan menjadi sejumlah
tugas –tugas kecil dan sederhana, yang dikerjakan oleh fungsi
atau procedure.
• Relative mudah untuk men-debug program terstruktur. Jika
program yang dibuat mempunyai bug, perancangan terstruktur
menyebabkan kemudahan untuk mengisolasi sesuatu (fungsi)
yang menyebabkan bug tersebut.
• Fungsi-fungsi yang dibuat dapat digunakan oleh program-
program yang berbeda
2
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Salah satu bahasa program terstruktur yang banyak digunakan oleh
para professional dalam menulis program-program paket adalah bahasa
C, hal ini dikarenakan bahasa C mempunyai kemampuan lebih dari
bahasa pemrograman lain, diantaranya adalah :
• kecepatan prosesnya (misal, program yang ditulis dengan C bila
dijalankan kira-kira 50 kali lebih cepat dibandingkan dengan
BASIC).
• Bahasa C memiliki sedikit kata-kata cadangan (reserved word)
dibandingkan bahasa program lain
• Bahasa C bersifat modular. Artinya kode-kode program umumnya
ditulis dalam bentuk fungsi-fungsi yang dapat digunakan untuk
aplikasi atau program lain (reuse code), selain itu program yang
ditulis akan teratur dengan baik sehingga baik untuk
dokumentasi. Program terstruktur apabila akan dilakukan
modifikasi akan mudah dilakukan.
Program C Dasar
Berikut ini adalah contoh potongan program sederhana yang ditulis
dalam bahasa C untuk menampilkan kalimat hallo world pada layar
monitor
main()
{
printf(“hallo world”);
}
3
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Dalam hal ini main() adalah sebuah fungsi yang harus selalu ada pada
setiap program C. sedangkan program utama diletakan didalam tanda
brace {}. Pada dasarnya program utama ini berupa pemanggilan fungsi-
fungsi standar yang tersedia pada library (misal dalam hal ini printf
adalah fungsi library yang digunakan untuk menampilkan hasil pada
layar) atau fungsi-fungsi yang dibuat oleh programmer.
Komponen-Komponen Program bahasa C
Setiap program C terdiri dari beberapa komponen yang dikombinasikan
dengan susunan tertentu. Untuk mendapatkan pemahaman yang
menyeluruh berkaitan dengan struktur program C dan komponen-
komponen programnya, dibawah ini akan diberikan program yang
relative lengkap walaupun ukurannya kecil 1: /* Program untuk menghitung perkalian dua bilangan. */
2: #include <stdio.h>
3:
4: int a,b,c;
5:
6: int kali(int x, int y);
7:
8: main()
9: {
10: /* masukan bilangan pertama */
11: printf("Masukan bilangan antara 1 sampai 100: ");
12: scanf("%d", &a);
13:
14: /* masukan bilangan kedua */
15: printf("Masukan bilangan lain antara 1 sampai 100: ");
16: scanf("%d", &b);
17:
18: /* hitung dan tampilkan hasil */
4
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
19: c = kali(a, b);
20: printf ("%d kali %d = %d\n", a, b, c);
21:
22: return 0;
23: }
24:
25: /* fungsi untuk menghitung perkalian dua argumen*/
26: int kali(int x, int y)
27: {
28: return (x * y);
29: }
Masukan bilangan antara1 sampai 100: 35
Masukan bilangan lain antara 1 sampai 100: 23
35 kali 23 = 805
(keterangan: pada program sebenaranya nomer bilangan tidak ditulis,
penulisan disini semata-matas digunakan hanya untuk memudahkan
penjelasan) .
Fungsi main() (baris 8 sampai 28)
Seperti yang telah disinggung diatas secara sekilas, komponen yang
harus pada setiap program C adalah fungsi main(). Eksekusi program
dimulai pada statement pertama pada main() dan berakhir di statemen
terakhir dalam main().
Pengarah (directive) #include (baris 2)
Pengarah #include mengintruksikan pada compiler C untuk menambahkan isi
file include (file header) pada program yang dibuat saat compilasi. Pengarah
#include pada contoh program diatas berarti “tambahkan isi file stdio.h”.
Umumnya program C selalu membutuhkan satu atau lebih file header.
Definisi Variabel (baris 4)
5
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Varibel adalah sebuah nama yang digunakan sebagai petunjuk lokasi
tempat simpan data. Dalam C, sebuah varibel harus didefinisikan
terlebih dahulu sebelum digunakan. Sebuah definisi varibabel
menginformasikan pada compiler nama varibel dan tipe data yang bisa
disimpan. Dalam program contoh, definisi varibel baris 4 int a,b,c
mendefinisikan tiga variable dengan nama a, b dan c yang masing-
masing akan menyimpan tipe data integer.
Prototipe Fungsi (baris 6)
Prototipe Fungsi berguna untuk menginformasikan pada compiler C
nama dan argument-argumen fungsi yang ada pada program. Prototype
ini harus ditulis sebelum fungsi tersebut digunakan, harus ditekankan
disini bahwa prototype fungsi ini berbeda dengan definisi fungsi
(function definition).
Statemen-Statemen Program (baris 11,12,15,16,19,20,22, dan
28)
Perintah – perintah operasi yang dijalankan suatu program C pada
dasarnya merupakan statemen-statemen program: Statemen-stamen
ini dapat berupa operasi matematika, pemanggilan fungsi, membaca
input keyboard, menampilkan informasi pada layar, dan lain-lain. Perlu
diingat disini bahwa akhir statemen pada C harus selalu diakhiri oleh
tanda baca semicolon.
printf()
6
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Statemen printf() (baris 11, 15, dan 20) adalah fungsi library untuk
menampilkan informasi pada layar monitor. Statemen ini dapat
menampilkan text sederhana (seperti pada baris 11 dan 15), atau pesan
dan nilai satu atau lebih variable program (seperti pada baris 20)
scanf()
statemen scanf() (baris 12 dan 16) adalah fungsi library juga yang
berguna untuk membaca data dari keybord dan memberikan data
tersebut pada satu atau lebih variable program.
Statemen program pada baris 19 adalah pemanggilan fungsi kali().
Dengan kata lain statemen ini mengeksekusi fungsi kali, dan
mengirimkan argument a dan b pada fungsi, setelah fungsi selesai
dipanggil, kali() mengembalikan return sebuah nila pada program yang
selanjutnya disimpan pada variable c.
return
Pada baris 22 dan 28 terdapat statemen return, statemen return
pada baris 28 merupakan bagian dari fungsi kali(). Yaitu untuk
menghitung perkalian x dan y dan mengembalikan hasil pada statemen
program yang memanggil kali(). Statemen return pada baris 22
mengembalikan nilai 0 pada system operasi setelah program selesai
dilaksanakan.
Definisi Fungsi
7
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Fungsi adalah bagian program yang bersifat independent yang ditulis
atau dibuat untuk melakukan tugas-tugas tertentu. Setiap fungsi harus
memiliki nama yang unik yang mencerminkan tugas yang akan
dilaksanakan oleh fungsi tersebut.
Fungsi dengan nama kali(), pada baris 26 sampai 29, adalah fungsi yang
didefinisikan programmer (user-defined function).
Bahasa C juga telah menyediakan fungsi-fungsi library yang sering
digunakan oleh programmer, misal untuk operasi-operasi input/output,
operasi matematika, dll. Yang perlu dilakukan oleh programmer untuk
menggunakan fungsi-fungsi library ini adalah cukup meng include-kan
file header yang berisi informasi fungsi-fungsi yang tersedia beserta
argumennya, misal untuk memanggil fungsi trigonometri seperti sin,
cos, dan lain-lain pada awal program harus kita tulis : #include <math.h>
Komentar Program
Komentar program bertujuan untuk dokumentasi listing sumber.
Komentar pada C harus dimulai dengan /* dan diakhiri dengan */.
Setiap bagian program yang berada diantara tanda tersebut tidak akan
dicompile oleh compiler (tidak mempengaruhi ukuran file exe).
Braces (Baris 9, 23, 27, dan 29)
Setiap fungsi yang dibuat pada C harus berada didalam tanda kurung
kurawal (brace), hal ini juga termasuk fungsi main(). Satu atau lebih
statemen yang berada dalam tanda kurung kurawal dinamakan block.
8
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Lebih Lanjut Dengan Variabel dan Konstanta
variable adalah lokasi tempat simpan data didalam memori computer
(ram). Beberapa aturan yang harus dipenuhi dalam penulisan variable
pada C adalah sebagai berikut:
• Nama Variabel dapat terdiri dari huruf, angka dan karakter
underscore (_).
• Karakter pertama harus huruf atau underscore.
• Bersifat sensitive case: jumlah dan Jumlah adalah dua buah
variable yang berbeda
• Tidak boleh menggunakan keyword C.
Tipe Variabel Numeris
Bahasa C memiliki beberapa tipe variable numeris yang berbeda, yang
secara umum dapat dibagi menjadi dua katagori:
• Variabel integer untuk menyimpan nilai data yang tidak memiliki
bagian pecahan, ada dua jenis integer:integer bertanda (signed
integer), dan integer tidak bertanda (unsigned integer).
• Variabel Floating-point untuk menyimpan bilangan real .
Tabel Tipe Data Numeris
Tipe Variabel Kata Kunci Jumlah Byte
Jangkauan nilai
Character char 1 -128 : 127 Integer int 2 -32768 : 32767
9
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Short integer short 2 -32768 : 32767
Long integer long 4 -2,147,483,648 :2,147,438,647
Unsigned character
unsigned char
1 0 : 255
Unsigned integer unsigned int 2 0 : 65535
Unsigned short integer
unsigned short
2 0 : 65535
Unsigned long integer
unsigned long
4 0 : 4,294,967,295
Single-precision float 4 1.2E-38 : floating-point 3.4E381
Double-precision double 8 2.2E-308 :
floating-point 1.8E3082 1 Presisi = 7 digit. 2 Presisi= 19 digits.
Program dibawah ini dapat digunakan untuk menampilkan ukuran tipe-
tipe variable numeris.
1: /* SIZEOF.C--Program untuk mendapatkan ukuran tipe variable */ 2: /* dalam bytes */ 3: 4: #include <stdio.h> 5: 6: main() 7: { 8: 9: printf( "\n char adalah %d byte", sizeof( char )); 10: printf( "\n int adalah %d byte", sizeof( int )); 11: printf( "\n short adalah %d byte", sizeof( short )); 12: printf( "\n long adalah %d byte", sizeof( long )); 13: printf( "\n unsigned char adalah %d byte", sizeof( unsigned char )); 14: printf( "\n unsigned int adalah %d byte", sizeof( unsigned int )); 15: printf( "\n unsigned short adalah %d byte", sizeof( unsigned short )); 16: printf( "\n unsigned long adalah %d byte", sizeof( unsigned long ));
10
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
17: printf( "\n float adalah %d byte", sizeof( float )); 18: printf( "\n double adalah %d byte\n", sizeof( double )); 19: 20: return 0; 21: } char adalah 1 byte int adalah 2 byte short adalah 2 byte long adalah 4 byte unsigned char adalah 1 byte unsigned int adalah 2 byte unsigned short adalah 2 byte unsigned long adalah 4 byte float adalah 4 byte double adalah 8 byte
Deklarasi Variabel
Sebelum kita menggunakan variable pada program C, maka kita harus
mendeklarasikannya terlebih dahulu. Deklarasi variable memiliki bentuk
seperti dibawah ini
typevar varname;
typename adalah tipe dari variable, sedangkan varname adalah nama
variable yang akan kita gunakan pada program. Kita dapat menulis
banyak variable dengan satu tipe dengan menggunakan pemisah koma:
int count, number, start; /* tiga variable integer */
float percent, total; /* dua variable float */
Konstanta
Seperti halnya variable, konstanta digunakan untuk menyimpan sebuah
nilai, perbedaannya, nilai konstanta ini tidak dapat diubah saat program
dijalankan.
11
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Kata kunci untuk menandakan sebuah pengenal merupakan konstanta
adalah: const
const int count = 100; const float pi = 3.14159;
12
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Lebih Lanjut dengan Statemen dan Operator Pada C
Statemen adalah sebuah instruksi lengkap yang mengarahkan computer
melakukan sesuatu. Statemen dalam C selalu diakhiri dengan tanda
semicolon, sebagai contoh:
x = 2 + 3;
contoh diatas merupakan statemen pemasupan (assignment statement)
dimana statemen menginstruksikan computer untuk menjumlahkan 2
dengan 3 dan hasilnya disimpan pada variable x.
Operator
Operator adalah sebuah symbol yang mengintruksikan C untuk
melakukan operasi atau aksi pada satu atau lebih operan. Ada 4 jenis
katagori operator pada C:
• Operator pemasupan (assignment operator)
• Operator matematika (Mathematical operators)
• Operator relasi (Relational operators)
• Operator logika (Logical operators)
Operator Pemasupan
Operator pemasupan pada C adalah tanda samadengan (=).
variable = expression;
Ketika dieksekusi, expression ekspresi dievaluasi dan hasilnya disimpan pada variable.
13
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Operator Matematika
• Operator matematika unary : operator yang dikenakan pada satu operan
Operator Simbol aksi contoh
Increment ++ Menambah operan dengan satu ++x Decrement -- Mengurangi operan dengan satu -- x
Statemen : ++x; --y;
adalah ekuivalen dengan statemen berikut:
x = x + 1; y = y - 1;
• Operator Matematika binary operator yang dikenakan pada dua operan
Operator Simbol Action Contoh
Penjumlahan + Menjumlahkan dua operan x + y
Pengurangan - Mengurangi operan pertama dengan operan ke dua
x - y
Perkalian * Mengalikan dua operan x * y
Pembagian / Membagi operan pertama dengan operan kedua
x / y
Modulus % Memberikan sisa hasil pembagian x % y
Operator Relasi
Operator-operator relasi pada C digunakan untuk membandingkan
ekspresi, seperti pertanyaan berikut “ apakah x lebih besar dari
14
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
1000?” atau “ apakah y samadengan 0?”, sebuah ekspresi memiliki
operator relasi yang bernilai benar: true (1) atau salah: false (0). Ada 6
operator pada C seperti pada table dibawah:
Table Operator Relasi pada C
Operator Simbol
Pertanyaan Contoh
samadengan == Apakah operan 1 samadengan operan 2?
x == y
Lebih besar dari > Apakah operan 1 lebih besar dari operan 2?
x > y
Lebih kecil dari < Apakah operan 1 lebih kecil dari operan 2?
x < y
Lebih besar atau samadengan
>= Apakah operan 1 lebih besar atau sama dengan operan 2?
x >= y
Lebih kecil atau samadengan
<= Apakah operan 1 lebih kecil atau sama dengan operan 2?
x <= y
Tidak sama != Apakah operan 1 tidak sama dengan operan 2?
x != y
Tabel dibawah memperlihatkan contoh penggunaan operator relasi dan hasil evaluasinya
Ekspresi Pembacaan Hasil evaluasi
5 == 1 Apakah 5 sama dengan 1 0 (false)
5 > 1 Apakah 5 lebih besar dari 1 1 (true)
5 != 1 Apakah 5 tidak samadengan 1 1 (true) (5 + 10) == (3 * 5)
Apakah (5 + 10) Sama dengan (3 * 5)?
1 (true)
15
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Statemen If
Operator relasi digunakan umumnya untuk membentuk ekspresi pada
statemen yang mengandung if atau while (program control statements).
Seperti diketahui eksekusi program secara normal berjalan secara top
bottom, Untuk mengubah aliran program kita dapat menggunakan
statemen-statemen control program
Bentuk umum statemen if adalah sebagai berikut:
if (expression)
statement;
jika ekspresi benar , maka statemen akan dieksekusi, jika hasil evaluasi
ekspresi bernilai salah, maka statemen tidak akan dieksekusi.
Statemen if dapat mengontrol eksekusi statemen jamak atau blok,
dengan cara penulisan seperti dibawah:
if (expression) { statement1; statement2; ---------- statementn; }
Program dibawah memperlihatkan penggunaan operator relasi pada C
1: /* Contoh pemakaian statemen if */ 2: 3: #include <stdio.h> 4: 5: int x, y; 6: 7: main() 8: { 9: /* Masukan dua nilai yang akan ditest */ 10: 11: printf("\ masukan nilai integer untuk x: ");
16
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
12: scanf("%d", &x); 13: printf("\masukan nilai integer untuk y: "); 14: scanf("%d", &y); 15: 16: /* Test nilai dan tampilkan hasil */ 17: 18: if (x == y) 19: printf("x sama dengan y\n"); 20: 21: if (x > y) 22: printf("x lebih besar dari y\n"); 23: 24: if (x < y) 25: printf("x lebih kecil dari y\n"); 26: 27: return 0; 28: } masukan nilai integer untuk x : 100 masukan nilai integer untuk y :10 x lebih besar dari y masukan nilai integer untuk x : 10 masukan nilai integer untuk y :100 x lebih kecil dari y masukan nilai integer untuk x : 10 masukan nilai integer untuk y :10 x sama dengan y Clausa else
Statemen if secara opsional dapat mengandung klausa else, seperti dibawah ini
if (ekspresi) statement1; else statement2;
jika hasil evaluasi ekspresi bernilai benar, statement1 dieksekusi, jika salah, statemen2 akan dieksekusi. Statemen1 dan statemen2 keduaduanya dapat merupakan statemen jamak atau blok
Program dibawah ini memperlihatkan penggunaan statemen if dan klausa else
1: /* Contoh penggunaan statemen if dan else */ 2: 3: #include <stdio.h> 4: 5: int x, y; 6: 7: main()
17
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
8: { 9: /* Masukan dua nilai yang akan ditest */ 10: 11: printf("\ masukan nilai integer untuk x: "); 12: scanf("%d", &x); 13: printf("\masukan nilai integer untuk y: "); 14: scanf("%d", &y); 15: 16: /* Test nilai dan tampilkan hasil */ 17: 18: if (x == y) 19: printf("x sama dengan y\n"); 20: else 21: if (x > y) 22: printf("x lebih besar dari y\n"); 23: else 24: printf("x lebih kecil dari y\n"); 25: 26: return 0; 27: }
Contoh-contoh lain
Contoh 1 if( gaji > 45,0000 ) pajak = .30; else pajak = .25;
contoh 2
if( umur < 18 ) printf("Muda"); else if( age < 65 ) printf("Dewasa"); else printf( "Tua");
Operator Logika
Ada tiga operator logika pada C seperti yang ditabelkan dibawah ini:
Operator Simbol Contoh AND && exp1 && exp2
OR || exp1 || exp2
NOT ! !exp1
18
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Hasil evaluasi operator-operator tersebut adalah seperti ditabelkan berikut:
Ekspresi Hasil Evaluasi (exp1 && exp2) Benar (1) Jika kedua ekspresi exp1 dan exp2 benar
(exp1 || exp2) Benar (1)Jika salah satu ekspresi exp1 atau exp2 benar
(!exp1) Salah (0) Jika exp1 bernilai benar
Beberapa contoh hasil evaluasi ekspresi logika pada C :
Ekspresi Hasil Evaluasi
(5 == 5) && (6 != 2) Benar (1), Karena kedua operan bernilai benar (5 > 1) || (6 < 1) Benar (1), Karena salah satu operan bernilai benar
(2 == 1) && (5 == 5) Salah(0), Karena salah satu operan bernilai salah
!(5 == 4) Benar (1), Karena operan bernilai salah
Operator Kondisional : Pemilihan
Operator kondisional adalah operator ternary, karena memerlukan tiga
operan:
exp1 ? exp2 : exp3;
Jika hasil evaluasi exp1 bernilai benar (nonzero), maka ekspresi
keseluruhan akan mengevaluasi nilai exp2, jika sebaliknya maka yang
akan dievaluasi adalah nilai exp3. Contoh statemen dibawah ini akan
memuati nilai 1 pada x jika y bernilai benar dan memuati 100 pada x
jika y bernilai salah
x = y ? 1 : 100;
19
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Dengan menggunakan operator ini kita dapat mempersingkat ekspresi
statemen-statemen
if (x > y)
z = x;
else
z = y;
menjadi seperti dibawah ini:
z = (x > y) ? x : y;
20
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Lebih Lanjut Dengan Fungsi
Seperti pada bahasa pemrograman procedural lainnya, Fungsi pada C
memiliki peranan yang sangat penting, karena program C yang kita buat
untuk sebuah aplikasi tertentu umumnya merupakan atau berisi
pemanggilan-pemanggilan fungsi, baik berupa fungsi standar atau
fungsi buatan kita sendiri.
Definisi Fungsi
Fungsi adalah bagian kode program yang bersifat independent yang
melakukan tugas-tugas khusus dan secara opsional mengembalikan
sebuah nilai pada program pemanggil.
Ilustrasi Fungsi
1: /* Contoh fungsi sederhana */ 2: #include <stdio.h> 3: 4: long cube(long x); 5: 6: long input, answer; 7: 8: main() 9: { 10: printf("Masukan nilai integer: "); 11: scanf("%d", &input); 12: answer = cube(input); 13: /* catatan: %ld specifier konversi untuk */ 14: /* long integer */ 15: printf("\n pangkat 3 dari %ld adalah %ld.\n", input, answer); 16: 17: return 0; 18: } 19: 20: /* fungsi: cube() – menghitung pangkat 3 dari sebuah nilai */ 21: long cube(long x) 22: { 23: long x_cubed; 24: 25: x_cubed = x * x * x; 26: return x_cubed; 27: }
21
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Masukan nilai integer: 100 Pangkat 3 dari 100 adalah 1000000. Analisis: baris 4 berisi prototype fungsi, yaitu model untuk fungsi yang akan dibuat
belakangan pada program. Prototype fungsi ini terdiri dari nama fungsi, daftar
variable yang akan dilewatkan, dan tipe variable yang akan dikembalikan, jika ada.
Variable yang dilewatkan pada fungsi dinamakan argument.
Baris 12 berisi statemen pemanggilan fungsi dan melewatkan variable
input sebagai argument fungsi.
Sedangkan baris 21 sampai 27 merupakan definisi dari Fungsi. Dalam
hal ini dinamakan cube. seperti halnya prototype, definisi fungsi juga
memiliki beberapa bagian: header yaitu seperti pada prototype tapi
tanpa semicolon dan bodi dari fungsi yang berada didalam tanda kurung
kurawal {}.
Baris 23 berisi deklarasi variable local, yaitu variable yang hanya
dikenal didalam fungsi tersebut.
Bagaimana Fungsi Bekerja
Sebuah program C tidak akan mengeksekusi statemen statemen dalam
sebuah fungsi sampai fungsi tersebut dipanggil oleh bagian lain pada
program. Ketika fungsi dipanggil, program dapat mengirimkan satu atau
lebih argument kemudian statemen-statemen dalam fungsi tersebut
dieksekusi, ketika statemen terakhir selesai dikerjakan, eksekusi
program kembali pada lokasi yang sama pada program yang memanggil
fungsi tersebut. Fungsi dapat mengirimkan informasi (data) data balik
pada program dalam bentuk return value
22
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Gambar dibawah memperlihatkan ilustrasi pemanggilan fungsi.
Prototipe fungsi
return_type function_name( arg-type name-1,...,arg-type name-n);
Definisi Fungsi
return_type function_name( arg-type name-1,...,arg-type name-n) { /* statements; */ }
prototype fungsi memberikan informasi pada compiler tentang
deskripsi dari sebuah fungsi yang akan didefinisikan belakangan pada
program. Prototype terdiri dari tipe kembalian (return type), yang
menunjukan tipe variable yang akan dikembalikan oleh fungsi, kemudian
nama fungsi yang menggambarkan apa yang akan dikerjakan oleh fungsi
tersebut (informative), prototype juga berisi tipe-tipe variable dari
argument yang akan dilewatkan pada fungsi. Secara opsional bisa juga
berisi nama dari variable yang akan dilewatkan. Prototype fungsi pada
C harus diakhiri oleh tanda semicolon
Definisi fungsi adalah fungsi yang sebenarnya. Definisi berisi kode –
kode atau statemen yang akan dieksekusi, baris pertama definisi fungsi
adalah header fungsi, yang identik dengan prototype kecuali tanpa
23
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
semicolon dan nama variable bersifat mutlak. Statemen-statemen yang
akan dieksekusi terdapat pada badan fungsi yaitu ada didalam tanda
kurung kurawal {}.
Contoh-contoh prototype fungsi
double squared( double number); void print_report( int); int get_menu_choice( void );
Contoh-contoh definisi fungsi
double squared( double number ) /* function header */ { /* opening bracket */ return( number * number ); /* function body */ } /* closing bracket */ void print_report( int report_number ) { if( report_number == 1 ) puts( "Printing Report 1" ); else puts( "Not printing Report 1" ); }
24
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Kontrol Aliran Program Dasar
Konsep Array :Dasar
Sebelum lebih lanjut membahas statemen-statemen control program,
disini terlebih dahulu akan dibahas tentang konsep array pada C secara
sekilas. Hal ini disebabkan terdapat kaitan yang sangat erat antara
statemen for (perulangan) dengan array.
Array secara sederhana adalah sekelompok deret data yang memiliki
tipe yang sama, setiap elemen data dibedakan oleh indek tertentu.
Seperti tipe data yang lain, kita perlu mendeklarasikan array terlebih
dahul sebelum digunakan. Deklarasi array harus mencakup tipe dan
ukuran dari array tersebut.
Contoh, statemen dibawah ini mendeklarasikan array dengan nama data
dengan tipe int dan memilki 1000 elemen:
int data[1000];
setiap elemen individual dapat dirujuk dengan menggunakan indek, yaitu
data[0] sampai data[999], elemen pertama adalah data[0], bukan
data[1], dalam bahasa pemrograman lain, misal pascal dan basic, elemen
pertama array adalah indek 1
Pengendalian Eksekusi Program
Urutan eksekusi default program C adalah top down. Eksekusi mulai
dari awal statemen sampai akhir statemen pada main(), tetapi pada
25
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
permasalahan yang nyata jarang sekali kita memprogram dengan urutan
seperti diatas. Bahasa C memiliki statemen-statemen kendali ynag
memungkinkan kita mengendalikan urutan aliran eksekusi program.
Statemen For
Statemen for pada C berguna untuk mengeksekusi satu blok dari
statemen secara berulang
Struktur Statemen For adalah sebagai berikut
for ( initial; condition; increment ) statement;
1. initial umumnya adalah nilai awal dari variabel yang digunakan
dalam pengulangan
2. condition umumnya adalah ekspresi relasi.
3. increment adalah penaikan variable pengulangan.
Operasi statemen for ini dapat dilihat pada gambar dibawah ini:
Program dibawah ini adalah contoh penggunaan statemen for
26
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
1: /* demo penggunaan for*/ 2: 3: #include <stdio.h> 4: 5: int count; 6: 7: main() 8: { 9: /* cetak angka 1 sampai 20 */ 10: 11: for (count = 1; count <= 20; count++) 12: printf("%d\n", count); 13: 14: return 0; 15: } Gambar dibawah ini memperlihatkan operasi contoh program diatas
contoh potongan program lain penggunaan statemen for
int value[10]; int ctr,nbr=0; for (ctr = 0; ctr < 10 && nbr != 99; ctr++) { puts("Enter a number, 99 to quit "); scanf("%d", &nbr); value[ctr] = nbr; }
Pada contoh-contoh diatas, statemen for digunakan dengan operator increment, untuk penaikan variable counting, dalam hal ini statemen for
27
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
dapat menggunakan operator decrement untuk menurunkan variable counting, seperti contoh dibawah ini:
for (count = 100; count > 0; count--)
Kita juga dapat menaikan nilai dengan bilangan selain 1, seperti contoh dibawah ini:
for (count = 0; count < 1000; count += 5)
Selain itu, statemen for juga sangat fleksibel, sebagai contoh, kita dapat menghilangkan ekspresi inisialisasi jika variable test telah diinisialisasi pada awal program, seperti contoh dibawah:
count = 1; for ( ; count < 1000; count++)
Statemen for bersarang
Statemen for dapat dieksekusi didalam blok statemn for lainnya (bersarang), perhatikan contoh dibawah ini:
1: /* demontrasi statemen for bersarang */ 2: 3: #include <stdio.h> 4: 5: void draw_box( int, int); 6: 7: main() 8: { 9: draw_box( 8, 35 ); 10: 11: return 0; 12: } 13: 14: void draw_box( int row, int column ) 15: { 16: int col; 17: for ( ; row > 0; row--) 18: { 19: for (col = column; col > 0; col--) 20: printf("X"); 21: 22: printf("\n"); 23: } 24: } XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
28
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Statemen While
Statemen while atau sering dinamakan kalang while, akan mengeksekusi
satu block statemen sepanjang kondisi yang telah ditentukan
mempunyai logika true (benar).Bentuk umum statemen while adalah
sebagai berikut
while (condition) statement
condition adalah sembarang ekspresi C yang akan dievaluasi
kebenarannya, sedangkan statement dapat merupakan statemen
tunggal atau statemen jamak.
Operasi statemen while ini dapat dilihat pada gambar dibawah ini:
Program dibawah ini memperlihatkan penggunaan statemen while
29
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
1: /* contoh penggunaan statemen while */ 2: 3: #include <stdio.h> 4: 5: int count; 6: 7: int main() 8: { 9: /* cetak angka 1 sampai 20 */ 10: 11: count = 1; 12: 13: while (count <= 20) 14: { 15: printf("%d\n", count); 16: count++; 17: } 18: return 0; 19: }
Secara umum fungsi dari statemen for dan while pada dasarnya dapat
saling menggantikan, yang harus diingat disini jika kita menggunakan
statemen while untuk perulang, maka inisialisasi harus dilakukan pada
statemen yang terpisah.
Untuk kebanyakan statemen perulangan, disarankan kita menggunakan
statemen for dibandingkan statemen while, karena pada statemen for,
inisialisasi, test serta ekspresi increment (updating) ditempatkan satu
lokasi, sehingga mudah memodikasinya.
Dibawah ini adalah potongan-potongan program yang memanfaatkan
statemen while
contoh 1 int x = 0; while (x < 10) { printf("\n nilai x adalah %d", x ); x++; }
contoh 2
30
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
/* baca data dari keyboard dengan nilai lebih besar sama dengan 99 */ int nbr=0; while (nbr <= 99) scanf("%d", &nbr );
contoh 3
/* baca data yang diketikan sebanyak 10 */ /* nilai yang diketik akan disimpan di array value. Jika anda mengetik 99 maka perulangan akan berakhir */ int value[10]; int ctr = 0; int nbr; while (ctr < 10 && nbr != 99) { puts("masukan nilai integer, ketik 99 untuk keluar "); scanf("%d", &nbr); value[ctr] = nbr; ctr++; }
statemen while bersarang
seperti halnya statemen for kita dapat menggunakan statemen while
secara bersarang. Program dibawah ini memperlihatkan penggunaan
while bersarang.
1: /* Demo statemen while bersarang */ 2: 3: #include <stdio.h> 4: 5: int array[5]; 6: 7: main() 8: { 9: int ctr = 0, 10: nbr = 0; 11: 12: printf("masukan lima buah bilangan\n"); 13: printf("nilai harus antara 1 sampai 10\n"); 14: 15: while ( ctr < 5 ) 16: { 17: nbr = 0; 18: while (nbr < 1 || nbr > 10) 19: { 20: printf("\n masukan bilangan ke %d ", ctr + 1 ); 21: scanf("%d", &nbr ); 22: }
31
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
23: 24: array[ctr] = nbr; 25: ctr++; 26: } 27: 28: for (ctr = 0; ctr < 5; ctr++) 29: printf("Value %d is %d\n", ctr + 1, array[ctr] ); 30: 31: return 0; 32: }
Statemen do… while
Statemen ini akan mengeksekusi satu blok statemen sepanjang kondisi
yang telah ditentukan bernilai logika true. Kalang do… while ini mentest
kondisi pada akhir kalang (bandingkan dengan statemen kalang for dan
while). Struktur do… while memiliki bentuk seperti dibawah:
do statement while (condition);
condition adalah sembarang ekspresi C, sedangkan statement
dapat berupa statemen tunggal atau statemen jamak.
statemen-statemen pada do… while ini paling sedikit akan dieksekusi
satu kali. Ini dikarenakan tes kondisi akan dievaluasi pada akhir blok
(Bandingkan dengan statemen kalang for dan while).
Dalam segi pemanfaatannya statemen perulangan ini relative jarang
digunakan disbanding misalnya dengan statemen perulangan yang lain.
Operasi dari do… while ini dapat dilihat pada gambar dibawah ini:
32
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Listing dibawah memperlihatkan do...while loop.
1: /* Demonstrates a simple do...while statement */ 2: 3: #include <stdio.h> 4: 5: int get_menu_choice( void ); 6: 7: main() 8: { 9: int choice; 10: 11: choice = get_menu_choice(); 12: 13: printf("You chose Menu Option %d\n", choice ); 14: 15: return 0; 16: } 17: 18: int get_menu_choice( void ) 19: { 20: int selection = 0; 21: 22: do 23: { 24: printf("\n" ); 25: printf("\n1 - Add a Record" ); 26: printf("\n2 - Change a record"); 27: printf("\n3 - Delete a record"); 28: printf("\n4 - Quit"); 29: printf("\n" ); 30: printf("\nEnter a selection: " ); 31: 32: scanf("%d", &selection ); 33: 34: }while ( selection < 1 || selection > 4 );
33
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
35: 36: return selection; 37: } 1 - Add a Record 2 - Change a record 3 - Delete a record 4 - Quit Enter a selection: 8 1 - Add a Record 2 - Change a record 3 - Delete a record 4 - Quit Enter a selection: 4 You chose Menu Option 4
34
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Lebih lanjut dengan operasi Input Output
Fungsi printf()
Fungsi printf() adalah salah satu fungsi library yang digunakan untuk
menampilkan data pada layar.
Salah satu contohnya adalah menampilkan text pesan sederhana,
seperti dibawah ini:
printf("Error !");
selain untuk menampilkan pesan string seperti contoh diatas, kita juga
seringkali ingin menampilkan nilai variable, misal x pada layar bersama-
sama dengan text penyertanya, maka kita dapat menggunakan fungsi
printf() sebagai berikut:
printf("Nilai x adalah %d", x);
Maka hasil eksekusi di layar akan tampil text berikut (dengan
menganggap nilai x = 12)
Nilai x adalah 12
Dalam contoh ini, kita melewatkan dua buah argument, yang pertama
adalah format string, nama dari variable yang akan ditampilkan.
Format String printf()
Format string pada dasarnya menentukan format dari keluaran, ada 3
komponen yang mungkin pada format string
• Literal text : text yang akan ditampilkan
35
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
• escape sequence : terdiri dari tanda backslash (\) diikuti
karakter tunggal untuk tujuan tertentu, seperti ditabelkan
dibawah ini:
Sequence Arti \a Bell (alert)
\b Backspace
\n Newline \t Horizontal tab
\\ Backslash
\? Question mark
\' Single quotation
• specifier Pengkonversi yang terdiri dari tanda persen (%) dan karakter tunggal.. specifier pengkonversi memberitahu fungsi printf bagaimana menginterpretasikan sebuah variable yang akan dicetak.
Program dibawah ini mendemontrasikan penggunaan escape sequence 1: /* demo escape sequences */ 2: 3: #include <stdio.h> 4: 5: #define QUIT 3 6: 7: int get_menu_choice( void ); 8: void print_report( void ); 9: 10: main() 11: { 12: int choice = 0; 13: 14: while (choice != QUIT) 15: { 16: choice = get_menu_choice(); 17: 18: if (choice == 1) 19: printf("\nBeeping the computer\a\a\a" ); 20: else 21: {
36
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
22: if (choice == 2) 23: print_report(); 24: } 25: } 26: printf("You chose to quit!\n"); 27: 28: return 0; 29: } 30: 31: int get_menu_choice( void ) 32: { 33: int selection = 0; 34: 35: do 36: { 37: printf( "\n" ); 38: printf( "\n1 - Beep Computer" ); 39: printf( "\n2 - Display Report"); 40: printf( "\n3 - Quit"); 41: printf( "\n" ); 42: printf( "\nEnter a selection:" ); 43: 44: scanf( "%d", &selection ); 45: 46: }while ( selection < 1 || selection > 3 ); 47: 48: return selection; 49: } 50: 51: void print_report( void ) 52: { 53: printf( "\nSAMPLE REPORT" ); 54: printf( "\n\nSequence\tMeaning" ); 55: printf( "\n=========\t=======" ); 56: printf( "\n\\a\t\tbell (alert)" ); 57: printf( "\n\\b\t\tbackspace" ); 58: printf( "\n...\t\t..."); 59: }
Specifier Pengkonversi printf()
Specifier digunakan untuk menampilkan variable yang akan dicetak oleh fungsi printf sesuai dengan specifier yang digunakan, jenis-jenis specifier ditabelkan dibawah ini:
Specifier Arti Tipe %c Single character char %d Signed decimal integer int, short %ld Signed long decimal integer long %f Decimal floating-point number float, double
37
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
%s Character string char arrays %u Unsigned decimal integer unsigned int, unsigned short %lu Unsigned long decimal integer unsigned long
Jika kita ingin menampilkan sebuah variable dengan tipe integer, maka kita gunakan %d sebagai specifier pengkonversinya.
Fungsi printf() dapat mencetak variable dengan jumlah yang tak terbatas, specifier pengkonversi berpasangan dengan variable dengan urutan dari kiri ke kanan, jika kita tulis:
printf("Rate = %f, amount = %d", rate, amount);
maka variable rate berpasangan dengan specifier %f, dan variable amount berpasangan dengan specifier %d.
Program-program yang menggunakan fungsi printf harus meng- include-kan file STDIO.H pada awal programnya, listing dibawah ini memperlihatkan penggunaan fungsi printf().
/* Demo penggunaan fungsi printf(). */ #include <stdio.h> int a = 2, b = 10, c = 50; float f = 1.05, g = 25.5, h = -0.1; main() { printf("\nDecimal values without tabs: %d %d %d", a, b, c); printf("\nDecimal values with tabs: \t%d \t%d \t%d", a, b, c); printf("\nThree floats on 1 line: \t%f\t%f\t%f", f, g, h); printf("\nThree floats on 3 lines: \n\t%f\n\t%f\n\t%f", f, g, h); printf("\nThe rate is %f%%", f); printf("\nThe result of %f/%f = %f\n", g, f, g / f); return 0; }
Mencetak pesan dengan fungsi puts()
Fungsi puts digunakan untuk mencetak string kalimat dilayar, tetapi tidak dapat digunakan untuk mencetak variable numeris, fungsi puts
38
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
memerlukan satu argument string tunggal, dan secara otomatis menambahkan karakter garis baru pada akhir kalimat. Contoh, statemen dibawah ini:
puts("Hello, world.");
akan sama dengan statemen berikut:
printf("Hello, world.\n");
fungsi scanf()
Scanf() adalah fungsi library yang berguna untuk membaca data
numeric dari keyboard. Seperti halnya printf(), scanf juga
menggunakan format string dalam hal formating data yang dibaca lewat
keyboard, sebagai contoh statemen
scanf("%d", &x);
membaca nilai decimal dari keyboard untuk kemudian disimpan pada
variable x. sedangkan tanda ampersand (&) adalah symbol operator
alamat, hal ini akan dibahas lebih lanjut pada bagian pointer.
fungsi scanf() dapat membaca lebih satu nilai, statemen dibawah ini
memuati nilai integer pada x dan floating point pada rate lewat
keyboard
scanf("%d %f", &x, &rate);
untuk memisahkan setiap masukan (input), kita gunakan white space,
yang dapat berupa spasi tab atau baris baru.
39
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Lebih Lanjut Dengan Array
Seperi telah disinggung pada bagian lain tulisan ini, Array secara
sederhana adalah sekelompok deret data yang memiliki tipe yang sama,
setiap elemen data dibedakan oleh indek tertentu. Sebelum array
digunakan kita harus terlebih dahulu mendeklarasikannya. Deklarasi
array ini harus mencakup tipe dan ukuran dari array tersebut.
Array satu Dimensi
Array satu dimensi hanya memiliki satu buah subscript. subscript
adalah sebuah nilai didalam tanda kurung setelah nama array, nilai ini
menunjukan jumlah data maks pada array tersebut, seperti contoh
dibawah
float expenses[12];
array ini dinamakan expenses, dan memiliki 12 elemen, setiap elemen memiliki tipe float. Elemen-elemen array pada C selalui dimulai dengan indek 0, sehingga 12 elemen expenses diatas dimulai dari nomer (indek) 0 sampai nomer 11.
Ketika kita mendeklarasikan sebuah array, compiler akan mengalokasikan sejumlah memori sebanyak array yang kita deklarasikan, elemen-elemen array individual disimpan pada lokasi memori secara sequensial (berurutan), seperti pada gambar dibawah:
Perhatikan contoh potongan program berikut
40
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
float expenses[100]; int a[10]; /* statemen-statemen tambahan */ expenses[i] = 100; /* i adalah sebuah variable int */ expenses[2 + 3] = 100; /* equivalent dengan expenses[5] */ expenses[a[2]] = 100; /* a[] adalah array integer */
Pada contoh terakhir, jika kita memiliki array dengan nama a[], dan elemen a[2] berisi 8, maka penulisan berikut :
expenses[a[2]]
akan sama dengan:
expenses[8]; 1: /* gaji.C – mendemontrasikan penggunaan array */ 2: 3: #include <stdio.h> 4: 5: /* deklarisi gaji dan count*/ 6: 7: float gaji[13]; 8: int count; 9: 10: main() 11: { 12: /* masukan data dari keyboard pada array */ 13: 14: for (count = 1; count < 13; count++) 15: { 16: printf("masukan gaji untuk bulan %d: ", count); 17: scanf("%f", &gaji[count]); 18: } 19: 20: /* cetak isi array */ 21: 22: for (count = 1; count < 13; count++) 23: { 24: printf("bulan %d = $%.2f\n", count, gaji[count]); 25: } 26: return 0; 27: }
41
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Array multidimensi
Array multidimensi memiliki satu buah subscript. Array dua dimensi memiliki dua subscript, array tiga dimensi memiliki tiga subscript dan seterusnya.
Contoh dibawah ini mendeklarasikan sebuah array dua dimensi, dengan elemen masing-masing bertipe integer
int checker[8][8];
Listing dibawah ini memperlihatkan penggunaan array untuk mencari rata-rata nilai pelajar 1: /*GRADES.C - Sample program with array */ 2: /* Get 10 grades and then average them */ 3: 4: #include <stdio.h> 5: 6: #define MAX_GRADE 100 7: #define STUDENTS 10 8: 9: int grades[STUDENTS]; 10: 11: int idx; 12: int total = 0; /* used for average */ 13: 14: main() 15: { 16: for( idx=0;idx< STUDENTS;idx++) 17: { 18: printf( "Enter Person %d's grade: ", idx +1); 19: scanf( "%d", &grades[idx] ); 20: 21: while ( grades[idx] > MAX_GRADE ) 22: { 23: printf( "\nThe highest grade possible is %d", 24 MAX_GRADE );
42
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
25: printf( "\nEnter correct grade: " ); 26: scanf( "%d", &grades[idx] ); 27: } 28: 29: total += grades[idx]; 30: } 31: 32: printf( "\n\nThe average score is %d\n", ( total / STUDENTS) ); 33: 34: return (0); 35: } Enter Person 1's grade: 95 Enter Person 2's grade: 100 Enter Person 3's grade: 60 Enter Person 4's grade: 105 The highest grade possible is 100 Enter correct grade: 100 Enter Person 5's grade: 25 Enter Person 6's grade: 0 Enter Person 7's grade: 85 Enter Person 8's grade: 85 Enter Person 9's grade: 95 Enter Person 10's grade: 85 The average score is 73
43
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
POINTER
Pointer adalah sebuah variable yang berisi alamat dari variable lain
Ketika kita mendeklarasikan sebuah variable di program C, compiler
akan menyediakan lokasi memori yang unik untuk menyimpan data
tersebut. Compiler mengasosiasikan alamat tersebut dengan nama
variable yang kita deklarasikan.
Gambar dibawah ini memperlihatkan sebuah variable rate yang telah
dideklarasikan dan diinisialisasi dengan nilai 100, compiler akan
menyediakan alamat 1004 untuk data tersebut, yang terasosiasi dengan
nama rate
perlu dicatat disini bahwa alamat variable rate (atau variable lainnya) adalah sebuah bilangan dan dapat diperlakukan (dimanipulasi) seperti halnya bilangan lainnya. Jika kita tahu alamat untuk sebuah variable, maka kita dapat mendeklarasikan variable kedua untuk menyimpan alamat variable tersebut, sebagai contoh untuk kasus diatas, kita deklarasikan sebuah variable untuk menyimpan alamat rate, misal kita beri nama p_rate, seperti terlihat pada gambar dibawah ini (isinya belum kita inisialisasi)
44
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Langkah selanjutnya adalah menyimpan alamat variable rate di variable p_rate, karena p_rate sekarang berisi alamat rate, maka p_rate merupakan pointer terhadap variable rate, seperti ditunjukan pada gambar dibawah:
Deklarasi pointer
Pointer adalah sebuah variable numeris, dan seperti halnya untuk
semua variable, pointer harus kita deklarasikan sebelum digunakan.
Deklarasi pointer adalah seperti berikut :
typename *ptrname;
typename adalah salah satu tipe pada C , sedangkan tanda asterisk (*)
adalah operator indirection yang menunjukan bahwa ptrname adalah
sebuah pointer yang menunjuk pada tipe data typename. Pointer dapat
kita deklarasikan bersama-sama dengan variable nonpointer, seperti
contoh dibawah :
char *ch1, *ch2; float *value, percent;
Inisialisasi Pointer
Seperti halnya dengan jenis variable yang lain, kita dapat menggunakan
variable pointer yang belum diinisialisasi, tetapi hasinya tidak dapat
45
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
diprediksi, agar pointer dapat dimanfaatkan maka pointer ini harus
berisi alamat variable lainnya, untuk mendapatkan alamat sebuah
variable kita gunakan operator alamat ampersand(&), seperti dibawah
ini
pointer = &variable;
untuk kasus p_rate yang telah dibahas dimuka, maka agar p_rate
menunjuk variable rate (berisi alamat rate) maka kita gunakan
statemen berikut:
p_rate = &rate
untuk mengakses isi variable rate kita dapat secara langsung
menggunakan nama variable rate tersebut (direct access) atau secara
tidak langsung dengan menggunakan pointer (indirect access), yaitu
dengan menggunakan operator indirection. Statemen dibawah ini
printf("%d", rate);
akan menghasilkan keluaran yang sama dengan:
printf("%d", *p_rate);
untuk lebih jelasnya hal ini diilustrasikan oleh gambar dibawah ini
46
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Perhatikan listing program dibawah ini:
1: /* Demonstrates basic pointer use. */ 2: 3: #include <stdio.h> 4: 5: /* Declare and initialize an int variable */ 6: 7: int var = 1; 8: 9: /* Declare a pointer to int */ 10: 11: int *ptr; 12: 13: main() 14: { 15: /* Initialize ptr to point to var */ 16: 17: ptr = &var; 18: 19: /* Access var directly and indirectly */ 20: 21: printf("\nDirect access, var = %d", var); 22: printf("\nIndirect access, var = %d", *ptr); 23: 24: /* Display the address of var two ways */ 25: 26: printf("\n\nThe address of var = %d", &var); 27: printf("\nThe address of var = %d\n", ptr); 28: 29: return 0; 30: } Direct access, var = 1 Indirect access, var = 1 The address of var = 4264228 The address of var = 4264228
Pointer dan Array
Dalam C, nama sebuah array tanpa tanda kurung adalah sebuah pointer
pada elemen pertama array, sehingga jika kita mendeklarasikan sebuah
array data[], data adalah alamat elemen pertama array tersebut (data
== &data[0]).
Aritmatika Pointer
-Increment
47
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
Untuk menaikan isi dari pointer kita dapat menggunakan operator
increment (++), misal ptr_to_int adalah sebuah variable pointer yang
menunjuk salah satu elemen pada array dengan tipe int, maka statemen
ptr_to_int++;
jika dieksekusi akan menyebabkan nilai ptr_to_int bertambah 2 byte
(ingat ukuran int adalah 2 byte)
Decrement
Konsep decrement sama dengan increment hanya saja decrement digunakan untuk menurunkan nilai variable pointer
Listing dibawah ini memperlihatkan penggunaan aritmatika pointer untuk mengakses elemen-elemen array
1: /* Demonstrates using pointer arithmetic to access */ 2: /* array elements with pointer notation. */ 3: 4: #include <stdio.h> 5: #define MAX 10 6: 7: /* Declare and initialize an integer array. */ 8: 9: int i_array[MAX] = { 0,1,2,3,4,5,6,7,8,9 }; 10: 11: /* Declare a pointer to int and an int variable. */ 12: 13: int *i_ptr, count; 14: 15: /* Declare and initialize a float array. */ 16: 17: float f_array[MAX] = { .0, .1, .2, .3, .4, .5, .6, .7, .8, .9 }; 18: 19: /* Declare a pointer to float. */ 20: 21: float *f_ptr; 22: 23: main() 24: { 25: /* Initialize the pointers. */ 26: 27: i_ptr = i_array; 28: f_ptr = f_array; 29:
48
Tutorial Bahasa Pemrograman C [email protected] (http://iwan.blog.undip.ac.id)
30: /* Print the array elements. */ 31: 32: for (count = 0; count < MAX; count++) 33: printf("%d\t%f\n", *i_ptr++, *f_ptr++); 34: 35: return 0; 36: } 0 0.000000 1 0.100000 2 0.200000 3 0.300000 4 0.400000 5 0.500000 6 0.600000 7 0.700000 8 0.800000 9 0.900000
OPERATOR BIT WISE
Operator bit wise adalah operator yang digunakan untuk memanipulasi variable pada level bit:
No Jenis Operator Contoh 1 AND & C=A&B 2 OR | C=A|B 3 XOR ^ C=A^B 4 NOT ~ C=~A
49