Makalah Program Komputer c++

144
i TUGAS MAKALAH 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 JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI INSTITUT TEKNOLOGI ADHI TAMA SURABAYA 2010

description

pemrograman c++ (Ahmad Teguh)

Transcript of Makalah Program Komputer c++

Page 1: Makalah Program Komputer c++

i

TUGAS MAKALAH

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

JURUSAN TEKNIK ELEKTRO

FAKULTAS TEKNOLOGI INDUSTRI

INSTITUT TEKNOLOGI ADHI TAMA SURABAYA

2010

Page 2: Makalah Program Komputer c++

ii

KATA PENGANTAR

Alhamdulillahhirobbil ‘alamin, puji syukur bagi Allah SWT yang telah

memberikan Rahmat, Taufiq dan Hidayah-Nya kepada kami sehingga kami bisa

menyelesaikan makalah yang berisi kumpulan data-data megenai sejarah komuter,

algorima pemrograman, pembuatan diagram alir (flowchart) serta cara-cara

pemrograman dengan program C/C++ beserta contoh-contoh aplikasi

penggunaanya berdasarkan silabus kuliah pemprograman komputer.

Tidak lupa kami mengucapkan terima kasih yang sebesar-besarnya kepada

semua pihak yang telah membantu penyusunan makalah ini hingga

terselesaikanya penulisan makalah ini terutama kepada Slamet Winardi, ST, MT

selaku dosen pemrograman komputer.

Kami berharap makalah ini dapat bermanfaat dan menambah wawasan

bagi para pembaca mengenai pemrograman dengan menggunakan program C/C++

bagi kami khususnya, dan segenap pembaca umumnya.

Ketidak sempurnaan pasti ada pada semua makhluk di dunia ini. Kami

menyadari bahwa makalah ini masih jauh dari sempurna. Oleh karena itu, kami

masih membutuhkan kritik dan saran dari berbagai pihak demi kesempurnaan

makalah kami selanjutnya.

Surabaya, Januari 2010

Penulis

Page 3: Makalah Program Komputer c++

iii

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

Page 4: Makalah Program Komputer c++

iv

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

Page 5: Makalah Program Komputer c++

v

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

Page 6: Makalah Program Komputer c++

vi

BAB IV PENUTUP

A. Kesimpulan...................................................................................... 68

DAFTAR PUSTAKA .....................................................................................................69

Page 7: Makalah Program Komputer c++

1

BAB I

PENDAHULUAN

A. Latar Belakang

C adalah bahasa yang standar, artinya suatu program yang ditulis

dengan versi bahasa C tertentu dapat dikompilasi dengan versi bahasa C yang

lain dengan sedikit modifikasi. Standar bahasa C yang asli adalah standar

dari UNIX.

Sistem operasi, kompiler C dan seluruh program aplikasi UNIX

yang esensial ditulis dalam bahasa C. Patokan dari standar UNIX ini

diambilkan dari buku yang ditulis oleh Brian Kerninghan dan Dennis Ritchie

berjudul "The C Programming Language", diterbitkan oleh Prentice- Hall tahun

1978. Deskripsi C dari Kerninghan dan Ritchie ini kemudian dikenal secara

umum sebagai "K&R C".

Agar suatu program dalam bahasa pemrograman dapat dimengerti oleh

komputer, program haruslah diterjemahkan dahulu ke dalam kode mesin.

Adapun penerjemah yang digunakan bisa berupa interpreter atau kompiler.

Kebanyakan versi C yang beredar di pasaran menggunakan

penerjemah berupa kompiler. Kompiler merupakan jenis penerjemah yang

lain, dengan cara kerjanya yaitu menerjemahkan seluruh instruksi dalam

program sekaligus. Proses pengkompilasian ini cukup dilakukan sekali saja.

Selanjutnya hasil penerjemahan (setelah melalui tahapan yang lain) bisa

dijalankan secara langsung, tanpa tergantung lagi oleh program sumber

maupun kompilernya. Keuntungannya, proses eksekusi dapat berjalan dengan

cepat, sebab tak ada lagi proses penerjemahan. Di samping itu, program sumber

bisa dirahasiakan, sebab yang dieksekusi adalah program yang sudah

dalam bentuk kode mesin. Sedangkan kelemahannya, proses pembu-

atan dan pengujian membutuhkan waktu relatif lebih lama, sebab ada

waktu untuk mengkompilasi (menerjemahkan) dan ada pula waktu melakukan

proses linking. Perlu pula diketahui, program akan berhasil dikompilasi hanya

Page 8: Makalah Program Komputer c++

2

jika program tak mengandung kesalahan secara kaidah sama sekali.

B. Tujuan

Setelah membaca makalah ini para pembaca diharapkan mampu :

1. Tingkat pemahaman

Mampu menjelaskan, menganalisa konsep dan logika berpikir komputer,

prinsip kerja serta jalannya program, cara perancangan dan analisis masalah,

yang kemudian dipecahkan dengan menggunakan teknik pemrograman

terstruktur, serta mengimplementasikan suatu permasalahan dalam bentuk

algoritma dan diagram alir mampu menterjemahkan algoritma ke dalam

program C++ dan mampu menganalisa program C++

2. Tingkat aplikasi

mengimplementasikan konsep dan logika berpikir komputer, cara

perancangan dan analisis masalah serta membuat penyelesaian masalah dengan

menggunakan pemrograman terstruktur, kemudian mengeksekusi dan

melakukan pengujian program.

Page 9: Makalah Program Komputer c++

3

BAB II

ISI

Pertemuan 1

SEJARAH PERKEMBANGAN KOMPUTER

Komputer telah berkembang menjadi suatu perangkat yang sangat

dibutuhkan oleh semua orang. Siapa yang tidak membutuhkan teknologi komputer

dewasa ini. Mulai dari belanja dapur, perbankan, hingga kontak jodoh bisa

dilakukan lewat teknologi komputer ini. Kehidupan manusia sekarang tidak akan

pernah lepas dari teknologi yang satu ini.

1.1 Komputer Generasi I

Pada tahun 1941, Konrad Zuse, seorang insinyur Jerman membangun

sebuah komputer, Z3, untuk mendesain pesawat terbang dan peluru kendali.

Tahun 1943, pihak Inggris menyelesaikan komputer yang dinamakan Colossus

untuk memecahkan kode-rahasia yang digunakan Jerman. Dampak pembuatan

Colossus tidak terlalu mempengaruhi perkembangan industri komputer, karenakan

Colossus bukan merupakan komputer serbaguna (general-purpose computer),

Howard H. Aiken (1900-1973), seorang insinyur Harvard yang bekerja

dengan IBM, berhasil memproduksi kalkulator elektronik untuk US Navy.

Kalkulator tersebut berukuran panjang setengah lapangan bola kaki dan memiliki

rentang kabel sepanjang 500 mil. The Harvard-IBM Automatic Sequence

Controlled Calculator, atau Mark I, merupakan komputer relai elektronik. Ia

menggunakan sinyal elektromagnetik untuk menggerakkan komponen mekanik.

Mesin tersebut beroperasi dengan lambat (ia membutuhkan 3-5 detik untuk setiap

perhitungan) dan tidak fleksibel (urutan kalkulasi tidak dapat diubah). Kalkulator

tersebut dapat melakukan perhitungan aritmatik dasar dan persamaan yang lebih

kompleks.

Perkembangan komputer lain pada masa kini adalah Electronic Numerical

Integrator and Computer (ENIAC), yang dibuat oleh kerja sama antara pemerintah

Page 10: Makalah Program Komputer c++

4

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

Page 11: Makalah Program Komputer c++

5

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.

Page 12: Makalah Program Komputer c++

6

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.

Page 13: Makalah Program Komputer c++

7

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

Page 14: Makalah Program Komputer c++

8

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.

Page 15: Makalah Program Komputer c++

1

BAB I

PENDAHULUAN

A. Latar Belakang

C adalah bahasa yang standar, artinya suatu program yang ditulis

dengan versi bahasa C tertentu dapat dikompilasi dengan versi bahasa C yang

lain dengan sedikit modifikasi. Standar bahasa C yang asli adalah standar

dari UNIX.

Sistem operasi, kompiler C dan seluruh program aplikasi UNIX

yang esensial ditulis dalam bahasa C. Patokan dari standar UNIX ini

diambilkan dari buku yang ditulis oleh Brian Kerninghan dan Dennis Ritchie

berjudul "The C Programming Language", diterbitkan oleh Prentice- Hall tahun

1978. Deskripsi C dari Kerninghan dan Ritchie ini kemudian dikenal secara

umum sebagai "K&R C".

Agar suatu program dalam bahasa pemrograman dapat dimengerti oleh

komputer, program haruslah diterjemahkan dahulu ke dalam kode mesin.

Adapun penerjemah yang digunakan bisa berupa interpreter atau kompiler.

Kebanyakan versi C yang beredar di pasaran menggunakan

penerjemah berupa kompiler. Kompiler merupakan jenis penerjemah yang

lain, dengan cara kerjanya yaitu menerjemahkan seluruh instruksi dalam

program sekaligus. Proses pengkompilasian ini cukup dilakukan sekali saja.

Selanjutnya hasil penerjemahan (setelah melalui tahapan yang lain) bisa

dijalankan secara langsung, tanpa tergantung lagi oleh program sumber

maupun kompilernya. Keuntungannya, proses eksekusi dapat berjalan dengan

cepat, sebab tak ada lagi proses penerjemahan. Di samping itu, program sumber

bisa dirahasiakan, sebab yang dieksekusi adalah program yang sudah

dalam bentuk kode mesin. Sedangkan kelemahannya, proses pembu-

atan dan pengujian membutuhkan waktu relatif lebih lama, sebab ada

waktu untuk mengkompilasi (menerjemahkan) dan ada pula waktu melakukan

proses linking. Perlu pula diketahui, program akan berhasil dikompilasi hanya

Page 16: Makalah Program Komputer c++

2

jika program tak mengandung kesalahan secara kaidah sama sekali.

B. Tujuan

Setelah membaca makalah ini para pembaca diharapkan mampu :

1. Tingkat pemahaman

Mampu menjelaskan, menganalisa konsep dan logika berpikir komputer,

prinsip kerja serta jalannya program, cara perancangan dan analisis masalah,

yang kemudian dipecahkan dengan menggunakan teknik pemrograman

terstruktur, serta mengimplementasikan suatu permasalahan dalam bentuk

algoritma dan diagram alir mampu menterjemahkan algoritma ke dalam

program C++ dan mampu menganalisa program C++

2. Tingkat aplikasi

mengimplementasikan konsep dan logika berpikir komputer, cara

perancangan dan analisis masalah serta membuat penyelesaian masalah dengan

menggunakan pemrograman terstruktur, kemudian mengeksekusi dan

melakukan pengujian program.

Page 17: Makalah Program Komputer c++

3

BAB II

ISI

Pertemuan 1

SEJARAH PERKEMBANGAN KOMPUTER

Komputer telah berkembang menjadi suatu perangkat yang sangat

dibutuhkan oleh semua orang. Siapa yang tidak membutuhkan teknologi komputer

dewasa ini. Mulai dari belanja dapur, perbankan, hingga kontak jodoh bisa

dilakukan lewat teknologi komputer ini. Kehidupan manusia sekarang tidak akan

pernah lepas dari teknologi yang satu ini.

1.1 Komputer Generasi I

Pada tahun 1941, Konrad Zuse, seorang insinyur Jerman membangun

sebuah komputer, Z3, untuk mendesain pesawat terbang dan peluru kendali.

Tahun 1943, pihak Inggris menyelesaikan komputer yang dinamakan Colossus

untuk memecahkan kode-rahasia yang digunakan Jerman. Dampak pembuatan

Colossus tidak terlalu mempengaruhi perkembangan industri komputer, karenakan

Colossus bukan merupakan komputer serbaguna (general-purpose computer),

Howard H. Aiken (1900-1973), seorang insinyur Harvard yang bekerja

dengan IBM, berhasil memproduksi kalkulator elektronik untuk US Navy.

Kalkulator tersebut berukuran panjang setengah lapangan bola kaki dan memiliki

rentang kabel sepanjang 500 mil. The Harvard-IBM Automatic Sequence

Controlled Calculator, atau Mark I, merupakan komputer relai elektronik. Ia

menggunakan sinyal elektromagnetik untuk menggerakkan komponen mekanik.

Mesin tersebut beroperasi dengan lambat (ia membutuhkan 3-5 detik untuk setiap

perhitungan) dan tidak fleksibel (urutan kalkulasi tidak dapat diubah). Kalkulator

tersebut dapat melakukan perhitungan aritmatik dasar dan persamaan yang lebih

kompleks.

Perkembangan komputer lain pada masa kini adalah Electronic Numerical

Integrator and Computer (ENIAC), yang dibuat oleh kerja sama antara pemerintah

Page 18: Makalah Program Komputer c++

4

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

Page 19: Makalah Program Komputer c++

5

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.

Page 20: Makalah Program Komputer c++

6

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.

Page 21: Makalah Program Komputer c++

7

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

Page 22: Makalah Program Komputer c++

8

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.

Page 23: Makalah Program Komputer c++

9

Pertemuan 2

ALGORITMA DAN DIAGRAM ALIR

Algoritma adalah urutan langkah-langkah logis penyeselaian masalah yang

disusun secara sistematis dan logis. Kata logis merupakan kata kunci dalam

algoritma. Langkah-langkah dalam algoritma harus dapat ditentukan bernilai

benar atau salah.

2.1 Algoritma

Algoritma adalah jantung ilmu komputer. Banyak cabang ilmu komputer

yang diacu dalam terminologi algoritma. Namun algoritma juga digunakan dalam

kehidupan sehari-hari, contohnya resep makanan. Di dalam resep makanan

terdapat langkah-langkah yang merupakan algoritma. Selain itu masih banyak

contoh algoritma yang lain.

Untuk melaksanakan suatu algoritma diperlukan suatu bahasa

pemrograman, contoh bahasa pemrograman adalah : Pascal, C++, Basic, dll.

Notasi algoritma dapat diterjemahkan kedalam bahasa pemrograman apapun,

dengan kata lain notasi algoritma bersifat independen.

2.2 Diagram Alir (Flowchart)

Gambar 2.1

Page 24: Makalah Program Komputer c++

10

Gambar 2.2 Gambar 2.3

Suatu flowchart adalah suatu representasi secara diagram yang

mengilustrasikan urutan dari operasi yang dilakukan untuk mendapatkan suatu

hasil. Dengan kata lain, flowchart membantu kita untuk mengerti dan melihat

bentuk algoritma dengan menampilkan algoritma dalam simbol-simbol gambar.

Dalam menggambar flowchart, digunakan simbol tertentu seperti gambar 2.1.

Contoh berikut bisa digunakan untuk lebih mengerti perbedaan kegunaan simbol-

simbol tersebut. Misal kita ingin mencari jumlah dari 2 buah bilangan, maka

flowchart-nya adalah seperti gambar 2.2. Contoh lain, misalkan kita ingin

mengetahui apakah sebuah bilangan ganjil atau genap. Untuk itu kita harus

membuat flowchart seperti ini 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 :

Page 25: Makalah Program Komputer c++

11

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

Page 26: Makalah Program Komputer c++

12

Pertemuan 3

PEGENALAN PROGRAM C++

3.1 Tentang C++

C++ diciptakan untuk mendukung pemrograman berorientasi pada objek

(Object Oriented Pragramming/OOP) yang tidak dimiliki C. sementara C

merupakan bahasa pemrograman terbaik dilingkungannya, bahasa ini tidak

memiliki kemampuan OOP. Reputasi C tidak diragukan lagi dalam menghasilkan

program .EXE berukuran kecil, eksekusi yang cepat, antarmuka (interfacing) yang

sederhana dengan bahasa lain dan fleksibilitas pemrograman.

Apa yang membuat C tampak sukar dipelajari mungkin karena tiadanya

pemeriksaan tipe. Sebagai contoh, dapat mencampur bilangan bulat dengan string

untuk menghasilkan karakter. Namun, justru dsitu letak fleksibilitas C, dapat

mengolah data C sebebas mengolah data dalam bahasa assembly.

3.2 Borland C++

Dibandingkan compiler C++ yang lain, Borland C++ memiliki keunggulan

terutama dalam hal kecepatan dan efisiensi kompilasi. Disamping itu, Borland

C++ mendukung beberapa system operasi yaitu DOS, Windows 16bit (Window

3.0) dan windows 32 bit (Windows NT). Meskipun demikian compiler Borland

C++ juga memiliki kelemahan bila dibandingkan compiler C++ yang lain,

misalnya : pemrograman dengan Borland C++ terutama yang menyangkut

tampilan jauh lebih sulit daripada pemrograman dengan Microsoft Visual C++.

3.3 Main

Main ( ) adalah fungsi utama (main) yang harus ada dalam setiap program

C++ kita. Di sini yang digunakan adalah dengan main tanpa nilai kembalian dan

tanpa paramater. Contoh program 3.1

#include <iostream.h>

void main ()

{cout << "hallo subagyo\n";}

Page 27: Makalah Program Komputer c++

13

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();}

Gambar 3.2 hasil eksekusi program 3.2

Page 28: Makalah Program Komputer c++

14

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();}

Gamabar 3.3 hasil eksekusi program 3.3

Bahkan penulisan seperti berikut, dengan menghilangkan sejumlah spasi

tetap diperkenankan: program 3.4

#include <stdio.h>

main ( ) { printf("Selamat datang\n");

printf("di program C++\n"); }

Gambar 3.4 hasil eksekusi program 3.4

Pemrogram tinggal memilih bentuk yang disukai. Sebagai pedoman,

penulisan atau pemilihan bentuk hendaknya memberikan kemudahan bagi yang

ingin membaca program, terutama untuk program yang berukuran besar.

Jika dilihat pada program 3.4 penulisan yang sangat mampat dapat menyebabkan

program sulit dipahami.

Page 29: Makalah Program Komputer c++

15

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}

Gambar 3.5 penulisan komentar tidak mempengaruhi hasil eksekusi

3.7 Include

#include merupakan salah satu jenis pengarah praprosesor yang digunakan

untuk memberitahu kompiler agar dalam proses linking membaca file yang

dinamakan file judul (header file), yaitu file yang diantaranya berisi deklarasi

fungsi dan definisi konstanta.

Bahasa C menyediakan beberapa file judul yang ditandai dengan ekstensi

.h. Misal pada Program di atas, #include <iostream.h> menyatakan pada kompiler

agar membca file bernama iostream.h saat melakukan kompilasi. Bentuk umum

#include : #include <namafile> atau #include “namafile”

Bentuk pertama (#include <namafile>) mengisyaratkan bahwa pencarian

file dilakukan pada direktori khusus (direktori file include), yang merupakan

default direktori file-file judul yang disediakan oleh bahasa pemrograman.

Bentuk kedua (#include “namafile”) menyatakan bahwa pencerian file

dilakukan pertama kali pada direktori aktif tempat program sumber, dan

seandainya tidak ditemukan pencarian akan dilanjutkan pada direktori lainnya

sesuai dengan perintah pada sistem operasi (yaitu PATH).

Page 30: Makalah Program Komputer c++

16

Pertemuan 4

ELEMEN DASAR C++

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 "

Page 31: Makalah Program Komputer c++

17

Konstanta karakter Karakter

\? Karakter ?

Contoh program 4.1:

#include <iostream.h>

main()

{const float phi = 3.14;

cout << " Nilai phi = " << phi;}

Gambar 4.1 program dengan konstanta

Jika terjadi pengubahan nilai dari konstanta phi, maka akan terjadi error.

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

Page 32: Makalah Program Komputer c++

18

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; }

Gambar 4.2 program dengan pendeklarasian variable

Page 33: Makalah Program Komputer c++

19

Pertemuan 5

OPERATOR DAN UNGKAPAN

5.1 Pengantar Operator dan Ungkapan (Ekspresi)

Operator merupakan simbol yang biasa dilibatkan dalam program untuk

melakukan sesuatu operasi atau manipulasi misalnya untuk:

1. Menjumlahkan duabuah nilai

2. Memberikan nilai ke suatu variable

3. Membandingkan kesamaan dua buah nilai

Dalam C ekspresi dapat berupa :

- pengenal

- konstanta

- atau diantara kombinasi elemen diatas dengan operator

Contoh Ungkapan:

a = b + c – 2

Pada ungkapan ini, a, b dan c merupakan operand, simbol =, + dan – merupakan

operator. Dalam hal ini variabel a diisi dengan hasil penjumlahan b dan c

dikurangi 1.

Selanjutnya nilai a ini mernyatakan nilai ungkapan.

5.2 Operator aritmatika

Bahasa C++ menyediakan lima operator aritmatika, yaitu:

Lima Operator Aritmatika

Operator Keterangan Contoh

* Perkalian 2*4

/ Pembagian 8/2

% Sisa Pembagian atau Modulus 9%2

+ Penjumlahan 5+6

- Pengurangan 6-5

Page 34: Makalah Program Komputer c++

20

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();

}

Gambar 5.1 hasil program dengan operator aritmatika

5.3 Operator Bitwise

Operator Bitwise adalah manipulasi data dalam bentuk bit. Borland C++

menyediakan enam buah operator bitwise.

Contoh Program 5.2:

#include <stdio.h>

main()

{

unsigned x;

void displayBits(unsigned);

printf( "Ketik bilangan bulat tak bertanda : "); scanf( "%u", &x);

displayBits(x);

return 0;

}

void displayBits (unsigned value)

{

unsigned c, displayMask = 1 << 15;

printf ( "%7u = ", value );

for ( c = 1 ; c <= 16 ; c++ )

{

putchar ( value & displayMask ? '1' : '0' ) ;

Page 35: Makalah Program Komputer c++

21

if ( c % 8 == 0 )

putchar ( ' ' );

}

putchar ( '\n' );

}

Gambar 5.2 hasil program dengan operator bitwise

5.4 Operator penugasan

Operator penugasan (Assigment operator)dalam bahasa C++ berupa tanda

sama dengan (“=”). Contoh:

Nilai = 80;

A = x * Y;

Artinya : variable”nilai” diisi dengan 80 dan variable”A” diisi dengan hasil

perkalian antara x dan y, contoh:

Contoh program 5.3:

#include <iostream.h>

#include <conio.h>

void main()

{

int nilai;

nilai = 70 ;//variable nilai diisi 70

cout << " variable nilai = " << nilai;

getch();

}

Gambar 5.3 hasil program dengan operator penugasan

5.5 Operator Relasi

Operator relasi digunakan untuk membandingkan antara dua buah nilai

atau variable. Operator relasi dalam bahasa C++:

Page 36: Makalah Program Komputer c++

22

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

5.6 Operator Logika

Operator logika biasa digunakan untuk menghubungkan dua buah

ungkapan kondisi menjadi sebuah ungkapan kondisi operator oprator ini ada tiga

diantaranya:

? && :Logika AND(DAN)

? || : Logika OR (ATAU)

? !: Logika NOT (TIDAK / BUKAN)

bentuk pemakaian || atau && ungkapan1 dan ungkapan2 ditulis di dalam tanda

kurung.

Sebagai contoh (a = = c) && (b = = d) atau a = = c && b= = d

5.7 Operator Unary

Operator unary merupakan operator yang hanya membutuhkan satu

operand saja. Dalam bahasa c++ terdapat beberapa operator unary, yaitu:

Operator Unary

Operator Arti/Maksud Letak Contoh Equivalent

- Unary minus Sebelum operator A+-B*C A+(-B)*C

++ Peningkatan dengan penambahan Sebelum dan A++ A=A=1

Page 37: Makalah Program Komputer c++

23

Operator Arti/Maksud Letak Contoh Equivalent

nilai 1 sesudah

--Pengurangan dengan

pengurangan nilai 1

Sebelum dan

sesudahA-- A=A-1

Sizeof Ukuran dari operand dalam byte Sebelum Sizeof(I) -

! Unary NOT Sebelum !A -

~ Bitwise NOT Sebelum ~A -

&Menghasilkan alamat memory

operandSebelum &A -

* 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 ( );

}

Gambar 5.4 hasil program dengan operator unary

Page 38: Makalah Program Komputer c++

24

Pertemuan 6

OPERASI DASAR MASUKAN DAN KELUARAN

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 ”;}

Gambar 6.1 hasil eksekusi program 6.1

6.2 Cin

Obyek ini bermanfaat untuk membaca data dari standard input (keyboard).

Dengan meletakan variable bernama var :

Contoh Program 6.2 :

#include <iostream.h>

#include <iomanip.h>

void main( )

{int x;

float y;

cout << " Masukkan sebuah nilai bulat : ";

Page 39: Makalah Program Komputer c++

25

cin >> x;

cout << " Masukkan sebuah nilai desimal : ";

cin >> y;

cout << " Bilangan bulat " << x << endl;

cout << " Bilangan desimal " << y << endl;

}

Gambar 6.2 hasil eksekusi program 6.2

6.3 Manipulator

Manipulator umumnya digunakan untuk mengatur tampilan data missal

untuk mengatur nilai dengan lebar tampilan 10 karakter ada beberapa jumlah

manipulator pada C++ diantaranya:

Manipulator endl

Digunnakan untuk menyisipkan karakter newline. Manipulator ini identik dengan

newline

Contoh program 6.3 :

#include <iostream.h>

void main( )

{

int nilai1 = 100 , nilai2 = 90;

cout << " nilai1 = " << nilai1 << endl;

cout << " nilai2 = " << nilai2 << endl;

}

Gambar 6.3 hasil eksekusi program 6.3

Manipulator setw()

Page 40: Makalah Program Komputer c++

26

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;

}

Gambar 6.4 hasil eksekusi program 6.4

Page 41: Makalah Program Komputer c++

27

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";

}

Gambar 7.1 hasil program dengan else dan if

Page 42: Makalah Program Komputer c++

28

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";}

Page 43: Makalah Program Komputer c++

29

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";}}

Page 44: Makalah Program Komputer c++

30

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:

Gambar 7.4 hasil program switch jika tanpa break

Ini akan terjadi jika kita memasukan angka 1,2 dan 3 (tiga) dan seterusnya.

Ini terjadi karena ketika switch selesai mengeskusi case 1, misalnya, tanpa break,

maka switch akan terus mengeksekusi statement yang berada di bawahnya sampai

selesai. Makanya, break berfungsi untuk keluar dari switch begitu statement pada

satu case selesai di eksekusi (tanpa melanjutkan ke statement berikutnya / yang

berada di bawahnya).

Page 45: Makalah Program Komputer c++

31

Pertemuan 9

FUNGSI

Sebuah fungsi berisi sejumlah pernyataan yang dikemas dalam sebuah

nama. Nama ini selanjutnya dapat dipanggil dipanggil beberapa kali dibeberapa

tempat dalam program. Tujuan pembuatan fungsi adalah :

Memudahkan dalam mengembangkan program. Hal ini merupakan kunci

dalam pembuatan program yang terstruktur. Menghemat ukuran program.

Manfaat ini terasakan kalau ada beberapa deretan instruksi yang sama digunakan

pada beberapa tempatdi dalam program.

Umumnya fungsi menerima masukan (disebut argumen atau parameter).

Masukan ini selanjutnya diproses oleh fungsi. Hasil akhir berupa sebuah nilai

yang disebut nilai balik (return value).

9.1 Prototipe Fungsi

Sebuah fungsi tidak dapat dipanggil kecuali sudah dideklarasikan. Untuk

melihat hal ini perhatikan contoh berikut :

Program 9.1

void main ( )

{printf (“Hai \n”);}

Jika program ini dijalankan, C++ akan memberikan kesalahan yang menyatakan

bahwa printf( ) tidak memiliki prototype. Hal seperti ini masih bisa lolos pada

bahasa C. Tetapi tidak demikian halnya pada C++. Kesalahan seperti diatas tidak

akan terjadi seandainya program ditulis menjadi seperti berikut.

Program 9.2 :

#include <stdio.h>

void main() {printf (“ Hai \n “);}

Page 46: Makalah Program Komputer c++

32

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.

9.2 Definisi Fungsi

Setiap fungsi yang dipanggil didalam program harus didefinisikan.

Letaknya dapat dimana saja. Khusus untuk fungsi yang disediakan sistem,

definisinya sebenarnya ada dalam pustaka, yang akan digabungkan dengan

program sewaktu proses linking. Contoh definisi fungsi kuadrat( ):

long kuadrat (long l)

{

return (l * l);

Page 47: Makalah Program Komputer c++

33

}

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);

}

Gambar 9.2 hasil eksekusi program 9.3

9.3 Lingkup Variabel

Pemahaman terhadap lingkup variable didalam penulisan fungsi sangatlah

penting, agar tidak salah dalam menggunakan suatu variable. Lingkup variable

menentukan keberadaan suatu variable tertentu didalam fungsi. Ada variable yang

Page 48: Makalah Program Komputer c++

34

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).

9.3.1. Varabel Otomatis (lokal).

Variabel yang didefinisikan didalam suatu fungsi berlaku sebagai variabel

lokal bagi fungsi. Artinya, variable tesebut hanya dikenal didalam fungsi tempat

variable didefinisikan.

Contoh untuk memperlihatkan efek variabel otomatis (lokal)

Program 9.4:

#include<iostream.h>

#include<conio.h>

void alpha(); //prototipe fungsi

void main()

{int x = 22; //variable lokal pada main()

double y = 2.22; //begitu juga pada variable ini

clrscr();

cout<<”Pada main(): x =”<<x<<”y =”<< y <<endl;

alpha(); //panggil variable alpha

cout<<”Pada main(): x =”<<x<<”y =”<< y <<endl;

}

void alpha()//definisi fungsi alpha()

{int x = 20; //variable lokal pada main()

double y=3.14; //begitu juga pada variable ini

cout<<”Pada main(): x =”<<x<<”y =”<< y <<endl;

}

Gambar 9.3 hasil eksekusi program 9.4

Page 49: Makalah Program Komputer c++

35

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

}

Page 50: Makalah Program Komputer c++

36

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;

}

Gambar 9.5 hasil eksekusi program 9.6

Page 51: Makalah Program Komputer c++

37

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.

Page 52: Makalah Program Komputer c++

38

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;

}

Gambar 9.6 hasil eksekusi program 9.7

Page 53: Makalah Program Komputer c++

39

Pertemuan 10

ARRAY (VARIABEL BERINDEKS)

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).

10.1 Array 1 Dimensi

Tanda [] disebut juga “elemen yang ke...

Misalnya kondisi[0] berarti elemen yang ke nol.

Array yang sudah dipesan, misalnya 10 tempat tidak harus diisi semuanya,

bisa saja hanya diisi 5 elemen saja, baik secara berurutan maupun tidak. Namun

pada kondisi yang tidak sepenuhnya terisi tersebut, tempat pemesanan di memori

tetap sebanyak 10 tempat, jadi tempat yang tidak terisi tetap akan terpesan dan

dibiarkan kosong.

Contoh program 10.1

#include <stdio.h>

#include <conio.h>

void main()

{ int nilai[10], x;

clrscr();

printf("Memasukkan nilai :\n");

for(x=0;x<5;x++)

{

printf("Nilai Angka : "); scanf("%d",&nilai[x]);

}

printf("\n");

printf("Membaca nilai :\n");

for(x=0;x<5;x++)

Page 54: Makalah Program Komputer c++

40

{

printf("Nilai Angka : %d",nilai[x]);

}

getch();

}

Ganbar 10.1 hasil eksekusi program 10.1

Terlihat bahwa alamat array berurutan dengan jarak antar alamat adalah 4 bytes

(integer berukuran 4 bytes)

Contoh program 10.2 (inisialisasi dengan 0):

#include <stdio.h>

#include <conio.h>

int main(){

int bil[7] = {0}; //inisialisasi 0

for(int i=0;i<7;i++){

printf("Elemen ke-%i = %d\n",i,bil[i]);

}

getch();

return 0;

}

Gambar 10.2 hasil eksekusi program 10.2

Page 55: Makalah Program Komputer c++

41

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();

}

Gambar 10.3 hasil eksekusi program 10.3

Page 56: Makalah Program Komputer c++

42

Pertemuan 11

STRING

11.1 Pengantar String

String sangat memudahkan tugas pemogram. Dengan menggunakan string,

pemogram dapat menampilkan pesan kesalahan, menampilkan prompt bagi

masukan keyboard ataupun memberikan informasi pada layar dengan mudah.

Seperti halnya tipe data yang lain, string dapat berupa konstanta atau variabel.

Konstanta string sudah biasa anda sertakan pada program. Misalnya pada

pernyataan :

cout << "C++"<<endl;

terdapat konstanta string "C++". Tetapi sejauh ini, variabel string belum

diperkenalkan.

11.2 Konstanta String

Suatu konstanta string ditulis dengan awalan dan akhiran tanda petik

ganda(" "), misalnya: "C++". Konstanta string seperti diatas disimpan dalam

memori secara berurutan. Setiap karakter menempati memory 1 byte. Setelah

karakter yang terakhir terdapat karakter Null (karakter dengan nilai ASCII sama

dengan nol atau disimbolkan dengan "\0", yaitu tanda \ dikuti dengan nol).

Bila suatu string hanya berisi karakter NULL, string disebut sebagai string

kosong.

11.3 Memasukan Data String

Setelah suatu variabel string didefinisikan, Anda bisa mengisikan data ke

variabel tersebut. Pemasukan data dapat ditangani oleh data cin, seperti contoh

program 11.1 :

#include<iostream.h>

#include<conio.h>

void main()

Page 57: Makalah Program Komputer c++

43

{ char teks[13]; //string dengan panjang maksimal 12 karakter

clrscr();

cout<<"Masukan sebuah kata :"<<endl;

cin>> teks;

cout<< "Kata yang tercetak :"<<teks;

}

Gambar 11.1 hasil eksekusi program 11.1

Yang perlu diperhatikan adalah bahwa cin hanya dapat membaca sebuah

kata. Artinya karakter-karakter yang terletak sesudah spasi tidak bisa ditampung

pada teks. Ini disebabkan operator << pada cin hanya bisa membaca masukan

hingga terdapat spasi, tab atau enter.

Untuk menampilkan agar dapat terbaca solusinya adalah menambahkan

fungsi get() pada objek cin (cin.get()) bisa dipakai untuk keperluan ini. Sebagai

contoh seperti program 11.2 :

#include<iostream.h>

#include<conio.h>

void main()

{ char teks[13]; //string dengan panjang maksimal 12 karakter

clrscr(); //hapus layar

cout<<"Masukan sebuah kata :"<<endl;

cin.get(teks, 13);

cout<< "Kata yang tercetak :"<<teks;

}

Gambar 11.2 hasil eksekusi program 11.2

Tampak, bahwa karakter yan terletak sesudah spasi juga ikut disimpan

pada teks. Sekarang kita lihat kalau data yang dimasukan lebih dari 13 karakter

Page 58: Makalah Program Komputer c++

44

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));

11.4 Fungsi untuk string

11.4.1Fungsi getline()

Suatu masalah akan timbul kalau cin.get() digunakan 2 kali seperti contoh

program 11.3i

#include<iostream.h>

#include<conio.h>

void main()

{ char nama[25];

char alamat[35];

clrscr();

cout<<"Masukan Nama :"<<endl;

cin.get(nama, sizeof(nama));

cout<< "Masukan Alamat :"<<endl;

cin.get(alamat,sizeof(alamat));

cout<<"Nama:"<<nama<<endl;

cout<<"Alamat:"<<alamat<<endl;

}

Gambar 11.3 hasil eksekusi program 11.3

Pada contoh di atas cin.get() pertama digunakan untuk membaca nama

yang kedua untuk membaca alamat. Ternyata program tidak memberikan

kesempatan untuk mengisi alamat. Hal ini terjadi karena get() yang pertama tidak

membuang kode newline(\n). Oleh karena get() tidak mengabaikan spasi putih(

spasi, tab , atau newline) maka get() kedua menjadi tidak berfungsi sebagaimana

Page 59: Makalah Program Komputer c++

45

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;

}

Gambar 11.4 hasil eksekusi program 11.4

Tampak bahwa dengan menggunakan getline(), data alamat dapat diisi.

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()

{

Page 60: Makalah Program Komputer c++

46

char teks[]="C++ Oke";

char data [25];

clrscr(); //hapus layar

strcpy(data,teks); // mengcopy isi teks ke data

cout<<"Isi data :"<<data<<endl; }

Gambar 11.5 hasil eksekusi program 11.5

11.1.3 Fungsi toupper dan tolower

Fungsi toupper() berguna untuk memperoleh huruf kapital dari suatu huruf

kecil. Nilai balik dari fungsi ini akan berupa seperti argumennya kalau argumen

tidak berisi huruf kecil.

Adapun fungsi tolower() adalah kebalikan dari toupper(). Fungsi ini memberikan

nilai balik :

v Berupa huruf kecil kalau argumen berisi huruf kapital

v Berupa nilai seperti argumen kalau argumen tidak berupa huruf kecil

Kedua fungsi di atas memberikan nilai balik bertipe int dan memiliki protipe pada

file ctype.h

Contoh program 11.6 :

#include<iostream.h>

#include<conio.h>

#include<ctype.h>

void main()

{ char st[]="saya suka C++";

clrscr(); //hapus layar

for(int i=0; st[i];i++)

st[i]= toupper(st[i]);

cout<<st<<endl; }

Gambar 11.6 hasil eksekusi program 11.6

Page 61: Makalah Program Komputer c++

47

Pada contoh di atas,

st[i]= toupper(st[i]);

menyebabkan setiap huruf kecil pada variabel st akan diganti dengan huruf

kapital.

11.1.4 Fungsi strlen()

Panjang suatu string dapat diketahui dengan mudah menggunakan fungsi

strlen(). Misalnya saja, didefinisikan :

char bunga[15]= "mawar";

int panjang;

Maka pernyataan yang menggunakan strlen :

panjang = strlen(bunga);

akan memberikan panjang string yang tersimpan pada variabel bunga ke panjang.

Contoh program 11.7:

#include<iostream.h>

#include<conio.h>

#include<string.h>

void main()

{ char bunga[15]="mawar";

char kosong[23]="";

clrscr(); //hapus layar

cout<<strlen(bunga)<<endl;

cout<<strlen(kosong)<<endl;

}

Gambar 11.7 hasil eksekusi program 11.7

11.1.5 Fungsi strlwr() dan strupr

Jika isi semua huruf kapital pada suatu string dinginkan untuk diubah

menjadi huruf kapital, hal ini dapat dilakukan melalui fungsi strlwr(). Misalnya,

didefinisikan :

Page 62: Makalah Program Komputer c++

48

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;

}

Gambar 11.8 hasil eksekusi program 11.8

Page 63: Makalah Program Komputer c++

49

Pertemuan 12

POINTER

12.1 Pengertian Pointer

Pada pertemuan kali ini, kita akan membahas powerful feature dari bahasa

pemograman C/C++, yaitu pointer. Pointer (variabel penunjuk) adalah suatu

variabel yang berisi alamat memori dari suatu variabel lain. Pointer merupakan

variabel level rendah yang dapat digunakan untuk menunjuk nilai integer,

character, float, double, atau single, dan bahkan tipe-tipe data lain yang didukung

oleh bahasa C.

Variabel biasa, sifatnya statis dan sudah pasti, sedangkan pada pointer

sifatnya dinamis dan dapat lebih fleksibel. Variabel pointer yang tidak menunjuk

pada nilai apapun berarti memiliki nilai NULL, dan disebut sebagai dangling

pointer karena nilainya tidak diinisialisasi dan tidak dapat diprediksi.

12.2 Alamat pointer

Operator atau alamat. Pada saat pendeklarasian variable, pengguna tidak

diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan

dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time.

Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan

dengan memberikan tanda ampersand (&) didepan variable , yang berarti "address

of". Contoh :

ted = &andy;

Penulisan tersebut berarti akan memberikan variable ted alamat dari

variable andy. Karena variabel andy diberi awalan karakter ampersand (&), maka

yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable.

Misalkan andy diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb :

andy = 25;

Page 64: Makalah Program Komputer c++

50

fred = andy;

ted = &andy;

Maka hasilnya

Gambar 12.1

12.3 Variabel Pointer

Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke

obyek lain. Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari

suatu obyek lain (yaitu obyek yang dikatakan ditunjuk oleh pointer). Sebagai

contoh, px adalah variabel pointer dan x adalah variabel yang ditunjuk oleh px.

Kalau x berada pada alamat memori (alamat awal) 1000, maka px akan berisi

1000.

Sebagaimana diilustrasikan pada gambar di bawah ini

Page 65: Makalah Program Komputer c++

51

px

zzzz 1000

Address

?

1000x

Gambar 12.2 Variabel pointer px menunjuk ke variabel x

Seperti halnya variabel yang lain, variabel pointer juga harus

dideklarasikan terlebih dahulu sebelum digunakan.

Bentuk Umum : tipe_data *nama_pointer;

Contoh : int *nilai;

char *huruf;

Pendeklarasian variabel pointer menggunakan tanda * sebelum nama variabelnya.

12.5 Nilai yang di tunjuk pointer

untuk menampilkan nilai yang ditunjuk oleh suatu variabel pointer, juga

digunakan operator * (tanda asterisk). Jika diinginkan untuk menampilkan alamat

tempat penyimpanan nilai yang ditunjuk oleh suatu variabel pointer, digunakan

operator & (tanda ampersand).

12.6 void pointer

Tipe pointer void merupakan tipe khusus. void pointers dapat menunjuk

pada tipe data apapun, nilai integer value atau float, maupun string atau karakter.

Keterbatasannya adalah tidak dapat menggunakan operator asterisk (*), karena

panjang pointer tidak diketahui, sehingga diperlukan operator type casting atau

assignations untuk mengembalikan nilai void pointer ketipe data sebenarnya.

12.7 Memory pointer

Salah satu konsep yang menyebabkan banyak programer baru tak berujung

frustrasi adalah pointer. Ini didasarkan pada konsep bahwa setiap variabel

Page 66: Makalah Program Komputer c++

52

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';

Page 67: Makalah Program Komputer c++

53

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?

Page 68: Makalah Program Komputer c++

54

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);

}

Page 69: Makalah Program Komputer c++

55

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;

}

Page 70: Makalah Program Komputer c++

56

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 alamatptr1 ptr1 nilai

Gambar 12.5 Pointer yang menunjuk pointer

Untuk membentuk rantai pointer seperti pada gambar di atas,

pendeklarasian yang diperlukan berupa int var_x; int *ptr1; int **ptr2;

Perhatikan pada deklarasi di depan:

var_x adalah variabel bertipe int.

Ptr1 adalah variabel pointer yang menunjuk ke data bertipe int.

Ptr2 adalah variabel pointer yang menunjuk ke pointer int. (itulah sebabnya

deklarasinya berupa int **ptr2; )

Agar ptr1 menunjuk ke variabel var_x, perintah yang diperlukan berupa ptr1 =

&var_x;

Sedangkan supaya ptr2 menunjuk ke ptr1, instruksi yang diperlukan adalah ptr2 =

&ptr1;

Contoh berikut memberikan gambaran cara pengaksesan nilai pada var_x

melalui pointer ptr2 dan ptr1.

Contoh program untuk pointer yang menunjuk pointer

#include <stdio.h>

main()

{ int var_x = 273;

int *ptr1;

int **ptr2; ptr1 = &var_x; ptr2 = &ptr1;

printf(”Nilai var_x = %d\n”, *ptr1);

printf(”Nilai var_x = %d\n”, **ptr2);

}

Page 71: Makalah Program Komputer c++

57

Gambar 12.6

Page 72: Makalah Program Komputer c++

58

Pertemuan 13

STRUKTUR DAN ENUM

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.

Page 73: Makalah Program Komputer c++

59

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).

nama tipe struktur yang terdiri atas sejumlah bitfield

struct info_byte

{ unsigned bit0:1;

Page 74: Makalah Program Komputer c++

60

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;

Page 75: Makalah Program Komputer c++

61

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);

}

Gambar 13.1 hasil eksekusi program 13.1

Pada program di atas, setelah pernyataan : scanf(“%c”, &ascii.karakter);

dan user memasukkan karakter : ‘A’ , berarti nilai ascii.karakter =

‘A’.Maka hal itu memberikan efek elemen byte juga akan bernilai seperti

karakter, sebab byte dan karakter berbagi data pada memori yang sama.

Namun, walaupun adanya sifat demikian, pernyataan : ascii.byte = 'A';,

akan dianggap salah (saat kompilasi), sebab suatu variabel struktur yang

mengandung elemen bitfield memang tidak diijinkan untuk diberi nilai secara

langsung. Pengaksesan nilai dapat dilakukan melalui variabel bitfield, misalnya

: printf("%d", ascii.byte.bit7);

untuk mengambil nilai dari bitfield bit 7. Contoh lain ascii.byte.bit7 = 0;

untuk mengubah bit7 agar bernilai 0.

Kalau di depan sudah dibicarakan bitfield dengan panjang 1 bit,

contoh berikut akan memberikan gambaran tentang bitfield dengan panjang 2

bit.

struct data_gambar

{

unsigned piksel1:2;

unsigned piksel2:2;

unsigned piksel3:2;

unsigned piksel4:2;

Page 76: Makalah Program Komputer c++

62

} 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

dengan 3 (22 – 1).

Untuk memberikan nilai kepada piksel1 misalnya, bisa digunakan

pernyataan sebagai berikut : koord.piksel1 = 3;

yang mengisikan 3 ke dalam bitfield tersebut.

Bitfield biasanya dipakai untuk menghemat memori. Misalnya ada dua

informasi dengan keterangan sebagai berikut :

informasi pertama (info_x) memiliki kemungkinan nilai bilangan bulat

antara 0 sampai dengan 3, dan informasi kedua (info_y) memiliki kemungkinan

nilai bilangan bulat 0 atau 1 saja. Seandainya kedua informasi itu disimpan

dalam memori (secara terpisah) sebagai tipe char, maka akan diperlukan

total memori sebesar 2 byte. Namun jika disajikan dalam bentuk bitfield,

memori yang dibutuhkan cukup 1 byte. Dalam hal ini info_x akan

dinyatakan dalam 2 bit dan info_y dinyatakan dalam 1 bit. Penuangan

deklarasinya adalah sebagai berikut :

struct info

{

unsigned info_x:2;

unsigned info_y:1;

} status;

atau

struct info

{

unsigned info_x:2;

unsigned info_y:1;

unsigned :5;

} status;

Page 77: Makalah Program Komputer c++

63

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

Page 78: Makalah Program Komputer c++

64

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, [email protected] atau

[email protected]. 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 [email protected]

+6255534567 prioritas 2 [email protected]

+6255534567 prioritas 3 +62215678976 (nomor kantor)

+6255534567 prioritas 4 +62856789654 (nomor handphone)

+6255534567 prioritas 5 mail:[email protected]

Dalam bahasa yang lebih manusiawi, jika seseorang berusaha menelepon

ke +6255534567 akan diusahakan untuk menghubungi ke VoIP Rakyat

[email protected], jika gagal maka akan berusaha menghubungi nomor

VoIP di Pulver [email protected], 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 [email protected].

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.

Page 79: Makalah Program Komputer c++

65

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.

Tampilan maupun menu ENUM VoIP Rakyat akan secara berangsur-angsur

berubah dengan akan di adakannya ENUM Indonesia yang menggunakan domain

e164.id. Jika e164.id sudah berjalan dengan baik, maka akan digunakan delegasi

dari ARPA menggunakan domain 2.6.e164.arpa untuk kode negara +62

(Indonesia).

Page 80: Makalah Program Komputer c++

66

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 :

14.2 Tipe Deskripsi

Byte Memiliki nilai integer dari -128 sampai +127 dan menempati 1 byte (

8 bits ) di memori. Short Memiliki nilai integer dari -32768 sampai 32767 dan

menempati 2 bytes ( 16 bits ) di memori Int Memiliki nilai integer dari -

2147483648 sampai 2147483647 dan menempati 4 bytes ( 32 bits ) di memori

Long Memiliki nilai dari -9223372036854775808 sampai 9223372036854775807

dan menempati 8 bytes ( 64 bits ) di memori Bilangan integer biasanya

menggunakan int, dan bukan byte, short maupun long. Bilangan integer juga

mengenal nilai positif dan negatif ( signed number ). Tipe data byte dan short

hanya digunakan pada aplikasi khusus yang memperhatikan penggunaan memori.

Sedangkan long jarang digunakan karena jarang memerlukan bilangan sebesar

kapasitas long.

14.3 Floating Point ( Bilangan Pecahan )

Floating Point digunakan untuk menangani bilangan desimal atau

perhitungan yang lebih detail dibanding integer. Ada dua macam floating point,

yaitu :

1. Tipe deskripsi

2. Tipe data referensi

Page 81: Makalah Program Komputer c++

67

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 .

14.3.1.2 Tipe Data Referensi

Kelebihan pemrograman berorientasi objek adalah dapat mendefinisikan

tipe data baru yang merupakan objek dari class tertentu. Tipe data ini digunakan

untuk mereferensikan objek atau class tertentu, seperti String.

Page 82: Makalah Program Komputer c++

68

BAB IV

PENUTUP

A. Kesimpulan

Dari pembahasan di atas dapat kita ketahui sejarah lahirya

komputer yang semula berukuran panjang setengah bola kaki dan

menghabiskan daya yang sangat besar hingga ditemukanya suatu alat yang

diberinama transistor yang mampu merubah perkembangan komputer hingga

menjadi seperti saat ini.

Untuk membuat suatu program yang bisa dimengerti kita dapat

mengambarkan program tersebut dengan suatu flowchart yang mencakup

seluruh program tersebut. Dan dalam suatu program kita bisa memberikan

komentar untuk memperjelas suatu program.

Dari pembahasan diatas kita dapat mengetahui bagian-bagian yang

terdapat dalam suatu program C/C++ serta pengertian tentang definisi sebuah

program seperi fungsi, aray, string, pointer, struktur, enum, tipe, pemberian

komentar, include dan lain sebagainya, serta cara untuk memasukkan suatu

untuk dilakukan suatu proses perhitungan dan menampilkanya pada layar

komputer.

Page 83: Makalah Program Komputer c++

69

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

Page 84: Makalah Program Komputer c++

9

Pertemuan 2

ALGORITMA DAN DIAGRAM ALIR

Algoritma adalah urutan langkah-langkah logis penyeselaian masalah yang

disusun secara sistematis dan logis. Kata logis merupakan kata kunci dalam

algoritma. Langkah-langkah dalam algoritma harus dapat ditentukan bernilai

benar atau salah.

2.1 Algoritma

Algoritma adalah jantung ilmu komputer. Banyak cabang ilmu komputer

yang diacu dalam terminologi algoritma. Namun algoritma juga digunakan dalam

kehidupan sehari-hari, contohnya resep makanan. Di dalam resep makanan

terdapat langkah-langkah yang merupakan algoritma. Selain itu masih banyak

contoh algoritma yang lain.

Untuk melaksanakan suatu algoritma diperlukan suatu bahasa

pemrograman, contoh bahasa pemrograman adalah : Pascal, C++, Basic, dll.

Notasi algoritma dapat diterjemahkan kedalam bahasa pemrograman apapun,

dengan kata lain notasi algoritma bersifat independen.

2.2 Diagram Alir (Flowchart)

Gambar 2.1

Page 85: Makalah Program Komputer c++

10

Gambar 2.2 Gambar 2.3

Suatu flowchart adalah suatu representasi secara diagram yang

mengilustrasikan urutan dari operasi yang dilakukan untuk mendapatkan suatu

hasil. Dengan kata lain, flowchart membantu kita untuk mengerti dan melihat

bentuk algoritma dengan menampilkan algoritma dalam simbol-simbol gambar.

Dalam menggambar flowchart, digunakan simbol tertentu seperti gambar 2.1.

Contoh berikut bisa digunakan untuk lebih mengerti perbedaan kegunaan simbol-

simbol tersebut. Misal kita ingin mencari jumlah dari 2 buah bilangan, maka

flowchart-nya adalah seperti gambar 2.2. Contoh lain, misalkan kita ingin

mengetahui apakah sebuah bilangan ganjil atau genap. Untuk itu kita harus

membuat flowchart seperti ini 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 :

Page 86: Makalah Program Komputer c++

11

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

Page 87: Makalah Program Komputer c++

12

Pertemuan 3

PEGENALAN PROGRAM C++

3.1 Tentang C++

C++ diciptakan untuk mendukung pemrograman berorientasi pada objek

(Object Oriented Pragramming/OOP) yang tidak dimiliki C. sementara C

merupakan bahasa pemrograman terbaik dilingkungannya, bahasa ini tidak

memiliki kemampuan OOP. Reputasi C tidak diragukan lagi dalam menghasilkan

program .EXE berukuran kecil, eksekusi yang cepat, antarmuka (interfacing) yang

sederhana dengan bahasa lain dan fleksibilitas pemrograman.

Apa yang membuat C tampak sukar dipelajari mungkin karena tiadanya

pemeriksaan tipe. Sebagai contoh, dapat mencampur bilangan bulat dengan string

untuk menghasilkan karakter. Namun, justru dsitu letak fleksibilitas C, dapat

mengolah data C sebebas mengolah data dalam bahasa assembly.

3.2 Borland C++

Dibandingkan compiler C++ yang lain, Borland C++ memiliki keunggulan

terutama dalam hal kecepatan dan efisiensi kompilasi. Disamping itu, Borland

C++ mendukung beberapa system operasi yaitu DOS, Windows 16bit (Window

3.0) dan windows 32 bit (Windows NT). Meskipun demikian compiler Borland

C++ juga memiliki kelemahan bila dibandingkan compiler C++ yang lain,

misalnya : pemrograman dengan Borland C++ terutama yang menyangkut

tampilan jauh lebih sulit daripada pemrograman dengan Microsoft Visual C++.

3.3 Main

Main ( ) adalah fungsi utama (main) yang harus ada dalam setiap program

C++ kita. Di sini yang digunakan adalah dengan main tanpa nilai kembalian dan

tanpa paramater. Contoh program 3.1

#include <iostream.h>

void main ()

{cout << "hallo subagyo\n";}

Page 88: Makalah Program Komputer c++

13

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();}

Gambar 3.2 hasil eksekusi program 3.2

Page 89: Makalah Program Komputer c++

14

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();}

Gamabar 3.3 hasil eksekusi program 3.3

Bahkan penulisan seperti berikut, dengan menghilangkan sejumlah spasi

tetap diperkenankan: program 3.4

#include <stdio.h>

main ( ) { printf("Selamat datang\n");

printf("di program C++\n"); }

Gambar 3.4 hasil eksekusi program 3.4

Pemrogram tinggal memilih bentuk yang disukai. Sebagai pedoman,

penulisan atau pemilihan bentuk hendaknya memberikan kemudahan bagi yang

ingin membaca program, terutama untuk program yang berukuran besar.

Jika dilihat pada program 3.4 penulisan yang sangat mampat dapat menyebabkan

program sulit dipahami.

Page 90: Makalah Program Komputer c++

15

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}

Gambar 3.5 penulisan komentar tidak mempengaruhi hasil eksekusi

3.7 Include

#include merupakan salah satu jenis pengarah praprosesor yang digunakan

untuk memberitahu kompiler agar dalam proses linking membaca file yang

dinamakan file judul (header file), yaitu file yang diantaranya berisi deklarasi

fungsi dan definisi konstanta.

Bahasa C menyediakan beberapa file judul yang ditandai dengan ekstensi

.h. Misal pada Program di atas, #include <iostream.h> menyatakan pada kompiler

agar membca file bernama iostream.h saat melakukan kompilasi. Bentuk umum

#include : #include <namafile> atau #include “namafile”

Bentuk pertama (#include <namafile>) mengisyaratkan bahwa pencarian

file dilakukan pada direktori khusus (direktori file include), yang merupakan

default direktori file-file judul yang disediakan oleh bahasa pemrograman.

Bentuk kedua (#include “namafile”) menyatakan bahwa pencerian file

dilakukan pertama kali pada direktori aktif tempat program sumber, dan

seandainya tidak ditemukan pencarian akan dilanjutkan pada direktori lainnya

sesuai dengan perintah pada sistem operasi (yaitu PATH).

Page 91: Makalah Program Komputer c++

16

Pertemuan 4

ELEMEN DASAR C++

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 "

Page 92: Makalah Program Komputer c++

17

Konstanta karakter Karakter

\? Karakter ?

Contoh program 4.1:

#include <iostream.h>

main()

{const float phi = 3.14;

cout << " Nilai phi = " << phi;}

Gambar 4.1 program dengan konstanta

Jika terjadi pengubahan nilai dari konstanta phi, maka akan terjadi error.

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

Page 93: Makalah Program Komputer c++

18

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; }

Gambar 4.2 program dengan pendeklarasian variable

Page 94: Makalah Program Komputer c++

19

Pertemuan 5

OPERATOR DAN UNGKAPAN

5.1 Pengantar Operator dan Ungkapan (Ekspresi)

Operator merupakan simbol yang biasa dilibatkan dalam program untuk

melakukan sesuatu operasi atau manipulasi misalnya untuk:

1. Menjumlahkan duabuah nilai

2. Memberikan nilai ke suatu variable

3. Membandingkan kesamaan dua buah nilai

Dalam C ekspresi dapat berupa :

- pengenal

- konstanta

- atau diantara kombinasi elemen diatas dengan operator

Contoh Ungkapan:

a = b + c – 2

Pada ungkapan ini, a, b dan c merupakan operand, simbol =, + dan – merupakan

operator. Dalam hal ini variabel a diisi dengan hasil penjumlahan b dan c

dikurangi 1.

Selanjutnya nilai a ini mernyatakan nilai ungkapan.

5.2 Operator aritmatika

Bahasa C++ menyediakan lima operator aritmatika, yaitu:

Lima Operator Aritmatika

Operator Keterangan Contoh

* Perkalian 2*4

/ Pembagian 8/2

% Sisa Pembagian atau Modulus 9%2

+ Penjumlahan 5+6

- Pengurangan 6-5

Page 95: Makalah Program Komputer c++

20

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();

}

Gambar 5.1 hasil program dengan operator aritmatika

5.3 Operator Bitwise

Operator Bitwise adalah manipulasi data dalam bentuk bit. Borland C++

menyediakan enam buah operator bitwise.

Contoh Program 5.2:

#include <stdio.h>

main()

{

unsigned x;

void displayBits(unsigned);

printf( "Ketik bilangan bulat tak bertanda : "); scanf( "%u", &x);

displayBits(x);

return 0;

}

void displayBits (unsigned value)

{

unsigned c, displayMask = 1 << 15;

printf ( "%7u = ", value );

for ( c = 1 ; c <= 16 ; c++ )

{

putchar ( value & displayMask ? '1' : '0' ) ;

Page 96: Makalah Program Komputer c++

21

if ( c % 8 == 0 )

putchar ( ' ' );

}

putchar ( '\n' );

}

Gambar 5.2 hasil program dengan operator bitwise

5.4 Operator penugasan

Operator penugasan (Assigment operator)dalam bahasa C++ berupa tanda

sama dengan (“=”). Contoh:

Nilai = 80;

A = x * Y;

Artinya : variable”nilai” diisi dengan 80 dan variable”A” diisi dengan hasil

perkalian antara x dan y, contoh:

Contoh program 5.3:

#include <iostream.h>

#include <conio.h>

void main()

{

int nilai;

nilai = 70 ;//variable nilai diisi 70

cout << " variable nilai = " << nilai;

getch();

}

Gambar 5.3 hasil program dengan operator penugasan

5.5 Operator Relasi

Operator relasi digunakan untuk membandingkan antara dua buah nilai

atau variable. Operator relasi dalam bahasa C++:

Page 97: Makalah Program Komputer c++

22

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

5.6 Operator Logika

Operator logika biasa digunakan untuk menghubungkan dua buah

ungkapan kondisi menjadi sebuah ungkapan kondisi operator oprator ini ada tiga

diantaranya:

? && :Logika AND(DAN)

? || : Logika OR (ATAU)

? !: Logika NOT (TIDAK / BUKAN)

bentuk pemakaian || atau && ungkapan1 dan ungkapan2 ditulis di dalam tanda

kurung.

Sebagai contoh (a = = c) && (b = = d) atau a = = c && b= = d

5.7 Operator Unary

Operator unary merupakan operator yang hanya membutuhkan satu

operand saja. Dalam bahasa c++ terdapat beberapa operator unary, yaitu:

Operator Unary

Operator Arti/Maksud Letak Contoh Equivalent

- Unary minus Sebelum operator A+-B*C A+(-B)*C

++ Peningkatan dengan penambahan Sebelum dan A++ A=A=1

Page 98: Makalah Program Komputer c++

23

Operator Arti/Maksud Letak Contoh Equivalent

nilai 1 sesudah

--Pengurangan dengan

pengurangan nilai 1

Sebelum dan

sesudahA-- A=A-1

Sizeof Ukuran dari operand dalam byte Sebelum Sizeof(I) -

! Unary NOT Sebelum !A -

~ Bitwise NOT Sebelum ~A -

&Menghasilkan alamat memory

operandSebelum &A -

* 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 ( );

}

Gambar 5.4 hasil program dengan operator unary

Page 99: Makalah Program Komputer c++

24

Pertemuan 6

OPERASI DASAR MASUKAN DAN KELUARAN

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 ”;}

Gambar 6.1 hasil eksekusi program 6.1

6.2 Cin

Obyek ini bermanfaat untuk membaca data dari standard input (keyboard).

Dengan meletakan variable bernama var :

Contoh Program 6.2 :

#include <iostream.h>

#include <iomanip.h>

void main( )

{int x;

float y;

cout << " Masukkan sebuah nilai bulat : ";

Page 100: Makalah Program Komputer c++

25

cin >> x;

cout << " Masukkan sebuah nilai desimal : ";

cin >> y;

cout << " Bilangan bulat " << x << endl;

cout << " Bilangan desimal " << y << endl;

}

Gambar 6.2 hasil eksekusi program 6.2

6.3 Manipulator

Manipulator umumnya digunakan untuk mengatur tampilan data missal

untuk mengatur nilai dengan lebar tampilan 10 karakter ada beberapa jumlah

manipulator pada C++ diantaranya:

Manipulator endl

Digunnakan untuk menyisipkan karakter newline. Manipulator ini identik dengan

newline

Contoh program 6.3 :

#include <iostream.h>

void main( )

{

int nilai1 = 100 , nilai2 = 90;

cout << " nilai1 = " << nilai1 << endl;

cout << " nilai2 = " << nilai2 << endl;

}

Gambar 6.3 hasil eksekusi program 6.3

Manipulator setw()

Page 101: Makalah Program Komputer c++

26

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;

}

Gambar 6.4 hasil eksekusi program 6.4

Page 102: Makalah Program Komputer c++

27

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";

}

Gambar 7.1 hasil program dengan else dan if

Page 103: Makalah Program Komputer c++

28

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";}

Page 104: Makalah Program Komputer c++

29

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";}}

Page 105: Makalah Program Komputer c++

30

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:

Gambar 7.4 hasil program switch jika tanpa break

Ini akan terjadi jika kita memasukan angka 1,2 dan 3 (tiga) dan seterusnya.

Ini terjadi karena ketika switch selesai mengeskusi case 1, misalnya, tanpa break,

maka switch akan terus mengeksekusi statement yang berada di bawahnya sampai

selesai. Makanya, break berfungsi untuk keluar dari switch begitu statement pada

satu case selesai di eksekusi (tanpa melanjutkan ke statement berikutnya / yang

berada di bawahnya).

Page 106: Makalah Program Komputer c++

31

Pertemuan 9

FUNGSI

Sebuah fungsi berisi sejumlah pernyataan yang dikemas dalam sebuah

nama. Nama ini selanjutnya dapat dipanggil dipanggil beberapa kali dibeberapa

tempat dalam program. Tujuan pembuatan fungsi adalah :

Memudahkan dalam mengembangkan program. Hal ini merupakan kunci

dalam pembuatan program yang terstruktur. Menghemat ukuran program.

Manfaat ini terasakan kalau ada beberapa deretan instruksi yang sama digunakan

pada beberapa tempatdi dalam program.

Umumnya fungsi menerima masukan (disebut argumen atau parameter).

Masukan ini selanjutnya diproses oleh fungsi. Hasil akhir berupa sebuah nilai

yang disebut nilai balik (return value).

9.1 Prototipe Fungsi

Sebuah fungsi tidak dapat dipanggil kecuali sudah dideklarasikan. Untuk

melihat hal ini perhatikan contoh berikut :

Program 9.1

void main ( )

{printf (“Hai \n”);}

Jika program ini dijalankan, C++ akan memberikan kesalahan yang menyatakan

bahwa printf( ) tidak memiliki prototype. Hal seperti ini masih bisa lolos pada

bahasa C. Tetapi tidak demikian halnya pada C++. Kesalahan seperti diatas tidak

akan terjadi seandainya program ditulis menjadi seperti berikut.

Program 9.2 :

#include <stdio.h>

void main() {printf (“ Hai \n “);}

Page 107: Makalah Program Komputer c++

32

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.

9.2 Definisi Fungsi

Setiap fungsi yang dipanggil didalam program harus didefinisikan.

Letaknya dapat dimana saja. Khusus untuk fungsi yang disediakan sistem,

definisinya sebenarnya ada dalam pustaka, yang akan digabungkan dengan

program sewaktu proses linking. Contoh definisi fungsi kuadrat( ):

long kuadrat (long l)

{

return (l * l);

Page 108: Makalah Program Komputer c++

33

}

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);

}

Gambar 9.2 hasil eksekusi program 9.3

9.3 Lingkup Variabel

Pemahaman terhadap lingkup variable didalam penulisan fungsi sangatlah

penting, agar tidak salah dalam menggunakan suatu variable. Lingkup variable

menentukan keberadaan suatu variable tertentu didalam fungsi. Ada variable yang

Page 109: Makalah Program Komputer c++

34

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).

9.3.1. Varabel Otomatis (lokal).

Variabel yang didefinisikan didalam suatu fungsi berlaku sebagai variabel

lokal bagi fungsi. Artinya, variable tesebut hanya dikenal didalam fungsi tempat

variable didefinisikan.

Contoh untuk memperlihatkan efek variabel otomatis (lokal)

Program 9.4:

#include<iostream.h>

#include<conio.h>

void alpha(); //prototipe fungsi

void main()

{int x = 22; //variable lokal pada main()

double y = 2.22; //begitu juga pada variable ini

clrscr();

cout<<”Pada main(): x =”<<x<<”y =”<< y <<endl;

alpha(); //panggil variable alpha

cout<<”Pada main(): x =”<<x<<”y =”<< y <<endl;

}

void alpha()//definisi fungsi alpha()

{int x = 20; //variable lokal pada main()

double y=3.14; //begitu juga pada variable ini

cout<<”Pada main(): x =”<<x<<”y =”<< y <<endl;

}

Gambar 9.3 hasil eksekusi program 9.4

Page 110: Makalah Program Komputer c++

35

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

}

Page 111: Makalah Program Komputer c++

36

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;

}

Gambar 9.5 hasil eksekusi program 9.6

Page 112: Makalah Program Komputer c++

37

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.

Page 113: Makalah Program Komputer c++

38

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;

}

Gambar 9.6 hasil eksekusi program 9.7

Page 114: Makalah Program Komputer c++

39

Pertemuan 10

ARRAY (VARIABEL BERINDEKS)

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).

10.1 Array 1 Dimensi

Tanda [] disebut juga “elemen yang ke...

Misalnya kondisi[0] berarti elemen yang ke nol.

Array yang sudah dipesan, misalnya 10 tempat tidak harus diisi semuanya,

bisa saja hanya diisi 5 elemen saja, baik secara berurutan maupun tidak. Namun

pada kondisi yang tidak sepenuhnya terisi tersebut, tempat pemesanan di memori

tetap sebanyak 10 tempat, jadi tempat yang tidak terisi tetap akan terpesan dan

dibiarkan kosong.

Contoh program 10.1

#include <stdio.h>

#include <conio.h>

void main()

{ int nilai[10], x;

clrscr();

printf("Memasukkan nilai :\n");

for(x=0;x<5;x++)

{

printf("Nilai Angka : "); scanf("%d",&nilai[x]);

}

printf("\n");

printf("Membaca nilai :\n");

for(x=0;x<5;x++)

Page 115: Makalah Program Komputer c++

40

{

printf("Nilai Angka : %d",nilai[x]);

}

getch();

}

Ganbar 10.1 hasil eksekusi program 10.1

Terlihat bahwa alamat array berurutan dengan jarak antar alamat adalah 4 bytes

(integer berukuran 4 bytes)

Contoh program 10.2 (inisialisasi dengan 0):

#include <stdio.h>

#include <conio.h>

int main(){

int bil[7] = {0}; //inisialisasi 0

for(int i=0;i<7;i++){

printf("Elemen ke-%i = %d\n",i,bil[i]);

}

getch();

return 0;

}

Gambar 10.2 hasil eksekusi program 10.2

Page 116: Makalah Program Komputer c++

41

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();

}

Gambar 10.3 hasil eksekusi program 10.3

Page 117: Makalah Program Komputer c++

42

Pertemuan 11

STRING

11.1 Pengantar String

String sangat memudahkan tugas pemogram. Dengan menggunakan string,

pemogram dapat menampilkan pesan kesalahan, menampilkan prompt bagi

masukan keyboard ataupun memberikan informasi pada layar dengan mudah.

Seperti halnya tipe data yang lain, string dapat berupa konstanta atau variabel.

Konstanta string sudah biasa anda sertakan pada program. Misalnya pada

pernyataan :

cout << "C++"<<endl;

terdapat konstanta string "C++". Tetapi sejauh ini, variabel string belum

diperkenalkan.

11.2 Konstanta String

Suatu konstanta string ditulis dengan awalan dan akhiran tanda petik

ganda(" "), misalnya: "C++". Konstanta string seperti diatas disimpan dalam

memori secara berurutan. Setiap karakter menempati memory 1 byte. Setelah

karakter yang terakhir terdapat karakter Null (karakter dengan nilai ASCII sama

dengan nol atau disimbolkan dengan "\0", yaitu tanda \ dikuti dengan nol).

Bila suatu string hanya berisi karakter NULL, string disebut sebagai string

kosong.

11.3 Memasukan Data String

Setelah suatu variabel string didefinisikan, Anda bisa mengisikan data ke

variabel tersebut. Pemasukan data dapat ditangani oleh data cin, seperti contoh

program 11.1 :

#include<iostream.h>

#include<conio.h>

void main()

Page 118: Makalah Program Komputer c++

43

{ char teks[13]; //string dengan panjang maksimal 12 karakter

clrscr();

cout<<"Masukan sebuah kata :"<<endl;

cin>> teks;

cout<< "Kata yang tercetak :"<<teks;

}

Gambar 11.1 hasil eksekusi program 11.1

Yang perlu diperhatikan adalah bahwa cin hanya dapat membaca sebuah

kata. Artinya karakter-karakter yang terletak sesudah spasi tidak bisa ditampung

pada teks. Ini disebabkan operator << pada cin hanya bisa membaca masukan

hingga terdapat spasi, tab atau enter.

Untuk menampilkan agar dapat terbaca solusinya adalah menambahkan

fungsi get() pada objek cin (cin.get()) bisa dipakai untuk keperluan ini. Sebagai

contoh seperti program 11.2 :

#include<iostream.h>

#include<conio.h>

void main()

{ char teks[13]; //string dengan panjang maksimal 12 karakter

clrscr(); //hapus layar

cout<<"Masukan sebuah kata :"<<endl;

cin.get(teks, 13);

cout<< "Kata yang tercetak :"<<teks;

}

Gambar 11.2 hasil eksekusi program 11.2

Tampak, bahwa karakter yan terletak sesudah spasi juga ikut disimpan

pada teks. Sekarang kita lihat kalau data yang dimasukan lebih dari 13 karakter

Page 119: Makalah Program Komputer c++

44

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));

11.4 Fungsi untuk string

11.4.1Fungsi getline()

Suatu masalah akan timbul kalau cin.get() digunakan 2 kali seperti contoh

program 11.3i

#include<iostream.h>

#include<conio.h>

void main()

{ char nama[25];

char alamat[35];

clrscr();

cout<<"Masukan Nama :"<<endl;

cin.get(nama, sizeof(nama));

cout<< "Masukan Alamat :"<<endl;

cin.get(alamat,sizeof(alamat));

cout<<"Nama:"<<nama<<endl;

cout<<"Alamat:"<<alamat<<endl;

}

Gambar 11.3 hasil eksekusi program 11.3

Pada contoh di atas cin.get() pertama digunakan untuk membaca nama

yang kedua untuk membaca alamat. Ternyata program tidak memberikan

kesempatan untuk mengisi alamat. Hal ini terjadi karena get() yang pertama tidak

membuang kode newline(\n). Oleh karena get() tidak mengabaikan spasi putih(

spasi, tab , atau newline) maka get() kedua menjadi tidak berfungsi sebagaimana

Page 120: Makalah Program Komputer c++

45

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;

}

Gambar 11.4 hasil eksekusi program 11.4

Tampak bahwa dengan menggunakan getline(), data alamat dapat diisi.

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()

{

Page 121: Makalah Program Komputer c++

46

char teks[]="C++ Oke";

char data [25];

clrscr(); //hapus layar

strcpy(data,teks); // mengcopy isi teks ke data

cout<<"Isi data :"<<data<<endl; }

Gambar 11.5 hasil eksekusi program 11.5

11.1.3 Fungsi toupper dan tolower

Fungsi toupper() berguna untuk memperoleh huruf kapital dari suatu huruf

kecil. Nilai balik dari fungsi ini akan berupa seperti argumennya kalau argumen

tidak berisi huruf kecil.

Adapun fungsi tolower() adalah kebalikan dari toupper(). Fungsi ini memberikan

nilai balik :

v Berupa huruf kecil kalau argumen berisi huruf kapital

v Berupa nilai seperti argumen kalau argumen tidak berupa huruf kecil

Kedua fungsi di atas memberikan nilai balik bertipe int dan memiliki protipe pada

file ctype.h

Contoh program 11.6 :

#include<iostream.h>

#include<conio.h>

#include<ctype.h>

void main()

{ char st[]="saya suka C++";

clrscr(); //hapus layar

for(int i=0; st[i];i++)

st[i]= toupper(st[i]);

cout<<st<<endl; }

Gambar 11.6 hasil eksekusi program 11.6

Page 122: Makalah Program Komputer c++

47

Pada contoh di atas,

st[i]= toupper(st[i]);

menyebabkan setiap huruf kecil pada variabel st akan diganti dengan huruf

kapital.

11.1.4 Fungsi strlen()

Panjang suatu string dapat diketahui dengan mudah menggunakan fungsi

strlen(). Misalnya saja, didefinisikan :

char bunga[15]= "mawar";

int panjang;

Maka pernyataan yang menggunakan strlen :

panjang = strlen(bunga);

akan memberikan panjang string yang tersimpan pada variabel bunga ke panjang.

Contoh program 11.7:

#include<iostream.h>

#include<conio.h>

#include<string.h>

void main()

{ char bunga[15]="mawar";

char kosong[23]="";

clrscr(); //hapus layar

cout<<strlen(bunga)<<endl;

cout<<strlen(kosong)<<endl;

}

Gambar 11.7 hasil eksekusi program 11.7

11.1.5 Fungsi strlwr() dan strupr

Jika isi semua huruf kapital pada suatu string dinginkan untuk diubah

menjadi huruf kapital, hal ini dapat dilakukan melalui fungsi strlwr(). Misalnya,

didefinisikan :

Page 123: Makalah Program Komputer c++

48

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;

}

Gambar 11.8 hasil eksekusi program 11.8

Page 124: Makalah Program Komputer c++

1

Pertemuan 12

POINTER

12.1 Pengertian Pointer

Pada pertemuan kali ini, kita akan membahas powerful feature dari bahasa

pemograman C/C++, yaitu pointer. Pointer (variabel penunjuk) adalah suatu

variabel yang berisi alamat memori dari suatu variabel lain. Pointer merupakan

variabel level rendah yang dapat digunakan untuk menunjuk nilai integer,

character, float, double, atau single, dan bahkan tipe-tipe data lain yang didukung

oleh bahasa C.

Variabel biasa, sifatnya statis dan sudah pasti, sedangkan pada pointer

sifatnya dinamis dan dapat lebih fleksibel. Variabel pointer yang tidak menunjuk

pada nilai apapun berarti memiliki nilai NULL, dan disebut sebagai dangling

pointer karena nilainya tidak diinisialisasi dan tidak dapat diprediksi.

12.2 Alamat pointer

Operator atau alamat. Pada saat pendeklarasian variable, pengguna tidak

diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan

dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time.

Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan

dengan memberikan tanda ampersand (&) didepan variable , yang berarti "address

of". Contoh :

ted = &andy;

Penulisan tersebut berarti akan memberikan variable ted alamat dari

variable andy. Karena variabel andy diberi awalan karakter ampersand (&), maka

yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable.

Misalkan andy diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb :

andy = 25;

fred = andy;

Page 125: Makalah Program Komputer c++

2

ted = &andy;

Maka hasilnya

Gambar 12.1

12.3 Variabel Pointer

Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke

obyek lain. Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari

suatu obyek lain (yaitu obyek yang dikatakan ditunjuk oleh pointer). Sebagai

contoh, px adalah variabel pointer dan x adalah variabel yang ditunjuk oleh px.

Kalau x berada pada alamat memori (alamat awal) 1000, maka px akan berisi

1000.

Sebagaimana diilustrasikan pada gambar di bawah ini

Page 126: Makalah Program Komputer c++

49

px

zzzz 1000

Address

?

1000x

Gambar 12.2 Variabel pointer px menunjuk ke variabel x

Seperti halnya variabel yang lain, variabel pointer juga harus

dideklarasikan terlebih dahulu sebelum digunakan.

Bentuk Umum : tipe_data *nama_pointer;

Contoh : int *nilai;

char *huruf;

Pendeklarasian variabel pointer menggunakan tanda * sebelum nama variabelnya.

12.5 Nilai yang di tunjuk pointer

untuk menampilkan nilai yang ditunjuk oleh suatu variabel pointer, juga

digunakan operator * (tanda asterisk). Jika diinginkan untuk menampilkan alamat

tempat penyimpanan nilai yang ditunjuk oleh suatu variabel pointer, digunakan

operator & (tanda ampersand).

12.6 void pointer

Tipe pointer void merupakan tipe khusus. void pointers dapat menunjuk

pada tipe data apapun, nilai integer value atau float, maupun string atau karakter.

Keterbatasannya adalah tidak dapat menggunakan operator asterisk (*), karena

panjang pointer tidak diketahui, sehingga diperlukan operator type casting atau

assignations untuk mengembalikan nilai void pointer ketipe data sebenarnya.

12.7 Memory pointer

Salah satu konsep yang menyebabkan banyak programer baru tak berujung

frustrasi adalah pointer. Ini didasarkan pada konsep bahwa setiap variabel

Page 127: Makalah Program Komputer c++

50

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';

Page 128: Makalah Program Komputer c++

51

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?

Page 129: Makalah Program Komputer c++

52

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);

}

Page 130: Makalah Program Komputer c++

53

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;

}

Page 131: Makalah Program Komputer c++

54

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 alamatptr1 ptr1 nilai

Gambar 12.5 Pointer yang menunjuk pointer

Untuk membentuk rantai pointer seperti pada gambar di atas,

pendeklarasian yang diperlukan berupa int var_x; int *ptr1; int **ptr2;

Perhatikan pada deklarasi di depan:

var_x adalah variabel bertipe int.

Ptr1 adalah variabel pointer yang menunjuk ke data bertipe int.

Ptr2 adalah variabel pointer yang menunjuk ke pointer int. (itulah sebabnya

deklarasinya berupa int **ptr2; )

Agar ptr1 menunjuk ke variabel var_x, perintah yang diperlukan berupa ptr1 =

&var_x;

Sedangkan supaya ptr2 menunjuk ke ptr1, instruksi yang diperlukan adalah ptr2 =

&ptr1;

Contoh berikut memberikan gambaran cara pengaksesan nilai pada var_x

melalui pointer ptr2 dan ptr1.

Contoh program untuk pointer yang menunjuk pointer

#include <stdio.h>

main()

{ int var_x = 273;

int *ptr1;

int **ptr2; ptr1 = &var_x; ptr2 = &ptr1;

printf(”Nilai var_x = %d\n”, *ptr1);

printf(”Nilai var_x = %d\n”, **ptr2);

}

Page 132: Makalah Program Komputer c++

55

Gambar 12.6

Page 133: Makalah Program Komputer c++

56

Pertemuan 13

STRUKTUR DAN ENUM

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.

Page 134: Makalah Program Komputer c++

57

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).

nama tipe struktur yang terdiri atas sejumlah bitfield

struct info_byte

{ unsigned bit0:1;

Page 135: Makalah Program Komputer c++

58

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;

Page 136: Makalah Program Komputer c++

59

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);

}

Gambar 13.1 hasil eksekusi program 13.1

Pada program di atas, setelah pernyataan : scanf(“%c”, &ascii.karakter);

dan user memasukkan karakter : ‘A’ , berarti nilai ascii.karakter =

‘A’.Maka hal itu memberikan efek elemen byte juga akan bernilai seperti

karakter, sebab byte dan karakter berbagi data pada memori yang sama.

Namun, walaupun adanya sifat demikian, pernyataan : ascii.byte = 'A';,

akan dianggap salah (saat kompilasi), sebab suatu variabel struktur yang

mengandung elemen bitfield memang tidak diijinkan untuk diberi nilai secara

langsung. Pengaksesan nilai dapat dilakukan melalui variabel bitfield, misalnya

: printf("%d", ascii.byte.bit7);

untuk mengambil nilai dari bitfield bit 7. Contoh lain ascii.byte.bit7 = 0;

untuk mengubah bit7 agar bernilai 0.

Kalau di depan sudah dibicarakan bitfield dengan panjang 1 bit,

contoh berikut akan memberikan gambaran tentang bitfield dengan panjang 2

bit.

struct data_gambar

{

unsigned piksel1:2;

unsigned piksel2:2;

unsigned piksel3:2;

unsigned piksel4:2;

Page 137: Makalah Program Komputer c++

60

} 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

dengan 3 (22 – 1).

Untuk memberikan nilai kepada piksel1 misalnya, bisa digunakan

pernyataan sebagai berikut : koord.piksel1 = 3;

yang mengisikan 3 ke dalam bitfield tersebut.

Bitfield biasanya dipakai untuk menghemat memori. Misalnya ada dua

informasi dengan keterangan sebagai berikut :

informasi pertama (info_x) memiliki kemungkinan nilai bilangan bulat

antara 0 sampai dengan 3, dan informasi kedua (info_y) memiliki kemungkinan

nilai bilangan bulat 0 atau 1 saja. Seandainya kedua informasi itu disimpan

dalam memori (secara terpisah) sebagai tipe char, maka akan diperlukan

total memori sebesar 2 byte. Namun jika disajikan dalam bentuk bitfield,

memori yang dibutuhkan cukup 1 byte. Dalam hal ini info_x akan

dinyatakan dalam 2 bit dan info_y dinyatakan dalam 1 bit. Penuangan

deklarasinya adalah sebagai berikut :

struct info

{

unsigned info_x:2;

unsigned info_y:1;

} status;

atau

struct info

{

unsigned info_x:2;

unsigned info_y:1;

unsigned :5;

} status;

Page 138: Makalah Program Komputer c++

61

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

Page 139: Makalah Program Komputer c++

62

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, [email protected] atau

[email protected]. 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 [email protected]

+6255534567 prioritas 2 [email protected]

+6255534567 prioritas 3 +62215678976 (nomor kantor)

+6255534567 prioritas 4 +62856789654 (nomor handphone)

+6255534567 prioritas 5 mail:[email protected]

Dalam bahasa yang lebih manusiawi, jika seseorang berusaha menelepon

ke +6255534567 akan diusahakan untuk menghubungi ke VoIP Rakyat

[email protected], jika gagal maka akan berusaha menghubungi nomor

VoIP di Pulver [email protected], 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 [email protected].

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.

Page 140: Makalah Program Komputer c++

63

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.

Tampilan maupun menu ENUM VoIP Rakyat akan secara berangsur-angsur

berubah dengan akan di adakannya ENUM Indonesia yang menggunakan domain

e164.id. Jika e164.id sudah berjalan dengan baik, maka akan digunakan delegasi

dari ARPA menggunakan domain 2.6.e164.arpa untuk kode negara +62

(Indonesia).

Page 141: Makalah Program Komputer c++

64

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 :

14.2 Tipe Deskripsi

Byte Memiliki nilai integer dari -128 sampai +127 dan menempati 1 byte (

8 bits ) di memori. Short Memiliki nilai integer dari -32768 sampai 32767 dan

menempati 2 bytes ( 16 bits ) di memori Int Memiliki nilai integer dari -

2147483648 sampai 2147483647 dan menempati 4 bytes ( 32 bits ) di memori

Long Memiliki nilai dari -9223372036854775808 sampai 9223372036854775807

dan menempati 8 bytes ( 64 bits ) di memori Bilangan integer biasanya

menggunakan int, dan bukan byte, short maupun long. Bilangan integer juga

mengenal nilai positif dan negatif ( signed number ). Tipe data byte dan short

hanya digunakan pada aplikasi khusus yang memperhatikan penggunaan memori.

Sedangkan long jarang digunakan karena jarang memerlukan bilangan sebesar

kapasitas long.

14.3 Floating Point ( Bilangan Pecahan )

Floating Point digunakan untuk menangani bilangan desimal atau

perhitungan yang lebih detail dibanding integer. Ada dua macam floating point,

yaitu :

1. Tipe deskripsi

2. Tipe data referensi

Page 142: Makalah Program Komputer c++

65

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 .

14.3.1.2 Tipe Data Referensi

Kelebihan pemrograman berorientasi objek adalah dapat mendefinisikan

tipe data baru yang merupakan objek dari class tertentu. Tipe data ini digunakan

untuk mereferensikan objek atau class tertentu, seperti String.

Page 143: Makalah Program Komputer c++

66

PENUTUP

A. Kesimpulan

Dari pembahasan di atas dapat kita ketahui sejarah lahirya

komputer yang semula berukuran panjang setengah bola kaki dan

menghabiskan daya yang sangat besar hingga ditemukanya suatu alat yang

diberinama transistor yang mampu merubah perkembangan komputer hingga

menjadi seperti saat ini.

Untuk membuat suatu program yang bisa dimengerti kita dapat

mengambarkan program tersebut dengan suatu flowchart yang mencakup

seluruh program tersebut. Dan dalam suatu program kita bisa memberikan

komentar untuk memperjelas suatu program.

Dari pembahasan diatas kita dapat mengetahui bagian-bagian yang

terdapat dalam suatu program C/C++ serta pengertian tentang definisi sebuah

program seperi fungsi, aray, string, pointer, struktur, enum, tipe, pemberian

komentar, include dan lain sebagainya, serta cara untuk memasukkan suatu

untuk dilakukan suatu proses perhitungan dan menampilkanya pada layar

komputer.

BAB III

Page 144: Makalah Program Komputer c++

67

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