122
1 Algoritma Dan Pemrograman 1 Oleh : Suharnawi UNIVERSITAS DIAN NUSWANTORO

Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

  • Upload
    voxuyen

  • View
    237

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

1

Algoritma Dan Pemrograman 1

Oleh :

Suharnawi

UNIVERSITAS DIAN NUSWANTORO

Page 2: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

2

Page 3: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

i

KATA PENGANTAR

Buku Algoritma dan Pemrograman I ini adalah buku yang dibuat untuk keperluan praktikum matakuliah Algoritma dan Pemrograman I. Mata kuliah Algoritma dan Pemrograman I ini diberikan kepada mahasiswa pada semester awal. Pada semester awal adalah waktu yang tepat untuk mempelajari alur program berupa algoritma dan bagaimana menyusun sebuah program. Bahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++.

Bahasa pemrograman C++ merupakan bahasa yang banyak digunakan yang pada saat ini menempati urutan 10 besar. Banyak kemudahan yang ada dalam pemrograman C++.

Dengan berbagai kemudahan dan kelengkapan fungsi yang ada maka sangat baik untuk dipelajari bagi pemula. Strukturnya yang juga mirip pemrograman java, maka untuk beralih ke belajar java setelah mempelajari bahasa C++ ini nantinya tentu akan lebih cepat untuk dapat mempelajarinya. Pada saat ini Java menempati urutan yang bagus dari penggunakan bahasa pemrograman.

Tentunya penulis menyadari masih banyak kekurangan dalam penulisan buku ini. Sudah barang tentu pembaca diharapkan dapat lebih memperkaya pengalaman menuliskan program dengan berani menuliskan program yang lebih besar. Kesederhanaan dari isi buku ini diharapkan dapat mudah dipahami oleh mahasiswa. Karena dengan fondasi pemahaman yang kuat untuk belajar selanjutnya akan lebih baik.

Penulis juga mohon maaf jika dalam penulisan buku ini masih banyak kesalahan atau kekurangan.

Semarang, 18 Desember 2014

Salam

Penulis

Page 4: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

ii

Page 5: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

iii

Daftar Isi

Kata Pengantar ……………………………………………………………..…………………………………………. i

Daftar Isi ……………………………………………………………………………………………………………… iii

Pertemuan 1 ………………………………………………………………………………….. 1

Memulai Borland C++ ……………………………………………………………………………..…………. 1

Menulis Kode Program C++ …………………………………………………………..……………………. 2

Mengkompilasi Kode Program C++ ……………………………………………..……………………. 2

Menjalankan Program C++ …………………………………………………………..……………………. 3

Struktur Program C++ …..…………………………………………………………….……………………. 3

Pertemuan 2 ………………………………………………………………………………….. 9

Identifier ……………..……………………………………………………………………………..…………. 10

Tipe Data ………………..………………………………………………………………..……………………. 11

Variabel …………………………………………………………………………………..……………………. 13

Deklarasi Variabel ……………………………………………………………………..……………………. 13

Inisialisasi Variabel …………………………………………………………………….……………………. 14

Deklarasi Konstanta …………………………………………………………………..……………………. 15

Karakter dan String …………………………………………………………………….……………………. 16

Pertemuan 3 ………………………………………………………………………………….. 21

cout() …………………………………………………………………………………………………..…………. 21

printf() …………………………………………………………………………………………………..…………. 22

puts() …………………………………………………………………………………………………..…………. 25

putchar() ……………………………………………………………………………………………..…………. 25

cin() …………………………………………………………………………………………………..………..…. 28

scanf() …………………………………………………………………………………………………..…………. 30

gets() …………………………………………………………………………………………………..…………. 31

getch() ……….………………………………………………………………………………………..…………. 32

getche() ……………….……………………………………………………………………………..…………. 33

Page 6: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

iv

Pertemuan 4 ………………………………………………………………………………….. 35

Operator Assignation (=)…………………………………………………………………………..…………. 35

Operator Arithmetic (+, -, *, /, %) …………………………………………………………..…………. 36

Operator Compound Assignation (-=, +=, *=, dll) …………………………………..…………. 37

Operator Increase (++) and decrease (--) …………………………………………………..…………. 37

Operator Relation (==, !=, >, <, <=, >=) …………………………………………………..…………. 38

Operator Logika (!, &&, ||) ……………………………………………………………………..…………. 40

Operator Conditional (?) …………………………………………………………………………..…………. 40

Operator Bitwise (&, |, ^, ~, <<, >>) ………………………………………………………..…………. 41

Prioritas Operator ………………………………………………………………………..……………………. 42

Pertemuan 5 ………………………………………………………………………………….. 45

Pernyataan IP ………………………………………………………………………………………..…………. 45

Pernyataan IP - ELSE …………………………………………………………………………..…………. 48

Pernyataan NESTED IP …………………………………………………………………………..…………. 50

Pernyataan IP – ELSE Majemuk ……………………………………………………………..…………. 51

Pernyataan switch - case ……………………………………………………………………..…………. 52

Pertemuan 6 ………………………………………………………………………………….. 57

Pernyataan while …………………………………………………………………………………..…………. 57

Pernyataan do - while ……………………………………………………………………………..…………. 59

Pernyataan for ……………………………………………………………………………………..…………. 60

Pernyataan nested - for …………………………………………………………………………..…………. 63

Pernyataan goto ……………………………………………………………………………………..…………. 64

Pernyataan break ………………………………………………………………………………..…………. 65

Pernyataan continue ……………………………………………………………………………..…………. 66

Pertemuan 7 ………………………………………………………………………………….. 67

Array ……………………….…………………………………………………………………………..…………. 67

Inisialisasi Array ……….………………………………………………………………..……………………. 68

Array Multidimensi ……………………………………………………………………..……………………. 70

Array sebagai parameter ………………………………………………………………..……………………. 72

Pertemuan 8 ………………………………………………………………………………….. 73

Data Struktur ………………………………………………………………………………………..…………. 73

Pertemuan 9 ………………………………………………………………………………….. 79

Fungsi …………………….…………………………………………………………………………..…………. 79

Page 7: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

v

Fungsi tanpa tipe ( void ) ……………………………………………………………..……………………. 81

Variabel Lokal dan Variabel Global ………………………………………………..……………………. 81

Pertemuan 10 ……………………………………………………………………………….. 85

Parameter Fungsi …..……………………………………………………………………………..…………. 85

Argument passed by value dan by reference …………………………………..……………………. 86

Nilai default dalam argument ………………………………………………………..……………………. 88

Pertemuan 11 ……………………………………………………………………………….. 93

Prototyping Function …..………………………………………………………………………..…………. 93

Overloaded Function …..……………………………………………………………..……………………. 95

Pertemuan 12 ……………………………………………………………………………….. 97

Rekursivity Function …………………………………………………………………………..…………. 97

Pertemuan 13……………………………………………………………………………….. 100

Sorting …..…………..……………………………………………………………………………..…………. 100

Buble Sort ……………..……………………………………………………………………………..…………. 100

Selection Sort …………………………………………………………………………..……………………. 103

Pertemuan 14……………………………………………………………………………….. 107

Searching ………………………………………………………………………………..………………….…. 107

Linier Search ………….…………………………………………………………………..……………………. 107

Binary Search ……….…………………………………………………………………..……………………. 109

Daftar Pustaka ………………………………………………………………………….. 111

Page 8: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

vi

Page 9: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

1

PPeerrtteemmuuaann 11

Pokok Bahasan

1. Mengenal Borland C++ 2. Membaca Algoritma 3. Mengimplementasikan Algoritma dalam pemrograman

Tujuan Pembelajaran

1. Mahasiswa dapat membaca algoritma dengan benar 2. Mahasiswa dapat mengimplementasikan Algoritma kedalam bahasa pemrograman C++ 3. Mahasiswa mampu mengkompilasi dan menjalankan program

Kompetensi Prasyarat

1. Mahasiswa telah menguasai pengoperasian dasar komputer 2. Mahasiswa dapat menggunakan Operating Sistem Windows.

Instruksi Khusus

1. Mahasiswa menggunakan pemrograman C++ untuk membuat program dengan tahapan yang benar.

Teori Singkat

Memulai Borland C++

Untuk memulai Borland C++ dapat dilakukan dengan cara memilih menu Start pada Windows, Program File, dan pilih Borland C++.

Membuat File / Program C++

Dari menu File pada Borland C++, pilih New, dan Text File.

Gambar 1.1 Tampilan Borland C++

Page 10: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

2

Menulis kode Program C++

Tuliskan kode program C++ pada editor yang disediakan seperti pada Gambar 1.2 berikut :

Gambar 1.2 Editor Borland C++

Mengkompilasi kode Program C++

Untuk mengkompilasi kode program pilihlah icon Compile this file. Kompilasi dilakukan pada saat membuat program baru atau pada saat setelah melakukan perubahan program.

Gambar 1.3 Icon Compile this File Borland C++

Page 11: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

3

Menjalakan Program C++

Untuk menjalankan program yang telah berhasil dikompilasi pilihlah icon Run seperti pada Gambar 1.4 berikut :

Gambar 1.4 Icon Run Borland C++

Struktur Program C++

Struktur program C++ adalah sebagai berikut : #Preprocessor directive int main () { // badan program ; // lokasi program utama dituliskan ; }

contoh source code :

Hasil program setelah di-kompile dan di-eksekusi : Hello World

// progran C++ pertamaku #include <iostream.h> int main () { cout << "Hello World!"; return 0; }

Page 12: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

4

Keterangan :

Program di atas merupakan salah satu program paling sederhana dalam C++, tetapi dalam program tersebut mengandung komponen dasar yang selalu ada pada setiap pemrograman C++. Keterangan dari masing-masing baris perintah di atas adalah : // program C++ pertamaku

Baris ini adalah komentar. Semua baris yang diawali dengan dua garis miring (//) akan dianggap sebagai komentar dan tidak akan berpengaruh terhadap program.

#include <iostream.h>

Kalimat yang diawali dengan tanda (#) adalah are preprocessor directive. Bukan merupakan baris kode yang dieksekusi, tetapi indikasi untuk kompiler. Dalam kasus ini kalimat #include <iostream.h> memberitahukan preprocessor kompiler untuk menyertakan header file standard iostream. File spesifik ini juga termasuk library deklarasi standard I/O pada C++ dan file ini disertakan karena fungsi-fungsinya akan digunakan nanti dalam program.

int main ()

Baris ini mencocokan pada awal dari deklarasi fungsi main. Fungsi main merupakan titik awal dimana seluruh program C++ akan mulai dieksekusi. Diletakan di awal, di tengah atau di akhir program, isi dari fungsi main akan selalu dieksekusi pertama kali. Pada dasarnya, seluruh program C++ memiliki fungsi main. main diikuti oleh sepasang tanda kurung () karena merupakan fungsi. pada C++, semua fungsi diikuti oleh sepasang tanda kurung () dimana, dapat berisi argumen didalamnya. Isi dari fungsi main selanjutnya akan mengikuti,berupa deklarasi formal dan dituliskan diantara kurung kurawal ( { } ), seperti dalam contoh.

cout << "Hello World";

Intruksi ini merupakan hal yang paling penting dalam program contoh. cout merupakan standard output stream dalam C++ (biasanya monitor). cout dideklarasikan dalam header file iostream.h, sehingga agar dapat digunakan maka file ini harus disertakan. Perhatikan setiap kalimat diakhiri dengan tanda semicolon (;). Karakter ini menandakan akhir dari instruksi dan harus disertakan pada setiap akhir instruksi pada program C++.

return 0;

Intruksi return menyebabkan fungsi main() berakhir dan mengembalikan kode yang mengikuti instruksi tersebut, dalam kasus ini 0. Nilai nol boleh digantikan dengan nilai yang sesuai dengan tipe data dari main, dengan demikian jika main mempunyai tipe int maka return dapat diberikan nilai dengan jangkauan int tersebut.

Tidak semua baris pada program ini melakukan aksi. Ada baris yang hanya berisi komentar (diawali //), baris yang berisi instruksi untuk preprocessor kompiler (Yang diawali #),kemudian

Page 13: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

5

baris yang merupakan inisialisasi sebuah fungsi (dalam kasus ini, fungsi main) dan baris yang berisi instruksi (seperti, cout <<), baris yang terakhir ini disertakan dalam blok yang dibatasi oleh kurung kurawal ({}) dari fungsi main.

Struktur program dapat dituliskan dalam bentuk yang lain agar lebih mudah dibaca, contoh :

atau dapat juga dituliskan :

Dalam satu baris dan memiliki arti yang sama dengan program-program sebelumnya. pada C++ pembatas antar instruksi ditandai dengan semicolon (;) pada setiap akhir instruksi.

contoh :

Komentar Program

Komentar adalah bagian dari program yang diabaikan oleh kompiler. Tidak melaksanakan aksi apapun. Mereka berguna untuk memungkinkan para programmer untuk memasukan catatan

#include <iostream.h> int main () { cout << " Hello World "; return 0; }

#include <iostream.h> int main () { cout << " Hello World "; return 0; }

#include <iostream.h> int main () { cout << " Data Saya " << endl; cout << " ================ " << endl; cout << " Nama : Awalina " << endl; cout << " Telp. : 081262621188 "; cout << endl; return 0; }

Page 14: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

6

atau deskripsi tambahan mengenai program tersebut. C++ memiliki dua cara untuk menuliskan komentar :

// Komentar baris

/* Komentar Blok */

Komentar baris, akan mengabaikan apapun mulai dari tanda (//) sampai akhir dari baris yang sama. Komentar Blok, akan mengabaikan apapun yang berada diantara tanda /* dan */. Komentar sangat penting diberikan sebagai bahan dokumentasi. Komentar akan sangat berguna nantinya pada saat program akan dibaca kembali.

Contoh penggunaan komentar :

/* Nama program : komentar01.cpp Dibuat tanggal : 1 Oktober 2014 Fungsi Program : memberi keterangan program Dibuat oleh : nawi */ #include <iostream.h> int main () { //mencetak nama............ cout << "Nama : Cahaya Indahsari"; cout << endl; cout << "Kota : Semarang"; // cetak kota return 0; }

Page 15: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

7

Pelaksanaan Praktikum

1. Buatlah Program Berikut : Output yang dihasilkan :

2. Ubahlah nilai 0 yang mengikuti return 0 dengan angka 1945, perhatikan apa yang terjadi ! 3. Ubahlah perintah int main() menjadi void main() dan perintah return 0 dihilangkan !

Perhatikan apa yang terjadi !

Latihan

1. Cetaklah Data Mahasiswa yang dilengkapi dengan bingkai yang mengitari data tersebut !

/* Nama program : Latihan01.cpp Dibuat tanggal : 2 Februari 2015 Fungsi Program : mencetak keterangan Dibuat oleh : nama mahasiswa */ #include <iostream.h> int main () { //menampilkan data............ Clrscr; cout << “Data Mahasiswa” << endl; cout << “=========================” << endl; cout << "1. NIM : A12.2014.29012" << endl; cout << “2. Nama : Nur Hartati Mulya” << endl; cout << "3. Alamat : Jl. Nuri 45 RT.01/RW.03\n"; cout << "4. Kel. : Wonomulyo\n"; cout << "4. Kec. : Candisari\n"; cout << "5. Kota : Semarang"; // cetak kota cout << endl; getch(); return 0; }

Page 16: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

8

Tugas

1. Jelaskan masing-masing baris perintah dari program praktikum no. 1 di atas ! 2. Tuliskan perbedaan pemakaian komentar // dengan /*….*/ 3. Mengapa return diberi nilai 0 ?

int main () { cout << " Hello World "; return 0; }

4. Apa fungsi kurung kurawal ( { } ) dalam program ? 5. Apa perbedaan perintah “\n” dan endl ?

Page 17: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

9

PPeerrtteemmuuaann 22

Pokok Bahasan

1. Tipe Data 2. Variabel 3. Konstanta

Tujuan Pembelajaran

1. Mahasiswa mengenal tipe data dan mengetahui jangkauan nilai dari tipe data 2. Mahasiswa dapat menetukan tipe data yang tepat dalam penyusunan program

Kompetensi Prasyarat

1. Mahasiswa telah mampu menuliskan, mengkompilasi, dan menjalankan program C++ 2. Mahasiswa dapat membuat program dengan perintah cout.

Instruksi Khusus

1. Mahasiswa menggunakan pemrograman C++ untuk membuat program dengan tahapan yang benar.

2. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Komputer sebagai pengolah data tentunya tidak dapat lepas dengan proses penyimpanan data. Komputer dengan kemampuan memproses dan mengelola data, sudah barang tentu harus dilakukan pengelolaan yang baik. Sebagai ilustrasi, ingat 2 buah angka, angka pertama adalah 5 dan angka kedua adalah 2. Selanjutnya tambahkan 10 pada angka pertama kemudian hasilnya dikurangi angka kedua (dimana hasil akhirnya adalah 11).

Seluruh proses ini dapat diekspresikan dalam C++ dengan serangkaian instruksi sebagai berikut :

Jelas ini merupakan satu contoh yang sangat sederhana karena kita hanya menggunakan 2 nilai integer yang kecil, tetapi komputer dapat menyimpan jutaan angka dalam waktu yang hampir bersamaan dan dapat melakukan operasi matematika yang rumit.

a = 5; b = 4; a = a + 10; result = a - b;

Page 18: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

10

Karena itu, kita dapat mendefinisikan variable sebagai bagian dari memori untuk menyimpan nilai yang telah ditentukan. Setiap variable memerlukan identifier yang dapat membedakannya dari variable yang lain. Sebagai contoh dari kode di atas, identifier variabelnya adalah a, b dan result.

Identifiers

Identifier adalah untaian satu atau lebih huruf, angka, atau garis bawah ( _ ). Panjang dari

identifier, tidak terbatas, walaupun untuk beberapa kompiler hanya 32 karakter pertama saja yang dibaca sebagai identifier (sisanya diabaikan). Identifier harus selalu diawali dengan huruf atau garis bawah ( _ ).

Ketentuan lainnya yang harus diperhatikan dalam menentukan identifier adalah tidak boleh menggunakan key word dari bahasa C++. Di bawah ini adalah key word dalam C++ :

and_eq asm auto bitand

bitor bool break case

catch char class compl

const const_cast continue default

delete do double dynamic_cast

else enum explicit export

extern FALSE float for

friend goto if inline

int long mutable namespace

new not not_eq operator

or or_eq private protected

public register reinterpret_cast return

short signed sizeof static

static_cast struct switch template

this throw TRUE try

typedef typeid typename union

unsigned using virtual void

volatile wchar_t while xor

xor_eq

Page 19: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

11

Sebagai tambahan, represetasi alternatif dari operator, tidak dapat digunakan sebagai identifier. Represetasi alternatif dari operator tersebut adalah sebagai berikut:

and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq

catatan:

Bahasa C++ adalah bahasa yang "case sensitive", ini berarti identifier yang dituliskan dengan huruf kapital akan dianggap berbeda dengan identifier yang sama tetapi dituliskan dengan huruf kecil, sebagai contoh : variabel hargabeli tidak sama dengan variable HARGABELI

ataupun variabel HargaBeli.

Tipe Data

Tipe data yang ada pada C++ adalah sebagai berikut :

Tabel 2.1. Tipe Data

Tipe Data Ukuran Jangkauan Nilai

char 1 byte signed: -128 to 127

unsigned: 0 to 255

short int (short) 2 bytes

signed: -32768 to 32767

unsigned: 0 to 65535

int 4 bytes signed: -2147483648 to 2147483647

unsigned: 0 to 4294967295

long int (long) 4 bytes

signed: -2147483648 to 2147483647

unsigned: 0 to 4294967295

bool 1 byte true or false

float 4 bytes +/- 3.4e +/- 38 (~7 digits)

double 8 bytes +/- 1.7e +/- 308 (~15 digits)

long double 8 bytes +/- 1.7e +/- 308 (~15 digits)

wchar_t 2 or 4 bytes 1 wide character

Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi setiap instruksi yang akan dilaksanakan oleh komputer. Misalnya saja 5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5 dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika keduanya bertipe float maka akan menghasilkan nilai 2.5. Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih efisien dan efektif.

Page 20: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

12

Contoh :

Hasil output program :

Hasil (int) = 2

Contoh :

Hasil output program :

Hasil (float) = 2.5

#include <iostream.h> #include <conio.h> int main () { // declaring variables: int a, b; int result; // process: a = 5; b = 2; result = a / b; cout << "Hasil (int) = " << result; getch(); return 0; }

#include <iostream.h> #include <conio.h> int main () { // declaring variables: float a, b; float result; // process: a = 5; b = 2; result = a / b; cout << "Hasil (float)= " << result; getch(); return 0; }

Page 21: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

13

Variabel

Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya selalu tetap, nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan.

Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan sebagai berikut :

Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. Bahasa C bersifat case-sensitive artinya huruf besar dan kecil dianggap berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda.

Tidak boleh mengandung spasi. Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah (underscore).

Yang termasuk symbol khusus yang tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -, +, = dsb

Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.

Contoh penamaan variabel yang benar :

NIM, a, x, nama_mhs, f3098, f4, nilai, budi

Contoh penamaan variable yang salah :

%nilai_ujian, 80harga, rata-rata, ada spasi, penting!

Deklarasi variabel

Untuk menggunakan variabel pada C++, kita harus mendeklarasikan tipe data yang akan digunakan. Sintaks penulisan deklarasi variabel adalah dengan menuliskan tipe data yang akan digunakan diikuti dengan identifier yang benar, contoh :

int a;

float mynumber;

Jika akan menggunakan tipe data yang sama untuk beberapa identifier maka dapat dituliskan dengan menggunakan tanda koma.

contoh :

int a, b, c;

Tipe data integer (char, short, long dan int) dapat berupa signed atau unsigned tergantung dari

kisaran nilai yang akan direpresentasikan. Dilakukan dengan menyertakan keyword signed atau

unsigned sebelum tipe data, contoh :

unsigned short NumberOfSons;

signed int MyAccountBalance;

Page 22: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

14

Jika tidak dituliskan, maka akan dianggap sebagai signed.

contoh :

Inisialisasi Variabel

Ketika mendeklarasikan variabel lokal, kita dapat memberikan nilai tertentu. Sintaks penulisan sebagai berikut :

Misalkan kita akan mendeklarasikan variabel dengan nama a dengan tipe int yang bernilai 0,

maka dapat dituliskan :

int a = 0;

Atau dengan cara lainnya, yaitu menyertakan nilai yang akan diberikan dalam tanda ():

contoh :

int a (0);

type identifier = initial_value ;

type identifier (initial_value) ;

#include <iostream.h> #include <conio.h> int main () { unsigned int jumlah, harga; int total; jumlah = 10; // jumlah >= 0 harga = 5000; // harga >= 0 total = jumlah * harga; cout << "Total = " << total; getch(); return 0; }

Page 23: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

15

contoh program :

Variabel Numerik

Variabel numerik ini dibagi menjadi menjadi 3 (tiga) macam :

Bilangan Bulat atau Integer Bilangan Desimal Berpresisi Tunggal atau Floating Point. Bilangan Desimal Berpresisi Ganda atau Double Precision.

Variabel Text

Variabel Text ini dibagi menjadi menjadi 2 (dua) macam :

Character ( Karakter Tunggal ) String ( Untuk Rangkaian Karakter )

contoh :

char niliaihuruf; char nama[25];

Deklarasi Konstanta

Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses program berlangsung. Konstanta nilainya selalu tetap. Konstanta harus didefinisikan terlebih dahulu di awal program.

Bentuk deklarasi konstanta diawali dengan reserved word const.

Bentuk penulisannya :

Konstanta dapat bernilai integer, pecahan, karakter dan string.

Contoh konstanta : 50; 13; 3.14; 4.50005; ‘A’; ‘Bahasa C’.

#include <iostream.h> #include <conio.h> int main () { int panjang = 5, lebar (4); int luas; luas = panjang * lebar; cout << "Luas = " << luas; getch(); return 0; }

const nama-konstanta = nilai konstanta;

Page 24: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

16

Nilai Integer

Merupakan nilai konstanta numerik yang meng-identifikasikan nilai integer decimal. Karena merupakan nilai numeric, maka tidak memerlukan tanda kutip (") maupun karakter khusus

lainnya.

Contoh :

1776 707 -273

C++ memungkinkan kita untuk mempergunakan nilai oktal (base 8) dan heksadesimal (base 16). Jika menggunakan octal maka harus diawali dengan karakter 0 (karakter nol), dan untuk

heksadesimal diawali dengan karakter 0x (nol, x).

Contoh : 75 // decimal 0113 // octal 0x4b // hexadecimal

Dari contoh diatas, seluruhnya merepresentasikan nilai yang sama : 75.

Nilai Floating Point

Merepresentasikan nilai desimal dan/atau eksponen, termasuk titik desimal dan karakter e

(Yang merepresentasikan “dikali 10 pangkat n” , dimana n merupakan nilai integer) atau keduanya. Contoh :

3.14159 // 3.14159 6.02e23 // 6.02 x 1023 1.6e-19 // 1.6 x 10-19 3.0 // 3.0

Karakter dan String

Merupakan konstanta non-numerik, Contoh :

'z' 'p' "Hello world" "How do you do?"

Untuk karakter tunggal dituliskan diantara kutip tunggal (') dan untuk untaian beberapa

karakter, dituliskan diantara kutip ganda (").

Konstanta karakter dan string memiliki beberapa hal khusus, seperti escape codes berikut ini.

Page 25: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

17

escape codes

Fungsi Keterangan

\n newline ganti baris baru

\r carriage return ke kolom pertama

\t tab tabulasi

\v vertical tab tabulasi vertical

\b backspace mundur satu spasi

\f form feed (page feed) ganti halaman

\a alert (beep) untuk bunyi bell

\' single quote (') karakter petik tunggal

\" double quote (") karakter petik ganda

\? question mark (?) question mark

\\ backslash (\) karakter garis miring

contoh : '\n' '\t' "Left \t Right" "one\ntwo\nthree"

Sebagai tambahan, kita dapat menuliskan karakter apapun dengan menuliskan yang diikuti dengan kode ASCII, mengekspresikan sebagai octal (contoh, \23 atau \40) maupun heksadesimal (contoh, \x20 atau \x4A).

Konstanta Define (#define)

Kita dapat mendefinisikan sendiri nama untuk konstanta yang akan kita pergunakan, dengan menggunakan preprocessor directive #define. Dengan format :

#define identifier value

Page 26: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

18

Contoh : #define PI 3.14159265 #define NEWLINE '\n' #define WIDTH 100

Setelah didefinisikan seperti diatas, maka kita dapat menggunakannya pada seluruh program yang kita buat, contoh :

circle = 2 * PI * r;

cout << NEWLINE;

Pada dasarnya, yang dilakukan oleh kompiler ketika membaca #define adalah menggantikan

literal yang ada (dalam contoh, PI, NEWLINE atau WIDTH) dengan nilai yang telah ditetapkan

(3.14159265, '\n' dan 100). #define bukan merupakan instruksi, oleh sebab itu tidak diakhiri

dengan tanda semicolon (;).

Deklarasi Konstanta (const)

Dengan prefix const kita dapat mendeklarasikan konstanta dengan tipe yang spesifik seperti

yang kita inginkan.

contoh : const int width = 100; const char tab = '\t'; const zip = 12440;

Jika tipe data tidak disebutkan, maka kompiler akan meng-asumsikan sebagai int.

contoh :

#include <iostream.h> #include <conio.h> #define PI 3.14159 #define NEWLINE '\n' int main () { double r=5.0; double circle; circle = 2 * PI * r; cout << circle; cout << NEWLINE; getch(); return 0; }

Page 27: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

19

Pelaksanaan Praktikum

1. Buatlah Program Berikut : Output yang dihasilkan :

/* Nama program : Latihan02.cpp Dibuat tanggal : 5 Februari 2015 Fungsi Program : menggunakan variabel Dibuat oleh : nama mahasiswa */ #include <iostream.h> #include <conio.h> char nama[30]; char Alamat[30]; int nilai1; int nilai2; float rata; int main () { clrscr; strcpy(nama, "Setia Djati"); strcpy(alamat, "Jl. Nuri 45"); nilai1 = 85; nilai2 = 90; //cetak data........................... cout << "Data Mahasiswa" << endl; cout << "=============================" << endl; cout << "1. Nama : " << Nama << endl; cout << "2. Alamat : " << alamat << endl; cout << "3. Nilai1 : " << Nilai1 << endl; cout << "4. Nilai2 : " << Nilai2 << endl; rata = (nilai1 + nilai2)/2; cout << "5. Rata-rata : " << rata << endl; cout << "=============================" << endl; getch(); return 0; }

Page 28: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

20

2. Buatlah Program Berikut :

Latihan

1. Buatlah program konversi mata uang rupiah ke US $ ! 2. Buatlah program untuk menghitung konversi suhu dari Reamur ke Celcius !

Tugas

1. Jelaskan bahwa bahasa C++ merupakan bahasa pemrograman yang case sensitif ? 2. Jelaskan pengertian keyword ? 3. Mengapa keyword tidak boleh digunakan sebaga indentifier ? 4. Type data apa yang sesuai untuk mewakili hasil berikut : a. Jumlah anak dalam keluarga b. Nilai ujian dalam suatu kelas c. Nilai rata-rata kelas

/* Nama program : Latihan02a.cpp Dibuat tanggal : 5 Februari 2015 Fungsi Program : menggunakan variabel Dibuat oleh : nama mahasiswa */ #include <iostream.h> #include <conio.h> char nama[30]; char alamat[30]; int main () { clrscr; strcpy(nama, "Setia Djati"); strcpy(alamat, "Jl. Nuri 45"); int nilai1 = 85; int nilai2 = 90; //cetak data........................... cout << "Data Mahasiswa" << endl; cout << "=============================" << endl; cout << "1. Nama : " << Nama << endl; cout << "2. Alamat : " << alamat << endl; cout << "3. Nilai1 : " << Nilai1 << endl; cout << "4. Nilai2 : " << Nilai2 << endl; float rata = (nilai1 + nilai2)/2; cout << "5. Rata-rata : " << rata << endl; cout << "=============================" << endl; getch(); return 0; }

Page 29: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

21

PPeerrtteemmuuaann 33

Pokok Bahasan

1. Perintah Input bahasa pemrograman C++ 2. Perintah Output bahasa pemrograman C++

Tujuan Pembelajaran

1. Mahasiswa dapat mencetak/menampilkan informasi di layar 2. Mahasiswa dapat membuat program untuk memasukkan data

Kompetensi Prasyarat

1. Mahasiswa telah mengenal dan dapat menggunakan identifier dengan baik 2. Mahasiswa dapat menggunakan perintah mencetak.

Instruksi Khusus

1. Mahasiswa harus dapat menggunakan tipe data dengan benar sesuai peruntukannya 2. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan

program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Komputer sebagai pengolah data tentunya tidak dapat lepas dengan proses penyimpanan data.

#include <iostream.h> // untuk mengaktifkan perintah cout; #include <stdio.h> // untuk mengaktifkan perintah printf dan scanf #include <conio.h> // untuk mengaktifkan perintah getch()

Perintah standar output yang disediakan oleh Borland C++, diantaranya adalah :

cout() printf() puts() putchar()

cout() Fungsi cout() merupakan sebuah objeck didalam Borland C++ digunakan untuk menampilkan suatu data kelayar. Untuk menggunakan fungsi cout() ini, harus menyertakan file header iostream.h .

Page 30: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

22

Contoh :

printf() Fungsi printf() merupakan fungsi keluaran yang paling umum digunakan untuk menampilkan informasi ke layar.

Bentuk Penulisan :

string-kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta penentu format. Penentu format dipakai untuk memberi tahu kompiler mengenai jenis data yang dipakai dan akan ditampilkan.

Argumen ini dapat berupa variabel, konstanta dan ungkapan.

Tabel 2.4. Penentu Format Printf()

TIPE DATA Format untuk printf()

Integer %d

Floating Point

Bentuk Desimal %f

#include <stdio.h> #include <conio.h> #include <iostream.h> main() { float a, b, c; a = 7.5; b = 8.4; c = 0;

clrscr(); cout<<" Nilai A : " << a; cout<<" Nilai B : " << b;

c = a + b; cout<<" Nilai C : " << c; getch(); }

printf("string-kontrol", arg1, arg2, …);

Page 31: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

23

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 Octal Integer %o

printf(“%c merupakan abjad yang ke - %d”,’b’,2);

b typenya char

contoh :

Penggunaan Penentu Lebar Field Bila ingin mencetak atau menampilkan data yang bertipe data FLOAT atau pecahan, tampilan yang tampak biasanya kurang bagus. Hal tersebut dapat diatur lebar field-nya dan jumlah desimal yang ingin dicetak. Berikut bentuk penulisannya :

#include <stdio.h> #include <conio.h> main() { int a = 7; char b = 'G'; clrscr(); printf("%c adalahAbjad Ke - %d", b, a); getch(); }

Page 32: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

24

contoh :

Output yang akan dihasilkan, jika tidak menggunakan panentu lebar field adalah

Bilangan A = 7.500000

Bilangan B = 243.210007

contoh :

Output yang dihasilkan, jika menggunakan penentu lebar field adalah

Bilangan A = 7.5

Bilangan B = 243.2

#include <stdio.h> #include <conio.h> main() { float a = 7.50, b = 243.21; clrscr(); printf("Bilangan A = %f \n", a); printf("Bilangan B = %f", b); getch(); }

#include <stdio.h> #include <conio.h> main() { float a = 7.50, b = 243.21; clrscr(); printf("Bilangan A = %4.1f \n", a); printf("Bilangan B = %4.1f", b); getch(); }

Page 33: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

25

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 :

Tabel 2.6. Perbedaan fungsi puts() dengan printf() printf() puts()

Harus menentukan tipe data untuk data 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 dibeikan secara otomatis.

contoh :

putchar() Perintah putchar() digunakan untuk menampilkan sebuah karakter ke layar. Penampilan karakter tidak diakhiri dengan pindah baris. contoh :

#include <stdio.h> #include <conio.h> main() { char a[4] = "Dian"; clrscr(); puts("Saya Kuliah di. "); puts(a); getch(); }

#include <stdio.h> #include <conio.h> main() { clrscr(); putchar('D'); putchar('N'); putchar('S'); getch(); }

Page 34: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

26

Fungsi Manipulator Manipulator pada umumnya digunakan untuk mengatur tampilan layar, untuk menggunakan manipulator ini file header yang harus disertakan file header iomanip.h.

Ada beberapa fungsi manipulator yang disediakan oleh Borland C++, antara lain.

endl hex() setfill()

end oct() setprecision()

flush() setbase() setosflags()

dec() setw()

Berikut akan dibahas beberapa fungsi manipulator, diantaranya :

a. endl Fungsi endl merupakan suatu fungsi manipulator yang digunakan untuk menyisipkan karakter NewLine atau mengatur pindah baris. Fungsi ini sangat berguna untuk piranti keluaran berupa file di disk. File header yang harus disertakan adalah file header iostream.h .

contoh :

b. ends Fungsi ends merupakan suatu fungsi manipulator yang digunakan untuk menambah karakter null ( nilai ASCII NOL ) kederetan suatu karakter. Fungsi ini akan berguna untuk mengirim sejumlah karakter kefile didisk atau modem dan mangakhirinya dengan karakter NULL.. File header yang harus disertakan adalah file header iostream.h .

# include <stdio.h> # include <conio.h> # include <iostream.h> main() { float a, b, c; a=7.5; b=8.4; c=0 clrscr(); cout<<"Nilai A : "<< a <<endl; cout<<"Nilai B : "<< b <<endl; c = a + b; cout<<"Nilai C : "<< c <<endl; getch(); }

Page 35: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

27

contoh : c. dec, oct dan hex Fungsi dec, oct dan hex merupakan suatu fungsi manipulator yang digunakan untuk menampilkan data dalam bentuk desimal, oktal dan hexadesimal. File header yang harus disertakan adalah file header iomanip.h .

contoh :

# include <stdio.h> # include <conio.h> # include <iostream.h> main() { int a, b, c, d; clrscr(); cout<<"Masukan Nilai A : "; cin>>a; cout<<"Masukan Nilai B : "; cin>>b;

c = a % b; d = a * b; cout<<"Hasil C = A % B adalah "<<c<<ends; cout<<"Hasil D = A * B adalah "<<d<<ends; getch(); }

# include <stdio.h> # include <conio.h> # include <iostream.h> # include <iomanip.h> void main() { int nilai = 10; clrscr(); cout<<"Nilai = "<<nilai<<endl; cout<<"ke Octal = "<<oct<<nilai<<endl; cout<<"ke Hexa = "<<hex<<nilai<<endl; cout<<"ke Desimal = "<<dec<<nilai<<endl; getch(); }

Page 36: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

28

d. setprecision () Fungsi setprecision() merupakan suatu fungsi manipulator yang digunakan untuk mengatur jumlah digit desimal yang ingin ditampilkan. Fungsi ini biasa pada fungsi cout(), file header yang harus disertakan adalah file header iomanip.h .

Contoh :

Perintah standar input yang disediakan oleh Borland C++, diantaranya adalah : cin() scanf() gets() cout() getch getche()

cin() Fungsi cin() merupakan sebuah objeck didalam C++ digunakan untuk memasukkan suatu data. Untuk menggunakan fungsi cin() ini, harus menyertakan file header iostream.h .

cin() digunakan untuk menangani standard input pada C++ dengan menambahkan

overloaded operator extraction (>>) pada cin stream. Harus diikuti dengan variable yang akan

menyimpan data.

Contoh :

# include <stdio.h> # include <conio.h> # include <iostream.h> # include <iomanip.h> void main() { float a, b, c; a = 25.77; b = 23.45; clrscr(); c = a * b; cout<<setiosflags(ios::fixed); cout<<setprecision(1)<<c<<endl; cout<<setprecision(2)<<c<<endl; cout<<setprecision(3)<<c<<endl; cout<<setprecision(4)<<c<<endl;

int age; cin >> age;

Page 37: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

29

Contoh diatas mendeklarasikan variabel age dengan tipe int dan menunggu input dari cin

(keyborad) untuk disimpan di variabel age.

cin akan memproses input dari keyboard sekali saja dan tombol ENTER harus ditekan.

contoh :

Output :

Please enter an integer value: 702 The value you entered is 702 and its double is 1404.

cin juga dapat digunakan untuk lebih dari satu input :

cin >> a >> b;

Equivalen dengan :

cin >> a; cin >> b;

Dalam hal ini data yang di input harus 2, satu untuk variabel a dan lainnya untuk variabel b

yang penulisannya dipisahkan dengan : spasi, tabular atau newline.

#include <iostream.h> #include <conio.h> int main () { int i; cout << "Please enter an integer value: "; cin >> i; cout << "The value you entered is " << i; cout << " and its double is " << i*2 ; cout << ".\n"; getch(); return 0; }

Page 38: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

30

Contoh :

scanf() Fungsi scanf() digunakan untuk memasukkan berbagai jenis data.

Bentuk Umum dari fungsi ini adalah :

Keterangan : simbol & merupakan pointer yang digunakan untuk menunjuk ke alamat variabel memori yang dituju.

Tabel 5.1. Penentu Format scanf()

TIPE DATA Penentu Format Untuk scanf()

Integer %d

Floating Point

Bentuk Desimal %e atau %f

scanf("penentu format", &nama-variabel);

# include <conio.h> # include <iostream.h> main() { float a, b, c; clrscr(); cout<<"Masukan Nilai A : "; cin>>a; cout<<"Masukan Nilai B : "; cin>>b; c = a + b; cout<<"Masukan Nilai C : "<<c<<endl; getch(); }

Page 39: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

31

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

Unsigned Octal Integer %o

Contoh :

gets() Fungsi gets() digunakan untuk memasukkan data string. Bentuk Umum dari fungsi ini adalah :

gets(nama-variabel-array);

# include <stdio.h> # include <conio.h> main() { int a, b, c = 0 ; clrscr(); printf("Masukan Nilai A = "); scanf("%d",&a); printf("Masukan Nilai B = "); scanf("%d",&b); c = a + b; printf("Hasil Penjumlahan = %d",c); getch() }

Page 40: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

32

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 spasi atau tab dan masing dianggap sebagai satu kesatuan data.

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

# include <stdio.h> # include <conio.h> main() { char nm1[20]; char nm2[20]; clrscr(); puts("Masukan nama ke - 1 = "); gets(nm1); printf("Masukan nama ke - 2 = "); scanf("%s",&nm2); printf("\n\n"); puts("Suka ketemu dg Anda ..");

puts(nm1); printf("Suka ketemu dg Anda ..%s", nm1); puts("Suka ketemu dg Anda .."); puts(nm1); printf("\n\n"); puts("Suka ketemu dg Anda .."); puts(nm2); printf("Suka ketemu dg Anda ..%s", nm2); }

Page 41: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

33

contoh :

getche() Fungsi getche() dipakai untuk membaca sebuah karakter dengan sifat karakter yang dimasukkan tidak perlu diakhiri dengan menekan tombol ENTER, dan karakter yang dimasukan ditampilkan di layar. File header yang harus disertakan adalah conio.h.

contoh :

Selain itu kedua fungsi ini dapat digunakan untuk menahan agar tidak langsung balik kembali kedalam listing program dan hasil dari program yang di eksekusi dapat dilihat tanpa menekan tombol ALT – F5. Karena fungsi getch() merupakan fungsi masukkan, jadi sebelum program keluar harus menginputkan satu buah karakter.

# include <stdio.h> # include <conio.h> main() { char kar; clrscr(); printf("Masukan Sebuah Karakter = "); kar = getch(); printf("\nAnda Memasukan %c", kar); getch(); }

# include <stdio.h> # include <conio.h> main() { char kar; clrscr(); printf("Masukan Sebuah Karakter = "); kar = getche(); printf("\nAnda Memasukan %c", kar); getch (); }

Page 42: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

34

Pelaksanaan Praktikum

1. Cobalah contoh-contoh program pada bab ini !

Latihan

1. Buatlah program untuk menghitung gaji karyawan, jika inputan datanya terdiri dari NIK, nama karyawan, pendidikan, jenis kelamin, agama, tanggal lahir, pendidikan, gaji pokok, tunjangan keluarga, tunjangan jabatan, tunjangan transport. Untuk total gaji ditampilkan dengan perhitungan (gaji pokok + tunjangan keluarga + tunjangan jabatan + tunjangan transport) !

Page 43: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

35

PPeerrtteemmuuaann 44

Pokok Bahasan

1. Operator Dasar C++

Tujuan Pembelajaran

1. Mahasiswa mengenal berbagai operator Dasar C++ 2. Mahasiswa dapat menggunakan beberapa jenis operator dalam penyusunan program

Kompetensi Prasyarat

1. Mahasiswa telah mengenal dan dapat menggunakan tipe data dengan benar 2. Mahasiswa dapat menggunakan perintah masukan dan keluaran.

Instruksi Khusus

1. Mahasiswa menggunakan pemrograman C++ untuk membuat program dengan tahapan yang benar.

2. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Operator-operator yang disediakan C++ berupa keyword atau karakter khusus. Operator merupakan intruksi khusus yang dikenai untuk variable.

Operator Assignation (=) Operator assignation digunakan untuk memberikan nilai ke suatu variable. Memberikan nilai integer 25 ke variabel a. Sisi kiri dari operator disebut lvalue (left value) dan sisi kanan disebut rvalue (right value). lvalue harus selalu berupa variabel dan sisi kanan dapat berupa konstanta, variabel, hasil dari suatu operasi atau kombinasi dari semuanya.

Contoh :

int a, b; // a:? b:? a = 10; // a:10 b:? b = 4; // a:10 b:4

Hasil dari contoh diatas, a bernilai 10 dan b bernilai 4.

Contoh :

a = 2 + (b = 5);

a = 25;

Page 44: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

36

equivalen dengan : b = 5; a = 2 + b;

contoh kode program :

Operator Arithmetic ( +, -, *, /, % ) Bahasa C++ mengenal beberapa operator aritmatik berikut ini :

Operator Fungsi

+ addition

- subtraction

* multiplication

/ division

% modulo

contoh :

NilaiAkhir = ( NilaiUTS + NilaiUAS ) / 2;

// assignment operator #include <iostream.h> #include <conio.h> int main () { int a, b; // a:?, b:? a = 10; // a:10, b:? b = 4; // a:10, b:4 a = b; // a:4, b:4 b = 7; // a:4, b:7 cout << "a = " << a; cout << endl; cout << "b = " << b; getch(); return 0; }

Page 45: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

37

Operator Compound Assignation (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

Bahasa C++ mengenal beberapa operator Compound assignation berikut ini :

(+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)

contoh penggunaan :

expressionis equivalent to

value += increase; value = value + increase;

a -= 5; a = a - 5;

a /= b; a = a / b;

price *= units + 1; price = price * (units + 1);

contoh program :

Operator Increase (++) and decrease (--) Operator increase (++) digunakan untuk penambahan dan decrease(--) digunakan untuk pengurangan.

contoh nilai a ditambah 1 :

#include <iostream.h> #include <conio.h> int main () { int a, b=3; a = b; a += 2; // equivalent to a=a+2 cout << a; getch(); return 0; }

a++; a+=1; a=a+1;

Page 46: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

38

contoh Nilai a dikurangi 1.

contoh diatas adalah equivalen secara fungsional.

Operator Increase dan Decrease dapat digunakan sebagai prefix atau suffix. Dengan kata lain dapat dituliskan sebelum identifier variabel (++a) atau sesudahnya (a++). operator increase

yang digunakan sebagai prefix (++a), Perbedaannya terlihat pada tabel dibawah ini :

contoh 1 contoh 2

B = 3; B = 3;

A = ++B; A = B++;

// A is 4, B is 4 // A is 3, B is 4

Pada contoh 1, B ditambahkan sebelum nilainya diberikan ke A. Sedangkan contoh 2, Nilai B

diberikan terlebih dahulu ke A dan B ditambahkan kemudian.

Operator Relational (==, !=, >, <, >=, <=) Untuk mengevaluasi antara 2 ekspresi, dapat digunakan operator Relasional. Hasil dari operator ini adalah nilai bool yaitu hanya berupa true atau false, atau dapat juga dalam nilai

int, 0 untuk mereprensentasikan "false" dan 1 untuk merepresentasikan "true".

Operator-operator relasional pada C++ :

Operator Fungsi

== Equal to

!= Not equal to

> Greater than

< Less than

>= Greater than or equal to

<= Less than or equal to

a--; a-=1; a=a-1;

Page 47: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

39

contoh :

contoh, misalkan a=2, b=3 dan c=6 :

operasi keterangan

(a == 5) would return false.

(a*b >= c) would return true since (2*3 >= 6) is it.

(b+4 > a*c) would return false since (3+4 > 2*6) is it.

((b=2) == a) would return true.

contoh program :

(7 == 5) // evaluates to false. (5 > 4) // evaluates to true. (3 != 2) // evaluates to true. (6 >= 6) // evaluates to true. (5 < 5) // evaluates to false.

#include <iostream.h> #include <conio.h> int main () { int a = 2, b=3, c =6; cout << (a == 5) << endl; cout << (a*b >= c) << endl; cout << (b+4 > a*c) << endl; cout << ((b=2) == a) << endl; getch(); return 0; }

Page 48: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

40

Operator Logika ( !, &&, || ) Operator ! equivalen dengan operasi boolean NOT, hanya mempunyai 1 operand, berguna untuk membalikkan nilai dari operand yang bersangkutan. Contoh :

operator Logika && dan || digunakan untuk mengevaluasi 2 ekspresi dan menghasilkan 1 nilai akhir. mempunyai arti yang sama dengan operator logika Boolean AND dan OR.

First Second result result

Operand Operand a && b a || b

a b

TRUE TRUE TRUE TRUE

TRUE FALSE FALSE TRUE

FALSE TRUE FALSE TRUE

FALSE FALSE FALSE FALSE

contoh :

Operator Conditional ( ? ) Operator kondisional mengevaluasi ekspresi dan memberikan hasil tergantung dari hasil evaluasi (true atau false). Sintaks :

!(5 == 5) // evaluates to false because the expression at its right (5 == 5) is true.

!(6 <= 4) // evaluates to true because (6 <= 4) would be false.

!true // evaluates to false !false // evaluates to true.

// evaluates to false ( true && false ). ( (5 == 5) && (3 > 6) ) // evaluates to true ( true || false ). ( (5 == 5) || (3 > 6) )

condition ? result1 : result2

Page 49: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

41

Jika kondisi true maka akan menghasilkan result1, jika tidak akan menghasilkan result2.

contoh :

contoh program :

Operator Bitwise (&, |, ^, ~, <<, >> ) Operator Bitwise memodifikasi variabel menurut bit yang merepresentasikan nilai yang disimpan, atau dengan kata lain dalam representasi binary.

operator

asm equivalent

description

& AND Bitwise AND

| OR Bitwise Inclusive OR

^ XOR Bitwise Exclusive OR

~ NOT Unary complement (bit inversion)

<< SHL Shift Left

>> SHR Shift Right

7==5 ? 4 : 3 // returns 3, since 7 is not equal to 5.

7==5+2 ? 4 : 3 // returns 4, since 7 is equal to 5+2.

5>3 ? a : b // returns the value of a, since 5 is greater than 3.

a>b ? a : b // returns whichever is greater, a or b.

#include <iostream.h> #include <conio.h> int main () { int a,b,c; a=2; b=7; c = (a > b) ? a : b; cout << c; getch(); return 0; }

Page 50: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

42

Explicit type casting operators Type casting operators memungkinkan untuk mengkonversikan tipe data yang sudah diberikan ke tipe data yang lain. Ada beberapa cara yang dapat dilakukan dalam C++, yang paling popular yaitu tipe baru dituliskan dalam tanda kurung ().

contoh:

Contoh diatas, mengkonversikan nilai 3.14 menjadi nilai integer (3). Type casting operator

yang digunakan (int).

cara lainnya :

Prioritas pada operator Operator dalam suatu notasi akan diproses sesuai dengan urutan derajat dari masing-masing operator.

contoh : a = 5 + 7 % 2

Jawaban dari contoh diatas adalah 6.

Dibawah ini adalah prioritas operator dari tinggi ke rendah : Level Operator Description Grouping

1 :: scope Left-to-right

2 () [] . -> ++ -- postfix Left-to-right

3 ++ -- ~ ! unary (prefix) Right-to-left

* & pointer

+ - unary sign operator

4 (type) type casting Right-to-left

5 .* ->* pointer-to-member Left-to-right

int i; float f = 3.14; i = (int) f;

int i; float f = 3.14; i = int ( f );

Page 51: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

43

6 * / % multiplicative Left-to-right

7 + - additive Left-to-right

8 << >> shift Left-to-right

9 < > <= >= relational Left-to-right

10 == != equality Left-to-right

11 & bitwise AND Left-to-right

12 ^ bitwise XOR Left-to-right

13 | bitwise OR Left-to-right

14 && logical AND Left-to-right

15 || logical OR Left-to-right

16 ?: conditional Right-to-left

17 = *= /= %= += -= >>= <<= &= ^= |= assignment Right-to-left

18 , comma Left-to-right

contoh program :

#include <iostream.h> #include <conio.h> int main () { int a = 5, b = 6, c = 7, d = 10; int hasil1, hasil2; float hasil3, hasil4, hasil5; hasil1 = a + b * c; hasil2 = a + b * c - d; hasil3 = a / b + c * d; hasil4 = ( a + b ) / c * d; hasil5 = a * b / c + d; cout << hasil1 << "\t"; cout << hasil2 << "\t"; cout << hasil3 << "\t"; cout << hasil4 << "\t"; cout << hasil5 << "\t"; getch(); return 0; }

Page 52: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

44

Pelaksanaan Praktikum

1. Cobalah contoh program pada bab ini ! 2. Buatlah program untuk menghitung luas segitiga !

Latihan

1. Buatlah program berikut ini ! Output Program yang dihasilkan :

#include <iostream.h> #include <conio.h> void main () { int sewa; int jarak, hargabbm; int tempuhlt, total; float butuhbbm; cout << "Perhitungan Biaya Perjalanan \n"; cout << "====================================== \n"; cout << "1. Harga sewa per hari : "; cin >> sewa; cout << "2. Jarak Tujuan : "; cin >> jarak; cout << "3. Harga bbm perliter : "; cin >> hargabbm; cout << "4. Konsumsi BBM per liter : "; cin >> tempuhlt; //lakukan perhitungan............................... butuhbbm = jarak / tempuhlt; total = sewa + int(butuhbbm) * hargabbm; cout << " BBM dibutuhkan : " << butuhbbm << endl; cout << "====================================== \n"; cout << "Perkiraan Total Biaya : " << total << endl; getch(); }

Page 53: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

45

PPeerrtteemmuuaann 55

Pokok Bahasan

1. Struktur Program Sederhana 2. Struktur Program Pilihan

Tujuan Pembelajaran

1. Mahasiswa mengenal struktur program sederhana / struktur urut. 2. Mahasiswa dapat membuat program dimana didalamnya terdapat struktur pilihan.

Kompetensi Prasyarat

1. Mahasiswa telah mempraktekkan bab-bab sebelumnya. 2. Mahasiswa dapat menguasai tipe data, variable, operator, perintah input dan output.

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Pernyataan Percabangan digunakan untuk memecahkan persoalan untuk mengambil suatu keputusan diantara sekian pernyataan yang ada. Untuk keperluan pengambilan keputusan, Borland C++ menyediakan beberapa perintah antara lain.

Pernyataan IF

Pernyataan if mempunyai pengertian, “ Jika kondisi bernilai benar, maka perintah akan dikerjakan dan jika tidak memenuhi syarat maka akan diabaikan”. Dari pengertian tersebut dapat dilihat dari diagram alir berikut:

Gambar 6.1. Diagram Alir IF

kondisi

perintah

salah

benar

Page 54: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

46

Bentuk umum dari pernyataan if adalah sebagai berikut :

Penulisan kondisi harus didalam tanda kurung dan berupa ekspresi relasi dan penulisan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Jika pemakaian if diikuti dengan pernyataan majemuk, bentuk penulisannya sebagai berikut :

Contoh :

Menentukan besarnya potongan dari pembelian barang yang diberikan seorang pembeli, dengan kriteria :

Tidak ada potongan jika total pembelian kurang dari Rp. 50.000,- Jika total pembelian lebih dari atau sama dengan Rp. 50.000,- potongan yang diterima

sebesar 20% dari total pembelian.

Contoh : Program IF -

if (kondisi) pernyataan;

if (kondisi) { pernyataan; …… }

#include<conio.h> #include<iostream.h> main() { double tot_beli, potongan=0, jum_bayar=0; clrscr(); cout<<"Total Pembelian Rp. "; cin>>tot_beli;

Page 55: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

47

contoh :

Buatlah sebuah program menuliskan teks “Semarang Kota Atlas” jika diinput sebuah bilangan ganjil.

Kode Program :

#include <stdio.h> #include <conio.h> int main(int argc, char* argv[]) {

int x; printf("Masukkan sebuah bilangan = "); scanf("%d",&x); if(x%2 != 0) { printf("Semarang Kota Atlas"); } getch(); return 0;

}

if (tot_beli >= 50000) potongan = 0.2 * tot_beli; cout>>" Potongan Rp. " <<potongan<<endl; jum_bayar = tot_beli - potongan; cout>>"Jumlah harus dibayar Rp. ",jum_bayar; getch(); }

Page 56: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

48

Pernyataan IF - ELSE Pernyataan if mempunyai pengertian, “ Jika kondisi bernilai benar, maka perintah-1 akan dikerjakan dan jika tidak memenuhi syarat maka akan mengerjakan perintah-2”. Dari pengertian tersebut dapat dilihat dari diagram alir berikut :

salah benar

Gambar 6.2. Diagram Alir if-else

Bentuk umum dari pernyataan if

Perintah-1 dan perintah-2 dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Jika pemakaian if-else diikuti dengan pernyataan majemuk, bentuk penulisannya sebagai berikut : Bentuk umum dari pernyataan if dengan banyak perintah

if (kondisi) perintah-1; else perintah-2;

kondisi

Perintah-1 Perintah-2

Page 57: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

49

if (kondisi) { perintah1; ... } else { perintah2; ... }

Contoh

Menentukan besarnya potongan dari pembelian barang yang diberikan seorang pembeli, dengan kriteria :

jika total pembelian kurang dari Rp. 50.000,- potongan yang diterima sebesar 5% dari total pembelian.

Jika total pembelian lebih dari atau sama dengan Rp. 50.000,- potongan yang diterima sebesar 20% dari total pembelian.

Contoh : Program IF-Else

#include<conio.h> #include<iostream.h> main() { double tot_beli, potongan=0, jum_bayar=0; clrscr(); cout<<"Total Pembelian Rp. "; cin>>tot_beli; if (tot_beli >= 50000) potongan = 0.2 * tot_beli; else potongan = 0.05 * tot_beli;

cout>>" Potongan Rp. "<<potongan<<endl; jum_bayar = tot_beli - potongan; cout>>"Jumlah harus bayar Rp. ",jum_bayar; getch(); }

Page 58: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

50

Pernyataan NESTED IF

Nested if merupakan pernyataan if berada didalam pernyataan if yang lainnya. Bentuk penulisan pernyataan Nested if adalah : Contoh : Suatu perusahaan memberikan komisi kepada para selesman dengan ketentuan sebagai berikut: Bila salesman dapat menjual barang hingga Rp. 200.000 ,- , akan diberikan uang jasa sebesar

Rp. 10.000 ditambah dengan uang komisi Rp. 10% dari pendapatan yang diperoleh hari itu. Bila salesman dapat menjual barang diatas Rp. 200.000 ,- , akan diberikan uang jasa sebesar

Rp. 20.000 ditambah dengan uang komisi Rp. 15% dari pendapatan yang diperoleh hari itu. Bila salesman dapat menjual barang diatas Rp. 500.000 ,- , akan diberikan uang jasa sebesar

Rp. 30.000 ditambah dengan uang komisi Rp. 20% dari pendapatan yang diperoleh hari itu. Contoh : Program Nested-If

#include<conio.h> #include<iostream.h> main() { float pendptan, jasa=0, komisi=0, total=0; clrscr(); cout>>"Pendapatan Hari ini Rp. "; cin<pendptan; if ((pendptan >=0) && (pendptan <= 200000)) { jasa=10000; komisi=0.1*pendptan; } else { if(pendptan<=500000) { jasa=20000; komisi=0.15*pendptan; }

if(syarat) if(syarat) … perintah; else … perintah;

else if(syarat) … perintah; else … perintah;

Page 59: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

51

Pernyataan IF – ELSE Majemuk

Bentuk dari if-else bertingkat sebenarnya serupa dengan nested if, keuntungan penggunanan if-else bertingkat dibanding dengan nested if adalah penggunaan bentuk penulisan yang lebih sederhana.

Bentuk Penulisannya

Contoh : Suatu perusahaan memberikan komisi kepada para selesman dengan ketentuan sebagai berikut: Bila salesman dapat menjual barang hingga Rp. 200.000 ,- , akan diberikan uang jasa sebesar

Rp. 10.000 ditambah dengan uang komisi Rp. 10% dari pendapatan yang diperoleh hari itu. Bila salesman dapat menjual barang diatas Rp. 200.000 ,- , akan diberikan uang jasa sebesar

Rp. 20.000 ditambah dengan uang komisi Rp. 15% dari pendapatan yang diperoleh hari itu. Bila salesman dapat menjual barang diatas Rp. 500.000 ,- , akan diberikan uang jasa sebesar

Rp. 30.000 ditambah dengan uang komisi Rp. 20% dari pendapatan yang diperoleh hari itu.

if (syarat) { … perintah; … perintah; } else if (syarat) { … perintah; … perintah; } else { … perintah; … perintah; }

else { jasa=30000; komisi=0.2*pendptan; } } total = komisi + jasa; cout<<"Uang Jasa Rp. "<<jasa<<endl; cout<<"Uang Komisi Rp. "<<komisi<<endl; cout<<"==========================="<<endl; cout<<"Hasil Total Rp. "<<total<<endl; getch(); }

Page 60: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

52

contoh : Program IF-Else-IF

Pernyataan switch - case

Bentuk dari switch - case merupakan pernyataan yang dirancangan khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah atau banyak alternatif penyelesaian. Pernyataan switch - case ini memiliki kegunaan sama seperti if – else bertingkat, tetapi penggunaannya untuk memeriksa data yang bertipe karakter atau integer.

Bentuk penulisan perintah ini sebagai berikut :

switch (ekspresi integer atau karakter ) { case konstanta-1 : //perintah; //perintah; break; case konstanta-2 : //perintah; //perintah; break; …… …… default : //perintah; //perintah; }

#include<conio.h> #include<iostream.h> main() { float pendptan, jasa=0, komisi=0, total=0; clrscr(); cout>>"Pendapatan Rp. ";cin<pendptan; if (pendptan >= 0 && pendptan <= 200000) { jasa=10000; komisi=0.1*pendptan; } else if(pendptan<=500000) { jasa=20000; komisi=0.15*pendptan; } else { jasa=30000; komisi=0.2*pendptan; } /* menghitung total */ total = komisi + jasa; cout<<"Uang Jasa Rp. "<<jasa<<endl; cout<<"Uang Komisi Rp. "<<komisi<<endl; cout<<"==========================="<<endl; cout<<"Hasil Total Rp. "<<total<<endl; getch(); }

Page 61: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

53

Setiap cabang akan dijalankan jika syarat nilai konstanta tersebut dipenuhi dan default akan dijalankan jika semua cabang diatasnya tidak terpenuhi.

Pernyataan break menunjukan bahwa perintah siap keluar dari switch. Jika pernyataan ini tidak ada, maka program akan diteruskan ke cabang – cabang yang lainnya.

contoh : Program Switch ... Case

#include<conio.h> #include<iostream.h> main() { char kode; clrscr(); cout<<"Masukkan Kode Barang [A..C] : "; cin>>kode; switch(kode) { case 'A' : cout<<"Alat Olah Raga"; break; case 'B' : cout<<"Alat Elelktronik"; break; case 'C' : cout<<"Alat Masak"; break; default: cout<<" Salah Memasukan kode"; break; } getch(); }

switch (ekspresi integer atau karakter ) { case konstanta-1 : perintah; perintah; break; case konstanta-2 : perintah; perintah; break; …… …… default : perintah; perintah; }

Page 62: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

54

contoh Program Switch ... Case

Pelaksanaan Praktikum

1. Buatlah program inputan nilai angka yang selanjutnya dikonversikan ke nilai huruf dengan ketentuan sebagai berikut :

Nilai Angka Nilai Huruf

85 s/d 100 A 70 s/d <85 B 60 s/d <70 C 45 s/d <60 D 0 s/d <45 E

2. Buatlah program untuk menentukan kelulusan seleksi pegawai, jika dilakukan dua ujian. Syarat lulus adalah sebagai berikut : a. Kedua nilai ujian minimal 85, atau b. Salah satu nilai ujian minimal 80 dan rata-ratanya minimal 90.

#include<conio.h> #include<iostream.h> main() { char kode; clrscr(); cout<<"Masukkan Kode Barang [A..C] : "; cin>>kode; switch(kode) { case 'A' : case 'a' : cout<<"Alat Olah Raga"; break; case 'B' : case 'b' : cout<<"Alat Elelktronik"; break; case 'C' : case 'c' : cout<<"Alat Masak"; break; default: cout<<"Anda Salah Memasukan kode"; break; } getch(); }

Page 63: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

55

Tugas Praktikum

1. Buatlah program untuk menghitung tunjangan anak, jika berlaku bahwa tunjangan anak

berikan kepada maksimal 3 orang anak masing-masing Rp 50.000,- . 2. Buatlah program untuk menghitung besarnya diskon jika berlaku ketentuan berdasarkan

pembelian sebagai berikut : Pembelian > 100000, maka diskon = 20% * pembelian 50000 s/d <100000, maka diskon = 15% * pembelian 20000 s/d <50000, maka diskon = 10% * pembelian

Page 64: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

56

Page 65: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

57

PPeerrtteemmuuaann 66

Pokok Bahasan

1. Struktur Program Berulang

Tujuan Pembelajaran

1. Mahasiswa mengenal struktur program perulangan 2. Mahasiswa dapat membuat program dengan menggunakan perintah perulangan

Kompetensi Prasyarat

1. Mahasiswa telah mempelajari perintah seleksi/kondisi 2. Mahasiswa dapat menggunakan operator relasi dengan benar.

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Loops merupakan perulangan statement dengan jumlah tertentu jika kondisi terpenuhi. Operasi perulangan selalu dijumpai didalam bahasa pemrograman.

Pernyataan while

Bentuk perulangan while dikendalikan oleh syarat tertentu, yaitu perulangan akan terus dilaksanakan selama syarat tersebut terpenuhi.

Bentuk umum perulangan while, sebagai berikut :

while (expression) statement;

Page 66: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

58

Bentuk umum perulangan while, dengan lebih dari satu perintah / pernyataan, sebagai berikut :

contoh :

contoh :

while (expression) {

statement1; statement2; …… statementn;

}

#include <iostream.h> #include <conio.h> main() { int bil = 1; clrscr(); while(bil <= 10) { cout << bil << endl; ++bil; } getch(); }

#include <iostream.h> #include <conio.h> main() { int bil = 2; clrscr(); while(bil <= 10) { cout << bil << endl; bil+=2; } getch(); }

Page 67: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

59

7.2 Pernyataan do - while Pernyataan perulangan do - while merupakan bentuk perulangan yang melaksanakan perulangan terlebih dahulu dan pengujian perulangan dilakukan dibelakang.

Bentuk umum perulangan do - while, sebagai berikut :

Bentuk umum perulangan do - while, dengan lebih dari satu perintah / pernyataan, sebagai berikut :

Secara fungsional, hampir sama dengan while loop, hanya saja condition dalam do-while

dievaluasi setelah eksekusi statement , dengan kata lain, sedikitnya satu kali eksekusi

statement walaupun kondisi tidak terpenuhi. contoh :

do statement while (condition);

do {

statement1; statement2; ….. statementn;

} while (condition);

#include <iostream.h> #include <conio.h> main() { int bil = 2; clrscr(); do { cout << bil << endl; bil += 2; } while (bil <= 10); getch(); }

Page 68: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

60

7.3 Pernyataan for Perulangan yang pertama adalah for. Bentuk umum pernyataan for sebagai berikut :

Fungsinya akan mengulang statement jika condition bernilai benar. Sama seperti while loop.,

hanya saja for memungkinkan untuk memberikan instruksi initialization dan intruksi increase, sehingga dapat menampilkan loop dengan counter.

Algoritma perulangan for : 1. initialization, digunakan untuk memberikan nilai awal untuk variable counter. Dieksekusi

hanya sekali. 2. condition, Dievaluasi, jika bernilai true maka loop berlanjut, sebaliknya loop berhenti dan

statement diabaikan 3. statement, dieksekusi, bisa berupa instruksi tunggal maupun blok instruksi (dalam tanda { }

). 4. increase, dieksekusi kemudian algoritma kembali ke step 2.

Bila pernyataan di dalam for lebih dari satu maka pernyataan-pernyataan tersebut harus diletakan di dalam tanda kurung.

Contoh :

Sebagai contoh program untuk mencetak bilangan dari 1 hingga 10 secara menaik, secara menurun dan menampilkan bilangan ganjil, sebagai berikut:

for ( initialization; condition; increase )

statement;

for ( initialization; condition; increase ) {

statement1; statement2;

….. statementn;

}

Page 69: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

61

contoh :

contoh :

contoh :

#include<conio.h> #include<iostream.h> main() { int a; clrscr(); for(a = 1; a <= 10; ++a) cout>>a; getch(); }

# include <stdio.h> # include <conio.h> #include<iostream.h> main() { int a; clrscr(); for(a = 10; a >= 1; --a) cout>>a; getch(); }

#include <stdio.h> #include <conio.h> #include<iostream.h> main() { int a; clrscr(); for(a = 1; a <= 10; a+=2) cout>>a; getch(); }

Page 70: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

62

contoh : contoh :

#include<stdio.h> #include<conio.h> main() { int a=2, b=1, c=2, d=1, e; clrscr(); for(e=1; 17>e; e++) { gotoxy(e, e); textcolor(e); cprintf("\nwarna ke-%d",e); } textcolor(4+BLINK); cprintf("Borland C++"); getche(); }

#include<stdio.h> #include<conio.h> int main(void) { int i; clrscr(); for (i=0; i<20; i++) { textattr(i + ((i+1) << 4)); cprintf("Borland C++\r\n"); } getch(); return 0; }

Page 71: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

63

Pernyataan nested - for

Pernyataaan Nested for adalah suatu perulangan for didalam perulangan for yang lainnya. Bentuk umum pernyataan Nested for sebagai berikut :

Didalam penggunaan nested-for, perulangan yang didalam terlebih dahulu dihitung hingga selesai, kemudian perulangan yang diluar diselesaikan.

Perulangan Tidak Berhingga

Perulangan tak berhingga merupakan perulangan ( loop ) yang tak pernah berhenti atau mengulang terus, hal ini sering terjadi disebabkan adanya kesalahan penanganan kondisi yang dipakai untuk keluar dari loop.

for (initialization_a; condition_a; increase_a) {

for ( initialization; condition; increase ) {

statement1; statementn;

} }

#include<stdio.h> #include<conio.h> main() { int a, b; clrscr(); for(a = 1; a <= 5; a++) { printf("\n"); for(b = a; b <= 5; b++) printf(" %d ",a); } getch(); }

#include<stdio.h> #include<conio.h> main() { int bil; clrscr(); for (bil = 60; bil >=10; bil++) printf("%d", bil); getch(); }

Page 72: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

64

Pada pernyataan ini tidak akan berhenti untuk menampilkan bilangan menurun, kesalahan terjadi pada pengubah nilai pencacah, seharusnya penulisan yang benar berupa

bil –

Akan tetapi yang ditulis adalah :

bil ++

Oleh karena kondisi bil >= 1 selalu bernilai benar ( karena bil bernilai 6), maka pernyataan akan terus dijalankan.

printf("%d", bil);

Jika terjadi hal semacam ini, untuk menghentikan proses yang terus menerus semacam ini denan menekan tombol CTRL – PAUSE atau CTRL – BREAK.

Pernyataan goto

Pernyataan goto merupakan instruksi untuk mengarahkan eksekusi program ke-pernyataan yang diawali dengan suatu label. Label merupakan suatu pengenal (identifier) yang diikuti dengan tanda titik dua ( : ).

Bentuk pemakaian goto sebagai berikut :

goto label;

Contoh Penggunaan goto, dapat dilihat pada program berikut :

#include<iostream.h> #include<stdio.h> #include<conio.h> main() { int a, b; char lagi; atas: clrscr(); cout>>"Masukkan Bilangan = "; cin<<a; b = a % 2; printf("Nilai %d %% 2 adalah = %d",a, b); printf("\n\nIngin Hitung Lagi [Y/T] : "); lagi = getche() ; if (lagi == 'Y' || lagi == 'y') goto atas; getch(); }

Page 73: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

65

Pernyataan break

Pernyataan break telah dibahas pada pernyataan pengambilan keputusan switch. Pernyataan break ini berfungsi untuk keluar dari struktur switch. Selain itu pernyataan break berfungsi keluar dari perulangan ( for, while dan do-while ). Jika pernyataan break dikerjakan, maka eksekusi akan dilanjutkan ke pernyataan yang terletak sesudah akhir dari badan perulangan ( loop ).

Contoh :

#include <stdio.h> #include <conio.h> main() { int a=3, b=2, c=1, bil; clrscr(); printf("Bil-A | Bil-B | Bil-C\n"); printf("-------------------------"); for(bil=1; bil<=10; ++bil) { a+=b; b+=c; c+=2; printf("\n%d \t| %d \t| %d",a, b, c); if(c==13) break; } getche(); }

#include <iostream.h> #include <conio.h> main() { int bil = 1; clrscr(); do { if (bil >= 6) break; cout << bil << endl; } while( bil++ ); getch(); }

Page 74: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

66

Pernyataan continue

Pernyataan continue digunakan untuk mengarahkan eksekusi ke iterasi (proses) berikutnya pada loop yang sama, dengan kata lain mengembalikan proses yang sedang dilaksanakan ke-awal loop lagi, tanpa menjalankan sisa perintah dalam loop tersebut.

Contoh :

Pelaksanaan Praktikum

1. Cobalah contoh program yang ada pada bab ini

Latihan

1. Buatlah program untuk mencetak urutan bilangan genap dari 0 sampai dengan 100 secara ascending dengan menggunakan perintah perulangan while.

2. Buatlah program untuk mencetak urutan bilangan ganjil dari 1 sampai dengan 99 secara

ascending dengan menggunakan perintah perulangan do...while.

#include <iostream.h> #include <conio.h> main() { int bil; clrscr(); for(bil=1; bil<=10; ++bil) { if (bil == 6) continue; cout << bil << endl; } getch(); }

Page 75: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

67

PPeerrtteemmuuaann 77

Pokok Bahasan

1. Array

Tujuan Pembelajaran

1. Mahasiswa mengenal tipe data Array 2. Mahasiswa dapat menggunakan Array

Kompetensi Prasyarat

1. Mahasiswa telah mengenal identifier 2. Mahasiswa telah menguasai perintah input dan perintah perulangan

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Variabel Larik atau lebih dikenal dengan ARRAY adalah adalah Tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Suatu Array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu larik ditunjukan oleh suatu indek untuk membedakan elemen yang satu dengan elemen yang lainnya.

Seperti penggunaan variable pada umumnya, array harus dideklarasikan terlebih dahulu, dengan format sbb :

Keterangan : type : Untuk menyatakan type data yang digunakan. Name : untuk menyatakan nama variabel array. elements : Untuk menyatakan jumlah elemen array.

contoh array diatas dideklarasikan sebagai berikut :

int billy [5];

type name [elements];

Page 76: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

68

Inisialisasi array Ketika mendeklarasikan array lokal (didalam fungsi), jika tidak diberikan nilai maka isi dari array tidak akan ditentukan (undetermined) sampai nilai diberikan. Jika mendeklarasikan array global array (diluar semua fungsi) maka isi dari array akan di-iniisialisasikan sebagai o :

int billy [5];

maka setiap elemen array billy akan di-inisialisasikan sebagai 0 :

Atau dideklarasikan dengan memberikan nilai array yang dituliskan dalam kurung kurawal :

int billy [5] = { 16, 2, 77, 40, 12071 };

Maka elemen array billy akan berisi :

Access to the values of an Array. Nilai array dapat diakses secara individual, dengan format :

Maka dari contoh sebelumnya nama yang digunakan untuk mengakses masing-masing elemen:

Misalkan akan disimpan nilai 75 pada elemen ketiga, maka intruksinya :

billy[2] = 75;

Dan jika nilai elemen ketiga tadi akan diberikan ke variable a, maka dapat dituliskan:

a = billy[2];

name[ index ]

Page 77: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

69

contoh : contoh program :

#include<conio.h> #include<iostream.h> #include<iomanip.h> main() { int i; char nama[5][20]; float nilai1[5]; float nilai2[5]; float hasil[5]; clrscr(); for(i=1;i<=2;i++) { cout<<"Data Ke - "<<i<<endl; cout<<"Nama Siswa : "; gets(nama[i]); cout<<"Nilai Teori : "; cin>>nilai1[i]; cout<<"Nilai Praktek : "; cin>>nilai2[i]; hasil[i] = (nilai1[i] * 0.40)+ (nilai2[i] * 0.60); cout<<endl; } cout<<"=================================="<<endl; cout<<"No. Nama Nilai Nilai Hasil"<<endl; cout<<" Mid Tes FInal Ujian"<<endl; cout<<"========================================"; cout<<endl; for(i=1;i<=2;i++) { cout<<setiosflags(ios::left)<<setw(4)<<i; cout<<setiosflags(ios::left) <<setw(20)<<nama[i];

#include <iostream.h> #include <conio.h> int billy [] = {16, 2, 77, 40, 12071}; int n, result=0; int main () { for ( n=0 ; n<5 ; n++ ) { result += billy[n]; } cout << result; getch(); return 0; }

Page 78: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

70

cout<<setprecision(2)<<" "<<nilai1[i]; cout<<setprecision(2)<<" "<<nilai2[i]; cout<<setprecision(2)<<" "<<hasil[i]; cout<<endl; } cout<<"========================================"; getch(); } Array Multidimensi Array Multidimensi dapat dikatakan sebagai array dari array. Contoh dibawah ini adalah array berdimensi 2 :

Maka pendeklarasiannya :

int jimmy [3][5];

contoh :

#include <iostream.h> #include <conio.h> #define WIDTH 5 #define HEIGHT 3 int jimmy [HEIGHT][WIDTH]; int n,m; int main () { for (n=0;n<HEIGHT;n++) for (m=0;m<WIDTH;m++) { jimmy[n][m]=(n+1)*(m+1); } getch(); return 0; }

Page 79: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

71

Program diatas tidak akan menghasilkan tampilan, tetapi akan menyimpan nilai dalam memory seperti dibawah ini :

Penggunaan konstanta defined (#define) untuk mempermudah jika akan melakukan

perubahan.

Contoh : #include<conio.h> #include<iostream.h> #include<stdio.h> #include<iomanip.h> void main() { int i, j; int data_jual[4][4]; clrscr(); for(i=1;i<=3;i++) { for(j=1;j<=3;j++) { cout<<"Data Ke - "<<i<<" "<<j<<endl; cout<<"Jumlah Penjulan : "; cin>>data_jual[i][j]; } } cout<<"Data Penjualan Pertahun"<<endl; cout<<"-----------------------"<<endl; cout<<"NO 2008 2009 2010"<<endl; cout<<"-----------------------"<<endl; for(i=1;i<=3;i++) { cout<<setiosflags(ios::left)<<setw(5)<<i; for(j=1;j<=3;j++) { cout<<setiosflags(ios::right)<<setw(4); cout<<data_jual[i][j]; cout<<" "; } cout<<endl; } cout<<"-----------------------"<<endl; getch(); }

Page 80: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

72

Array sebagai parameter Adakalanya array diberikan ke dalam fungsi sebagai parameter. Dalam C++ tidak memungkinkan untuk pass by value satu blok memory sebagai parameter kedalam suatu fungsi. Untuk menggunakan array sebagai parameter maka yang harus dilakukan saat pendeklarasian fungsi adalah spesifikasi tipe array pada argumen, Contoh :

Contoh :

Dari contoh diatas, instruksi (int arg[]) menjelaskan bahwa semua array bertipe int, berapapun

panjangnya. oleh sebab itu dideklarasikan parameter kedua dengan sifat yang sama seperti parameter pertama.

Pelaksanaan Praktikum

1. Praktekkan contoh-contoh program yang ada pada bab ini !

Latihan

1. Apa perbedaan dari ekspresi a45 dan a[45] ?

2. Tuliskan kesalahan dari bagian program berikut :

nt A[10], i; for ( i = 1; j <= 10; i++) cin >> A[i];

void procedure (int arg[])

#include <iostream.h> #include <conio.h> void printarray (int arg[], int length) { for (int n=0; n<length; n++) cout << arg[n] << " "; cout << "\n"; } int main () { int firstarray[] = {5, 10, 15}; int secondarray[] = {2, 4, 6, 8, 10}; printarray (firstarray,3); printarray (secondarray,5); getch() return 0; }

Page 81: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

73

PPeerrtteemmuuaann 88

Pokok Bahasan

1. Data Struktur (Struct)

Tujuan Pembelajaran

1. Mahasiswa mengenal bentuk pendefinisan record data dalam C++ 2. Mahasiswa dapat menggunakan perintah struct untuk mendefinisikan record dalam

penyusunan program

Kompetensi Prasyarat

1. Mahasiswa telah mengenal tipe data array 2. Mahasiswa telah mengasai perintah input, output, dan perulangan.

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Struktur data merupakan kumpulan berbagai tipe data yang memiliki ukuran yang berbeda di kelompokkan dalam satu deklarasi unik, dengan format sebagai berikut :

Keterangan : model_name adalah nama untuk model tipe stukturnya parameter optional object_name merupakan identifier yang valid untuk objek sturktur. kurung kurawal { } berupa tipe dan sub-identifier yang mengacu ke elemen pembentuk

struktur.

Jika pendefinisian stuktur menyertakan parameter object_name (optional), maka parameter

tersebut akan menjadi nama tipe yang valid ekuivalen dengan struktur.

struct model_name { type1 element1; type2 element2; type3 element3; . . } object_name;

Page 82: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

74

Contoh :

Didefinisikan model struktur products dengan dua field : name dan price, dengan tipe yang

berbeda. Kemudian tipe struktur tadi (products) digunakan untuk mendeklarasikan tiga objek :

apple, orange dan melon.

Ketika dideklarasikan, products menjadi tnama tipe yang valid seperti tipe dasar int, char atau

short dan dapat mendeklarasikan objects (variables) dari tipe tersebut. Optional field yaitu object_name dapat dituliskan pada akhir deklarasi struktur untuk secara langsung

mendeklarasikan object dari tipe struktur.

contoh :

Sangat penting untuk membedakan antara structure model, dan structure object. model adalah type, dan object adalah variable. Kita dapat membuat banyak objects (variables) dari satu model (type).

Contoh :

struct products { char name [30]; float price; } ; products apple; products orange, melon;

struct products { char name [30]; float price; } apple, orange, melon;

#include <iostream.h> #include <string.h> #include <sstream.h> struct movies_t { string title; int year; } mine, yours; void printmovie (movies_t movie);

Page 83: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

75

Contoh di atas menjelaskan bagaimana menggunakan elemen dari struktur dan struktur itu sendiri sebagai variable normal. Contoh, yours.year merupakan variable valid dengan tipe int,

dan mine.title merupakan array valid dari 50 chars.

Perhatikan mine dan yours juga berlaku sebagai valid variable dari tipe movies_t ketika di-pass

ke-function printmovie(). Salah satu keuntungan dari structures yaitu kita dapat mengacu pada

setiap elemennya atau keseluruhan blok struktur.

int main () { string mystr; mine.title = "2001 A Space Odyssey"; mine.year = 1968; cout << "Enter title: "; getline (cin,yours.title); cout << "Enter year: "; getline (cin,mystr); stringstream(mystr) >> yours.year; cout << "My favorite movie is:\n "; printmovie (mine); cout << "And yours is:\n "; printmovie (yours); return 0; } void printmovie (movies_t movie) { cout << movie.title; cout << " (" << movie.year << ")\n"; }

Page 84: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

76

contoh program :

#include<conio.h> #include<iostream.h> main() { struct { char nim[5]; char nama[15]; float nilai; } mahasiswa; clrscr(); cout<<"masukan NIM = "; cin>>mahasiswa.nim; cout<<"masukan Nama = "; cin>>mahasiswa.nama; cout<<"masukan Nilai = "; cin>>mahasiswa.nilai; clrscr(); cout<<"NIM = " << mahasiswa.nim <<endl; cout<<"Nama = " << mahasiswa.nama <<endl; cout<<"Nilai = " << mahasiswa.nilai <<endl; getch(); }

contoh program : #include<conio.h> #include<iostream.h> main() { struct smhs { char nim[5]; char nama[15]; float nilai; }; smhs mahasiswa; clrscr(); cout<<"masukan NIM = "; cin>>mahasiswa.nim; cout<<"masukan Nama = "; cin>>mahasiswa.nama; cout<<"masukan Nilai = "; cin>>mahasiswa.nilai; clrscr(); cout<<"NIM = " << mahasiswa.nim <<endl; cout<<"Nama = " << mahasiswa.nama <<endl; cout<<"Nilai = " << mahasiswa.nilai <<endl; getch(); }

Page 85: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

77

contoh strut dengan array :

#include <conio.h> #include <iostream.h> #include <iomanip.h> main() { struct smhs { char nim[5]; char nama[15]; float nilai; }; smhs mahasiswa[5]; int a = 0; clrscr(); do { cout << "Data pada index ke - " << a << endl; cout << "=====================" << endl; cout << "masukan NIM = "; cin>>mahasiswa[a].nim; cout << "masukan Nama = "; cin>>mahasiswa[a].nama; cout << "masukan Nilai = "; cin>>mahasiswa[a].nilai; cout << endl; a++; }while( a < 5 ); clrscr(); //cetak judul.......................... clrscr(); cout << " NIM Nama Nilai " << endl; cout << "============================" << endl; for (int b=0; b<5; b++) { cout << setw (7) << mahasiswa[b].nim; cout << setw (22) << mahasiswa[b].nama; cout << setw (5) << mahasiswa[b].nilai<<endl; } getch(); }

Page 86: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

78

Pelaksanaan Praktikum

1. Praktekkan contoh program yang ada pada bab ini !

Tugas

1. Pada program struct yang dikombinasikan dengan array di atas, tambahkah nilai huruf yang dikonversikan dari nilai angka. Ketentuan konversi sesuai dengan bahasan struktur kendali pada bab sebelumnya !

Page 87: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

79

PPeerrtteemmuuaann 99

Pokok Bahasan

1. Fungsi 2. Variabel Lokal 3. Variabel Global

Tujuan Pembelajaran

1. Mahasiswa mengenal fungsi/procedure dalam program 2. Mahasiswa mengenal variable local dan variable global

Kompetensi Prasyarat

1. Mahasiswa telah memahami indentifier dan tipe data. 2. Mahasiswa telah memahami alur program.

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Function adalah satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program.

Pada intinya fungsi berguna untuk :

Mengurangi pengulangan penulisan program yang berulangan atau sama.

Program menjadi terstruktur, sehingga mudah dipahami dan dikembangkan.

Format dari function :

dimana : type, adalah tipe dari data yang akan dikembalikan/dihasilkan oleh function. name, adalah nama yang memungkinkan kita memanggil function. parameter (dispesifikasikan sesuai kebutuhan). Setiap parameter terdiri dari tipe data

diikuti identifier, seperti deklarasi variable (contoh, int x) dan berfungsi dalam function

type name ( parameter1, parameter2, ...) {

Statements; }

Page 88: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

80

seperti variable lainnya. Juga dapat melakukan passing parameters ke function itu ketika dipanggil. Parameter yang berbeda dipisahkan dengan koma.

statement, merupakan bagian badan suatu function. Dapat berupa instruksi tunggal maupun satu blok instruksi yang dituliskan diantara kurung kurawal {}.

contoh :

Program diatas, ketika dieksekusi akan mulai dari fungsi main. main function memulai dengan

deklarasi variabel z dengan tipe int. Setelah itu instruksi pemanggilan fungsi addition. Jika

diperhatikan, ada kesamaan antara sruktur pemanggilan dengan deklarasi fungsi itu sendiri, perhatikan contoh dibawah ini :

Instruksi pemanggilan dalam fungsi main untuk fungsi addition, memberikan 2 nilai : 5 dan 3 mengacu ke parameter int a dan int b yang dideklarasikan untuk fungsi addition.

Saat fungsi dipanggil dari main, kontrol program beralih dari fungsi main ke fungsi addition.

Nilai dari kedua parameter yang diberikan (5 dan 3) di-copy ke variable local ; int a dan int b.

Fungsi addition mendeklarasikan variable baru (int r;), kemudian ekspresi r=a+b;, yang berarti

r merupakan hasil penjumlahan dari a dan b, dimana a dan b bernilai 5 dan 3 sehingga hasil

akhirnya 8. perintah selanjutnya adalah :

return (r);

#include <iostream.h> #include <conio.h> int addition (int a, int b) { int r; r = a + b; return (r); } int main () { int z; z = addition (5, 3); cout << "The result is " << z; return 0; }

Page 89: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

81

Merupakan akhir dari fungsi addition, dan mengembalikan kontrol pada fungsi main. Statement

return dikuti dengan variabel r (return (r);), sehingga nilai dari r yaitu 8 akan dikembalikan :

Dengan kata lain pemanggilan fungsi (addition (5,3)) adalah menggantikan dengan nilai yang

akan dikembalikan (8).

Function tanpa tipe (void) Deklarasi fungsi akan selalu diawali dengan tipe dari fungsi, yang menyatakan tipe data apa yang akan dihasilkan dari fungsi tersebut. Jika tidak ada nilai yang akan dikembalikan, maka dapat digunakan tipe void,

contoh :

Walaupun pada C++ tidak diperlukan men-spesifikasikan void, hal itu digunakan untuk

mengetahui bahwa fungsi tersebut tidak mempunyai argumen, atau parameter dan lainnya. Maka dari itu pemanggilan terhadap fungsinya dituliskan :

dummyfunction ();

Variable Lokal dan Variabel Global Didalam pembuatan program perlu diperhatikan bagaimana menetukan variabel secara benar. Disamping menentukan tipe data apa yang akan digunakan, perlu juga diperhatikan penggunaan variabel secara baik. Penempatan variabel dapat dilakukan dengan menerapkan variabel sebagai variabel lokal atau variabel global. Perhatikan skema penempatan variabel lokal dan variabel global berikut ini :

#include <iostream.h> void dummyfunction (void) { cout << "I'm a function!"; } int main () { dummyfunction (); return 0; }

Page 90: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

82

VAriabel Lokal Variabel yang dideklarasikan di dalam fungsi atau blok adalah variabel lokal. Mereka hanya dapat digunakan oleh pernyataan yang berada di dalam fungsi atau blok kode program. Variabel lokal tidak dikenal oleh fungsi yang lain.. Berikut ini adalah contoh menggunakan variabel lokal:

Variable Global

Variabel global didefinisikan di luar semua fungsi, biasanya di atas program. Variabel global akan terus dikenali dalam proses jalannya program.

#include <iostream.h> void main () { // Local variable declaration: int a, b; int c; // actual initialization a = 10; b = 20; c = a + b; cout << c; }

Page 91: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

83

Variabel global dapat diakses oleh fungsi apapun. Artinya, variabel global yang tersedia untuk digunakan diseluruh program setelah dideklarasikan. Berikut ini adalah contoh menggunakan variabel global dan lokal:

Kelemahan dari variable global, antara lain :

Penggunaan memori yang boros

Pencarian kesalahan terhadapa variable akan sulit dilakukan karena semua variable dianggap global.

Pelaksanaan Praktikum

1. Cobalah contoh program berikut !

#include <iostream.h> // Global variable declaration: int g; void main () { // Local variable declaration: int a, b; // actual initialization a = 10; b = 20; g = a + b; cout << g; }

#include <iostream.h> #include <conio.h> //variable global int a = 2; void satu() { int b; //varible local b = 5; a = a * b; cout << "Nilai a : " << a << endl; cout << "Nilai b : " << b << endl; }

Page 92: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

84

Output program :

Jelaskan mengapa output yg dihasilkan seperti di atas !

Latihan

1. Buatlah daftar harga jual BBM dari jumlah 1 liter sampai dengan 10 liter, dimana judul laporan dibuat dalam sebuah fungsi !

Daftar Harga BBM ======================================================== Liter Premium Pertamax 92 PrimaDex Bio Solar ======================================================== ========================================================

void main () { int b = 3, c = 4; //variable local cout << "Nilai a : " << a << endl; cout << "Nilai b : " << b << endl; cout << "Nilai c : " << c << endl; satu(); cout << "Nilai a : " << a << endl; cout << "Nilai b : " << b << endl; cout << "Nilai c : " << c << endl; getch(); }

Page 93: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

85

PPeerrtteemmuuaann 1100

Pokok Bahasan

1. Fungsi dengan Parameter 2. Fungsi dengan Parameter by value 3. Fungsi dengan Parameter by reference

Tujuan Pembelajaran

1. Mahasiswa mengenal fungsi dengan menggunakan parameter 2. Mahasiswa dapat membedakan fungsi dengan parameter by value dan fungsi dengan

parameter by reference

Kompetensi Prasyarat

1. Mahasiswa telah memahami fungsi atau procedure dalam program. 2. Mahasiswa telah memahami alur program dengan baik

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Parameter Fungsi

Terdapat dua macam para parameter fungsi, yaitu :

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

Parameter Aktual adalah variabel yang dipakai dalam pemanggilan fungsi.

Bentuk penulisan Parameter Formal dan Parameter Aktual.

Page 94: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

86

Argument passed by value dan by reference Parameter yang diberikan ke fungsi masih merupakan passed by value. Berarti, ketika memanggil sebuah fungsi, yang diberikan ke fungsi adalah nilainya, tidak pernah men-spesifikasikan variablenya. Sebagai Contoh, pemanggilan fungsi addition, menggunakan perintah berikut :

int x=5, y=3, z; z = addition ( x , y );

Yang berarti memanggil fungsi addition dengan memberikan nilai dari x dan y, yaitu 5 dan 3, bukan variabelnya.

Contoh penggunaan fungsi addition :

Tetapi, dapat juga memanipulasi dari dalam fungsi, nilai dari variable external. Untuk hal itu, digunakan argument passed by reference,

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

int addition (int a, int b)

{ int c; c = a + b; return (c); } int main () { int x = 5, y = 3; int hasil; hasil = addition (x, y); cout << "Hasil = " << hasil; getch(); return 0; }

Page 95: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

87

Contoh program :

Output program :

x = 4

y = 6

z = 10

Perhatikan deklarasi duplicate, tipe pada setiap argumen diakhiri dengan tanda ampersand

(&), yang menandakan bahwa variable tersebut biasanya akan passed by reference dari pada by

value.

Ketika mengirimkan variable by reference, yang dikirimkan adalah variabelnya dan perubahan apapun yang dilakukan dalam fungsi akan berpengaruh pada variable diluarnya.

Atau dengan kata lain, parameter yang telah ditetapkan adalah a, b dan c dan parameter yang

digunakan saat pemanggilan adalah x, y dan z, maka perubahan pada a akan mempengaruhi

nilai x, begitupun pada b akan mempengaruhi y, dan c mempengaruhi z.

Itu sebabnya mengapa hasil output dari program diatas adalah nilai variable dalam main dikalikan 2. jika deklarasi fungsi tidak diakhiri dengan tanda ampersand (&), maka variable tidak akan passed by reference, sehingga hasilnya akan tetap nilai dari x, y dan z tanpa mengalami perubahan.

// passing parameters by reference #include <iostream.h> #include <conio.h> void duplicate (int& a, int& b, int& c) { a*=2; b*=2; c*=2; } int main () { int x=2, y=3, z=5; duplicate (x, y, z); cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; getch(); return 0; }

Page 96: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

88

Passing by reference merupakan cara efektif yang memungkinkan sebuah fungsi mengembalikan lebih dari satu nilai. Contoh, fungsi ini akan mengembalikan nilai sebelum dan sesudahnya dari nilai awal parameter :

Output program :

Previous=99, Next=101

Nilai Default dalam argument Ketika mendeklarasikan sebuah fungsi, dapat diberikan nilai default untuk setiap parameter. nilai ini akan digunakan ketika parameter pemanggil dikosongkan. Untuk itu cukup dideklarasikan pada saat deklarasi fungsi.

Contoh :

// default values in functions #include <iostream.h> int divide (int a, int b=2) { int r; r = a / b; return (r); } int main () { cout << divide (12); cout << endl; cout << divide (20,4); return 0; }

// more than one returning value #include <iostream.h> void prevnext (int x, int& prev, int& next) { prev = x-1; next = x+1; } int main () { int x=100, y, z; prevnext (x, y, z); cout << "Previous=" << y << ", Next=" << z; return 0; }

Page 97: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

89

Output program : 6 5

Dapat dilihat dalam fungsi divide. Instruksi 1:

divide (12)

Instruksi 2 :

divide (20,4)

inline Function Directive inline dapat disertakan sebelum deklarasi fungsi, untuk menspesifikasikan bahwa fungsi tersebut harus di-compile sebagai suatu kode saat dipanggil. Sama halnya dengan deklarasi macro. Keuntungannya dapat terlihat pada fungsi sederhana yaitu hasil yang diberikan akan lebih cepat. (jika terjadi stacking of arguments) dapat dihindari.

Format deklarasi :

Pemanggilannya, sama dengan pemanggilan fungsi pada umumnya. Tidak diperlukan penulisan

keyword inline pada setiap pemanggilan.

Pelaksanaan Praktikum

1. Praktekkan dan pahami contoh program pada bab ini !

inline type name ( arguments ... )

{ instructions ... }

Page 98: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

90

Latihan

1. Buatlah program berikut dan lengkapi yang masih kurang !

/* Nama program : Latihan10.cpp Dibuat tanggal : 2 Februari 2015 Fungsi Program : fungsi Dibuat oleh : nama mahasiswa */ #include <iostream.h> #include <conio.h> struct skaryawan { int nik; char nama[20]; int anak; int pendidikan; }; int a; int gapok, tanak; char ket[10]; skaryawan karyawan[5]; void fgapok() { if (karyawan[a].pendidikan == 1) { gapok = 10000; strcpy(ket, "SD"); } else if (karyawan[a].pendidikan == 2) { gapok = 20000; strcpy(ket, "SMP"); } else { gapok = 30000; strcpy(ket, "SMA"); } } //berlanjut halaman berikutnya……………..

Page 99: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

91

int ftanak(int jmlanak) { if (jmlanak > 2) tanak = 3 * 500; else tanak = jmlanak * 500; return tanak; } int ftotal(int gapok, int tanak) { int jmltotal; jmltotal = gapok + tanak; return jmltotal; } void cetakdata() { int a, total = 0; //cetak isi array clrscr(); cout << "Laporan Pembayaran Air"<< endl; cout << "==============================================" << endl; cout << "No NIK Nama Anak Pendidikan GApok TAnak Total" << endl; cout << "==============================================" << endl; a=0; while (a<2) { fgapok(); tanak = ftanak(karyawan[a].anak); total = ftotal (gapok, tanak); cout << (a+1) << karyawan[a].nik << "\t" << karyawan[a].anak << "\t" << ket << "\t" << gapok << "\t" << total << endl; a++; } cout << "=============================================" << endl; getch(); }

Page 100: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

92

void main() { int totgaji; while (a<2) { cout << " NIK : " ;cin >> karyawan[a].nik; cout << " Nama : " ;cin >> karyawan[a].nama; cout << " Anak : " ;cin >> karyawan[a].anak; cout << " Pendidikan : " ;cin >> karyawan[a].pendidikan; //hitung gapok...................... fgapok(); tanak = ftanak(karyawan[a].anak); totgaji = ftotal( gapok, tanak); cout << " Gaji Pokok : " << gapok << endl; cout << " Tunj. Anak : " << tanak << endl; cout << " Total Gaji : " << totgaji << endl; getch(); a++; } //cetak data.. cetakdata(); }

Page 101: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

93

PPeerrtteemmuuaann 1111

Pokok Bahasan

1. Prototipeping Function 2. Overloaded Function

Tujuan Pembelajaran

1. Mahasiswa mengenal prototipeping function dan overloaded function. 2. Mahasiswa dapat menggunakan prototipeping function dan overloaded function.

Kompetensi Prasyarat

1. Mahasiswa telah dapat menggunakan fungsi dengan parameter 2. Mahasiswa dapat memahami alur program.

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Prototyping function

Format penulisan :

type name ( argument_type1, argument_type2, ...);

Hampir sama dengan deklarasi fungsi pada umumnya, kecuali :

Tidak ada statement fungsi yang biasanya dituliskan dalam kurung kurawal { }.

Diakhiri dengan tanda semicolon (;).

Dalam argumen dituliskan tipe argumen, bersifat optional.

Page 102: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

94

Contoh :

Output : Type a number (0 to exit): 9 Number is odd. Type a number (0 to exit): 6 Number is even. Type a number (0 to exit): 1030 Number is even. Type a number (0 to exit): 0 Number is even.

Contoh diatas tidak menjelaskan tentang efektivitas program tetapi bagaimana prototyping dilaksanakan. Perhatikan prototype dari fungsi odd dan even:

void odd (int a); void even (int a);

Memungkinkan fungsi ini dipergunakan sebelum didefinisikan. Hal lainnya mengapa program diatas harus memiliki sedikitnya 1 fungsi prototype, karena fungsi dalam odd terdapat

pemanggilan fungsi even dan dalam even terdapat pemanggilan fungsi odd. Jika tidak satupun

dari fungsi tersebut dideklarasikan sebelumnya, maka akan terjadi error.

// prototyping #include <iostream.h> void odd (int a); void even (int a); int main () { int i; do { cout << "Type a number: (0 to exit)"; cin >> i; odd (i); } while (i!=0); return 0; } void odd (int a) { if ((a%2)!=0) cout << "Number is odd.\n"; else even (a); } void even (int a) { if ((a%2)==0) cout << "Number is even.\n"; else odd (a); }

Page 103: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

95

Overloaded Function Dua fungsi yang berbeda dapat memiliki nama yang sama jika prototype dari argumen mereka berbeda, baik jumlah argumennya maupun tipe argumennya, Contoh :

Output :

2 2.5

Contoh diatas mempunyai nama fungsi yang sama, tetapi argumennya berbeda. Yang pertama bertipe int dan lainnya bertipe float. Kompiler mengetahuinya dengan memperhatikan tipe

argumen pada saat pemanggilan fungsi.

// overloaded function #include <iostream.h> int divide (int a, int b) { return (a/b); } float divide (float a, float b) { return (a/b); } int main () { int x=5,y=2; float n=5.0,m=2.0; cout << divide (x,y); cout << "\n"; cout << divide (n,m); cout << "\n"; return 0; }

Page 104: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

96

Pelaksanaan Praktikum

1. Praktekkan contoh program yang ada pada bab ini !

Latihan

1. Buatlah program latihan pada bab 10 menjadi fungsi dengan bentuk prototyping !

Page 105: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

97

PPeerrtteemmuuaann 1122

Pokok Bahasan

1. Rekursif

Tujuan Pembelajaran

1. Mahasiswa mengenal program dengan fungsi yang mempunyai sifat rekursi 2. Mahasiswa dapat menggunakan rekursi program

Kompetensi Prasyarat

1. Mahasiswa telah memahami penggunaan fungsi 2. Mahasiswa dapat memahami alur program

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Recursivity Function Rekursif merupakan kemempuan sebuah fungsi untuk memanggil dirinya sendiri. Sangat berguna untuk pengerjaan sorting atau perhitungan factorial. Contoh, format perhitungan factorial :

n! = n * (n-1) * (n-2) * (n-3) ... * 1

Misalkan, 5! ( 5 faktorial), akan menjadi :

5! = 5 * 4 * 3 * 2 * 1 = 120

Page 106: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

98

contoh :

Output program :

Type a number: 9

!9 = 362880

// factorial calculator #include <iostream.h> long factorial (long a) { if (a > 1) return (a * factorial (a-1)); else return (1); } int main () { long l; cout << "Type a number: "; cin >> l; cout << "!" << l << " = " << factorial (l); return 0; }

Page 107: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

99

Pelaksanaan Praktikum

1. Praktekkan contoh program pada bab ini ! 2. Buatlah program untuk menghitung jumlah nilai dari urutan angka 1, 2, 3, …dst sampai 999

dengan menggunakan teknik rekursi !

Latihan

1. Buatlah progam untuk mencetak urutan angka bilangan genap dari 0, 2, 4, …, 100 dengan menggunakan rekursi !

Page 108: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

100

PPeerrtteemmuuaann 1133

Pokok Bahasan

1. Sorting 2. Buble Sort 3. Selection Sort

Tujuan Pembelajaran

1. Mahasiswa mengenal proses pengurutan data 2. Mahasiswa dapat membuat program pengurutan data dengan metode buble sort dan

selection sort

Kompetensi Prasyarat

1. Mahasiswa telah mempelajari proses seleksi dan perulangan. 2. Mahasiswa dapat membaca alur program.

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Salah satu bagian penting dari pengolahan data adalah sorting atau pengurutan data. Ada banyak sekali Algoritma pengurutan data di dunia komputer, yatu : bubble sort, selection sort, insertion sort, exchange sort, quick sort, merge sort, dll.

Bubble Sort Bubble sort merupakan salah satu jenis sorting. Bubble sort ada metode sorting termudah. Diberikan nama “bubble” karena konsep dari algoritmanya diibaratkan seperti gelembung air untuk elemen struktur data yang seharusnya pada posisi awal. Bubble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. Dimana cara kerjanya adalah dengan berulang-ulang melakukan proses looping ( perulangan ) terhadap elemen-elemen struktur data yang belum diurutkan. Nilai dari masing-masing elemen akan dibandingkan selama proses looping tersebut, jika selama proses looping tersebut ditemukan ada urutannya tidak sesuai dengan permintaan, maka akan dilakukan proses penukaran (swap). Sesungguhnya secara tidak langsung, algoritma dari program ini seolah-olah menggeser satu demi satu elemen dari kanan ke kiri atau dari kiri ke kanan tergantung pada jenis pengurutannya.

Jenis pengurutan sorting ada 2 yaitu asscending dan descending. Dimana asscending itu mengurut data dari kecil ke besar dan descending itu mengurut data dari besar ke kecil. Jika

Page 109: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

101

semua elemen sudah diperiksa oleh fungsi bubble sort, dan tidak ada pertukaran lagi atau semua nilai sudah sesuai, maka saat itu program bubble sort akan berhenti bekerja.

Misalkan jika ada data 2 5 4 3 1. Data tersebut masih dalam keadaan acak. Maka ilustrasi pengurutan dengan bubble sortnya akan terlihat seperti pada table dibawah ini :

Page 110: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

102

Kode program pengurutan Buble sort : #include <iostream.h> #include <conio.h> int data[10],data2[10]; int n; void tukar(int a, int b) { int t; t = data[b]; data[b] = data[a]; data[a] = t; } void bubble_sort() { clrscr(); for(int i=1;i<n;i++) { cout << "\nTahap : " << (i) << "\n"; cout << "=================================\n"; for(int j=0; j<n-i; j++) { if(data[j] > data[j+1]) tukar(j,j+1); //mencetak data for (int x=0; x<n; x++) cout << data[x] << "\t"; cout << "\n"; } } } void main() { cout<<"===PROGRAM BUBBLE SORT==="<<endl; //Input Data cout<<"Masukkan Jumlah Data : ";cin>>n; for(int i=0;i<n;i++) { cout<<"Masukkan data ke "<<(i+1)<<" : "; cin>>data[i]; data2[i]=data[i]; } bubble_sort(); getch(); }

Page 111: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

103

Selection Sort Selection sort merupakan salah satu jenis sorting yang sangat terkenal karena proses pengurutannya cukup sederhana. Masih baik untuk digunakan pada saat data yang diurutkan masih sedikit. Sedangkan pada saat data yang diurutkan jumlahnya besar metode selection sort sudah tidak efisien lagi.

Berikut adalah pengurutan dengan menggunakan selection sort dengan pengurutan data dari kecil ke besar/ascending.

Page 112: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

104

Kode Program Pengurutan dengan metode Selection Sort #include <iostream.h> #include <conio.h> void main() { int Nilai[] = { 5, 2, 4, 3, 1 }; int jdata = 5; int i, j, x; for(i = 0; i<jdata-1; i++) { cout << "\nTahap : " << (i+1) << "\n"; cout << "=================================\n"; for(j = i+1;j<jdata;j++) { if(Nilai[i] > Nilai[j]) { x = Nilai[i]; Nilai[i] = Nilai[j]; Nilai[j] = x; } for (int a = 0; a<jdata; a++) cout << Nilai[a] << "\t"; cout << "\n"; } } getch(); }

Page 113: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

105

Pelaksanaan Praktikum

1. Cobalah program sorting pada bab ini ! 2. Buatlah program pengurutan nama yang tipenya adalah char ! 3. Buatlah program pengurutan dimana datanya berupa record yang terdiri dari nim, nilai1, dan

nilai2. Data diurutkan berdasakan NIM !

Latihan

1. lakukan pengurutan data dimana data yang diurutkan mempunyai susunan record yang teridir dari nopelanggan, golongan, meter lalu, dan meter sekarang

Page 114: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

106

Page 115: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

107

PPeerrtteemmuuaann 1144

Pokok Bahasan

1. Searching 2. Sequential Search 3. Binary search

Tujuan Pembelajaran

1. Mahasiswa mengenal cara pencarian data untuk data array 2. Mahasiswa dapat mempraktekkan pencarian data pada array.

Kompetensi Prasyarat

1. Mahasiswa telah memahami araay dan struct. 2. Mahasiswa dapat melakukan pengurutan data.

Instruksi Khusus

1. Mahasiswa dalam menuliskan program harus selalu memperhatikan aturan penulisan program yang baik, sehingga program mudah dibaca dan dipahami.

Teori Singkat

Pengertian Pencarian (Searching) merupakan proses yang sangat dasar dalam pemrograman, guna menemukan data tertentu di dalam sekumpulan data yang bertipe sama.

Metode pencarian dibagi menjadi 2 :

1. Metode Pencarian Berurutan (Linier Search)

Konsep yang digunakan dalam metode ini adalah membandingkan data-data yang ada dalam kumpulan tersebut, mulai dari elemen pertama sampai sampai dengan elemen data terakhir.

2. Metode Pencarian Bagi Dua (Binary Search)

Metode ini diterapkan pada sekumpulan data yang sudah terurut. Metode ini lebih cepat dibandingkan metode pencarian berurutan.

Linier Search

Contoh program linier search : #include <iostream.h> #include <conio.h>

Page 116: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

108

int linearsearch(const int *vArray, const int vJmlData, const int vCari) { bool noFound = true; int i = 0; while(i < vJmlData && notFound) { if(vCari != vArray[i]) i++; else notFound = false; } if( notFound == false ) return i; else return -1; } int main() { int data[] = { 57, 3, 502, 99, 1007, 2, 9, 8 }; int jmldata = sizeof(data) / sizeof(int); int jmlketemu = 0; cout << "Data yang dicari : "; cin >> jmlketemu; int i = linearsearch(data, jmldata, jmlketemu); if(i == -1) cout << "Data tidak ditemukan !\n\n"; else { cout << "Data ditemukan pada posisi index ke- " << i <<"\n"; } getch(); return 0; }

Page 117: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

109

Binary Search

Contoh program binary search :

#include <iostream.h> #include <conio.h> int binarysearch(int [], int, int); void main() { const int jmldata = 10; int data[jmldata] = {1,2,45,46,56,68,93,94,95,98}; int cari, lokasi; cout << "Data yang dicari : "; cin >> cari; lokasi = binarysearch(data, jumlahdata, cari); if (lokasi > -1) cout << "Data yang dicari ditemukan pada lokasi : " << lokasi << "\n"; else cout << "Data tidak ditemukan !\n"; getch(); } int binarysearch(int list[], int jumlah, int vcari) { int kiri, kanan, tengah; kiri = 0; kanan = jumlah - 1; while (kiri <= kanan) { tengah = (int) ((kiri + kanan) / 2); if (vcari == list[tengah]) { return tengah; } else if (vcari > list[tengah]) kiri = tengah + 1; else kanan = tengah - 1; } return -1; }

Page 118: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

110

Pelaksanaan Praktikum

1. Buatlah contoh program yang ada pada bab ini !

Latihan

1. Cobalah lakukan pencarian data, jika data yang disimpan berupa nama siswa !

Page 119: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

111

Daftar Pustaka

http://www.cplusplus.com/files/tutorial.pdf

http://www.cplusplus.com/doc/tutorial/

http://www.cprogramming.com/tutorial/c++-tutorial.html

http://en.wikipedia.org/wiki/Selection_sort

Sanjaya Dwi, Asyiknya belajar Struktur data di planet C++, Elek Media Komputindo, Jakarta, 2006

http://www.tutorialspoint.com/cplusplus/cpp_variable_scope.htm Desember 2014

Page 120: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

112

Catatan :

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

Page 121: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

113

Catatan :

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

Page 122: Algoritma Dan Pemrograman 1 - dinus.ac.iddinus.ac.id/repository/docs/ajar/modulAlPro1.pdfBahasa pemrograman yang digunakan dalam matakuliah ini adalah bahasa pemrograman C++

114

Catatan :

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………