Tuesday, May 29, 2018

Searching dalam Bahasa C

Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa dilakukan untuk mencari data yang ada di dalam memory komputer. Proses pencarian dilakukan untuk mengetahui apakah data yang dicari terdapat pada sekumpulan data yang ada. Selain untuk mengetahui keberadaan data, informasi yang lain yang bisa didapat adalah letak dari data tersebut. Dalam kehidupan sehari-hari kita juga sering melakukan kegiatan searching seperti mencari data/informasi yang ada dalam internet. Ada beberapa metode yang dapat digunakan untuk searching, yaitu:
  •  Sequential Search
  •  Binary Search

Sequential Search

Sequential Search merupakan metode pencarian data dalam array dengan cara membandingkan data yang dicari dengan data yang ada di dalam array secara berurutan. Pencarian data dengan Metode Sequential Search efektif untuk mencari data yang dalam posisi yang tidak terurut atau acak.
Prosesnya bisa dijelaskan seperti berikut:
  1. Menentukan data yang dicari
  2. Membaca data array satu per satu secara sekuensial
  3. Mulai dari data pertama sampai dengan data terakhir, kemudian data yang dicari tadi dibandingkan dengan masing-masing data yang ada di dalam array.
    a. Jika data yang dicari ditemukan maka kita dapat membuat statement bahwa data telah temukan.
    b. Jika data yang dicari tidak ditemukan maka kita dapat membuat statement bahwa data telah temukan.
Sequential Searching memiliki Kelebihan dan Kekurangan yaitu:
  • Kelebihan Sequential Searching bisa dikatakan lebih mudah dalam implementasinya dalam pemrograman.
  • Kekurangannya jika data yang terdapat dalam suatu array itu sangat banyak, maka akan diperlukan waktu yang lebih lama untuk membandingkan data yang dicari dengan jumlah data yang sangat banyak dalam suatu array. 
 Contoh Program Sequential Search :


Dan dibawah ini adalah Output Programnya :

Binary Search

Metode pencarian Binary yaitu mencari data dengan melakukan mengelompokkan array menjadi bagian-bagian. Binary Search ini hanya dapat diimplementasikan pada data yang telah terurut baik ascending maupun descending dalam suatu array. Bila data belum terurut dan akan dilakukan pencarian menggunakan metode ini maka terlebih dahulu harus diurutkan. Untuk data yang besar metode ini lebih efektif dibandingkan dengan metode sequential search.
Proses Binary Search yang urutan datanya ascending:
  1. Pertama buat perulangan lalu menentukan posisi low yaitu posisi yang menandakan index paling rendah kemudian menentukan posisi high. Kemudian mencari posisi mid = (high + low)/2
  2. Lalu membandingkan data yang dicari dengan nilai yang ada di posisi mid.
  3. Jika data yang dicari sama dengan nilai yang ada di posisi mid berarti data ditemukan.
  4. Jika data yang dicari lebih kecil dari nilai yang ada di posisi mid maka pencarian data akan dilakukan dibagian kiri mid dengan melakukan pembandingan. dengan kondisi posisi high berubah yaitu (mid - 1) dan posisi low tetap.
  5. Jika data yang dicari lebih besar dari nilai yang ada mid  maka pencarian data akan dilakukan di bagian kanan dari mid dengan posisi low yang berubah yaitu (mid + 1) dan posisi high tetap.
Kelebihan dan Kekurangan Binary Search:
  1. Kelebihannya yaitu tidak perlu membandingkan data yang dicari dengan seluruh data array yang ada, cukup melalui titik tengah kemudian kita bisa menentukan ke mana selanjutnya mencari data yang ingin dicari.
  2. Kekurangan implementasi agak sedikit lebih rumit karena tidak bisa digunakan pada data array yang masih acak. Jadi harus melakukan sorting terlebih dahulu dalam implementasinya.

 Contoh Program Binary Search:



 Dan dibawah ini adalah Output Programnya :


Sunday, May 13, 2018

Stack dalam Bahasa C



Stack merupakan jenis linked list yang menerapkan konsep LIFO (Last In Fist Out) artinya elemen dari struktur (node) yang dimasukkan pertama kali ke dalam rangkaian akan dikeluarkan (diproses) terakhir kali sedangkan elemen yang masuk terakhir akan diproses / dikeluarkan pertama. Dengan kata lain setiap transaksi atau aktifitas yang ada dalam stack dilakukan pada kepalanya (head) saja. Pada stack hanya ada 2 fungsi utama yaitu Push atau menambah/memasukkan struktur (node) ke dalam stack, dan Pop atau mengeluarkan/menghapus node dari stack.

Cara kerja stack dapat di ilustrasikan sebagai berikut:

| W | ---> atas
| X |
| Y |
| Z | ---> bawah

Anggaplah ilustrasi diatas sebagai tumpukan data, W sebagai node (struktur) yang atas (terakhir dimasukkan) dan Z sebagai node yang bawah (pertama kali dimasukkan). Jika kita melakukan operasi Push (menambah), misalnya V, maka penambahan akan dilakukan pada nilai yang paling atas, yaitu W, sehingga menjadi:

| V | ---> atas
| W |
| X |
| Y |
| Z | ---> bawah

Sehingga nilai V menjadi nilai atas yang baru, dan jika dilakukan operasi pop, maka stack akan menjadi seperti gambar yang pertama diatas, yaitu nilai W menjadi nilai atas, dan nilai V akan dihapus dari tumpukan (stack).

Contoh Source Code dari Stack adalah :

#include <iostream>
#include <conio.h>
#define SIZE 10
using namespace std;

int Stack[SIZE];
int top = -1;

bool isFull(){
if(top==SIZE-1){
cout<<endl<<"Stack sudah penuh!"<<endl;
getch();
exit(0);
return true;
}else
return false;
}

bool isEmpty(){
  if(top==-1){
     cout<<endl<<"Stack kosong!"<<endl;
     getch();
exit(0);
  return true;
  }else
  return false;
}

void push(int value){
    if(isFull()){
}else
top++;
Stack[top]=value;

}
void printStack(){
  if(isEmpty()){
  }else if (isFull()){
  }else
for(int i=top;i>=0;i--){
    cout<<Stack[i]<<endl;
}
}

void pop(){
 if(isEmpty()){
  }else
  cout<<endl<<"Stack diambil : "<<Stack[top]<<endl;
  top--;
  printStack();
}

int main(){
 int choice, data=1;
 do{
cout<<"Input Data : ";
  cin>>choice;
switch (choice){  
case 999:
cout<<"Proses Selesai!"; 
data = 0;
        break;
case 60 ... 998:
push(choice);    
break;
case 0 ... 59:
pop(); 
        break;
  }
 }while(data == 1);
  getch();
  return 0;

}



Source code diatas merupakan implementasi dari sebuah soal pada gambar di bawah ini: 



Ini adalah Implementasi Programnya :




Struct dalam Bahasa C


Struct adalah tipe data bentukan yang berisi kumpulan variabel-variabel yang berada dalam satu nama yang sama dan memiliki kaitan satu sama lain. Berbeda dengan array hanya berupa kumpulan variabel yang bertipe data sama, struct bisa memiliki variabel-variabel yang bertipe data sama atau berbeda, bahkan bisa menyimpan variabel yang bertipe data array atau struct itu sendiri. Variabel-variabel yang menjadi anggota struct disebut dengan elemen struct.
Dari perbedaan array dan struct diatas, kita dapat mengambil contoh :


Array hanya menyimpan data dengan tipe data yang sama. Sedangkan struct bisa juga dikatakan sebagai tipe data baru yang dapat menampung berbagai tipe data lain yang berbeda.


Contoh diatas adalah cara pendeklarasian dan penggunaan struct dasar. Berdasarkan contoh di atas, kita dapat menggunakan data struct yang telah dideklarasikan dengan melakukan deklarasi lengkap.
  • Penggunaan/pemakaian tipe data struct dilakukan dengan membuat suatu variabel yang bertipe data struct tersebut
  • Pengaksesan elemen struct dilakukan secara individual dengan menyebutkan nama variabel struct diikuti dengan operator titik (.)
Apabila contoh diatas dijalankan, maka hasilnya adalah:

Looping dalam Bahasa C


Perulangan atau yang sering disebut dengan “looping”, merupakan proses yang dilakukan secara berulang-ulang dalam batas yang telah ditentukan. Dengan menggunakan proses perulangan, penulisan kode program dapat menjadi lebih efisien. Dalam bahasa C, terdapat beberapa macam struktur kendali perulangan, antara lain: for, do-while, dan while.
For
Instruksi for digunakan untuk mengeksekusi atau menjalankan statement / perintah dengan jumlah pengulangan yang telah diketahui.
Sintaks dari for ialah :

Dimana,
exp7: ekspresi untuk inisialisasi nilai awal
exp9: ekspresi untuk kondisi
exp11: expresi untuk increment (penambahan) atau decrement (pengurangan)
Berikut merupakan alur dalam instruksi for:
  • exp1 akan dieksekusi pertama kali (hanya dijalankan 1 kali). Tahap ini digunakan untuk deklarasi dan pemberian nilai awal untuk variabel control.
  • exp2 selanjutnya akan di evaluasi. Jika kondisi bernilai benar, maka statement akan dijalankan. Jika kondisi bernilai salah, maka statement tidak dijalankan dan proses perulangan for tersebut akan berhenti.
  • Apabila statement(s) telah dijalankan, maka exp3 digunakan untuk mengatur perubahan nilai dari variabel control.
Sebagai contoh perhatikan kode berikut:

Apabila kode diatas dijalankan, maka hasilnya ialah:

Do-While
Instruksi do…while digunakan untuk mengulang suatu statement / perintah selama kondisi yang ada pada while masih terpenuhi atau bernilai benar.
Sintaks dari instruksi do…while adalah:

Berdasarkan sintaks diatas, pengecekan terhadap expression dilakukan pada akhir perulangan, sehingga perintah yang ada pada instruksi do-while akan dijalankan satu kali sebelum kondisi dicek.
Jika kondisi benar, maka statement / perintah akan dijalankan kembali dan proses perulangan akan dijalankan terus menerus sampai kondisi bernilai salah.
Berikut merupakan contoh penggunaan do-while:

Apabila dijalankan, maka hasilnya ialah:

While
Instruksi while digunakan untuk mengulang suatu statement selama kondisi syarat yang diberikan bernilai benar. Apabila kondisi bernilai salah, maka statement / perintah yang dideklarasikan di dalam perulangan while tidak akan diulang.
Sintaks dari instruksi while adalah:

Instruksi while dapat memiliki satu ataupun beberapa statement / perintah. Perulangan akan terus dilakukan selama kondisi bernilai benar. Pada umumnya, kondisi menggunakan operator perbandingan maupun digabungkan dengan operator logika jika terdapat lebih dari satu operasi perhandingan.
 Berikut merupakan contoh penggunaan while:

Apabila kode diatas dijalankan, maka hasilnya:

Pengantar Bahasa C



1.1  Pengenalan Pemrograman C/C++
C++ adalah bahasa pemrograman computer. Perbedaan Antara Bahasa pemrograman C dan C++ meskipun bahasa-bahasa tersebut menggunakan sintaks yang sama tetapi mereka memiliki perbedaan, C merupakan bahasa pemrograman prosedural, dimana penyelesaian suatu masalah dilakukan dengan membagi-bagi masalah tersebut kedalam sub-submasalah yang lebih kecil, Selain itu, C++ merupakan bahasa pemrograman yang memiliki sifat pemrograman beorientasi objek Untuk menyelesaikan masalah, C++ melakukan langkah pertama dengan menjelaskan class-class yang merupakan anak class yang dibuat sebelumnya sebagai abstraksi dari object-object fisik, Class tersebut berisi keadaan object, anggota-anggotanya dan kemampuan dari objectnya, Setelah beberapa Class dibuat kemudian masalah dipecahkan dengan Class.

2.2 Dasar Pemrograman C++ dan Operasi Input/Output
2.2.1 Input/Output
Input dan ouput data dalam bahasa C hanya berkisar antara input yang diberikan oleh keyboard yang selanjutnya akan di tampilkan (Output) di layar monitor. Dalam bahasa C banyak format untuk meng-input dan meng-output tergantung pada penggunaan file header yang digunakan, input dan output dasar yang sering digunakan dalam bahasa pemrograman khususnya bahasa C dengan format yang berbeda-beda.
Dibawah ini adalah berbagai macam fungsi output yang ada di dalam bahasa C :
1.      printf
Fungsi printf() berguna untuk menampilkan semua jenis data baik number, string, atau karakter.
2.      puts
Ada cara lain untuk menampilkan suatu keluaran(output) ke layar yaitu dengan menggunakan fungsi puts. Fungsi puts() digunakan untuk menampilkan data yang bertipe string dan secara otomatis akan pidah baris (new line).
3.      putchar
Fungsi ini digunakan untuk menampilkan sebuah karakter saja dan tidak mengandung escape sequence “\n”. Fungsi putchar ini hanya bisa menampilkan satu buah karakter saja sehingga apapun nilai yang kita masukkan hanya karakter pertama yang akan ditampilkan.
4.      cout
Dalam C++, perintah cout digunakan untuk menampilkan suatu informasi ke piranti output (layar).

Sedangkan untuk fungsi input dalam C++ adalah sebagai berikut :
1.      scanf
Jika fungsi scanf ini digunakan untuk membaca data dengan tipe array, karakter yang selanjutnya kita sebut dengan istilah string, maka fungsi ini hanya akan membaca data sampai ditemukan blank(space). Dengan demikian nilai setelah blank dianggap bukan lagi nilai dari variabel yang akan mengisi variabel tersebut. Fungsi scanf lebih cocok digunakan untuk data-data numerik.Fungsi scanf biasanya digunakan bersama-sama dengan fungsi printf. Fungsi scanf() berguna untuk menginput data baik berupa bilangan, karakter, ataupun kalimat secara terformat. Berikut format-format yang digunakan untuk scanf() :
%c            : Membaca sebuah karakter (character)
%s            : Membaca sebuah string (string)
%i, %d     : Membaca sebuah bilangan bulat (integer, desimal)
%f, %e     : Membaca sebuah bilangan pecahan (real, float)
%o           : Membaca sebuah bilangan octal
%x           : Membaca sebuah bilangan heksadesimal
%u           : Membaca sebuah bilangan tak bertanda
2.      gets
Jika kita menggunakan fungsi scanf untuk membaca data yang bertipe string, maka data tersebut hanya akan dibaca sampai ditemukan spasi. Untuk keperluan pemasukan data string yang panjang dipisahkan dengan spasi, bahasa C menyediakan fungsi gets.
3.      getchar
Jika ingin memasukkan sebuah nilai karakter ke variabel yang bertipe karakter maka kita dapat menggunakan perintah getchar.
4.      cin
Dalam C++, perintah cin digunakan untuk menginput suatu nilai dari suatu piranti masukan (keyboard) untuk selanjutnya di proses oleh program.

2.2.2 Variabel
Variabel adalah suatu pengenal yang digunakan untuk mewakili suatu nilai tertentu didalam proses program. Berbeda dengan konstanta yang nilainya selalu tetap,nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan. Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan sebaga berkut :
a       - Terdiri dari gabungan huruf dan angka dengan karakter pertama huruf. Bahasa C bersifat case-            sensitive artinya huruf besar dan kecil dianggap berbeda.
b       - Tidak boleh mengandung spasi.
c       - Tidak boleh mengandung symbol-symbol khusus,kecuali garis bawah(underscore). Yang termasuk      symbol khusus yang tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -, +,dsb.
d        -  Panjangnya bebas tetapi hanya 32 karakter pertama yang terpakai.
Variabel adalah nama yang digunakan utnuk menyimpan suatu nilai, yang mana nilai tersebut dapat berubah-ubah selama proses program. Variable harus dideklarasikan terlebih dahulu agar dapat digunakan didalam sebuah program. Deklarasi berguna untuk menunjukan sifat dari data yang disimpan dalam variable tersebut.

Bentuk umum pendeklarasi variable:
Nama_tipe nama_variabel;

2.2.3 Konstanta
Konstanta nilainya selalu tetap. Konstanta harus didefinisikan terlebih dahulu diawal program. Konstanta dapat bernilai integer,pecahan,karakter,string. Contoh konstanta : 50; 13; 3.14; 4.50005; ’A’; ’Bahasa C’. selain itu, bahasa C juga menyediakan beberapa karakter khusus yang disebut karakter escape,antara lain :
a.       \a         : untuk bunyi bell(alert)
b.      \b         : mundur satu spasi(Backspace)
c.       \f          : ganti halaman(form feed)
d.      \n         : ganti baris baru(new line)
e.       \r          : ke kolom pertama, baris yang sama
f.        \v         : tabulasi vertical
g.      \0         : nilai kosong(null)
h.      \’          : karakter petik tunggal
i.        \”         : karakter petik ganda
j.        \\          : karakter garis miring

 2.2.4 Tipe data
Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer. Misalnya saja 5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5 dan 2 bertipe integer maka akan menghasilkan nilai, namun jika keduanya bertipe float maka akan menghasilkan nilai 2.5000000. pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih eisien dan efektif.
Dalam bahasa C terdapat 5 tipe data dasar yaitu :
Tabel 2.2.4 Macam-macam tipe data
No.
Tipe data
Ukuran
Range(Jangkauan)
Format
Keterangan
1
Char
1 byte
-182 s/d 127
%c
Karakter/string
2
Int
2 byte
-32768 s/d 32767
%i, %d
Integer/bilangan bulat
3
Float
4 byte
-3.4E-38 s/d 3.4E+38
%f
Float/Bilangan pecahan
4
Double
8 byte
-1.7E-308 sd/1.7+308
%lf
Pecahan presisi ganda
5
Void
0 byte


Tidak bertipe
     


2.2.5 Pengenal (identifier)
Pengenal (identifier) merupakan nama yang biasa digunakan untuk variabel, konstanta, fungsi atau obyek yang lain yang didefinisikan oleh pemrograman.
Aturan yang berlaku bagi pengenal :
Pengenal haruslah di awali dengan huruf (A..Z, a..z) atau karakter garis bawah (_). Selanjutnya dapat berupa huruf, digit (0..9) atau karakter garis bawah atau tanda dollar ($).
Panjang pengenal boleh terdiri lebih dari 32 karakter, akan tetapi hanya 32 karakter pertama yang akan di anggap berarti.
Contoh :
Jumlah
Jumlah (berbeda dengan jumlah)
Total_per_tahun
Harga_jual$

2.2.6  Kata Kunci (reserved word)
Untuk menghindari kesalahan, pengenal tidak boleh menggunakan nama yang tergolong sebagai kata kunci. Adapun kata kunci tersebut adalah sebagai berikut :
Asm                      do                    if                      signed              volatile
Auto                      double             int                    sizeof               while
Break                    else                  interrupt          static                _cs
Case                     enum               long                 struct               _ds
Cdecl                    extern              near                 switch              _es
Char                     far                    pascal              typedef             _ss
Const                    float                 register            union               huge
Continue               for                    return              unsigned          void
Default                 goto                 short               

2.2.7   Operator Aritmatika
Tabel 2.2.7 Operator Aritmatika
Yang tergolong operator binary
Yang tergolong operator unary
-
Tanda Minus
+
Tanda Plus
*
Perkalian
/
Pembagian
%
Sisa Pembagian (modulus)
+
Penjumlahan
-
Pengurangan

2.3    Pengambilan Keputusan Dengan If Else
2.3.1        Operator Relasi
Operator Relasi biasa digunakan untuk membandingkan 2 buah nilai. Hasil pembandingan berupa keadaan benar atau salah. Adapun operator relasi dalam Bahasa C, sebagai berikut :
>               Lebih dari
>=             Lebih dari atau sama dengan
<               Kurang dari
<=             Kurang dari atau sama dengan
= =            Sama dengan
!=              Tidak sama dengan

2.3.2        Operator Logika
Operator logika biasa digunakan untuk menghubungkan ungkapan relasi. Adapun operator logika dalam Bahasa C, sebagai berikut :
&&           dan (AND)
||                atau (OR)
!                tidak (NOT)

2.3.3   Prioritas Operator Logika dan Relasi
Tertinggi   !
                 > >= < <=
                 = = ! =
                 &&
Terendah  ||


  2.3.4        Pernyataan If
                    Pernyataan if  mempunyai bentuk penggunaan yang bermacam-macam sesuai dengan kasus pengambilan keputusan yang dikerjakan :


If Tunggal

If – Jamak

Nested - If

if (kondisi)
pernyataan


if (kondisi)
{
pernyataan-1
pernyataan-2
}
else
if
{
pernyataan-3
pernyataan-4
}



if (kondisi-1)
if (kondisi-2)
{
pernyataan-1
}
else
if (kondisi-3)
pernyataan-1



If-Else

if (kondisi)
pernyataan-1
else
pernyataan-2




2.4    Pengambilan Keputusan Dengan Switch
         2.4.1 Pernyataan swicth
Pernyataan switch merupakan pernyataan yang dirancang khusus untuk menangani pengambilan keputusan yang melibatakan sejumlah alternatif.
Bentuk umum pernyataan switch :
switch (ekspresi)
     {
case konstanta-x:
              pernyataan-x
              break;
          default:
              pernyataan-n
}

2.5    Perulangan
Pada Bahasa C terdapat 3 buah struktur loop. Pernyataan yang dipakai berupa while,do-while, dan for. Berhubungan dengan penanganan loop ada beberapa pernyataan lain yang berfungsi untuk keluar dari loop yaitu break, goto, dan continue.

2.5.1        Do-While
a.      Tahapan Proses
Mula-mula pernyataan dijalankan dulu, kemudian kondisi di uji, jika kondisi bernilai benar, maka pernyataan dijalankan lagi dan jika kondisi bernilai salah maka prnyataan tidak dijalankan lagi (berhenti)


b.      Ilustrasi



a.      Sintaks
do
pernyataan
while (kondisi)

2.5.2        While
a.      Tahapan Proses
Dari awal langsung dilakukan tes kondisi jika kondisi bernilai benar maka menjalankan pernyataan dan jika kondisi bernilai salah maka keluar dari loop. Jadi pada perulangan menggunakan while memungkinkan sebuah pernyataan tidak dijalankan sama sekali.

b.      Ilustrasi


a.      Sintaks
while (kondisi)
pernyataan

Yang membedakan antara perulangan menggunakan do-while dan while, biasanya adalah pada pernyataan while harus diberikan terlebih dahulu inisialisasi terhadap variabel yang akan dijadikan sebagai kondisi dari while.

2.5.3        Pernyataan for
a.      Tahapan Proses
Pernyataan akan dijalankan mulai dari nilai awal (ungkapan1) dan keluar dari loop jika sudah sesuai dengan nilai akhir (ungkapan2).
b.      Sintaks
for (ungkapan1; ungkapan2; ungkapan3)
pernyataan
Ungkapan1® digunakan untuk memberikan inialisasi terhadap variabel pengendali loop.
Ungkapan2® digunakan sebagai kondisi untuk keluar dari loop.
Ungkapan3® digunakan sebagai pengatur kenaikan nilai variabel pengendali loop.

2.6    Fungsi
2.6.1        Tujuan Fungsi
Fungsi adalah kumpulan baris perintah (blok program) yang di buat untuk melaksanakan tugas tertentu, yang tujuannya adalah :
1.        Program menjadi lebih terstruktur, sehingga mudah untuk dipahami, mencari kesalahan kode dan dikembangkan lebih lanjut.
2.        Untuk mengurangi penulisan kembali kode yang telah dibuat.
Fungsi memerlukan masukan yang dinamakan argumen atau parameter, yang akan diolah oleh fungsi. Hasil akhir dari sebuah fungsi adalah sebuah nilai berupa nilai keluaran fungsi.

                     Tipe_fungsi nama_fungsi (parameter)
                     Deklarasi parameter
                      {
                          Bagian fungsi
                       }

Keterangan :
Tipe_fungsi                 = tipe keluaran fungsi
Nama_fungsi               = nama fungsi
Parameter                    = daftar parameter
Deklarasi parameter    = deklarasi variabel
Bagian fungsi              = tubuh / isi fungsi


2.6.2        Cara Melewatkan Parameter ke dalam Fungsi
Ada dua cara yang dapat dilakukan untuk melewatkan parameter, yaitu :
1.    Pemanggilan dengan nilai (call by value)
Nilai dari parameter actual akan disalin dalam parameter formal, sehingga nilai pada parameter actual tidak bisa berubah sekalipun nilai parameter formalnya mengalami perubahan.

1.    Pemanggilan dengan referensi (call by reference)
Dengan melewatkan alamat dari suatu varibel kedalam fungsi. Dengan cara ini isi dari sebuah variabel dapat di ubah di luar fungsi dengan proses perubahan di dalam fungsi.

2.7         Array
Array merupakan koleksi data dengan setiap elemen data menggunakan nama yang sama dan masing-masing elemen data bertipe sama. Setiap komponen/elemen array dapat diakses dan dibedakan melalui indeks array.
2.7.1        Array Berdimensi Satu
Pendeklarasian dengan bentuk umum berupa :

Tipe nama_var[ukuran]

Contoh deklarasi :
float nilai[5];

               Bentuk pengaksesan :

                                         nama_var[indeks]

2.7.2        Array Berdimensi Dua
               Pendeklarasian dengan bentuk umum berupa :

                  Tipe nama_var[ukuran1][ukuran2]

Contoh deklarasi :
float data_nilai[3][4]

       Bentuk pengaksesan :

                                         nama_var[indeks pertama][indeks kedua]

2.7.3        Array Berdimensi Tiga (banyak)
                 Pendeklarasian dengan bentuk umum berupa :

                                        Tipe nama_var[ukuran1][ukuran2]…..[ukuran n]

Contoh deklarasi :
int data [2][3][5];

                  Bentuk pengaksesan :

                                                    nama_var[indeks pertama][indeks kedua]…..[indeks ke-n]

2.8         String
String merupakan bentuk data yang bisa di pakai dalam bahasa pemrograman untuk keperluan menampung dan memanipulasi data teks, misalnya untuk menampung (menyimpan) suatu kalimat. Pada bahasa C, string bukanlah merupakan tipe data tersendiri, melainkan hanyalah kumpulan dari nilai-nilai karakter yang berurutan dalam bentuk array berdimensi satu.

2.8.1        Variabel String
Variabel string adalah variabel yang dipakai untuk menyimpan nilai string.
Char nam_var[size]
Misalnya :
Char alamat[30];
Merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal 30 karakter (termasuk karakter TUBAN). Deklarasi tersebut sebenarnya tidak lain merupakan deklarasi array bertipe char.

2.8.2        Input Output Data String
Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan fungsi gets() atau scanf(). Bentuk umum pemakainnya adalah sebagai berikut :
#include<stdio.h>
Gets(alamat_array);
atau
#include<stdio.h>
Scanf(“%s”,alamat_array);


2.8.3        Menampilkan Isi Variabel String
Untuk menampilkan isi variabel string, fungsi yang digunakan adalah puts() atau printf(). Bentuk umum pemakainnya adalah sebagai berikut :

#include<stdio.h>
puts(var_string);
atau
#include<stdio.h>
Printf(“%s”,var_string”);

2.8.4        Fungsi-fungsi Mengenai String
Fungsi strcpy() untuk menyalin nilai string
Fungsi strlen() untuk mengetahui panjang nilai string
Fungsi strcat() untuk menggabung nilai string
Fungsi strcmp() untuk membandingkan dua nilai string
Fungsi strchr() untuk mencari nilai karakter dalam string

2.9         Struktur
Struktur adalah pengelompokan variabel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan array yang berisi kumpulan variabel-variabel yang bertipe sama dalam satu nama, maka suatu struktur dapat terdiri atas variabel-variabel yang berbeda tipenya dalam suatu nama struktur. Struktur biasa di pakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan (dalam bahasa PASCAL, struktur disebut dengan record).

2.9.1        Mendefinisikan dan Mendeklarasikan Struktur
Variabel-variabel yang memebentuk suatu struktur, selanjutnya disebut sebagai elemen dari struktur atau field. Dengan demikian memungkinkan suatu struktur dapat berisi elemen-elemen data berbeda tipe seperti char, int, float, double, dan lain-lain.
Contoh pendefinisian sebuah struktur adalah informasi data tanggal (date) yang berisi :

struct date
         
            int  month;
                            int  day;
                            int  year;  
                 };

2.9.2        Mengakses Elemen Struktur
Elemen dari suatu variabel struktur dapat diakses dengan menyebutkan nama variabel struktur diikuti dengan operator titik(‘.’) dan nama dari elemen strukturnya. Cara penulisannya sebagai berikut :
                 
               variabel_struktur.nama_field

Untuk memberikan data nama ke field name dari variabel student di atas, maka pernyataan yang diperlukan misalnya adalah :
            
strcpy(student.name,”IQBAL”);