Saat ini
Anda dapat merasakan kemudahan dan memanfaatkan komputer karena
sudah
didukung oleh sistem operasi dan software yang mudah digunakan, user-friendly.
Demikian
juga dengan game yang kini semakin mengasyikkan untuk dimainkan. Namun,
pernahkah
Anda membayangkan bagaimana jerih payah para programer dalam
membuatnya?
Dalam membuat software , seorang programer berbekal logika dan konsep
yang dia
miliki, harus membuat alur logika (skema) dari software yang akan dia buat.
Misalnya,
mau seperti apa software yang dia buat, apa saja kemampuan yang dia miliki,
dan beragam
faktor lainnya.
Kemudian,
dengan sebuah bahasa pemrograman, dia akan berusaha menyusun
pernyataan-pernyataan
yang dapat dimengerti dan dijalankan oleh prosesor untuk
menghasilkan
sebuah output. Semakin “pintar” software yang dia buat, maka semakin
rumit dan
panjang pernyataan/perintah yang harus dia buat dalam bahasa pemrograman.
Bersyukurlah
kita dengan perkembangan bahasa pemrograman saat ini, yang sudah
didukung
dengan bahasa pemrograman object-oriented. Seorang programer lebih
dipermudah
dalam membuat pernyataan/perintah,sehingga dia dapat lebih memikirkan
bagaimana
membuat software yang dia buat semakin komplet dan pintar. Kondisi itu
berbeda
dengan zaman dahulu. Kala itu, komputer dijalankan dengan pemrograman
manual, yang
menggunakan instruksi binary dan hex.
Untuk
membuat dan menjalankan program tersebut, dibutuhkan waktu yang lama
dan sering
dijumpai banyak kesalahan. Program kemudian menjadi sangat sulit untuk
dibaca dan
dimodifikasi. Saking susah dan rumitnya, pada saat itu tidak banyak orang
yang
tertarik untuk menjadi programer komputer. Jadi, hanya segelintir orang yang
menekuninya.
Ini diperparah lagi dengan masih mahalnya harga komputer kala itu.
Bayangkan,
sebuah software harganya bisa mencapai dua sampai empat kali harga
komputer.
Ampun deh!
Fenomena
itulah yang kemudian memacu orang membuat bahasa pemrograman
yang semakin
mudah digunakan. Maka, sejak tahun 1957 terus dikembangkan dan
bermunculan
berbagai bahasa pemrograman. Tidak kurang 150 bahasa pemrograman
dirilis
sejak tahun 1957 sampai sekarang.
Generasi
Bahasa Pemrograman
Pada
industri komputer dikenal pembagian generasi, yang menandai sebuah
evolusi
dalam perkembangan bahasa pemrograman.
First-Generation
Language (1GL) adalah bahasa mesin atau level instruksi dan
data, yang
diberikan kepada prosesor agar dapat bekerja. Pada komputer konvensional
terdiri dari
deretan angka0 dan 1.
Second-Generation
Language (2GL) adalah bahasa pemrograman assembler
(orang juga
mengenalnya sebagai bahasa assembly). Pada bahasa perograman generasi
kedua ini
assembler mengubah pernyataan bahasa pemrograman ke bahasa mesin.
Third-Generation Language (3GL) merupakan bahasa pemrograman yang masuk
Third-Generation Language (3GL) merupakan bahasa pemrograman yang masuk
dalam
generasi ketiga. Ini adalah bahasa pemrograman tingkat tinggi, seperti PL/1, C,
atau Java. Untuk
dapat menggunakan bahasa pemrograman ini, dibutuhkan pengetahuan
dan
penguasaan terhadap bahasa pemrograman itu sendiri. Dalam bahasa pemrograman,
sebuah
compiler akan mengubah pernyataan yang dibuat oleh bahasa pemrograman ke
bahasa
mesin. Misal pada bahasa pemrograman Java, diperoleh output yang disebut
bytecode.
Output ini kemudian akan diubah ke bahasa mesin oleh Java Virtual Machine.
Fourth-Generation
Language (4GL) adalah bahasa pemrograman yang didesain
lebih
“natural”, sehingga makin mudah digunakan. Pada generasi keempat ini, bahasa
pemrograman
sudah dapat digunakan untuk mengakses sebuah data base.
Fifth-Generation
Language (5GL) adalah bahasa pemrograman yang
menggunakan
interface pengembangan visual atau grafik untuk membuat bahasa
sumbernya,
yang biasanya di-compile dengan compiler 3GL atau 4GL. Microsoft,
Borland, IBM
dan perusahaan lain memroduksi pemrograman visual 5GL, contohnya
untuk
pengembangan aplikasi Java. Pemrograman visual memungkinkan Anda untuk
membayangkan
dengan mudah hirarki dari kelas pemrograman yang berorientasi obyek,
dan men-drag
ikon-ikon untuk menyusun komponen program.
Perkembangan
Perkembangan
bahasa pemrograman dimulai pada tahun 1949 dengan hadirnya
Short Code,
bahasa pemrograman komputer pertama yang digunakan dalam peralatan
komputer
elektronik. Ini masih berupa bahasa pemrograman manual (hand-compiled).
Pada tahun
1951, Grace Hopper yang bekerja pada Remington Rand mulai
bekerja
untuk mendesain sebuah compiler yang diberi nama A-0. Pada tahun 1957,
bahasa pemrograman
ini kemudian dirilis oleh Rand dengan nama Math-matic.
Kemudian
Alick E. Glennie, di waktu senggangnya di Universitas Manchester,
berhasil
membuat programming system bernama AUTOCODE pada tahun 1952. Sekitar
lima tahun
setelahnya dirilislah mathematical FORmula TRANslating (FORTRAN), dan
menjadi
salah satu bahasa pemrograman yang mudah digunakan pada tahun itu.
FORTRAN
dibuat oleh tim yang diketuai oleh John Backus, yang kemudian juga
memiliki
konstribusi dalam pembuatan bahasa pemrograman ALGOL.
Setahun
kemudian, muncul FORTRAN II yang mampu menjalankan perintah
subroutines
dan koneksi ke bahasa assembly. Dan, pada tahun yang sama juga dirilis
bahasa
pemrograman ALGOL. Pada tahun 1960 muncul ALGOL 60. Bahasa
pemrogramana
ini sangat popular di Eropa pada pertengahan 1960-an. Pada tahun 1962,
APL (A
Programming Language) dirilis oleh Kenneth Iverson. Pada tahun yang sama
juga dirilis
FORTRAN IV.
Perkembangan
bahasa pemrograman terus berlanjut dengan munculnya berturutturut
APL/360 dan
PL/1 pada tahun 1964, SNOBOL3 pada 1965, FORTRAN 66 dan
LISP 2 pada
1966, SNOBOL 4 pada 1967, ALGOL 68, ALTRAN, dan COBOL.
Pada tahun
1975, Bob Albrecht dan Dennis Allison merilis Tiny BASIC. Pada
tahun yang
sama, Bill Gates dan Paul Allen merilis BASIC yang mereka jual ke MITS
(Micro
Instrumentation and Telemetry Systems). Tahun-tahun selanjutnya, beberapa
bahasa
pemrograman baru bermunculan. Di antaranya AWK yang dirilis tahun 1978;
Smalltalk-80,
Modula-2, Franz LISP pada tahun 1980; dan ISO Pascal serta PostScript
yang dirilis
pada tahun 1982. Pada tahun 1983 dirilis bahasa pemrograman Ada.
Nama tersebut diambil dari Lady Augusta Ada Byron, yang menyandang gelar
Nama tersebut diambil dari Lady Augusta Ada Byron, yang menyandang gelar
programer
komputer pertama karena hasil kerjanya pada Charles Babbage’s analytical
engine di
tahun 1842.
Tahun 1986,
selain Apple telah merilis Object Pascal dan Borland merilis Turbo
Prolog, pada
tahun yang sama juga dirilis bahasa pemrogramanC++ dan Eiffel. Setahun
sesudahnya
dirilis Turbo Pascal version 4.0. Bahasa pemrograman C++ berkembang
pesat dengan
dirilisnya C++ 2.0 pada tahun 1989, dan C++ 2.1 pada tahun 1990. Ini
berbarengan
dengan dirilisnya FORTRAN 90. Setahun kemudian, Microsoft kembali
merilis
Visual Basic, yang kemudian memenangkan penghargaan BYTE’s Best of Show
saat COMDEX.
Bahasa
pemrograman terus berkembang hingga tahun ini, dengan diilisnya Java 2
Bahasa pemrograman adalah software bahasa komputer yang digunakan dengan cara merancang atau membuat program sesuai dengan struktur dan metode yang dimiliki oleh bahasa program itu sendiri. Komputer mengerjakan transformasi data berdasarkan kumpulan printah program yang telah dibuat oleh program. Kumpulan perintah ini harus dimengerti oleh komputer, berstruktur terntentu (syntax), dan bermakna. Bahasa pemrograman merupakan notasi untuk memberikan secara tepat program komputer. Berbeda dengan bahasa, misalkan Bahasa Indonesia dan Inggris yang merupakan bahasa alamiah (natural language), sintaksis dan semantik bahasa pemrograman komputer ditentukan secara jelas dan terstruktur, sehingg bahasa pemrograman juga disebut sebagai bahasa formal (formal language).
Menurut tingkatannya, bahasa pemrograman dibagi menjadi 3 tingkatan, yaitu:
o Bahasa pemrograman tingkat rendah (low level language), merupakan bahasa pemrograman generasi pertama, bahasa pemrograman jenis ini sangat sulit dimengerti karena instruksinya menggunakan bahasa mesin. Biasanya yang mengerti hanyalah pembuatnya saja karena isinya programnya berupa kode-kode mesin.
o Bahasa pemrograman tingkat menengah (middle level language), merupakan bahasa pemrograman dimana pengguna instruksi sudah mendekati bahasa sehari-hari, walaupun begitu masih sulit untuk dimengerti karena banyak menggunakan singkatan-singkatan seperti “STO” artinya simpan (STORE) dan “MOV” artinya pindahkan (MOVE). Yang tergolong dalam bahasa ini adalah assembler.
o Bahasa pemrograman tingkat tinggi (high level language) merupakan bahasa yang mempunyai ciri lebih terstruktur, mudah dimengerti karena menggunakan bahasa sehari-hari, contoh bahasa level ini adalah: Delphi, Pascal, ORACLE, MS-SQL, Perl, Phyton, Basic, Visual Studio (Visual Basic, Visual FoxPro), Informix, C, C++, ADA, Java, PHP, ASP, XML, dan lain-lain. Bahasa seperti Java, PHP, ASP, XML biasanya digunakan untuk pemrograman pada internet, dan masih banyak lagi yang terus berkembang yang saat ini biasanya dengan ekstensi .net (baca: dot net) seperti Visual Basic.NET dan Delphi.Net yang merupakan bahasa pemrograman yang dikembangkan pada aran berbasis internet
Sejauh ini bahasa pemrograman dikelompokkan menjadi lima generasi. Setiap generasi bahasa pemrograman memiliki karakteristik tersendiri. Semakin maju generasinya maka orientasi bahasa pemrograman ini akan semakin dekat ke manusia.
Gambar di atas menunjukkan terjadinya kecenderungan pergeseran orientasi dalam bahasa-bahasa pemrograman, dari pendekatan yang berorientasi kepada mesin menuju ke pendekatan yang berorientasi pada manusia.
Bahasa Pemrograman Generasi I
Bahasa pemrograman generasi pertama berorientasi pada mesin. Program disusun dengan menggunakan bahasa mesin. Tentu saja program generasi ini sangat sulit untuk dipahami oleh orang awam dan sangat membosankan bagi pemrogram. Pemrogram harus benar-benar menguasai operasi komputer secara teknis. Namun bahasa generasi ini memberikan eksekusi program yang sangat cepat. Selain itu, bahasa mesin sangat bergantung pada mesin (machine dependent), artinya, bahasa mesin antara satu mesin dengan mesin lainnya akan berbeda.
Bahasa Pemrograman Generasi II
Bahasa pemrograman generasi kedua menggunakan bahasa rakitan (assembly). Sebagai pengganti kode-kode biner, digunakanlah kependekan dari kata-kata. Misalkan “MOV” untuk menyatakan “MOVE” dan JNZ yang berarti “jump non-zero”. Setiap instruksi dalam bahasa rakitan sebenarnya identik dengan satu instruksi dalam bahasa mesin. Bahasa ini sedikit lebih mudah dipahami daripada bahasa mesin. Bahasa ini sedikit lebih mudah dipahami daripada bahasa mesin mengingat perintah dalam bentuk kata-kata yang dipendekkan lebih mudah daripada mengingat deretan angka biner.
Berikut adalah contoh instruksi yang ditulis dalam bahasa rakitan akan menjadi seperti berikut:
Tampak bahwa penggunaan notasi seperti MOV AH, 02 jauh lebih mudah diingat atau dipahami daripada penulisan instruksi dalam bahasa mesin: B402 atau 1011 0100 0000 0010.
Bahasa Pemrograman Generasi III
Bahasa pemrograman generasi ketiga menggunakan pendekatan prosedural. Sebagai bahasa prosedural, pemrogram perlu menuliskan instruksi-instruksi yang rinci agar komputer melaksanakan tugasnya. Program ditulis dengan menggunakan kata-kata yang biasa dipakai manusia, seperti WRITE untuk menampilkan sesuatu di layar dan READ untuk membaca data dari keyboard.
Bahasa generasi ketiga seringkali disebut sebagai high level language disebabkan bahasa ini menggunakan kata-kata yang biasa digunakan manusia. Beberapa contoh bahasa pemrograman yang masuk dalam kategori generasi ketiga yaitu ADA, ALGOL, C, BASIC, COBOL, FORTRAN, dan PASCAL.
Bahasa Pemrograman Generasi IV
Bahasa pemrograman generasi keempat dirancang untuk mengurangi waktu pemrograman dalam membuat program sehingga diharapkan produktifitas pemrogram jadi meningkat dan program dapat dibuat dalam waktu yang lebih singkat. Alhasil, bahasa pemrograman generasi keempat yang dikenal dengan sebutan 4GL dapat dipakai oleh pemakai yang kurang mengetahui hal-hal teknis tentang pemrograman tanpa bantuan pemrogram profesional. Sebagai contoh pemrogram dapat membuat program dengan Microsoft Access di lingkungan PC dengan mudah.
Bahasa pemrograman generasi keempat biasa disebut sebagai high level languageatau bahasa berorientasi pada masalah (problem oriented language) karena memungkinkan pemakai menyelesaikan masalah dengan sedikit penulisan kode dibandingkan pada bahasa prosedural. Bahasa pemrograman generasi keempat menggunakan pendekatan non-prosedural. Untuk mendapatkan suatu hasil, seorang pemakai tidak perlu memberitahukan secara detail tentang bagaimana mendapatkannya. Gambar di bawah ini memberikan contoh yang menunjukkan perbedaan bahasa prosedural dan non-prosedural dalam memperoleh data tentang seorang mahasiswa.
Bahasa Pemrograman Generasi V
Bahasa pemrograman generasi kelima merupakan kelompok bahasa-bahasa pemrograman yang ditujukan untuk menangani kecerdasan buatan (artificial intelligence). Kecerdasan buatan adalah disiplin dalam ilmu komputer yang mempelajari cara komputer meniru kecerdasan manusia. Berbagai aplikasi kecerdasan manusia adalah sebagai berikut:
o Pemrosesan bahasa alami (natural language processing), yakni mengatur komputer agar bisa berkomunikasi dengan manusia melalui bahasa manusia (Indonesia, Inggris, Spanyol, Prancis, dan sebagainya).
o Pengedalian robotika dan sensor mata.
o Aplikasi sistem pakar (expert system) yang meniru seorang pakar di bidang tertentu sehingga bisa menghasilkan nasehat atau pemikiran yang setara dengan seorang pakar.
Dengan menggunakan bahasa generasi kelima dimungkinkan untuk melakukan perintah dengan cara percakapan seperti berikut:
“Tampilkan semua nama mahasiswa yang IPK-nya di atas 3,0 dan urutkan berdasarkan IP secara descending”
PROLOG dan LISP merupakan dua contoh bahasa pemrograman yang ditujukan untuk menangani kecerdasan buatan.
A
bahasa program
Perangkat Lunak Bahasa Pemrograman
Bahasa pemrograman adalah software bahasa komputer yang digunakan dengan cara merancang atau membuat program sesuai dengan struktur dan metode yang dimiliki oleh bahasa program itu sendiri. Komputer mengerjakan transformasi data berdasarkan kumpulan printah program yang telah dibuat oleh program. Kumpulan perintah ini harus dimengerti oleh komputer, berstruktur terntentu (syntax), dan bermakna. Bahasa pemrograman merupakan notasi untuk memberikan secara tepat program komputer. Berbeda dengan bahasa, misalkan Bahasa Indonesia dan Inggris yang merupakan bahasa alamiah (natural language), sintaksis dan semantik bahasa pemrograman komputer ditentukan secara jelas dan terstruktur, sehingg bahasa pemrograman juga disebut sebagai bahasa formal (formal language).
Menurut tingkatannya, bahasa pemrograman dibagi menjadi 3 tingkatan, yaitu:
- Bahasa pemrograman tingkat rendah (low level language), merupakan bahasa pemrograman generasi pertama, bahasa pemrograman jenis ini sangat sulit dimengerti karena instruksinya menggunakan bahasa mesin. Biasanya yang mengerti hanyalah pembuatnya saja karena isinya programnya berupa kode-kode mesin.
- Bahasa pemrograman tingkat menengah (middle level language), merupakan bahasa pemrograman dimana pengguna instruksi sudah mendekati bahasa sehari-hari, walaupun begitu masih sulit untuk dimengerti karena banyak menggunakan singkatan-singkatan seperti “STO” artinya simpan (STORE) dan “MOV” artinya pindahkan (MOVE). Yang tergolong dalam bahasa ini adalah assembler.
- Bahasa pemrograman tingkat tinggi (high level language) merupakan bahasa yang mempunyai ciri lebih terstruktur, mudah dimengerti karena menggunakan bahasa sehari-hari, contoh bahasa level ini adalah: Delphi, Pascal, ORACLE, MS-SQL, Perl, Phyton, Basic, Visual Studio (Visual Basic, Visual FoxPro), Informix, C, C++, ADA, Java, PHP, ASP, XML, dan lain-lain. Bahasa seperti Java, PHP, ASP, XML biasanya digunakan untuk pemrograman pada internet, dan masih banyak lagi yang terus berkembang yang saat ini biasanya dengan ekstensi .net (baca: dot net) seperti Visual Basic.NET dan Delphi.Net yang merupakan bahasa pemrograman yang dikembangkan pada aran berbasis internet
Sejauh ini bahasa pemrograman dikelompokkan menjadi lima generasi. Setiap generasi bahasa pemrograman memiliki karakteristik tersendiri. Semakin maju generasinya maka orientasi bahasa pemrograman ini akan semakin dekat ke manusia.
Gambar di atas menunjukkan terjadinya kecenderungan pergeseran orientasi dalam bahasa-bahasa pemrograman, dari pendekatan yang berorientasi kepada mesin menuju ke pendekatan yang berorientasi pada manusia.
Bahasa Pemrograman Generasi I
Bahasa pemrograman generasi pertama berorientasi pada mesin. Program disusun dengan menggunakan bahasa mesin. Tentu saja program generasi ini sangat sulit untuk dipahami oleh orang awam dan sangat membosankan bagi pemrogram. Pemrogram harus benar-benar menguasai operasi komputer secara teknis. Namun bahasa generasi ini memberikan eksekusi program yang sangat cepat. Selain itu, bahasa mesin sangat bergantung pada mesin (machine dependent), artinya, bahasa mesin antara satu mesin dengan mesin lainnya akan berbeda.
Bahasa Pemrograman Generasi II
Bahasa pemrograman generasi kedua menggunakan bahasa rakitan (assembly). Sebagai pengganti kode-kode biner, digunakanlah kependekan dari kata-kata. Misalkan “MOV” untuk menyatakan “MOVE” dan JNZ yang berarti “jump non-zero”. Setiap instruksi dalam bahasa rakitan sebenarnya identik dengan satu instruksi dalam bahasa mesin. Bahasa ini sedikit lebih mudah dipahami daripada bahasa mesin. Bahasa ini sedikit lebih mudah dipahami daripada bahasa mesin mengingat perintah dalam bentuk kata-kata yang dipendekkan lebih mudah daripada mengingat deretan angka biner.
Berikut adalah contoh instruksi yang ditulis dalam bahasa rakitan akan menjadi seperti berikut:
Tampak bahwa penggunaan notasi seperti MOV AH, 02 jauh lebih mudah diingat atau dipahami daripada penulisan instruksi dalam bahasa mesin: B402 atau 1011 0100 0000 0010.
Bahasa Pemrograman Generasi III
Bahasa pemrograman generasi ketiga menggunakan pendekatan prosedural. Sebagai bahasa prosedural, pemrogram perlu menuliskan instruksi-instruksi yang rinci agar komputer melaksanakan tugasnya. Program ditulis dengan menggunakan kata-kata yang biasa dipakai manusia, seperti WRITE untuk menampilkan sesuatu di layar dan READ untuk membaca data dari keyboard.
Bahasa generasi ketiga seringkali disebut sebagai high level language disebabkan bahasa ini menggunakan kata-kata yang biasa digunakan manusia. Beberapa contoh bahasa pemrograman yang masuk dalam kategori generasi ketiga yaitu ADA, ALGOL, C, BASIC, COBOL, FORTRAN, dan PASCAL.
Bahasa Pemrograman Generasi IV
Bahasa pemrograman generasi keempat dirancang untuk mengurangi waktu pemrograman dalam membuat program sehingga diharapkan produktifitas pemrogram jadi meningkat dan program dapat dibuat dalam waktu yang lebih singkat. Alhasil, bahasa pemrograman generasi keempat yang dikenal dengan sebutan 4GL dapat dipakai oleh pemakai yang kurang mengetahui hal-hal teknis tentang pemrograman tanpa bantuan pemrogram profesional. Sebagai contoh pemrogram dapat membuat program dengan Microsoft Access di lingkungan PC dengan mudah.
Bahasa pemrograman generasi keempat biasa disebut sebagai high level languageatau bahasa berorientasi pada masalah (problem oriented language) karena memungkinkan pemakai menyelesaikan masalah dengan sedikit penulisan kode dibandingkan pada bahasa prosedural. Bahasa pemrograman generasi keempat menggunakan pendekatan non-prosedural. Untuk mendapatkan suatu hasil, seorang pemakai tidak perlu memberitahukan secara detail tentang bagaimana mendapatkannya. Gambar di bawah ini memberikan contoh yang menunjukkan perbedaan bahasa prosedural dan non-prosedural dalam memperoleh data tentang seorang mahasiswa.
Bahasa Pemrograman Generasi V
Bahasa pemrograman generasi kelima merupakan kelompok bahasa-bahasa pemrograman yang ditujukan untuk menangani kecerdasan buatan (artificial intelligence). Kecerdasan buatan adalah disiplin dalam ilmu komputer yang mempelajari cara komputer meniru kecerdasan manusia. Berbagai aplikasi kecerdasan manusia adalah sebagai berikut:
- Pemrosesan bahasa alami (natural language processing), yakni mengatur komputer agar bisa berkomunikasi dengan manusia melalui bahasa manusia (Indonesia, Inggris, Spanyol, Prancis, dan sebagainya).
- Pengedalian robotika dan sensor mata.
- Aplikasi sistem pakar (expert system) yang meniru seorang pakar di bidang tertentu sehingga bisa menghasilkan nasehat atau pemikiran yang setara dengan seorang pakar.
Dengan menggunakan bahasa generasi kelima dimungkinkan untuk melakukan perintah dengan cara percakapan seperti berikut:
“Tampilkan semua nama mahasiswa yang IPK-nya di atas 3,0 dan urutkan berdasarkan IP secara descending”
PROLOG dan LISP merupakan dua contoh bahasa pemrograman yang ditujukan untuk menangani kecerdasan buatan.
Huruf: A B C D E F G H I J K L M N O P Q R S T U V W X Z Y a b c d e f g h i j k l m n o p q r s t u v w x y z
Digit: 0 1 2 3 4 5 6 7 8 9
Simbol dan lain-lain: _ - + * dan sebagainya.
auto, double, int, struct, break, else, loop, switch, case, enum, register, typedef, char, extern, return, union, const, float, short, unsigned, continue, for, signed, void, default, goto, sizeof, volatile, do, if, static, while
Sedangkan turbo C memperluasnya dengan menambahkan beberapa kata kunci:
_cs, _ss, far, near, _ds, asm, huge, pascal, _es, cdecl, interrupt
Sementara itu, Microsoft C/C++ menambah beberapa kata kunci:
_asm, _loadds, _cdecl, _huge, _far, _pascal, _export, _interrupt, _fortran, _segname, _near, _saveregs, _segment, _syscall, _self, _stdcall, _fastcall, _based
Tipe data Ukuran memori Jangkauan nilai
char 1 byte -128 s/d +127
int 2 byte -32768 hingga +32767
short 2 byte -32.768 s/d 32.767
long 4 byte -2.147.438.648 s/d 2.147.438.647
float 4 byte 3,4x10-36 s/d 3,4x10+38
double 8 byte 1,7x10-308 s/d 1,7x10+308
long double 10 byte 3,4x10_4932 s/d 1,1x10+4932
enum 2 byte -32.768 s/d 32.767
pointer 2 byte (near, based)
pointer 4 byte (far, huge)
Tipe data Ukuran memori Jangkauan nilai
unsigned char 1 byte 0 s/d 255
unsigned int 2 byte 0 s/d 32767
unsigned short 2 byte 0 s/d 32.767
unsigned long 4 byte 0 s/d 2.147.438.647
Modifier signed:
Digunakan untuk memperluas tanda yang digunakan integer dan karakter. Cara ini memungkinkan untuk menyimpan suatu nilai dalam bentuk bilangan positif atau negatif.
Tipe data Ukuran memori Jangkauan nilaisigned char 1 byte -128 s/d +127
signed int 2 byte -32768 hingga +32767
signed short 2 byte -32.768 s/d 32.767
signed long 4 byte -2.147.438.648 s/d 2.147.438.647
#include
#include
void main()
{
clrscr();
cout << "Ukuran char : " << sizeof(char) << '\n';
cout << "Ukuran short : " << sizeof(short) << '\n';
cout << "Ukuran int : " << sizeof(int) << '\n';
cout << "Ukuran long : " << sizeof(long) << '\n';
cout << "Ukuran float : " << sizeof(float) << '\n';
cout << "Ukuran double : " << sizeof(double) << '\n';
cout << "Ukuran long double : " << sizeof(long double) << '\n';
}
Penjelasan program:
cout << "Hallo! Selamat datang di website ideelok \n";
bentuk pendefinisian variabel:
tipe daftar_variabel;
Pada pendefinisian variabel, daftar_variabel dapat berupa sebuah variabel atau beberapa variabel yang dipisahkan dengan koma.
variabel = nilai;
Contoh:
jumlah = 10;
harga_barang = 1500;
char karakter;
Dalam hal ini variabel karakter bertipe char. Variabel ini dapat menampung data sebuah karakter. Untuk menuliskan sebuah konstanta bertipe char, karakter perlu ditulis di dalam tanda petik tunggal, contoh: 'A' karakter berupa huruf A.
Karakter yang ditulis dengan bentuk \karakter mempunyai arti tersendiri (karakter khusus) dan biasa disebut escape sequence characters.
Karakter-karakter khusus tersebut antara lain:
\0 artinya karakter ber-ASCII nol (karakter nul)
\a artinya karakter bel
\b artinya karakter backspace
\f artinya karakter formfeed (ganti halaman)
\n artinya karakter newline (pindah baris)
\r artinya karakter carriage return (ke awal baris) tanpa linefeed
\t artinya karakter tab horizontal
\v artinya karakter tab vertikal
\\ artinya karakter \
\' artinya karakter '
\" artinya karakter "
\? artinya karakter ?
\ooo artinya karakter yang nilai oktalnya adalah ooo (tiga digit oktal)
\xhh artinya karakter yang nilai heksadesimalnya adalah hh (dua digit heksadesimal)
int bilangan;
long jumlah_penduduk;
Pada contoh ini, jumlah_penduduk didefinisikan bertipe long. Dengan demikian variabel ini dapat menampung nilai ratusan juta. Adapun konstanta bertipe long biasa ditulis dengan akhiran L. Sebagai contoh: 1543267635435L
float panjang;
double phi;
long double tetapan;
int jumlah;
jumlah = 80;
Dua pernyataan seperti di atas sebenarnya dapat diangkat melalui pendefinisian yang disertai penugasan nilai, seperti berikut:
int jumlah = 80;
Operasi AND bitwise membandingkan dua bit; jika kedua bit tersebut adalah 1, maka hasilnya 1, selain itu hasilnya 0.
Logika AND:
Bit 0 Bit 1 Hasil
0 0 0
0 1 0
1 0 1
1 1 1
OR
Simbol operator I, dengan bentuk pemakaian : operand1 I opeand2
Operasi OR bitwise membandingkan dua bit dan memberikan hasil 1 jika kedua bit yang dibandingkan itu salah satu atau keduanya 1.
Logika OR:
Bit 0 Bit 1 Hasil
0 0 0
0 1 1
1 0 1
1 1 1
XOR
Simbul operator: ^, dengan bentuk penggunaan : operand1 ^ operand2
Operasi EXCLUSIVE OR (XOR) bitwise membandingkan dua bit dan memberikan hasil 1 bila kedua bit merupakan komplementer satu sama lain.
Logika XOR:
Bit 0 Bit 1 Hasil
0 0 0
0 1 1
1 0 1
1 1 0
Contoh program operasi I, & dan ^:
//* Efek operator I, & dan ^ *
#include
#include
void main()
{
unsigned char angka1 = 81;
unsigned char angka2 = 99;
unsigned char a, b, c;
clrscr();
a = angka1 I angka2; //operasi OR
b = angka1 & angka2; //operasi AND
c = angka1 ^ angka2; //operasi XOR
cout << "a= " << a << '\n';
cout << "b= " << b << '\n';
cout << "c= " << c << '\n';
}
Hasil eksekusi program di atas, adalah:
a= 115
b= 65
c= 50
Penjelasan hasil program:
Operasi OR pada a:
0000 0000 0101 0001 <- 81="81" br="br">0000 0000 0110 0011 <- 99="99" br="br">-------------------------------
0000 0000 0 1 1 0011 <- 115="115" br="br">
Operasi AND pada b:
0000 0000 0101 0001 <- 81="81" br="br">0000 0000 0110 0011 <- 99="99" br="br">-------------------------------
0000 0000 0100 0001 <- 65="65" br="br">
Operasi XOR pada c:
0000 0000 0101 0001 <- 81="81" br="br">0000 0000 0110 0011 <- 99="99" br="br">-------------------------------
0000 0000 0011 0010 <- 50="50" p="p">
Operator >> dan << pada bahasa pemrograman C++ berguna untuk menggeser bit-bit dalam suatu bilangan bulat ke kiri atau ke kanan. Shift kiri menggerakkan bit-bit ke kiri dan mengatur bit paling kanan (yang tidak signifikan) menjadi nol. Sedangkan bit paling kiri (paling signifikan) yang ter-shift keluar akan dibuang. Sementara itu, operator shift kanan menggerakkan bit-bit ke kanan. Bit-bit dengan orde lebih rendah yang ter-shift keluar akan dibuang. Pergeseran bit ke kiri mempunyai efek seperti perkalian, sedangkan pergeseran ke kanan memberikan efek seperti pembagian.
b.1) Operastor shift kiri
Bentuk umum dipakai: nilai << jumlah bit digeser ke kiri
Setiap pergeseran sebuah bit akan memberikan pengaruh seperti halnya perkalian dengan bilangan dua. Untuk lebih jelasnya perhatikan contoh berikut beserta hasilnya:
//* Operator SHIFT KIRI *
#include
#include
main()
{
unsigned char x = 93;
clrscr();
cout << "Nilai x semula = " << x << '\n';
x = x << 1; // geser ke kiri 1 bit
cout << "Nilai x kini = " << x << '\n';
}
Hasil eksekusi program:
Nilai x semula = 93
Nilai x kini = 186
Penjelasan hasil program:
0000 0000 0101 1101 <- 93="93" br="br">digeser ke kiri 1 bit
0000 0000 1011 1010 <- 186="186" br="br">di bagian kanan selalu disisipi dengan nol sebanyak bit yang digeser.
b.2) Operator shift kanan
Bentuk umum dipakai: nilai >> jumlah bit digeser ke kanan
Setiap pergeseran sebuah bit akan memberikan pengaruh seperti halnya pembagian dengan bilangan dua. Untuk lebih jelasnya perhatikan contoh berikut beserta hasilnya:
//* OPERATOR SHIFT KANAN *
#include
#include
void main()
{
unsigned char x = 93;
clrscr();
cout << "Nilai x semula = " << x << '\n';
x = x >> 1; // geser kekanan 1 bit
cout << "Nilai x kini = " << x << '/n';
}
Hasil eksekusi program:
Nilai x semula = 93
Nilai x kini = 46
Penjelasan hasil program:
0000 0000 0101 1101 <- 93="93" br="br">digeser ke ke kanan 1 bit
0000 0000 0010 1110 <- 186="186" br="br">di bagian kiri selalu disisipi dengan nol sebanyak bit yang digeser.
c) Operator Komplemen
Operator ini mempunyai sifat membalik (menginversi) nilai setiap bit. Jika bit operand bernilai 1 hasilnya 0, dan bila bit operand bernilai 0 hasilnya 1.
Contoh pemakaian operator komplemen:
//* Operator komplemen *
#include
#include
main()
{
unsigned char nilai = 81;
unsigned char a;
clrscr();
a = ~nilai; // komplemen dari nilai
cout << "a = " << a << '\n';
}
Hasil eksekusi program:
a = 65454
Penjelasan hasil program:
0000 0000 0101 0001 <- 81="81" br="br">inversinya menjadi
1111 1111 1010 1110 <- 6554="6554" br="br">
d) Operator Aritmatika
Bahasa C++ melibatkan operator aritmatika standar untuk penjumlahan (+), pengurangan (-), perkalian (*), pembagian (/), dan modulus (%). Operator aritmatika tersebut tergolong sebagai operator binary. Adapun operator yang tergolong sebagai operator unary yaitu tanda minus (-), dan tanda plus (+).
Prioritas operator :
Operator dengan prioritas tinggi akan diutamakan dalam hal pengerjaan dibandingkan dengan operator yang memiliki prioritas lebih rendah.
Prioritas 1: + --
Prioritas 2: - (unary minus)
Prioritas 3: * / %
Prioritas 4: + -
Apabila operastor memiliki prioritas yang sama, operator yang terletak disebelah kiri dalam suatu ungkapan yang akan diutamakan untuk dikerjakan terlebih dahulu.
Tanda kurung biasa digunakan untuk urutan mengerjakan, misalnya x = (2 + 3) * 2;
(2 + 3 akan dikerjakan terlebih dahulu baru dikalikan dengan 2)
Contoh program:
//* Operasi aritmatika dengan menggunakan tanda kurung) *
#include
#include
void main()
{
clrscr();
int x;
x = 2 + 3 * 2;
cout << "x= " << x << '\n';
x = (2 + 3) * 2;
cout << "x= " << x << '\n';
}
Hasil eksekusi program:
x= 8
x= 12
Operator seperti penjumlahan, pengurangan, perkalian dan pembagian merupakan hal yang umum. Adapun operator sisa pembagian (operator modulus) yang berupa % ada baiknya untuk diterangkan lebih lanjut. Operator ini diterapkan pada operan bertipe integer. Untuk lebih jelasnya perhatikan beberapa contoh berikut:
7 % 2 -> 1 sisa pembagian bilangan 7 dengan 2 adalah 1
9 % 5 -> 4 sisa pembagian bilangan 9 dengan 5 adalah 4
Contoh program
//* sisa pembagian (modulus) *
#include
#include
void main()
{
clrscr();
cout << 9 % 5 << '\n';
cout << 13 % 5 << '\n';
}
Hasil eksekusi program:
4
3
e) Operator Assigenment
Operator assigenment dalam bahasa pemrograman C/C++ berbeda dengan statement assigenment dalam bahasa yang lain. Assigenment dilakukan oleh operator assigenment dan bukan oleh staement assigenment. Seperti operator bahasa pemrograman C++ yang lain, hasil operator assigenment merupakan nilai yang diberikan. Misalnya :
nilai = 4 * (bilangan = 3)
Disini bilangan diberikan nilai 3. Nilai 3 ini dikali dengan 4, sehingga nilai mendapatkan hasil akhir 12.
Pengenalan Bahasa Pemrograman C++
Minggu, November 04, 2012 2 comments
SEKILAS MENGENAI BAHASA PEMROGRAMAN C DAN C++
Bahasa pemrograman C++ merupakan superset dari bahasa pendahulunya yaitu bahasa pemrograman C. Bahasa pemrograman C dikembangkan oleh Dennis Ritchie pada tahun 1972 di Laboratorium Bell. Bahasa pemrograman C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat rendah (berorientase mesin) dan bahasa tingkat tinggi (bahasa berorientase pada manusia). Bahasa pemrograman C berada satu tingkat di atas bahasa yang berorientasi pada mesin, namun tetap satu tingkat dibawah sebagian besar bahasa yang berorientasi persoalan. Bahasa pemrograman C cukup dekat dengan komputer untuk memberikan kendali yang besar terhadap detil implementasi pemakaian, namun cukup jauh untuk mengabaikan detil hardware. Karena itulah bahasa pemrograman C suatu ketika dipandang sebagai bahasa high-level dan pada saat yang lain dilihat sebagai bahasa low-level.
Bahasa pemrograman C merupakan bahasa pemrograman terstruktur, yang membagi program kedalam bentuk sebuah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan bahasa pemrograman C mudah sekali untuk dipindahkan dari satu jenis mesin ke jenis mesin lainnya. Hal ini berkat adanya standarisasi bahasa pemrograman C yaitu berupa standar ANSI (American National Standards Institute) yang dijadikan acuan oleh para pembuat kompiler C.
ELEMEN DASAR BAHASA PEMROGRAMAN C++
1. Identifier (Pengenal) Bahasa C++
Identifier adalah nama yang digunakan untuk mempresentasikan variabel, konstanta, jenis (type), fungsi, dan nama program. Identifier dalam pendeklarasian variabel, jenis, atau fungsi pada bahasa pemrograman C++ dimulai dengan sebuah huruf atau garis bawah. Karakter-karakter lain dalam sebuah identifier dapat berupa huruf, angka, garis bawah, atau tanda dollar. Compiler C++ membedakan huruf kecil dan besar. Variabel NAMA_PEGAWAI dan nama_pegawai dipandang sebagai dua identifier yang menggambarkan variabel memori yang berbeda. Contoh identifier yang diperkenankan untuk dipakai: a atau akelas atau kelas$ atau _kelas atau _KELAS$, sedangkan identifier yang tidak diperbolehkan untuk dipakai: $KELAS atau 7kelas atau kelas! atau ..kelas.
2. Himpunan Karakter
Himpunan karakter pada C++ terdiri dari huruf, digit maupun simbol-simbol lainnya (termasuk spasi, karakter kontrol)Huruf: A B C D E F G H I J K L M N O P Q R S T U V W X Z Y a b c d e f g h i j k l m n o p q r s t u v w x y z
Digit: 0 1 2 3 4 5 6 7 8 9
Simbol dan lain-lain: _ - + * dan sebagainya.
3. Kata-kata Kunci
Kata kunci (keyword) adalah pengenal sistem yang mempunyai makna khusus bagi kompiler. Kegunaan dari golongan ini tidak dapat diubah. Karena itu kata kunci tidak dapat digunakan sebagai pengenal yang dibuat oleh pemrogram.
Kata kunci diusulkan ANSI:auto, double, int, struct, break, else, loop, switch, case, enum, register, typedef, char, extern, return, union, const, float, short, unsigned, continue, for, signed, void, default, goto, sizeof, volatile, do, if, static, while
Sedangkan turbo C memperluasnya dengan menambahkan beberapa kata kunci:
_cs, _ss, far, near, _ds, asm, huge, pascal, _es, cdecl, interrupt
Sementara itu, Microsoft C/C++ menambah beberapa kata kunci:
_asm, _loadds, _cdecl, _huge, _far, _pascal, _export, _interrupt, _fortran, _segname, _near, _saveregs, _segment, _syscall, _self, _stdcall, _fastcall, _based
4. Tipe Data Bahasa C++
Tipe data dasar pada C++, yakni: teks (char), nilai integer (int, short, long), nilai floating-point (float, double, long double), dan enumerated (enum). Jika jenis data yang didefinisikan adalah variabel enumerated, maka ini terkait dengan konstanta integer yang telah diberi nama enumeration set. Dalam bahasa pemrograman C, jenis enum dianggap ekivalen dengan jenis int, sehingga memungkinkan sebuah program untuk memberikan nilai integer langsung pada variabel enumerated. Namun dalam bahasa pemrograman C++, ada mekanisme pemeriksaan jenis data yang ketat, dan tidak memperkenankan operasi campuran seperti ini.
Setiap bahasa memakai seperangkat karakter untuk mengekspresikan pernyataan yang mengandung arti. Bahasa pemrograman C++ ditulis menggunakan sejumlah karakter yang meliputi: 26 huruf kecil (a, b, c, ... dstnya) dan 26 huruf besar (A, B, C, ... dstnya); 10 angka (0, 1, 2, 3, 4, 5, 6, 7, 8, 9); dan lambang-lambang (+ - * = / . , : ; ? ' \ " ! @ # $ % ^ & * ( ) { } [ ]).
Ukuran memori yang diperlukan untuk masing-masing tipe data sangat bergantung pada perangkat keras dari komputer yang digunakan. Karena itu jangkauan bilangan dari masing-masing tipe data juga bisa berlainan antara satu jenis mesin dengan mesin lainnya. Nilai yang tercakup pada tipe data bilangan (bulat maupun pecahan) pada arsitektur PC yang berbasis DOS, adalah sebagai berikut:
char 1 byte -128 s/d +127
int 2 byte -32768 hingga +32767
short 2 byte -32.768 s/d 32.767
long 4 byte -2.147.438.648 s/d 2.147.438.647
float 4 byte 3,4x10-36 s/d 3,4x10+38
double 8 byte 1,7x10-308 s/d 1,7x10+308
long double 10 byte 3,4x10_4932 s/d 1,1x10+4932
enum 2 byte -32.768 s/d 32.767
pointer 2 byte (near, based)
pointer 4 byte (far, huge)
4.1. Tipe Data Tertentu
Modifier unsigned:
Yang termasuk jenis data modifier unsigned yang dapat diterapkan pada char, int, short, long adalah void dan pointer. Bila salah satu jenis data di atas dimodifikasi menjadi usigned, dapat dipandang range nilai yang bisa dijangkau mempresentasikan bilangan seperti pada angka yang ditunjukkan oleh jumlah kilometer yang telah ditempuh pada mobil atau sepeda motor. Angka tersebut dimulai dari 0000... dan mencapai maksimum 9999..., dan kembali ke 0000... Jadi dalam unsigned, yang ditampilkan hanyalah bilangan positif keseluruhan dalam range nol sampai ke bilangan maksimum yang dapat diprepresentasikannya.
unsigned char 1 byte 0 s/d 255
unsigned int 2 byte 0 s/d 32767
unsigned short 2 byte 0 s/d 32.767
unsigned long 4 byte 0 s/d 2.147.438.647
Modifier signed:
Digunakan untuk memperluas tanda yang digunakan integer dan karakter. Cara ini memungkinkan untuk menyimpan suatu nilai dalam bentuk bilangan positif atau negatif.
Tipe data Ukuran memori Jangkauan nilaisigned char 1 byte -128 s/d +127
signed int 2 byte -32768 hingga +32767
signed short 2 byte -32.768 s/d 32.767
signed long 4 byte -2.147.438.648 s/d 2.147.438.647
Untuk mengetahui ukuran memori yang diperlukan oleh semua tipe data, bisa dilihat dengan meng-compiler dan mengeksekusi contoh program sederhana, berikut:
//* Menentukan ukuran memori *#include
#include
void main()
{
clrscr();
cout << "Ukuran char : " << sizeof(char) << '\n';
cout << "Ukuran short : " << sizeof(short) << '\n';
cout << "Ukuran int : " << sizeof(int) << '\n';
cout << "Ukuran long : " << sizeof(long) << '\n';
cout << "Ukuran float : " << sizeof(float) << '\n';
cout << "Ukuran double : " << sizeof(double) << '\n';
cout << "Ukuran long double : " << sizeof(long double) << '\n';
}
Penjelasan program:
Pemrograman C++ tidak terlepas dari fungsi. Sebab fungsi adalah salah satu dasar penyusunan blok pada C++. Sebuah program C++ minimal mengandung sebuah fungsi main(). Fungsi ini menjadi awal dan akhir eksekusi program C++. main adalah nama judul fungsi. Sedangkan yang dimulai dari tanda { hingga tanda } disebut tubuh fungsi. Semua yang terletak di dalam tanda {} disebut blok. Tanda () digunakan untuk mengapit argumen fungsi, yaitu nilai yang akan dilewatkan ke fungsi. Kata void yang mendahului main() dipakai untuk menyetakan bahwa fungsi ini tidak memiliki nilai balik.
Pengenal cout merupakan sebuah obyek di dalam C++. Obyek ini disediakan oleh C++ untuk mengarahkan data ke standard output (normalnya adalah layar), sebagai contoh tambahan misalnya:
cout << "Hallo! Selamat datang di website ideelok \n";
Tanda << merupakan sebuah operator yang disebut operator penyisipan/peletakan. Operator ini akan mengarahkan operand (data) yang terletak di sebelah kanan obyeknya ke obyek yang terletak di sebelah kiri. Pada pernyataan di atas, konstanta string "Hallo! Selamat datang di website ideelok \n" diarahkan ke cout, yang memberikan hasil berupa tampilan string tersebut ke layar. Didalam sebuah string, karakter \ diikuti dengan karakter tertentu menyatakan sebuah karakter tunggal. Pada contoh \n adalah karakter pindah baris (newline).
Pada baris #include , baris ini menginstruksikan kepada kompiler untuk menyiapkan file lain pada saat program dikompolasi. Dalam hal ini file-file yang berakhiran dengan .h disebut file header, yaitu file-file yang berisi berbagai deklarasi, seperti fungsi, variabel dan sebagainya. #include perlu disertakan pada program yang melibatkan obyek cout. Tanpa kehadiran baris tersebut akan terjadi kesalahan program sewaktu program dikompilasi. Sebab file iostream.h berisi deklarasi yang diperlukan oleh cout dan berbagai obyek yang berhubungan dengan operasi masukan-keluaran pada stream.
Pada baris clrscr(); adalah perintah untuk menghapus layar. Apabila pernyataan di atas digunakan, baris #include perlu disertakan dalam program.
5. Variabel dan Konstanta Bahasa C++
Data pada C++ tersusun dari variabel dan konstanta. Variabel merupakan komponen penting pada pemrograman. Variabel digunakan dalam program untuk menyimpan suatu nilai, dengan nilai yang ada padanya dapat diubah selama eksekusi program berlangsung. Adapun konstanta menyatakan nilai yang tetap. Misalnya 234 adalah sebuah konstanta bilangan bulat.
5.1. Mendeklarasikan dan Mendefinisikan Variabel
Variabel yang akan digunakan dalam program haruslah dideklarasikan terlebih dahulu, maksudnya mengenalkan sebuah pengenal ke program dan menentukan jenis data yang bisa disimpan di dalamnya. Apabila suatu pendeklarasian menyebabkan pengalokasian memori, maka pendeklarasian tersebut dinamakan pendefinisian. Yang jelas pendefinisian berarti pula pendeklarasian, tetapi tidak semua pendeklarasian berarti pendefinisian.bentuk pendefinisian variabel:
tipe daftar_variabel;
Pada pendefinisian variabel, daftar_variabel dapat berupa sebuah variabel atau beberapa variabel yang dipisahkan dengan koma.
5.2. Memberikan Nilai ke Variabel
Bentuk pernyataan yang digunakan untuk memberikan nilai ke variabel adalah:variabel = nilai;
Contoh:
jumlah = 10;
harga_barang = 1500;
5.3. Variabel dan Konstanta Bertipe char
Bentuk pernyataan variabel bertipe char:char karakter;
Dalam hal ini variabel karakter bertipe char. Variabel ini dapat menampung data sebuah karakter. Untuk menuliskan sebuah konstanta bertipe char, karakter perlu ditulis di dalam tanda petik tunggal, contoh: 'A' karakter berupa huruf A.
Karakter yang ditulis dengan bentuk \karakter mempunyai arti tersendiri (karakter khusus) dan biasa disebut escape sequence characters.
Karakter-karakter khusus tersebut antara lain:
\0 artinya karakter ber-ASCII nol (karakter nul)
\a artinya karakter bel
\b artinya karakter backspace
\f artinya karakter formfeed (ganti halaman)
\n artinya karakter newline (pindah baris)
\r artinya karakter carriage return (ke awal baris) tanpa linefeed
\t artinya karakter tab horizontal
\v artinya karakter tab vertikal
\\ artinya karakter \
\' artinya karakter '
\" artinya karakter "
\? artinya karakter ?
\ooo artinya karakter yang nilai oktalnya adalah ooo (tiga digit oktal)
\xhh artinya karakter yang nilai heksadesimalnya adalah hh (dua digit heksadesimal)
5.4. Variabel dan Konstanta Bertipe int
Variabel bertipe int didefinisikan dengan bentuk:int bilangan;
Setelah pendefinisian seperti itu, variabel ini dapat digunakan untuk menampung nilai bertipe int. Sebuah konstanta bertipe int adalah bilangan bulat yang terletak antara minus 32768 hingga plus 32767 (pada PC berbasis DOS) dan tidak mengandung titik desimal.
5.5. Variabel dan Konstanta Bertipe long
Apabila diinginkan untuk memproses bilangan bulat yang nilainya lebih besar daripada tipe int, Anda dapat menggunakan tipe long. Suatu variabel bertipe long didefinisikan dengan cara seperti di bawah ini:long jumlah_penduduk;
Pada contoh ini, jumlah_penduduk didefinisikan bertipe long. Dengan demikian variabel ini dapat menampung nilai ratusan juta. Adapun konstanta bertipe long biasa ditulis dengan akhiran L. Sebagai contoh: 1543267635435L
5.6. Variabel dan Konstanta Bertipe float, double dan long double
Tipe-tipe data yang telah dibahas di depan (char, int dan long) berhubungan dengan bilangan bulat. Seandainya diinginkan untuk memproses bilangan yang mengandung nilai pecahan, bisa menggunakan tipe float, double atau long double. Ketiga tipe yang berhubungan dengan bilangan pecahan ini mempunyai perbedaan dalam hal: kepresisian data, dan jangkauan nilai yang dicakup.
Contoh pendefinisian variabel untuk menampung bilangan pecahan:float panjang;
double phi;
long double tetapan;
5.7. Inisialisasi Variabel
Adakalanya dalam penulisan program, variabel langsung diberi nilai awal setelah didefinisikan. Sebagai contoh:int jumlah;
jumlah = 80;
Dua pernyataan seperti di atas sebenarnya dapat diangkat melalui pendefinisian yang disertai penugasan nilai, seperti berikut:
int jumlah = 80;
OPERATOR BAHASA PEMROGRAMAN C++
Operator merupakan simbol yang biasa dilibatkan dalam program untuk melakukan sesuatu operasi atau manipulasi, misalnya untuk menjumlahkan dua buah nilai, memberikan nilai pada suatu variabel, ataupun membandingkan kesamaan dua buah nilai. Bahasa pemrograman C++ mempunyai banyak operator yang tidak didapat dalam bahasa pemrograman lain, antara lain: operator bitwise, operator inkremen dan dekremen, operator kondisional, operator koma, operator aritmatika dan lain-lain.
a) Operator bitwise
Operator bitwise pada bahasa pemrograman C++ memperlakukan variabel sebagai gabungan dari bit-bit dan bukan sebagai bilangan. Operator ini berguna untuk mengakses bit-bit individual dalam memori, seperti memori screen untuk display grafik, informasi CapsLock (on atau off). Operator bitwise ini hanya dapat beroperasi pada jenis data integral, bukan bilangan floating-point. Tiga operator bitwise berkelakuan seperti operator logika, namun ini terjadi pada setiap bit dalam sebuah integer, yakni: AND (&), OR(I), dan XOR (^), komplemen (~) membalik (menginversi) setiap bit, operator shift kiri (<<), dan operator shift kanan (>>).
ANDSimbol operator: &, dengan bentuk penggunaan : operand1 & operand2Operasi AND bitwise membandingkan dua bit; jika kedua bit tersebut adalah 1, maka hasilnya 1, selain itu hasilnya 0.
Logika AND:
Bit 0 Bit 1 Hasil
0 0 0
0 1 0
1 0 1
1 1 1
OR
Simbol operator I, dengan bentuk pemakaian : operand1 I opeand2
Operasi OR bitwise membandingkan dua bit dan memberikan hasil 1 jika kedua bit yang dibandingkan itu salah satu atau keduanya 1.
Logika OR:
Bit 0 Bit 1 Hasil
0 0 0
0 1 1
1 0 1
1 1 1
XOR
Simbul operator: ^, dengan bentuk penggunaan : operand1 ^ operand2
Operasi EXCLUSIVE OR (XOR) bitwise membandingkan dua bit dan memberikan hasil 1 bila kedua bit merupakan komplementer satu sama lain.
Logika XOR:
Bit 0 Bit 1 Hasil
0 0 0
0 1 1
1 0 1
1 1 0
Contoh program operasi I, & dan ^:
//* Efek operator I, & dan ^ *
#include
#include
void main()
{
unsigned char angka1 = 81;
unsigned char angka2 = 99;
unsigned char a, b, c;
clrscr();
a = angka1 I angka2; //operasi OR
b = angka1 & angka2; //operasi AND
c = angka1 ^ angka2; //operasi XOR
cout << "a= " << a << '\n';
cout << "b= " << b << '\n';
cout << "c= " << c << '\n';
}
Hasil eksekusi program di atas, adalah:
a= 115
b= 65
c= 50
Penjelasan hasil program:
Operasi OR pada a:
0000 0000 0101 0001 <- 81="81" br="br">0000 0000 0110 0011 <- 99="99" br="br">-------------------------------
0000 0000 0 1 1 0011 <- 115="115" br="br">
Operasi AND pada b:
0000 0000 0101 0001 <- 81="81" br="br">0000 0000 0110 0011 <- 99="99" br="br">-------------------------------
0000 0000 0100 0001 <- 65="65" br="br">
Operasi XOR pada c:
0000 0000 0101 0001 <- 81="81" br="br">0000 0000 0110 0011 <- 99="99" br="br">-------------------------------
0000 0000 0011 0010 <- 50="50" p="p">
b) Operator Shift
Operator >> dan << pada bahasa pemrograman C++ berguna untuk menggeser bit-bit dalam suatu bilangan bulat ke kiri atau ke kanan. Shift kiri menggerakkan bit-bit ke kiri dan mengatur bit paling kanan (yang tidak signifikan) menjadi nol. Sedangkan bit paling kiri (paling signifikan) yang ter-shift keluar akan dibuang. Sementara itu, operator shift kanan menggerakkan bit-bit ke kanan. Bit-bit dengan orde lebih rendah yang ter-shift keluar akan dibuang. Pergeseran bit ke kiri mempunyai efek seperti perkalian, sedangkan pergeseran ke kanan memberikan efek seperti pembagian.
b.1) Operastor shift kiri
Bentuk umum dipakai: nilai << jumlah bit digeser ke kiri
Setiap pergeseran sebuah bit akan memberikan pengaruh seperti halnya perkalian dengan bilangan dua. Untuk lebih jelasnya perhatikan contoh berikut beserta hasilnya:
//* Operator SHIFT KIRI *
#include
#include
main()
{
unsigned char x = 93;
clrscr();
cout << "Nilai x semula = " << x << '\n';
x = x << 1; // geser ke kiri 1 bit
cout << "Nilai x kini = " << x << '\n';
}
Hasil eksekusi program:
Nilai x semula = 93
Nilai x kini = 186
Penjelasan hasil program:
0000 0000 0101 1101 <- 93="93" br="br">digeser ke kiri 1 bit
0000 0000 1011 1010 <- 186="186" br="br">di bagian kanan selalu disisipi dengan nol sebanyak bit yang digeser.
b.2) Operator shift kanan
Bentuk umum dipakai: nilai >> jumlah bit digeser ke kanan
Setiap pergeseran sebuah bit akan memberikan pengaruh seperti halnya pembagian dengan bilangan dua. Untuk lebih jelasnya perhatikan contoh berikut beserta hasilnya:
//* OPERATOR SHIFT KANAN *
#include
#include
void main()
{
unsigned char x = 93;
clrscr();
cout << "Nilai x semula = " << x << '\n';
x = x >> 1; // geser kekanan 1 bit
cout << "Nilai x kini = " << x << '/n';
}
Hasil eksekusi program:
Nilai x semula = 93
Nilai x kini = 46
Penjelasan hasil program:
0000 0000 0101 1101 <- 93="93" br="br">digeser ke ke kanan 1 bit
0000 0000 0010 1110 <- 186="186" br="br">di bagian kiri selalu disisipi dengan nol sebanyak bit yang digeser.
c) Operator Komplemen
Operator ini mempunyai sifat membalik (menginversi) nilai setiap bit. Jika bit operand bernilai 1 hasilnya 0, dan bila bit operand bernilai 0 hasilnya 1.
Contoh pemakaian operator komplemen:
//* Operator komplemen *
#include
#include
main()
{
unsigned char nilai = 81;
unsigned char a;
clrscr();
a = ~nilai; // komplemen dari nilai
cout << "a = " << a << '\n';
}
Hasil eksekusi program:
a = 65454
Penjelasan hasil program:
0000 0000 0101 0001 <- 81="81" br="br">inversinya menjadi
1111 1111 1010 1110 <- 6554="6554" br="br">
d) Operator Aritmatika
Bahasa C++ melibatkan operator aritmatika standar untuk penjumlahan (+), pengurangan (-), perkalian (*), pembagian (/), dan modulus (%). Operator aritmatika tersebut tergolong sebagai operator binary. Adapun operator yang tergolong sebagai operator unary yaitu tanda minus (-), dan tanda plus (+).
Prioritas operator :
Operator dengan prioritas tinggi akan diutamakan dalam hal pengerjaan dibandingkan dengan operator yang memiliki prioritas lebih rendah.
Prioritas 1: + --
Prioritas 2: - (unary minus)
Prioritas 3: * / %
Prioritas 4: + -
Apabila operastor memiliki prioritas yang sama, operator yang terletak disebelah kiri dalam suatu ungkapan yang akan diutamakan untuk dikerjakan terlebih dahulu.
Tanda kurung biasa digunakan untuk urutan mengerjakan, misalnya x = (2 + 3) * 2;
(2 + 3 akan dikerjakan terlebih dahulu baru dikalikan dengan 2)
Contoh program:
//* Operasi aritmatika dengan menggunakan tanda kurung) *
#include
#include
void main()
{
clrscr();
int x;
x = 2 + 3 * 2;
cout << "x= " << x << '\n';
x = (2 + 3) * 2;
cout << "x= " << x << '\n';
}
Hasil eksekusi program:
x= 8
x= 12
Operator seperti penjumlahan, pengurangan, perkalian dan pembagian merupakan hal yang umum. Adapun operator sisa pembagian (operator modulus) yang berupa % ada baiknya untuk diterangkan lebih lanjut. Operator ini diterapkan pada operan bertipe integer. Untuk lebih jelasnya perhatikan beberapa contoh berikut:
7 % 2 -> 1 sisa pembagian bilangan 7 dengan 2 adalah 1
9 % 5 -> 4 sisa pembagian bilangan 9 dengan 5 adalah 4
Contoh program
//* sisa pembagian (modulus) *
#include
#include
void main()
{
clrscr();
cout << 9 % 5 << '\n';
cout << 13 % 5 << '\n';
}
Hasil eksekusi program:
4
3
e) Operator Assigenment
Operator assigenment dalam bahasa pemrograman C/C++ berbeda dengan statement assigenment dalam bahasa yang lain. Assigenment dilakukan oleh operator assigenment dan bukan oleh staement assigenment. Seperti operator bahasa pemrograman C++ yang lain, hasil operator assigenment merupakan nilai yang diberikan. Misalnya :
nilai = 4 * (bilangan = 3)
Disini bilangan diberikan nilai 3. Nilai 3 ini dikali dengan 4, sehingga nilai mendapatkan hasil akhir 12.
Tidak ada komentar:
Posting Komentar