Top Banner
TUTORIAL BAHASA PEMROGRAMAN C (Iwan Setiawan, ST, MT) Office: Automatic Control Laboratory, Electrical Engineering of UNDIP [email protected]
49

C

Jun 26, 2015

Download

Documents

purwa80
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: C

TUTORIAL BAHASA PEMROGRAMAN C

(Iwan Setiawan, ST, MT) Office: Automatic Control Laboratory, Electrical

Engineering of UNDIP

[email protected]

Page 2: C

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

Page 3: C

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

Page 4: C

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

Page 5: C

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

Page 6: C

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

Page 7: C

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

Page 8: C

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

Page 9: C

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

Page 10: C

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

Page 11: C

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

Page 12: C

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

Page 13: C

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

Page 14: C

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

Page 15: C

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

Page 16: C

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

Page 17: C

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

Page 18: C

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

Page 19: C

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

Page 20: C

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

Page 21: C

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

Page 22: C

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

Page 23: C

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

Page 24: C

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

Page 25: C

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

Page 26: C

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

Page 27: C

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

Page 28: C

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

Page 29: C

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

Page 30: C

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

Page 31: C

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

Page 32: C

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

Page 33: C

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

Page 34: C

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

Page 35: C

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

Page 36: C

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

Page 37: C

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

Page 38: C

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

Page 39: C

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

Page 40: C

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

Page 41: C

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

Page 42: C

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

Page 43: C

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

Page 44: C

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

Page 45: C

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

Page 46: C

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

Page 47: C

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

Page 48: C

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

Page 49: C

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