• Tidak ada hasil yang ditemukan

MAKALAH ALGORITMA DAN PEMROGRAMAN I

N/A
N/A
Protected

Academic year: 2021

Membagikan "MAKALAH ALGORITMA DAN PEMROGRAMAN I"

Copied!
86
0
0

Teks penuh

(1)

MAKALAH

ALGORITMA DAN PEMROGRAMAN I

PENGENALAN BORLAND C++, FUNGSI IF, FUNGSI DAN

STRUKTUR

Diajukan sebagai tugas mata kuliah Algoritma dan Pemrograman I

Disusun Oleh :

Fadhli Umar Ali 17150109 (BAB I) Ari Indrawan 17150071 (BAB I) Surya Sumirat 17150045 (BAB II) Andri Budi Santosa 17150101 (BAB II) Fepi Priyatna 17150069 (BAB III) Irsam Mukharom 17150009 (BAB III)

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK

UNVERSITAS BINA SARANA INFORMATIKA BANDUNG

(2)

ii

KATA PENGANTAR

Puji syukur penyusun haturkan kehadirat lllahi Rabbi atas limpahan kenikmatan, taufik, inayah serta hidayahnya sehingga penyusun dapat menyelesaikan Makalah dengan judul “ALGORITMA DAN PEMROGRAMAN I”, yang didalamnya membahas tentang Pengenalan Borland C++, Fungsi IF, serta Fungsi dan Struktur. Segala puji dan syukur pembuatan makalah ini bisa terlaksana dengan tanpa suatu kendala apapun.

Tujuan penyusun membuat makalah ini adalah keturutsertaan dalam mengerjakan tugas mata kuliah ALGORITMA DAN PEMROGRAMAN I dan sebagai prasyarat untuk nilai Ujian Akhir Semester. Dan agar menambah wawasan tentang ilmu Logika dan Pemrograman.

Pertama penyusun ingin mengucapkan terima kasih kepada pihak – pihak yang secara langsung maupun tidak langsung membantu penyusunan dalam menyelesaikan makalah ini sehingga makalah ini tersusun baik. Penyusun menyadari bahwa makalah ini jauh dari sempurna. Oleh karena itu kritik serta saran membangun sangat penyusun harapkan agar dilain kesempatan dapat menyusun karya ilmiah menjadi lebih baik.

Bandung, 07 Januari 2016

(3)

iii

DAFTAR ISI

KATA PENGANTAR ... ii

DAFTAR ISI ... iii

BAB I Pendahuluan ... 1

1.1 Pengenalan C++... 1

1.2 Tipe Data ... 3

1.2.1 Tipe Data Sederhana ... 4

1.2.2 Tipe Terstruktur ... 6

1.2.3 Tipe Pointer ... 6

1.3 Variabel ... 8

1.4 Konstanta ... 9

1.5 Fungsi Masukan dan Keluaran ... 10

1.5.1 Fungsi Masukan ... 10

1.5.2 Fungsi Keluaran ... 11

1.6 Operator Bahasa ... 13

1.6.1 Operator Aritmatika (Arithmetic Operator) ... 15

1.6.2 Operator Pengerjaan (Assigment Operator) ... 19

1.6.3 Operator Hubungan (Relational Operator) ... 20

1.6.4 Operator Logika (Logical Operator) ... 22

1.6.5 Operator Koma (Coma Operator) ... 23

1.6.6 Operator Bitwise ... 23 1.7 Manipulasi String ... 27 BAB II FUNGSI IF ... 28 2.1 Operator Kondisi ... 28 2.1.1 Operator Relasi... 28 2.1.2 Operator Logika ... 29

(4)

iv

2.2 Pernyataan if Sederhana ... 31

2.3 Pernyataan if Majemuk ... 34

2.4 Pernyataan if bersarang (nested if) ... 39

BAB III FUNGSI DAN STRUKTUR ... 45

3.1 Fungsi ... 45

3.1.1 Fungsi Operasi String (string.h) ... 45

3.1.2 Fungsi Karakter (ctype.h) ... 51

3.1.3 Fungsi Operasi Matematika (math.h dan stdlib.h) ... 52

3.2 Struktur Data ... 64

3.2.1 Mendefinisikan Struktur Data ... 65

3.2.2 Mengakses Struktur ... 66

3.2.3 Struktur Sebagai Fungsi Dari Agumen ... 68

3.2.4 Pointer pada Struktur ... 70

3.2.5 Typedef ... 73

BAB IV PENUTUP ... 75

4.1 Kesimpulan ... 75

4.2 Saran ... 75

DAFTAR PUSTAKA ... 76

(5)

1

BAB I PENDAHULUAN

1.1 PENGENALAN C++

Bahasa C++ diciptakan oleh Bjarne Stroustrup di AT&T Bell Laboratories awal tahun 1980 berdasarkan C ANSI (American National Standard Institute). Pertama kali, prototype C++ muncul sebagai C yang dipercanggih dengan fasilitas kelas. Bahasa tersebut disebut C dengan kelas (C wih Class). Selama tahun 1983-1984, C dengan disempurnakan dengan menambahkan fasilitas pembeban lebihan operator dan fungsi yang kemudian melahirkan apa yang disebut C++. Simbol ++ merupakan operator C untuk operasi penaikan, muncul untuk menunjukan bahwa bahasa baru ini merupakan versi yang lebih canggih dari C.

Borland International merilis compiler borland C++ dan Turbo C++. Kedua compiler ini sama-sama dapat digunakan untuk mengkompilasi kode C++. Bedanya, Borland C++ selain dapat digunakan dibawah lingkungan DOS, dapat juga digunakan untuk pemrograman Windows. Selain Borland International, beberapa perusahaan lain juga merilis compiler C++, seperti Topspeed C++ dan Zortech C++.

C++ diciptakan untuk mendukung pemrograman berorientasi pada objek (Object Oriented Progamming/OOP) yang tidak dimilki C. Sementara C merupakan bahasa pemrograman terbaik dilingkungannya, bahasa ini tdak memiliki kemampuan OOP. Reputasi C tidak diragukan lagi dalam menghasilkan program .EXE berukuran kecil, eksekusi yang cepat, antarmuka (Interfacing) yang sedeharna dengan bahasa lain dan fleksibilitas pemrograman. Apa yang membuat C tampak sukar dipelajari, mungkin karena tidak adanya pemeriksaan tipe. Sebagai contoh, dapat mencampur bilangan bulat dengan string untuk menghasilkan karakter. Namun, justru disitu letak fleksibilitas C, dapat mengolah data C sebebas mengolah data dalam bahasa Assembly.

Sebenarnya program C++ dapat ditulis menggunakan sembarang editor teks,seperti EDIT (milik DOS),Wordstar,SideKick ataupun menggunakan editor bawaan dari compiler. Program C++ biasa ditulis dengan nama CPP ( dari kata C Plus Plus) Agar program ini bias dijalankan (eksekusi).program harus dikompilasi

(6)

2

terlebih dahulu dengan menggunakan compiler C++. Pada saat kompilasian, program sumber (CPP) bersama file-file header (berekstansi .H atau .HPP) akan diterjemahkan oleh compiler C ++ menjadi kode obyek (.OBJ) file ini berupa file dalam format biner (berkode 0 dan 1). Selanjutnya file obyek ini bersama-sama dengan file obyek lain serta file pustaka (.LIB) dikaitkan menjadi satu oleh linker. Hasilnya berupa file yang bersifat executable. File inilah yang biasa dijalankan dari system operasi secara langsung. Proses pengkompilasian file sumber hingga menjadi file eksekutabel dapat diilustrasikan pada gambar 1.1:

Gambar 1.1 Proses pengkompilasian file sumber hingga menjadi file eksekutabel

File Header (.H/.HPP) Program Sumber (.CPP) File Objek (.OBJ) File Objek (.OBJ) File Pustaka (.LIB) Kompiler C++ Linker Program Executable (exe)

(7)

3

1.2 Tipe Data

Tipe data adalah suatu media atau memori pada komputer yang digunakan untuk menampung data. Oleh karena itu sebuah program C++ ditujukan untuk memanipulasi data. Sebuah program yang didesain untuk menghtung gajih karyawan akan menjumlahkan, mengurangi, mengalikan, dan membagi angka-angka, dan beberapa angka dipakai untuk merepresentasikan jam kerja dan gaji. Sama halnya, sebuah program yang didesain untuk mengalgabetisasi sebuah kelas dipakai untuk memanipulasi nama-nama. Dengan kondisi seperti itu tentu tidak akan mengurangi atau mengalikan nama-nama.

Oleh karena itu, C++ mengelompokan data menjadi beberapa tipe data, dan hanya operasi-operasi tertentu yang dapat diterapkan pada tipe data tertentu. Meskipun dengan kondisi seperti ini agak menyulitkan untuk mempelajari C++, akan tetapi C++ telah menyediakan mekanisme pemeriksaan buit-in untuk mengantisipasi kesalahan tipe data.

Tipe data C++ dikelompokan ke dalam tiga kategori dan diilustrasikan pada gambar 1.2.

Gambar 1.2 Tipe Data C++

Tipe

Data

C++

Sederhana Terstrukur Pointer

(8)

4

1.2.1 Tipe Data Sederhana

Tipe data sederhana merupakan tipe data fundamental dalam C++ karena ia menjadi blok pembangun untuk tipe data terstruktur. Ada tiga katagori tipe data sederhana :

1) Integral, yang merupakan tipe data yang berkaitan dengan integer (bilangan bulat), atau angka-angka tanpa titik desimal.

2) Titik-titik mengambang, yang merupakan tipe data yang berkaitan dengan angka-angka desimal.

3) Enumerasi, yang merupakan tipe data yang diciptakan oleh pengguna.

1.) Integral

Untuk data-data angka yang tidak mengandung angka di belakang koma. Tipe data yang termasuk kategori ini adalah:

Tabel 1.1 Kategori Tipe Data Integral

Tipe Data Ukuran (dalam bit)

Int 16 atau 32

Unsigned Int 16 atau 32

Signed Int 16 atau 32

Short Int 16

Unsigned Short Int 16

Signed Short Int 16

Long int 32

Signed Long Int 32

Unsigned Long Int 32

2.) Titik-titik mengambang

Untuk merepresentasikan angka riil, C++ menggunakan notasi ilmiah (saintifik) yang dikenal dengan notasi titik-titik mengambang. Tabel 1.2 menunjukan bagaimana C++ menampilkan beberapa angka riil menggunakan salah satu interpretasi notasi titik-titik mengambang. Pada notasi titik mengambang C++, huruf E adalah singkatan dari eksponen.

(9)

5

Tabel 1.2 Contoh angka riil yang ditampilkan menggunakan notasi titik mengambang C++

Angka Riil Notasi Titik Mengambang C++

75.924 7.592400E1

0.18 1.800000E-1

0.0000453 4.53000E-5

-1.482 -1.482000E0

7800.0 7.800000E3

Ada tiga tipe data di C++ untuk memanipulasi angka desimal : float, double, dan long double. Seperti pada kasus tipe data integral, tipe data float, double, dan long double memiliki himpunan nilai yang berbeda-beda.

Tipe data float dipakai dalam C++ untuk merepresentasikan sembarang nilai riil antara -3.4E + 38 dan 3.4E + 38. Memori yang dialokasikan untuk sebuah nilai bertipe data float adalah 4 byte.

Tipe data double dipakai dalam C++ untuk merepresentasikan sembarang nilai riil antara -1.7E308 dan 1.7E + 308. Memori yang dialokasikan untuk sebuah nilai bertipe data double adalah 8 byte.

Nilai maksimum dan nilai minimum dari tipe data float dan double bergantung pada sistem. Untuk menemukan kedua nilai pada sistem tertentu, anda dapat memeriksa dokumen kompiler anda. Selain perbedaan himpunan nilai, ada satu lagi perbedaan antara tipe data float dan double. Jumlah maksimum dari digit signfikan, yaitu jumlah digit setelah titik desimal, pada nilai float adalah enam atau tujuh dijit. Jumlah maksimum dari dijit signifikan pada nilai bertipe double adalah 15. Jumlah maksimum dijit signifikan disebut dengan kepresisian. Kadangkala nilai bertipe float disebut dengan kepresisian tunggal, sedangkan nilai bertipe double dinamakan dengan kepresisian ganda.

(10)

6

3) Enumerasi

Enumerasi adalah tipe data yang nilainya terbatas pada nilai-nilai yang telah didefinisikan saja dan nilainya bersifat pasti. Misalnya untuk mendefenisikan tipe jenis kelamin, nama hari, warna primer.

1.2.2 Tipe Terstruktur

Tipe terstruktur adalah tipe yang berbentuk record. Record di susun oleh satu atau lebih field. Field menyimpan data tipe dasar tertentu atau tipe data berbentuk yang lain yang sudah di definisikan sebelumnya. Nama record didefinisikan sendiri oleh pemrograman.

1.Array

Array adalah tipe terstruktur yang mempunyai komponen dalam jumlah tetap dan setiap komponen mempunyai tipe data yang sama.Posisi masing-masing komponen dalam larik dinyatakan sebagai nomor index.

2.Record

Dengan tipe data Record,dapat dikumpulkan beberapa item data yang masing-masing mempunyai tipe data yang berbeda-beda.Masing-masing-masing item data disebut field.Record terdiri dari kumpulan field yang dapat mengadung berbeda tipe. 3.Set

Tipe set merupakan suatau himpunan yang berisi nilai (anggota).Set dalam pemrograman sangat mirip dengan himpunan dalam ilmu matematik.

1.2.3 Tipe Pointer

Pointer adalah built-in type di C dan C++, dimana C++ mengambil konsep pointer dari C. Pointer sebenarnya sangat terkait dengan "Abstract C Machine", yaitu model mesin abstrak dimana program C bekerja. Abstract C Machine adalah mesin abstrak dimana mesin tersebut memiliki prosesor untuk menginterpretasikan stream of instruction, dan addressable memory yang terbagi kedalam 3 bagian : automatic memory, static memory dan free memory. Addressable memory adalah memory yang konten-nya dapat diambil jika diketahui alamatnya. Lebih jauh lagi, terdapat asumsi bahwa konten memori dapat di ambil dengan waktu konstan, tidak peduli berapa nilai alamat.Hal ini disebut dengan Random Access Memory.

(11)

7

Menurut Frieyadie. 2007. Edisi Revisi Buku Pemrograman C++ dengan Borland C++ 5.02. Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.

Arti pointer dalam bahasa sehari-hari adalah putunjuk atau bisa di bilang penentu atau pointer secara sederhana bisa diartikan sebagai tipe data yang nilainya mengarah pada nilai yang terdapat pada sebuah area memori (alamat memori).namun dalam Dalam bahasa C, Pointer bisa berfungsi sebagai variabel arrayberarti pointer sebagai penunjuk elemen array ke-0 dalam variabel C.

Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel (data type atau object dari class). Selain menyimpan alamat dari variabel, pointer juga dapat digunakan untuk menyimpan alamat dari sebuah fungsi (function pointer).

Function pointer telah digunakan sejak dikenalkannya bahasa C,dan banyak digunakan untuk sebuah fungsi callback atau untuk meningkatkan readability dari sebuah code.

Anda dapat memperlakukan function pointer seperti pointer biasa (pointer ke datatype/object), anda dapat menyimpan,mengirimkan, merubah address, atau meng-evaluasi address dari pointer ke fungsi ini dengan sifat tambahan anda dapat memanggil fungsi yang ditunjuk oleh function pointer.

Pointer bisa juga berguna untuk :

1. Mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel bisa diubah di dalam fungsi.

2. Untuk membuat variabel DINAMIS (Bukan variabel Statis)

Penggunaan function pointer pada C++ dibatasi, yaitu function pointer tidak boleh menunjuk pada function yang berada dalam sebuah class (class member function) kecuali function tersebut berjenis static.

(12)

8

1.3 Variabel

Variabel adalah tempat dimana kita dapat mengisi atau mengosongkan nilainya dan memanggil kembali apabila dibutuhkan. Setiap variabel akan mempunyai nama (identifier) dan nilai.

Contoh Nama variabel dan nilai.

Username = “joni”

Nama = “Al-Khawarizmi” Harga = 2500

HargaTotal = 34000

username, Nama, harga dan HargaTotal adalah nama dari variabel, sedangkan “joni”, “Al-Khawarizmi”, 2500 dan 34000 adalah nilai dari masing-masing variabel. Nilai-nilai ini akan tersimpan di dalam nama variabel masing-masing sepanjang tidak kita rubah.

Pada sebagian besar bahasa pemrograman, variabel harus dideklarasikan lebih dulu untuk mempermudah compiler bekerja. Apabila variabel tidak dideklarasikan maka setiap kali compiler bertemu dengan variabel baru pada kode program akan terjadi waktu tunda karena compiler harus membuat variabel baru. Hal ini memperlambat proses kerja compiler. Bahkan pada beberapa bahasa pemrograman, compiler akan menolak untuk melanjutkan proses kompilasi.

Pemberian nama variabel harus mengikuti aturan yang ditetapkan oleh bahasa pemrograman yang kita gunakan. Namun secara umum ada aturan yang berlaku untuk hampir semua bahasa pemrograman. Aturan-aturan tersebut yaitu:

 Nama variabel harus diawali dengan huruf.

 Tidak boleh menggunakan spasi pada satu nama variabel. Spasi bisa diganti dengan karakter underscore (_).

 Nama variabel tidak boleh mengandung karakter-karakter khusus, seperti : .,+, -, *, /, <, >, &, (, ) dan lain-lain.

 Nama variabel tidak boleh menggunakan kata-kata kunci d bahasa pemrograman

(13)

9

1.4 Konstanta

Konstanta adalah variabel yang nilai datanya bersifat tetap dan tidak bisa diubah. Jadi konstanta adalah juga variabel bedanya adalah pada nilai yang disimpannya. Jika nilai datanya sepanjang program berjalan tidak berubahubah, maka sebuah varibel lebih baik diperlakukan sebagai konstanta. Pada sebuah kode program, biasanya nilai data dari konstanta diberikan langsung di bagian deklarasi konstanta. Sedangkan untuk variabel biasanya hanya ditentukan nama variabel dan tipe datanya tanpa isian nilai data. Aturan penamaan variabel juga berlaku untuk penamaan konstanta. Demikian juga aturan penetapan tipe data. konstanta dibagi menjadi 4:

 Konstanta integer, berupa integer biasa, integer panjang (long int) dan integer tak bertanda (unsigned integer). Nilainya dapat berupa desimal, oktal atau hexadesimal.

 Konstanta floating point, dapat mengandung nilai pecahan, yang biasa ditulis dalam bentuk pecahan biasa maupun bentuk eksponensial dan selalu dinyatakan dalam double, kecuali jika diakhiri dengan F atau f (menyatakan konstanta float).

 Konstanta string, merupakan deretan karakter yang diawali dan diakhiri dengan tanda petik ganda (“…“). Juga dapat mengandung karakter yang menggunakan tanda \ yang disebut karakter escape (escape sequence).

 Konstanta karakter, selalu diawali dan diakhiri dengan tanda petik tunggal (‘…’). Beberapa konstanta karakter dapat diawali dengan tanda \ (penempatannya setelah tanda petik tunggal).

Penanaman Yang Benar Penanaman Yang Salah

Namasiswa nama siswa (salah karena menggunakan spasi) XY12 12X (salah karena dimulai dengan angka)

harga_total harga.total (salah karena menggunakan karakter .) JenisMotor Jenis Motor (salah karena menggunakan spasi)

(14)

10

Sebagai contoh, jika kita membuat program perhitungan matematik yang menggunakan nilai pi (3.14159) yang mungkin akan muncul dibanyak tempat pada kode program, kita dapat membuat pi sebagai konstanta. Penggunaan konstanta pi akan lebih memudahkan penulisan kode program dibanding harus mengetikkan nilai 3.14159 berulang-ulang.

1.5 Fungsi Masukan dan Keluaran 1.5.1 Fungsi Masukan 1. scanf( )

Fungsi ini digunakan untuk memasukan berbagai jenis data. Bentuk penulisannya adalah: scanf(”penentu format”,&nama variabel);

Simbol & merupakan pointer yang digunakan untuk menunjuk kealamat variabel memori yang dituju. Berikut Tabel Penentu Format scanf( ).

TIPE DATA PENENTU FORMAT

Integer %d

Floating Point:

Bentuk Desimal %e atau %f

Bentuk Berpangkat %e atau %f

Double Precision %lf

Character %c

String %s

Unsigned Integer %u

Long Integer %ld

Long Unsigned Integer %lu

Unsigned Hexadecimal Integer %x

(15)

11

2. gets( )

Fungsi ini digunakan untuk memasukan untuk memasukan data string. Bentuk penulisannya adalah: gets(nama variabel-array);

Perbedaan antara scanf( ) dengan gets( ) adalah:

scanf( ) gets( )

Tidak dapat menerima string yang mengandung spasi atau tab dan dianggap sebagai data terpisah

Dapat menerima string yang mengandung sapasi atau tab dan masing-masing dianggap sebagai satu kesatuan data

3. cin( )

Untuk bisa menggunakan fungsi ini harus mensertakan file header iostream.h

4. getch( )

Fungsi getch( ) (get character and echo) dipakai untuk membaca sebuah karakter dengan sifat karakter yang dimasukan tidak perlu diakhiri dengan menekan tombol ENTER, dan karakter yang dimasukan tidak akan ditampilkan dilayar. File header yang harus disertakan adalah conio.h

5. getche( )

Fungsi ini dipakai untuk membaca sebuah karakter dengan sifat karakter yang dimasukan tidak perlu diakhiri dengan menekan tombol ENTER, dan karakter yang dimasukan akan ditampilkan dilayar. File header yang harus disertakan adalah conio.h

1.5.2 Fungsi Keluaran

1. printf( )

Bentuk penulisannya: printf(”string-kontrol”, argumen 1, argumen 2); String-kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta penentu format. Penentu format dipakai untuk memberi tahu kompiler mengenai

(16)

12

jenis data yang dipakai dan akan ditampilkan. Argumen ini dapat berupa variabel, konstanta dan ungkapan. Berikut tabel penentu format printf( )

TIPE DATA PENENTU FORMAT

Integer %d

Floating Point:

Bentuk Desimal %f

Bentuk Berpangkat %e

Bentuk Desimal dan Pangkat %g

Double Precision %lf

Character %c

String %s

Unsigned Integer %u

Long Integer %ld

Long Unsigned Integer %lu

Unsigned Hexadecimal Integer %x

Unsigned Octa Integer %o

2. puts ( )

Perintah puts ( ) sebenarnya sama dengan printf ( ), yaitu digunakan untuk mencetak string ke layar. Puts ( ) berasal dari kata put string.

Perbedaan antara printf( ) dengan puts( ) adalah:

printf( ) puts( )

Harus menentukan tipe data untuk string, yaitu %s

Tidak perlu penentu tipe data string, karena fungsi ini khusus untuk tipe data string.

Untuk mencetak pindah baris, memerlukan notasi ’\n’

Untuk mencetak pindah baris tidak perlu notasi ’\n’, karena sudah diberikan otomatis

(17)

13

3. putchar( )

Perintah ini digunakan untuk menampilkan sebuah karakter kelayar.Penampilan karakter tidak diakhiri pindah baris.

4. cout( )

Untuk menggunakan perintah ini harus menertakan file header iostream.h

1.6 Operator Bahasa

Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk melakukan suatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai, memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai dan sebagainya.

Tabel 1.3 menunjukkan macam-macam operator yang disediakan oleh bahasa C. Di tabel ini, arah dari proses menunjukkan bagaimana hubungan antara operand-operand di operator akan diproses, mulai dari yang sebelah kiri operatornya kearah kanan atau sebaliknya. Misalnya ungkapan A/B, maka yang akan di bagi oleh B adalah A, berarti operator ‘/’ mempunyai arah proses dari kiri-kanan.

Jenjang menunjukkan operator mana yang akan dikerjakan terlebih dahulu jika dalam suatu ungkapan melibatkan lebih dari satu macam operator. Jenjang dengan nomor 1 adalah jenjang yang tertinggi. Misalnya ungkapan X=B+A, melibatkan dua operator; operator aritmatika ‘+’ mempunyai jenjang yang lebih tinggi dibandingkan dengan operator pengerjaan ‘=’, sehingga ungkapan B+A akan dikerjakan terlebih dahulu dan kemudian hasilnya akan diberikan ke variabel X.

(18)

14

Tabel 1.3 Macam-macam Operator, Arah Proses, dan Jenjangnya

Kategori Operator Arah Proses Jenjang Kurung, indeks, larik, dan elemen ( ) [ ] -> Kiri-kanan 1

Operator unary

! ~ ++ — & * (tipe)

sizeof Kanan-kiri 2 Operator aritmatika perkalian,

pembagian, dan sisa pembagian ? * % Kiri-kanan 3 Operator aritmatika pertambahan,

dan pengurangan + – Kiri-kanan 4 Operator bitwise pergeseran bit << >> Kiri-kanan 5 Operator hubungan < <= > >= Kiri-kanan 6 Operator hubungan dan kesamaan

dan ketidak-samaan == != Kiri-kanan 7 Operato bitwise AND & Kiri-kanan 8 Operator bitwise XOR ^ Kiri-kanan 9 Operator bitwise OR | Kiri-kanan 10 Operator kondisi AND && Kiri-kanan 11 Operator kondisi OR | | Kiri-kanan 12 Operator Ternary ? ; Kanan-kiri 13

Operator pengerjaan aritmatika

= += -= *=

/= %= Kanan-kiri 14

Operator pengerjaan bitwise

&= ^= |=

<<= >>= Kanan-kiri 15 Operator koma , Kiri-kanan 16

(19)

15

Bahasa C menyediakan jenis-jenis operator misalnya operator aritmatika, operator pengerjaan, operator hubungan, operator logika, operator bitwise, dan operator koma.

1.6.1 OPERATOR ARITMATIKA (ARITHMETIC OPERATOR)

Bahasa C menyediakan sejumlah operator aritmatika (arithmetic operator) seperti tampak pada table 1.4.

tabel 1.4 Operator Aritmatika

Jenjang menunjukan operator mana yang akan diprosses terlebih dahulu. Misalnya operator bagi “/” (jenjang 3) akan diproses terlebih dahulu dibandingkan dengan operator penjumlahan “+” (jenjang 4). Untuk jenjang yang sama , operator yang akan diproses terlebih dahulu adalah yang berada diposisi lebih kiri. Misalnya ungkapan sebagai berikut :

A+B/C+D mempunyai arti A + +D

Agar ungkapan yang dimaksud tidak salah, maka dapat digunakan tanda kurung “( )” . Karena operator “( )” adalah operator dengan jenjang tertinggi (jenjang 1) maka penggunaannya sebagai berikut :

(A+B)/(C+D) yang mempunyai arti

Operator modulus ‘%’ hanya digunakan untuk nilai-nilai integer saja dan tidak dapat digunakan untuk operasi nilai pecahan (tipe float,double atau long double).

Operator Jenjang Fungsi

* 3 Perkalian

/ 3 Pembagian

+ 4 Penjumlahan

– 4 Pengurangan

% 3

Pembagian modulo (Sisa pembagian)

(20)

16

Operator ini akan menghasilkansisa dari pembagian (remainder) dari dua buah nilai integer. Contoh: #include <stdio.h> main() { int X, Y, Z; X =9; Y =4; Z = X%Y; printf(“Nilai Z = %d\n”,Z); }

Jika program ini dijalankan, akan didapatkan hasil: Nilai Z = 1

OPERATOR UNARY

Operator Unary merupakan operator Yang hanya menggunakan operand saja (dibandingkan dengan operator-operator lainnya yang menggunakan dua buah operand). Adapun operasi yang tergolong unary yaitu :

Tabel 1.5 Operator Unary

Operator Jenjang Fungsi

– 4 Unary minus

++ 2

Increase dengan penambahan nilai 1

— 2

Decrease dengan pengurangan nilai 1

(tipe) 2 Cast

Sizeof 2 Ukuran operand dalam byte

(21)

17

~ 2 Komplemen 1 (bitwise NOT)

& 2

Menghasilkan alamat memori operand (operator pointer)

* 2

Menghasilkan nilai pengenal dialamatnya (operator pointer)

Operator Unary Minus

Operator Minus “-“ digunakan untuk memberi nilai minus suatu nilai numerik (bukan untuk pengurangan). Misalnya ungkapan A+-B/C akan diartikan sebagai A+.

Operator Unary ++ dan —

Operator Unary ‘++’ dan operator unary ‘- -‘ merupakan operator khusus yang ada pada bahasa C dan jarang dijumpai di Bahasa yang lain. Operator ‘++’ akan menambah nilai numerik 1 ke pengenal yang menggunakannya dan operator ‘- – ‘ akan mengurangi dengan nilai numerik 1 untuk pengenal yang menggunakannya. Misalnya bentuk X=X+1 dapat dituliskan sebagai X++. Sedangkan bentuk X=X-1 dapat dituliskan sebagai X–. Operator ini banyak dijumpai di statement for yang berbentuk sebagai berikut

For(I=1; I<10;I=I+1)

Dapat ditulis dengan operator ‘++’ sebagai berikut For(I=1;I<10;I++)

Operator Unary (tipe)

Operator Unary (tipe) merupakan operator yang memaksa suatu ungkapan yang mempunyai tipe yang diinginkan (disebut juga dengan cast). Tipe yang diinginkan ditulis di dalam tanda kurung didepan ungkapannya. Misalnya variable X dan Y adalah bertipe int dan Z bertipe float, maka untuk membuat hasil pembagian X/Y menjadi tipe float, dapat dituliskan Z = (float) X/Y;

(22)

18 Contoh : #include <stdio.h> main() { int X,Y; float Z; X=7; Y=3; Z=(float)X/Y; printf(“Nilai Z=%f”, Z); }

Jika program ini dijalankan akan didapatkan hasil : Nilai Z=2.333333

Operator Unary sizeof

Operator Unary sizeof digunakan untuk mengetahui ukuran memori dari operandnya dari satuan byte. Operator ini biasa digunakan untuk maksud portabilitas dari suatu mesin komputer dari komputer lainya.

Contoh : #include <stdio.h> main() { char C; int I; long int LI; float F; double D; long double LD;

printf (“ukuran karakter = %d byte \n”, sizeof C); printf (“ukuran integer= %d byte\n”, sizeof I); printf(“ukuran long integer= %d byte \n”,sizeof LI); printf (“ukuran float= %d byte \n”,sizeof F);

(23)

19 printf (“ukuran double= %d byte \n”,sizeof D); printf (“ukuran long double= %d byte \n”,sizeof LD); }

Jika program ini dijalankan maka akan didapatkan hasil: ukuran karakter= 1 byte

ukuran integer= 2 byte ukuran long integer= 4 byte ukuran float= 4 byte

ukuran double= 8 byte

ukuuran long double= 10 byte

1.6.2 OPERATOR PENGERJAAN (ASSIGMENT OPERATOR)

Operator pengerjaan digunakan untuk memindahkan nilai dari suatu ungkapan ke suatu pengenal. Operator pengerjaan yang umum digunakan dalam bahasa pemrograman, termasuk bahasa C adalah operator sama dengan (.

Contoh :

Maka “=” adalah operator pengerjaan yang akan memberikan nilai dari ungkapan kepada variabel .

Tabel 1.6 Operator Pengerjaan Aritmatika

Operator Jenjang Contoh Ekuivalen dengan

14 Mengerjakan ke 14 14 14 14 %= 14

(24)

20 Contoh :

Misalnya variabel I dan J adalah variable-variabel tipe interger dengan nilai awal keduanya adalah 10. Statement-statement berikut ini menggunakan variable-variabel I dan J dan hasil ungkapannya.

Tabel 1.6 Contoh Operator Pengerjaan

Statement Ekuivalen dengan Hasil ungkapan

I += 3; I = I + 3; I = 10+3 = 13

I -= 2; I = I – 2; I = 10-2 = 8

I *= J/2; I = I*(J/2); I=10* (10/2)=50

I /= J-8; I = I/(J-8); I= 10/ (10-8)= 5

1.6.3 OPERATOR HUBUNGAN (RELATIONAL OPERATOR)

Operator hubungan digunakan untuk menunjukkan hubungan antara dua buah operand. Operator ini banyak digunakan untuk penyeleksian kondisi dengan statement if, do-while atau while.

Tabel 1.7 Operator Hubungan

Operator Jenjang Fungsi

< 6 Lebih kecil dari

<= 6 Lebih kecil atau sama dengan

> 6 Lebih besar dari

>= 6 Lebih besar atau sama dengan

== 7 Sama dengan

(25)

21 Contoh 1:

Nilai A adalah 5, nilai B adalah 7, dan nilai C adalah “a”. Beberapa ungkapan hubungan yang menggunakan variable-variebel ini dan hasilnya tampak sebagai berikut.

Tabel 1.8 Contoh Operator Hubungan Ungkapan

Hubungan Hasil Nilai

A == 5 Benar 1 A == B Salah 0 B < 7 Salah 0 A <= 7 Benar 1 (A+B) != 35 Benar 1 C != ‘A’ Benar 1 C <= ‘Z’ Benar 1 Contoh 2: #include <stdio.h> main() { int A=5,B=7;

printf(“%d < %d hasilnya adalah %d \n”, A,B,A<B); printf(“%d<=%d hasilnya adalah %d \n”, A,B,A<=B); printf(“%d>%d hasilnya adalah %d \n”,A,B,A>B); printf(“%d>=%d hasilnya adalah %d \n”,A,B,A>=B); printf(“%d==%d hasilnya adalah %d \n”,A,B,A==B); printf(“%d !=%d hasilnya adalah %d \n”,A,B,A!=B); }

Jika program ini dijalankan akan didapatkan hasil : 5 < 7 hasilnya adalah 1

(26)

22 5 <= 7 hasilnya adalah 1 5 > 7 hasilnya adalah 0 5 >= 7 hasilnya adalah 0 5 == 7 hasilnya adalah 0 5 != 7 hasilnya adalah 1

Operator hubungan banyak digunakan untuk penyeleksian kondisi dengan statement if, do-while

1.6.4 OPERATOR LOGIKA (LOGICAL OPERATOR)

Operator logika digunakan untuk membandingkan hasil dari operator-operator hubungan. Operator Logika membandingkan dua buah nilai logika. Nilai logika adalah nilai benar atau salah.

Tabel 1.9 Operator Logika

Operator Jenjang Fungsi

&& 11 Logika DAN (AND)

12 Logika ATAU (OR)

Misalnya nilai A adalah 5, B adalah 7, dan C adalah ‘ a’, maka ungkapan logika berikut ini akan mempunyai hasil akhir benar.

A<B || B== 7 && C>’z’ 1 1 || 1 && 0 2

(27)

23

Hasil akhir benar dari ungkapan logika tersebut didapat dari langkah-langkah sebagai berikut ini.

1) Jenjang operator hubungan lebih tinggi dibandingkan dengan jenjang operator logika, sehingga ungkapan-ungkapan hubungan dikerjakan terlebih dahulu. Ungkapan hubungan A < B adalah benar, maka akan bernilai 1. Ungkapan hubungan B == 7 adalah benar dan bernilai 1. Ungkapan hubungan C > ‘ z ‘ adalah salah maka bernilai 0.

2) Operator logika ‘ && ‘ mempunyai jenjang yang lebih tinggi dibandingkan dengan operator logika ‘ || ‘ , sehingga ungkapan logika 1 && 0 dikerjakan terlebih dahulu dengan hasil logikanya adalah 0.

3) Ungkapan logika 1 || 0 selanjutnya dikerjakan dengan memberikan hasil akhir bernilai logika benar atau 1.

Contoh :

Nilai A adalah 5, Nilai B adalah 7, dan nilai C adalah ‘ a’. Beberapa logika yang menggunakan variabel-variabel ini dan hasilnya tampak seperti berikut ini.

Operator logika juga banyak digunakan untuk penyeleksian kondisi yang rumit dengan statemen if , do-while atau while.

1.6.5 OPERATOR KOMA (COMMA OPERATOR)

Operator koma digunakan untuk menggabungkan beberapa ungkapan dengan proses yang berurutan dari ungkapan sebelah kiri koma ke ungkapan sebelah kanan koma. Misalnya Statement berikut ini

X= ( B= 5, B*2);

Akan dihasilkan nilai X adalah 10, karena B= 5 akan diproses terlebih dahulu dan kemudian nilai B di kalikan dengan nilai 2. Hasil akhir ini yaitu nilai 10 diberikan ke variabel X. Nilai B terakhir adalah 5, sedangkan operasi B*2 tidak merubah nilai B karena operasi ini hasilnya tidak disimpan di variabel B.

1.6.6 OPERATOR BITWISE

Operator bitwise digunakan untuk memanipulasi bit-bit nilai data yang ada di memori. Operator-operator ini hanya dapat digunakan untuk tipe data char, int dan long int.

(28)

24 Tabel 1.10 Operator Bitwise

OPERATOR BITWISE KOMPLEMEN SATU

Operator Bitwise komplemen satu (One’s Complement Operator) kadang-kadang disebut juga dngan istilah komplementation operator. Operator ini menggunakan symbol ‘~’ dan merupakan operator Unary yang mempunyai arti bitwise NOT, yaitu membalik nilai-nilai bit 1 menjadi nilai- nilai bit 0 atau sebaliknya. Misalnya nilai binary 11011001 maka nilai komplemen satunya adalah nilai binary 00100110.

OPERATOR BITWISE LOGIKA

Tiga buah operator bitwise logika dapat digunakan, yaitu operator bitwise AND (‘&’), Operator bitwise OR(‘ |’) dan operator bitwise XOR (‘^’).

Operator-operator ini menggunakan dua buah operand. Hubungan bit-bit untuk operator-operator ini dan hasilnya tampak pada tabel berikut

Tabel hubungan Bit dan Hasilnya untuk Operasi Bitwise Logika. Tabel 1.11 Operator Bitwise Logika

Bit AND b1 & b2 OR b1 |b2 XOR b1 ^ b2 b1 b2

Operator Jenjang Fungsi

<< 5 Pergeseran bit ke kiri

>> 5 Pegeseran bit ke kanan

& 8 Bitwise AND

^ 9 Bitwise XOR (Exclusive OR)

│ 10 Bitwise OR

(29)

25 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 0 Contoh: #include <stdio.h> main() {

int X=0x2d; /*bernilai 45 dalam decimal */ int Y=0x1b; /* bernilai 27 dalam decimal */

printf(“%x & %x hasilnya adalah %x (dalam heksadesimal)\n”,X,Y,X&Y); printf(“%x | %x hasilnya adalah %x (dalam heksadesimal)\n”, X,Y, X|Y); printf(“%x^ %x hasilnya adalah %x (dalam heksadesimal)\n”,X,Y,X^Y); }

Jika program ini dijalankan akan didapatkan hasil: 2d & 1b hasilnya adalah 9 (dalam heksadesimal) 2d | 1b hasilnya adalah 3f(dalam heksadesimal) 2d | 1b hasilnya adalah 36 (dalam heksadesimal)

Operator bitwise ‘&’ (AND) banyak digunakan untuk mengecek status dari suatu bit, apakah bernilai bit 1 atau bernilai bit 0. Misalnya variabel A adalah tipe char berukuran 1 byte (8 bit) dan bernilai desimal 125 atau bernilai 0111 1101 dalam binari.

Operasi bit ini dapat dituliskan dalam bentuk desimal A & 64. Nilai binary 0100 0000 dalam desimal adalah nilai 64. Hasil dari operasi ini adalah nilai desimal 64. Jika hasil untuk yang diperiksa tidak sama dengan 0 berarti bit tersebut adalah bernilai 1. Untuk bit ke tiga dari ujung untuk variabel A dapat diperiksa dengan operasi A & 32 dan seterusnya. Untuk nilai 1 byte (8 bit) yang diperiksa, penyeleksian operasi bit dengan operator ‘&’ dimulai dengan 128. Nilai 128 ini adalah 2^7. Untuk nilai 2 byte (16 bit), maka penyeleksian operasi bit dengan operator ‘&’ dimulai dengan nilai 2^15=32768. Nilai 128,32768 dan seterusnya ini berarti tergantung dari ukuran tipe datanya dan dapat dirumuskan sebesar 2 pangkat (sizeof(tipe datanya )*8-1).

(30)

26 OPERATOR PERGESERAN BIT

Dua buah operator yang dapat digunakan untuk pergeseran bit adalah shift left (‘<<’) dan shift right(‘>>’). Operator-operator ini membutuhkan dua buah operand. Operand pertama adalah nilai integer yang nilai bit-bitnya akan digeser dan operand kedua menunjukkan banyaknya pergeseran. Misalnya ungkapan 125<<2 akan dihasilkan nilai 500 (0x1f4 dalam heksadesimal) sebagai berikut: Nilai 125 = 0000 0000 0111 1101

Digeser 2 bit ke kiri = 0000 0001 1111 0100

Sedangkan ungkapan 125>>2 akan dihasilkan nilai 31 (0x1f dalam heksadesimal) sebagai berikut:

Nilai 125 = 0000 0000 0111 1101 Digeser 2 bit ke kanan = 0000 0000 0001 1111 2.7.4 OPERATOR BITWISE PENGERJAAN

Bahasa C juga menyediakan operator-operator pengerjaan untuk bitwise. Operator-operator ini adalah ‘&=’, ‘^=’, ‘|=’, ‘<<=’ dan ‘>>=’.

Contoh:

Misalkan A adalah variabel tipe integer dengan nilai decimal 125 (0x7d dalam heksadesimal). Beberapa ungkapan pengerjaan bitwise berikut ini menggunakan variabel A dan hasil akhirnya tampak sebagai berikut ini.

Tabel 1.12 Operator Bitwise Pengerjaan

Ungkapan Ekuivalen dengan Hasil

A &=0x1b A ^=0x1b A |=0x1b A <<=2 A >>=2 A =A & 0x1b A =A ^ 0x1b A =A | 0x1b A =A <<2 A =A >>2 0x19 (25 dalam nilai desimal) 0x66 (102 dalam nilai desimal) 0x7f (127 dalalmm nilai desimal) 0x1f (500 dalam nilai desimal) 0x1f (31 dalam nilai desimal)

(31)

27

1.7 Manipulasi String

String dapat dimanipulasi dengan aturan tertentu. Di mana bahasa C++ telah menyediakan semua ini ke dalam pustakanya. Berikut adalah fungsi-fungsi yang digunakan untuk melakukan manipulasi string :

 Fungsi strcat

Fungsi strcat digunakan untuk menggabungkan dua string menjadi satu.  Fungsi strlen

Fungsi strlen digunakan untuk menghitung panjang karakter pada suatu string. strlen adalah fungsi yang bertipe data integer.

 Fungsi strcpy

Fungsi strcpy digunakan untuk menyalin isi string ke suatu variabel.  Fungsi strupr

Fungsi strupr digunakan untuk mengubah semua karakter huruf yang terdapat pada suatu variabel menjadi huruf besar semua (Uppercase).  Fungsi strlwr

Fungsi strlwr digunakan untuk mengubah semua karakter huruf yang terdapat pada suatu variable menjadi huruf kecil semua (Lowercase).

(32)

28

BAB II FUNGSI IF

Sebuah pernyataan yang dapat dipakai untuk mengambil keputusan berdasarkan suatu kondisi. Pernyataan-pernyataan tersebut memerlukan suatu kondisi, sebagai basis dalam pengambilan keputusan. Kondisi umum yang dipakai berupa keadaan benar dan salah. Oleh karena itu pembahasan pada bab ini akan diawali dengan pengenalan operator yang membentuk kondisi benar dan salah.

2.1 Operator Kondisi

Operator yang digunakan untuk menghasilkan kondisi benar dan salah, bisa berupa operator relasi dan bisa juga berupa operator logika. Berikut ini dibahas masing-masing jenis operator serta tabel prioritas masing-masing operator.

2.1.1. Operator Relasi

Operator relasi biasa dipakai untuk membandingkan dua buah nilai. Hasil pembandingan berupa keadaan benar atau salah. Keseluruhan operator relasi pada C ditunjukkan pada Tabel 2-1.

Tabel 2-1. Operasi relasi

Operator Makna > >= < <= == != Lebih dari

Lebih dari atau sama dengan Kurang dari

Kurang dari atau sama dengan Sama dengan

Tidak sama dengan

Khususnya untuk operator relasi sama dengan (==) harap dibedakan dengan operator (=) yang merupakan operator penugasan (assignment). Contoh:

Pembandingan Hasil 1 > 2 Salah

(33)

29 1 < 2 Benar

A == 1 Benar, jika A bernilai 1 Salah, jika A tidak bernilai 1

'A' < 'B' Benar, karena kode ASCII untuk karakter ‘A’ kurang dari kode ASCII untuk karakter ‘B’ *)

kar == 'Y' Benar, jika kar berisi 'Y' Salah, jika kar tidak berisi 'Y'

*) Dalam daftar ASCII standar, kode untuk karakter ‘A’ = 65 sedangkan karakter

‘B’ = 66, ‘C’ = 67, ‘D’ = 68 dan seterusnya sampai dengan karakter ‘Z’ = 90.

2.1.2. Operator Logika.

Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan operator logika ditunjukkan pada tabel 3-2.

Tabel 3-2. Operator logika

Operator Makna Contoh

&& || ! dan (AND) atau (OR) tidak (NOT) (a > 10) && (a < 100) (n < 0) || (n > 100) !a

Bentuk pemakaian operator && dan || adalah

Baik operand1 maupun operand2 dapat berupa ekspresi relasi ataupun ekspresi logika. Hasil ekspresi bias bernilai benar atau salah. Pada C nilai hasil dari sebuah ekspresi relasi atau ekspresi logika jika dinyatakan dengan angka adalah :  Salah  nilai = 0

 Benar  nilai != 0 (misalnya nilai = 1)

Tabel 2-3 memberikan penjelasan hasil operasi ekspresi logika yang menggunakan operator && maupun || untuk berbagai kemungkinan keadaan operand-nya.

(34)

30

Tabel 2-3. Kemungkinan pada operasi logika && dan ||

Operand1 Operand2 Hasil

|| && Salah Salah Benar Benar Salah Benar Salah Benar 0 1 1 1 0 0 0 1

Tampak bahwa operator atau (||) menghasilkan nilai 1 jika ada operand yang benar. Hasil berupa 0 jika semua operand adalah salah. Adapun operator logika dan (&&) memberikan hasil 1 hanya jika kedua operand adalah benar. Beberapa contoh ekspresi logika di antaranya :

 (kar > 'A') && (kar < 'Z')

Hasil operasi logika && adalah benar hanya jika kar > 'A' dan kar < 'Z' (dalam hal ini yang diperbandingkan adalah kode ASCII dari karakter tsb).

 (pilihan == 'Y') || (pilihan == 'y')

Hasil operasi logika || adalah benar jika pilihan berupa 'Y' atau 'y' Sedangkan bentuk pemakaian operator logika ! adalah :

dengan operand dapat berupa ekspresi logika ataupun ekspresi relasi. Hasil operasi ! bernilai :

 1 jika operand bernilai salah  0 jika operand bernilai benar

Perhatikan contoh potongan program di bawah ini : if (!sudah_benar)

printf(“Masukan Anda salah!\n”);

Pada contoh potongan program di atas, dilakukan pengecekan kondisi terhadap nilai dari variabel sudah_benar. Jika variabel sudah_benar bernilai 0, maka kondisi !sudah_benar akan bernilai benar (true) sehingga instruksi :

printf(“Masukan Anda salah!\n”); !operand

(35)

31

akan diproses. Penjelasan lebih rinci tentang pengecekan kondisi dengan pernyataan if dibahas pada sub bab 3.2.

2.1.3 Prioritas Operator Logika dan Relasi

Tabel berikut ini memberikan penjelasan singkat mengenai prioritas di antara berbagai operator logika dan operator relasi.

Tabel 3-4 Prioritas operator logika dan relasi

Berdasarkan prioritas yang ditunjukkan pada tabel 3-4, maka ekspresi seperti (kar > 'A') && (kar < 'Z')

sama saja kalau ditulis menjadi kar > 'A' && kar < 'Z'

Hanya saja penulisan dengan menggunakan tanda kurung akan lebih memberikan kejelasan.

2.2 Pernyataan if Sederhana

Pernyataan if mempunyai bentuk umum :

Bentuk ini menyatakan :

 jika kondisi yang diseleksi adalah benar (bernilai logika = 1), maka pernyataan yang mengikutinya akan diproses.

 Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang mengikutinya tidak akan diproses.

Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Diagram alir dapat dilihat seperti gambar 3.1

Tertinggi : ! > >= < <= = = != && Terendah: || if (kondisi ) pernyataan;

(36)

32 Gambar 3.1. Diagram alir if

Contoh penggunaan pernyataan if adalah untuk menentukan besarnya potongan harga yang diterima oleh seorang pembeli, berdasarkan kriteria :

 tidak ada potongan harga jika total pembelian kurang dari Rp. 100.000 (dalam hal ini potongan harga diinisialisasi dengan nol).

 bila total pembelian lebih dari atau sama dengan Rp. 100.000, potongan harga yang diterima dirubah menjadi sebesar 5% dari total pembelian.

kondisi

pernyataan

salah

(37)

33

Contoh 1

/* File program : discount.c

Contoh penggunaan if untuk menghitung nilai discount */

#include <stdio.h>

main() {

double total_pembelian, discount = 0; /* discount diinisialisasi dengan nilai 0 */ printf("Total pembelian = Rp “);

scanf("%lf", &total_pembelian); if(total_pembelian >= 100.000)

discount = 0.05 * total_pembelian;

printf("Besarnya discount = Rp %.2lf\n", discount); }

Contoh eksekusi :

Total pembelian = Rp 200000 Besarnya discount = Rp 10000.00

(38)

34

Contoh 2

Outputnya :

Berapa usia anda : 12

Anda tidak diperkenankan menonton Penjelesan :

Tampak bahwa kalau usia yang dimasukkan lebih dari atau sama dengan 17, program tidak menghasilkan apa-apa.

2.3. Pernyataan if Majemuk

Pernyataan if-else memiliki bentuk :

Diagram alir dapat dilihat seperti gambar 3.2.

kondisi pernyataan-1 salah benar pernyataan-2 if (kondisi) pernyataan-1; else pernyataan-2;

(39)

35 Arti dari pernyataan if-else :

 Jika kondisi benar, maka pernyataan-1 dijalankan.

 Sedangkan bila kondisi bernilai salah, maka pernyataaan-2 yang dijalankan. Masing-masing pernyataan-1 dan pernyataan-2 dapat berupa sebuah pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong.

Bentuk Umumnya Dua Kasus :

if (kondisi)

pernyataan1 ;

else

pernyataan2;

Untuk pernyataan if yang diikuti dengan pernyataan majemuk, bentuknya adalah sebagai berikut :

if (kondisi)

{ /* tanda awal pernyataan majemuk*/ pernyataan-1; pernyataan–2; . . . pernyataan-n;

} /* tanda akhir pernyataan majemuk */

Pernyataan-pernyataan yang berada dalam tanda kurung { dan } akan dijalankan hanya bila kondisi if bernilai benar.

Pernyataan1 dilaksanakan jika dan hanya jika kondisi yang diinginkan terpenuhi, jika tidak, lakukan pernyataan2.

(40)

36

namun jika anda mempergunakan pernyataan else tanpa didahului pernyataan if, maka

program akan error.

Jika pernyataan1 atau pernyataan2 hanya terdiri dari satu baris, maka tanda { } tidak diperlukan, namun jika lebih maka diperlukan.

Contoh penggunaan pernyataan if-else adalah untuk menyeleksi nilai suatu bilangan pembagi. Jika nilai bilangan pembagi adalah nol, maka hasil pembagian dengan nilai nol akan mendapatkan hasil tak berhingga. Jika ditemui nilai pembaginya nol, maka proses pembagian tidak akan dilakukan.

/* File program : bagi.c

Pemakaian if-else untuk menyeleksi bilangan pembagi */

#include <stdio.h> main() { float a, b; printf("Masukkan nilai a : "); scanf("%f", &a); printf("Masukkan nilai b : "); scanf("%f", &b); if (b == 0)

printf("\n%g dibagi dengan nol = TAK BERHINGGA\n", a); else

printf("\n%g dibagi dengan %g = %g\n", a, b, a/b); }

(41)

37

Contoh eksekusi :

Masukkan nilai a : 5 Masukkan nilai b : 0

5 dibagi dengan nol = TAK BERHINGGA Contoh 1:

Contoh 2:

Outputnya :

Berapa usia anda? 16

Anda tidak diperkenankan menonton Penjelesan :

Terlihat bahwa kalau usia yang dimasukkan lebih dari 17, program akan memberi pesan Selamat Menonton.

Selain dari if … else, juga dikenal bentuk if … else if. Adapun perbedaannya diilustrasikan oleh dua contoh dibawah ini.

(42)

38 Contoh 3 :

Outputnya:

166 Lebih Besar dari 100 166 Lebih Besar dari 10

(43)

39

2.4. Pernyataan if bersarang (nested if)

Di dalam suatu pernyataan if (atau if-else) bisa saja terdapat pernyataan if (atau if-else) yang lain. Bentuk seperti ini dinamakan sebagai nested if. Secara umum, bentuk dari pernyataan ini adalah sebagai berikut :

 Kondisi yang akan diseleksi pertama kali adalah kondisi yang terluar (kondisi-1). Jika kondisi-1 bernilai salah, maka statemen else yang terluar (pasangan if yang bersangkutan) yang akan diproses. Jika else (pasangannya tsb) tidak ditulis, maka penyeleksian kondisi akan dihentikan.

 Jika kondisi-1 bernilai benar, maka kondisi berikutnya yang lebih dalam (kondisi-2) akan diseleksi. Jika kondisi-2 bernilai salah, maka statemen else pasangan dari if yang bersangkutan yang akan diproses. Jika else (untuk kondisi-2) tidak ditulis, maka penyeleksian kondisi akan dihentikan.

 Dengan cara yang sama, penyeleksian kondisi akan dilakukan sampai dengan kondisi-n, jika kondisi-kondisi sebelumnya bernilai benar.

if (kondisi-1) if (kondisi-2) . . if(kondisi-n) pernyataan; else pernyataan; . . else pernyataan; else pernyataan;

(44)

40 Contoh 1 :

/* File program : determinan1.c

Program untuk menghitung determinan dan akar-akar persamaan kuadrat menggunakan if bersarang */ #include <stdio.h> #include <math.h> main() { float a, b, c, d = 0; double x1, x2, imaginair;

printf("MENCARI AKAR-AKAR PERSAMAAN KUADRAT

ax^2+bx+c=0\n"); printf("\nMasukkan nilai a : "); scanf("%f", &a); printf("Masukkan nilai b : "); scanf("%f", &b); printf("Masukkan nilai c : "); scanf("%f", &c);

d = b*b-4*a*c; /* menghitung determinan */

if (d >= 0) if (d == 0) {

x1 = -b / (2 * a);

printf("\nDua akar real kembar yaitu : \n"); printf("x1 = x2 = %g\n", x1);

} else {

(45)

41

x2 = (-b - sqrt(d))/(2*a);

printf("\nDua akar real berlainan yaitu :\n"); printf("x1 = %g\n", x1); printf("x2 = %g\n", x2); } else { imaginair = (sqrt(-d)/(2*a)); x1 = -b/(2*a);

printf("\nDua akar imaginair berlainan yaitu : \n"); printf("x1 = %g + %gi\n", x1, imaginair);

printf("x2 = %g - %gi\n", x1, imaginair); }

}

Contoh eksekusi :

MENCARI AKAR-AKAR PERSAMAAN KUADRAT a+bx+c=0 Masukkan nilai a : 3

Masukkan nilai b : 6 Masukkan nilai c : 2

Dua akar real berlainan yaitu : X1 = -0.42265

(46)

42

Contoh 2 :

Contoh diatas disebut juga nested conditional

Contoh 3 :

Contoh implementasi nested if ini misalnya pembuatan sebuah program kalkulator sederhana. User memberikan masukan dengan format :

Jenis operasi yang dikenakan bergantung pada jenis operator ang dimasukkan oleh user. Oleh karena itu program akan mengecek apakah operator berupa tanda ‘*’, ‘/’, ‘+’, ataukah tanda ‘-‘ .

 Jika operator berupa tanda ‘*’ maka operand1 akan dikalikan dengan operand2.  Jika operator berupa tanda ‘/’ maka operand1 akan dibagi dengan operand2.  Jika operator berupa tanda ‘+’ maka operand1 akan dijumlahkan dengan

operand2.

 Jika operator berupa tanda ‘-’ maka operand1 akan dikurangi dengan operand2.  Kalau operator yang dimasukkan bukan merupakan salah satu dari jenis operator di atas, maka ekspresi tersebut tidak akan diproses, dan user akan mendapatkan pesan berupa : “Invalid operator !”

(47)

43 /* File program : kalkulator1.c

Contoh penggunaan else if untuk mengimplementasikan program kalkulator sederhana */

#include <stdio.h> main()

{

int valid_operator = 1;

/* valid_operator diinisialisasi dengan logika 1 */ char operator;

float number1, number2, result;

printf("Masukkan 2 buah bilangan dan sebuah operator\n"); printf("dengan format : number1 operator number2\n\n"); scanf("%f %c %f", &number1, &operator, &number2); if(operator == '*')

result = number1 * number2; else if(operator == '/')

result = number1 / number2; else if(operator == '+')

result = number1 + number2; else if(operator == '-')

result = number1 - number2; else

valid_operator = 0;

if(valid_operator)

printf("\n%g %c %g is %g\n", number1, operator, number2, result );

else

printf("Invalid operator!\n"); }

(48)

44

Contoh eksekusi :

Masukkan 2 buah bilangan dan sebuah operator dengan format : number1 operator number2 23.2 + 12

(49)

45

BAB 3

FUNGSI DAN STRUKTUR 3.1 FUNGSI

Penjelasan

Fungsi (Function) merupakan blok dari kode yang dirancang untuk melaksanakan tugas khusus. Kegunaan dari fungsi ini adalah untuk:

- Mengurangi pengulangan penulisan program yang berulangan atau sama.

- Program menjadi lebih terstruktur, sehingga mudah dipahami dan dapat lebih dikembangkan.

Fungsi-fungsi yang sudah kita kenal sebelumnya adalah fungsi main(), yang bersifat mutlak, karena fungsi ini program akan dimulai, sebagai contoh yang lainnya fungsi printf(), cout() yang mempunyai tugas untuk menampilkan informasi atau data kelayar dan masih banyak lainnya. Beberapa fungsi yang telah tersedia di dalam bahasa c++, antara lain: 3.1.1 Fungsi Operasi String (string.h)

- strcpy()

Berfungsi untuk menyalin suatu string asal ke variable string tujuan. Bentuk umum : strcpy(var_tujuan, string_asal);

#include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> main() { char huruf[20]; char pindah[20];

(50)

46 clrscr();

cout<<"Masukkan Sembarang Kata = "; gets(huruf); /* Proses */ strcpy(pindah, huruf); cout<<"Pemindahannya = "<<pindah; getch(); } - strlen()

Berfungsi untuk memperoleh jumlah karakter dari suatu string. Bentuk umum : strlen(string);

#include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> main() { char kata[20]; clrscr();

(51)

47 gets(kata);

strrev(kata);

cout<<"Hasil Perubahan = "<<kata; getch();

}

- strcat()

Berfungsi untuk menambahkan string sumber ke bagian akhir dari string tujuan.

Bentuk umum : strcat(tujuan, sumber); #include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #include <iostream.h> main() { char a1[20]; char a2[20]; clrscr(); cout<<"Masukkan Kata - 1= "; cin>>a1;

(52)

48 cout<<"Masukkan Kata - 2= "; cin>>a2;

strcat(a1, a2);

cout<<"Hasil Penggabungannya "<<a1; getch();

}

- strupr()

Berfungsi untuk mengubah setiap huruf dari suatu string menjadi huruf capital.

Bentuk umum : strupr(string); #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> main() { char kata[20]; clrscr();

cout<<"Masukan Sembarang Kata dengan Huruf Kecil="; gets(kata);

strupr(kata);

cout<<"Hasil Perubahan = "<<kata; getch();

(53)

49 }

- strlwr()

Berfungsi untuk mengubah setiap huruf dari suatu string menjadi huruf kecil semua.

Bentuk umum : strlwr(string); #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> main() { char kata[20]; clrscr();

cout<<"Masukan Sembarang Kata dengan Huruf Besar ="; gets(kata);

strlwr(kata);

cout<<"Hasil Perubahan = "<<kata; getch();

(54)

50 - strcmp()

Berfungsi untuk membandingkan dua buah string. Hasil dari fungsi ini bertipe integer dengan nilai

(a) Negative, jika string pertama kurang dari string kedua, (b) Nol, jika string pertama sama dengan string kedua,

(c) Positif, h=jika string pertama lebih besar dari string kedua. Bentuk umum : strcmp(string1,string2);

#include <stdio.h> #include <conio.h> #include <string.h> #include <iostream.h> main() {

char a1[] = "FEPI"; char a2[] = "FePi"; char b1[] = "fepi"; clrscr();

cout<<"Hasil Perbandingan "<<a1<<" dan "<<a2<<"->"; cout<<strcmp(a1,a2)<<endl;

cout<<"Hasil Perbandingan "<<a2<<" dan "<<a2<<"->"; cout<<strcmp(a2,a1) <<endl;

(55)

51 cout<<strcmp(a1,b1) <<endl; getch();

}

3.1.2 Fungsi Karakter (ctype.h)

- islower()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan hurup kecil.

Bentuk umum : islower(char); - isupper()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan hurup capital.

Bentuk umum : isupper(char); - isdigit()

Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan sebuah digit.

Bentuk umum : isdigit(char); - tolower()

Fungsi akan mengubah hurup kapital menjadi hurup kecil. Bentuk umum : tolower(char);

- toupper()

Fungsi akan mengubah hurup kecil menjadi hurup kapital Bentuk Umum : toupper(char);

(56)

52

3.1.3 Fungsi Operasi Matematika (math.h dan stdlib.h)

- Sqrt()

Digunakan untuk menghitung akar dari sebuah bilangan. Bentuk Umum : sqet(bilangan);

- pow()

Digunakan untuk menghitung pemangkatan suatu bilangan. Bentuk umum : pow(bilangan,pangkat);

- sin(),cos(),tan()

Masing-masing digunakan untuk menghitung nilai sinus, cosinus, dan tangens dari suatu sudut.

Bentuk umum : sin(sudut); Cos(sudut);

Tan(sudut); - atof()

Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe double.

Bentuk umum : atof(char x); - atoi()

Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe integer.

Bentuk umum : atoi(char x): - div()

Digunakan untuk menghitung hasil pembagian dan sisa pembagian. Bentuk umum : div_t div(int x,int y)

Strukturnya : Typedef struct

{ int qout; //hasil pembagian Int rem //sisa pembagian }div_t;

(57)

53 - max()

Digunakan untuk menentukan nilai maksimal dari dua buah bilangan. Bentuk umum : max(bilangan1, bilangan2);

- min()

Digunakan untuk menentukan nilai minimal dari dua buah bilangan. Bentuk umum : min(bilangan1, bilangan2);

Membuat Fungsi Sendiri

Deklarasi Fungsi

Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan dan didefinisikan terlebih dahulu. Bentuk umum pendeklarasian fungsi adalah : tipe_fungsi nama_fungsi(parameter_fungsi); Sedangkan bentuk umum pendefinisian fungsi adalah :Tipe_fungsi nama_fungsi(parameter_fungsi)

{ statement statement ………... ………... }

Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :

1. Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungis dengan nilai keluaran bertipe integer.

2. Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan pendefinisian penentu tipe fungsi.

3. Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke dalam tipe void

4. Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa pernyataan return.

(58)

54

Parameter Formal dan Parameter Aktual

1. Parameter Formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.

2. Parameter Aktual adalah variabel (parameter) yang dipakai dalam pemanggilan fungsi.

Cara Melewatkan Parameter

Cara melewatkan suatu parameter dalam Bahasa C ada dua cara yaitu : 1. Pemanggilan Secara Nilai (Call by Value)

 Call by value akan menyalin nilai dari parameter aktual ke parameter formal.

 Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori letak dari datanya.

 Fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi.

 Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai asli di bagian program yang memanggilnya.

 Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari bagian program yang memanggil fungsi ke fungsi yang dipanggil.

 Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah variabel, elemen array atau konstanta saja.

Contoh Call by Value #include<conio.h> #include<stdio.h> #include<iostream.h> tambah(int m, int n); main() { int a, b;

(59)

55 a = 2;

b = 5; clrscr();

cout<<"Nilai Sebelum Fungsi Digunakan "; cout<<"\na = "<<a<<" b = "<<b;

tambah(a,b);

cout<<"\nNilai Setelah Fungsi Digunakan"; cout<<"\na = "<<a<<" b = "<<b; getch(); } tambah(int m, int n) { m+=8; n+=5;

cout<<"\n\nNilai di dalam Fungsi Tambah()"; cout<<"\nm = "<<m<<" n = "<<n;

cout<<endl; }

(60)

56 2. Secara Referensi (Call by Reference)

 Pemanggilan secara Referensi merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi.

 Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan nilai datanya.

 Fungsi yang menerima kiriman alamat ini makan menggunakan alamat yang sama untuk mendapatkan nilai datanya.

 Perubahan nilai di fungsi akan merubah nilai asli di bagian program yang memanggil fungsi.

 Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu dari fungsi pemanggil ke fungsi yang dipanggil dan juga sebaliknya.

 Pengiriman secara acuan tidak dapat bdilakukan untuk suatu ungkapan. Contoh Call by Reference

#include<conio.h> #include<stdio.h> #include<iostream.h> tambah(int *c, int *d); main() { int a, b; a = 2; b = 5; clrscr();

cout<<"Nilai Sebelum Pemanggilan Fungsi"; cout<<"\na = "<<a<<" b = "<<b;

tambah(&a,&b); cout<<endl;

cout<<"\nNilai Setelah Pemanggilan Fungsi"; cout<<"\na = "<<a<<" b = "<<b;

(61)

57 } tambah(int *c, int *d) { *c+=8; *d+=5; cout<<endl;

cout<<"\nNilai di Akhir Fungsi Tambah()"; cout<<"\nc = "<<*c<<" d = "<<*d;

}

Penggolongan Variabel berdasarkan Kelas Penyimpanan (Storage Class)

1. Variabel lokal

Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi. Sifat-sifat variabel lokal :

 Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan lenyap ketika proses eksekusi terhadap fungsi berakhir.

 Hanya dikenal oleh fungsi tempat variabel dideklarasikan.

 Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya random).

Dideklarasikan dengan menambahkan kata “auto” (opsional). Contoh Variabel local:

#include<conio.h> #include<stdio.h> #include<iostream.h>

(62)

58 lokal(); main() { int a = 15; clrscr();

cout<<"Pemanggilan Variabel Lokal"<<endl; cout<<"\nNilai didalam funsi main() = : "<<a; lokal();

cout<<"\nNilai didalam funsi main() = : "<<a; getch();

}

lokal() {

int a = 10;

cout<<"\nNilai a didalam fungsi lokal() = "<<a; }

2. Variabel global (eksternal)

Variabel global (eksternal) adalah variabel yang dideklarasikan di luar fungsi.

Sifat-sifat variabel global :

 Dikenal (dapat diakses) oleh semua fungsi.

 Jika tidak diberi nilai awal secara otomatis berisi nilai nol.

Dideklarasikan dengan menambahkan kata “extern” (opsional). Contoh Variabel global:

(63)

59 #include<conio.h>

#include<stdio.h> #include<iostream.h>

int a = 6; //--> deklarasi variabel eksternal void lokal();

void main() {

clrscr();

cout<<"Penggunaan Variabel Eksternal"<<endl; cout<<"\nNilai didalam funsi main() = : "<<a; lokal(); //--> pemanggilan fungsi local

cout<<"\nNilai Setelah penggilan fungsi local() = "; cout<<a; getch(); } void lokal() { a+=10; }

(64)

60 3. Variabel Statis

Variabel statis adalah variabel yang nilainya tetap dan bisa berupa variable lokal (internal) dan variabel global (eksternal).

Sifat-sifat variabel statis :

 Jika bersifat internal (lokal), maka variabel hanya dikenal oleh fungsi tempat variabel dideklarasikan.

 Jika bersifat eksternal (global), maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada program yang sama.

 Nilai variabel statis tidak akan hilang walau eksekusi terhadap fungsi telah berakhir.

 Inisialisasi hanya perlu dilakukan sekali saja, yaitu pada saat fungsi dipanggil pertama kali.

 Jika tidak diberi nilai awal secara otomatis berisi nilai nol.

Dideklarasikan dengan menambahkan kata “static”. Contoh variable statis:

#include<conio.h> #include<stdio.h> #include<iostream.h>

walah(); //--> prototipe fungsi walah main() { int k = 5; clrscr(); walah(); walah();

cout<<"\nNilai K didalam fungsi main() = "<<k; getch();

} walah() {

Gambar

Gambar 1.1 Proses pengkompilasian file sumber hingga menjadi file eksekutabel
Gambar 1.2 Tipe Data C++
Tabel 1.1 Kategori Tipe Data Integral
Tabel 1.2 Contoh angka riil yang ditampilkan menggunakan notasi titik     mengambang C++
+7

Referensi

Dokumen terkait

Karena komputer adalah mesin maka program harus ditulis dalam bahasa yang khusus dibuat untuk berkomunikasi dengan komputer.. Bahasa komputer yang digunakan dalam menulis

Ketika ada multi item data yang diproses oleh program dan dibutuhkan untuk menyimpan semua item tersebut ke dalam memori pada waktu yang bersamaan, maka sangatlah tepat

Saya membutuhkan sebuah program yang mirip dengan program array tetapi terdiri dari data-data yang berbeda tipe

Proses pencarian adalah mencari / menemukan nilai tertentu dalam sekumpulan data dan mempunyai tipe yang sama (tipe dasar atau tipe bentukan). Contoh : untuk menghapus atau

Kita harus menggunakan bahasa yang dimengerti oleh komputer untuk memberikan suatu instruksi.. Berbicara tentang C++ biasa tidak lepas dari C, sebagai

Karena komputer adalah mesin, maka program harus ditulis dalam bahasa yang khusus dibuat untuk berkomunikasi dengan komputer.. Bahasa komputer yang digunakan dalam

long adalah tipe data 64 bit bertanda yang memiliki rentang nilai cukup besar. Ada beberapa kasus dimana int tidak cukup besar untuk menampung nilai

• Program dibuat dengan menggunakan bahasa pemrograman sebagai alat untuk mengungkapkan ide sang programmer agar dapat dijalankan oleh komputer • Setelah ditulis dalam bahasa