MODUL 1 PENGENALAN BAHASA C I. TUJUAN 1. Memahami lingkungan dasar C, IDE, serta cara meng-compile dan menjalankan program 2. Mampu membuat program sederhana menggunakan bahasa C untuk menampilkan kalimat atau string dan perhitungan arithmatika 3. Memahami dan dapat mengimplementasikan tipe data, value, operator dan sekuens dalam bahasa pemrograman. 4. Memahami dan dapat mengimplementasikan fungsi input dan output dalam C. II. LINGKUNGAN PEMROGRAMAN BAHASA C 1. Pengantar Akar dari bahasa C adalah BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Selanjutnya bahasa ini memberikan ide kepada Ken Thompson, yang kemudian mengembangkan bahasa yang disebut bahasa B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis Ricthie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah AT&T Bell Laboratories). Bahasa C pertama kali digunakan di computer Digital Equipment Corporation PDP- 11 yang menggunakan system operasi UNIX. C adalah bahasa standar, artinya suatu program ditulis dengan versi bahasa C tertentu akan dapat dikompilasi dengan versi bahasac yang lain dengan sedikit modifikasi. Kepopuleran C membuat versi-versi yang banyak untuk komputer mikro. Untuk menstandarisasikannya maka dibentuk komite pada tahun 1983 yang menetapkan standar ANSI untuk bahasa C. Hingga saat ini penggunaan bahasa C telah merata di seluruh dunia. Hampir semua perguruan tinggi di dunia menjadikan bahasa C sebagai salah satu mata kuliah wajib. Selain itu, banyak bahasa pemrograman populer seperti PHP dan Java menggunakan sintaks dasar yang mirip bahasa C Adapun Karakteristik Bahasa C yaitu: a. Bahasa C tersedia hampir di semua jenis Komputer b. Kode bahasa C sifatnya adalah Portabel (dapat digunakan di semua jenis komputer). c. Bahasa C hanya menyediakan sedikit kata-kata kunci d. Proses executable program lebih cepat e. Dukungan pustaka yang banyak f. Bahasa C adalah pemrograman yang terstruktur dan merupakan bahasa tingkat tinggi, namun dapat pula dikatakan sebagai bahasa tingkat menengah karena mempunyai kemampuan seperti bahasa low level(tingkat rendah). 1-1
2. Mengenal Environment Code::Blocks a. Installasi Code::Blocks Berikut merupakan langkah-langkah untuk installasi Code::Blocks. 1) Klik codeblocks-13.12mingw-setup.exe kemudian akan muncul tampilan berikut ini. Klik Next 2) License Agreement Gambar 1.1. Setup Wizard Klik I Agree Gambar 1.2. License Agreement 1-2
3) Pilih Komponen Klik Next 4) Pilih lokasi installasi Gambar 1.3. Type of Install Klik Install Gambar 1.4. Install Location 1-3
5) Proses Installasi Code::Blocks Gambar 1.5. Proses Installasi 6) Proses Installasi Selesai, dan Code::Blocks siap dijalankan. Klik Yes Gambar 1.6. Installasi Selesai dan Run Code::Blocks 1-4
7) Installasi Code::Blocks Selesai Klik Finish Gambar 1.7. Proses Installasi Code::Blocks Selesai b. MengCompile Dan Menjalankan Program Langkah-langkah untuk membuat file program C, meng-compile dan menjalankannya dengan Code::Blocks : 1) Buka program aplikasi Code::Blocks, maka akan muncul tampilan berikut ini. Klik Create a New Project Gambar 1.8. Wellcome Code::Blocks 1-5
2) Klik Create a new Project Pilih Console Application Klik Console application Gambar 1.9. Project Category Klik Next Gambar 1.10. Console Application 1 1-6
Pilih C Klik Next Gambar 1.11. Console Application 2 3) Simpan Project dengan nama (misalnya) Lat1 Lokasi Folder Nama Project Klik Next Gambar 1.12. Console Application 3 1-7
Klik Finish Gambar 1.13. Console Application 4 4) Code::Blocks secara otomatis akan membuatkan program sederhana untuk mencetak "Hello World!" ke layar. Lembar Kerja Gambar 1.14. Code:Blocks Simple Program 1-8
5) Compile program dengan menekan Ctrl-F9 6) Jalankan program dengan menekan F9 Gambar 1.15. Compile Program Gambar 1.16. Program Running 1-9
3. Dasar-Dasar Pemrograman C Suatu bahasa C ditulis dari beberapa elemen, antara lain: a. Pernyataan Satu atau beberapa ekspresi yang diakhiri dengan tanda titik koma (;). b. Blok Pernyataan Terdiri dari satu atau beberapa pernyataan yang diawali dengan tanda { dan diakhiri dengan tanda }. Blok pernyataan selalu diawali dengan suatu instruksi. c. Blok fungsi Terdiri dari satu atau beberapa pernyataan yang dirancang untuk melakukan proses tertentu. Blok fungsi dimulai dengan nama fungsi dan diikuti tanda () dan tanda { diakhiri tanda }. #include < file-file header> /* directive #include digunakan jika mengambil fungsifungsi library*/ main() /* fungsi utama sbg awal program */ { /*blok awal*/ pernyataan-pernyataan; } /*blok akhir*/ Fungsi-fungsi lain() { pernyataan-pernyataan; } Keterangan : Pemakaian #include pustaka (library) yang biasa digunakan, yaitu : conio.h Tampilan Layar : clrscr(), textcolor(), textbackground(), textattr(),dll. stdio.h standart input/output : clrscr(), printf(), scanf(), puts(), gets(), getch(),cprintf(), dll. stdlib.h standart library (akses file / stream) : fopen(), flose(), fread(), fwrite(), fprintf(), fscanf(), dll. alloc.h/malloc.h pengalokasian memori (memori dinamis) : malloc(), free(), calloc(), dll Pemakaian Escape Sequnce pada fungsi output (printf(),gets(),dll). Karakter Escape Sequence sering digunakan untuk menampilkan hasil output, seperti mengganti baris, membunyikan bel, dll). 1-10
III. VARIABEL 1. Tipe Data Ada 3 macam tipe data, yaitu: a. Tipe Data Dasar Tipe Kapasitas Memori Size (Range) Keterangan char 1 byte -128 s/d 127 Character int 2 byte -32768 s/d 32768 Integer (Bilangan) long 4 byte -21474386 s/d 21474386 Bilangan Bulat float 4 byte 3.4E-38 s/d 3.4+38 Real presisi tunggal double 8 byte 1.7E-308 s/d 1.7E+308 Real presisi ganda b. Tipe Data Majemuk Tipe data majemuk adalah tipe data yang merangkum berbagai tipe data lain. Tipe data majemuk ini akan menggunakan sintaks struct. c. Tipe Data Bentukan Tipe data bentukan diimplementasikan dengan sintaks typedef, yang berarti type definition (atau pendefinisian tipe baru). Rumus pendefinisian: typedef known_type new_type Contoh: Known_type adalah tipe yang sudah diketahui sebelumnya saat pendefinisian dibuat. Tipe dasar selalu dapat menjadi known_type. New_type adalah tipe baru yang terdefinisi. Setalah pendefinisian ini, new_type dapat dipakai selayaknya tipe. typedef int bulat; typedef struct(int a, int b) mytype; Maka bulat dan mytype adalah tipe baru Tabel penentu format data dalam C++ Kode Penentu Format Keterangan %c Menampilkan karakter %d atau %i Menampilkan bilangan integer bertanda dalam desimal %f Menampilkan bilangan float (pecahan) %g Menampilkan bilangan double (pecahan) %s Menampilkan karakter (string) %o Menampilkan bilangan integer tidak bertanda dalam oktal %X Menampilkan bilangan integer tidak bertanda dalam hexsadesimal %u Menampilkan bilangan tidak bertanda (unsigned) 1-11
2. Variabel Variabel merupakan suatu pengenal atau identifier yang digunakan untuk memberikan suatu nilai tertentu di dalam pemrograman. Nama variable ditentukan sendiri oleh programmernya. Variabel adalah representasi tempat penyimpanan dalam memori komputer bagi nilai dari sebuah tipe tertentu. Besar kecilnya tempat penyimpanan ini bergantung pada tipe value yang disimpan. Misalnya variabel untuk menyimpan value dari tipe double akan memerlukan ruang penyimpanan lebih besar daripada variabel yang digunakan untuk menyimpan integer karena double memiliki jangkauan nilai yang lebih besar dari integer. Setiap saat variable hanya dapat menyimpan SATU value saja. Penyimpanan value baru akan menindih value yang lama sehingga variabel hanya akan menyimpan value yang terakhir disimpan. Aturan dalam pendeklarasian variable : a. Variabel dapat dideklarasi dengan menggunakan gabungan huruf dan angka dengan syarat karakter pertama haruslah huruf. b. Variabel yang dideklarasi tidak boleh menggunakan spasi, apabila ingin menggunakan spasi lebih baik gunakan garis bawah(underscore). c. Variabel yang dideklarasi tidak boleh menggunakan simbol-simbol khusus seperti : $, &,?, <, dan sejenisnya. d. Panjang variable bebas, tetepi yang bisa dikenali hanyalah 31 karakter pertama. Apabila nama variable panjang sebaiknya disingkat, misalnya Nomor induk pegawai disingkat NIP. Contoh variable : nama, nim, alamat 3. Karakter Escape Dalam bahasa C++, juga terdapat karakter khusus yang disebut karakter escape: Karakter Keterangan \0 Karakter NULL (Tulisannya berupa \ dan angka nol) \a Karakter bel atau alert \b Karakter backspace (mundur satu spasi) \f Formfeed (ganti halaman) \n Linefeed (disebut juga newline atau pindah baris) \r Carriage return (menuju kolom pertama, baris yang sama) \t Tab horisontal \v Tab vertikal \\ Karakter \ \ Karakter petik tunggal \ Karakter petik ganda \? Karakter tanda tanya 1-12
4. Deklarasi a. Deklarasi Variabel Deklarasi variabel : Tipe_data nama_variabel; Tipe_data nama_variabel1, nama_variabel2; Contoh : No Deklarasi Arti Ilustrasi 1 int A; Memesan tempat dalam memori komputer ruang sebesar integer (4 byte) dan member nama tempat A penyimpanan itu sebagai A. 2 float C; Memesan tempat dalam memori komputer ruang sebesar float (4 byte) dan member nama tempat C penyimpanan itu sebagai C. 3 double D; Memesan tempat dalam memori komputer ruang A sebesar double (8 byte) dan member nama tempat penyimpanan itu sebagai D. b. Deklarasi konstanta Dalam bahasa C++, konstanta dideklarasikan menggunakan preprocessor #define. Contoh: #define phi 3.14 #define NIM 001 c. Deklarasi prosedur dan fungsi Akan dijelaskan di Modul Prosedur dan Fungsi. 5. Assigmnet Assignment adalah pengesetan suatu variabel dengan value tertentu. Boleh dikatakan bahwa suatu value dari suatu tipe tertentu diletakan ke tempat penyimpanan (memori komputer) yang bernama sesuai dengan variabel. Syarat assignment dapat dilakukan adalah bahwa variabel sudah dideklarasikan terlebih dahulu. Rumus assignment : variabel = value; Contoh : int a ; //deklarasi a = 2; //assignment Assignment dapat dilakukan berkali-kali, tetapi variabel hanya akan menyimpan yang terakhir, karena value sebelumnya akan tertindih Contoh assignment dari value yang berupa literal A = 2; Contoh assignment dari value yang berupa ekspresi A = 2 + 3; B= 3.14 * 10 * 10; 1-13
Contoh assignment dari value yang berupa variabel A = C; B= hargaberas; Contoh assignment dari value yang berupa fungsi A = kuadrat (9); B= sqrt(c) Catatan : Pengesetan suatu value kedalam suatu variabel (assignment) dapat juga terjadi melaluli piranti luar (misalnya keyboard). Kita dapat mengeset suatu variabel dengan suatu value tertentu yang kita masukan melalui keyboard. Untuk keperluan ini, gunakanlah fungsi scanf dari stdio.h Contoh : int A; scanf ("%d", &A); Ciri-ciri assignment a. Variabel sebelah kiri "sama dengan", dimaksudkan untuk diubah/diset/diisi. Jadi setelah assignment, maka variabel tersebut haruslah menjadi jelas isinya. b. Value sebelah kanan "sama dengan " tidak berubah. Inisialisasi Inisialisasi adalah sebuah assignment yang dilakukan pertama kali setelah sebuah variabel dideklarasikan Contoh : int a; //deklarasi a=2; //inisialisasi (yang juga disebut assignment) 6. Sekuens Runtunan (sequence) adalah sederatan intuksi primitif dan/aksi yang akan dilaksanakan (dieksekusi) oleh komputer berdasarkan urutan penulisannya. Ada sequence yang jika diubah urutan intruksi/aksinya akan mempengaruhi eksekusi program, dan ada sequence yang jika diubah urutan intruksi/aksinya akan tetap menghasilkan hasil yang sama. Algoritma merupakan runtunan (sequence) satu atau lebih intruksi, yang berarti bahwa : a. Tiap instruksi dikerjakan satu persatu. b. Tiap instruksi dilaksakan satu kali c. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan aksi sebagaimana tertuli didalam algoritma. Dari kiri ke kanan dan dari atas ke bawah. d. Akhir dari instruksi terakhir merupakan akhir dari algoritma 1-14
Urutan didalam algoritma sangat penting. Urutan instruksi yang berbeda mungkin akan dapat menghasilkan hasil yang berbeda pula. Contoh a. int var1; int var2; int var3; var1=5; var2=10 var3=var1+var2 prinf ("%d",var3); Hasil : var3 = 15 b. int A, B; A=10; A=2*A+3 B=A; prinf ("%d",b); Hasil : B = 23 7. Operator Operator merupakan intruksi khusus yang dikenai untuk variable. Ada beberapa jenis operator, yaitu : a. Operator Penugasan (Assignment Operator) Operator penugasan dalam bahasa C++ berupa tanda sama dengan atau =. Contoh : nilai = 70, A = x * y b. Operator Aritmatika Operator Aritmatika merupakan operator yang digunakan untuk fungsi/operasi matematika, operator aritmatika dasar untuk C++ dan tanpa proses include : * : untuk perkalian / : untuk pembagian % : untuk sisa hasil bagi (modulus) + : untuk penjumlahan - : untuk pengurangan Operator Aritmatika yang menggunakan file header math.h seperti berikut : pow(a,b) : untuk pemangkatan max() : untuk mencari nilai maximal min() : untuk mencari nilai minimum sqrt() : untuk menghitung akar suatu bilangan 1-15
c. Operator Perbandingan Operator pembanding digunakan untuk membandingkan antara dua buah variabel. Operator pembanding sering pada saat pengecekan atau statemen if, perulangan atau statemen for, while, do while. Tapi sekarang kita akan membahas dasar penggunaannya dulu. Operator pembanding yang sering digunakan adalah sebagai berikut : d. Operator Logika Operator logika merupakan operator yang membandingkan hubungan antara dua hasil dari operasi pembanding. Operator logika membandingkan logika hasil dari dua operasi pembanding dan akan melakukan operasi khusus apabila bernilai benar dan apabila bernilai salah maka akan melakukan sebaliknya. Operator yang digunakan dalam operasi logika ada tiga yaitu : 1-16
e. Operator Bitwise Operator bitwise dalam bahasa C++ : << : Pergeseran bit ke kiri >> : Pergeseran bit ke kanan & : Bitwise AND ^ : Bitwise XOR (exclusive OR) : Bitwise OR ~ : Bitwise NOT f. Operator Unary Operator Unary merupakan operator yang hanya membutuhkan satu operand saja. Dalam bahasa C++ terdapat beberapa operator unary, yaitu : IV. INPUT DAN OUTPUT 1. Fungsi INPUT yaitu fungsi untuk memasukkan data a. Fungsi Input dalam #include <stdio.h> 1) Fungsi scanf() Fungsi pustaka scanf() digunakan untuk menginput data berupa data numerik, karakter dan string secara terformat. Hal-hal yang perlu diperhatikan dalam pemakaian fungsi scanf() : 1. Fungsi scanf() memakai penentu format 2. Fungsi scanf() memberi pergantian baris secara otomatis 3. Fungsi scanf() tidak memerlukan penentu lebar field 4. Variabelnya harus menggunakan operator alamat & Kode penentu format : 1. %c : Membaca sebuah karakter 2. %s : Membaca sebuah string 3. %i, %d : Membaca sebuah bilangan bulat (integer) 1-17
4. %f, %e : Membaca sebuah bilangan pecahan (real) 5. %o : membaca sebuah bilangan octal 6. %x : Membaca sebuah bilangan heksadesimal 7. %u : Membaca sebuah bilangan tak bertanda 2) Fungsi gets() Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan tidak dapat digunakan untuk memasukkan data numerik. 3) Fungsi getchar() Fungsi getchar() digunakan untuk membaca data yang bertipe karakter. 4) Fungsi getch() dan getche() Fungsi getch() dan getche() digunakan untuk membaca data karakter. Karakter yang dimasukkan tidak perlu diakhiri dengan penekanan tombol enter. Kedua fungsi tersebut tidak memberikan efek pergantian baris secara otomatis. Jika menggunakan fungsi getch() karakter yang dimasukkan tidak akan ditampilkan pada layer sehingga sering digunakan untuk meminta inputan berupa password. Sedangkan pada getche() karakter yang dimasukkan akan ditampilkan pada layar. b. Fungsi Input dalam #include <iostream.h> 1) Format: cin >> var Fungsi cin>> digunakan untuk menginput data berupa data numeric, karakter dan string. Var dapat lebih dari satu variable (cin>>var2>>var2) dan juga bisa berupa karakter. 2) Fungsi getch() dan getche() Fungsi ini sama dengan fungsi jika menggunakan #incluse <stdio.h> 3) Format: cin.get (var, sizeof(var)) Penggunaan format ini untuk membaca/menginput string lebih dari satu kata, tetapi akan mengakibatkan kesalahan jika dalam satu program menggunakan perintah ini lebih dari satu kali. Untuk permasalahan ini, lebih baik menggunakan format: cin.getline(). 4) Format: cin.getline (var, sizeof(var)) 2. Fungsi OUTPUT yaitu fungsi untuk menampilkan data a) Fungsi Output dalam #include <stdio.h> 1) Fungsi printf() Fungsi printf() digunakan untuk menampilkan semua jenis data (numeric dan karakter). 2) Fungsi puts() Fungsi puts() digunakan untuk menampilkan data string dan secara otomatis akan diakhiri dengan perpindahan baris. 1-18
3) Fungsi putcher() Fungsi putchar() digunakan untuk menampilkan sebuah karakter. Untuk mengatur tampilan bilangan pecahan (float) dapat dilakukan dengan format: printf( %m.nf, argument); printf( %8.2f, rata2) m : menyatakan panjang range n : menyatakan jumlah digit di belakang koma. argument : nilai atau variable yang akan ditampilkan. b) Fungsi Output dalam #include <iostream.h> 1) Format: cout >> var atau cout>>konstanta Fungsi cout << dapat digunakan untuk menampilkan semua jenis data (numeric dan karakter) yang dapat berupa nilai, karakter ataupun konstanta. c) Fungsi Output dalam #include <iomanip.h> 1) Format: cout >> setprecision(n) Fungsi tersebut adalah fungsi untuk mengatur presisi bilangan pecahan. Dimana n adalah jumlah digit presisi yang ditampilkan. 3. Manipulator dalam C++ Manipulator Fungsi endl End line, identik dengan\n kursor pindah ke posisi awal berikutnya ends Menyisipkan karakter Null flush Mencetak isi buffer dec hex oct Setbase(n) Setw(n) Setfill Setprecision (n) Setioflags(lf) Resetiosflag (lf) Mengkonversi kebilangan decimal Mengkonversi kebilangan hexadecimal Mengkonversi kebilangan octadecimal Mengkonversi kebilangan berbasis n Mengatur lebar cetakan selebar n Mengisi leading field dengan karakter c Membuat lebar decimal point = n Men-set format yang diatur dengan tanda format ios Men-set format yang diset oleh setioflagss 1-19
V. GUIDED 1. Menampilkan Welcome to C #include <stdio.h> #include <stdlib.h> int main() { printf("hello World!!! \n"); printf("saya lagi belajar bahasa C"); return 0; } 2. Menampilkan Variabel #include <stdio.h> #include <stdlib.h> int main() { int x; float y; x = 2; y = 4.75; printf("nilai X : %i\n",x); printf("nilai Y : %f\n",y); return 0; } 3. Menampilkan perhitungan luas persegi panjang #include <stdio.h> #include <stdlib.h> int main() { int panjang, lebar, luas; printf("masukan Panjang :"); scanf("%i",&panjang); printf("masukan Lebar :"); scanf("%i",&lebar); luas = panjang * lebar; printf("luas : %i\n",luas); return 0; } 1-20
4. Memasukkan dan menampilkan data dengan berbagai tipe #include <stdio.h> #include <stdlib.h> int main() { int jumlah; char nim[10]; float nilai; printf ("Masukan sebuah bilangan bulat :"); scanf ("%d", &jumlah); /* membaca sebuah bilangan bulat */ printf ("Masukan sebuah nim anda :"); scanf ("%s", &nim); /* membaca sebuah string */ printf ("Masukan sebuah bilangan pecahan :"); scanf ("%f", &nilai); /* membaca sebuah bilangan float*/ printf ("\n Nilai variabel yang anda masukan adalah :\n"); printf("jumlah = %d", jumlah); printf("\nnim = %s", nim); printf("\nnilai = %f", nilai); return 0; } VI. UNGUIDED 1. Buatlah sebuah program untuk mengkonversi suhu Farenheit menjadi Celcius. 2. Buatlah sebuah program untuk menghitung luas dan volume sebuah prisma persegi panjang. Volume prisma persegi panjang = luas alas * tinggi Luas permukaan prisma = (2 * luas alas) + (keliling alas * tinggi prisma) 3. Buatlah program dalam C untuk menginput dan menampilkan biodata pribadi seseorang yang terdiri dari nama, tempat, tanggal lahir, alamat, nomor telepon, agama, dan jenis kelamin.. 4. Buatlah program dalam C untuk menentukan bilangan terbesar dari 2 buah bilangan. Gunakan sintaks printf() dan scanf(). 1-21