Bahasa Pemrograman C/C++ SAHID CHESTERLIZER
Perkembangan Bahasa Sebelum melangkah lebih jauh ada baiknya kita review perkembangan bahasa pemrograman
1. Bahasa Mesin (Mnemonic Code) Bahasa mesin adalah bahasa yang berisi kode-kode mesin yang hanya dapat diinterpretasikan langsung oleh mesin komputer. Bahasa ini merupakan bahasa level terendah dan berupa kode numerik 0 dan 1. Sekumpulan instruksi dalam bahasa Keuntungan: Eksekusi cepat Kerugian: Sangant sulit dipelajari manusia
2. Bahasa Assembly Bahasa assembly adalah bahasa simbol dari bahasa mesin. Setiap kode bahasa mesin memiliki simbol sendiri dalam bahasa assembly. Misalnya ADD untuk penjumlahan, MUL untuk perkalian, SUB untuk pengurangan, dan lain-lain. Kelebihan: Eksekusi cepat, masih bisa dipelajari daripada bahasa mesin, file kecil Kekurangan: Tetap sulit dipelajari, program sangat panjang.
3. Bahasa Tingkat Tinggi (High Level Language) Bahasa tingkat tinggi adalah bahasa pemrograman yang lebih tinggi daripada bahasa assembly. Bahasa ini lebih dekat dengan bahasa manusia. Bahasa inilah yang akan dibahas pada matakuliah ini. Bahasa ini juga memberikan banyak sekali fasilitas kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain- lain. Contoh: Pascal, Basic, C++, dan Java. Keuntungan: Mudah dipelajari Mendekati permasalahan yang akan dipecahkan Kode program pendek Kerugian: Eksekusi lambat Bahasa generasi ini disebut juga bahasa generasi ke-3 (3rd Generation Programming Language). Bahasa inilah yang akan kita pelajari dalam Dasar Pemrograman
4. Bahasa yang berorientasi pada masalah spesifik (specific problem oriented). Bahasa ini adalah bahasa yang digunakan langsung untuk memecahkan suatu masalah tertentu. Misalnya SQL untuk database, Regex untuk mencocokkan pola string tertentu. Bahasa ini juga masuk ke bahasa tingkat tinggi. Bahasa ini disebut juga bahasa generasi ke-4 (4th Generation Programmming Language).
Mengenal C/C++ C/C++ adalah bahasa pemrograman tingkat menengah yang dirancang oleh Dennis M Ritchie di Bell Laboratories pada tahun 1972. Pada tahun 1978 Dennis dan Brian W. Kernighan mempublikasikan bahasa C melalui The C Programming Language. Kemudian C distandarisasi ANSI tahun 1989. Bahasa C adalah bahasa yang general, tidak dikhususkan untuk suatu bidang/aplikasi tertentu.
Contoh Program dalam C #include <stdio.h> #include <conio.h> void main(){ clrscr(); char nama[20]; int umur; printf( Hallo Selamat Belajar C ); printf( Masukkan nama : ); scanf( %s,nama); printf( Masukkan umur: ); scanf( %d,&umur); printf( Anda bernama : %s dan berumur %d,nama,umur); Preparation (Pemberian nilai awal suatu variabel) Call (Memanggil suatu prosedur / fungsi) Titik connector yang berada di halaman yang sama Titik konektor yang berada di halaman lain if(umur < 20){ for(int i=0;i<umur;i++) printf( %d\n,i); printf( Anda masih muda\n ); } else if(umur > 50){ printf( Anda sudah berumur!\n ); } else printf( Lainnya\n ); getch(); }
Tipe data yang didukung oleh C Type Length Range unsigned char 8 bits 0 to 255 char 8 bits -128 to 127 short int 16 bits -32,768 to 32,767 unsigned int 32 bits 0 to 4,294,967,295 int 32 bits -2,147,483,648 to 2,147,483,647 unsigned long 32 bits 0 to 4,294,967,295 enum 16 bits -2,147,483,648 to 2,147,483,647 long 32 bits -2,147,483,648 to 2,147,483,647 float 32 bits 3.4 x 10-38 to 3.4 x 10+38 double 64 bits 1.7 x 10-308 to 1.7 x 10+308 long double 80 bits 3.4 x 10-4932 to 1.1 x 10+4932 near (pointer) 32 bits not applicable far (pointer) 32 bits not applicable
Deklarasi Tipe Data Variabel Deklarasi tipe data variabel di C dan C# dalam bentuk umum: <tipe data> <nama_variabel>;
Deklarasi Tipe Data Konstanta Deklarasi konstanta di C: #define <nama_konstanta> <nilai> Contoh : #define pi 3.14; #define nama Anton ; Tanda # disebut sebagai Prepocessor Directive, yaitu instruksi yang dilakukan sebelum eksekusi program utama dilakukan.
Sifat Data Karakter di C: Karakter disimpan dalam memori berupa kode ASCII. ASCII berdasarkan English Alphabet. Dipublikasikan pada tahun 1967 dan diupdate tahun 1986. Terdiri dari 95 (32-space, 33-126) karakter yang printable dan 32 (0-31) karakter nonprintable/ control character. Contoh segment program C berikut: char hrf; hrf = A ; printf( nilai desimal karakter %c adalah %d,hrf,hrf); Pada tipe data karakter dapat dilakukan operasi matematika.
Contoh for(char hrf= A ; hrf< Z ;hrf++){ printf( %c,hrf); }
Sifat Data String C tidak memiliki tipe data String. Di dalam C string diperlakukan sebagai array of character (kumpulan karakter). Deklarasi string di C: char nama[20] = anton ; printf( %s,nama);
ATURAN PENULISAN IDENTIFIER 1. Tidak boleh sama dengan nama keyword reserved, function, dan harus unik. 2. Maksimum 32 karakter. Bila lebih, maka karakter selebihnya tidak akan diperhatikan oleh komputer. 3. Case sensitive : membedakan huruf besar dan kecil 4. Karakter pertama harus huruf atau underscore (_), selebihnya boleh angka. 5. Tidak boleh mengandung spasi / blank
OPERATOR ARITMATIKA
Contoh Increment
Operator Relasional
Operator Kondisional
STRUKTUR PROGRAM C Struktur C ditulis dalam sub-sub atau blok yang digunakan untuk mengerjakan suatu instruksi tertentu. Blok tersebut disebut function. Suatu program C minimal harus memiliki function main(), tanpa function itu maka program C tidak dapat dieksekusi
Gambaran umum program C
Contoh Program C #include <stdio.h> //Kamus int jumlah; //algoritma void main(){ jumlah=5+2; printf( Hasil jumlah adalah %d,jumlah); }
PERCABANGAN DENGAN IF Percabangan di dalam pemrograman digunakan oleh komputer untuk menentukan langkah kerja instruksi. Percabangan menggunakan operator kondisional yang akan menghasilkan nilai boolean (benar atau salah).
Sintaks umum IF sederhana: if (<kondisi>) <statement_jika_benar>;
Contoh x = 100; Y = 10000; if (X > Y) { printf("x lebih besar dari Y"); } else{ printf( Y lebih besar dari X"); printf( Y lebih besar dari X"); y=x+1; }
Sintaks umum IF dengan ELSE if (<kondisi>) <statement_jika_benar>; else <statement_jika_salah>;
Contoh: x = 100; y = 10; if (x > y) { printf ( %d lebih besar dari %d,x,y); } else { printf ( %d tidak lebih besar dari %d,x,y); }
Sintaks umum IF ELSE bertingkat if (<kondisi>) { <blok statement if 1> } else if (<kondisi2>) { <blok statement if 2> } else if (<kondisi3>){ <blok statement if 3> } else { <blok statement else> }
PERCABANGAN DENGAN SWITCH Perintah ini digunakan sebagai alternatif pengganti dari sintaks if else dengan else lebih dari satu. Dengan perintah ini program percabangan akan semakin mudah dibuat dan dipelajari.
switch (<variabel>) { case <konstanta_1>: <pernyataan_1>; break; case <konstanta_2>: <pernyataan_2>; break; case <konstanta_n>: <pernyataan_n>; break; default : <pernyataan_default>; }
void main() { int hari = 3; printf("hari ini adalah hari "); switch(hari) { case 1: printf("minggu"); break; case 2: printf("senin"); break; case 3: printf("selasa"); break; case 4: printf("rabu"); break; default: printf("tidak ada hari lebih dari 7"); } }
LOOPING (PERULANGAN) Perulangan digunakan untuk mengerjakan suatu perintah secara berulang-ulang sesuai dengan yang diinginkan. Perulangan dalam C terdiri dari 3 buah: 1. while() {... } 2. do {... } while() 3. for()
Struktur While() Karakteristik while() adalah: Dilakukan pengecekan kondisi terlebih dahulu sebelum dilakukan perulangan. Jika kondisi yang dicek bernilai benar (true) maka perulangan akan dilakukan.
Bentuk Umum
Contoh int i; i=1; while (i <= 5) { i++; }
Flow Chart
Struktur do... while() Karakteristik do... while() adalah: 1. Perulangan akan dilakukan minimal 1x terlebih dahulu, kemudian baru dilakukan pengecekan terhadap kondisi, jika kondisi benar maka perulangan masih akan tetap dilakukan. 2. Perulangan dengan do...while() akan dilakukan sampai kondisi false.
Bentuk umum: do { } pernyataan yang akan dijalankan while (kondisi)
Contoh i = 1; do { i++; }while(i <= 5);
FLOW CHART
Struktur For() Karakteristik: Digunakan untuk perulangan yang batasnya sudah diketahui dengan jelas, misalnya dari 1 sampai 10. Memerlukan 2 buah variabel awal dan akhir perulangan. Nilai variabel penghitung akan secara otomatis bertambah atau berkurang tiap kali sebuah pengulangan dilaksanakan
Bentuk Umum for (<nilai_awal>; <kondisi>; <penambahan/penurunan>) { <pernyataan yang akan dijalankan> }
Contoh for(i = 3; i <= 7; i++) { printf ( "Indonesia Tanah Airku" ); }
Array Selama ini kita menggunakan satu variabel untuk menyimpan 1 buah nilai dengan tipe data tertentu. Misalnya : int a1, a2, a3, a4, a5; Deklarasi variabel diatas digunakan untuk menyimpan 5 data integer dimana masingmasing variabel diberi nama a1, a2, a3, a4, dan a5. Jika kita memiliki 10 data, 100 data integer bahkan mungkin data yang ingin kita proses tidak kita ketahui atau bersifat dinamis? Kita tidak mungkin menggunakan variabel seperti diatas.
Solusi C Di dalam C dan pemrograman yang lain, terdapat suatu fasilitas untuk menyimpan data-data yang bertipe data sama dengan suatu nama tertentu. Apakah itu? Itulah Array
Definisi Array Array adalah suatu tipe data terstuktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu. Elemen-elemen array tersusun secara sekuensial di dalam memori sehingga memiliki alamat yang berdekatan. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi. Elemen-elemen array bertipe data sama tapi bisa bernilai sama atau berbeda-beda.
Gambaran umum sebuah Array
Mengakses Array Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks tertentu Pengaksesan elemen array dapat dilakukan berurutan atau random berdasarkan indeks tertentu secara langsung. Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud.
DEKLARASI ARRAY 1 DIMENSI tipe_data nama_var_array[ukuran]; tipe_data : menyatakan jenis tipe data elemen larik (int, char, float, dll) nama_var_array : menyatakan nama variabel yang dipakai. ukuran : menunjukkan jumlah maksimal elemen larik.
Contoh
PENJELASAN ARRAY 1 DIMENSI Tanda [] disebut juga elemen yang ke-. Misalnya kondisi[0] berarti elemen yang ke nol. Array yang sudah dipesan, misalnya 10 tempat tidak harus diisi semuanya, bisa saja hanya diisi 5 elemen saja, baik secara berurutan maupun tidak. Namun pada kondisi yang tidak sepenuhnya terisi tersebut, tempat pemesanan di memori tetap sebanyak 10 tempat, jadi tempat yang tidak terisi tetap akan terpesan dan dibiarkan kosong.
Contoh //Dengan variabel biasa: int x1=3,x2=5,x3=2,x4=7,x5=9; //Dengan larik: int x[5]={3,5,2,7,9};
Contoh lengkap #include <stdio.h> #include <conio.h> void main() { int nilai[5], x; clrscr(); printf( Memasukkan nilai :\n ); for(x=0;x<5;x++) { printf( Nilai Angka : ); scanf( %d,&nilai[x]); } printf( \n ); printf( Membaca nilai :\n ); for(x=0;x<5;x++) { printf( Nilai Angka : %d,nilai[x]); } }
ADT Bahasa C memiliki tipe data numerik dan karakter (seperti integer, float, char dan lainlain). Bagaimana jika kita ingin membuat tipe data baru? ADT adalah tipe data yang dibuat oleh programmer sendiri yang memiliki suatu nama tertentu. ADT dapat berupa tipe data dasar namun diberi nama baru atau berupa kumpulan tipe data berbeda yang diberi nama baru. Untuk pembuatan ADT digunakan keyword typedef
Contoh #include <stdio.h> #include <conio.h> typedef int angka; typedef float pecahan; typedef char huruf; void main(){ clrscr(); angka umur; pecahan pecah; huruf h; huruf nama[10]; printf("masukkan umur anda : ");scanf("%d",&umur); printf("umur anda adalah %d",umur); printf("\nmasukkan bilangan pecahan : ");scanf("%f",&pecah); printf("bilangan pecahan %f",pecah); printf("\nmasukkan huruf : ");h=getche(); printf("\nhuruf anda %c",h); printf("\nmasukkan nama : ");scanf("%s",nama); printf("nama anda %s",nama); getch(); }
Struct Struct adalah tipe data bentukan yang berisi kumpulan variabel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan array yang berisi kumpulan variabel yang bertipe data sama, struct dapat memiliki variabel-variabel yang bertipe data sama atau berbeda, bahkan bisa menyimpan variabel yang bertipe data array atau struct Variabel-variabel yang menjadi anggota struct disebut dengan elemen struct
Ilustrasi Struct bisa diumpamakan sebagai sebuah class, misalnya: Mahasiswa Struct Mahasiswa memiliki property atau atribut atau variabel yang melekat padanya: - NIM yaitu karakter sejumlah 8 - Nama yaitu karakter - IPK yaitu bilangan pecahan Struct hampir mirip dengan class pada Java, namun struct tidak memiliki method atau function.
Deklarasi Struct typedef struct Mahasiswa { char NIM[8]; char nama[50]; float ipk; }; //cara menggunakannya Mahasiswa mhs,mhs2;
Cara penggunaan struct dan pengaksesan elemen-elemennya - Penggunaan struct dilakukan dengan membuat suatu variabel yang bertipe struct tersebut - Pengaksesan elemen struct dilakukan secara individual dengan menyebutkan nama variabel struct diikuti dengan operator titik (.) - Misalnya dengan struct mahasiswa seperti contoh di atas, kita akan akses elemenelemennya seperti contoh berikut:
#include <stdio.h> #include <conio.h> //Pendeklarasian tipe data baru struct Mahasiswa typedef struct Mahasiswa{ char NIM[9]; char nama[30]; Float ipk; }; void main(){ //Buat variabel mhs bertipe data Mahasiswa Mahasiswa mhs; clrscr(); printf("nim = ");scanf("%s",mhs.nim); printf("nama = ");scanf("%s",mhs.nama); printf("ipk = ");scanf("%f",&mhs.ipk); printf("data Anda : \n"); printf("nim : %s\n",mhs.nim); printf("nama : %s\n",mhs.nama); printf("ipk : %f\n",mhs.ipk); }