22.48
0
Re: Tutorial Bahasa Pemrograman C untuk MS-DOS
BAB I
PENDAHULUAN

A. SOURCE PROGRAM

Suatu source program (program sumber) C dapat ditulis di dalam satu atau lebih source file. Source-file C adalah suatu file teks yang berisi semua atau bagian dari source-program C.

Suatu source-program C dibentuk oleh sekurang-kurangnya satu buah fungsi. Di antara fungsi-fungsi yang ada, terdapat satu fungsi yang akan dikerjakan pertama kali jika program tersebut dijalankan. Fungsi tersebut bernama main.

Penulisan program C bebas dari aturan penggunaan kolom-kolom yang kaku. Suatu statement (pernyataan) dapat di tuliskan di kolom mana pun. Suatu statement dipandang berakhir jika ditemukan tanda akhir statement. Oleh sebab itu, di dalam suatu baris boleh terdapat lebih dari satu statement. Begitu pula, suatu statement yang panjang boleh menggunakan lebih dari satu baris.

Berikut ini adalah contoh program klasik C untuk mencetak string-literal kalimat "Hello, world!".

Program-1.1: hello.c
------------------------
#include <stdio.h>

main()
{
    printf("Hello, world!\n");
}
------------------------

B. MENGKOMPILASI PROGRAM
Suatu source program C baru dapat dijalankan setelah melalui tahap kompilasi dan penggabungan. Tahap kompilasi dimaksudkan untuk memeriksa source-program sesuai dengan kaidah-kaidah yang berlaku di dalam bahasa pemrograman C. Tahap kompilasi akan menghasilkan relocatable object file. File-file objek tersebut kemudian digabung dengan perpustakaan-fungsi, yang sesuai, untuk menghasilkan suatu executable-program.

Cara melakukan kompilasi program C dapat dibaca pada petunjuk kompiler yang digunakan.

Untuk contoh program di atas, jika kompilasi dilakukan dan sukses maka anda akan memperoleh object-file hello.obj dan executable-program hello.exe.

BAB II
MENGENAL BAHASA PEMROGRAMAN C

A. TUJUH ELEMEN DASAR PEMROGRAMAN

Borland mengemukanan ada tujuh elemen dasar pemrograman yang harus dipahami oleh para pemrogram, yaitu:
1.    ambil informasi dan berikan kepada program.
2.    miliki tempat untuk menyimpan informasi di atas.
3.    berikan instruksi yang benar untuk memanipulasi data.
4.    ambil kembali data, baik berupa data mentah atau hasil olahan, untuk diinformasikan pada pemakai.

Untuk kebutuhan tersebut, Anda dapat mengorganisasikan instruksi-instruksi sehingga:

5.    beberapa instruksi hanya dilaksanakan jika suatu kondisi terpenuhi.
6.    beberapa instruksi dapat dilaksanakan secara berulang.
7.    beberapa instruksi dapat dikelompokkan ke dalam bagian-bagian yang dapat dilaksanakan dari berbagai lokasi program.

Ketujuh elemen dasar pemrograman tersebut secara berturut-turut dinamakan input, data, operasi, output, conditional-execution, loop, dan subprogram.

B. ELEMEN-ELEMEN BAHASA
1. Karakter
Huruf, Angka, dan Garis-bawah
Yang dimaksud dengan huruf adalah A s/d Z dan a s/d z, angka adalah 0 s/d 9, dan garis-bawah adalah _.

White-space
Karakter-karakter space, tab, line-feed, carriage-return, form-feed, vertical-tab, dan new-line disebut white-space character karena mereka mempunyai fungsi sebagai spasi antara kata-kata atau baris-baris. Setiap konstanta dan identifier selalu dipisahkan oleh karakter-karakter ini.

Tanda-baca dan karakter-khusus
Tanda-baca dan karakter-khusus dalam bahasa C mempunyai kegunaan yang bervariasi, dari pengorganisasian teks pogram sampai pendeinisian tugas-tugas yang akan dilakukan oleh kompiler. Karakter-karakter yang termasuk ke dalam kelompok ini adalah:

    , . ; : ? ' " ( ) [ ] { } < > ! | / \ ~ + # % & ^ * - =

Escape Sequence
Karakter-karakter escape-sequence adalah suatu urutan karakter yang digunakan untuk mewakili ekspresi suatu karakter lain. Kumpulan karakter ini selalu dimulai oleh karakter backslash (\) dan diikuti oleh suatu huruf atau suatu kombinasi angka.
Daftar karakter-karakter escape-sequence adalah sebagai berikut.

    \n      new-line
    \t       horizontal-tab
    \v      vertical-tab
    \b      backspace
    \r       carriage-reurn
    \f        form-feed
    \a      bell
    \'       tanda-petik
    \"       tanda-kutip
    \\       backslash
    \ddd   karakter ASCII dalam notasi oktal
    \xddd  karakter ASCII dalam notasi heksadesimal

2. Operator
Operator (lambang-operasi) adalah simbol-simbol, baik berupa satu atau beberapa karakter, yang menetapkan bagaimana suatu nilai dimanipulasi. itu adalah:

    !  ~  -  +  *  /  %  <  >  =  |  ^  '  ++  --  -=  +=  /=  %=  <<  >>  ==
    !=  <=  >=  |=  &&  || ?:  &=  ^=  <<=  >>=

3. Konstanta
Integer Constant
Suatu integer-constant adalah angka desimal, oktal, atau heksadesimal yang mewakili suatu nilai bilangan bulat.
Suatu konstanta-desimal (berbasis-sepuluh) dibentuk oleh sekumpulan angka 0 s/d 9, dengan ketentuan tidak dimulai oleh angka 0. Suatu konstanta-oktal (berbasis-delapan) dibentuk oleh sekumpulan angka 0 s/d 7, dengan ketentuan dimulai oleh angka 0. Suatu konstanta-heksadesimal (berbasis-enambelas) dibentuk oleh sekumpulan angka 0 s/d 9 dan atau huruf A s/d F atau a s/d f, dengan ketentuan dimulai oleh angka-huruf 0X atau 0x. Contoh:

    Desimal    Oktal        Heksadesimal
    10            012           0xA
    132          0204         0x84
    32179       076663      0x7DB3

Floating-point Constant
Suatu floating-point constant adalah angka desimal yang mewakili suatu nilai bilangan nyata. Nilai dari konstanta ini meliputi porsi-porsi bilangan bulat, pecahan, dan eksponen. Aturan penulisan konstanta ini adalah seperti dalam format berikut.

    [digit][.digit][E|e[+|-]digit]

Di mana digit adalah berupa sekumpulan angka 0 s/d dan E atau e sebagai simbol eksponen. Contoh:

    12E-3        berarti 12 kali 10 pangkat -3
    6.25E+4    berarti 6.25 kali 10 pangkat 4

Character Constant
Suatu character-constant dibentuk dengan menempatkan suatu karakter di antara dua tanda-petik (' '). Suatu escape-character dipandang sebagai satu karakter, oleh karena itu dapat dijadikan suatu character constant. Contoh:

    'A'
    '\n'
    '\0x41'

String-Literal
Suatu string-literal dibentuk oleh satu atau sekumpulan karakter yang ditempatkan di antara dua tanda-kutip. Contoh:

    "BANDUNG"
    "Hari Jum\’at"
    "Tit\a\a"
    "Baris-1\nBaris-2"

4. Identifier
Identifier adalah nama yang diberikan untuk konstanta-bernama, variabel, jenis-data, fungsi, dan label di dalam program. Setiap identifier yang akan digunakan harus didefinisikan sebelumnya.
Suatu identifier dibentuk oleh satu atau beberapa buah karakter, sebanyak-banyaknya 31 karakter, yang dimulai oleh suatu huruf atau garis-bawah dan dapat diikuti oleh huruf, angka, atau garis-bawah. Catatlah, bahasa C membedakan penggunaan huruf-besar dan huruf-kecil dalam suatu identifier. Contoh:

    ClrScr
    H2o
    TempatTinggal
    Nama_Siswa
    Kota
    Pilihan

5. Keyword
Untuk kegunan dalam pemrograman, bahasa C mencadangkan sejumlah identifier yang telah didefinisikan, disebut keyword, bagi pemrogram. Kata-kata ini merupakan instruksi terhadap C untuk mengerjakan/menyatakan suatu hal tertentu. Oleh karena itu semua keyword tidak dapat didefiniskan-ulang dan hanya digunakan sesuai dengan peruntukannya. Berikut adalah daftar keyword dalam bahasa C.

    auto  break  case  char  const  continue  default  do  double  else
    enum  extern  float  for  goto  if  int  long  register  return  short
    signed  sizeof  static  struct  switch  typedef  union  unsigned  void
    volatile  while

Di samping keyword-keyword di atas, bahasa C menyediakan beberapa keyword lain yang dapat digunakan dalam beberapa implementasi tertentu. Itu adalah:

    far  near  huge  cdecl  pascal

BAB III
JENIS DATA, KONSTANTA, VARIABEL, LAMBANG OPERASI, DAN EKSPRESI


Catatan: maaf tabel-tabelnya tidak rapih, saya belum mengetahui penggunaan tabel di dalam forum ini

Variabel & konstanta merupakan objek data dasar yang dimanipulasi di dalam suatu program. Setiap konstanta dan variabel harus jelas jenis datanya. Untuk itu mereka harus dideklarasikan sebelumnya.

Operator (lambang operasi) digunakan untuk menetapkan apa yang akan dilakukan terhadap konstanta/variabel tersebut.

Ekspresi adalah suatu bangun algoritma, berdasarkan aturan-aturan tertentu, untuk menghitung suatu nilai. Suatu ekspresi dibentuk oleh variabel-variabel, konstanta-konstanta dan fungsi-fungsi (operand) yang dikombinasikan oleh lambang-lambang operasi (operator).

Aturan yang berlaku dalam suatu ekspresi adalah sebagai berikut
1. suatu ekspresi akan mendahulukan pengoperasian operator yang tingkatannya paling tinggi.
2. suatu ekspresi akan mendahulukan pengoperasian operator terdepan pertama jika operator-operator yang digunakan mempunyai tingkatan yang sama.
3. suatu ekspresi yang mengandung operasi prioritas (berada dalam tanda kurung), akan mendahulukan pelaksanaan operasi prioritas tersebut.
4. operand yang digunakan pada suatu ekspresi harus mempunyai atau menghasilkan jenis data yang sama.


A. JENIS DATA UTAMA
Pada dasarnya C hanya mengenal empat jenis kata, yaitu char, int, float, dan double.

Suatu jenis data menetapkan suatu rentangs nilai yang dapat dimiliki oleh suatu konstanta dan variabel, atau dihasilkan oleh suatu ekspresi atau fungsi. (Nicklaus Wirth 1976:4)

Dengan demikian, jika anda akan menggunakan suatu konstanta, variabel, atau fungsi maka mereka harus ditetapkan jenis datanya, karena setiap operasi yang dibentuk didasarkan pada suatu jenis data tertentu.

Jenis data char merupakan suatu byte tunggal yang mempunyai kemampuan untuk memegang suatu data karakter. Jenis data int merupakan suatu jenis data yang mempunyai kemampuan untuk memegang suatu nilai bilangan bulat. Jenis data float merupakan suatu jenis data yang mempunyai kemampuan untuk memegang suatu nilai bilangan nyata berpresisi tunggal. Jenis data double merupakan suatu jenis data yang mempunyai kemampuan untuk memegang suatu nilai bilangan nyata berpresisi ganda.

Perluasan jenis data int diwujudkan dalam dua jenis data lain, yaitu short dan long, yang berbeda kemampuannya dalam menyimpan rentang nilai yang diberikan kepadanya.
Jenis jenis data char, int, short, dan long dapat didahului oleh keyword signed atau unsigned untuk menyatakan bahwa jenis data tersebut meliputi bilangan bulat negatif atau tidak. Jika itu tidak dinyatakan, maka dianggap signed.

Rentang nilai dan ukuran setiap jenis data tergantung pada jenis mesin dan kompiler yang digunakan.

Code:

Jenis data      ukuran  Rentang nilai
--------------  ------  ---------------------------
char            1 byte  -128 s/d 127
unsigned char   1 byte  0 s/d 255
signed int      2 byte  -32,768 s/d 32,767
unsigned int    2 byte  0 s/d 65,535
short           2 byte  -32,768 s/d 32,767
unsigned short  2 byte  0 s/d 65,535
long            2 byte  -2,147,483,648 s/d 2,147,463,647
unsigned long   4 byte  0 s/d 4,294,967,295
float           4 byte  3.4E-38 s/d 3.4E+38
double          8 byte  1.7E-308 s/d 1.7E+308
Catatan:
* akhiran L perlu dituliskan dibelakang konstanta bilangan bulat untuk membedakan jenis data long atau unsigned long dari jenis data bilangan bulat lainnya.
* Jenis data string dipandang sebagai array karakter

B. VARIABEL
Variabel adalah suatu besaran yang nilainya dapat berubah pada saat program berlangsung. Setiap variabel dinyatakan oleh suatu identifier.
Setiap variabel harus dideklarasikan terlebih dahulu sebelum digunakan di dalam program. Setiap variabel yang dideklarasikan harus dinyatakan jenis datanya. Bentuk umum pendeklarasian variabel adalah sebagai berikut.

    [type] id_var1[, id_var2 …];

dimana id_var1 dan id_var2 adalah nama variabel yang dideklarasikan, dan type adalah jenis data yang ditetapkan untuk id_var1 dan id_var2. Contoh :

    int liter, harga;
    char nama[20];

dalam deklarasi suatu variabel dapat dilakukan initialisasi nilai terhadap variabel tersebut. Bentuk umum deklarasi dan initialisasi variabel adalah sebagai berikut.

    [type] id_var1 = val_var1[, id_var2 = val_var2 …];

dimana id_var1 dan id_var2 adalah nama variabel yang dideklarasikan, val_var1 dan val_var2 adalah nilai awal yang ditetapkan pada id_var1 dan id_var2, dan type adalah jenis data untuk id var_1 dan id_var2. contoh :

    int liter,
    harga = 385;
    char nama[20] = "Abdallah";

contoh program-3.1 akan meminta pengguna program untuk menuliskan namanya, menetapkannya terhadap variabel, kemudian mencetak pesan dalam media output standar.

Program 3.1: SALAM.C

Code:

#include <stdio.h>
 
char nama [20],
    prompt [20] = "Tulis nama anda: ";
 
main ( )
 {
    printf (prompt);
    scanf ("%s", nama);
    printf ("Halo %s. Selamat belajar C.\n", nama);
 }
apabila program tersebut dijalankan maka akan muncul tampilan sebagai berikut.

    Tulis nama anda: Anugrah
    Halo Anugrah. Selamat belajar C.

C. OPERASI ARITMATIKA
Operator aritmatika yang digunakan dalam bahasa C pada umumnya sama dengan lambang operasi hitung biasa. Operator operator tersebut, kegunaan, prioritas, contoh ekspresi dan hasilnya adalah seperti terlihat pada tabel 3.2

Tabel 3.2:
Operator Aritmatika

Code:

operator  operasi         Contoh ekspresi  hasil
--------  --------------  ---------------  -----
*         perkalian       21*8             208
/         pembagian       27/3             9
%         sisa pembagian  30%4             2
+         penjumlahan     2+10             12
-         pengurangan     29-13            16
Catatan
* Operator % tidak dapat digunakan untuk jenis data float atau double.
* Operator * / dan % mempunyai tingkat prioritas yang sama, begitu pula operator + dengan -, kelompok operator pertama mempunyai tingkat prioritas yang lebih tinggi dari kelompok yang kedua.

Berdasarkan aturan ekspresi yang telah disebutkan dalam awal bab ini maka tahapan pelaksanaan yang dilalukan untuk ekspresi-ekspresi aritmatika berikut adalah seperti dinyatakan oleh ekspresi sebelahnya.

Code:

Ekspresi      Tahap pelaksanaan
------------  -----------------
2+3*4         2+12
              14
(2+3)*4       5*4
              20
2*3%4         6%4
              2
2*(3%4)       2*3
              6
2+3.0/4-5     2+0.75-5
              2.75-5
              -2.25
(2+3)/(4-5)   5/(4-5)
              5/-1
              -5
Hati hatilah dengan operator pembagian. Apabila pembilang dan penyebut berupa bilangan bulat maka hasil operasi ini berupa bilangan bulat pula. Untuk mendapatkan hasil bagi berupa bilangan nyata maka salah satu dari pembilang dan penyebut harus berupa bilangan nyata. Contoh:

Code:

ekspresi        Hasil
--------------  --------
10/3            3
(float) 10/3    3.333333
D. OPERASI HUBUNGAN DAN LOGIKA
Operasi hubungan digunakan untuk menguji hubungan antara dua buah operand. Nilai yang dihasilkan operasi ini adalah 0 kalau salah dan –1 kalau benar. Operator-operator yang digunakan adalah seperti ditunjukan dalam tabel 3.3

Tabel 3.3:
Operator Hubungan

Code:

operator  Operasi
--------  ---------------------
==        Sama dengan
!=        Tidak sama dengan
<         Lebih kecil
>         Lebih besar
<=        Lebih kecil atau sama
>=        Lebih besar atau sama
Perhatikanlah contoh pengurangan operator hubungan serta nilai akhirnya pada ekspresi berikut ini.

Code:

ekspresi    Hasil
----------  -----
2>3         0
2!=3        -1
4*5==10*2   -1
Prioritas pelaksanaan operasi hubungan lebih rendah dari pelaksanaan operasi aritmatika. Berikut ini adalah contoh tahapan pelaksanaan yang dilakukan untuk ekspresi-ekspresi aritmatika dan hubungan.

Code:

ekspresi    Tahap pelaksanaan
----------  -----------------
2<5-3       2<2
            0
2<=5-3      2<=2
            -1
10*2==5*4   20==20
            -1
Operasi logika digunakan untuk mengoperasikan operand berjenis data bilangan bulat berdasarkan aturan aturan operasi logika pada aljabar modern. Pada operasi ini setiap operand yang bernilai 0 dinyatakan salah dan operand yang bernilai bukan 0 dinyatakan benar. Nilai yang dihasilkan operasi ini sama seperti operasi hubungan, yaitu 0 kalau salah dan –1 kalau benar.
Tabel 3.4 menunjukan nama operator, cotoh ekspresi dan hasil operasi daripada operator logika.

Tabel 3.4
Operator Logika, Contoh dan Hasil Ekspresi

Code:

Operator  Operasi  Operand A  Operand B  Ekspresi  Hasil
--------  -------  ---------  ---------  --------  -----
!         NOT      Benar                 !A        Salah
                   Salah                           Benar
&&        AND      Benar      Benar      A&&B      Benar
                   Benar      Salah                Salah
                   Salah      Benar                Salah
                   Salah      Salah                Salah
||        OR       Benar      Benar      A||B      Benar
                   Benar      Salah                Benar
                   Salah      Benar                Benar
                   Salah      Salah                Salah
Contoh:

Code:

ekspresi     Tahap pelaksanaan
-----------  ---------------
2<3&&4<5     benar && 4 < 5
             benar && benar
             benar
10*2&&5<4    20 && 5 < 4
             benar && salah
             salah
10*2||5<4    20 || 5 < 4
             benar || salah
             benar
1. Operasi Penarikan dan Penurunan
Bahasa C memberikan dua buah operator yang tidak umum untuk penaikan (incrementing) dan penurunan (decrementing) nilai suatu variabel. Variabel yang dioperasikan harus berjenis data bilangan bulat atau pointer. Operasi penaikan berfungsi untuk menambah nilai variabel yang dinyatakannya dengan konstanta 1, sementara operasi penurunan adalah kebalikannya. Operator yang digunakan adalah ++ dan --. Operator ini dapat ditempatkan sebelum atau sesudah nama variabel. Jika ditempatkan sebelum nama variabel maka operasi ini akan didahulukan dari operasi operator lain yang ada dalam suatu ekspresi, dan sebaliknya jika ditempatkan sesudah nama variabel.
Berikut ini adalah contoh ekspresi operasi operasi ini dan persamaannya.

Code:

ekspresi     Persamaan
-----------  ---------
a++          a=a+1
a--          a=a-1
b=a++/6      b=a/6
             a=a+1
b=3*a--      b=3*a
             a=a-1
b=++a/6      a=a+1
             b=a/6
b=3*--a      a=a-1
             b=3*a
c=a++ + ++b  b=b+1
             c=a+b
             a=a+1
Dari contoh contoh di atas, anda dapat melihat kesederhanaan penulisan beberapa pernyataan ke dalam satu pertanyaan dalam bahasa C.

2. Operasi Penetapan
operasi penetapan digunakan untuk menetapkan suatu nilai terhadap suatu variabel. Bentuk umum operasi ini adalah

    id_var = ekspresi

dimana id_var adalah identifier variabel yang akan menampung nilai hasil ekspresi. Contoh:

    a = 5*27

Dalam banyak hal, nilai variabel yang akan ditetapkan juga merupakan bagian dari ekspresi, seperti

    a = a+4

Jika terdapat kasus terakhir, bahasa C memberikan kemudahan bagi anda untuk menyederhanakan penulisan operasi penetapan tersebut, yaitu menjadi

    a += 4

Hampir semua binary operators dapat dibentuk penyederhanaannya, yaitu dalam bentuk umum

    id_var op= ekspresi

Di mana op adalah salah satu dari operator +, -, *, /, %, <<, >>, &, ^, dan |. Bentuk operasi di atas mengandung arti.

    id_var = id_var op ekspresi

Contoh:

Code:

ekspresi  Persamaan
--------  ---------
x*=y-1    x=x*(y+1)
x+=5      x=x+5
x>>=3     x=x>>3
3. Prioritas dan Arah Pelaksanaan Operator
tabel berikut menunjukan tingkat prioritas dan arah pelaksanaan operator, baik yang telah dibahas maupun belum. Operator-operator yang terletak pada baris yang sama mempunyai tingkat prioritas sama dengan arah pelaksanaan sesuai dengan yang dinyatakan dalam kolom sebelahnya.


Tabel 3.5:
Prioritas Dan Arah Pelaksanaan Operator

Code:

operator                     Arah pelaksanaan
---------------------------  ------------------
() [] -> .                   Dari kiri ke kanan
! ~ ++ -- -(type)* & sizeof  Dari kanan ke kiri
* / %                        Dari kiri ke kanan
+ -                          Dari kiri ke kanan
<< >>                        Dari kiri ke kanan
< <= > >=                    Dari kiri ke kanan
== !=                        Dari kiri ke kanan
&                            Dari kiri ke kanan
^                            Dari kiri ke kanan
|                            Dari kiri ke kanan
&&                           Dari kiri ke kanan
||                           Dari kiri ke kanan
?:                           Dari kanan ke kiri
= += -= dll                  Dari kanan ke kiri
,                            Dari kiri ke kanan

File kode sumber bahasa C pada umumnya berekstensi .c dan C++ pada umumnya berekstensi .cpp.
Kode-kode sumber tersebut selanjutnya akan dikompile oleh kompiler C/C++, misalnya kompiler Microsoft C atau Turbo C. Hasil dari proses kompilasi tersebut adalah file-file objek yang pada umumnya berekstensi .obj. File-file objek tersebut kode-kode sumber yang telah diubah ke dalam bahasa mesin.

Coba perhatikan kembali contoh program-1.1, kode sumbernya direkam di dalam file hello.c. Jika file tersebut dikompile maka akan dihasilkan file dengan nama hello.obj yang merupakan kode objek dari program tersebut.
Di dalam program tersebut hanya terdapat fungsi main, konstanta "Hello, world!\n", dan pernyataakan untuk memanggil fungsi printf. Itulah yang akan ditempatkan di dalam file objek hello.obj.

Agar file objek tersebut dapat dieksekusi maka itu harus digabung dengan kode objek lain, dalam hal ini adalah fungsi printf. Sejumlah kode objek telah disiapkan oleh pembuat kompiler agar kita tidak perlu repot membuatnya. Kumpulan dari kode-kode objek tersebut dinamakan perpustakaan (library) kode object dan nama file-nya pada umunya berekstensi .lib. Penggabungan tersebut dilakukan oleh program Linker dan hasilnya dinamakan kode yang dapat dieksekusi (executable codes). File-file tersebut pada umumnya berekstensi .exe atau .com
BAB IV
PERNYAATAAN-PERNYATAAN


A. Pernyataan goto dan label
Pernyataan-pernyataan (statements) yang dituliskan di dalam suatu program akan dilaksanakan secara berurut mulai dari pernyataan pertama sampai dengan pernyataan terakhir. Contoh:
...
    statement_1;
    statement_2;
    statement_3;
    statement_4;
    statement_5;
    statement_6;
...
Jika kita bermaksud untuk menyatakan bahwa sesudah pelaksanaan pernyataan tertentu (misalnya setelah statement_2) alur program akan dilanjutkan ke pernyataan tertentu lain yang bukan pernyataan yang tepat di bawahnya (misalnya ke statement_5), maka kita harus menggunakan pernyataan goto dan menetapkan suatu label di lokasi yang dimaksud. Contoh:
...
    statement_1;
    statement_2;
    goto next;
    statement_3;
    statement_4;
next:
    statement_5;
    statement_6;
...
Suatu label adalah identifier biasa yang diikuti oleh simbol titik-dua ( : ).

B. Pernyataan Fungsi
Pernyataan fungsi adalah pernyataan yang digunakan untuk memanggil suatu fungsi. Pernyataan fungsi dilakukan dengan menulis nama fungsi yang dimaksud beserta argumen yang akan diberikan kepada parameter-parameter yang terdapat di dalam fungsi tersebut.

Berkaitan dengan hal tersebut maka kita harus mengetahui apa nama fungsi dan parameter-parameter apa yang dibutuhkan oleh fungsi yang akan kita gunakan. Informasi tersebut dapat dilihat di dalam prototipe, definisi, atau deklarasi fungsi tersebut. Prototipe dan definisi fungsi-fungsi standar (yang telah disediakan oleh pembuat kompiler) dapat ditemukan di dalam direktori include dengan nama file berekstensi .h yang dikelompokkan berdasarkan kegunaannya, misalnya stdio.h, stdlib.h, conio.h, io.h, dan lain-lain.

Untuk memungkinkan kompiler dapat memeriksa kebenaran penulisan pernyataan fungsi di dalam suatu kode sumber, maka file yang berisi prototipe fungsi tersebut harus di-include ke dalam kode sumber tersebut.

C. Pernyataan Gabungan/Blok
Pernyataan Gabungan atau Blok adalah kumpulan pernyataan yang ditetapkan sebagai satu kesatuan pernyataan. Ini digunakan untuk menyederhanakan penulisan pernyataan secara berulang.

Pernyataan gabungan atau blok diawali oleh simbol "{" diikuti oleh pernyataan-pernyataan yang menjadi anggotanya dan diakhiri oleh simbol "}". Contoh:
{
    statement_1;
    statement_2;
    statement_3;
    ...
}
D. Pernyataan if-else
Pelaksanaan suatu pernyataan boleh jadi hanya dilakukan jika suatu kondisi tertentu terpenuhi. Pernyataan if-else adalah salah satu pernyataan yang dapat digunakan untuk keperluan tersebut. Bentuk umum pernyataan ini adalah:
if (ekspresi) stat_1; [else stat_2;]
Di mana ekspresi adalah ekspresi ordinal (mengembalikan nilai bilangan bulat). Pernyataan stat_1 akan dilakukan jika ekspresi bernilai bukan 0 dan pernyataan stat_2 akan dilakukan jika ekspresi bernilai 0. Contoh:

Code:

if (kode = 0)
  strcpy(kelamin, "Perempuan");
else
  strcpy(kelamin, "Laki-laki");
Marilah kita coba terapkan pernyataan ini pada masalah berikut. Katakanlah anda menghendaki sebuah Tabel Harga BBM, dari 1 sampai 10 liter. Output yang dihasilkan dikehendaki sebagai berikut.

Code:

Liter  Solar Premium  Super
---------------------------
    1    250     385    450
    2    500     770    900
    3    750    1155   1350
    4   1000    1540   1800
    5   1250    1925   2250
    6   1500    2310   2700
    7   1750    2695   3150
    8   2000    3080   3600
    9   2250    3465   4050
   10   2500    3850   4500
---------------------------
Dengan menggunakan pernyataan-pernyataan yang sudah dibahas di atas, program untuk itu adalah seperti ditunjukkan di bawah.

Program-4.1: bbm.c

Code:

#include <stdio.h>
 
int  liter, solar, premium, super;
 
main()
{
  printf("Liter  Solar Premium  Super\n");
  printf("---------------------------\n");
  liter = 1;
ulangi:
  solar = liter * 250;
  premium = liter * 385;
  super = liter * 450;
  printf("%5d  %5d   %5d  %5d\n", liter, solar, premium, super);
  liter++;
  if (liter <= 10)
    goto ulangi;
  printf("---------------------------\n");
}
E. Pernyataan switch-case-default
Pernyataan switch-case-default merupakan perluasan dari pernyataan if-else yang memungkinkan adanya kondisi yang beragam. Bentuk umum pernyataan ini adalah:
switch (ekspresi)
{   case eks_1:
        [stat_1;
        ...
        break;]

    case eks_2:
        [stat_2;
        ...
        break;]

    ...

   [default:
        stat_n;
        ...
        break;]
}
Pernyataan stat_1 dan seterusnya akan dilakukan jika ekspresi = eks_1. Pernyataan stat_2 dan seterusnya akan dilakukan jika ekspresi = eks_2. Pernyataan stat_n dan seterusnya akan dilakukan jika ekspresi tidak sama dengan pengujian sebelumnya.

Sebagai contoh, katakanlah kita memiliki kode barang (kb) dan akan menetapkan nama barang (nb) serta jenis barang (jb) berdasarkan kode barang tersebut. Nama barang adalah CPU, CRT, LCD, MS Office, Norton Anti Virus, dan PhotoShop untuk kode barang 1, 2, 3, 4, 5, dan 6. Sementara jenis barang adalah Hardware untuk kode barang 1, 2, dan 3 atau Software untuk kode barang 4, 5, dan 6.

Code:

switch (kb)
{   case 1:
        strcpy(nb, "CPU");
        strcpy(jb, "Hardware");
        break;
    case 2:
        strcpy(nb, "CRT");
        strcpy(jb, "Hardware");
        break;
    case 3:
        strcpy(nb, "LCD");
        strcpy(jb, "Hardware");
        break;
    case 4:
        strcpy(nb, "MS Office");
        strcpy(jb, "Software");
        break;
    case 5:
        strcpy(nb, "Norton Anti Virus");
        strcpy(jb, "Software");
        break;
    case 6:
        strcpy(nb, "PhotoShop");
        strcpy(jb, "Software");
        break;
   default:
        strcpy(nb, "Nama barang belum ditetapkan");
        strcpy(jb, "Jenis barang belum ditetapkan");
        break;
}
Penggunaan beberapa case untuk mengerjakan pernyataan yang sama dapat dilakukan seperti contoh berikut.

Code:

switch (kb)
{   case 1:
        strcpy(nb, "CPU");
        break;
    case 2:
        strcpy(nb, "CRT");
        break;
    case 3:
        strcpy(nb, "LCD");
        break;
    case 4:
        strcpy(nb, "MS Office");
        break;
    case 5:
        strcpy(nb, "Norton Anti Virus");
        break;
    case 6:
        strcpy(nb, "PhotoShop");
        break;
   default:
        strcpy(nb, "Nama barang belum ditetapkan");
        break;
}
 
switch (kb)
{   case 1:
    case 2:
    case 3:
        strcpy(jb, "Hardware");
        break;
    case 4:
    case 5:
    case 6:
        strcpy(jb, "Software");
        break;
   default:
        strcpy(jb, "Jenis barang belum ditetapkan");
        break;
}
F. Pernyataan while
Pernyataan while digunakan untuk mengulang pelaksanaan pernyataan tertentu selama kondisi tertentu terpenuhi. Bentuk umum pernyataan ini adalah:
while (ekspresi) statement;
Di mana ekspresi adalah ekspresi ordinal (mengembalikan nilai bilangan bulat). Statement akan dilakukan secara berulang selama ekspresi bernilai bukan 0. Algoritma pernyataan ini adalah:
ulangi:
    if (ekspresi)
        statement;
        goto ulangi;
    endif
Berikut ini adalah penggunaan pernyataan while untuk menggantikan pernyataan if dan goto di dalam Program 4.1.

Code:

#include <stdio.h>
 
int  liter, solar, premium, super;
 
main()
{
  printf("Liter  Solar Premium  Super\n");
  printf("---------------------------\n");
  liter = 1;
  while (liter <= 10)
  { solar = liter * 250;
    premium = liter * 385;
    super = liter * 450;
    printf("%5d  %5d   %5d  %5d\n", liter, solar, premium, super);
    liter++;
  }
  printf("---------------------------\n");
}
G. Pernyataan do-while
Pernyataan do-while pada dasarnya sama dengan pernyataan while, yaitu digunakan untuk mengulang pelaksanaan pernyataan tertentu selama kondisi tertentu terpenuhi, cuma letak pengujian kondisinya adalah di akhir pernyataan tersebut. Bentuk umum pernyataan ini adalah:
do statement; while (ekspresi);
Di mana ekspresi adalah ekspresi ordinal (mengembalikan nilai bilangan bulat). Statement akan dilakukan secara berulang selama ekspresi bernilai bukan 0. Algoritma pernyataan ini adalah:
ulangi:
    statement;
    if (ekspresi)
        goto ulangi;
    endif
Berikut ini adalah penggunaan pernyataan do-while untuk menggantikan pernyataan if dan goto di dalam Program 4.1.

Code:

#include <stdio.h>
 
int  liter, solar, premium, super;
 
main()
{
  printf("Liter  Solar Premium  Super\n");
  printf("---------------------------\n");
  liter = 1;
  do
  { solar = liter * 250;
    premium = liter * 385;
    super = liter * 450;
    printf("%5d  %5d   %5d  %5d\n", liter, solar, premium, super);
    liter++;
  } while (liter <= 10)
  printf("---------------------------\n");
}
H. Pernyataan for
Pernyataan for pada dasarnya sama dengan pernyataan while, yaitu digunakan untuk mengulang pelaksanaan pernyataan tertentu selama kondisi tertentu terpenuhi, cuma di dalamnya terdapat pernyataan untuk pra dan pasca pelaksanaan statement. Bentuk umum pernyataan ini adalah:
for ([prestatement]; [ekspresi]; [poststatement]) statement;
Algoritma pernyataan ini adalah:
.
    prestatement;
ulangi:
    statement;
    poststatement;
    if (ekspresi)
        goto ulangi;
    endif
Berikut ini adalah penggunaan pernyataan for untuk menggantikan pernyataan if dan goto di dalam Program 4.1.

Code:

#include <stdio.h>
 
int  liter, solar, premium, super;
 
main()
{
  printf("Liter  Solar Premium  Super\n");
  printf("---------------------------\n");
  for (liter = 1; liter <= 10; liter++)
  { solar = liter * 250;
    premium = liter * 385;
    super = liter * 450;
    printf("%5d  %5d   %5d  %5d\n", liter, solar, premium, super);
  }
  printf("---------------------------\n");
}
Pernyataan liter=1 dapat ditetapkan sebagai prestatement dan pernyataan liter++ sebagai poststatement. Dengan begitu maka itu dapat dituliskan dengan menggunakan pernyataan for secara lebih sederhana.

I. Pernyataan break dan continue
Pernyataan break digunakan untuk mengontrol alur program dalam pernyataan switch-case-default, while, do-while, dan for, yaitu untuk berpindah ke pernyataan berikutnya.

Pernyataan continue digunakan untuk mengontrol alur program pada iterasi berikutnya di dalam pernyataan while, do-while, dan for di mana dia berada.
Latihan:
Buatlah program C untuk permainan tebak-tebakan sebagai berikut.

Tetapkanlah suatu nilai acak antara 0 s/d 99 (simpanan) kemudian mintalah pemain untuk menebak nilai tersebut (tebakan).
Jika tebakan sama dengan simpanan tulislah kalimat Anda pandai!.
Jika tebakan lebih kecil dari simpanan tulislah kalimat Tebakan terlalu kecil!.
Jika tebakan lebih besar dari simpanan tulislah kalimat Tebakan terlalu besar!.
Berikan kesempatan sebanyak enam kali pada pemain jika melakukan tebakan yang salah. Jika selama enam kali pemain tidak dapat menebak nilai tersebut, tulislah kalimat Anda bodoh! dan cetaklah nilai simpanan tersebut.
Berikan kesempatan kepada pemain untuk mengulang permainan tanpa mengahiri program tersebut.

Fungsi-fungsi yang anda dapat gunakan adalah rand, printf, scanf, dan getche. Silahkan baca fasilitas Help jika anda menggunakan Turbo-C/Borland-C untuk mengetahui kegunaan dan penggunaan fungsi-fungsi tersebut.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int simpanan, tebakan, i, ch;
 
main()
{
  while (1)
  { printf("Saya menyimpan satu nilai antara 0 s/d 99.\n");
    printf("Silahkan anda tebak nilai tersebut.\n");
    printf("------------------------------------------\n");
    simpanan = rand() % 100;
    for (i = 1; i < 7; i++)
    { printf("Tebakan ke-%d ", i);
      scanf("%d", &tebakan);
      if (tebakan < simpanan)
      { printf("Tebakan terlalu kecil!\n");
        continue;
      }
      if (tebakan == simpanan)
      { printf("Anda pandai!\n");
        break;
      }
      printf("Tebakan terlalu besar!\n");
    }
    if (i == 7)
    { printf("Anda bodoh!\n");
      printf("Nilai simpanan adalah %d\n", simpanan);
    }
    printf("\nAnda ingin mengulang permainan?  ");
    ch = getche();
    if (!(ch == 'Y' || ch == 'y'))
      break;
    printf("\n\n");
  }


BAB V
FUNGSI


Seperti telah disinggung pada bab-bab yang lalu, suatu fungsi merupakan suatu nama atas sekumpulan instruksi. Jadi suatu fungsi merupakan suatu subprogram.

C membedakan fungsi ke dalam 2 kelompok, yaitu fungsi yang mengembalikan suatu nilai dan fungsi yang tidak mengembalikan suatu nilai.

Program utama juga dipandang sebagai suatu fungsi, hanya identifiernya sudah ditetapkan, yaitu main.

Suatu fungsi dibentuk oleh bagian-bagian sebagai berikut.
[type]id_fungsi([argumen])
[deklarasi-argumen]
tubuh fungsi
Seperti halnya variabel, jenis-data nilai yang akan dikembalikan (type) oleh fungsi harus dinyatakan. Jika itu tidak dinyatakan maka dianggap int. Nama fungsi dinyatakan oleh id_fungsi. Komunikasi data antar fungsi dilakukan melalui argumen. Jenis-data untuk setiap argumen dinyatakan dalam deklarasi-argumen. Instruksi-instruksi apa yang harus dilakukan oleh fungsi, dinyatakan dalam tubuh-fungsi. Tubuh suatu fungsi berupa suatu pernyataan-gabungan (compound statement).

Apabila suatu fungsi tidak memiliki argumen maka pada bidang argumen ditetapkan keyword void atau tidak dituliskan apa-apa. Begitu pula, jika dia tidak akan mengembalikan suatu nilai maka pada bidang type ditetapkan keyword void.

Dengan demikian maka contoh suatu fungsi yang paling sederhana adalah:
abcd()
{
}
Fungsi di atas menetapkan abcd sebagai nama/identifier fungsi, tanpa argumen, tanpa suatu instruksi untuk dikerjakan, dan akan mengembalikan nilai berjenis-data int.

Perhatikan pula maksud dari fungsi utama berikut ini.
main()
{
  printf("Hello, world!\n" );
}
Fungsi utama di atas ditetapkan tanpa argumen, memiliki satu instruksi berupa pernyataan-fungsi printf, dan akan mengembalikan nilai berjenis-data int. Pernyataan-fungsi printf digunakan untuk memanggil fungsi tersebut dengan membawa alamat konstanta string “Hello, world!\n"  sebagai argumen.

A. ARGUMEN DAN NILAI FUNGSI
Argumen fungsi digunakan untuk mengatur komunikasi data antara fungsi yang satu dengan fungsi lainnya. Tepatnya, antara variabel-argumen fungsi dengan nilai-argumen pernyataan-fungsi.

Perhatikan fungsi abcd berikut ini. Fungsi ini memiliki dua buah argumen a dan b berjenis-data int dan memiliki satu pernyataan untuk mencetak nilai kedua argumen tersebut. Berikutnya adalah fungsi-utama yang memiliki tiga buah pernyataan untuk mengaktifkan fungsi abcd tersebut.

Code:

abcd(a,b)
int a, b;
{
  printf("%d %d\n" , a, b);
}
 
main()
{
  abcd(2, 5);
  abcd(8, 3);
  abcd(7, 12);
}
Pernyataan-fungsi abcd(2, 5), abcd(8, 3), dan abcd(7, 12) pada fungsi main, secara berturut-turut mengandung arti:
aktifkan fungsi abcd dengan memberikan konstanta 2 dan 5 untuk variabel-argumen a dan b.
aktifkan fungsi abcd dengan memberikan konstanta 8 dan 3 untuk variabel-argumen a dan b.
aktifkan fungsi abcd dengan memberikan konstanta 7 dan 12 untuk variabel-argumen a dan b.

Dengan demikian apabila program di atas dijalankan maka akan diperoleh output:

Code:

2 5
8 3
7 12
Deklarasi argumen dapat digabung dan ditempatkan pada bidang argumen, dengan ketentuan penulisan jenis-data dilakukan untuk setiap variabel-argumen. Perhatikan fungsi abcd di atas menurut ketentuan terakhir.

Code:

abcd(int a, int b)
{
  printf("%d %d\n" , a, b);
}
Nilai-fungsi adalah nilai yang dikembalikan/dihasilkan oleh fungsi. Untuk mengembalikan suatu nilai dari tubuh-fungsi kepada ekspresi pernyataan-fungsi digunakan keyword return.

Perhatikan fungsi pangkat sederhana berikut yang digunakan untuk menghitung nilai pangkat dari argumen yang dinyatakannya, kemudian mengembalikan nilai tersebut sebagai nilai fungsi.

Code:

/*
mencari harga x pangkat n.
nilai n harus >= 0 dan hasilnya tidak lebih dari nilai maksimum jenis-data int
*/
int pangkat(int x, int n)
{
  int hasil;
 
  hasil = 1;
  while (n > 0)
  { hasil *= x;
    n--;
  }
  return hasil;
}
Keyword return dapat digunakan di sembarang tempat pada tubuh-fungsi. Keyword ini sekaligus juga berfungsi untuk menghentikan alur program pada fungsi. Alur progrm kemudian berlanjutk pada pernyataan setelah pernyataan-fungsi. Apabila fungsi tidak mengembalikan suatu nilai, maka keyword return tidak diikuti oleh suatu ekspresi.

B. PROTOTIP FUNGSI
Sampai di sini anda telah mengetahui tentang fungsi dan pernyataan-fungsi. Fungsi merupakan sekumpulan instruksi yang diberi nama, sementara pernyataan-fungsi merupakan pernyataan yang digunakan untuk mengaktifkan fungsi yang disebutkannya.

Seperti halnya variabel, setiap fungsi harus telah dideklarasikan sebelum dia digunakan. Maksud utama  hal tersebut adalah untuk memudahkan kompiler dalam memeriksa kebenaran penulisan pernyataan-fungsi, apakah itu sesuai atau tidak. Hal itu terutama menyengkut jenis-data nilai-fungsi dan argumen-argumennya.

Pembuatan suatu fungsi dapat dilakukan belakangan tetapi kompiler perlu diberi tahu aturan penulisan yang harus digunakan untuk fungsi tersebut, agar dia mampu memeriksa kebenaran penulisan pernyataan-fungsi yang dimaksud. Itu disebut deklarasi deklarasi-fungsi atau prototip-fungsi.

Penulisan prototip-fungsi hampir mirip dengan penulisan fungsi itu sendiri, hanya ia tidak memerlukan tubuh-fungsi dan penulisan argumen-argumen boleh hanya jenis-datanya saja. Perhatikan Program-5.1 sebagai contoh.

Code:

#include <stdio.h>
 
int factorial(int n); /* prototip fungsi factorial */
 
main()
{
  int i = 1;
 
  while (i < 6)
  { printf("%d! adalah %d\n" , i, factorial(i));
    i++;
  }
}
 
int factorial(int n)
{
  if (n == 1)
    return(1);
  else
    return(n * factorial(n-1));
}
Apabila program tersebut dijalankan maka akan diperoleh output sebagai berikut.

Code:

1! adalah 1
2! adalah 2
3! adalah 6
4! adalah 24
5! adalah 120

0 komentar:

Posting Komentar