modul 1 Dasar Pemrograman C

advertisement
Modul 1
Dasar­Dasar Bahasa Pemrograman C
1. C dan Pengolahan Sinyal Digital
C adalah bahasa pemrograman tingkat tinggi. Sebab bahasa pemrogramannya menggunakan
keyword dan syntax yang mudah dimengerti manusia (human friendly). Kelebihan C dibanding bahasa
pemrograman tingkat tinggi lainnya (seperti PASCAL atau JAVA) adalah kemampuannya dalam
melakukan interaksi dengan perangkat keras secara mudah karena ”kedekatannya” dengan perangkat
keras tersebut, persis seperti bahasa pemrograman tingkat rendah seperti assembler. Ini berarti dua hal,
pertama, kompilasi dan running programnya jauh lebih cepat, kedua, kode/listing C dapat dijalankan di
berbagai platform/processor yang berbeda dengan penyesuaian yang tidak terlalu banyak. Yang
terakhir membuat C dikenal juga sebagai platform independent programming language. Dengan kelebihan seperti demikian, maka C adalah bahasa pemrograman pilihan untuk
aplikasi Pengolahan Sinyal Digital (PSD). Sebab PSD yang tentunya membutuhkan banyak interaksi
dengan perangkat keras dapat dengan mudah diimplementasikan menggunakan bahasa pemrograman
C, baik sebagai simulator, emulator atau end­system yang pada banyak kasus memerlukan operasi real­
time. Percayalah, C mampu melakukannya!
Pada pelatihan ini, kita akan menggunakan C pada sistem operasi Windows. Jadi prerequisite
yang harus anda miliki adalah pemahaman tentang pengoperasian Windows.
2.
Compiler dan Editor
C adalah bahasa pemrograman. That’s it. Jadi, seperti bahasa pemrograman lain, yang harus
anda lakukan adalah menuliskan beberapa baris perintah, lalu simpan ke dalam file dengan ekstensi .c.
Karena tujuan akhir kita adalah program aplikasi yang executable , maka hal berikutnya yang harus
anda lakukan adalah meng­compile file tersebut untuk menghasilkan file berekstensi .exe. Oleh sebab itu, dalam pengembangan (developing) sebuah aplikasi, minimal anda memerlukan
dua program, yaitu editor dan compiler. Banyak pilihan program developing yang bisa anda pakai,
tetapi untuk kesederhanaan dan kecepatan phase development, pada pelatihan ini, kita akan
menggunakan program Borland Turbo C, yang di dalamnya sudah terdapat compiler dan editor
sekaligus.
Saat ini, Borland Turbo C dapat anda peroleh secara gratis, yaitu cukup mendownloadnya di
situs resmi Borland.
3.
Program Pertama
Mungkin, cara yang terbaik untuk memahami C adalah dengan melihat langsung contoh
programnya. Perhatikan program berikut :
#include <stdio.h>
void main ( void )
{
printf ( "Pengolahan Sinyal Digital\n" ) ;
}
Di sini, kita bisa melihat beberapa komponen utama yang biasanya ada dalam sebuah
program, yaitu bagian main() dan preprocessor. Kita akan membahas lebih jauh mengenai hal
ini pada bagian berikutnya. Untuk mencoba Borland Turbo C anda, silahkan coba program di atas, dan lihat keluarannya.
4.
Mengenal Bahasa Pemrograman C
Berikut adalah penjelasan secara umum tentang bahasa pemrograman C. Untuk mempertajam
pemahaman, kita juga akan mencobanya langsung menggunakan compiler/editor Turbo C.
1. Variabel dan Identifier
•
Dalam C, sebuah variabel harus dideklarasikan terlebih dahulu sebelum dapat digunakan.
Caranya adalah dengan menyatakan tipe variabel diikuti dengan nama variabelnya.
Perhatikan contoh berikut :
int a;
char nama[20];
double *y;
float koeff = 0.87;
•
Nama variabel atau identifier adalah case­sensitive. Ini berarti, variabel saya berbeda
dengan Saya atau SAYA. Sangat tidak disarankan untuk menggunakan nama variabel
dengan huruf besar seluruhnya, sebab biasanya compiler menggunakan variabel seperti ini
untuk keperluan program kompilasinya.
•
Identifier harus dimulai dengan huruf (bukan angka) kemudian selebihnya dapat berupa
kombinasi huruf, angka dan underscore. Jadi berikut adalah contoh identifier yang benar : panjang
pjg_pointer
nama
koeff_17
Sementara yang berikut adalah salah :
_ini
98angka
•
Tipe­tipe variabel yang dikenali di C
Deklarasi
char
unsigned char
int
unsigned int
short
unsigned short
long
unsigned long
float
double
Ukuran (bit)
8
8
16
16
16
16
32
32
32
64
Range
­128 sampai 127
0 sampai 255
­32768 sampai 32767
0 sampai 65535
­32768 sampai 32767
0 sampai 65535
­2.1e9 sampai 2.1e9
0 sampai 4.3e9
­1e­308 sampai 1e38
­1e­308 sampai 1e308
Sebagai contoh program untuk melihat tipe variabel ini, salin dan compile program
typevar.c, lalu perhatikan hasil keluarannya.
•
Variabel di C dibedakan menurut cakupan dan waktu hidupnya dalam tiga macam
variabel, yaitu auto, static dan extern. Pendeklarasiannya sama seperti sebelumnya,
hanya ditambahkan keyword sesuai jenisnya, sebagai contoh :
static int a;
extern char nama[20];
2. Expression dan Operator
•
Expression secara sederhana dapat diartikan sebagai sebaris perintah yang dimengerti dan
dieksekusi oleh compiler sesuai aturan (lexical) yang telah dtetapkan. Contoh expression
sederhana adalah operasi aritmatika, seperti berikut: c = a + b;
•
Dalam tiap expression digunakan satu atau lebih operator, pada contoh di atas, operator
yang digunakan adalah + dan =.
•
Adapun operator yang dikenal di C adalah sebagai berikut :
Operator Aritmatika
Operator
*
/
+
%
++
­­
Deskripsi
Pengali
Pembagi
Penjumlah
Pembagi modulus (sisa integer)
Increment
Decrement
Operator Relasi
Operator
<
>
<=
>=
!=
==
Deskripsi
Lebih kecil dari
Lebih besar dari
Lebih kecil atau sama dengan
Lebih besar atau sama dengan
Tidak sama dengan
Sama dengan
Operator Logika
Operator
&&
||
!
&
|
~
<<
>>
Deskripsi
Operasi AND
Operasi OR
NOT
Operasi AND bit per bit
Operasi OR bit per bit
Negasi bit per bit
Geser tiap bit ke kiri
Geser tiap bit ke kanan
3. Flow Control
•
Program adalah kumpulan instruksi yang harus dikerjakan komputer untuk melakukan
aplikasi tertentu. Dan tiap pemrograman pasti membutuhkan mekanisme pengaturan alur
jalannya instruksi, inilah yang disebut flow control. Termasuk dalam flow control adalah
persyaratan dan looping/iterasi.
•
Di dalam C, persyaratan yang dikenal adalah :
a) Pernyataan if else dan trinary conditional
Sintaks yang dikenali :
1) if ( condition ) { statements };
2) if ( condition ) { perform­if­true }
else { perform­this­instead }
3) if ( condition ) { perform­if­true }
elseif ( another­condition ) { perform­this }
else { perform­this­instead }
4) (condition) ? TRUE­STATEMENT : FALSE­STATEMENT
c sebagai contoh lihat program ifelse.c.
b) Pernyataan switch Sintaksnya :
switch ( expression ) {
case value_1 :
statements;
break;
case value_2:
statements;
break;
default:
statements;
break;
}
Sebagai contoh lihat program switch.c.
•
Adapun mekanisme looping yang dikenal adalah :
a) Pernyataan while do dan do while
Sintaksnya :
1) while ( condition ) do { statements };
2) do { statements } while ( condition );
Sebagai contoh lihat program while.c dan dowhile.c.
b) Pernyataan for Sintaksnya :
for ( initial­expression;condition;update ) {
statements;
}
Sebagai contoh lihat program for.c.
•
Sintaks lain yang juga penting dalam flow control adalah break dan continue. break
telah kita kenal dalam pernyataan switch, yaitu sebagai perintah untuk mengakhiri
persyaratan atau looping. Sementara continue digunakan untuk men­skip perintah
setelahnya dan kembali ke condition pada looping.
4. Function
•
Function adalah mekanisme reusing code di C, yaitu penggunaan kode yang sama secara
berulang­ulang. Hal ini penting khususnya dalam dua hal, yaitu optimasi kode dan
modularitas.
•
Deklarasi sebuah fungsi adalah serupa dengan main() hanya tentu saja namanya bukan
main, bahkan tidak boleh ada dua main() dalam satu program yang sama.
•
Perhatikan contoh berikut :
#include <stdio.h>
int num = 2; /* Variabel Global */
int main()
{
header(); /* Memanggil fungsi header() */
printf("Kuadrat dari 3 adalah %d\n\n", kuadrat(num));
printf("Variabel inc bernilai : %d\n", increment());
printf("Variabel inc sekarang : %d\n", increment());
printf("Variabel inc sekarang : %d\n", increment());
getch();
return 0;
}
header() /* Fungsi dengan nama header */
{
printf("Contoh function\n\n");
}
int kuadrat (int number) /* Fungsi lain */
{
int sqr; /* Variabel Lokal */
sqr = number * number;
return sqr;
}
int increment()
{
static int inc;
return inc++;
}
•
Contoh di atas memperlihatkan penggunaan fungsi. Perhatikan juga penggunaan variabel
yang cakupan dan waktu hidupnya berbeda sehingga disebut variabel global, variabel lokal
dan variabel statik.
5. String dan Array
•
Array adalah kumpulan data yang bertipe sama. Pendeklarasiannya sama dengan
sebelumnya hanya ditambahkan informasi panjang array, seperti :
int c[200];
•
String diperlakukan berbeda dengan karakter dalam bahasa C. Walaupun string sendiri
adalah kumpulan dari karakter dalam bentuk array, pendeklarasiannya adalah seperti
berikut :
char c[200] = "Laboratorium PSD";
•
Modifier yang dapat digunakan untuk string adalah %s, seperti contoh berikut :
printf("%s", c);
6. Pointer
•
Pointer adalah elemen yang sangat penting dalam bahasa C atau bahasa pemrograman lain.
Berbeda denga tipe variabel lain, pointer menunjukan alamat memori dari suatu variabel
bukan nilai dari variabel.
•
Pendeklarasiannya adalah sebagai berikut :
tipe *nama_variabel;
nama_variabel di sini menyimpan alamat, sementara *nama_variabel
menyatakan nilainya. Operator yang biasa digunakan pada operasi pointer adalah * dan &,
yang masing­masing menyatakan nilai sebuah pointer dan alamat sebuah variabel. Untuk
jelasnya, perhatikan contoh program pointer.c.
7. Alokasi Memori Dinamis
•
Ketika kita mendeklarasikan sebuah variabel, secara otomatis compiler akan
mengalokasikan memori sesuai tipe variabel yang digunakan (lihat tabel di atas). Namun
adakalanya kita menginginkan alokasi memori yang dinamis, misalkan pada penggunaan
array, dimana terkadang kita tidak tahu pasti berapa panjang array yang dibutuhkan.
•
Untuk mengalokasikan memori secara dinamis digunakan fungsi malloc(), dengan
sintaks seperti :
var = (tipe) malloc (ukuran * sizeof(tipe);
sebagai contoh adalah penggunaannya pada pointer seperti berikut :
ptr = (int *) malloc (100*sizeof(int));
•
Untuk contoh lebih jelas, perhatikan program malloc.c. Pada contoh program ini kita
juga bisa melihat hubungan antara pointer dengan array, string dan function.
Latihan:
Buat fungsi untuk membangkitkan sinyal sinus dan cosinus dengan frekuensinya sebagai
masukan fungsi tersebut. Buat juga fungsi untuk membangkitkan sinyal random. 8. Struktur
•
Jika array merupakan variabel dengan koleksi beberapa nilai bertipe sama, maka kadang
kita membutuhkan variabel yang mampu menyimpan beberapa variabel dengan tipe
berbeda, di sinilah kita membutuhkan struktur.
•
Sintaks yang dipakai untuk mendeklarasikan sebuah struktur adalah :
struct {
tipe1 var1;
tipe2 var2;
} nama_structure;
sebagai contoh :
struct {
int no;
char nama [50];
double frek;
} sinyal;
•
Untuk mengakses tiap variabel dalam struktur digunakan operator berupa titik (.). Sebagai
contoh untuk struktur di atas :
sinyal.no = 0;
strcpy(sinyal.nama, "Sinusoidal");
sinyal.frek = 2.9;
•
Struktur juga dapat dibuat dalam bentuk array, deklarasinya seperti :
struct {
char nama [50];
double frek;
} sinyal[10];
Yang masing­masing anggota struktur dapat diakses dengan cara :
strcpy(sinyal[0].nama, "Sinusoidal");
sinyal[0].frek = 2.9;
•
Jika struktur dapat digunakan bersama array, maka tentu struktur juga dapat digunakan
bersama pointer. Deklarasinya adalah seperti :
struct {
char nama [50];
double frek;
} *sinyal;
Yang masing­masing anggota struktur dapat diakses dengan cara :
strcpy(sinyal­>nama, "Sinusoidal");
sinyal­>frek = 2.9;
•
Untuk contoh penggunaan struktur dapat dilihat pada program struct.c.
9. typedef
•
Beberapa tipe variabel yang telah kita pelajari sebelumnya kadang belum cukup untuk
menyatakan tipe variabel yang kita inginkan, atau pertimbangan seperti kemudahan untuk
diingat serta modularitas sistem mengharuskan kita mendefinisikan tipe variabel baru.
Untuk ini, bahasa C menyediakan perintah typedef untuk menyatakan tipe variabel baru.
•
Sintaks yang digunakan adalah :
typedef tipe_baru tipe;
•
Sebagai contoh :
typedef bilangan_bulat int;
typedef struct {
double re;
double im;
} kompleks;
Setelah pendefinisian, kita langsung bisa menggunakan di sepanjang program kita seperti
tipe variabel lainnya.
bilangan_bulat A;
kompleks x ;
Latihan:
Buat fungsi penjumlahan, pengurangan dan perkalian bilangan kompleks. Petunjuk :
gunakan struktur dan typedef.
Download