Professional Documents
Culture Documents
PEMROGRAMAN KOMPUTER
Disusun Oleh:
Aris Sigit 03.2009.1.06587
Wisnu Anggriawan 03.2009.1.06608
Wahyu Wido H 03.2009.1.06654
Ahmad Teguh Santoso 03.2009.1.06671
LM. Ali Asri Bosa 03.2009.1.06674
Aji Tri Mulyanto 03.2009.1.06683
Irham Hadi Pratama 03.2009.1.06686
i
KATA PENGANTAR
Penulis
ii
DAFTAR ISI
HALAMAN JUDUL.................................................................................. i
KATA PENGANTAR ............................................................................... ii
DAFTAR ISI.............................................................................................. iii
BAB I PENDAHULUAN
A Latar Belakang ............................................................................. 1
B Tujuan........................................................................................... 2
BAB II ISI
Pertemuan 1 SEJARAH PERKEMBANGAN KOMPUTER.................... 3
1.1 Komputer Generasi I ..................................................................... 3
1.2 Komputer Generasi II.................................................................... 4
1.3 Komputer Generasi III .................................................................. 6
1.4 Komputer Generasi IV .................................................................. 6
1.5 Komputer Generasi V ................................................................... 7
Pertemuan 2 ALGORITMA DAN DIAGRAM ALIR .............................. 9
2.1 Algoritma ....................................................................................... 10
2.2 Diagram Alir (Flowchart) .............................................................. 10
Pertemuan 3 PEGENALAN PROGRAM C++.......................................... 12
3.1 Tentang C++ .................................................................................. 12
3.2 Borland C++................................................................................... 12
3.3 Main ............................................................................................... 12
3.4 Pernyataan ...................................................................................... 13
3.5 Gaya Penulisan Program ............................................................... 14
3.6 Bagian Komentar ........................................................................... 15
3.7 Include............................................................................................ 15
Pertemuan 4 ELEMEN DASAR C++........................................................ 16
4.1 Konstanta ....................................................................................... 16
4.2 Operator.......................................................................................... 17
4.3 Variabel .......................................................................................... 17
iii
Pertemuan 5 OPERATOR DAN UNGKAPAN ........................................ 19
5.1 Pengantar Operator dan Ungkapan (Ekspresi)............................... 19
5.2 Operator aritmatika ...................................................................... 19
5.3 Operator Bitwise ............................................................................ 20
5.4 Operator penugasan........................................................................ 21
5.5 Operator Relasi.............................................................................. 21
5.6 Operator Logika............................................................................. 22
5.7 Operator Unary.............................................................................. 22
Pertemuan 6 OPERASI DASAR MASUKAN DAN KELUARAN.......... 24
6.1 Cout ............................................................................................... 24
6.2 Cin .................................................................................................. 24
6.3 Manipulator .................................................................................... 25
Pertemuan 7 PERNYATAAN DASAR ..................................................... 27
7.1 If, Else If, dan Else......................................................................... 27
7.2 If ..................................................................................................... 27
7.3 Else................................................................................................. 27
7.4 Else If ............................................................................................. 28
7.5 Switch............................................................................................. 29
Pertemuan 9 FUNGSI ................................................................................ 31
9.1 Prototipe Fungsi ............................................................................. 31
9.2 Definisi Fungsi ............................................................................... 32
9.3 Lingkup Variabel ........................................................................... 33
9.3.1 Varabel Otomatis (lokal).......................................................... 34
9.3.2 Variable Eksternal(global) ....................................................... 35
9.4 Referensi ........................................................................................ 36
9.5 Rekursi ........................................................................................... 37
Pertemuan 10 ARRAY (VARIABEL BERINDEKS) ............................... 39
10.1 Array 1 Dimensi............................................................................ 39
10.2 Array Berdimensi Dua dan Operasi Matrik ................................. 41
iv
Pertemuan 11 STRING .............................................................................. 42
11.1 Pengantar String ............................................................................ 42
11.2 Konstanta String............................................................................ 42
11.3 Memasukan Data String................................................................ 42
11.4 Fungsi untuk string........................................................................ 44
11.4.1 Fungsi getline() ....................................................................... 44
11.4.2 Fungsi strcpy ........................................................................... 45
11.4.3 Fungsi toupper dan tolower .................................................... 46
11.4.4 Fungsi strlen() ......................................................................... 47
11.4.4 Fungsi strlwr() dan strupr......................................................... 47
Pertemuan 12 POINTER............................................................................ 49
12.1 Pengertian Pointer ......................................................................... 49
12.2 Alamat pointer............................................................................... 49
12.3 Variabel Pointer ............................................................................ 50
12.4 Nilai yang di tunjuk pointer .......................................................... 51
12.5 void pointer ....................................................................................... 51
12.6 Memory pointer ................................................................................ 51
12.7 Pointer Penunjuk Pointer (pointer to pointer)............................... 56
Pertemuan 13 STRUKTUR DAN ENUM ................................................. 58
13.1 Struktur.......................................................................................... 58
13.2 UNION.......................................................................................... 58
13.3 Bitfield .......................................................................................... 58
13.4 ENUM ........................................................................................... 64
Pertemuan 14 TYPE................................................................................... 66
14.1 Tipe Data....................................................................................... 66
14.2 Tipe Deskripsi ............................................................................... 66
14.3 Floating Point ( Bilangan Pecahan ).............................................. 66
14.3.1 Tipe Deskripsi ....................................................................... 67
14.3.1.1 Char ............................................................................. 67
14.3.1.2 Tipe Data Referensi...................................................... 67
v
BAB IV PENUTUP
A. Kesimpulan ...................................................................................... 68
vi
BAB I
PENDAHULUAN
A. Latar Belakang
1
jika program tak mengandung kesalahan secara kaidah sama sekali.
B. Tujuan
2
BAB II
ISI
Pertemuan 1
3
amerika Serikat dan University of Pennsylvania. Terdiri dari 18.000 tabung
vakum, 70.000 resistor, dan 5 juta titik solder, komputer tersebut merupakan
mesin yang sangat besar yang mengonsumsi daya sebesar 160kW. Komputer ini
dirancang oleh John Presper Eckert (1919-1995) dan John W. Mauchly (1907-
1980), ENIAC merupakan komputer serbaguna (general purpose computer) yang
bekerja 1000 kali lebih cepat dibandingkan Mark I.
Pada pertengahan 1940-an, John von Neumann (1903-1957) bergabung
dengan tim University of Pennsylvania dalam usha membangun konsep desain
komputer yang hingga 40 tahun mendatang masih dipakai dalam teknik komputer.
von Neumann mendesain Electronic Discrete Variable Automatic Computer
(EDVAC) pada tahun 1945 dengan sebuh memori untuk menampung baik
program ataupun data. Teknik ini memungkinkan komputer untuk berhenti pada
suatu saat dan kemudian melanjutkan pekerjaannya kembali. Kunci utama
arsitektur Von Neumann adalah unit pemrosesan sentral (CPU), yang
memungkinkan seluruh fungsi komputer untuk dikoordinasikan melalui satu
sumber tunggal.
Tahun 1951, UNIVAC I (Universal Automatic Computer I) yang dibuat
oleh Remington Rand, menjadi komputer komersial pertama. Komputer Generasi
pertama dikarakteristik dengan fakta bahwa instruksi operasi dibuat secara
spesifik untuk suatu tugas tertentu. Setiap komputer memiliki program kode-biner
yang berbeda yang disebut "bahasa mesin" (machine language). Hal ini
menyebabkan komputer sulit untuk diprogram dan membatasi kecepatannya. Ciri
lain komputer generasi pertama adalah penggunaan tube vakum (yang membuat
komputer pada masa tersebut berukuran sangat besar) dan silinder magnetik untuk
penyimpanan data.
1.2 Komputer Generasi II
Pada tahun 1948, penemuan transistor sangat mempengaruhi
perkembangan komputer. Transistor menggantikan tube vakum di televisi, radio,
dan komputer. Akibatnya, ukuran mesin-mesin elektrik berkurang drastis.
Transistor mulai digunakan di dalam komputer mulai pada tahun 1956. Penemuan
lain yang berupa pengembangan memori inti-magnetik membantu pengembangan
4
komputer generasi kedua yang lebih kecil, lebih cepat, lebih dapat diandalkan, dan
lebih hemat energi dibanding para pendahulunya. Mesin pertama yang
memanfaatkan teknologi baru ini adalah superkomputer. IBM membuat
superkomputer bernama Stretch, dan Sprery-Rand membuat komputer bernama
LARC. komputer ini, yang dikembangkan untuk laboratorium energi atom, dapat
menangani sejumlah besar data, sebuah kemampuan yang sangat dibutuhkan oleh
peneliti atom. Mesin tersebut sangat mahal dan cenderung terlalu kompleks untuk
kebutuhan komputasi bisnis, sehingga membatasi kepopulerannya.
Hanya ada dua LARC yang pernah dipasang dan digunakan: satu di
Lawrence Radiation Labs di Livermore, California, dan yang lainnya di US Navy
Research and Development Center di Washington D.C. Komputer generasi kedua
menggantikan bahasa mesin dengan bahasa assembly. Bahasa assembly adalah
bahasa yang menggunakan singkatan-singakatan untuk menggantikan kode biner.
Pada awal 1960-an, Komputer-komputer generasi kedua ini merupakan komputer
yang sepenuhnya menggunakan transistor. Mereka juga memiliki komponen-
komponen yang dapat diasosiasikan dengan komputer pada saat ini: printer,
penyimpanan dalam disket, memory, sistem operasi, dan program. Salah satu
contoh penting komputer pada masa ini adalah IBM 1401 yang diterima secara
luas di kalangan industri.
Pada tahun 1965, hampir seluruh bisnis-bisnis besar menggunakan
komputer generasi kedua untuk memproses informasi keuangan. Program yang
tersimpan di dalam komputer dan bahasa pemrograman yang ada di dalamnya
memberikan fleksibilitas kepada komputer. Fleksibilitas ini meningkatkan kinerja
dengan harga yang pantas bagi penggunaan bisnis. Dengan konsep ini, komputer
dapat mencetak faktur pembelian konsumen dan kemudian menjalankan desain
produk atau menghitung daftar gaji. Beberapa bahasa pemrograman mulai
bermunculan pada saat itu. Bahasa pemrograman Common Business-Oriented
Language (COBOL) dan Formula Translator (FORTRAN) mulai umum
digunakan. Bahasa pemrograman ini menggantikan kode mesin yang rumit
dengan kata-kata, kalimat, dan formula matematika yang lebih mudah dipahami
oleh manusia.
5
1.3 Komputer Generasi III
Walaupun transistor dalam banyak hal mengungguli tube vakum, namun
transistor menghasilkan panas yang cukup besar, yang dapat berpotensi merusak
bagian-bagian internal komputer. Batu kuarsa (quartz rock) menghilangkan
masalah ini.
Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit
terintegrasi (IC : integrated circuit) di tahun 1958. IC mengkombinasikan tiga
komponen elektronik dalam sebuah piringan silikon kecil yang terbuat dari pasir
kuarsa.Para ilmuwan kemudian berhasil memasukkan lebih banyak komponen-
komponen ke dalam suatu chip tunggal yang disebut semikonduktor. Hasilnya,
komputer menjadi semakin kecil karena komponenkomponen dapat dipadatkan
dalam chip. Kemajuan komputer generasi ketiga lainnya adalah penggunaan
sistem operasi (operating system) yang memungkinkan mesin untuk menjalankan
berbagai program yang berbeda secara serentak dengan sebuah program utama
yang memonitor dan mengkoordinasi memori komputer.
1.4 Komputer Generasi IV
Setelah IC, tujuan pengembangan menjadi lebih jelas: mengecilkan ukuran
sirkuit dan komponen-komponen elektrik. Large Scale Integration (LSI) dapat
memuat ratusan komponen dalam sebuah chip.
Pada tahun 1980-an, Very Large Scale Integration (VLSI) memuat ribuan
komponen dalam sebuah chip tunggal. Ultra-Large Scale Integration (ULSI)
meningkatkan jumlah tersebut menjadi jutaan. Chip Intel 4004 yang dibuat pada
tahun 1971 membawa kemajuan pada IC dengan meletakkan seluruh komponen
dari sebuah komputer (central processing unit, memori, dan kendali input/output)
dalam sebuah chip yang sangat kecil.
Sebelumnya, IC dibuat untuk mengerjakan suatu tugas tertentu yang
spesifik. Sekarang, sebuah mikroprosesor dapat diproduksi dan kemudian
diprogram untuk memenuhi seluruh kebutuhan yang diinginkan. Tidak lama
kemudian, setiap perangkat rumah tangga seperti microwave oven, televisi, dan
mobil dengan electronic fuel injection dilengkapi dengan mikroprosesor.
6
Perkembangan komputer memungkinkan orang-orang biasa untuk menggunakan
komputer biasa. Komputer tidak lagi menjadi dominasi perusahaan-perusahaan
besar atau lembaga pemerintah.
Pada pertengahan tahun 1970-an, perakit komputer menawarkan produk
komputer mereka ke masyarakat umum. Komputer-komputer ini, yang disebut
minikomputer, dijual dengan paket piranti lunak yang mudah digunakan oleh
kalangan awam. Piranti lunak yang paling populer pada saat itu adalah program
word processing Pada tahun 1981, IBM memperkenalkan penggunaan Personal
Computer (PC) untuk penggunaan di rumah, kantor, dan sekolah. Jumlah PC yang
digunakan melonjak dari tahun ke tahun. Komputer melanjutkan evolusinya
menuju ukuran yang lebih kecil, dari komputer yang berada di atas meja (desktop
computer) menjadi komputer yang dapat dimasukkan ke dalam tas (laptop), atau
bahkan komputer yang dapat digenggam (palmtop). IBM PC bersaing dengan
Apple Macintosh dalam memperebutkan pasar komputer. Apple Macintosh
menjadi terkenal karena mempopulerkan sistem grafis pada komputernya,
sementara saingannya masih menggunakan komputer yang berbasis teks.
Macintosh juga mempopulerkan penggunaan piranti mouse.
Pada masa sekarang, kita mengenal perjalanan IBM compatible dengan
pemakaian CPU: IBM PC/486, Pentium, Pentium II, Pentium III, Pentium IV
(Serial dari CPU buatan Intel). Juga kita kenal AMD k6, Athlon, dsb. Ini semua
masuk dalam golongan komputer generasi keempat.
Cara-cara baru untuk menggali potensial terus dikembangkan. komputer dapat
dihubungkan secara bersamaan dalam suatu jaringan untuk saling berbagi
memori, piranti lunak, informasi, dan juga untuk dapat saling berkomunikasi satu
dengan yang lainnya. Dengan menggunakan perkabelan langsung (disebut juga
local area network, LAN), atau kabel telepon, jaringan ini dapat berkembang
menjadi sangat besar.
1.5 Komputer Generasi V
Mendefinisikan komputer generasi kelima menjadi cukup sulit karena
tahap ini masih sangat muda. Contoh imajinatif komputer generasi kelima adalah
komputer fiksi HAL9000 dari novel karya Arthur C. Clarke berjudul 2001: Space
7
Odyssey. HAL menampilkan seluruh fungsi yang diinginkan dari sebuah
komputer generasi kelima. Dengan kecerdasan buatan (artificial intelligence),
HAL dapat cukup memiliki nalar untuk melakukan percapakan dengan manusia,
menggunakan masukan visual, dan belajar dari pengalamannya sendiri.
Walaupun mungkin realisasi HAL9000 masih jauh dari kenyataan, banyak
fungsi-fungsi yang dimilikinya sudah terwujud. Beberapa komputer dapat
menerima instruksi secara lisan dan mampu meniru nalar manusia. Namun
fasilitas tersebut menjadi jauh lebih rumit dari yang diduga ketika programmer
menyadari bahwa pengertian manusia sangat bergantung pada konteks dan
pengertian ketimbang sekedar menterjemahkan kata-kata secara langsung. Banyak
kemajuan di bidang desain komputer dan teknologi semakin memungkinkan
pembuatan komputer generasi kelima.
Dua kemajuan rekayasa yang terutama adalah kemampuan pemrosesan
paralel, yang akan menggantikan model non Neumann. Model non Neumann akan
digantikan dengan sistem yang mampu mengkoordinasikan banyak CPU untuk
bekerja secara serempak. Kemajuan lain adalah teknologi superkonduktor yang
memungkinkan aliran elektrik tanpa ada hambatan apapun, yang nantinya dapat
mempercepat kecepatan informasi.
Jepang adalah negara yang terkenal dalam sosialisasi jargon dan proyek
komputer generasi kelima. Lembaga ICOT (Institute for new Computer
Technology) juga dibentuk untuk merealisasikannya. Banyak kabar yang
menyatakan bahwa proyek ini telah gagal, namun beberapa informasi lain bahwa
keberhasilan proyek komputer generasi kelima ini akan membawa perubahan baru
paradigma komputerisasi di dunia. Kita tunggu informasi mana yang lebih valid
dan membuahkan hasil.
8
BAB I
PENDAHULUAN
A. Latar Belakang
1
jika program tak mengandung kesalahan secara kaidah sama sekali.
B. Tujuan
2
BAB II
ISI
Pertemuan 1
3
amerika Serikat dan University of Pennsylvania. Terdiri dari 18.000 tabung
vakum, 70.000 resistor, dan 5 juta titik solder, komputer tersebut merupakan
mesin yang sangat besar yang mengonsumsi daya sebesar 160kW. Komputer ini
dirancang oleh John Presper Eckert (1919-1995) dan John W. Mauchly (1907-
1980), ENIAC merupakan komputer serbaguna (general purpose computer) yang
bekerja 1000 kali lebih cepat dibandingkan Mark I.
Pada pertengahan 1940-an, John von Neumann (1903-1957) bergabung
dengan tim University of Pennsylvania dalam usha membangun konsep desain
komputer yang hingga 40 tahun mendatang masih dipakai dalam teknik komputer.
von Neumann mendesain Electronic Discrete Variable Automatic Computer
(EDVAC) pada tahun 1945 dengan sebuh memori untuk menampung baik
program ataupun data. Teknik ini memungkinkan komputer untuk berhenti pada
suatu saat dan kemudian melanjutkan pekerjaannya kembali. Kunci utama
arsitektur Von Neumann adalah unit pemrosesan sentral (CPU), yang
memungkinkan seluruh fungsi komputer untuk dikoordinasikan melalui satu
sumber tunggal.
Tahun 1951, UNIVAC I (Universal Automatic Computer I) yang dibuat
oleh Remington Rand, menjadi komputer komersial pertama. Komputer Generasi
pertama dikarakteristik dengan fakta bahwa instruksi operasi dibuat secara
spesifik untuk suatu tugas tertentu. Setiap komputer memiliki program kode-biner
yang berbeda yang disebut "bahasa mesin" (machine language). Hal ini
menyebabkan komputer sulit untuk diprogram dan membatasi kecepatannya. Ciri
lain komputer generasi pertama adalah penggunaan tube vakum (yang membuat
komputer pada masa tersebut berukuran sangat besar) dan silinder magnetik untuk
penyimpanan data.
1.2 Komputer Generasi II
Pada tahun 1948, penemuan transistor sangat mempengaruhi
perkembangan komputer. Transistor menggantikan tube vakum di televisi, radio,
dan komputer. Akibatnya, ukuran mesin-mesin elektrik berkurang drastis.
Transistor mulai digunakan di dalam komputer mulai pada tahun 1956. Penemuan
lain yang berupa pengembangan memori inti-magnetik membantu pengembangan
4
komputer generasi kedua yang lebih kecil, lebih cepat, lebih dapat diandalkan, dan
lebih hemat energi dibanding para pendahulunya. Mesin pertama yang
memanfaatkan teknologi baru ini adalah superkomputer. IBM membuat
superkomputer bernama Stretch, dan Sprery-Rand membuat komputer bernama
LARC. komputer ini, yang dikembangkan untuk laboratorium energi atom, dapat
menangani sejumlah besar data, sebuah kemampuan yang sangat dibutuhkan oleh
peneliti atom. Mesin tersebut sangat mahal dan cenderung terlalu kompleks untuk
kebutuhan komputasi bisnis, sehingga membatasi kepopulerannya.
Hanya ada dua LARC yang pernah dipasang dan digunakan: satu di
Lawrence Radiation Labs di Livermore, California, dan yang lainnya di US Navy
Research and Development Center di Washington D.C. Komputer generasi kedua
menggantikan bahasa mesin dengan bahasa assembly. Bahasa assembly adalah
bahasa yang menggunakan singkatan-singakatan untuk menggantikan kode biner.
Pada awal 1960-an, Komputer-komputer generasi kedua ini merupakan komputer
yang sepenuhnya menggunakan transistor. Mereka juga memiliki komponen-
komponen yang dapat diasosiasikan dengan komputer pada saat ini: printer,
penyimpanan dalam disket, memory, sistem operasi, dan program. Salah satu
contoh penting komputer pada masa ini adalah IBM 1401 yang diterima secara
luas di kalangan industri.
Pada tahun 1965, hampir seluruh bisnis-bisnis besar menggunakan
komputer generasi kedua untuk memproses informasi keuangan. Program yang
tersimpan di dalam komputer dan bahasa pemrograman yang ada di dalamnya
memberikan fleksibilitas kepada komputer. Fleksibilitas ini meningkatkan kinerja
dengan harga yang pantas bagi penggunaan bisnis. Dengan konsep ini, komputer
dapat mencetak faktur pembelian konsumen dan kemudian menjalankan desain
produk atau menghitung daftar gaji. Beberapa bahasa pemrograman mulai
bermunculan pada saat itu. Bahasa pemrograman Common Business-Oriented
Language (COBOL) dan Formula Translator (FORTRAN) mulai umum
digunakan. Bahasa pemrograman ini menggantikan kode mesin yang rumit
dengan kata-kata, kalimat, dan formula matematika yang lebih mudah dipahami
oleh manusia.
5
1.3 Komputer Generasi III
Walaupun transistor dalam banyak hal mengungguli tube vakum, namun
transistor menghasilkan panas yang cukup besar, yang dapat berpotensi merusak
bagian-bagian internal komputer. Batu kuarsa (quartz rock) menghilangkan
masalah ini.
Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit
terintegrasi (IC : integrated circuit) di tahun 1958. IC mengkombinasikan tiga
komponen elektronik dalam sebuah piringan silikon kecil yang terbuat dari pasir
kuarsa.Para ilmuwan kemudian berhasil memasukkan lebih banyak komponen-
komponen ke dalam suatu chip tunggal yang disebut semikonduktor. Hasilnya,
komputer menjadi semakin kecil karena komponenkomponen dapat dipadatkan
dalam chip. Kemajuan komputer generasi ketiga lainnya adalah penggunaan
sistem operasi (operating system) yang memungkinkan mesin untuk menjalankan
berbagai program yang berbeda secara serentak dengan sebuah program utama
yang memonitor dan mengkoordinasi memori komputer.
1.4 Komputer Generasi IV
Setelah IC, tujuan pengembangan menjadi lebih jelas: mengecilkan ukuran
sirkuit dan komponen-komponen elektrik. Large Scale Integration (LSI) dapat
memuat ratusan komponen dalam sebuah chip.
Pada tahun 1980-an, Very Large Scale Integration (VLSI) memuat ribuan
komponen dalam sebuah chip tunggal. Ultra-Large Scale Integration (ULSI)
meningkatkan jumlah tersebut menjadi jutaan. Chip Intel 4004 yang dibuat pada
tahun 1971 membawa kemajuan pada IC dengan meletakkan seluruh komponen
dari sebuah komputer (central processing unit, memori, dan kendali input/output)
dalam sebuah chip yang sangat kecil.
Sebelumnya, IC dibuat untuk mengerjakan suatu tugas tertentu yang
spesifik. Sekarang, sebuah mikroprosesor dapat diproduksi dan kemudian
diprogram untuk memenuhi seluruh kebutuhan yang diinginkan. Tidak lama
kemudian, setiap perangkat rumah tangga seperti microwave oven, televisi, dan
mobil dengan electronic fuel injection dilengkapi dengan mikroprosesor.
6
Perkembangan komputer memungkinkan orang-orang biasa untuk menggunakan
komputer biasa. Komputer tidak lagi menjadi dominasi perusahaan-perusahaan
besar atau lembaga pemerintah.
Pada pertengahan tahun 1970-an, perakit komputer menawarkan produk
komputer mereka ke masyarakat umum. Komputer-komputer ini, yang disebut
minikomputer, dijual dengan paket piranti lunak yang mudah digunakan oleh
kalangan awam. Piranti lunak yang paling populer pada saat itu adalah program
word processing Pada tahun 1981, IBM memperkenalkan penggunaan Personal
Computer (PC) untuk penggunaan di rumah, kantor, dan sekolah. Jumlah PC yang
digunakan melonjak dari tahun ke tahun. Komputer melanjutkan evolusinya
menuju ukuran yang lebih kecil, dari komputer yang berada di atas meja (desktop
computer) menjadi komputer yang dapat dimasukkan ke dalam tas (laptop), atau
bahkan komputer yang dapat digenggam (palmtop). IBM PC bersaing dengan
Apple Macintosh dalam memperebutkan pasar komputer. Apple Macintosh
menjadi terkenal karena mempopulerkan sistem grafis pada komputernya,
sementara saingannya masih menggunakan komputer yang berbasis teks.
Macintosh juga mempopulerkan penggunaan piranti mouse.
Pada masa sekarang, kita mengenal perjalanan IBM compatible dengan
pemakaian CPU: IBM PC/486, Pentium, Pentium II, Pentium III, Pentium IV
(Serial dari CPU buatan Intel). Juga kita kenal AMD k6, Athlon, dsb. Ini semua
masuk dalam golongan komputer generasi keempat.
Cara-cara baru untuk menggali potensial terus dikembangkan. komputer dapat
dihubungkan secara bersamaan dalam suatu jaringan untuk saling berbagi
memori, piranti lunak, informasi, dan juga untuk dapat saling berkomunikasi satu
dengan yang lainnya. Dengan menggunakan perkabelan langsung (disebut juga
local area network, LAN), atau kabel telepon, jaringan ini dapat berkembang
menjadi sangat besar.
1.5 Komputer Generasi V
Mendefinisikan komputer generasi kelima menjadi cukup sulit karena
tahap ini masih sangat muda. Contoh imajinatif komputer generasi kelima adalah
komputer fiksi HAL9000 dari novel karya Arthur C. Clarke berjudul 2001: Space
7
Odyssey. HAL menampilkan seluruh fungsi yang diinginkan dari sebuah
komputer generasi kelima. Dengan kecerdasan buatan (artificial intelligence),
HAL dapat cukup memiliki nalar untuk melakukan percapakan dengan manusia,
menggunakan masukan visual, dan belajar dari pengalamannya sendiri.
Walaupun mungkin realisasi HAL9000 masih jauh dari kenyataan, banyak
fungsi-fungsi yang dimilikinya sudah terwujud. Beberapa komputer dapat
menerima instruksi secara lisan dan mampu meniru nalar manusia. Namun
fasilitas tersebut menjadi jauh lebih rumit dari yang diduga ketika programmer
menyadari bahwa pengertian manusia sangat bergantung pada konteks dan
pengertian ketimbang sekedar menterjemahkan kata-kata secara langsung. Banyak
kemajuan di bidang desain komputer dan teknologi semakin memungkinkan
pembuatan komputer generasi kelima.
Dua kemajuan rekayasa yang terutama adalah kemampuan pemrosesan
paralel, yang akan menggantikan model non Neumann. Model non Neumann akan
digantikan dengan sistem yang mampu mengkoordinasikan banyak CPU untuk
bekerja secara serempak. Kemajuan lain adalah teknologi superkonduktor yang
memungkinkan aliran elektrik tanpa ada hambatan apapun, yang nantinya dapat
mempercepat kecepatan informasi.
Jepang adalah negara yang terkenal dalam sosialisasi jargon dan proyek
komputer generasi kelima. Lembaga ICOT (Institute for new Computer
Technology) juga dibentuk untuk merealisasikannya. Banyak kabar yang
menyatakan bahwa proyek ini telah gagal, namun beberapa informasi lain bahwa
keberhasilan proyek komputer generasi kelima ini akan membawa perubahan baru
paradigma komputerisasi di dunia. Kita tunggu informasi mana yang lebih valid
dan membuahkan hasil.
8
Pertemuan 2
Gambar 2.1
9
Gambar 2.2 Gambar 2.3
Pseudo code
Pseudo code adalah urutan baris algoritma seperti kode pemrograman dan
tidak memiliki sintak yang baku. Pseudo code lebih umum digunakan oleh
programmer yang berpengalaman. Akan tetapi, flowchart lebih mudah dimengerti
oleh programmer pemula, pseudo code sangat mudah diimplementasikan ke
dalam kode program dibandingkan dengan flowchart. Kita bisa bebas menulis
pseudo code selama itu mudah dimengerti bagi orang lain. Tetapi disarankan
untuk menggunakan keyword yang umum digunakan seperti : if, then, else, while,
do, repeat, for, dan lainnya. Dan ikuti gaya penulisan pemrograman seperti Pascal,
C++ dan lain-lain. Perhatikan kode dibawah ini :
10
Mulai masukkan sebuah angka masukkan sebuah angka dan tampilkan
ambil angka yang sebelumnya dan tampilkan selesai walaupun pseudo code diatas
masih bisa dimengerti tetapi ada beberapa statemen yang ambigu. Dari baris
kedua, kita tidak tahu kemana angka tersebut disimpan dan kita juga tidak tahu
angka yang mana yang dimaksud untuk “angka yang sebelumnya”. Apakah angka
yang pertama atau yang kedua. Pseudo code diatas dapat dimodifikasi menjadi
seperti berikut :
1. Mulai
2. Masukkan A
3. Masukkan B, Tampilkan B
4. Tampilkan A
5. Selesai
Pseudo code diatas lebih baik dibandingkan sebelumnya. Kita bisa dengan
jelas melihat dimana angka disimpan dan angka yang mana yang ditampilkan.
Sekarang kita akan mengubah flowchart pada gambar 2.2
1. Mulai
2. Masukkan A dan B
3. C = A + B
4. Tampilkan C
5. Selesai
11
Pertemuan 3
12
Gambar 3.1 hsil eksekusi program 3.1
Jika diperhatikan ada perintah \n pada akhir “kalimat” hallo subagyo. Apa
itu? ”\n” adalah perintah dalam banyak bahasa pemrograman sebagai baris baru
(new line) jadi yang akan ditampilkan pada program adalah: Pada baris pertama,
seperti yang kita lihat, ada perintah #include <iostream>. Tanda ‘#’ adalah
preprocessor directive. Preprocessor directive adalah perintah – perintah yang
diberikan kepada compiler untuk melakukan definisi, memasukkan file library,
dll.
3.4Pernyataan
Pernyataan merupakan bagian program yang berupa instruksi kepada
computer untuk melakukan sesuatu. Menampilkan tulisan dilayar, menghitung
operasi aritmatika, membaca inputan dan lain sebagainya. Setiap pernyataan harus
diakhir dengan tanda titik koma “;”.
Baris (#include <iostream.h>) bukan merupakan suatu pernyataan baris
ini digunakan untuk menyisipkan file (iostream.h) ke dalam program. Pada contoh
diatas iostream.h disebut file header. File header tersebut diperlukan agar perintah
cout bias dijalankan. Apabila file heder tersenut dihapus maka akan terjadi error.
Perintah Untuk menampilkan Informasi Ke Layar
Contoh program 3.2 :
#include <iostream.h>
#include <conio.h>
void main()
{cout << " saya sedang belajar c++"; getch();}
13
Pengenal cout dapat digunakan untuk mengarahkan data ke standart output
(normalnya adalah layer). Tanda << merupakan operator yang berfungsi untuk
mengarahkan data yang terletak di sebelah kanannya ke objek yang berada di
sebelah kiri.
3.5 Gaya Penulisan Program
Bahasa C memberikan keleluasaan dalam menulis bentuk program.
Program di atas misalnya dapat ditulis kembali tanpa mengubah hasil eksekusi
program menjadi: program 3.3
#include <iostream.h>
#include <conio.h>
void main()
{cout << " saya sedang belajar c++"; getch();}
14
3.6 Bagian Komentar
Program yang baik pada umumnya diberi komentar yang akan membantu
orang lain maupun pembuat program itu untuk memahami program yang dibuat.
Dalam C atau C++ setiap tulisan yang diapit oleh symbol /* … */ atau setiap baris
yang dimulai dengan symbol // dianggap komentar. C++ tidak mengizinkan
komentar bersarang ( nested comment), namun Borland C++ lebih fleksibel dalam
hal ini.
Contoh C++ menggunakan komentar:program 3.5
#include<iostream.h>
main ()
{cout<<”nama :subagyo”; //untuk menampilkan nama}
15
Pertemuan 4
4.1 Konstanta
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses
pemrograman berlangsung. Nilai konstanta selalu tetap. Konstanta harus
didefinisikan terlebih dahulu di awal program. Konstanta dapat bernilai integer,
pecahan, karakter dan string. Contoh konstanta:
50;13;3;14;4;50005;’A’;’BahasaC’.
Selain itu, bahasa C++ juga menyediakan beberapa karakter khusus yang disebut
karakter escape, antara lain:
Konstanta karakter Karakter
‘A’ Karakter berupa huruf A
‘1’ Karakter berupa angka 1
‘*’ Karakter symbol
‘\\’ Karakter \ (harus ditulis dengan awalan \)
\0 Karakter ber- ASCII nol (karakter null)
\a Karakter bel
\b Karakter backspace
\f Karakter formfeed (ganti halaman)
\n Karakter newline (pindah baris)
\r Karakter carriage return(keawal baris) tanpa linefeed
\t Karakter tab horizontal
\v Karakter tab vertical
\\ Karakter \
\’ Karakter '
\” Karakter "
16
Konstanta karakter Karakter
\? Karakter ?
Contoh program 4.1:
#include <iostream.h>
main()
{const float phi = 3.14;
cout << " Nilai phi = " << phi;}
4.2 Operator
Operator (lambang-operasi) adalah simbol-simbol, baik berupa satu atau
beberapa karakter, yang menetapkan bagaimana suatu nilai dimanipulasi. itu
adalah:
! ~ - + * / % < > = | ^ ' ++ -- -= += /= %= << >> ==
!= <= >= |= && || ?: &= ^= <<= >>=
4.3 Variabel
Variable adalah suatu pengenal (identifier) yang digunakan untuk
mewakili suatu nilai tertentu di dalam proses program. Nilai dari suatu variabel
bisa diubah-ubah sesuai kebutuhan. Nama dari suatu variable dapat ditentukan
sendiri oleh pemrograman dengan aturan sebagai berikut:
1. Terdiri dari gabungan huruf dan angka dengan karakter pertama harus
berupa huruf.
2. Bahasa C++ bersifat case-sensitive artinya huruf besar dan kecil dianggap
berbeda. Jadi antara nim,NIM dan Nim dianggap berbeda.
3. Tidak boleh mengandung spasi
17
4. Tidak boleh mengandung symbol-symbol khusus, kecuali garis bawah
(underscore). Yang termasuk symbol khusus yang tidak diperbolehkan
antara lain: $,?,%,#,!,&,*(,),-,+,= dsb
5. Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
Contoh pendeklarasian variabel yang benar:
NPM,b,c,nama_siswa,a6547,nilai, dsb.
Contoh penanaman variable yang salah:
%nilai_siswa, 80siswa, rata-rata,ada spasi, penting!, dsb.
Contoh program 4.2:
#include <iostream.h>
void main()
{ int x,y,z;
x = 7;
y = 5;
z = x + y;
cout << " Hasil Penjumlahan = " << z; }
18
Pertemuan 5
19
Contoh program 5.1:
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr(); // untuk membersihkan layar
cout<<7 % 7 <<" n "; //sisa 0
cout<<9 % 7 <<" n "; //sisa 2
cout<<13 % 7 <<" n "; // sisa 6
getch();
}
20
if ( c % 8 == 0 )
putchar ( ' ' );
}
putchar ( '\n' );
}
21
Operator Arti Contoh
< Kurang Dari x< td>
<= Kurang Dari Sama Dengan x<=y (Apakah x kurang dari samadengan y)
> Lebih Besar x>y (Apakah x lebih dari y)
>= Lebih Besar Sama Dengan x>=y (Apakah x lebih dari sama dengan y)
== Sama Dengan x==y (Apakah x samadengan y)
!= Tidak Sama Dengan x!=y (Apakah x tidak samadengan y)
Contoh ungkapan kondisi yang menggunakan operator ralasi:
x==y
hasil ungkapan ini bernilai :
1 jika nilai x sama dengan nilai y
0 jika nilai x tidak sama dangan y
22
Operator Arti/Maksud Letak Contoh Equivalent
nilai 1 sesudah
Pengurangan dengan Sebelum dan
-- A-- A=A-1
pengurangan nilai 1 sesudah
Sizeof Ukuran dari operand dalam byte Sebelum Sizeof(I) -
! Unary NOT Sebelum !A -
~ Bitwise NOT Sebelum ~A -
Menghasilkan alamat memory
& Sebelum &A -
operand
* Menghasilkan nilai dari pointer Sebelum *A -
Contoh program 5.4:
#include <iostream.h>
#include <conio.h>
void main( )
{
int x, nilai;
clrscr( ) ;
x = 6;
nilai = ++x; /* berarti x= x+1; nilai =x; */
cout << " nilai x " << nilai << endl;
//endl untuk pindah baris
nilai = x++; // berarti nilai =x; nilai = x+1;*/
getch ( );
}
23
Pertemuan 6
6.1 Cout
Dalam bahasa C++ proses menampilkan suatu data biasa menggunakan
beberapa operasi tersedia. Beberapa operasi yang biasanya digunakan adalah:
cout dengan menggunakan obyek ini program dapat menampilkan informasi ke
standard output (berupa layar)
cout << ”saya belajar C++ \n”;
cout << ”saya belajar C++ “ << endl;
Pada contoh diatas terdapat karakter khusus yang berupa newline
penulisan berupa (\n) digunakan untuk pindah baris atau biasa nya menggunakan
(endl) juga digunkan untuk pindah baris
Contoh program 6.1 :
#include <iostream.h>
void main( )
{cout << ” Saya belajar C++ \n ”;}
24
cin >> x;
cout << " Masukkan sebuah nilai desimal : ";
cin >> y;
cout << " Bilangan bulat " << x << endl;
cout << " Bilangan desimal " << y << endl;
}
Manipulator setw()
25
Manipulator setw() bermanfaat untuk mengatur lebar halaman dari suatu
tampilan data.Sebagai contoh,nilai pada progam di bawah ini dapat ditampilkan
rata kanan dengan cara sebagai berikut:
Contoh program 6.4:
#include <iostream.h>
#include <iomanip.h>
void main( )
{
int nilai1 = 100 , nilai2 = 90;
cout << " nilai1 = " << setw(5) << nilai1 << endl;
cout << " nilai2 = " << setw(5) << nilai2 << endl;
}
26
Pertemuan 7
PERNYATAAN DASAR
7.1 If, Else If, dan Else
Dalam pembahasan sebelumnya, secara sekilas kita sudah melihat cara
penerapan if dan else dalam kode – kode yang kita gunakan. Di sini kita kan
mencoba membahasnya lebih lanjut.
7.2 If
Seperti namanya, if berarti jika, yang berarti “jika kondisi ini terbukti
maka (akan dilakukan sesuatu dalam kondisi seperti ini)”. Dan biasanya if
“berpasangan” dengan else. Jadi, dapat dikatakan bahwa secara keseluruhan apa
yang dimengerti oleh komputer adalah: “jika kondisi A terjadi, maka saya akan
melakukan tindakan A, selain itu maka saya akan melakukan tindakan B”.
7.3 Else
Else adalah kondisi selain atau diluar kondisi pertama (if). Salah satu
perumpamaan dari “kasus” ini adalah: “jika dia tidak mati, maka dia hidup”.
Contohnya: program
#include <iostream.h>
void main ( )
{ char benda;
cout << "masukkan jenis benda (M/H): ";
cin >> benda;
if (benda == 'M')
cout << "benda mati\n";
else
cout << "benda hidup \n";
}
27
7.4 Else If
else if sebenarnya adalah kondisi kedua yang diperkirakan akan terjadi
sedangkan else sebenarnya adalah kondsi terakhir yang diperkirakan akan terjadi.
Jika anda perhatikan sebenarnya else adalah untuk semua kondisi selain
kondisi pertama. Artinya, jika anda memasukkan huruf selain “M” juga akan
diangap hidup. Karena yang terbaca oleh komputer adalah “jika variabel benda
“isinya” huruf M, maka benda mati, selain itu dianggap benda hidup”. Jadi, jika
anda memasukkan huruf L atau P sekalipun, benda yang anda masukkan akan
tetap dianggap benda hidup. Penempatan else if adalah selalu di bawah if karena
else if yaitu kondisi selain if. Berikut adalah kode lengkap dari penggunaan if,
else if dan else:
#include <iostream.h>
#include <string.h>
void main ()
{int pilihan;
cout << "selamat datang di restoran kami \n";
cout << "silahan memilih\n";
cout << "1. ayam goreng campur mules\n";
cout << "2. bangkai pesawat adam air dan isinya\n";
cout << "3. sop ayam campur sari\n";
cout << "silahkan masukkan pilihanmu, \n";
cin >> pilihan;
if (pilihan == 1)
cout << "selamat berlama2 di toilet\n";
else if (pilihan == 2)
cout << "wah, selera anda cukup unik ya...?\n";
else if (pilihan == 3)
cout << "wah, memang menu ini lagi naik daun disini\n";
else cout << "wah, sepertinya anda tidak bisa membaca ya?\n"
<< "dari galaksi mana anda?\n";}
28
Gambar 7.2 hasil program dengan else,if dan else if
7.5 Switch
Dengan memakai contoh program di atas, kita bisa membuat hasil yang
sama dengan kode yang lebih singkat.Kali ini saya akan langsung menunjukkan
contoh penggunaan switch.
#include <iostream.h>
void main ()
{ int pilihan;
cout << "selamat datang di restoran kami \n";
cout << "silahan memilih\n";
cout << "1. ayam goreng campur mules\n";
cout << "2. bangkai pesawat adam air dan isinya\n";
cout << "3. sop ayam campur sari\n";
cout << "masukkan pilihan anda: "; cin >> pilihan;
switch (pilihan)
{case 1:
{cout << "anda memilih nomor satu!\n";break;
}case 2:
{cout << "anda memilh nomor dua!\n";break;
}case 3:
{cout << "anda memilih nomor tiga!\n";break;
}default:cout << "maaf pilihan anda tidak terdapat dalam menu kami\n";}}
29
Gambar 7.3 hasil program menggunakan switch
Mengapa memakai break ? Ini karena disebabkan oleh switch akan
mengeksekusi statement di bawahnya jika tidak dikeluarkan oleh break. Jadi, jika
tida dikeluarkan oleh break, yang akan terjadi adalah:
30
Pertemuan 9
FUNGSI
31
Gambar 9.1 hasil eksekusi program 9.2
Mengapa? Karena prototipe fungsi printf( ) ada pada file “stdio.h”. Itulah
sebabnya diperlukan untuk menyertakan baris berbentuk :
#include < nama_file_header >
Deklarasi fungsi dikenal dengan sebutan prototipe fungsi. Dan diakhiri dengan
titik koma (;), sebagaimana pada pendeklarasian variable. Sebagai contoh :
1). long kuadrat (long l);
2). int maks3 (int a, int b, int c );
3). double maks (double x, double y );
4). void garis ( );
Pada contoh pertama, fungsi kuadrat() mempunyai argumen bertipe long
dan nilai balik juga bertipe long. Pada contoh kedua, fungsi maks3() memiliki tiga
buah argumen, masing-masing bertipe int dan nilai balik juga bertipe int. Adapun
contoh ketiga, fungsi maks() mempunyai dua buah argumen, masing-masing
argumen bertipe double. Pada contoh keempat, fungsi garis() tidak memiliki
argumen dan nilai balik tidak ada (void).
Manfaat dari prototipe fungsi adalah untuk menjamin tipe argumen yang
dilewatkan pada pemanggilan fungsi benar-benar sesuai. Tanpa adanya prototipe
fungsi, amatlah mudah bagi pemrogram untuk melakukan kesalahan tanpa sengaja
dalam melewatkan argumen. Misalnya, melewatkan argumen bertipe float pada
fungsi yang semestinya meminta tipe data int. Dengan adanya prototipe fungsi,
kesalahan semacam itu akan terdeteksi oleh kompiler.
32
}
Pada pendefisian fungsi, setelah : long kuadrat (long l)
Tidak terdapat tanda titik koma. Ini berbeda dengan prototipe fungsi.
Pernyataan return didalam fungsi digunakan untuk memberikan nilai balik
fungsi. Pada contoh diatas, fungsi kuadrat() memberikan nilai balik berupa nilai
kuadrat dari argumen.
contoh fungsi untuk memperoleh nilai terbesar di antara dua bilangan
program 9.3 :
#include<iostream.h>
#include<conio.h>
double maks(double x,double y); //prototie
void main()
{
clrscr(); //hapus layar
cout<<maks(65789,123)<<endl;
cout<<maks(123,65789)<<endl;
}
double maks(double x,double y)
{if (x > y)
return (x);
else
return (y);
}
33
hanya dikenal disuatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga
variable yang dapat di akses oleh semua fungsi.
Jenis variable berdasarkan kelas penyimpanannya, yaitu :
1. Varabel Otomatis (lokal)
2. Variable Eksternal(global).
34
9.3.2. Variable Eksternal(global)
Variable eksternal adalah varibel yang didefinisikan diluar fungsi
manapun. Variable ini dikenal juga sebagai variable global, sebab variable ini
dikenal di semua fungsi.
Guna memperjelas bahwa suatu variable didalam suatu fungsi merupakan
variable eksternal, didalam fungsi yang menggunakannya, kita dapat
mendeklarasikan (bukan mendefinisikan, karena tidak ada pengalokasian memori)
dengan menambahkan kata kunci extern didepan tipe data. Kata kunci
menyatakan bahwa variable tersebut didefinisikan di tempat lain.
Contoh program 9.5
#include<iostream.h>
#include<conio.h>
int oblada = 550; //variable eksternal
void tambah(); //prototipe fungsi
void main()
{
clrscr(); //hapus layar
cout<<oblada<<endl;
tambah();
cout<<oblada<<endl;
tambah();
cout<<oblada<<endl;
}
//definisi fungsi
void tambah()
{
oblada++; //variable eksternal dinaikkan
}
35
Gambar 9.4 hasil eksekusi program 9.5
9.4 Referensi
Pada C++ referensi digunakan untuk memberikan nama alias dari variable.
Bentuk pendeklarasiannya :
Tanda & mengawali nama referensi. Setelah pendeklarasian seperti diatas, ref
menjadi nama alias dari nama_variable. Pengubahan nilai terhadap
nama_variable dapat dilakukan melalui nama_variable itu sendiri ataupun
melalui referensi ref. Referensi sangat berguna untuk melewatkan struktur atau
obyek yang besar kedalam fungsi. Dengan memakai referensi untuk parameter,
hanya alamat yang akan dilewatkan dan bukan struktur atau obyek itu sendiri.
Keuntungannya : Menghemat stack (untuk meletakkan argumen ke stack pada
saat pemanggilan fungsi).
Selain itu akan membuat argumen struktur atau obyek gampang dipakai
didalam fungsi itu sendiri.
contoh untuk memperlihatkan alamat variabel alamat referensi
program 9.6:
#include<iostream.h>
#include<conio.h>
void main()
{
int i = 55;
int &r = i; //referensi
clrscr(); //hapus layar
cout<<”Alamat : i = “<<&i<<” r =”<<&r<<endl;
}
36
9.5 Rekursi
Rekursi atau recursion dalam matematika dan ilmu komputer diartikan
sebagai fungsi yang dalam definisinya mengimplementasikan dirinya sendiri.
Untuk lebih mudahnya, bisa dikatakan bahwa rekursi adalah fungsi yang
memanggil dirinya sendiri.
Namun demikian, rekursi tidaklah hanya merupakan istilah eksak semata.
Jika kita mau memperhatikan lagi dengan lebih teliti, ternyata ada banyak contoh
rekursi di sekeliling kita. Rekursi dalam dunia nyata bisa terjadi salah satunya
adalah jika kita meletakkan dua cermin secara berhadapan dan sejajar. Bayangan
yang terjadi pada kedua cermin itulah rekursi.
Dalam dunia matematika dan komputer, rekursi khususnya digunakan
untuk menyelesaikan perhitungan yang rumit dan kompleks. Prinsip rekursi
sebenarnya sederhana, yaitu memecah masalah menjadi masalah-masalah yang
lebih kecil. Dengan memecah masalah menjadi bagian-bagian yang lebih kecil
tersebut, masalah yang sangat kompleks dan rumit sekalipun akan lebih mudah
untuk diselesaikan.
Contoh paling populer implementasi rekursi adalah penyelesaian
perhitungan faktorial dari suatu bilangan bulat (integer number). Dalam
matematika, faktorial didefinisikan sebagai berikut:
dan
Sehingga didapat misalnya nilai faktorial dari bilangan 5 dan 6 adalah sebagai
berikut:
dan
Perhatikan contoh source code yang ditulis dalam bahasa pemrograman C++
berikut. Source code berikut adalah contoh penyelesaian komputasi faktorial
menggunakan teknik rekursi.
37
Program 9.7:
#include <iostream.h>
typedef unsigned int UINT;
long Factorial(UINT aNumber)
{
if (aNumber == 0)
return 1;
return aNumber*Factorial(aNumber-1);
}
int main()
{
std::cout << Factorial(5);
return 0;
}
38
Pertemuan 10
Variabel dengan tipe data tunggal (skalar) hanya dapat digunakan untuk
menyimpan sebuah nilai saja, sehingga untuk menyimpan beberapa nilai sekaligus
dalam suatu variabel khusus yang disebut dengan variabel array atau variabel
berindeks. Variabel array dapat digunakan untuk menampung banyak data yang
sejenis (numerik/string).
39
{
printf("Nilai Angka : %d",nilai[x]);
}
getch();
}
40
10.2 Array Berdimensi Dua dan Operasi Matrik
Array berdimensi 2 sering digunakan dalam operasi matrik. Array
berdimensi 2 terdiri atas 2 elemen yaitu baris dan kolom. Matrik adalah daftar
bilangan yang disusun dalam bentuk dua dimensi kolom dan baris. Nilai-nilai
dalam matrik disebut dengan elemen matrik. Pada suatu program komputer, suatu
matriks disimpan pada array berdimensi 2. Indeks dari matrik menunjukkan
nomor elemen dari matriknya.
Contoh program 10.3:
#include <stdio.h>
#include <conio.h>
void main()
{ int x[3][3]={{1,2,3},{4,5,6},{7,8,9}},b,k;
clrscr();
for(b=0 ; b<3 ; b++)
for(k=0 ; k<3 ; k++)
printf("x[%d][%d] = %d\n",b,k,x[b][k]);
for(b=0 ; b<3 ; b++)
for(k=0 ; k<3 ; k++)
{
gotoxy(20+(k+1)*2,b+1);
printf("%d",x[b][k]);
}
getch();
}
41
Pertemuan 11
STRING
42
{ char teks[13]; //string dengan panjang maksimal 12 karakter
clrscr();
cout<<"Masukan sebuah kata :"<<endl;
cin>> teks;
cout<< "Kata yang tercetak :"<<teks;
}
43
maka hanya 12 karakter pertama yang disimpan pada teks, mengingat argumen
kedua dari fungsi get() diisi dengan 13 (satu karakter berisi Null).
Pada contoh program di atas dapat ditulis sebagai berikut :
cin.get(teks, 13)
Bisa juga ditulis sebagai berikut :
cin. Get(teks, sizeof(teks));
44
mestinya. Cara untuk menyelesaikan masalah di atas dengan menggunakan fungsi
getline(), karena fungsi ini dapat membuang sisa data yang tidak dibaca, termasuk
newline itu sendiri. Pada contoh berikut, get() diganti dengan getline().
Contoh program 11.4:
#include<iostream.h>
#include<conio.h>
void main()
{ char nama[25];
char alamat[35];
clrscr(); //hapus layar
cout<<"Masukan Nama :"<<endl;
cin.getline(nama, sizeof(nama));
cout<< "Masukan Alamat :"<<endl;
cin.getline(alamat,sizeof(alamat));
cout<<"Nama:"<<nama<<endl;
cout<<"Alamat:"<<alamat<<endl;
}
14.1.2Fungsi strcpy
Bentuk dari dari strcpy() :
strcpy(string_target,string_awal)
Prototipe fungsi di atas ada pada file header string.h
Contoh program 11.5 menggunakan strcpy():
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
45
char teks[]="C++ Oke";
char data [25];
clrscr(); //hapus layar
strcpy(data,teks); // mengcopy isi teks ke data
cout<<"Isi data :"<<data<<endl; }
46
Pada contoh di atas,
st[i]= toupper(st[i]);
menyebabkan setiap huruf kecil pada variabel st akan diganti dengan huruf
kapital.
47
char st[]="AbCdEfGeHjKl";
Maka st akan berisi : "abcdefgehjki";
Sedangkan fungsi strupr() kebalikan dari fungsi strlwr(). Kedua fungsi di atas
sama seperti tolower dan toupper.
Contoh program 11.8 untuk memperlihatkan efek strlwr() dan strupr() :
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char st[]="AbCdEfGhIjKl";
clrscr(); //hapus layar
cout<<"Isi St mula-mula:"<<st<<endl;
strlwr(st);
cout<<"Isi setelah dikonversi strlwr: "<<endl;
cout<<st<<endl;
strupr(st);
cout<<"Isi setelah dikonversi strupr: "<<endl;
cout<<st<<endl;
}
48
Pertemuan 12
POINTER
49
fred = andy;
ted = &andy;
Maka hasilnya
Gambar 12.1
50
px
zzzz 1000
Address
?
1000
x
51
memiliki lokasi penyimpanan di memori. Sebelum kita berbicara tentang pointer,
kita akan melihat bagaimana sebuah memori komputer bekerja.
Memori terdiri, pada tingkat terendah, sekelompok bit yang dapat baik 1
atau 0. Bit ini agak terlalu kecil untuk individual berguna, dan itu akan sangat
tidak praktis untuk mengaksesnya satu per satu waktu. Sebagai hasilnya, mereka
biasanya diakses dalam potongan. Pada komputer pribadi, mereka biasanya
diakses dalam potongan dari 8 bit. Tidak ada yang terlalu istimewa 8.
Sebuah sistem dapat dengan mudah bekerja dengan potongan dari 9, 12,
16 atau 32 bit. Untuk tutorial ini, kita akan menggunakan 8 bit.
Apapun sistem bekerja dengan disebut sebagai blok addressable terkecil
memori. Karena kita menggunakan 8 bit pada contoh kita, itu berarti setiap
variabel akan menggunakan satu atau lebih blok dari 8 bit. Akibatnya, urutan dari
beberapa blok memori akan terlihat seperti ini:
Kode:
|........||........||........||........|
01 02 03 04
Gambar 12.3
Setiap blok bit diberikan nomor (alamat memori). Sebuah variabel di C +
+ akan menempati satu atau lebih blok memori. Untuk keperluan bekerja dengan
memori, sebuah char didefinisikan untuk menduduki 1 blok (minimum 8 bit).
Variabel lain menempati kelipatan yang banyak blok. Untuk keperluan tutorial ini,
sebuah char akan menempati 1 dari blok memori di atas (seperti 01). Sebuah int
akan menempati 2 blok memori yang berdekatan (seperti 01 dan 02, atau 03 dan
04). Ganda akan menempati 4 blok memori yang berdekatan (01, 02, 03, dan 04).
Mengingat semua itu, perhatikan kode berikut:
Kode:
int main()
{
int int1=5;
double double1=3.14;
int int2=10;
char cha1='A',cha2='2';
52
return 0;
}
Jika anda melihat diagram tentang bagaimana variabel-variabel yang
disimpan dalam memori, ini mungkin terlihat seperti ini (. Adalah 2 bits):
Kode:
|int1....||double1.........||int2....||cha1||cha2|
02&03 04-07 08&09 10 11
Melihat ini, lokasi dari variabel-variabel dapat berupa: INT1: 02, double1:
04, int2: 08: cha1: 09, cha2: 10. Perhatikan bahwa saya tidak mengatakan apa-apa
tentang apa yang masing-masing variabel berisi, di mana mereka berada. Juga
perhatikan bahwa char adalah ukuran 1 (seperti biasa), dan bahwa aku
mengasumsikan bahwa int adalah ukuran 2, dan double adalah ukuran 4. Jumlah
bit dalam ukuran 1 adalah sering 8, tapi benar-benar tergantung pada arsitektur
perangkat keras. Tujuan dari pointer adalah untuk menyimpan alamat-alamat ini
dan memberikan kami akses ke variabel berdasarkan alamat mereka. Anda
membuat petunjuk sebagai berikut:
Kode:
int main()
{
int int1=5;
double double1=3.14;
int int2=10;
char cha1='A',cha2='2';
int* intptr = &int1;
double* dptr = &double1;
char* charptr = &cha1;
return 0;
}
Alamat di depan INT1 mengembalikan alamat INT1, dalam hal ini 02.
Jadi intptr berisi 02, dptr berisi 04, dan charptr berisi 09. The * dalam deklarasi
variabel menunjukkan bahwa variabel pointer ke jenis di depan *. Pada titik ini,
hal itu mungkin tampak konyol untuk menggunakan pointer bukan hanya
menggunakan variabel. Besar, kita dapat menyimpan lokasi memori. Jadi apa?
53
Satu hal yang dapat kita lakukan adalah menggunakan pointer untuk
mendapatkan akses ke variabel apa toko. Kita melakukan ini dengan * operator
(dereferencing). Itu berarti * intptr akan kembali 5, sementara intptr akan kembali
02. Hal lain yang dapat Anda lakukan adalah menggunakan + dan - pada pointer
ke langkah maju atau mundur melalui memori. Jarak 1 akan bergerak melalui
memori tergantung pada jenis memori pointer memandang. Sejak intptr terlihat di
ints (dalam hal ini ukuran 2 (biasanya 16 bit)), jika intptr berisi 02, kemudian
intptr + 1 akan kembali 04 (satu int maju). Sejak dptr terlihat di ganda (dalam hal
ini ukuran 4), jika dptr berisi 04, dptr 1 akan kembali 08 (satu ganda maju).
Pada titik ini, Anda mungkin berpikir hal ini berarti Anda dapat
menggunakan intptr untuk mengakses ganda. Anda tidak bisa. intptr + 1 akan
mengakses double1 paruh pertama. Hasilnya akan tergantung pada arsitektur yang
mendasari. Demikian pula, dptr + 1 akan menafsirkan semua int2, cha1, dan cha2
sebagai ganda. Nilai utama dari pointer adalah menerima dan bekerja dengan
array dalam fungsi. Perhatikan kode berikut:
Kode:
#include <iostream.h>
void loadarray(int* thearray)
{ for (int i=0;i<10;i++) thearray[i]=i;
}
void printarray(int* thearray)
{ for (int i=0;i<10;i++) std:
cout<<"element"<<i<<" "<<*(thearray+i)<<"\n";
}
int main()
{ int myarray[10];
loadarray(myarray);
printarray(myarray);
}
54
Gambar 12.4
Pada pembahasan pertama, mungkin muncul bahwa kami melewati sebuah
integer ke load array. Ini tidak terjadi. myarray adalah sebuah array dari ints,
tetapi istilah myarray sebenarnya adalah sebuah pointer ke int pertama dalam
array. Ketika loadarray menerima bahwa pointer, kemudian dapat menggunakan
pointer int thearray seperti nama array (ya, kami memiliki dua pointer menunjuk
ke elemen pertama dari array). [] operator akan menafsirkan array itu nama
sebagai array dan menemukan elemen yang benar berdasarkan indeks.
Penggunaan array yang lain adalah untuk menciptakan variabel pada saat
run-time. Dalam keadaan normal, anda harus menyatakan apa yang variabel
dalam kode Anda akan bekerja dengan. Kadang-kadang, bagaimanapun, anda
tidak tahu. Ketika Anda sedang membaca sebuah file, Anda tidak tahu seberapa
besar itu, sehingga Anda tidak dapat menjelaskan ukuran di muka. Berhasil
membacanya, Anda akan perlu untuk mengambil memori yang diperlukan.
Kode:
int main()
{
int* intptr = 0;
intptr = new int;
intptr = new int;
*intptr = 5;
delete intptr;
}
55
12.7 Pointer Penunjuk Pointer (pointer to pointer)
Suatu pointer bisa saja menunjuk ke pointer lain. Gambar berikut
memberikan contoh mengenai pointer menunjuk pointer.
Pointer Pointer Variabel
ptr1 ptr2 var_x
alamat alamat
ptr1 ptr1 nilai
56
Gambar 12.6
57
Pertemuan 13
13.1 Struktur
Nilai pada dasarnya struktur jenis. Mereka didefinisikan dengan
menggunakan kata kunci struct. Anda dapat mengakses variabel di dalam struktur
dengan menciptakan sebuah objek dari struktur.
Satu-satunya perbedaan adalah bahwa Anda tidak harus menggunakan sintaks
untuk membuat objek dari sebuah kelas,
13.2 UNION
Sama seperti struct, union juga merupakan tipe data yang dibangkitkan, dimana
anggota-anggotanya menggunakan secara bersama-sama ruang penyimpanan
memori yang sama, berbeda dengan struktur yang masing-masing variabel
menempati lokasi memori yang berbeda. Jumlah bytes yang digunakan untuk
menyimpan union adalah sedikitnya cukup untuk menyimpan data terbesar yang
ditangani. Oleh karena itu, tipe union ini umumnya digunakan untuk menangani
satu, dua, atau tiga variabel dengan tipe yang mirip. Sebagai contoh:
union nilaiUjian
{
int uts, uas;
float akhir;
}
13.3 Bitfield
Suatu bit atau beberapa bit dalam sebuah data berukuran satu byte atau
dua byte dapat diakses dengan mudah melalui bitfield. Dengan cara ini, suatu bit
atau beberapa bit dapat diakses tanpa melibatkan operator pemanipulasi bit
(seperti &, |). Selain itu, satu atau dua byte memori dapat dipakai untuk
menyimpan sejumlah informasi.
58
Sebagai contoh, untuk memperoleh informasi masing-masing bit dari
suatu data satu byte, penulisan medan bit berupa struct info_byte
{ unsigned bit0:1;
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
};
Jika disajikan dalam bentuk gambar, gambaran suatu struktur yang
memiliki tipe seperti di atas adalah sebagai berikut :
7 6 5 4 3 2 1 0 bit
b b b b b b b b
i i i i i i i i
t t t t t t t t
7 6 5 4 3 2 1 0
Gambar Susunan bit dari memori sebuah data bertipe info_byte
Pada pendefinisian struktur info_byte di atas,
• Nilai 1 setelah tanda titik-dua (:) menyatakan panjang dari bitfield
• unsigned menyatakan bahwa bitfield dinyatakan dalam keadaan tak-
bertanda (untuk contoh berikutnya, nantinya setiap bitfield memiliki
kemungkinan nilai berkisar 1 atau (0).
59
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
}; panjang/jumlah bit
nama variabel bitfield
sebuah variabel bitfield haruslah dideklarasikan berupa salah satu di antara
int,unsigned dan signed.
Contoh berikut memberikan gambaran tentang cara memberikan nilai
kepada variabel struktur yang mengandung elemen berupa bitfield, dan cara
mengakses setiap nilai dari bitfield.
Program 13.1 Bitfield utk menampilkan bentuk biner dr karakter masukan :
#include <stdio.h>
main()
{struct info_byte /* definisi tipe bitfield */
{
unsigned bit0:1; /* bit ke-0 */
unsigned bit1:1; /* bit ke-1 */
unsigned bit2:1; /* bit ke-2 */
unsigned bit3:1; /* bit ke-3 */
unsigned bit4:1; /* bit ke-4 */
unsigned bit5:1; /* bit ke-5 */
unsigned bit6:1; /* bit ke-6 */
unsigned bit7:1; /* bit ke-7 */
};
/* deklarasi variabel union dan elemen bitfield */
union
{ unsigned char karakter;
struct info_byte byte;
} ascii;
60
printf(“Masukkan sebuah karakter : ”);
scanf(“%c”, &ascii.karakter);
printf(“\nKode ASCII dari karakter %c adalah %d\n”, ascii.karakter, ascii.karakter);
printf("Bentuk biner dari nilai %d adalah ", ascii.karakter);
printf("%d%d%d%d%d%d%d%d\n",ascii .byte.bit7, ascii.byte.bit6, ascii.byte.bit5,
ascii.byte.bit4, ascii.byte.bit3, ascii.byte.bit2, ascii.byte.bit1, ascii.byte.bit0);
}
61
} koord;
Pada contoh di atas, variabel koord yang bertipe data_gambar akan
menempati memori 1 byte (8 bit) dengan 4 informasi terkandung di
dalamnya (masing-masing 2 bit), atau memegang nilai bulat antara 0 sampai
62
Pada pendeklarasian terakhir :
Unsigned :5;
fungsinya hanya untuk memperjelas bahwa total bit dari
bitfield adalah 8 bit (1 byte). Perhatikan, bahwa karena 5 bit terakhir tidak
diperlukan, maka nama bitfield boleh tidak disertakan. Kalaupun mau diberi
nama (misalnya : kosong), maka bentuk deklarasinya adalah :
struct info
{
unsigned info_x:2;
unsigned info_y:1;
unsigned kosong:5;
} status;
program 13.2:
#include <stdio.h>
main()
{
/* definisi tipe bitfield */
struct info
{unsigned info_x:2;
unsigned info_y:1;
unsigned kosong:5; /* bisa dihilangkan */
} status; status.info_x = 3;
status.info_y = 1;
printf("info_x = %d\n", status.info_x);
printf("info_y = %d\n", status.info_y);
}
Gambar 13.2
63
13.4 ENUM
ENUM adalah sebuah mekanisme pemetaan nomor telepon Telkom yang
kita kenal, seperti, +628113334567 atau +62555334567, agar di kenali di dunia
VoIP yang menggunakan nomor telepon, seperti, 20333@voiprakyat.or.id atau
5007987@fwd.pulver.com. Jadi sebetulnya isi sebuah ENUM hanya tabel saja.
Tentunya konsep ENUM tidak terbatas pada pemetaan saja, dengan menggunakan
ENUM sebuah nomor telepon +6255534567 dapat mempunyai beberapa pesawat
penerima dengan sistem prioritas, misalnya,
+6255534567 prioritas 1 245678@voiprakyat.or.id
+6255534567 prioritas 2 6543686@fwd.pulver.com
+6255534567 prioritas 3 +62215678976 (nomor kantor)
+6255534567 prioritas 4 +62856789654 (nomor handphone)
+6255534567 prioritas 5 mail:oknum@salemba.co.id
Dalam bahasa yang lebih manusiawi, jika seseorang berusaha menelepon
ke +6255534567 akan diusahakan untuk menghubungi ke VoIP Rakyat
245678@voiprakyat.or.id, jika gagal maka akan berusaha menghubungi nomor
VoIP di Pulver 6543686@fwd.pulver.com, jika gagal maka akan berusaha
menghubungi kantor di +62215678976, jika gagal lagi maka akan berusaha
menghubungi handphone di +62856789654. Terakhir jika semua cara gagal, apa
boleh buat masuk ke voice mail untuk oknum@salemba.co.id.
Cara penulisan ENUM di Internet, misalnya menggunakan top level
domain e164.id, adalah sebagai berikut
+6255512345678 8.7.6.5.4.3.2.1.5.5.5.2.6.e164.id
+6281812345678 8.7.6.5.4.3.2.1.8.1.8.2.6.e164.id
perhatikan nomor ENUM mempunyai urutan terbalik dari nomor telepon
yang kita kenal biasa.
Contoh ENUM
Salah satu contoh ENUM yang paling baik adalah e164.org, kita dapat
mendaftarkan diri secara automatis dengan mekanisme authentikasi yang baik
dengan cara menelepon nomor telepon yang akan di mapping ke account VoIP.
64
Tentunya e164.org bukan satu-satunya ENUM server di dunia. Rekan-rekan VoIP
Rakyat-pun mengembangkan ENUM sendiri yang dapat di akses di
http://www.enum.voiprakyat.or.id.
65
Pertemuan 14
TYPE
14.1 Tipe Data
Integer ( Bilangan Bulat )
Integer merupakan tipe data numerik yang digunakan apabila tidak
berurusan dengan pecahan atau bilangan desimal. Tipe data numerik yang
termasuk integer adalah sebagai berikut :
66
14.3.1 Tipe Deskripsi
Float memiliki nilai -3.4x108 sampai +3.4x108 dan menempati 4 byte di
memori Double memiliki nilai -1.7x10308 sampai +1.7x10308 Semua bilangan
pecahan atau desimal dalam Java tanpa diakhiri huruf f akan dianggap sebagai
double. Sedangkan bilangan yang ingin dikategorikan sebagai float harus diakhiri
dengan huruf F. Misalnya : 4.22 F atau 2.314f. Sedangkan untuk bilangan double,
bisa menambah dengan huruf D, karena secara default bilangan dengan koma atau
pecahan atau desimal akan dianggap sebagai double.
14.3.1.1 Char
Char adalah karakter tunggal yang didefinisikan dengan diawali dan
diakhiri dengan tanda ‘ ( petik tunggal ). Char berbeda dengan String, karena
String bukan merupakan tipe data primitif, tetapi sudah merupakan sebuah objek.
Tipe char mengikuti aturan unicode, sehingga dapat menggunakan kode /u
kemudian diikuti bilangan dari 0 sampai 65535, tetapi yang biasa digunakan
adalah bilangan heksadesimal dari 0000 sampai FFFF. Misalnya : ‘\u123’ Selain
karakter biasa, juga terdapat karakter khusus yang didefinisikan dengan cara
mengawalinya menggunakan tanda .
67
BAB IV
PENUTUP
A. Kesimpulan
68
DAFTAR PUSTAKA
Deitel, Harvey M dan Paul J Deitel. 2005. C++ How to Program, Fifth
Edition. New Jersey: Prentice Hall.
Deshpande, P. S dan O. G. Kakde. 2003. C & Data Structures. Massachusetts
: Dreamtech Press.
Solichin, Achmad. 2003. Pemograman Bahasa C dengan Turbo C.
IlmuKomputer.Com.
Materi Struktur Data TI UKDW oleh Antonius Rachmat C. S.Kom, M.Sc.
Materi Praktikum Struktur Data 2007 oleh TIM Asisten Praktikum Struktur
Data 2007.
Pamungkas, Dudi. 2009. SEJARAH PERKEMBANGAN KOMPUTER.
Google. Surabaya
Weblog, Wahyunisetiana.2009.FUNGSI.Wordpress.Yogyakarta
69
Pertemuan 2
Gambar 2.1
9
Gambar 2.2 Gambar 2.3
Pseudo code
Pseudo code adalah urutan baris algoritma seperti kode pemrograman dan
tidak memiliki sintak yang baku. Pseudo code lebih umum digunakan oleh
programmer yang berpengalaman. Akan tetapi, flowchart lebih mudah dimengerti
oleh programmer pemula, pseudo code sangat mudah diimplementasikan ke
dalam kode program dibandingkan dengan flowchart. Kita bisa bebas menulis
pseudo code selama itu mudah dimengerti bagi orang lain. Tetapi disarankan
untuk menggunakan keyword yang umum digunakan seperti : if, then, else, while,
do, repeat, for, dan lainnya. Dan ikuti gaya penulisan pemrograman seperti Pascal,
C++ dan lain-lain. Perhatikan kode dibawah ini :
10
Mulai masukkan sebuah angka masukkan sebuah angka dan tampilkan
ambil angka yang sebelumnya dan tampilkan selesai walaupun pseudo code diatas
masih bisa dimengerti tetapi ada beberapa statemen yang ambigu. Dari baris
kedua, kita tidak tahu kemana angka tersebut disimpan dan kita juga tidak tahu
angka yang mana yang dimaksud untuk “angka yang sebelumnya”. Apakah angka
yang pertama atau yang kedua. Pseudo code diatas dapat dimodifikasi menjadi
seperti berikut :
1. Mulai
2. Masukkan A
3. Masukkan B, Tampilkan B
4. Tampilkan A
5. Selesai
Pseudo code diatas lebih baik dibandingkan sebelumnya. Kita bisa dengan
jelas melihat dimana angka disimpan dan angka yang mana yang ditampilkan.
Sekarang kita akan mengubah flowchart pada gambar 2.2
1. Mulai
2. Masukkan A dan B
3. C = A + B
4. Tampilkan C
5. Selesai
11
Pertemuan 3
12
Gambar 3.1 hsil eksekusi program 3.1
Jika diperhatikan ada perintah \n pada akhir “kalimat” hallo subagyo. Apa
itu? ”\n” adalah perintah dalam banyak bahasa pemrograman sebagai baris baru
(new line) jadi yang akan ditampilkan pada program adalah: Pada baris pertama,
seperti yang kita lihat, ada perintah #include <iostream>. Tanda ‘#’ adalah
preprocessor directive. Preprocessor directive adalah perintah – perintah yang
diberikan kepada compiler untuk melakukan definisi, memasukkan file library,
dll.
3.4Pernyataan
Pernyataan merupakan bagian program yang berupa instruksi kepada
computer untuk melakukan sesuatu. Menampilkan tulisan dilayar, menghitung
operasi aritmatika, membaca inputan dan lain sebagainya. Setiap pernyataan harus
diakhir dengan tanda titik koma “;”.
Baris (#include <iostream.h>) bukan merupakan suatu pernyataan baris
ini digunakan untuk menyisipkan file (iostream.h) ke dalam program. Pada contoh
diatas iostream.h disebut file header. File header tersebut diperlukan agar perintah
cout bias dijalankan. Apabila file heder tersenut dihapus maka akan terjadi error.
Perintah Untuk menampilkan Informasi Ke Layar
Contoh program 3.2 :
#include <iostream.h>
#include <conio.h>
void main()
{cout << " saya sedang belajar c++"; getch();}
13
Pengenal cout dapat digunakan untuk mengarahkan data ke standart output
(normalnya adalah layer). Tanda << merupakan operator yang berfungsi untuk
mengarahkan data yang terletak di sebelah kanannya ke objek yang berada di
sebelah kiri.
3.5 Gaya Penulisan Program
Bahasa C memberikan keleluasaan dalam menulis bentuk program.
Program di atas misalnya dapat ditulis kembali tanpa mengubah hasil eksekusi
program menjadi: program 3.3
#include <iostream.h>
#include <conio.h>
void main()
{cout << " saya sedang belajar c++"; getch();}
14
3.6 Bagian Komentar
Program yang baik pada umumnya diberi komentar yang akan membantu
orang lain maupun pembuat program itu untuk memahami program yang dibuat.
Dalam C atau C++ setiap tulisan yang diapit oleh symbol /* … */ atau setiap baris
yang dimulai dengan symbol // dianggap komentar. C++ tidak mengizinkan
komentar bersarang ( nested comment), namun Borland C++ lebih fleksibel dalam
hal ini.
Contoh C++ menggunakan komentar:program 3.5
#include<iostream.h>
main ()
{cout<<”nama :subagyo”; //untuk menampilkan nama}
15
Pertemuan 4
4.1 Konstanta
Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses
pemrograman berlangsung. Nilai konstanta selalu tetap. Konstanta harus
didefinisikan terlebih dahulu di awal program. Konstanta dapat bernilai integer,
pecahan, karakter dan string. Contoh konstanta:
50;13;3;14;4;50005;’A’;’BahasaC’.
Selain itu, bahasa C++ juga menyediakan beberapa karakter khusus yang disebut
karakter escape, antara lain:
Konstanta karakter Karakter
‘A’ Karakter berupa huruf A
‘1’ Karakter berupa angka 1
‘*’ Karakter symbol
‘\\’ Karakter \ (harus ditulis dengan awalan \)
\0 Karakter ber- ASCII nol (karakter null)
\a Karakter bel
\b Karakter backspace
\f Karakter formfeed (ganti halaman)
\n Karakter newline (pindah baris)
\r Karakter carriage return(keawal baris) tanpa linefeed
\t Karakter tab horizontal
\v Karakter tab vertical
\\ Karakter \
\’ Karakter '
\” Karakter "
16
Konstanta karakter Karakter
\? Karakter ?
Contoh program 4.1:
#include <iostream.h>
main()
{const float phi = 3.14;
cout << " Nilai phi = " << phi;}
4.2 Operator
Operator (lambang-operasi) adalah simbol-simbol, baik berupa satu atau
beberapa karakter, yang menetapkan bagaimana suatu nilai dimanipulasi. itu
adalah:
! ~ - + * / % < > = | ^ ' ++ -- -= += /= %= << >> ==
!= <= >= |= && || ?: &= ^= <<= >>=
4.3 Variabel
Variable adalah suatu pengenal (identifier) yang digunakan untuk
mewakili suatu nilai tertentu di dalam proses program. Nilai dari suatu variabel
bisa diubah-ubah sesuai kebutuhan. Nama dari suatu variable dapat ditentukan
sendiri oleh pemrograman dengan aturan sebagai berikut:
1. Terdiri dari gabungan huruf dan angka dengan karakter pertama harus
berupa huruf.
2. Bahasa C++ bersifat case-sensitive artinya huruf besar dan kecil dianggap
berbeda. Jadi antara nim,NIM dan Nim dianggap berbeda.
3. Tidak boleh mengandung spasi
17
4. Tidak boleh mengandung symbol-symbol khusus, kecuali garis bawah
(underscore). Yang termasuk symbol khusus yang tidak diperbolehkan
antara lain: $,?,%,#,!,&,*(,),-,+,= dsb
5. Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
Contoh pendeklarasian variabel yang benar:
NPM,b,c,nama_siswa,a6547,nilai, dsb.
Contoh penanaman variable yang salah:
%nilai_siswa, 80siswa, rata-rata,ada spasi, penting!, dsb.
Contoh program 4.2:
#include <iostream.h>
void main()
{ int x,y,z;
x = 7;
y = 5;
z = x + y;
cout << " Hasil Penjumlahan = " << z; }
18
Pertemuan 5
19
Contoh program 5.1:
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr(); // untuk membersihkan layar
cout<<7 % 7 <<" n "; //sisa 0
cout<<9 % 7 <<" n "; //sisa 2
cout<<13 % 7 <<" n "; // sisa 6
getch();
}
20
if ( c % 8 == 0 )
putchar ( ' ' );
}
putchar ( '\n' );
}
21
Operator Arti Contoh
< Kurang Dari x< td>
<= Kurang Dari Sama Dengan x<=y (Apakah x kurang dari samadengan y)
> Lebih Besar x>y (Apakah x lebih dari y)
>= Lebih Besar Sama Dengan x>=y (Apakah x lebih dari sama dengan y)
== Sama Dengan x==y (Apakah x samadengan y)
!= Tidak Sama Dengan x!=y (Apakah x tidak samadengan y)
Contoh ungkapan kondisi yang menggunakan operator ralasi:
x==y
hasil ungkapan ini bernilai :
1 jika nilai x sama dengan nilai y
0 jika nilai x tidak sama dangan y
22
Operator Arti/Maksud Letak Contoh Equivalent
nilai 1 sesudah
Pengurangan dengan Sebelum dan
-- A-- A=A-1
pengurangan nilai 1 sesudah
Sizeof Ukuran dari operand dalam byte Sebelum Sizeof(I) -
! Unary NOT Sebelum !A -
~ Bitwise NOT Sebelum ~A -
Menghasilkan alamat memory
& Sebelum &A -
operand
* Menghasilkan nilai dari pointer Sebelum *A -
Contoh program 5.4:
#include <iostream.h>
#include <conio.h>
void main( )
{
int x, nilai;
clrscr( ) ;
x = 6;
nilai = ++x; /* berarti x= x+1; nilai =x; */
cout << " nilai x " << nilai << endl;
//endl untuk pindah baris
nilai = x++; // berarti nilai =x; nilai = x+1;*/
getch ( );
}
23
Pertemuan 6
6.1 Cout
Dalam bahasa C++ proses menampilkan suatu data biasa menggunakan
beberapa operasi tersedia. Beberapa operasi yang biasanya digunakan adalah:
cout dengan menggunakan obyek ini program dapat menampilkan informasi ke
standard output (berupa layar)
cout << ”saya belajar C++ \n”;
cout << ”saya belajar C++ “ << endl;
Pada contoh diatas terdapat karakter khusus yang berupa newline
penulisan berupa (\n) digunakan untuk pindah baris atau biasa nya menggunakan
(endl) juga digunkan untuk pindah baris
Contoh program 6.1 :
#include <iostream.h>
void main( )
{cout << ” Saya belajar C++ \n ”;}
24
cin >> x;
cout << " Masukkan sebuah nilai desimal : ";
cin >> y;
cout << " Bilangan bulat " << x << endl;
cout << " Bilangan desimal " << y << endl;
}
Manipulator setw()
25
Manipulator setw() bermanfaat untuk mengatur lebar halaman dari suatu
tampilan data.Sebagai contoh,nilai pada progam di bawah ini dapat ditampilkan
rata kanan dengan cara sebagai berikut:
Contoh program 6.4:
#include <iostream.h>
#include <iomanip.h>
void main( )
{
int nilai1 = 100 , nilai2 = 90;
cout << " nilai1 = " << setw(5) << nilai1 << endl;
cout << " nilai2 = " << setw(5) << nilai2 << endl;
}
26
Pertemuan 7
PERNYATAAN DASAR
7.1 If, Else If, dan Else
Dalam pembahasan sebelumnya, secara sekilas kita sudah melihat cara
penerapan if dan else dalam kode – kode yang kita gunakan. Di sini kita kan
mencoba membahasnya lebih lanjut.
7.2 If
Seperti namanya, if berarti jika, yang berarti “jika kondisi ini terbukti
maka (akan dilakukan sesuatu dalam kondisi seperti ini)”. Dan biasanya if
“berpasangan” dengan else. Jadi, dapat dikatakan bahwa secara keseluruhan apa
yang dimengerti oleh komputer adalah: “jika kondisi A terjadi, maka saya akan
melakukan tindakan A, selain itu maka saya akan melakukan tindakan B”.
7.3 Else
Else adalah kondisi selain atau diluar kondisi pertama (if). Salah satu
perumpamaan dari “kasus” ini adalah: “jika dia tidak mati, maka dia hidup”.
Contohnya: program
#include <iostream.h>
void main ( )
{ char benda;
cout << "masukkan jenis benda (M/H): ";
cin >> benda;
if (benda == 'M')
cout << "benda mati\n";
else
cout << "benda hidup \n";
}
27
7.4 Else If
else if sebenarnya adalah kondisi kedua yang diperkirakan akan terjadi
sedangkan else sebenarnya adalah kondsi terakhir yang diperkirakan akan terjadi.
Jika anda perhatikan sebenarnya else adalah untuk semua kondisi selain
kondisi pertama. Artinya, jika anda memasukkan huruf selain “M” juga akan
diangap hidup. Karena yang terbaca oleh komputer adalah “jika variabel benda
“isinya” huruf M, maka benda mati, selain itu dianggap benda hidup”. Jadi, jika
anda memasukkan huruf L atau P sekalipun, benda yang anda masukkan akan
tetap dianggap benda hidup. Penempatan else if adalah selalu di bawah if karena
else if yaitu kondisi selain if. Berikut adalah kode lengkap dari penggunaan if, else
if dan else:
#include <iostream.h>
#include <string.h>
void main ()
{int pilihan;
cout << "selamat datang di restoran kami \n";
cout << "silahan memilih\n";
cout << "1. ayam goreng campur mules\n";
cout << "2. bangkai pesawat adam air dan isinya\n";
cout << "3. sop ayam campur sari\n";
cout << "silahkan masukkan pilihanmu, \n";
cin >> pilihan;
if (pilihan == 1)
cout << "selamat berlama2 di toilet\n";
else if (pilihan == 2)
cout << "wah, selera anda cukup unik ya...?\n";
else if (pilihan == 3)
cout << "wah, memang menu ini lagi naik daun disini\n";
else cout << "wah, sepertinya anda tidak bisa membaca ya?\n"
<< "dari galaksi mana anda?\n";}
28
Gambar 7.2 hasil program dengan else,if dan else if
7.5 Switch
Dengan memakai contoh program di atas, kita bisa membuat hasil yang
sama dengan kode yang lebih singkat.Kali ini saya akan langsung menunjukkan
contoh penggunaan switch.
#include <iostream.h>
void main ()
{ int pilihan;
cout << "selamat datang di restoran kami \n";
cout << "silahan memilih\n";
cout << "1. ayam goreng campur mules\n";
cout << "2. bangkai pesawat adam air dan isinya\n";
cout << "3. sop ayam campur sari\n";
cout << "masukkan pilihan anda: "; cin >> pilihan;
switch (pilihan)
{case 1:
{cout << "anda memilih nomor satu!\n";break;
}case 2:
{cout << "anda memilh nomor dua!\n";break;
}case 3:
{cout << "anda memilih nomor tiga!\n";break;
}default:cout << "maaf pilihan anda tidak terdapat dalam menu kami\n";}}
29
Gambar 7.3 hasil program menggunakan switch
Mengapa memakai break ? Ini karena disebabkan oleh switch akan
mengeksekusi statement di bawahnya jika tidak dikeluarkan oleh break. Jadi, jika
tida dikeluarkan oleh break, yang akan terjadi adalah:
30
Pertemuan 9
FUNGSI
31
Gambar 9.1 hasil eksekusi program 9.2
Mengapa? Karena prototipe fungsi printf( ) ada pada file “stdio.h”. Itulah
sebabnya diperlukan untuk menyertakan baris berbentuk :
#include < nama_file_header >
Deklarasi fungsi dikenal dengan sebutan prototipe fungsi. Dan diakhiri dengan
titik koma (;), sebagaimana pada pendeklarasian variable. Sebagai contoh :
1). long kuadrat (long l);
2). int maks3 (int a, int b, int c );
3). double maks (double x, double y );
4). void garis ( );
Pada contoh pertama, fungsi kuadrat() mempunyai argumen bertipe long
dan nilai balik juga bertipe long. Pada contoh kedua, fungsi maks3() memiliki tiga
buah argumen, masing-masing bertipe int dan nilai balik juga bertipe int. Adapun
contoh ketiga, fungsi maks() mempunyai dua buah argumen, masing-masing
argumen bertipe double. Pada contoh keempat, fungsi garis() tidak memiliki
argumen dan nilai balik tidak ada (void).
Manfaat dari prototipe fungsi adalah untuk menjamin tipe argumen yang
dilewatkan pada pemanggilan fungsi benar-benar sesuai. Tanpa adanya prototipe
fungsi, amatlah mudah bagi pemrogram untuk melakukan kesalahan tanpa sengaja
dalam melewatkan argumen. Misalnya, melewatkan argumen bertipe float pada
fungsi yang semestinya meminta tipe data int. Dengan adanya prototipe fungsi,
kesalahan semacam itu akan terdeteksi oleh kompiler.
32
}
Pada pendefisian fungsi, setelah : long kuadrat (long l)
Tidak terdapat tanda titik koma. Ini berbeda dengan prototipe fungsi.
Pernyataan return didalam fungsi digunakan untuk memberikan nilai balik
fungsi. Pada contoh diatas, fungsi kuadrat() memberikan nilai balik berupa nilai
kuadrat dari argumen.
contoh fungsi untuk memperoleh nilai terbesar di antara dua bilangan
program 9.3 :
#include<iostream.h>
#include<conio.h>
double maks(double x,double y); //prototie
void main()
{
clrscr(); //hapus layar
cout<<maks(65789,123)<<endl;
cout<<maks(123,65789)<<endl;
}
double maks(double x,double y)
{if (x > y)
return (x);
else
return (y);
}
33
hanya dikenal disuatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga
variable yang dapat di akses oleh semua fungsi.
Jenis variable berdasarkan kelas penyimpanannya, yaitu :
1. Varabel Otomatis (lokal)
2. Variable Eksternal(global).
34
9.3.2. Variable Eksternal(global)
Variable eksternal adalah varibel yang didefinisikan diluar fungsi
manapun. Variable ini dikenal juga sebagai variable global, sebab variable ini
dikenal di semua fungsi.
Guna memperjelas bahwa suatu variable didalam suatu fungsi merupakan
variable eksternal, didalam fungsi yang menggunakannya, kita dapat
mendeklarasikan (bukan mendefinisikan, karena tidak ada pengalokasian memori)
dengan menambahkan kata kunci extern didepan tipe data. Kata kunci
menyatakan bahwa variable tersebut didefinisikan di tempat lain.
Contoh program 9.5
#include<iostream.h>
#include<conio.h>
int oblada = 550; //variable eksternal
void tambah(); //prototipe fungsi
void main()
{
clrscr(); //hapus layar
cout<<oblada<<endl;
tambah();
cout<<oblada<<endl;
tambah();
cout<<oblada<<endl;
}
//definisi fungsi
void tambah()
{
oblada++; //variable eksternal dinaikkan
}
35
Gambar 9.4 hasil eksekusi program 9.5
9.4 Referensi
Pada C++ referensi digunakan untuk memberikan nama alias dari variable.
Bentuk pendeklarasiannya :
Tanda & mengawali nama referensi. Setelah pendeklarasian seperti diatas, ref
menjadi nama alias dari nama_variable. Pengubahan nilai terhadap
nama_variable dapat dilakukan melalui nama_variable itu sendiri ataupun
melalui referensi ref. Referensi sangat berguna untuk melewatkan struktur atau
obyek yang besar kedalam fungsi. Dengan memakai referensi untuk parameter,
hanya alamat yang akan dilewatkan dan bukan struktur atau obyek itu sendiri.
Keuntungannya : Menghemat stack (untuk meletakkan argumen ke stack pada
saat pemanggilan fungsi).
Selain itu akan membuat argumen struktur atau obyek gampang dipakai
didalam fungsi itu sendiri.
contoh untuk memperlihatkan alamat variabel alamat referensi
program 9.6:
#include<iostream.h>
#include<conio.h>
void main()
{
int i = 55;
int &r = i; //referensi
clrscr(); //hapus layar
cout<<”Alamat : i = “<<&i<<” r =”<<&r<<endl;
}
36
9.5 Rekursi
Rekursi atau recursion dalam matematika dan ilmu komputer diartikan
sebagai fungsi yang dalam definisinya mengimplementasikan dirinya sendiri.
Untuk lebih mudahnya, bisa dikatakan bahwa rekursi adalah fungsi yang
memanggil dirinya sendiri.
Namun demikian, rekursi tidaklah hanya merupakan istilah eksak semata.
Jika kita mau memperhatikan lagi dengan lebih teliti, ternyata ada banyak contoh
rekursi di sekeliling kita. Rekursi dalam dunia nyata bisa terjadi salah satunya
adalah jika kita meletakkan dua cermin secara berhadapan dan sejajar. Bayangan
yang terjadi pada kedua cermin itulah rekursi.
Dalam dunia matematika dan komputer, rekursi khususnya digunakan
untuk menyelesaikan perhitungan yang rumit dan kompleks. Prinsip rekursi
sebenarnya sederhana, yaitu memecah masalah menjadi masalah-masalah yang
lebih kecil. Dengan memecah masalah menjadi bagian-bagian yang lebih kecil
tersebut, masalah yang sangat kompleks dan rumit sekalipun akan lebih mudah
untuk diselesaikan.
Contoh paling populer implementasi rekursi adalah penyelesaian
perhitungan faktorial dari suatu bilangan bulat (integer number). Dalam
matematika, faktorial didefinisikan sebagai berikut:
dan
Sehingga didapat misalnya nilai faktorial dari bilangan 5 dan 6 adalah sebagai
berikut:
dan
Perhatikan contoh source code yang ditulis dalam bahasa pemrograman C++
berikut. Source code berikut adalah contoh penyelesaian komputasi faktorial
menggunakan teknik rekursi.
37
Program 9.7:
#include <iostream.h>
typedef unsigned int UINT;
long Factorial(UINT aNumber)
{
if (aNumber == 0)
return 1;
return aNumber*Factorial(aNumber-1);
}
int main()
{
std::cout << Factorial(5);
return 0;
}
38
Pertemuan 10
Variabel dengan tipe data tunggal (skalar) hanya dapat digunakan untuk
menyimpan sebuah nilai saja, sehingga untuk menyimpan beberapa nilai sekaligus
dalam suatu variabel khusus yang disebut dengan variabel array atau variabel
berindeks. Variabel array dapat digunakan untuk menampung banyak data yang
sejenis (numerik/string).
39
{
printf("Nilai Angka : %d",nilai[x]);
}
getch();
}
40
10.2 Array Berdimensi Dua dan Operasi Matrik
Array berdimensi 2 sering digunakan dalam operasi matrik. Array
berdimensi 2 terdiri atas 2 elemen yaitu baris dan kolom. Matrik adalah daftar
bilangan yang disusun dalam bentuk dua dimensi kolom dan baris. Nilai-nilai
dalam matrik disebut dengan elemen matrik. Pada suatu program komputer, suatu
matriks disimpan pada array berdimensi 2. Indeks dari matrik menunjukkan
nomor elemen dari matriknya.
Contoh program 10.3:
#include <stdio.h>
#include <conio.h>
void main()
{ int x[3][3]={{1,2,3},{4,5,6},{7,8,9}},b,k;
clrscr();
for(b=0 ; b<3 ; b++)
for(k=0 ; k<3 ; k++)
printf("x[%d][%d] = %d\n",b,k,x[b][k]);
for(b=0 ; b<3 ; b++)
for(k=0 ; k<3 ; k++)
{
gotoxy(20+(k+1)*2,b+1);
printf("%d",x[b][k]);
}
getch();
}
41
Pertemuan 11
STRING
42
{ char teks[13]; //string dengan panjang maksimal 12 karakter
clrscr();
cout<<"Masukan sebuah kata :"<<endl;
cin>> teks;
cout<< "Kata yang tercetak :"<<teks;
}
43
maka hanya 12 karakter pertama yang disimpan pada teks, mengingat argumen
kedua dari fungsi get() diisi dengan 13 (satu karakter berisi Null).
Pada contoh program di atas dapat ditulis sebagai berikut :
cin.get(teks, 13)
Bisa juga ditulis sebagai berikut :
cin. Get(teks, sizeof(teks));
44
mestinya. Cara untuk menyelesaikan masalah di atas dengan menggunakan fungsi
getline(), karena fungsi ini dapat membuang sisa data yang tidak dibaca, termasuk
newline itu sendiri. Pada contoh berikut, get() diganti dengan getline().
Contoh program 11.4:
#include<iostream.h>
#include<conio.h>
void main()
{ char nama[25];
char alamat[35];
clrscr(); //hapus layar
cout<<"Masukan Nama :"<<endl;
cin.getline(nama, sizeof(nama));
cout<< "Masukan Alamat :"<<endl;
cin.getline(alamat,sizeof(alamat));
cout<<"Nama:"<<nama<<endl;
cout<<"Alamat:"<<alamat<<endl;
}
14.1.2Fungsi strcpy
Bentuk dari dari strcpy() :
strcpy(string_target,string_awal)
Prototipe fungsi di atas ada pada file header string.h
Contoh program 11.5 menggunakan strcpy():
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
45
char teks[]="C++ Oke";
char data [25];
clrscr(); //hapus layar
strcpy(data,teks); // mengcopy isi teks ke data
cout<<"Isi data :"<<data<<endl; }
46
Pada contoh di atas,
st[i]= toupper(st[i]);
menyebabkan setiap huruf kecil pada variabel st akan diganti dengan huruf
kapital.
47
char st[]="AbCdEfGeHjKl";
Maka st akan berisi : "abcdefgehjki";
Sedangkan fungsi strupr() kebalikan dari fungsi strlwr(). Kedua fungsi di atas
sama seperti tolower dan toupper.
Contoh program 11.8 untuk memperlihatkan efek strlwr() dan strupr() :
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char st[]="AbCdEfGhIjKl";
clrscr(); //hapus layar
cout<<"Isi St mula-mula:"<<st<<endl;
strlwr(st);
cout<<"Isi setelah dikonversi strlwr: "<<endl;
cout<<st<<endl;
strupr(st);
cout<<"Isi setelah dikonversi strupr: "<<endl;
cout<<st<<endl;
}
48
Pertemuan 12
POINTER
1
ted = &andy;
Maka hasilnya
Gambar 12.1
2
px
zzzz 1000
Address
?
1000
x
49
memiliki lokasi penyimpanan di memori. Sebelum kita berbicara tentang pointer,
kita akan melihat bagaimana sebuah memori komputer bekerja.
Memori terdiri, pada tingkat terendah, sekelompok bit yang dapat baik 1
atau 0. Bit ini agak terlalu kecil untuk individual berguna, dan itu akan sangat
tidak praktis untuk mengaksesnya satu per satu waktu. Sebagai hasilnya, mereka
biasanya diakses dalam potongan. Pada komputer pribadi, mereka biasanya
diakses dalam potongan dari 8 bit. Tidak ada yang terlalu istimewa 8.
Sebuah sistem dapat dengan mudah bekerja dengan potongan dari 9, 12,
16 atau 32 bit. Untuk tutorial ini, kita akan menggunakan 8 bit.
Apapun sistem bekerja dengan disebut sebagai blok addressable terkecil
memori. Karena kita menggunakan 8 bit pada contoh kita, itu berarti setiap
variabel akan menggunakan satu atau lebih blok dari 8 bit. Akibatnya, urutan dari
beberapa blok memori akan terlihat seperti ini:
Kode:
|........||........||........||........|
01 02 03 04
Gambar 12.3
Setiap blok bit diberikan nomor (alamat memori). Sebuah variabel di C +
+ akan menempati satu atau lebih blok memori. Untuk keperluan bekerja dengan
memori, sebuah char didefinisikan untuk menduduki 1 blok (minimum 8 bit).
Variabel lain menempati kelipatan yang banyak blok. Untuk keperluan tutorial ini,
sebuah char akan menempati 1 dari blok memori di atas (seperti 01). Sebuah int
akan menempati 2 blok memori yang berdekatan (seperti 01 dan 02, atau 03 dan
04). Ganda akan menempati 4 blok memori yang berdekatan (01, 02, 03, dan 04).
Mengingat semua itu, perhatikan kode berikut:
Kode:
int main()
{
int int1=5;
double double1=3.14;
int int2=10;
char cha1='A',cha2='2';
50
return 0;
}
Jika anda melihat diagram tentang bagaimana variabel-variabel yang
disimpan dalam memori, ini mungkin terlihat seperti ini (. Adalah 2 bits):
Kode:
|int1....||double1.........||int2....||cha1||cha2|
02&03 04-07 08&09 10 11
Melihat ini, lokasi dari variabel-variabel dapat berupa: INT1: 02, double1:
04, int2: 08: cha1: 09, cha2: 10. Perhatikan bahwa saya tidak mengatakan apa-apa
tentang apa yang masing-masing variabel berisi, di mana mereka berada. Juga
perhatikan bahwa char adalah ukuran 1 (seperti biasa), dan bahwa aku
mengasumsikan bahwa int adalah ukuran 2, dan double adalah ukuran 4. Jumlah
bit dalam ukuran 1 adalah sering 8, tapi benar-benar tergantung pada arsitektur
perangkat keras. Tujuan dari pointer adalah untuk menyimpan alamat-alamat ini
dan memberikan kami akses ke variabel berdasarkan alamat mereka. Anda
membuat petunjuk sebagai berikut:
Kode:
int main()
{
int int1=5;
double double1=3.14;
int int2=10;
char cha1='A',cha2='2';
int* intptr = &int1;
double* dptr = &double1;
char* charptr = &cha1;
return 0;
}
Alamat di depan INT1 mengembalikan alamat INT1, dalam hal ini 02. Jadi
intptr berisi 02, dptr berisi 04, dan charptr berisi 09. The * dalam deklarasi
variabel menunjukkan bahwa variabel pointer ke jenis di depan *. Pada titik ini,
hal itu mungkin tampak konyol untuk menggunakan pointer bukan hanya
menggunakan variabel. Besar, kita dapat menyimpan lokasi memori. Jadi apa?
51
Satu hal yang dapat kita lakukan adalah menggunakan pointer untuk
mendapatkan akses ke variabel apa toko. Kita melakukan ini dengan * operator
(dereferencing). Itu berarti * intptr akan kembali 5, sementara intptr akan kembali
02. Hal lain yang dapat Anda lakukan adalah menggunakan + dan - pada pointer
ke langkah maju atau mundur melalui memori. Jarak 1 akan bergerak melalui
memori tergantung pada jenis memori pointer memandang. Sejak intptr terlihat di
ints (dalam hal ini ukuran 2 (biasanya 16 bit)), jika intptr berisi 02, kemudian
intptr + 1 akan kembali 04 (satu int maju). Sejak dptr terlihat di ganda (dalam hal
ini ukuran 4), jika dptr berisi 04, dptr 1 akan kembali 08 (satu ganda maju).
Pada titik ini, Anda mungkin berpikir hal ini berarti Anda dapat
menggunakan intptr untuk mengakses ganda. Anda tidak bisa. intptr + 1 akan
mengakses double1 paruh pertama. Hasilnya akan tergantung pada arsitektur yang
mendasari. Demikian pula, dptr + 1 akan menafsirkan semua int2, cha1, dan cha2
sebagai ganda. Nilai utama dari pointer adalah menerima dan bekerja dengan
array dalam fungsi. Perhatikan kode berikut:
Kode:
#include <iostream.h>
void loadarray(int* thearray)
{ for (int i=0;i<10;i++) thearray[i]=i;
}
void printarray(int* thearray)
{ for (int i=0;i<10;i++) std:
cout<<"element"<<i<<" "<<*(thearray+i)<<"\n";
}
int main()
{ int myarray[10];
loadarray(myarray);
printarray(myarray);
}
52
Gambar 12.4
Pada pembahasan pertama, mungkin muncul bahwa kami melewati sebuah
integer ke load array. Ini tidak terjadi. myarray adalah sebuah array dari ints,
tetapi istilah myarray sebenarnya adalah sebuah pointer ke int pertama dalam
array. Ketika loadarray menerima bahwa pointer, kemudian dapat menggunakan
pointer int thearray seperti nama array (ya, kami memiliki dua pointer menunjuk
ke elemen pertama dari array). [] operator akan menafsirkan array itu nama
sebagai array dan menemukan elemen yang benar berdasarkan indeks.
Penggunaan array yang lain adalah untuk menciptakan variabel pada saat
run-time. Dalam keadaan normal, anda harus menyatakan apa yang variabel
dalam kode Anda akan bekerja dengan. Kadang-kadang, bagaimanapun, anda
tidak tahu. Ketika Anda sedang membaca sebuah file, Anda tidak tahu seberapa
besar itu, sehingga Anda tidak dapat menjelaskan ukuran di muka. Berhasil
membacanya, Anda akan perlu untuk mengambil memori yang diperlukan.
Kode:
int main()
{
int* intptr = 0;
intptr = new int;
intptr = new int;
*intptr = 5;
delete intptr;
}
53
12.7 Pointer Penunjuk Pointer (pointer to pointer)
Suatu pointer bisa saja menunjuk ke pointer lain. Gambar berikut
memberikan contoh mengenai pointer menunjuk pointer.
Pointer Pointer Variabel
ptr1 ptr2 var_x
alamat alamat
ptr1 ptr1 nilai
54
Gambar 12.6
55
Pertemuan 13
13.1 Struktur
Nilai pada dasarnya struktur jenis. Mereka didefinisikan dengan
menggunakan kata kunci struct. Anda dapat mengakses variabel di dalam struktur
dengan menciptakan sebuah objek dari struktur.
Satu-satunya perbedaan adalah bahwa Anda tidak harus menggunakan sintaks
untuk membuat objek dari sebuah kelas,
13.2 UNION
Sama seperti struct, union juga merupakan tipe data yang dibangkitkan, dimana
anggota-anggotanya menggunakan secara bersama-sama ruang penyimpanan
memori yang sama, berbeda dengan struktur yang masing-masing variabel
menempati lokasi memori yang berbeda. Jumlah bytes yang digunakan untuk
menyimpan union adalah sedikitnya cukup untuk menyimpan data terbesar yang
ditangani. Oleh karena itu, tipe union ini umumnya digunakan untuk menangani
satu, dua, atau tiga variabel dengan tipe yang mirip. Sebagai contoh:
union nilaiUjian
{
int uts, uas;
float akhir;
}
13.3 Bitfield
Suatu bit atau beberapa bit dalam sebuah data berukuran satu byte atau
dua byte dapat diakses dengan mudah melalui bitfield. Dengan cara ini, suatu bit
atau beberapa bit dapat diakses tanpa melibatkan operator pemanipulasi bit
(seperti &, |). Selain itu, satu atau dua byte memori dapat dipakai untuk
menyimpan sejumlah informasi.
56
Sebagai contoh, untuk memperoleh informasi masing-masing bit dari
suatu data satu byte, penulisan medan bit berupa struct info_byte
{ unsigned bit0:1;
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
};
Jika disajikan dalam bentuk gambar, gambaran suatu struktur yang
memiliki tipe seperti di atas adalah sebagai berikut :
7 6 5 4 3 2 1 0 bit
b b b b b b b b
i i i i i i i i
t t t t t t t t
7 6 5 4 3 2 1 0
Gambar Susunan bit dari memori sebuah data bertipe info_byte
Pada pendefinisian struktur info_byte di atas,
• Nilai 1 setelah tanda titik-dua (:) menyatakan panjang dari bitfield
• unsigned menyatakan bahwa bitfield dinyatakan dalam keadaan tak-
bertanda (untuk contoh berikutnya, nantinya setiap bitfield memiliki
kemungkinan nilai berkisar 1 atau (0).
57
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
}; panjang/jumlah bit
nama variabel bitfield
sebuah variabel bitfield haruslah dideklarasikan berupa salah satu di antara
int,unsigned dan signed.
Contoh berikut memberikan gambaran tentang cara memberikan nilai
kepada variabel struktur yang mengandung elemen berupa bitfield, dan cara
mengakses setiap nilai dari bitfield.
Program 13.1 Bitfield utk menampilkan bentuk biner dr karakter masukan :
#include <stdio.h>
main()
{struct info_byte /* definisi tipe bitfield */
{
unsigned bit0:1; /* bit ke-0 */
unsigned bit1:1; /* bit ke-1 */
unsigned bit2:1; /* bit ke-2 */
unsigned bit3:1; /* bit ke-3 */
unsigned bit4:1; /* bit ke-4 */
unsigned bit5:1; /* bit ke-5 */
unsigned bit6:1; /* bit ke-6 */
unsigned bit7:1; /* bit ke-7 */
};
/* deklarasi variabel union dan elemen bitfield */
union
{ unsigned char karakter;
struct info_byte byte;
} ascii;
58
printf(“Masukkan sebuah karakter : ”);
scanf(“%c”, &ascii.karakter);
printf(“\nKode ASCII dari karakter %c adalah %d\n”, ascii.karakter, ascii.karakter);
printf("Bentuk biner dari nilai %d adalah ", ascii.karakter);
printf("%d%d%d%d%d%d%d%d\n",ascii .byte.bit7, ascii.byte.bit6, ascii.byte.bit5,
ascii.byte.bit4, ascii.byte.bit3, ascii.byte.bit2, ascii.byte.bit1, ascii.byte.bit0);
}
59
} koord;
Pada contoh di atas, variabel koord yang bertipe data_gambar akan
menempati memori 1 byte (8 bit) dengan 4 informasi terkandung di
dalamnya (masing-masing 2 bit), atau memegang nilai bulat antara 0 sampai
60
Pada pendeklarasian terakhir :
Unsigned :5;
fungsinya hanya untuk memperjelas bahwa total bit dari
bitfield adalah 8 bit (1 byte). Perhatikan, bahwa karena 5 bit terakhir tidak
diperlukan, maka nama bitfield boleh tidak disertakan. Kalaupun mau diberi
nama (misalnya : kosong), maka bentuk deklarasinya adalah :
struct info
{
unsigned info_x:2;
unsigned info_y:1;
unsigned kosong:5;
} status;
program 13.2:
#include <stdio.h>
main()
{
/* definisi tipe bitfield */
struct info
{unsigned info_x:2;
unsigned info_y:1;
unsigned kosong:5; /* bisa dihilangkan */
} status; status.info_x = 3;
status.info_y = 1;
printf("info_x = %d\n", status.info_x);
printf("info_y = %d\n", status.info_y);
}
Gambar 13.2
61
13.4 ENUM
ENUM adalah sebuah mekanisme pemetaan nomor telepon Telkom yang
kita kenal, seperti, +628113334567 atau +62555334567, agar di kenali di dunia
VoIP yang menggunakan nomor telepon, seperti, 20333@voiprakyat.or.id atau
5007987@fwd.pulver.com. Jadi sebetulnya isi sebuah ENUM hanya tabel saja.
Tentunya konsep ENUM tidak terbatas pada pemetaan saja, dengan menggunakan
ENUM sebuah nomor telepon +6255534567 dapat mempunyai beberapa pesawat
penerima dengan sistem prioritas, misalnya,
+6255534567 prioritas 1 245678@voiprakyat.or.id
+6255534567 prioritas 2 6543686@fwd.pulver.com
+6255534567 prioritas 3 +62215678976 (nomor kantor)
+6255534567 prioritas 4 +62856789654 (nomor handphone)
+6255534567 prioritas 5 mail:oknum@salemba.co.id
Dalam bahasa yang lebih manusiawi, jika seseorang berusaha menelepon
ke +6255534567 akan diusahakan untuk menghubungi ke VoIP Rakyat
245678@voiprakyat.or.id, jika gagal maka akan berusaha menghubungi nomor
VoIP di Pulver 6543686@fwd.pulver.com, jika gagal maka akan berusaha
menghubungi kantor di +62215678976, jika gagal lagi maka akan berusaha
menghubungi handphone di +62856789654. Terakhir jika semua cara gagal, apa
boleh buat masuk ke voice mail untuk oknum@salemba.co.id.
Cara penulisan ENUM di Internet, misalnya menggunakan top level
domain e164.id, adalah sebagai berikut
+6255512345678 8.7.6.5.4.3.2.1.5.5.5.2.6.e164.id
+6281812345678 8.7.6.5.4.3.2.1.8.1.8.2.6.e164.id
perhatikan nomor ENUM mempunyai urutan terbalik dari nomor telepon
yang kita kenal biasa.
Contoh ENUM
Salah satu contoh ENUM yang paling baik adalah e164.org, kita dapat
mendaftarkan diri secara automatis dengan mekanisme authentikasi yang baik
dengan cara menelepon nomor telepon yang akan di mapping ke account VoIP.
62
Tentunya e164.org bukan satu-satunya ENUM server di dunia. Rekan-rekan VoIP
Rakyat-pun mengembangkan ENUM sendiri yang dapat di akses di
http://www.enum.voiprakyat.or.id.
63
Pertemuan 14
TYPE
14.1 Tipe Data
Integer ( Bilangan Bulat )
Integer merupakan tipe data numerik yang digunakan apabila tidak
berurusan dengan pecahan atau bilangan desimal. Tipe data numerik yang
termasuk integer adalah sebagai berikut :
64
14.3.1 Tipe Deskripsi
Float memiliki nilai -3.4x108 sampai +3.4x108 dan menempati 4 byte di
memori Double memiliki nilai -1.7x10308 sampai +1.7x10308 Semua bilangan
pecahan atau desimal dalam Java tanpa diakhiri huruf f akan dianggap sebagai
double. Sedangkan bilangan yang ingin dikategorikan sebagai float harus diakhiri
dengan huruf F. Misalnya : 4.22 F atau 2.314f. Sedangkan untuk bilangan double,
bisa menambah dengan huruf D, karena secara default bilangan dengan koma atau
pecahan atau desimal akan dianggap sebagai double.
14.3.1.1 Char
Char adalah karakter tunggal yang didefinisikan dengan diawali dan
diakhiri dengan tanda ‘ ( petik tunggal ). Char berbeda dengan String, karena
String bukan merupakan tipe data primitif, tetapi sudah merupakan sebuah objek.
Tipe char mengikuti aturan unicode, sehingga dapat menggunakan kode /u
kemudian diikuti bilangan dari 0 sampai 65535, tetapi yang biasa digunakan
adalah bilangan heksadesimal dari 0000 sampai FFFF. Misalnya : ‘\u123’ Selain
karakter biasa, juga terdapat karakter khusus yang didefinisikan dengan cara
mengawalinya menggunakan tanda .
65
BAB III
PENUTUP
A. Kesimpulan
66
DAFTAR PUSTAKA
Deitel, Harvey M dan Paul J Deitel. 2005. C++ How to Program, Fifth
Edition. New Jersey: Prentice Hall.
Deshpande, P. S dan O. G. Kakde. 2003. C & Data Structures. Massachusetts
: Dreamtech Press.
Solichin, Achmad. 2003. Pemograman Bahasa C dengan Turbo C.
IlmuKomputer.Com.
Materi Struktur Data TI UKDW oleh Antonius Rachmat C. S.Kom, M.Sc.
Materi Praktikum Struktur Data 2007 oleh TIM Asisten Praktikum Struktur
Data 2007.
Pamungkas, Dudi. 2009. SEJARAH PERKEMBANGAN KOMPUTER.
Google. Surabaya
Weblog, Wahyunisetiana.2009.FUNGSI.Wordpress.Yogyakarta
67