EXTRA : "Konsep Dasar Pemrograman Bahasa C (Bagian : I)" Dasar untuk pemrograman lebih lanjut yang berbasis C diterbitkan "ikankumati1" onLINE A. PENDAHULUAN Salam Sejahtera. Pada bagian INTRO telah kami singgung tentang pengenalan tentang C. Pada bagian EXTRA ini kita akan bahas secara detail tentang bahasa C. Sebelum kita pelajari lebih jauh tentang bahasa C, alangkah baiknya kita kenal tentang sejarah bahasa C itu sendiri lebih dahulu. Bahasa C adalah dari bahasa BCPL, yang dikembangkang oleh Martin Ricard pada tahun 1967. Bahasa ini memberikan ide kepada Thomson yang kemudian mengembangkan bahasa yang disebut dengan B pada tahun 1970. Selanjutnya dari bahasa B dikembangkan bahasa C oleh Dennis Ricthie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. Dan pertama kali digunakan di komputer Digital Equipment Corporation yang menggunakan sistem UNIX. Struktur Program C Untuk dapat memahami bagaimana suatu program ditulis, maka struktur dari program harus dimengerti terlebih dahulu. Struktur dari program C dapat dilihat sebagai kumpulan dari sebuah atau lebih fungsi-fungsi. Berikut ini adalah stuktur dari program C main() { statemen-statemen } Fungsi_Fungsi_Lain() { statemen-statemen } B. KONSEP TYPE DATA Bahasa C menyediakan lima macam tipe data dasar, yaitu tipe data integer (nilai numerik bulat yang dideklarasikan dengan int), floating-point (nilai numerik pecahan ketepatan tunggal yang dideklarasikan dengan float), double-precision (nilai numerik pecahan ketepatan ganda yang dideklarasikan dengan double), karakter (dideklarasikan dengan char), dan kosong (dideklarasikan dengan void) Data Types ____________ Type ¦ Length ¦ Range ---------------+---------+----------------------------------------- unsigned char ¦ 8 bits ¦ 0 to 255 char ¦ 8 bits ¦ -128 to 127 enum ¦ 16 bits ¦ -32,768 to 32,767 unsigned int ¦ 16 bits ¦ 0 to 65,535 short int ¦ 16 bits ¦ -32,768 to 32,767 int ¦ 16 bits ¦ -32,768 to 32,767 unsigned long ¦ 32 bits ¦ 0 to 4,294,967,295 long ¦ 32 bits ¦ -2,147,483,648 to 2,147,483,647 float ¦ 32 bits ¦ 3.4 * (10**-38) to 3.4 * (10**+38) double ¦ 64 bits ¦ 1.7 * (10**-308) to 1.7 * (10**+308) long double ¦ 80 bits ¦ 3.4 * (10**-4932) to 1.1 * (10**+4932) ---------------+---------+----------------------------------------- Konstanta adalah suatu nilai yang tidak berubah selama proses dari program. Misalnya suatu statemen ungkapan sebagai berikut - Fahrenheit=Celcius*1.8+32; Celcius dan Fahrenheit adalah variabel yang nilainya dapat berubah selama proses program. Nilai Celcius dapat berubah tergantung dari nilai yang dimasukkan sebagai input data dan nilai Fahrenheit akan berubah tergantung nilai dari Celcius. Nilai 1.8 dan 32 sebaliknya tidak akan pernah berubah di dalam proses program, karena nilai-nilai ini adalah nilai-nilai konstanta. Variabel adalah suatu pengenal yang digunakan untuk mewakili suatu nilai tertentu di dalam proses program. Misalnya X=10, X adalah nama variabel dan 10 adalah konstanta nilai dari variabel. Semua variabel yang akan di gunakan di program C harus dideklarasikan terlebih dahulu. Berikut ini adalah contoh untuk mendeklarasikan beberapa variabel. int X,Y,Nilai; float Hasil; unsigned char Huruf; unsigned long int Nomor_Cek; double Penjualan_Pajak; C. OPERATOR Operator atau tanda operasi adalah suatu tanda atau simbol yang digunakan untuk suatu operasi tertentu. C.1 Operator ARITMATIKA ___________ Operator ¦ Maksud -------------------+-------------------------------------------- * ¦ Perkalian / ¦ Pembagian % ¦ Pembagian modulus (pembagian sisa) - ¦ Pengurangan + ¦ Pertambahan -------------------+-------------------------------------------- Contoh Program #include main() { int X,Y; float Z; X=7; Y=3; Z=X/Y; printf("Nilai Z=%f",Z); } C.2 Operator UNARY ______________ Operator ¦ Maksud -------------------+---------------------------------------------- - ¦ Unary minus ++ ¦ Peningkatan dengan penambahan nilai 1 -- ¦ Penurunan dengan pengurangan nilai 1 (type) ¦ Cast sizeof ¦ Ukuran dari operand dalam byte ! ¦ Unary NOT & ¦ Menghasilkan alamat memory operand * ¦ Menghasilkan nilai pengenal dialamatnya ~ ¦ Komplemen satu -------------------+---------------------------------------------- Keterangan Operator Unary minus : Digunakan untuk memberi nilai minus suatu nilai numerik (bukan untuk pengurangan). Misalnya ungkapan A+-B*C akan dartikan sebagai A+(-B)*C. Penulisan A--B*C berarti A-(-B)*C Operator ++ dan -- : Operator ini banyak dijumpai di statemen perulangan yang berbentuk sebagai berikut : for(i=1;i<=10;i=i+1) dapat ditulis dengan operator ++ sebagai berikut : for(i=1;i<=10;i++) Operator ++ dan -- yang digunakan di suatu ungkapan akan berarti lain jika ditulis sebelum atau sesudah operandnya. Contoh X=5; A=X++; Hasil X=6 dan A=5 X=5; A=++X; Hasil X=6 dan A=6 C.3 Operator PENGERJAAN digunakan untuk memindahkan nilai dari suatu ungkapan ke suatu pengenal. ____________ ¦ Operator ¦ Contoh ¦ Maksud ¦ + ---------------+----------------------+----------------------------+ ¦ = ¦ A=B+C ¦ Mengerjakan B+C ke A | ¦ += ¦ A+=1 ¦ A=A+1 | ¦ -+ ¦ A-+B ¦ A=A+B | ¦ *= ¦ A*=B ¦ A=A*B | ¦ /= ¦ A/=B ¦ A=A/B | ¦ %= ¦ A%=B ¦ A=A%B | +================+======================+============================+ Contoh : Misalnya variabel I dan J adalah variabel-variabel type integer dengan nilai awal keduanya adalah 10. Maka I+=3; artinya : I=I+3; I=10+3; I=13; I/=J-8; artinya : I=I/(J-8); I=10/(10-8); I=5; dan seterusnya. C.4 Operator HUBUNGAN digunakan untuk menunjukkan hubungan antara dua buah operand ______________ Operator ¦ Maksud -------------------+---------------------------------------------- < ¦ Lebih kecil dari <= ¦ Lebih kecil atau sama dengan > ¦ Lebih besar dari >= ¦ Lebih besar atau sama dengan == ¦ Sama dengan != ¦ Tidak sama dengan -------------------+---------------------------------------------- Operator hubungan banyak digunakan untuk penyeleksian kondisi dengan statemen if, do-while atau while. C.5 Operator LOGIKA digunakan untuk membandingkan logika hasil dari operator-operator hubungan. _____________ Hubungan LOGIKA X ¦ Y ¦ X&&Y ¦ X||Y ¦ !X ----------+---------+-------------+-----------+------------------ 0 ¦ 0 ¦ 0 ¦ 0 ¦ 1 0 ¦ 1 ¦ 0 ¦ 1 ¦ 1 1 ¦ 0 ¦ 0 ¦ 1 ¦ 0 1 ¦ 1 ¦ 1 ¦ 1 ¦ 0 ==========+=========+=============+===========+================== D. MENAMPILKAN HASIL Untuk menampilkan hasil adalah semua prosesnya dilakukan oleh fungsi-fungsi. Fungsi-fungsi ini prototypenya berada di file header stdio.h dan conio.h, seperti putchar(), puts(), printf(), dan fprintf(). Contoh Listing Program : _ File Edit Search Run Compile Debug Project Options Window Help +-[_]------------------------------ NONA.CPP ----------------------------2-[]-+ ¦#include  ¦#include _ ¦main() _ ¦{ _ ¦ int Pilih; _ ¦ _ ¦ clrscr(); //membersihkan layar monitor _ ¦ gotoxy(20,5); printf("<<>>"); _ ¦ gotoxy(20,8); printf("1. Chart of Account"); _ ¦ gotoxy(20,9); printf("2. Journal"); _ ¦ gotoxy(20,10);printf("3. Posting ke Buku Besar"); _ ¦ gotoxy(20,11);printf("4. Laporan Keuangan"); _ ¦ gotoxy(20,12);printf("0. Selesai"); _ ¦ gotoxy(20,15);printf("Pilih Nomor(0-4)"); _ ¦ scanf("%d",&Pilih); _ ¦} _ ¦ _ ¦  +------ 14:27 ----__________________________________________________________-+ F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt-F9 Compile F9 Make F10 Menu Jika program tersebut dijalankan maka dilayar monitor akan tampil sebagai berikut <<>> 1. Chart of Account 2. Journal 3. Posting ke Buku Besar 4. Laporan Keuangan 0. Selesai Pilih Nomor(0-4) Kode-kode format untuk fungsi printf(); %c : Menampilkan sebuah karakter %s : Menampilkan nilai string %d : Menampilkan nilai desimal integer %f : menampilkan nilai pecahan Contoh : #include main() { int X=123; float Y=123.4567; printf("%d",X); printf("%f",Y); } E. MENGENDALIKAN PROSES PROGRAM Untuk program yang sederhana, proses berurutan memang banyak dijumpai. Akan tetapi untuk program yang komplek, proses yang ada tidak hanya berurutan. Selain proses berurutan proses yang dapat terjadi adalah penyeleksian kondisi, proses pengula ngan dan proses lompatan. E.1 Penyeleksian Kondisi Statemen if Statemen if mempunyai beberapa variasi bentuk. a. Bentuk if Tunggal Sederhana Sintak dari bentuk if tunggal sederhana adalah sebagai berikut : if(kondisi)statemen Contoh : #include main() { int JumlahAnak; float GajiKotor,Tunjangan,PersenTunjangan=0.2; printf("GajiKotor ?"); scanf("%f",&GajiKotor); printf("Jumlah Anak ?"); scanf("%d",&JumlahAnak); if(JumlahAnak>2)PersenTunjangan=0.3; Tunjangan=PersenTunjangan*GajiKotor; printf("\nBesarnya Tunjangan=Rp %10.2f\n",Tunjangan); } b. Bentuk if Tunggal Blok Statemen Contoh : #include main() { int JumlahAnak; float GajiKotor,Tunjangan; float PersenTunjangan=0.2; float PersenPotongan=0.05; printf("GajiKotor ?"); scanf("%f",&GajiKotor); printf("Jumlah Anak ?"); scanf("%d",&JumlahAnak); if(JumlahAnak>2) { PersenTunjangan=0.3; PersenPotongan=0.07; } Tunjangan=PersenTunjangan*GajiKotor; Potongan=PersenPotongan*GajiKotor; printf("\nBesarnya Tunjangan=Rp %10.2f\n",Tunjangan); printf("\nBesarnya Potongan=Rp %10.2f\n",Potongan); } c. Bentuk if-else Sintak dari bentuk statemen if-else adalah sebagai berikut ini : if(kondisi)statemen; else statemen; Contoh : #include main() { float A,B; printf("Masukkan nilai a ?");scanf("%f",&A); printf("Masukkan nilai b ?");scanf("%f",&B); printf("\n"); if(B==0) printf("%f dibagi dengan 0 adalah TAK BERHINGGA\n",A); else printf("%f dibagi dengan %f adalah %f\n",A,B,A/B); } d. Bentuk if-else if ..... else Sintak dari bentuk ini adalah sebagai berikut : if(kondisi 1) statemen; else if(kondisi 2) statemen; else if(kondisi 3) statemen; . . . else statemen; Keterangan Penyeleksian dimulai dari kondisi 1, jika kondisi ini dipenuhi maka statemen yang mengikuti akan diproses dan penyeleksian dihentikan. Jika kondisi 1 tidak benar maka penyeleksian ke kondisi 2 begitu seterusnya. Contoh Listing Program: #include #include #include main() { float A,B,C,D,X1,X2; clrscr(); printf("Masukkan nilai a ?");scanf("%f",&A); printf("Masukkan nilai b ?");scanf("%f",&B); printf("Masukkan nilai c ?");scanf("%f",&C); printf("\n"); //menghitung nilai determinan D=B*B-4*A*C; if(D==0) { X1=-B/(2*A); printf("Dua akar riel kembar\n"); printf("X1=X2=%f\n",X1); } else if(D>0) { X1=(-B+sqrt(D))/(2*A); X2=(-B-sqrt(D))/(2*A); printf("Dua akar riel berlainan\n"); printf("X1=%f\n",X1); printf("X2=%f\n",X2); } else if(D<0) { X1=-B/(2*A); X2=sqrt(-D)/(2*A); printf("Dua akar riel berlainan\n"); printf("X1=%f\n",X1); printf("X2=%f\n",X2); } getch(); } Jika program diatas dijalankan : Masukkan nilai a ?4 Masukkan nilai b ?4 Masukkan nilai c ?1 Dua akar riel kembar X1=X2=-0.500000 Statemen switch Sintak dari statemen switch adalah sebagai berikut : switch(kondisi){ case konstanta1: statemen-statemen; break; case konstata2: statemen-statemen; break; . . default: statemen-statemen; } Keterangan Statemen switch akan menyeleksi kondisi yang diberikan dan kemudian membandingkan hasilnya dengan konstanta-konstanta yang berada di case. Pembandingan akan dimulai dari konstanta1 sampai dengan konstanta terakhir. Jika hasil dari kon- disi sama dengan nilai konstanta tertentu, misalnya konstanta2, maka statemen-statemen yang ada di case konstanta2 akan diproses sampai ditemui statemen break yang akan membawa proses keluar dari penyeleksian switch. Contoh Aplikasi : #include #include main() { int Pilih; float Sisi, Jari, Tinggi; clrscr(); printf("<>\n"); printf("\n"); printf("1. Menghitung Isi Kubus\n"); printf("2. Menghitung Luas Lingkaran\n"); printf("3. Menghitung Isi Silinder\n"); printf("\n"); printf("Pilih Nomor(1-3) ?"); scanf("%d",&Pilih); printf("\n"); switch(Pilih){ case 1: printf("Panjang sisi Kubus ?"); scanf("%f",&Sisi); printf("Isi Kubus=%f\n",Sisi*Sisi*Sisi); break; case 2: printf("Jari-jari Lingkaran ?"); scanf("%f",&Jari); printf("Luas Lingkaran=%f\n",3.14*Jari*Jari); break; case 3: printf("Jari-Jari Lingkaran ?"); scanf("%f",&Jari); printf("Tinggi Silinder ?"); scanf("%f",&Tinggi); printf("Isi Silinder=%f\n",3.14*Jari*Jari*Tinggi); break; } getch(); } Hasil dari program diatas <> 1. Menghitung Isi Kubus 2. Menghitung Luas Lingkaran 3. Menghitung Isi Silinder Pilih Nomor(1-3) ?3 Jari-Jari Lingkaran ?2 Tinggi Silinder ?4 Isi Silinder=50.240000 E.2 PERULANGAN Misal akan dibuat tampilan "Selamat Pagi Indonesia" sebanyak 20 kali. Tampilan-tampilan ini dapat dibuat dengan menggunakan fungsi printf() sebanyak 20 kali, tapi program semacam ini tidak efisien. Proses berulang-ulang ini disebut dengan proses PERULANGAN. Akan lebih praktis jika dilakukan dengan statemen perulangan. Statemen-statemen yang dapat digunakan adalah for, while, dan do-while. Statemen for Statemen for mempunyai bentuk umum sebagai berikut : for(Awal;Akhir;Peningkatan)statemen; Keterangan : Awal adalah suatu ungkapan yang memeberikan nilai awal suatu variabel untuk perulangannya (misal i=0). Akhir adalah suatu ungkapan yang menunjukkan suatu kondisi yang harus dipenuhi supaya perulangan masih dapat terus dilakukan (misalnya i<=20 berarti perulangan akan tetap terus dilakukan selama nilai variabel i masih lebih kecil atau sama dengan 20). Peningkatan adalah suatu ungkapan yang merubah nilai-nilai variabel pengontrol perulangan seetiap saat perulangan dilakukan (misal i++ berarti nilai i ditambah dengan 1 setiap saat perulangan dilakukan) Contoh Aplikasi #include #include main() { int i; clrscr(); for(i=0;i<=5;i++) printf("selamat pagi Indonesia\n"); getch(); } Jika program ini dijalankan : selamat pagi Indonesia selamat pagi Indonesia selamat pagi Indonesia selamat pagi Indonesia selamat pagi Indonesia selamat pagi Indonesia Berikut ini akan diberikan beberapa contoh prulangan dengan statemen for dan variasinya 1. Perulangan Positif merupakan perulangan yang peningkatannya positif untuk variabel pengontrol perulangannya (misal i++) Contoh : #include main() { int i; for(i=-2;i<=3;i++)printf("%d\n",i); } Keterangan : Program diatas variabel i dimulai dari -2 dan perulangan dihentikan setelah nilai 3 dengan peningkatan nilai 1, sehingga variabel akan bernilai -2,-1,0,1,2, dan 3. Contoh : #include main() { int i; for(i=0;i<=10;i+=3)printf("%d\n",i); } Keterangan : Program diatas dimulai dari i=0 dan diakhiri nilai i<=10 dengan peningkatan 3 2. Perulangan Negatip Contoh : #include main() { int i; for(i=5;i<=0;i--)printf("%d\n",i); } 3. Perulangan dengan Blok Statemen Perulangan dengan blok statemen memungkinkan sejumlah statemen di dalam blok diproses berulang-ulang Contoh : #include #include main() { int i,n; float x,rata,total=0; clrscr(); //menanyakan banyak dari data printf("Banyaknya Data ?"); scanf("%d",&n); printf("\n"); //memasukkan masing-masing data dari nilai i=1 ke i=n for(i=1;i<=n;i++) { printf("Data ke %3d ?",i); scanf("%f",&x); total=total+x; } rata=total/n; printf("\n"); printf("Banyaknya Data =%3d\n",n); printf("Total Nilai Data =%f\n",total); printf("Rata-rata Nilai Data =%f\n",rata); getch(); } Jika program ini dijalankan : Banyaknya Data ?3 Data ke 1 ?2 Data ke 2 ?3 Data ke 3 ?3 Banyaknya Data = 3 Total Nilai Data =8.000000 Rata-rata Nilai Data =2.666667 Keterangan : Banyaknya perulangan adalah sebanyak n kali dan n adalah banyaknya data. 4. for tanpa nilai awal Nilai awal dari variabel perulangan tidak harus ada di statemen for, tetapi dapat ditentukan sebelum statemen ini Contoh : #include #include main() { int i; clrscr(); i=3; for(;i<=5;i++) printf("%d\n",i); getch(); } 5. for tanpa peningkatan Contoh : #include #include main() { int i; clrscr(); for(i=1;i<=5;) { printf("%d\n",i); i++; } getch(); } 6. Perulangan tanpa nilai awal, akhir, dan peningkatan Contoh : #include #include main() { int i; clrscr(); for(;;) printf("Perulangan tanpa berhenti\n",i); getch(); } Statemen while Bentuk umum dari statemen while adalah sebagai berikut : while(kondisi)statemen; Proses perulangan akan dilakukan jika kondisi yang diseleksi di statemen while masih bernilai benar, dan perulangan akan dihentikan jika kondisinya sudah bernilai salah. Contoh : #include #include #include main() { int i; clrscr(); printf("*** TABEL SINUS DAN COSINUS DALAM SATUAN DERAJAT ***\n"); printf("%5s%12s%12s\n"," X"," Sinus(X)"," Cosinus(X)"); printf("%5s%12s%12s\n","----","---------","-----------"); i=0; while(i<=360) { printf("%3d %11.5f %11.5f\n",i,sin(i/57.2958),cos(i/57.2958)); i+=30; } getch(); } Hasil : *** TABEL SINUS DAN COSINUS DALAM SATUAN DERAJAT *** X Sinus(X) Cosinus(X) ---- --------- ----------- 0 0.00000 1.00000 30 0.50000 0.86603 60 0.86603 0.50000 90 1.00000 0.00000 120 0.86603 -0.50000 150 0.50000 -0.86602 180 0.00000 -1.00000 210 -0.50000 -0.86603 240 -0.86602 -0.50000 270 -1.00000 -0.00000 300 -0.86603 0.50000 330 -0.50000 0.86602 360 -0.00000 1.00000 Statemen do-while Bentuk umum dari perulangan ini adalah : do statemen while(kondisi); Perbedaan utama antara statemen do while dengan statemen while adalah letak kondisi yang akan diseleksinya. Untuk while kondisi yang diseleksi terletak di awal lingkup perulangan while, kondisinya harus benar dahulu. Contoh : #include #include #include main() { int i,x; printf(" X 1/X X^2 X^3\n"); printf("---------------------------\n"); x=1; do { printf("%5d %8.5f",x,1.0/x); i=2; do { printf("%8.0f",pow(x,i)); i++; }while(i<=3); printf("\n"); x++; }while(x<=10); getch(); } Hasil : X 1/X X^2 X^3 ----------------------------- 1 1.00000 1 1 2 0.50000 4 8 3 0.33333 9 27 4 0.25000 16 64 5 0.20000 25 125 6 0.16667 36 216 7 0.14286 49 343 8 0.12500 64 512 9 0.11111 81 729 10 0.10000 100 1000 to be continue ; auth : kamesywara file : extraC1.txt ref : C date : august, 2003