BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel,...

36
Algoritma dan Pemrograman I Bag-2 7 BAB III BAHASA PEMROGRAMAN DAN FLOWCHART PERKEMBANGAN BAHASA PEMROGRAMAN Pada dasarnya bahasa pemrograman dapat dibedakan menjadi: 1. Bahasa Mesin (Mnemonic Code) Bahasa mesin adalah bahasa yang berisi kode-kode mesin yang hanya dapat diinterpretasikan langsung oleh mesin komputer. Bahasa ini merupakan bahasa level terendah dan berupa kode numerik 0 dan 1. Sekumpulan instruksi dalam bahasa mesin dapat membentuk microcode (semacam prosedur dalam bahasa mesin). Keuntungan: Eksekusi sangat cepat Kerugian: Sangat sulit dan rumit dipelajari dan dipahami sebagian besar akademisi 2. Bahasa Assembly Bahasa assembly adalah bahasa simbol dari bahasa mesin. Setiap kode bahasa mesin memiliki simbol sendiri dalam bahasa assembly. Misalnya ADD untuk penjumlahan, MUL untuk perkalian, SUB untuk pengurangan, dan lain-lain. Sekumpulan kode-kode bahasa assembly dapat membentuk makroinstruksi. Bahasa assembly juga memiliki program untuk men-debugnya tidak seperti bahasa mesin. Misalnya: Turbo Assembler dan debug pada DOS. Assembler akan mencocokkan token dari awal dengan akhir dan dikodekan menjadi bahasa mesin. Kelebihan: Eksekusi cepat, lebih mudah dipelajari daripada bahasa mesin, file kecil Kekurangan: Tetap sulit dipelajari, listing program sangat panjang. 3. Bahasa Tingkat Tinggi (High Level Language) Bahasa tingkat tinggi adalah bahasa pemrograman yang lebih tinggi daripada bahasa assembly. Bahasa ini lebih dekat dengan bahasa manusia. Bahasa inilah yang akan dibahas pada matakuliah ini. Bahasa ini juga memberikan banyak sekali fasilitas kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh: Pascal, Fortran, C++, dan Java. Keuntungan: - Mudah dipelajari (Sintaks bahasanya mirip bahasa manusia /bahasa Inggris) - Menyediakan banyak modul yang mendekati permasalahan yang akan dipecahkan - Kode program lebih pendek - Tersedia IDE (Integrated Development Environment), sebagian besar bahasa pemrograman tingkat tinggi saat ini menyediakan IDE, yaitu program interface/ antarmuka pengguna yang mudah digunakan (berbasis GUI). IDE menyediakan Editor (tools untuk menulis program), Debug (untuk menelusuri kesalahan penulisan program, serta kompiler (untuk membuat program aplikasi/ siap pakai berupa executable program, yang langsung bisa dieksekusi dan dilihat hasilnya) Kerugian: - Eksekusi lambat, karena harus menggunakan API (menumpang pada proses eksekusi yang sebagian dilakukan oleh rutin-rutin program OS), sehingga mengalami eksekusi yang bertingkat-tingkat dari level GUI – API/Aplikasi – OS – BIOS – Mesin. - Ukuran program executable yang dihasilkan cukup besar, sehingga membutuhkan pemakaian memori (RAM) yang besar. Bahasa dari jenis inilah yang akan kita pakai untuk praktikum Algoritma Pemrograman, dikenal dengan bahasa generasi ke-3 ( 3 rd Generation Programmming Language ).

Transcript of BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel,...

Page 1: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 7

BAB III BAHASA PEMROGRAMAN DAN FLOWCHART PERKEMBANGAN BAHASA PEMROGRAMAN

Pada dasarnya bahasa pemrograman dapat dibedakan menjadi: 1. Bahasa Mesin (Mnemonic Code)

Bahasa mesin adalah bahasa yang berisi kode-kode mesin yang hanya dapat diinterpretasikan langsung oleh mesin komputer. Bahasa ini merupakan bahasa level terendah dan berupa kode numerik 0 dan 1. Sekumpulan instruksi dalam bahasa mesin dapat membentuk microcode (semacam prosedur dalam bahasa mesin). Keuntungan: Eksekusi sangat cepat Kerugian: Sangat sulit dan rumit dipelajari dan dipahami sebagian besar akademisi

2. Bahasa Assembly Bahasa assembly adalah bahasa simbol dari bahasa mesin. Setiap kode bahasa mesin memiliki simbol sendiri dalam bahasa assembly. Misalnya ADD untuk penjumlahan, MUL untuk perkalian, SUB untuk pengurangan, dan lain-lain. Sekumpulan kode-kode bahasa assembly dapat membentuk makroinstruksi. Bahasa assembly juga memiliki program untuk men-debugnya tidak seperti bahasa mesin. Misalnya: Turbo Assembler dan debug pada DOS. Assembler akan mencocokkan token dari awal dengan akhir dan dikodekan menjadi bahasa mesin. Kelebihan: Eksekusi cepat, lebih mudah dipelajari daripada bahasa mesin, file kecil Kekurangan: Tetap sulit dipelajari, listing program sangat panjang.

3. Bahasa Tingkat Tinggi (High Level Language) Bahasa tingkat tinggi adalah bahasa pemrograman yang lebih tinggi daripada bahasa assembly. Bahasa ini lebih dekat dengan bahasa manusia. Bahasa inilah yang akan dibahas pada matakuliah ini. Bahasa ini juga memberikan banyak sekali fasilitas kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh: Pascal, Fortran, C++, dan Java. Keuntungan: - Mudah dipelajari (Sintaks bahasanya mirip bahasa manusia /bahasa Inggris) - Menyediakan banyak modul yang mendekati permasalahan yang akan dipecahkan - Kode program lebih pendek - Tersedia IDE (Integrated Development Environment), sebagian besar bahasa

pemrograman tingkat tinggi saat ini menyediakan IDE, yaitu program interface/ antarmuka pengguna yang mudah digunakan (berbasis GUI).

IDE menyediakan Editor (tools untuk menulis program), Debug (untuk menelusuri kesalahan penulisan program, serta kompiler (untuk membuat program aplikasi/ siap pakai berupa executable program, yang langsung bisa dieksekusi dan dilihat hasilnya)

Kerugian: - Eksekusi lambat, karena harus menggunakan API (menumpang pada proses eksekusi

yang sebagian dilakukan oleh rutin-rutin program OS), sehingga mengalami eksekusi yang bertingkat-tingkat dari level GUI – API/Aplikasi – OS – BIOS – Mesin.

- Ukuran program executable yang dihasilkan cukup besar, sehingga membutuhkan pemakaian memori (RAM) yang besar.

Bahasa dari jenis inilah yang akan kita pakai untuk praktikum Algoritma Pemrograman, dikenal dengan bahasa generasi ke-3 ( 3rd Generation Programmming Language ).

Page 2: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 8

4. Bahasa yang berorientasi pada masalah spesifik (specific problem oriented). Bahasa ini adalah bahasa yang digunakan langsung untuk memecahkan suatu masalah tertentu. Misalnya SQL untuk database, Regex untuk mencocokkan pola string tertentu. Bahasa ini juga masuk ke bahasa tingkat tinggi. Bahasa ini disebut juga bahasa generasi ke-4 (4th Generation Programmming Language).

Translator Translator melakukan pengubahan source code ke dalam target code/object program. Source code ditulis dengan suatu bahasa pemrograman tertentu sedangkan object code bisa bermacam-macam outputnya tergantung pada translatornya. Ada beberapa translator: 1. Assembler

Source code adalah bahasa assembly, object code adalah bahasa mesin 2. Interpreter

Input berupa source code yaitu bahasa scripting seperti PHP, VBscript, Perl, Javascript, actionscript(Adobe), Java bytecode, dan Basic. Interpreter tidak menghasilkan object code, jadi hasilnya langsung tampil. Hanya menghasilkan translasi internal. Input dapat berasal dari source code maupun dari inputan program dari user. Source code dan inputan data user diproses pada saat yang bersamaan. Pada interpreter: program tidak harus dianalisis seluruhnya dulu, tapi bersamaan dengan jalannya program. Keuntungan: mudah bagi user, debuging cepat Kekurangan: eksekusi program lambat, tidak langsung menjadi program executable.

3. Kompiler

Input berupa source code program seperti Pascal, C, C++. Object code adalah bahasa assembly. Source code dan data input diproses pada saat yang berbeda. Compile time adalah saat pengubahan dari source code menjadi object code, sedangkan Runtime adalah saat eksekusi object code dan mungkin menerima input data dari user. Output : bahasa assembly. Hasil berupa file EXE Kekurangan: debugging lebih lambat Keuntungan: eksekusi program lebih cepat, menghasilkan file executable yang berdiri sendiri.

Compile Time : Runtime

Source Code

Assembler

Compiler

Pre-Processor

Link Editor

FILE EXECUTABLE

Assembly Code

Object Code

Library

Page 3: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 9

Page 4: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 10

Paradigma Pemrograman 1. Pemrograman Prosedural

Berdasarkan urutan-urutan, sekuensial Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur

merupakan kumpulan instruksi yang dikerjakan secara berurutan. Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah.

2. Pemrograman Fungsional Berdasarkan teori fungsi matematika Fungsi merupakan dasar utama program. Contoh : MatLAB.

3. Pemrograman Terstruktur Secara berurutan dan terstrukrtur. Program dapat dibagai-bagi menjadi prosedur dan fungsi. Contoh: PASCAL dan C

4. Pemrograman Modular Pemrograman ini membentuk banyak modul. Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri Sebuah program dapat merupakan kumpulan modul-modul. Contoh: MODULA-2 atau ADA

5. Pemrograman Berorientasi Obyek (Object Oriented Programming – OOP) Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki data/variabel/

property dan method/event/prosedur yang dapat dimanipulasi Contoh: C++, Object Pascal, dan Java.

6. Pemrograman Berorientasi Fungsi Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada

tujuan pembuatan bahasa pemrograman ini. Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.

7. Pemrograman Deklaratif Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada

memecahkan masalah dengan implementasi algoritma. Contoh: PROLOG FLOWCHART Flowchart adalah bentuk gambar/diagram yang mempunyai aliran satu atau dua arah secara sekuensial. Flowchart digunakan untuk merepresentasikan maupun mendesain program. Oleh karena itu flowchart harus bisa merepresentasikan komponen-komponen dalam bahasa pemrograman.

Page 5: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 11

Baik flowchart maupun algoritma bisa dibuat sebelum maupun setelah pembuatan program. Flowchart dan Algoritma yang dibuat sebelum membuat program digunakan untuk mempermudah pembuat program untuk menentukan alur logika program, sedangkan yang dibuat setelah pembuatan program digunakan untuk menjelaskan alur program kepada orang lain.

Page 6: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 12

MENGENAL C/C++ C adalah bahasa pemrograman paling populer di lingkungan pengembang software sistem (developer). Pada awalnya dikembangkan oleh Dennis M. Ritchie di Bell Laboratories pada tahun 1972, diterapkan untuk mendayagunakan komputer DEC PDP-11 dengan Sistem Operasi UNIX. Kemudian tahun 1978 Dennis dan Brian W.Kernighan mempublikasikannya melalui buku : C Programming Language. Pada akhirnya C distandarisasi oleh Badan Standar Amerika Sserikat, yaitu ANSI C pada tahun 1989. Bahasa C bahasa yang general, tidak dikhususkan untuk suatu bidang/aplikasi tertentu. Contoh program C: #include <stdio.h> #include <conio.h> void main() { clrscr(); char nama[20]; int umur; printf(“Hallo Selamat Belajar C”); printf(“Masukkan nama : “); scanf(“%s”,nama); printf(“Masukkan umur: “); scanf(“%d”,&umur); printf(“Anda bernama : %s dan berumur %d”,nama,umur); if(umur < 20)

{ for(int i=0;i<umur;i++) printf(“%d\n”,i); printf(“Anda masih muda\n”); } else if(umur > 50) { printf(“Anda sudah berumur!\n”); } else

printf(“Lainnya\n”); getch(); }

Page 7: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 13

C++ adalah bahasa pemrograman yang merupakan turunan langsung dari C. Secara historis C++ mulai lahir pada tahun 1979, dimana Bjarne Stroustrup dari laboratorium AT&T Bell Corp. mulai mengerjakan C dengan fitur Class, dan 1982, C with Classes dipublikasikan secara luas, hingga akhir tahun 1983 kemudian diberi nama dengan C++.. Kemduian pada Juli 1998, bahasa C++ distandarisasi secara internasional, dengan nama : ISO/IEC 14882 : 1998, "Programming Language -- C++" C++ adalah bahasa pemrograman multi-orientasi dengan penggunaan Class, hingga mampu menyusun sendiri pustaka Class, namun kemudian muncul STL (Standard Tempalte Library) yang sangat bermanfaat untuk penyelesaian permasalahan nyata dengan lebih sederhana. Adanya class merupakan suatu cara untuk memberi suatu obyek atau kumpulan obyek yang sejenis berbagai type data sekaligus menetapkan perilaku obyek yang diinginkan. Saat ini C++ menganut multi paradigma programming. - Mendukung model Data Abstraction

Dapat menyusun type data obyek sesuai definisi yang diinginkan bahkan lebih dari itu, dengan adanya pembentukan Class.

- Mendukung Object-Oriented Programming - Mendukung Procedural Programming

Dapat disusun prosedure-prosedur program yang diinginkan, dengan menggunakan algorithma yang tepat.

- Mendukung Modular Programming Dapat disusun berbagai modul yang diinginkan, membagi program dalam modul-modul untuk menyembunyikan datanya. Kelompokkan data dalam fungsi-fungsi yang sama.

- Mendukung Generic Programming Tetapkan Class mana yang diinginkan, sediakan sekumpulan jenis perilaku dan operasi yang diinginkan untuk setiap Class.

Contoh program C++ (hasil yg sama dari contoh untuk C sebelumnya) : #include <iostream> using namespace std; int main() { char nama[20]; int umur; cout <<" Hallo Selamat Belajar C++" << endl; cout <<" Masukkan nama : "); cin >> nama; cout << endl <<" Masukkan Umur : "); cin >> umur; cout << endl << nama << "," << "usiamu " << umur << " tahun" << endl; return 0; }

Page 8: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 14

Bentuk dan Sintax bahasa C++ dapat dilihat pada setiap contoh dibawah ini. //////////////////////////////////////////////////////// // Program C++ : Algoritma dan Pemrograman I // // Mempelajari perilaku Looping // // - menggunakan perintah for // // - memahami cara menetapkan awal dan akhir loop // //////////////////////////////////////////////////////// #include <iostream> // Memanggil pustaka program I/O using namespace std; // Penggunaan fungsi standar I/O

int main() // awal program utama, wajib ada { int A; // Deklarasikan variabel data A int i, j; // Deklarasikan variabel data i dan j cout<<"Input bilangan A : "; // Perintah menampilkan panduan baca A cin>>A; // Perintah membaca data A for (i=0; i<A; i++) // Loop menggunakan for { // Mulai loop i for (j=0; j<A-i; j++) { // Mulai loop j cout<<j; } // Akhiri loop j cout<<endl; } // Akhiri loop i system ("pause"); // Pause/tahan tampilan hasil di layar return 0; // Akhir Program Utama, wajib ada }

MENGENAL C# (Baca Si Sharp) C# merupakan bahasa yang berkembang mulai tahun 2000 sejak Microsoft merilis .NET. C# secara sintaks mendekati C, juga mirip dengan Java. C# dikembangkan oleh Anders Hejlsberg, salah satu pengembang IDE Pascal, yaitu Delphi. Microsoft memberikan definisi berikut tentang C#: ”C# is a simple, modern, object oreinted, and type-safe programming language derived from C and C++. C# is firmly planted in the C and C++ family tree of languages, and will immediately be fimiliar to C and C++ programmers. C# aim to combine the high productivity of visual Basic and the raw power of C++”.

Teknologi .NET Framework

Page 9: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 15

.NET framework memiliki suatu komponen dengan nama CLR (Common Language Runtime) yang memungkinkan semua bahasa yang berbeda dirubah menjadi MSIL (bahasa tingkat menengah ala Microsoft), yang kemudian dikelola dalam suatu lingkungan yang termanage dalam hal alokasi resource. Contoh program C#: using System; public class strukdat1App { public static void Main(string[] args) {

string nama; int umur; Console.WriteLine("Hallo, selamat belajar C#"); Console.Write("Masukkan nama : "); nama = Console.ReadLine(); Console.Write("Masukkan umur : "); umur = Convert.ToInt16

(Console.ReadLine()); Console.WriteLine("Anda bernama "+nama+", Anda berumur"+umur); if(umur < 20){for(int i=0;i<umur;i++) { Console.WriteLine(i); Console.WriteLine("Anda masih muda");

} else if(umur > 50) Console.WriteLine("Anda sudah berumur!"); else Console.WriteLine("Lainnya"); }

}

Belajar C/C++ saat ini sudah lebih mudah dilakukan. IDE C++ sudah banyak tersedia, IDE singkatan Integrated Development Environment, suatu aplikasi terpadu yang menyediakan editor text untuk menulis program C++, dan juga sekaligus menyediakan Compiler serta fasilitas penelusuran kesalahan program. IDE yang populer diantaranya adalah : - Microsoft Visual C++ ($28 US academic purpose only) - Borland C++ ($35 US academic purpose only) - Web-Dev C++ (Free and Open Source) - Kita pakai yang ini....!

Page 10: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 16

III MENGGUNAKAN BAHASA C++ Kerangka Program C++ Setiap program yang ditulis dalam bahasa C/C++ pasti akan memiliki sebuah fungsi utama dengan nama main( ) . Selanjutnya jika kita ingin mendefinisikan fungsi-fungsi lain maka kita akan melakukannya di luar fungsi utama tersebut. Dalam C++, kode yang dibaca adalah kode-kode yang terdapat pada fungsi utama. Jika ternyata terdapat pemanggilan fungsi lain, maka program akan mencari nama fungsi tersebut untuk dieksekusi. Setelah mengeksekusi fungsi tersebut, maka program akan kembali ke dalam fungsi utama, begitu seterusnya. Sebagai gambaran, di bawah ini ilustrasi kerangka umum program yang ditulis dalam bahasa C/C++. Maksudnya agar dapat membedakan mana yang harus dilakukan dan mana yang sebaiknya ditinggalkan dalam membuat program di dalam C++. Berikut ini kerangka umum dari program yang ditulis dalam bahasa C. #include <stdio.h> // Prototype fungsi tipe_data nama_fungsil{parameterl, parameter2, ... ) tipe_data nama_fungsi2(parameter!, parameter2, ... ) // Fungsi utama int main(void) { Statemen_yang_akan_di lakukan; ………… ………… return 0; } // Implementasi fungsi-fungsi bentukan, boleh lebih dari satu fungsi tipe_data nama_fungsil (parameterl, parameter2, ...) { Statemen_yang,_akan__dilakukan ; ………… ………… } tipe_data nama_fungsi2 (parameterl, parameter2, ...) { Statemen yang_akan_dilakukan ; ………… ………… }

Perhatikan kata kunci void di atas, di dalam bahasa C, masih banyak digunakan, sedangkan program C++ sebaiknya hindari penggunaannya, karena hal itu merupakan redundan. Sedangkan nilai 0 pada statemen return 0 di atas berfungsi untuk mengembalikan nilai ke sistem operasi. Prototype di atas bersifat opsional, artinya kita juga diizinkan untuk mendefinisikan fungsi-fungsi sebelum menulis fungsi utama tanpa menuliskan prototype. Selain bentuk di atas kita juga diizinkan untuk menuliskan fungsi utama seperti sintaks di bawah ini. void main (} { Statemen_yang_akan_di lakukan; ………… ………… }

Page 11: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 17

Sintaks di atas berlaku juga untuk bahasa C++ . Namun di dalam kuliah selanjutnya, sintaks yang akan digunakan untuk menuliskan fungsi utama adalah sebagai berikut. int main() { Statemen_yang_akan_di lakukan; ………… ………… return 0; }

Adapun kerangka lengkap dari program yang ditulis dalam C++ adalah seperti terlihat di bawah ini. #include <iostream> // Prototype fungsi tipe_data nama_fungsil{parameter!, parameter2,... ) tipe_data nama_fungsi2(parameterl, parameter2,... ) // Fungsi utama int main() ( Statemen_yang_akan_dilakukan; .... .... return 0; } // Implementasi fungsi tipe_data nama_fungsil{parameterl, parameter2, ...) { Statemen_yang_akan_dilakukan; .... .... } tipe__data nama_fungsi2{parameterl, parameter2, ...) { Statemen_yang_akan_dilakukan; .... .... }

File .H (Header File) Perlu sekali untuk diperhatikan bahwa file header yang digunakan di dalam bahasa C++ untuk proses input/output (I/O) standar adalah iostream, sedangkan di dalam bahasa C file header yang digunakan untuk keperluan yang sama adalah stdio.h. File header (file dengan ekstensi .h) adalah file yang berisi fungsi-fungsi yang telah dikompilasi sebelumnya. Bila kita akan menggunakan file header tertentu, harus didaftar melalui perintah directive #include. Sebagai contoh, di dalam kode program, kita akan menggunakan perintah cout (menampilkan data), dan cin (menginput data). Kedua perintah tersebut sudah built-in terdapat dalam file header iostream.h, maka kita akan melakukan pendaftaran dalam program kita melalui sintaks berikut #include <iostream> C++ Klasik dan C++ Modern/Standard ISO Pada bagian ini kita akan membahas sekilas tentang perbedaan yang terdapat dalam kompiler C++ lama (klasik) dengan C++ modern (C++ yang telah memenuhi standar ANSI/ISO). Perbedaan yang paling tampak adalah pada kompiler C++ lama masih menggunakan namespace global, sedangkan pada C++ modern yang digunakan adalah namespace std. Hal inilah yang menyebabkan terdapatnya sedikit perbedaan penulisan antara C++ lama dan standar. Untuk lebih memahaminya, berikut ini kerangka umum penulisan program yang digunakan dalam C++ lama dan C++ standar.

Page 12: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 18

Pada Kompiler C++ Lama Pada Kompiler C++ Standar #include<iostream.h> int main() { ... ... return 0; }

#include<iostream> Using namespace std; int main() { ... ... return 0; }

Seperti yang kita lihat bahwa pada C++ standar penulisan file header iostream sudah tidak diikuti lagi dengan ekstensi .h. Dalam buku ini kita akan selalu menggunakan bentuk kedua, yaitu bentuk yang telah memenuhi standar penulisan kode untuk C++ standar. Namun perlu diperhatikan bahwa untuk menuliskan kode menggunakan bentuk kedua, diperlukan pula kompiler C++ yang telah mendukung semua fitur yang terdapat dalam C++ Standar. Pada setiap pemrograman, kita tidak dapat terlepas dari penggunaan tipe data dan pengenal atau pengidentifikasi (identifier). Kehadiran dari dua elemen ini sangatlah penting, walaupun sebenarnya untuk program yang sangat sederhana terkadang kita tidak perlu menggunakan identifier. Sebagai contoh untuk program yang menampilkan sebuah teks dan bilangan, misalnya seperti program di bawah ini. #include <iostream> using namespace std; int main() { cout << "Teks ini digunakan sebagai contoh" << endl; cout << 2+5 ; return 0; }

Statemen cout di atas berfungsi untuk menampilkan keluaran (output) ke layar monitor. Statemen ini hanya akan dikenali jika kita mendaftarkan library iostream yang tersimpan dalam namespace std. Hal ini akan kita pelajari lebih jauh pada bab Input/Output(I/O). Sedangkan endl berfungsi untuk memindahkan cursor ke baris baru. Dalam bab ini kita hanya akan membahas mengenai beberapa elemen-elemen dasar yang diperlukan dalam pemrograman C++ , seperti: komentar, pengenal (identifier) dan tipe data. Komentar Dalam proses pengembangan sebuah program, tentunya kita disibukkan dengan penulisan sintaks-sintaks yang begitu banyak dan 'tampak' rumit sehingga akan sulit untuk dipahami oleh orang lain. Untuk menangani masalah ini, sebagai programmer kita sebaiknya menambahkan komentar untuk menjelaskan algoritma dan keterangan-keterangan yang diperlukan dalam program. Hal ini akan membantu dalam proses pemeliharaan (maintenance) dari program yang telah kita buat. Komentar program didefmisikan sebagai bagian dari sintaks program yang tidak ikut dibaca pada saat proses kompilasi. Dengan kata lain, komentar tidak akan mempengaruhi jalannya program. Dalam bahasa C++ , komentar dibagi menjadi dua jenis yaitu komentar yang hanya terdiri dari satu baris dan komentar yang terdiri dari beberapa baris. Berikut ini penjelasan dari keduanya.

Page 13: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 19

Menggunakan Tanda // Tanda ini digunakan untuk menuliskan komentar yang banyaknya hanya satu baris. Gaya penulisan komentar seperti ini hanya terdapat pada C + + , sedangkan pada bahasa C tidak akan dikenali. Jika kita menggunakan tanda ini untuk menuliskan komentar yang lebih dari satu baris, maka teks di belakang tanda // tetap menjadi komentar. Namun, teks yang terdapat pada baris selanjutnya akan tetap dibaca oleh kompiler sehingga akan menyebabkan terjadinya kesalahan (error) pada saat proses kompilasi program. Berikut ini adalah contoh penggunaannya. int r ; // r adalah jari-jari lingkaran … // dibawah ini perintah menampilkan hasil kali 4 dengan 3 cout<<4*3;

Menggunakan Tanda /* komentar */ Berbeda dengan tanda //, tanda di atasi dapat digunakan untuk menuliskan komentar yang banyaknya satu baris atau lebih. Tulisan dianggap komentar, bukan instruksi program, jika dimulai dengan tanda /* sampai ditemukan tanda */. Contoh penggunaannya dapat dilihat di bawah ini. /* Program C++ ini ditulis untuk menyelesaikan masalah algoritma sorting pada elemen-elemen matriks. Metoda yang digunakan adalah model MergeSort. ==================================================================== Penulis : Mr. Bruce Lee, Staf Perguruan Kungfu Komputer, Taiwan Tanggal : 29 Oktober 2008 -------------------------------------------------------------------- */ #include <iostream> Using namespace std; ... ...

Identifier Identifier adalah suatu pengenal atau pengidentifikasi yang kita deklarasikan agar kompiler dapat mengenalinya. Identifier sendiri dapat berupa nama variabel, konstanta, fungsi, kelas, template maupun namespace. Namun dalam hal ini kita hanya akan membahas identifier yang berperan sebagai variabel dan konstanta saja, sedangkan bentuk identifier lainnya akan kita bahas secara khusus dalam bab tersendiri. Identifier yang berperan sebagai variabel dan konstanta berfungsi untuk menampung sebuah nilai yang digunakan dalam program. Indentifikasi ini dilakukan untuk mempermudah proses penanganan data atau nilai, misalnya untuk memasukkan dan menampilkan nilai. Sebagai gambaran, di bawah ini adalah sebuah contoh program yang menggunakan dua buah identifier di dalamnya. #include <iostream> using namespace std; int main() { char Teks[20]; int X; cout<<"Masukkan sebuah kata : "; cin>>Teks; cout<<"Masukkan sebuah angka : "; cin>>X; cout<<Teks<<endl; // bisa ditulis cout<<X<<'\n'; cout<<X; return 0; }

Page 14: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 20

Pada program di atas kita mempunyai dua buah identifier, yaitu Teks dan X. Pada saat program dijalankan, identifier tersebut akan digunakan untuk menyimpan nilai yang dimasukkan dari keyboard. Dalam C++, proses penyimpanan nilai seperti ini dinyatakan dengan statemen cin. Berbeda dengan statemen cout yang menggunakan operator «, pada statemen cin operator yang digunakan adalah operator ». Dalam menentukan atau membuat identifer dalam program, kita harus memperhatikan hal-hal berikut: Karena bahasa C++ bersifat case sensitive, maka C++ juga akan membedakan variabel yang

ditulis dengan huruf capital dan huruf kecil. Misalnya variabel A tentunya akan berbeda dengan variabel a.

Identifier tidak boleh berupa angka atau diawali dengan karakter yang berupa angka. Contoh : long 1000; // SALAH karena identifier berupa angka long 2X; // SALAH karena identifier diawali oleh karakter berupa angka int X2; // BENAR karena identifier tidak diawali oleh angka

Identifier tidak boleh mengandung spasi. Identifier tidak boleh mengunakan karakter-karakter symbol (#, @, ?, !,$, dll) Identifier tidak boleh menggunakan kata kunci (.keyword) yang terdapat pada C++.

Contoh : long break; // SALAH karena menggunakan kata kunci break int return; // SALAH karena menggunakan kata kunci return

Nama identifier sebaiknya disesuaikan dengan kebutuhannya, artinya jangan sampai orang lain bingung hanya karena salah dalam penamaan identifier.

Sebisa mungkin, hindarilah penggunaan nama identifier yang sama dengan identifier yang digunakan oleh C++ .

Berdasarkan jenisnya, identifier sendiri dibagi ke dalam dua bagian yaitu konstanta dan variabel. Adapun penjelasan lebih detilnya dapat Anda lihat pada sub bab di bawah ini. Konstanta Konstanta adalah jenis identifier yang bersifat konstan atau tetap, artinya nilai dari konstanta di dalam program tidak dapat diubah.Konstanta berguna untuk menentukan nilai yang merupakan tetapan, misalnya nilai pi (π), kecepatan cahaya dan lainnya. Dengan mendefinisikan konstanta yang bersifat global, maka kita dapat menggunakannya di setiap bagian program. Dalam C++ , terdapat dua buah cara untuk membuat sebuah konstanta, yaitu dengan menggunakan preprocessor directive #def ine dan menggunakan kata kunci const. a. Menggunakan Preprocessor Directive #define

Kita dapat menggunakan makro untuk mendefinisikan sebuah konstanta, yaitu dengan menggunakan preprocessor directive #define. Untuk mengetahui lebih jauh tentang manfaat penggunaan konstanta, perhatikan program di bawah ini. #include <iostream> using namespace std; int main() { int A[5] for (int C=0; C<5; C++) { A[C] = C * 10; } for (int c=0; c<5; c++) { cout<<A[c]<<endl; } return 0; }

Page 15: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 21

Anda bingung? Jika Anda belum memahami maksud dari sintaks program di atas, itu 'wajar' dan Anda tidak perlu cemas karena semuanya akan kita pelajari pada bab-bab selanjutnya dalam buku ini. Namun, yang perlu Anda perhatikan di sini adalah bilangan 5 di atas. Bilangan tersebut muncul beberapa kali dalam program, hal ini akan merepotkan jika temyata kita ingin melakukan perubahan terhadap bilangan tersebut dengan bilangan yang lain, misalnya 10. Jika kita menggunakan sintaks di atas maka kita harus melakukan perubahan terhadap semua bilangan 5 yang ada dengan bilangan 10. Untuk itu, dalam kasus ini sebaiknya kita menjadikan bilangan 5 tersebut ke dalam suatu konstanta sehingga jika terjadi perubahan kita hanya melakukan perubahan nilai terhadap konstantanya saja. Berikut ini program yang merupakan program perbaikan dari program sebelumnya. #include <iostream> #define MAX 5; using namespace std; int main() { int A[MAX]; for (int C=0; C<MAX; C++) { A[C] = C * 10; } for (int c=0; c<MAX; c++) { cout<<A[c]<<endl; } return 0; }

a. Menggunakan Kata Kunci const

Selain dari cara di atas, dalam C++ kita dapat mendefinisikan sebuah konstanta dengan menggunakan kata kunci const. Berikut ini adalah bentuk umumnya.

const tipe_data nama_konstanta = nilai_tetapan;

Contoh pendeklarasian konstanta-konstanta adalah sebagai berikut: const double PI = 3.14; const int x = 5; const char nama =’Nano’;

Untuk dapat lebih memahaminya, berikut ini dituliskan sebuah sintaks program yang merupakan implementasi dari penggunaan kata kunci const. #include <iostream> using namespace std; const int MAX = 5; int main() { int A[MAX]; for (int C=0; C<MAX; C++) { A[C] = C * 10; } for (int c=0; c<MAX; c++) { cout<<A[c]<<endl; } return 0; }

Page 16: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 22

VARIABEL Berbeda dengan konstanta yang mempunyai nilai tetap, variable adalah sebuah identifier yang mempunyai nilai dinamis. Arti kata 'dinamis' di sini bermaksud bahwa nilai variabel tersebut dapat kita ubah sesuai kebutuhan dalam program. Berikut ini adalah bentuk umum pendeklarasian sebuah variabel dalam C++. tipe__data nama_variabel;

Sebenarnya bentuk umum ini sudah dijelaskan pada bagian awal yaitu pada bagian yang menerangkan pendeklarasian identifier, hanya di sini lebih dikhususkan lagi, yaitu hanya untuk variabel. Jika kita akan mendeklarasikan beberapa variabel yang bertipe sama, maka kita dapat menyingkat penulisannya dengan menggunakan bentuk umum di bawah ini. tipe_data nama_variabell, nama_variabel2, nama_variabel3;

Contoh : int A, B, C;

Sedangkan jika kita ingin rnelakukan inisialisasi (memberi nilai awal), maka sintaksnya dapat di ganti dengan menggunakan sintaks berikut: int A=10, B=15, C=25;

a. Variabel Global Jika kita sedang membuat program dan kita membutuhkan sebuah variabel yang dapat dikenali oleh semua lingkungan dalam program kita, maka kita harus mendefinisikan variable tersebut sebagai variabel yang bersifat gobal. Kita telah mengetahui bahwa program dalam bahasa C++ selalu terdapat fungsi utama dengan nama main() . Jika kita mendeklarasikan sebuah variabel di luar fungsi, maka dengan sendirinya kompiler akan menganggap variabel tersebut sebagai variabel global. Berikut ini adalah contoh program yang rnenunjukkan penggunaan variabel yang bersifat global. #include <iostream> using namespace std; int A; // Variabel A adalah variabel global // karena dideklarasikan di luar fungsi utama // Membuat fungsi utama int main() { A = 10; // Memasukkan (assign) nilai ke dalam variabel cout<<"Nilai A = "<<A<<endl; return 0; }

b. Variabel Lokal

Berbeda sekali dengan variabel global, variabel lokal adalah variabel yang hanya dikenali oleh suatu fungsi saja, artinya tidak dikenal oleh lingkungan luar di dalam program yang kita buat. Adapun bentuk pendeklarasian variabel yang bersifat lokal ini harus berada dalam lingkup fungsi yang dimaksud. Berikut ini contoh pendeklarasian variabel yang bersifat lokal.

Page 17: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 23

#include <iostream> using namespace std; // Membuat fungsi utama int main() { int A; // Variabel A bersifat lokal dan hanya dikenali // oleh fungsi utama atau main() A = 10; // Memasukkan (assign) nilai ke dalam variabel A cout<<"Nilai A = "<<A<<endl; return 0; }

Jika kita menambahkan fungsi lain di dalam program, dan kita mengakses variabel A yang telah dideklarasikan di dalam fungsi main (} , maka program tidak akan dapat dijalankan karena fungsi baru yang kita tambahkan tentu tidak dapat mengenali variabel A di atas. Hal ini merupakan bukti nyata bahwa variabel A di atas bersifat lokal.

c. Inisialisasi Variabel Dalam penulisan program ada saatnya kita hams melakukan inisialisasi nilai terhadap sebuah variabel yang dideklarasikan. Artinya jika kita tidak melakukan pengisian nilai terhadap variabel tersebut, maka variabel masih berisi nilai default. Hal ini sebenarnya sudah disinggung di atas, namun di sini akan kita bahas kembali melalui contoh-contoh program. Berikut ini contoh program yang tidak melakukan inisialisasi nilai awal. #include <iostream> using namespace std; int main() { int X; // Menampilkan nilai X sebelum dilakukan isian nilai (assignment) cout<<"Nilai X sebelum dilakukan assigment : "<<X<<endl; X = 10; cout<<"Nilai X sesudah dilakukan assignment : "<<X<<endl; return 0; }

Hasil dari program di atas adalah sebagai berikut Pada hasil di atas dapat kita lihat bahwa jika kita tidak melakukan inisialisasi dan kita sudah memanggil variable tersebut, maka nilai yang akan ditampilkan oleh compiler adalah nilai 0. Berikut ini jika program di atas ditambahkan proses inisialisasi. #include <iostream> using namespace std; int main() { int X = 5; cout<<"Nilai X sebelum dilakukan assignment : "<<X<<endl; X = 10; cout<<"Nilai X sesudah dilakukan assignment : "<<X<<endl; return 0; }

Hasil dari program di atas adalah sebagai berikut

Nilai X sebelum assignment : 0 Nilai X setelah assignment : 10

Nilai X sebelum assignment : 5 Nilai X setelah assignment : 10

Page 18: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 24

Variabel Statis Variabel statis adalah variabel yang menempati ruang memori komputer secara permanen, artinya nilai terakhir dari variabel ini akan terus disimpan. Dalam C++, untuk menyatakan variabel statis adalah dengan menggunakan kata kunci static. Adapun bentuk umum pendeklarasiannya adalah seperti yang tampak di bawah ini.

static tipe_data nama_variabel;

Seperti halnya variabel biasa, variabel statis ini juga dibagi ke dalam dua jenis, yaitu variabel statis lokal dan variabel statis global.

1 . Variabel Statis Lokal Variabel statis lokal ini diterapkan di dalam suatu fungsi, sehingga nama variabelnya hanya akan dikenali di dalam fungsi saja. Namun perlu diperhatikan bahwa nilai terakhir yang dihasilkan akan terus disimpan. Dengan demikian setiap pemanggilan fungsi yang sama pasti akan memberikan hasil yang berbeda. Untuk mengetahui lebih jauh mengenai variabel statis, perhatikanlah dua program di bawah ini. a. Menggunakan variabel biasa

#include <iostream> using namespace std; // Membuat fungsi dengan nama contoh int contoh() { int A = 0; // Mendeklarasikan variabel biasa A = A + 10; return A; } int main() { // fungsi utama int x, y, z; // Mendeklarasikan variabel x, y dan z x = contoh(); // Memanggil fungsi contoh() // untuk yang pertama kali y = contoh(); // Memanggil fungsi contoh() // untuk yang kedua kali z = contoh(); // Memanggil fungsi contoh() // untuk yang ketiga kali // Menampilkan nilai yang telah diproses di dalam fungsi cout<<"Nilai fungsi pada pemanggilan pertama : "<<x<<endl; cout<<"Nilai fungsi pada pemanggilan kedua : "<<y<<endl; cout<<"Nilai fungsi pada pemanggilan ketiga : "<<z<<endl; return 0; }

Hasil dari program di atas adalah sebagai berikut

b. Menggunakan variabel statis #include <iostream> using namespace std; // Membuat fungsi dengan nama contoh int contoh() { static int A = 0; // Mendeklarasikan variabel statis lokal A = A + 10; return A; }

Nilai fungsi pada pemanggilan pertama : 10 Nilai fungsi pada pemanggilan kedua : 10 Nilai fungsi pada pemanggilan ketiga : 10

Page 19: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 25

// Fungsi utama int main() { int x, y, z; // Mendeklarasikan variabel x, y dan z x = contoh(); // Memanggil fungsi contoh() // untuk yang pertama kali y = contoh(); // Memanggil fungsi contoh() // untuk yang kedua kali z = contoh(); // Memanggil fungsi contoh() //untuk yang ketiga kali // Menampilkan nilai yang telah diproses di dalam fungsi cout<<"Nilai fungsi pada pemanggilan pertama : "<<x<<endl; cout<<"Nilai fungsi pada pemanggilan kedua : "<<y<<endl; cout<<"Nilai fungsi pada pemanggilan ketiga : "<<z<<endl; return 0; }

Hasil dari program di atas adalah sebagai berikut

Jika kita amati hasil program di atas, nilai dari setiap pemanggilan fungsi akan memberikan hasil yang berbeda. Konsepnya sederhana, yaitu pada pemanggilan fungsi yang pertama kali nilai variabel A masih bernilai 0 (sesuai dengan inisialisasi). Fungsi akan menambahkan nilai tersebut dengan 10, maka nilai yang dikembalikan fungsi contohf) adalah 10. Sampai di sini, karena variabel A adalah variabel statis maka pada saat pemanggilan fungsi yang kedua, variabel A masih menyimpan nilai 10, bukan 0. Dengan demikian pemanggilan fungsi kedua tentu akan menambahkan nilai A dengan nilai 10, sehingga nilai yang dikembalikan adalah 20, begitu seterusnya.

2 . Variabel Statis Global Dalam memogram dengan bahasa C++, kita diizinkan untuk melakukan pembuatan fungsi-fungsi dalam file yang terpisah dari program utama. Untuk kasus-kasus tertentu dimana variabel statis lokal tidak dapat digunakan, kita dapat membuat file terpisah yang mempunyai variabel statis global. Sebagai gambaran dari pemahaman materi ini, perhatikanlah contoh penggunaannya dalam potongan sintaks program di bawah ini. static int A; // Mendeklarasikan variabel statis global void set_NilaiA(int aa} ; int get_NilaiA() ; void set_NilaiA(int aa){ A = aa; } int get_NilaiA() { A = A + 10; return A; }

Nilai fungsi pada pemanggilan pertama : 10 Nilai fungsi pada pemanggilan kedua : 20 Nilai fungsi pada pemanggilan ketiga : 30

Page 20: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 26

Variabel Register Tidak seperti variabel biasa yang berada di memori, variable register ini akan disimpan di register CPU. Dengan demikian, untuk mengisikan atau mengubah nilai dari variabel register tentunya tidak memerlukan akses memori sehingga prosesnya juga akan lebih cepat. Dalam C++, variable register hanya dapat diisi oleh tipe data char, int dan pointer saja serta hanya boleh dideklarasikan sebagai variabel lokal ataupun parameter dari sebuah fungsi. Untuk mendeklarasikan variabel register, kita harus mengunakan kata kunci register. Bentuk umum dari pendeklarasian variabel register adalah sebagai berikut register tipe_data nama_variabel;

Berikut ini adalah contoh program yang menggunakan variabel register. #include <iostream> using namespace std; // Membuat fungsi untuk menghitung Me int Hitung (register int M, register int e) { register int temp; temp = 1; for ( ; e; e--) { temp = temp * M; } } // Fungsi utama int main() { int X; X = Hitung(5, 3); // Melakukan perhitungan 53 cout<<X<<endl; return 0; }

Jika Anda masih bingung dengan kehadiran struktur pengulangan for di atas, Anda dapat lihat lebih detail pada bab pengulangan. TIPE DATA Tipe data berfungsi untuk merepresentasikan jenis dari sebuah nilai yang terdapat dalam program. Sebagai contoh kita mempunyai suatu data dengan nilai 2, maka 2 termasuk ke dalam tipe bilangan bulat. Begitupun dengan data yang bernilai "Rahasia C++ ", maka data tersebut dikategorikan ke dalam tipe teks (string], Kesalahan dalam menyebutkan tipe data akan menyebabkan program yang kita buat tidak dapat dijalankan. Oleh karena itu, kita harus pandai dalam menentukan tipe data yang akan digunakan sesuai kebutuhan program yang kita buat. Dalam bahasa C++, tipe data dibagi menjadi tiga bagian besar yaitu tipe dasar, tipe bentukan dan tipe enumerasi. Tipe Data Dasar Dalam C++ terdapat beberapa tipe data dasar yang telah didefinisikan, yaitu yang digolongkan ke dalam tipe bilangan bulat (integer), bilangan riil (floating-point), tipe logika (Boolean), tipe karakter/teks (character/string). Tipe-tipe tersebut adalah tipe yang siap digunakan tanpa adanya proses manipulasi terlebih dahulu. a. Tipe Bilangan Bulat Tipe data ini digunakan untuk data-data angka yang tidak mengandung angka di belakang koma. Misalnya 21, 3, 78 dan sebagainya. Tipe data yang termasuk ke dalam kategori ini adalah seperti yang terlihat pada tabel di bawah ini.

Page 21: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 27

Tipe Data Size(bit) Rentang

int 16 atau 32 -32.768 sampai 32.767 atau -2,147,483,648 sampai 2,147,483,647

unsigned int 16 atau 32 0 sampai 65.535 atau 0 sampai 4,294,967,295

signed int 16 atau 32 Sama seperti int

short int 16 -32.768 sampai 32.767

unsigned short int 16 0 sampai 65.535

signed short int 16 Sama seperti short int

long int 32 -2.147.483.648 sampai 2.147.483.647

signed long int 32 Sama seperti long int

unsigned long int 32 0 sampai 4.294.967.295

b. Tipe Bilangan Riil Tipe ini adalah tipe yang merepesentasikan data-data bilangan yang mengandung angka di belakang koma, misalnya 3.78, 21.03, dan banyak lagi yang lainnya. Adapun tipe data yang termasuk ke dalam kategori ini adalah seperti yang ditunjukkan pada tabel di bawah ini.

Tipe Data Size(bit) Rentang Presisi float 32 1.2E-38 sampai 3.4E+38 6 digit presisi

double 64 2.3E-308 sampai 1.7E+308 15 digit presisi

long double 80 3.4E-4932to1.1E+4932 19 digit presisi

c. Tipe Logika Tipe ini merepresentasikan data-data yang hanya mengandung dua buah nilai, yaitu nilai logika (boolean). Nilai logika itu sendiri hanya terdiri dari nilai benar (direpresentasikan dengan nilai selain nol, biasanya nilai 1) dan salah (direpresentasikan dengan nilai 0). Untuk sebagian kompiler C++ tertentu yang telah memenuhi standar ANSI/ISO, tipe ini telah dinyatakan dalam tipe bool. Dalam pemrograman, nilai ini umumnya lebih dikenal dengan nilai true (benar) dan false (salah). d. Tipe Karakter / String Tipe ini merepresentasikan data-data yang berupa karakter. Tipe data ini dinyatakan dengan tipe char, sedangkan untuk string (=kumpulan karakter) dinyatakan sebagai pointer dari tipe char, yaitu yang dituliskan dengan char*. Sebagai contoh adalah karakter 'A', 'a', ' ', '!', '#' dan sebagainya merupakan tipe char, sedangkan "Mengungkap", "Rahasia", "C++ ", "Budi", "Raharjo" adalah contoh dari tipe char*. Untuk lebih memudahkan Anda dalam membedakan tipe karakter dan string adalah tanda yang mengapitnya. Dalam C++, tipe karakter diapit oleh tanda petik tunggal ('), sedangkan tipe string diapit oleh tanda petik ganda ("). Adapun tipe data dalam kategori ini yang didefinisikan oleh ANSI/ISO C++ Standard adalah seperti yang terlihat pada tabel di bawah ini.

Tipe Data Size(bit) Rentang

char 8 -1 28 sampai 1 27 atau 0 sampai 255

Unsigned char 8 0 sampai 255

signed char 8 -128 sampai 127

Page 22: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 28

Berikut ini adalah program yang menunjukkan penggunaan tipe data char dan char*. #include <iostream> using namespace std; int main() { // Mendeklarasikan variabel Karakter dengan nilai 'A' char Karakter = 'A'; // Mendeklarasikan variabel Teks dengan nilai "Kata" char* Teks = "Kata"; char TEKS[10] = "Coba"; cout<<Karakter<<endl; cout<<Teks<<endl; cout<<TEKS<<endl; return 0; }

Hasil yang diperoleh dari program di atas adalah sebagai berikut : Tipe Data Bentukan Tipe data bentukan adalah tipe data yang dibuat sendiri sesuai kebutuhan dalam program yang akan kita buat. Tipe ini lebih dikenal dengan sebutan dalam bahasa asing, yaitu user defined types. Adapun yang termasuk ke dalam tipe bentukan adalah array (larik), struktur dan enumerasi. Jika Anda pernah memogram dengan bahasa Pascal, maka struktur ini dikenal dengan istilah rekaman (record). a. Structure. (Akan dipelajari pada Semester III.) b. Enumerasi Tipe enumerasi adalah tipe data yang nilainya terbatas pada nilai-nilai yang telah didefinisikan saja. Tipe enumerasi digunakan untuk membentuk tipe data yang nilainya bersifat pasti. Misalnya untuk mendefinisikan tipe jenis kelamin, nama hari, warna primer dan sebagainya. Kita tahu bahwa jenis kelamin hanya terdiri dari pria dan wanita saja, maka jenis kelamin dapat kita bentuk ke dalam tipe enumerasi. Dalam bahasa C+ + , untuk mendefinisikan tipe enumerasi adalah dengan menggunakan kata kunci enum. Berikut ini adalah bentuk umum untuk mendefinisikannya. enum nama_tipe { nllai_l, nilai_2, ...};

Sebagai contoh, di bawah ini dituliskan contoh-contoh pendefinisian tipe enumerasi. . enum JENIS_KELAMIN {Pria, Wanita}; enum HARI {Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu); enum WARNA_PRIMER {Merah, Biru, Hijau);

Berikut ini adalah contoh implementasinya di dalam program. #include <iostream> using namespace std; enum JENIS_KELAMIN { Pria, Wanita }; int main() { JENIS_KELAMIN gender; cout << “Jenis Kelamin : “; cin >> gender ; return 0; }

A Kata Coba

Page 23: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 29

STRING Null Terminated String Dalam C + + , string yang digunakan bertipe null terminated string, yaitu jenis string yang diakhiri oleh karakter null ('\0'), bukan nol. Kita tahu bahwa string adalah kumpulan (array) dari karakter, oleh karena itu jika kita akan mendeklarasikan variabel bertipe string, maka kita harus melebihkan lebar sebanyak satu karakter untuk posisi karakter null. Sebagai contoh kita akan melakukan deklarasi variabel yang bertipe string dan mengisikannya dengan teks 'Budi’, maka bentuk deklarasinya adalah sebagai berikut: // Mendeklarasikan variabel yang bertipe string dengan lebar 5 char NAMA[5]; // Mengisikan nilai ke dalam variabel NAMA NAMA = "Budi";

Jika kita amati potongan tulisan sintaks di atas, sebenarnya kita hanya mengisikan 4 karakter ke dalam variabel NAMA, sedangkan sisa ruangnya akan digunakan untuk menempatkan karakter null. Untuk lebih jelasnya coba perhatikan ilustrasi di samping ini. Dalam mengisikan nilai ke variabel yang bertipe string, kita tidak perlu memasukkan karakter null secara manual, karena C++ secara otomatis akan menambahkannya. Untuk membuktikan hal ini, perhatikanlah program di bawah ini. #include <iostream> using namespace std; int main() { // Mendeklarasikan variabel NAMA dengan tipe char dan // lebar 5 karakter char NAMA[5]; // Mengisikan nilai ke dalam variabel NAMA NAMA = "Budi"; cout<<"Karakter ke-0 : "<<NAMA[0]<<endl; cout<<"Karakter ke-1 : "<<NAMA[1]<<endl; cout<<"Karakter ke-2 : "<<NAMA[2]<<endl; cout<<"Karakter ke-3 : "<<NAMA[3]<<endl; cout<<"Karakter ke-4 : "<<NAMA[4]<<endl; return 0; }

Hasil yang diperoleh dari program di atas adalah sebagai berikut; Dalam C++, terdapat beberapa fungsi siap pakai yang berguna untuk menyelesaikan masalah-masalah yang berkaitan dengan string. Untuk menggunakan fungsi-fungsi tersebut kita harus mendaftarkan file header string.h (untuk C + + lama) atau <cstring> (untuk C++ standar). Berikut ini fungsi-fungsi yang dimaksudkan :

‘B’ ‘u’ ‘d’ ‘I’ ‘\0’

NAMA[1]

NAMA[2]

NAMA[3]

NAMA[4]

NAMA[0]

Karakter ke-0 : B Karakter ke-1 : u Karakter ke-2 : d Karakter ke-3 : i Karakter ke-4 : 0

Page 24: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 30

1. Fungsi strcpy()

Bentuk umum dari fungsi strcpy() dapat dilihat di bawah ini.

char* strcpy() (char S1, const char* S2 )

Fungsi ini berguna untuk melakukan penyalinan (copy) string dari S2 ke S1. Contoh penggunaannya dalam program adalah sebagai berikut: #include <iostream> #include <cstring> using namespace std; int main() { char S1[50]; char* S2; // Melakukan pengisian nilai terhadap variabel S2 S2 = "Ini adalah contoh penyalinan string"; // Melakukan penyalinan string dari variabel S2 ke variabel S1 strcpy(S1, S2); // Menampilkan nilai dari variabel S1 cout<<S1<<endl; return 0; }

Hasil yang diperoleh dari program di atas adalah sebagai berikut:

2. Fungsi strncpy( ) Bentuk umum dari fungsi strncpy ( ) dapat dilihat di bawah ini. char* strncpy{char* SI, const char* S2, size_t n ) ;

Fungsi ini berguna untuk menyalin string sebanyak n karakter dari variabel S2 ke variabel S1. Contoh penggunaannya dalam program adalah sebagai berikut; #include <iostream> #include <cstring> using namespace std; int main() { char S1[50]; char* S2; // Melakukan pengisian nilai terhadap variabel S1 dan S2 S1 = "CONTOH"; S2 = "salin string"; // Melakukan penyalinan string dari variabel S2 ke variabel S1 strcpy(S1, S2, 4); // Menampilkan nilai dari variabel S1 cout<<S1<<endl; return 0; }

Hasil yang diperoleh dari program di atas adalah sebagai berikut :

Ini adalah contoh penyalinan string

saliOH

Page 25: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 31

3, Fungsi strdup()

Bentuk umum dari fungsi strdup() dapat dilihat di bawah ini.

char* strdup(const char* S);

Fungsi ini sebenarnya mirip dengan fungsi strcpy( ) , yaitu untuk melakukan duplikasi string. Contoh penggunaannya dalam program adalah sebagai berikut:

#include <iostream> #include <cstring> using namespace std; int main() { char* S1; char* S2; // Melakukan pengisian nilai terhadap variabel S1 S1 = "Contoh Duplikasi String"; // Melakukan duplikasi string dari varaibel S1 ke variabel S2 S2 = strdup(S1); // Menampilkan nilai dari variabel S2 cout<<S2<<endl; return 0; }

4. Fungsi strcat() Bentuk umum dari fungsi strcat ( ) dapat dilihat di bawah ini.

char* atrcat(char* Si, const char* S2);

Fungsi ini berguna untuk menggabungkan (concat) string dari S2 ke posisi akhir dari SI. Contoh penggunaannya dalam program adalah sebagai berikut: #include <iostream> #include <string> using namespace std int main() { char* S1; char* S2; char* spasi = " "; // Melakukan pengisian nilai terhadap variabel S1 dan S2 S1 = "Teks"; S2 = "Gabungan"; // Menambahkan karakter spasi (' ') ke dalam variabel S1 strcat(S1, spasi); // Melakukan penggabungan string yang terdapat // pada variabel S1 dan S2 strcat(S1, S2); // Menampilkan nilai dari variabel S1 // setelah proses penggabungan cout<<S1<<endl; return 0; }

Hasil yang diperoleh dari program di atas adalah sebagai berikut :

Contoh Duplikasi String

Teks gabungan

Page 26: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 32

5. Fungsi strncat() Bentuk umum dari fungsi strncat ( ) dapat dilihat di bawah ini.

char* strncatfchar* S1, const char* S2, size_t n);

Fungsi ini berguna untuk menggabungkan n karakter dari variabel S2 ke posisi akhir dari variabel Si. Contoh penggunaannya dalam program adalah sebagai berikut: #include <iostream> #include <cstring> using namespace std; int main() { char* S1; char* S2; // Melakukan pengisian nilai terhadap variabel S1 dan S2 S1 = "Nama saya adalah "; S2 = "Budi Raharjo"; // Menggabungkan 4 karakter dari variabel S2 ke variabel S1 strncat(S1, S2, 4); // Menampilkan nilai dari variabel S1 // setelah dilakukan penggabungan cout<<S1<<endl; return 0; }

6. Fungsi strlen() Bentuk umum dari fungsi strlen ( ) dapat dilihat di bawah ini.

size_t strlen{const char* S);

Fungsi ini berguna untuk mengembalikan panjang string dari S. Contoh penggunaannya dalam program adalah sebagai berikut: #include <iostream> #include <cstring> using namespace std; int main() { char* S1; char* S2; int panjang_S1, panjang_S2; // Melakukan pengisian nilai terhadap variabel S1 dan S2 S1 = "Budi"; S2 = "Raharjo"; panjang_S1 = strlen(S1); panjang_S2 = strlen(S2); // Menampilkan nilai dari variabel panjang_S1 dan panjang_S2 cout<<"Panjang S1 : "<<panjang_S1<<endl; cout<<"Panjang S2 : "<<panjang_S2<<endl; return 0; }

Nama saya adalah Budi

Panjang S1 : 4 Panjang S2 : 7

Page 27: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 33

7. Fungsi strcmp() Bentuk umum dari fungsi strcmp ( ) dapat dilihat di bawah ini.

int •trcmp(const char* SI, const char* S2);

Fungsi ini berguna untuk membandingkan string yang terdapat pada variabel S1 dan S 2. Nilai yang akan dikembalikan yaitu : • 0 (nol): hal ini terjadi jika S1 sama dengan S2 • kurang dari 0 (negatif) : hal ini terjadi jika S1 lebih kecil dari S2 • lebih dari 0 (positif) : hal ini terjadi jika S1 lebih besar dariS2 Contoh penggunaannya dalam program adalah sebagai berikut: #include <iostream> #include <cstring> using namespace std; int main() { char* S1; char* S2; // Melakukan pengisian nilai yang sama // terhadap variabel S1 dan S2 S1 = "COBA"; S2 = "COBA"; // Menampilkan hasil perbandingan string // dari variabel S1 dan S2 cout<<"Hasil perbandingan : "<<strcmp(S1, S2)<<endl; // Melakukan perubahan nilai terhadap variabel S1 S1 = "Coba"; // Menampilkan kembali hasil perbandingan string // dari variabel S1 dan S2 cout<<"Hasil perbandingan : "<<strcmp(S1, S2)<<endl; // Melakukan perubahan nilai terhadap variabel S2 S2 = "coba"; // Menampilkan kembali hasil perbandingan string // dari variabel S1 dan S2 cout<<"Hasil perbandingan : "<<strcmp(S1, S2)<<endl; return 0; }

8. Fungsi strrev() Bentuk umum dari fungsi strrev ( ) dapat dilihat di bawah ini : char* strrev(char* S);

Fungsi ini berguna untuk membalikkan string dari variabel S. Contoh penggunaannya dalam program adalah sebagai berikut :

Hasil perbandingan : 0 Hasil perbandingan : 32 Hasil perbandingan : -32

Page 28: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 34

#include <iostream> #include <cstring> using namespace std; int main() { char* S = "Budi Anduk"; // Melakukan penulisan string mulai dari // posisi akhir variabel S strrev(S); // Menampilkan nilai dari variabel S setelah dibalik cout<< S<<endl; return 0; }

9. Fungsi strchr() Bentuk umum dari fungsi strchr() dapat dilihat di bawah ini.

char* strchr( const char* S, int ch );

Fungsi ini akan mencari lokasi karakter dari suatu string. Jika karakter ditemukan, maka fungsi ini akan mengembalikan pointer dari string yang dimulai dari karakter tersebut, tetapi jika tidak maka fungsi akan mengembalikan nilai 0. Contoh penggunaannya dalam program adalah sebagai berikut: #include <iostream> #include <cstring> using namespace std; int main() { char* S = "C++ adalah segalanya bagiku"; char* PStr; // Melakukan pencarian karakter '+' di dalam varaibel S PStr = strchr(S, '+'); // Menampilkan nilai dari variabel PStr cout<< PStr<<endl; return 0; }

10. Fungsi strstr() Bentuk umum dari fungsi strchr() dapat dilihat di bawah ini. char* strstr(const? char* S, const char* substr);

Fungsi ini akan mencari lokasi substring dari suatu string. Jika substring ditemukan, maka fungsi ini akan mengembalikan pointer dari string yang dimulai dari substring tersebut, tetapi jika tidak maka fungsi akan mengembalikan nilai 0. Konsep yang terdapat pada fungsi adalah sama seperti fungsi strchr() . Contoh penggunaannya dalam program adalah sebagai berikut :

kudnA iduB

++ adalah segalanya bagiku

Page 29: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 35

#include <iostream> #include <cstring> using namespace std; int main() { char* S = "Pencipta C++ adalah Bjarne Stroustrup"; char* PStr; // Melakukan pencarian substring "Bjarne" di dalam varaibel S PStr = strstr(S, 'Bjarne'); // Menampilkan nilai dari variabel PStr cout<< PStr<<endl; return 0; }

Konversi String Dalam pembuatan sebuah program kerap kali kita dituntut untuk melakukan perubahan terhadap format string, misalnya mengubah string menjadi huruf kapital ataupun sebaliknya. Untuk melakukan hal ini, C++ telah menyediakan dua buah fungsi, yaitu strlwr ( ) dan strupr(). #include <iostream> #include <cstring> using namespace std; int main() { char* K = "CONTOH MENGECILKAN HURUF"; char* B = "contoh membesarkan huruf"; char* hasilK, hasilB; // Mengubah string dari variabel S menjadi huruf kecil hasilK = strlwr(K); hasilB = strlwr(B); // Menampilkan nilai dari variabel hasil cout<< hasilK <<endl; cout<< hasilB <<endl; return 0; }

Input String Jika kita hanya menggunakan statemen cin dalam memasukkan string ke sebuah variabel, maka kita akan mengalami kesulitan jika ternyata string yang kita masukkan tersebut mengandung spasi (karakter ' '). Hal ini disebabkan spasi pertama yang ditemukan dalam sebuah string yang diinput melalui keyboard akan dianggap sebagai karakter null. Untuk lebih memahami konsep input string, perhatikan contoh-contoh program di bawah ini.

#include <iostream> using namespace std; int main() { char S[20]; cout<<"Masukkan nama Anda : "; // Meminta input dari user dan menyimpan nilainya // ke dalam variabel S, misal Budi cin>>S; // Menampilkan kembali nama yang telah dimasukkan cout<<"Hai "<<S<<", apa kabarmu?"<<endl;

Bjarne Stroustrup

contoh mengecilkan huruf CONTOH MEMBESARKAN HURUF

Page 30: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 36

return 0; }

Pada saat program di atas dijalankan dan misalnya kita mengisikan nama tesebut dengan string "Budi", maka hal ini tidak menimbulkan masalah. Adapun hasil yang akan diberikan adalah sebagai berikut :

Namun, apa yang terjadi bila kita memasukkan string "Budi Anduk"? Temyata hasil yang diberikan masih tetap sama seperti pada kotak di atas (ingat tanda spasi dianggap terminated string=akhir dari sebuah string), padahal hasil yang kita inginkan adalah seperti yang tampak di bawah ini.

Kita tentu tidak menginginkan hal di atas terjadi. Oleh karena itu, untuk menjawab kasus ini kita harus menggunakan fungsi getline(), dengan bentuk umum fungsinya adalah :

&istream getline(char* buffer, int ukuran,char delimiter = '\n' ) ; &istream getline(signed char* buffer, int ukuran,char delimiter = '\n') ; &istream getline(unsigned char* buffer, int ukuran, char delimiter = '\n' ) ;

Setelah mengetahui fungsi getline(), sekarang kita kembali ke pokok permasalahan kita yaitu dengan memperbaiki program di atas dengan sintaks berikut:

#include <iostream> using namespace std;

int main() { char S[20]; cout<<"Masukkan nama Anda : "; // Meminta input dari user menggunakan fungsi getline cin.getline(S, sizeof(S) - 1); // Menampilkan kembali nama yang telah dimasukkan cout<<"Hai "<<S<<", apa kabarmu?"<<endl; return 0; }

Atau kita juga dapat menggunakan objek string, yaitu dengan menuliskannya seperti di bawah ini. #include <iostream> #include <cstring> using namespace std; int main() { string S; cout<<"Masukkan nama Anda : "; // Meminta input dari user menggunakan fungsi getline getline(cin, S); // Menampilkan kembali nama yang telah dimasukkan cout<<"Hai "<<S<<", apa kabarmu?"<<endl; return 0; }

Hasil yang diberikan oleh kedua program di atas adalah sama saja. Jika kita memasukkan string "Budi Anduk", maka hasil yang akan ditampilkan adalah sesuai dengan apa yang kita inginkan seperti tampak di bawah ini.

Hai Budi, apa kabarmu?

Hai Budi Anduk, apa kabarmu?

Hai Budi Anduk, apa kabarmu?

Page 31: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 37

OPERATOR Dalam pengembangan sebuah program kerap kali dituntut untuk mendefinisikan operasi-operasi di dalamnya, baik itu berupa operasi perhitungan, perbandingan maupun yang lainnya. Untuk melakukan hal ini tentunya kita harus menggunakan operator, Pada bagian ini Anda akan dikenalkan dengan operator-operator yang terdapat pada bahasa C++ beserta penggunaannya di dalam program. Bahasa C++ sendiri menawarkan banyak operator untuk melakukan pemecahan masalah-masalah tertentu di dalam program. Dalam buku ini operator-operator tersebut akan dikelompokkan ke dalam 4 bagian, yaitu operator assignment, unary, binary dan ternary. Sebagai pengenalan bagi Anda, sebelum melangkah ke pembahasan yang lebih jauh, berikut ini istilah-istilah yang harus diketahui dalam bekerja dengan operator. Misalnya jika terdapat suatu statemen yang berupa persamaan matematika dan dituliskan sebagai berikut: F adalah Variabel = adalah Operator Assignment 3 dan 7 adalah Operand 3 + 7 adalah Ekspresi + adalah Operator Aritmetika (Penjumlahan) F = 3 + 7 adalah Statemen Aritmetika Operator Assignment Operator assignment adalah operator yang berfungsi untuk memasukkan (assign) nilai ke dalam suatu variabel ataupun konstanta. Operator ini dilambangkan dengan tanda sama dengan (=). #include <iostream> using namespace std; int main () { // Mendeklarasikan konstanta // dengan melakukan assignment dengan nilai 3.14 const PI = 3.14; // Mendeklarasikan variabel-variabel char MyChar; // Mendeklarasikan variabel bertipe char char* MyString; // Mendeklarasikan variabel bertipe char* int MyInteger; // Mendeklarasikan variabel bertipe int double MyDouble; // Mendeklarasikan variabel bertipe double // Melakukan assignment terhadap variabel-variabel di atas MyChar = 'C'; MyString = "Mengungkap Rahasia C++"; MyInteger = 21; MyDouble = 21.0378; // Menampilkan nilai dari variabel-variabel di atas cout<<"MyChar : "<<MyChar<<endl; cout<<"MyString : "<<MyString<<endl; cout<<"MyInteger : "<<MyInteger<<endl; cout<<"MyDouble : "<<MyDouble; return 0; }

F = 3 + 7

Page 32: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 38

Operator Unary Dalam ilmu matematika yang disebut dengan operator unary adalah operator yang hanya melibatkan sebuah operand. Adapun yang termasuk ke dalam operator unary adalah seperti tampak pada tabel di bawah ini.

Operator Jenis Operasi Contoh

+ Membuat nilai positif +7

- Membuat nilai negatif -7

++ Increment C++ atau ++C

-- Decrement C-- atau --C #include <iostream> using namespace std; int main() { int C; // Mendeklarsikan variabel C // Mengisikan nilai ke dalam variabel C dengan nilai 5 C = 5; // Melakukan pre-increment cout<<"Nilai C awal : "<<C<<endl; cout<<"Nilai ++C : "<<++C<<endl; cout<<"Nilai C akhir : "<<C<<endl; cout<<'\n'; // Mengubah nilai yang terdapat dalam variabel C // dengan nilai 10 C = 10; // Melakukan post-increment cout<<"Nilai C awal : "<<C<<endl; cout<<"Nilai C++ : "<<C++<<endl; cout<<"Nilai C akhir : "<<C<<endl; // Mengisikan nilai ke dalam variabel C dengan nilai 5 C = 5; // Melakukan pre-decrement cout<<"Nilai C awal : "<<C<<endl; cout<<"Nilai --C : "<<--C<<endl; cout<<"Nilai C akhir : "<<C<<endl; cout<<'\n'; // Mengubah nilai yang terdapat dalam variabel C // dengan nilai 10 C = 10; // Melakukan post-decrement cout<<"Nilai C awal : "<<C<<endl; cout<<"Nilai C-- : "<<C--<<endl; cout<<"Nilai C akhir : "<<C<<endl; return 0; }

Operator Binary Operator binary adalah operator yang digunakan dalam operasi yang melibatkan dua buah operand. Dalam bahasa C++ , operator binary ini dikelompokkan lagi ke dalam empat jenis operator, yaitu : 1. Aritmetika, 2. Logika,

Nilai C awal ; 5 Nilai++C ;6 Nilai C akhir ; 6

Nilai C awal ; 10 Nilai++C ;10 Nilai C akhir ; 11

Nilai C awal ; 5 Nilai --C ;4 Nilai C akhir ; 4

Nilai C awal ; 10 Nilai C-- ;10 Nilai C akhir ; 9

Page 33: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 39

3. Relasional dan 4. Bitwise. Operator Aritmetika Operator aritmetika adalah operator yang digunakan untuk melakukan operasi-operasi aritmetika seperti penjumlahan, pengurangan dan sebagainya. Adapun yang termasuk dalam operator aritmetika di dalam C++ adalah seperti yang tampak pada tabel di bawah ini.

Operator Jenis Operasi Contoh

+ Penjumlahan 2 + 3 = 5

- Pengurangan 5 - 3 = 2

* Perkalian 2 * 3 = 6

/ Pembagian 10.0 / 3.0 = 3.3333

% Sisa bagi (modulus) 10 % 3 = 1 #include <iostream> using namespace std; int main() { // Mendeklarasikan variabel X, Y dan Z bertipe int int X = 10, Y = 3; int B, M, K ; // Mendeklarasikan variabel A, B dan C bertipe float float A = 10.0, Y = 3.0; float P, Q; // Operand Bilangan Bulat // Melakukan operasi perkalian K = X * Y; // Melakukan operasi pembagian dan modulus B = X / Y; M = X % Y; // Menampilkan hasil cout<<X<<" * "<<Y<<" = "<<K<<endl; cout<<X<<" / "<<Y<<" = "<<B<<endl; cout<<X<<" % "<<Y<<" = "<<M<<endl; // Operand Bilangan decimal (floating point) // Melakukan operasi perkalian P = A * B; // Melakukan operasi pembagian Q = A / B; // Menampilkan hasil cout<<A<<" * "<<B<<" = "<<P<<endl; cout<<A<<" / "<<B<<" = "<<Q<<endl; return 0; }

Operator Logika Operator logika adalah operator yang digunakan untuk melakukan operasi dimana nilai yang dihasilkan dari operasi tersebut hanya berupa nilai benar (true) dan salah (false], Nilai ini disebut dengan nilai boolean. Boolean sendiri ditemukan oleh seorang matematikawan Inggris yang bernama George Bool. Dalam bahasa C++, nilai benar tersebut direpresentasikan dengan bilangan selain 0 (biasanya nilai 1), sedangkan nilai salah direpresentasikan dengan nilai 0.

10 * 3 = 30 10 / 3 = 3 10 % 3 = 1

10.0 * 3.0 = 30.00 10.0 / 3.0 = 3.33

Page 34: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 40

Namun, dalam bahasa C++ modern yang telah mendukung tipe bool, nilai benar direpresentasikan dengan nilai true dan nilai salah dengan nilai false. Dalam buku ini, kita hanya akan memakai nilai 0 dan 1 untuk merepresentasikan nilai salah dan benar. Adapun yang termasuk ke dalam operator logika dalam C++ adalah seperti yang tampak pada tabel di bawah ini.

Operator Jenis Operasi Contoh

&& AND (Perkalian Logika, dan) 1 && 0 = 0 1 && 1 = 1 0 && 0 = 0

|| OR (Penjumlahan Logika, atau) 1 || 0 = 1 1 || 1 = 1 0 || 0 = 0

! NOT (Negasi, Inversi) !0 = 1 !1 = 0

Operator Relasional Operator relasional adalah operator yang digunakan untuk menentukan relasi atau hubungan dari dua buah operand. Operator ini ditempatkan di dalam sebuah ekspresi, yang kemudian akan menentukan benar atau tidaknya sebuah ekspresi. Adapun yang termasuk dalam operator relasional di dalam C++ adalah seperti yang tampak pada tabel di bawah ini.

Operator Jenis Operasi Contoh Hasil

> Lebih besar (5 > 2) True

< Lebih Kecil (5 < 2) False

>= Lebih besar atau sama dengan (5 >= 5) True

<= Lebih kecil atau sama dengan (5 <= 2) False

== Sama dengan (5 == 2) False

!= Tidak sama dengan (5 != 2) True

Operator ini banyak digunakan untuk melakukan pengecekan sebuah ekspresi (kondisi) dalam struktur percabangan yang akan dibahas pada bab selanjutnya dalam buku ini. Operator Bitwise Tidak seperti kebanyakan bahasa pemrograman lainnya, C/C++ mendukung penuh operator-operator bitwise. Operator bitwise sendiri berguna untuk melakukan operasi-operasi yang berhubungan dengan pemanipulasian bit. Sejak bahasa C diciptakan, bahasa C banyak digunakan untuk lebih memudahkan pemrograman yang berhubungan dengan alat. Hal ini disebabkan karena bahasa tersebut mendukung operasi-operasi bitwise yang biasanya dilakukan dengan menggunakan bahasa assembly. Walaupun demikian, pada kenyataannya, untuk menyelesaikan kasus-kasus tertentu bahasa C/C++ masih harus menggunakan bahasa assembly yang disisipkan di dalamnya. Hal ini disebut dengan istilah inline assembly, yang akan dibahas pada lampiran di dalam buku ini. Sebagai catatan bahwa operator bitwise ini hanya dapat dilakukan pada operand yang bertipe char dan int saja karena ini berkoresponden dengan tipe byte atau word di dalam bit.

Page 35: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 41

Adapun yang termasuk dalam operator bitwise dalam C++ adalah seperti yang tampak pada tabel di bawah ini.

Operator Jenis Operasi Contoh

& AND 1 & 0 = 0

| OR 1 | 0 = 1

^ Exclusive OR (XOR) 1 ^ 1 = 0 0 ^ 0 = 0

~ NOT ~ 1 = 0

>> Shift Right 10 >> 1 = 5

<< Shift Left 5 << 1 = 10 #include <iostream> using namespace std; int main() { int X, Y; // Menggeser 1 bit ke kanan dari // bentuk biner bil 10 yaitu 1010 --> 0101 X = 10 >> 1; // Menggeser 1 bit ke kiri dari // bentuk biner bil 5 yaitu 0101 --> 1010 Y = 5 << 1; // Menampilkan hasil cout<<"10 >> 1 = "<< X <<endl; cout<<" 5 << 1 = "<< Y <<endl; return 0; }

Desimal Biner(4 bit) Hexadesimal Contoh

0 0000 0 8 >> 1 = 4 geser kanan 1 bit 1000 0100 8 >> 2 = 2 geser kanan 2 bit 1000 0010 11<<1 = 6 geser kiri 1 bit 1011 0110 15<<3 = 8 geser kiri 3 bit 1110 1000

1 0001 1

2 0010 2

3 0011 3

4 0100 4

5 0101 5

6 0110 6

7 0111 7

8 1000 8

9 1001 9

10 1010 A

11 1011 B

12 1100 C

13 1101 D

14 1110 E

15 1111 F

Page 36: BAB III BAHASA PEMROGRAMAN DAN FLOWCHART€¦ · kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi, prosedur dan lain-lain. Contoh:

Algoritma dan Pemrograman I Bag-2 42

Operator Ternary Operator ternary adalah operator yang digunakan dalam operasi yang melibatkan tiga buah operand. Adapun operator yang digunakan untuk menyatakannya adalah operator ?. Konsep yang mendasari operasi ini adalah suatu percabangan (pemilihan) yang didasarkan atas kondisi tertentu. Berikut ini bentuk umum dari penggunaan operator ternary. Ekspresil ? Ekspresi2 : Ekpresi3;

Jika ekspresil bernilai benar, maka program akan mengeksekusi ekpresi2. Sedangkan jika ekspresil bernilai salah maka yang dieksekusi adalah ekspresi3. Berikut ini adalah contoh program yang menggunakan operator tersebut. … int X ; X = (X < 0) ? -X : X; ... …

Penggalan instruksi di atas maknanya adalah : X bilangan bulat. X bersyarat < 0, yaitu - X : jika tidak < 0, maka + X. Pernyataan di atas dapat disederhanakan dengan bahasa samaran berikut : jika X < 0 maka -X selainnya X

Dalam bahasa pemrograman C++ ditulis : if ( X<0 ) -X else X ; atau X = (X < 0) ? -X : X;

Jadi penulisan X=(X<0) ? -X : X adalah untuk meringkas IF .. ELSE diatas.