Materi_ii_-_ekspresi Dan Percabangan

  • Uploaded by: Frans
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Materi_ii_-_ekspresi Dan Percabangan as PDF for free.

More details

  • Words: 3,020
  • Pages: 17
      KU‐1072  PENGENALAN TEKNOLOGI  INFORMASI B  (PTI – B)                 

2008 

MATERI II  EKSPRESI DAN PERCABANGAN  Materi Praktikum  Durasi  TIU/TIK 

Referensi 

Ekspresi dan Percabangan  180  menit [60 menit penjelasan + 120 menit praktikum]  1. Pendahuluan  2. Operator  3. Manipulasi Data dengan Operator  4. Struktur Percabangan (IF CONDITIONAL)  1. Diktat dan Literatur  2. Schildt, C++: The Complete Reference Third Edition,  McGraw‐Hill, 1998 

1. PENDAHULUAN  Operator dan Ekspresi  Operator  dapat  didefinisikan  sebagai  suatu  simbol  yang  menyebabkan  kompiler  melakukan  suatu  kegiatan/aksi  dimana  operator  tersebut  melakukan  aksi  tersebut  atas  operand.  Perlu  diketahui  bahwa  operand dalam bahasa C++ merupakan ekspresi. Lingkup dari operator sebenarnya cukup luas, namun  dalam kesempatan ini pembahasan akan lebih difokuskan pada operator‐operator utama dan operator  assignment.  Selain  pembahasan  mengenai  operator,  dalam  sesi  ini  juga  akan  dibahas  mengenai  struktur  percabangan,  atau  biasa  dikenal  dengan  istilah  if  conditional.  Bentuk  dari  percabangan  ini  bisa  bermacam‐macam tergantung kebutuhan misalnya hanya if, if‐else, if‐elseif, dan lain sebagainya. Jenis‐ jenis tersebut dapat digunakan berdasarkan bentuk dari permasalahan kita yang akan dipecahkan.  NOTE : Prioritas pertama yang dipelajari adalah bagaimana cara untuk memecahkan masalah, kemudian  baru bagaimana menuliskannya dalam bentuk program.   

2. OPERATOR  Operator Aritmatika  Sebelumnya  perlu  untuk  diketahui  bahwa  dalam  menggunakan  suatu  operator  biasanya  kita  juga  melibatkan suatu operator assignment. Untuk lebih jelasnya, perhatikan statement di bawah ini:             A = x + y    Dalam  contoh  ini,  operator  assignment  (=)  menyebabkan  operand  yang  terletak  di  sisi  kiri  operator  assignment  (A)  berubah  menjadi  nilai  yang  dihasilkan  dari  operator  aritmatika  di  sisi  kanan  operator  assignment (x+y). Singkat kata, yang terjadi pada statement di atas adalah nilai penjumlahan dari x dan  y di‐assign ke operand A.  Sesuai  dengan  penamaannya,  operator  aritmatika  terdiri  dari  operator‐operator  yang  membantu  kita  dalam  menyelesaikan  proses  aritmatika,  seperti  penjumlahan,  pengurangan,  perkalian,  dan  lainnya.  Namun tidak semua proses aritmatika menggunakan operator ini. Untuk itu diperlukan tambahan suatu  library yang akan membantu kita untuk memudahkan permasalahan.       

Berikut adalah jenis‐jenis operator aritmatika yang terdapat dalam bahasa C++ :  Operator 

Fungsi 

Contoh Penggunaan 



Penjumlahan 

A = 17 + 8; A bernilai 25 

‐ 

Pengurangan 

A = 17 ‐8; A bernilai 9 



Perkalian 

A = 17 * 8; A bernilai 136 



Pembagian 

A = 17 / 8; A bernilai 2.125 



Sisa bagi (modulus) 

A = 17 % 8; A bernilai 1 

    Untuk lebih jelasnya, mari kita mulai melakukan suatu pemrograman:    INPUT: // Operator Aritmatika #include #include using namespace std; int main () { int a,b; float tambah,kurang,kali,bagi; cout << "Masukkan bilangan bulat a : "; cin >> a; cout << "Masukkan bilangan bulat b : "; cin >> b; tambah = a + b; kurang = a - b; kali = a * b; bagi = (float)a / b; // maksud dari (float)a => variabel a diubah tipenya menjadi float

cout cout cout cout cout

<< << << << <<

"\nHasil "\nHasil "\nHasil "\nHasil "\nHasil

penjumlahan, a pengurangan, a perkalian, a * pembagian, a / modulus, a mod

+ b b b

b b = = =

= = " " "

" << tambah; " << kurang; << kali; << bagi; << a%b;

getch(); // menunggu tombol apapun di keyboard ditekan return 0; }

OUTPUT: Masukkan bilangan bulat a : 17 Masukkan bilangan bulat b : 8 Hasil Hasil Hasil Hasil Hasil

penjumlahan, a pengurangan, a perkalian, a * pembagian, a / modulus, a mod

+ b b b

b b = = =

= 25 = 9 136 2.125 1

  

Dalam contoh di atas dapat dilihat bagaimana operator aritmatika bekerja. Satu hal yang perlu  diperhatikan adalah statement berikut :     bagi = (float)a / b;   atau  bagi = float(a) / b;      Proses  yang terjadi pada baris ini membuat hasil bagi menjadi suatu nilai float kemudian di‐ assign pada variabel(operand) bagi. Mengapa demikian? Tipe variabel a dan b adalah integer (sesuai  dengan deklarasi awal). Apabila kita tidak mengikutsertakan (float) pada baris ini, maka hasil yang keluar  bukanlah 2.125 melainkan 2. cara yang digunakan diatas disebut dengan konversi tipe atau dalam istilah  pemrograman disebut dengan casting. Konversi ini dapat mengubah tipe dari tipe satu ke tipe lainnya.  Misal dari integer ke float, dari double ke float, dan yang lainnya.    INPUT: // Operator Aritmatika #include #include using namespace std; int main () { int a,b; float X, Y, Z; cout << "Masukkan bilangan bulat a : "; cin >> a; cout << "Masukkan bilangan bulat b : "; cin >> b; X = a / b; Y = float(a / b); Z = (float)a / b; cout << "\nHasil pembagian, a / b = " << X; cout << "\nHasil pembagian, float(a / b) = " << Y; cout << "\nHasil pembagian, (float)a / b = " << Z;

getch(); return 0; }

OUTPUT: Masukkan bilangan bulat a : 17 Masukkan bilangan bulat b : 8 Hasil pembagian, a / b = 2 Hasil pembagian, float(a / b) = 2 Hasil pembagian, (float)a / b = 2.125

   X = a / b; Dikarenakan tipe a dan b berupa integer. Maka hasil pembagian tersebut tetap menjadi integer (meskipun tipe Y adalah float). Y = float(a / b); Proses yang berada di dalam kurung didahulukan, sehingga proses a/b dieksekusi duluan. Seperti halnya pada statement sebelumnya, hasilnya adalah 2. Kemudian nilai 2 dikonversi dalam bentuk float menjadi 2.000000 = 2. Z = (float)a / b; Atau Z = float(a) / b;

  Pada statement ini kata ’float’ diletakkan dalam kurung sehingga nilai a/b langsung dihitung  dalam bentuk float kemudian di‐assign ke variabel Z.    Berikut contoh konversi tipe variabel secara ‘default’:   

 

      Jadi, untuk mengkonversi sebuah variabel, kita dapat gunakan sintaks seperti yang sudah dijelaskan  diatas. Misal ada variabel a bertipe double, jika kita ingin mengubahnya menjadi tipe integer kita tinggal  gunakan cara seperti berikut ini.    Y = int (a); // dengan variabel sudah didefinisikan sebelumnya bertipe integer.    Hal lain yang perlu diperhatikan adalah jika kita ingin membuat suatu ekspresi aritmatika, semua  operand‐nya haruslah bertipe sama. Hal ini menandakan sebuah program yang baik dan bersih.    Misal,  A = B + C;    Tipe dari A, B, dan C adalah sama. Baik itu adalah integer, float, double, atau char. Jika ada satu  operand yang tidak sama maka operand tersebut harus dikonversi terlebih dahulu dengan cara yang  sudah dijelaskan diatas.             

Operator Relasi  Hasil dari operator relasi adalah nilai true atau false, dimana hasil tersebut ditentukan dari hasil logika  statement yang dieksekusi.    Operator  Fungsi  Contoh Penggunaan  == 

Persamaan 

17 == 8 

!= 

Pertidaksamaan 

17 != 8 



Perbandingan lebih besar dari 

17 > 8 



Perbandingan lebih kecil dari 

17 < 8 

>= 

Perbandingan lebih besar dari atau sama dengan 

17 >= 8 

<= 

Perbandingan lebih kecil dari atau sama dengan 

17 <= 8 

  Selanjutnya, perhatikan tabel berikut:   

Case 





a = b 

a = = b 







a = 3 (true) 

false 







a = 0 (false) 

false 







a = 0 (false) 

true 

  Sebelum membahas satu per satu kasus diatas, kita lihat dua kolom terakhir dari kanan. Terdapat  bentuk “a = b” dan bentuk “a = = b”.    a = b  : pada statement terjadi proses assigning dimana nilai dari b disimpan dalam variabel a.       Kemudian dilihat apabila nilai a bukan 0 (nol), maka hasil yang dikeluarkan adalah true.       Sebaliknya apabila nilai a adalah 0 (nol), maka hasilnya adalah false.    a  = = b  : Ini adalah pernyataan relasi. Nilai a dan nilai b dicek apakah sama atau tidak. Apabila sama,       maka nilai kembalian adalah true. Jika tidak, maka nilai kembalian adalah false.    Sekarang perhatikan setiap kasus diatas. Lebih mudah dipahami sekarang?         

Operator Logika  Operator logika digunakan untuk menggabungkan satu atau lebih pernyataan relasi. Hasilnya berupa  logika true atau false. Operator logika umumnya digunakan bersamaan operator relasi untuk melakukan  suatu kondisi/persyaratan agar permasalahan dapat dipecahkan dengan lebih efektif. Perhatikan kedua  tabel di bawah ini:    Operator  Fungsi  Contoh Penggunaan  && 

AND 

(20 == 3) && (5<7) Î false AND true = FALSE 

|| 

OR 

(20 == 3) ||  (5<7) Î false AND true = TRUE 



NOT 

!(20 < 3) Î NOT (false) = TRUE 

    R1 

R2 

R1 && R2 

R1 || R2 

! R1 









































  Perlu diingat bahwa Operator Aritmatika, Operator Relasi dan Operator Logika dapat dikatakan operator  utama yang banyak dipakai dalam berbagai bahasa pemrograman, dalam hal ini Bahasa C++. Maka dari  itu, cobalah untuk dipahami sebaik‐baiknya karena pada sesi‐sesi selanjutnya, operator‐operator akan  banyak digunakan.   

3. MANIPULASI DATA dengan OPERATOR    Manipulasi data adalah proses untuk mengubah isi suatu variabel dengan nilai yang baru. Nilai baru yang  dimaksud dapat berupa suatu nilai mutlak yang telah didefinisikan ataupun nilai yang merupakan hasil  dari proses aritmatika.    Dasar dari proses manipulasi ini sebenarnya sangat mudah. Akan tetapi ada beberapa teknik yang harus  diketahui agar proses manipulasi ini dapat berjalan sesuai yang kita inginkan. Salah satu hal utama yang  perlu diingat adalah dalam proses membaca statement, kita membaca dari ”kanan ke kiri”. Mari kita  lihat contoh berikut ini:          METODE #1 int A = 5; int X; X = A + 2; A = X;

// A = 5 // X = 7 // A = 7 ;

METODE #2 int A = 5; A = A + 2;

// A = 5 // A = 7

METODE #3 int A = 5; A += 2;

// A = 5 // A = 7

X = 7

  Ketiga metode diatas sebenarnya menghasilkan hasil yang sama, namun terjadi perbedaan pada proses  manipulasinya.    METODE #1  Baris 1  : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A.  Baris 2  : variabel X dideklarasi dengan tipe int.  Baris 3  : variabel A (bernilai 5) ditambahkan dengan nilai 2, kemudian disimpan ke dalam variabel X.       Pada akhir statement ini nilai X menjadi 7.  Baris 4  : Nilai X disimpan pada variabel A. Pada akhir statement ini, nilai A telah dimanipulasi dari 5    

    menjadi 7.    METODE #2  Baris 1  : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A.  Baris 2  : variabel A (bernilai 5) ditambahkan dengan 2 sehingga menghasilkan nilai 7, kemudian di‐      assign ke variabel A. Variabel A sekarang bernilai 7 (INGAT! : membaca dari kanan ke kiri).    METODE #3  Baris 1  : variabel A dideklarasi dengan tipe int. Nilai 5 disimpan ke dalam variabel A.  Baris 2  : Operator (+=) menambahkan nilai di sisi kanan ke sisi kiri dan meng‐assign kembali ke sisi kiri      operator. Dalam hal ini prosesnya sama persis dengan baris 2 pada Metode #2.    Selain operator penjumlahan (+=), ada operator sejenis yang membantu kita dalam proses manipulasi  data, yakni pengurangan (‐=), perkalian (*=), dan pembagian (/=).    

Increment dan Decrement  Sesuai dengan namanya, operator increment (++) adalah operator yang berfungsi menambahkan nilai 1  pada nilai suatu variabel. Sebaliknya, operator decrement (‐‐) adalah operator yang berfungsi  mengurangi nilai 1 pada nilai suatu variabel.         METODE #1 i++; METODE #2 i = i + 1; METODE #3 i += 1;

    Ketiga metode tersebut memiliki proses yang sama, yaitu menambahkan nilai 1 ke variabel i lalu meng‐ assign hasilnya kembali ke variabel i. 

Prefix dan Postfix  Operator increment dan decrement pada pembahasan sebelumnya memiliki atribut prefiks dan postfix.  Operator prefiks (++x) dievaluasi/diproses sebelum assignment dilakukan sedangkan operator postfix  (x++) diproses setelah assignment dilakukan.  INPUT: // Contoh Prefiks-Postfiks

#include #include using namespace std; int main () { int Aku = 15; int Kamu; cout << "Masukkan Umur Anda : "; cin >> Kamu; cout << "\n Umur saya : " << Aku << " tahun.\n"; cout << "Umur kamu : " << Kamu << " tahun.\n"; Aku ++; //postfix increment ++ Kamu; //prefix increment cout << "Setelah satu tahun...\n"; cout << "Umur saya : " << Aku << " tahun.\n"; cout << "Umur kamu : " << Kamu << " tahun.\n\n"; cout << "Tahun Berikutnya...\n"; cout << "Umur saya : " << Aku ++ << " tahun. \n"; cout << "Umur kamu : " << ++ Kamu << " tahun. \n\n"; cout << "Mari kita lihat lagi...\n"; cout << "Umur saya : " << Aku << " tahun. \n"; cout << "Umur kamu : " << Kamu << " tahun. \n"; getch(); return 0; }

OUTPUT: Masukkan Umur Anda : 22 Umur saya : Umur kamu :

15 tahun. 22 tahun.

Setelah satu tahun... Umur saya : 16 tahun. Umur kamu : 23 tahun. Tahun Berikutnya... Umur saya : 16 tahun. Umur kamu : 24 tahun. Mari kita lihat lagi... Umur saya : 17 tahun. Umur kamu : 24 tahun.

   Coba kita perhatikan baik‐baik penggunaan postfix dan prefiks. Bandingkan hasil setelah satu tahun,  tahun berikutnya, dan hasil akhir.    Pada hasil setelah satu tahun, proses postfix dan prefiks telah selesai. Sehingga saat variabel dikeluarkan 

nilainya, maka variabel Aku dan Kamu telah bertambah nilai masing‐masing 1.    Pada hasil tahun berikutnya, variabel Aku mendapat postfix, sehingga nilai Aku ditampilkan sebelum  increment terjadi. Sedangkan pada variabel Kamu, nilai telah mengalami increment kemudian  ditampilkan.    Pada hasil akhir, nilai Aku dan Kamu telah dilakukan increment dan telah di‐assign, sehingga kedua nilai  telah bertambah 1.      NOTE: Operator prefix (++/‐‐ var) digunakan untuk menambahkan atau mengurangkan variabel sebelum  digunakan. Dan operator postfix (var++/‐‐) digunakan untuk menambahkan atau mengurangkan variabel  setelah digunakan.   

4. STRUKTUR PERCABANGAN (IF – CONDITIONAL)      Dalam  memecahkan  suatu  masalah,  seringkali  kita  menemui  berbagai  pilihan.  Kondisi‐kondisi  yang  berbeda akan memberikan kita alternatif untuk menyelesaikan masalah. Dalam pemrograman, instruksi  if digunakan untuk memilih kondisi‐kondisi tersebut hingga pada akhirnya sampai pada alternatif terbaik  untuk menyelesaikan masalah.  Namun  disini  kita  berkomunikasi  dengan  komputer  dimana  perangkat  ini  hanya  mengerti  apabila  kita  menjawab dengan ya (TRUE) atau tidak (FALSE).   Untuk  membantu  kita  mendeskripsikan  masalah,  bahasa  C++  memiliki  beberapa  bentuk  untuk  memudahkan kita menjalankannya. Akan tetapi, bentuk standar daripada IF Conditional adalah sebagai  berikut :  if (expression) { statement1; } else {  

statement2;

}  statement2 di atas digunakan untuk memberikan pilihan aksi lain jika ekspresi pada statement if  bernilai salah (FALSE).     

Bentuk IF TUNGGAL  Bentuk dari instruksi if  tunggal adalah sebagai berikut:  if ([!]pernyataan_relasi [&&/|| [!]pernyataan_relasi…]) { …..instruksi jika hasil logika bernilai true… } Keterangan:  Nilai  kembalian  if  yang  berupa  TRUE  ataupun  FALSE  diperoleh  dari  hasil  keluaran  ekspresi  yang  kita  definisikan.  Ekspresi/pernyataan  relasi  ini  diawalan  dengan  kurung  buka  dan  diakhiri  dengan  kurung  tutup.  Apabila  kita  memiliki  lebih  dari  satu  pernyataan  relasi,  maka  dibutuhkan  operator  logika  untuk  menggabungkan beberapa pernyataan relasi tersebut hingga akhirnya kita mendapat hasil berupa TRUE  atau FALSE.  Andaikata  nilai  yang  dihasilkan  adalah  TRUE,  maka  program  selanjutnya  akan  mengeksekusi  intruksi‐ intruksi yang berada di antara tanda ”{” dan tanda ”}”. Jika hasil yang dikeluarkan bernilai FALSE, maka  intruksi tersebut akan dilewati (tidak dieksekusi).  Jika masih bingung, mungkin algoritma ini akan dapat membantu pemahaman Anda:     

Fungsi dari perintah IF 

  Cek hasil  pernyataan_relasi

   

ya

  Instruksi yang dilakukan       

Instruksi selanjutnya 

  INPUT: // IF TUNGGAL #include #include using namespace std;

tidak

int main () { int a; cout << "Tebak umur saya : "; cin >> a; if (a == 17) { cout << "\nWOW! Tebakan Anda benar! Umur saya = " << a << " tahun\n\n"; } cout << "Terimakasih telah menebak umur saya :) "; getch(); return 0; }

OUTPUT: Tebak umur saya : 17 WOW! Tebakan Anda benar! Umur saya = 17 tahun Terimakasih telah menebak umur saya :)

   Coba kembali program di atas, namun masukkan angka kecuali angka 17. Apa yang terjadi ?  OUTPUT: Tebak umur saya : 99 Terimakasih telah menebak umur saya :)

   Bisa Anda lihat perbedaannya ? 

Apabila Anda benar ekspresi bernilai TRUE (dimana a = = 17 ), maka intruksi didalam tanda “{“ dan “}”  akan dieksekusi. Lalu mengapa saat kita salah memasukkan angka, kalimat “Terimakasih...” masih tetap  dieksekusi  ?  Hal  ini  dikarenakan  statement  tersebut  tidak  berada  didalam  tanda    bracket,  sehingga  apapun nilai yang keluar, statement tersebut tetap akan dieksekusi.  

Bentuk IF MAJEMUK  Bentuk dari instruksi if majemuk adalah sebagai berikut:  if ([!] pernyataan_relasi [&&/|| [!] pernyataan_relasi….]]) { ….instruksi jika hasil logika bernilai benar

} else { ….instruksi jika hasil logika bernilai false } 

 

  Hal  yang  membedakan  dengan  IF  TUNGGAL  adalah  pada  IF  MAJEMUK  terdapat  intruksi  yang  harus  dieksekusi apabila hasil keluaran bernilai FALSE. Intruksi tersebut harus diletakkan setelah perintah else  dieksekusi. Perlu diingat, perintah else tidak dapat berdiri sendiri. Artinya, untuk menggunakan perintah  ini harus didahului dengan perintah if pada awal statement.     

Start

 

int a

  Masukkan sebuah  bilangan

   

a%2 == 0?

tidak

  ya 

 

a bilangan bulat

   

end

    Contoh penggunaan IF MAJEMUK :  INPUT: // IF MAJEMUK #include #include using namespace std; int main () {

a bilangan ganjil 

int a; cout << "Masukkan suatu bilangan bulat : "; cin >> a; if (a%2 == 0) { cout << "Anda memasukkan bilangan GENAP "; }else { cout << "Anda memasukkan bilangan GANJIL "; } getch(); return 0; }

OUTPUT: Masukkan suatu bilangan bulat : 35 Anda memasukkan bilangan GANJIL

   INPUT: // IF MAJEMUK #2 #include #include using namespace std; int main () { int a; cout << "Masukkan suatu bilangan bulat : "; cin >> a; if ((a>=0) && (a<=50)) { cout << "Nilai diantara 0 - 50 "; }else if ((a>50) && (a<=100)) { cout << "Nilai diantara 51-100 "; }else { cout << "Nilai adalah negatif atau diatas 100"; } getch(); return 0; } OUTPUT: Masukkan suatu bilangan bulat : 70 Nilai diantara 51-100

  

Bentuk IF BERTINGKAT (BERSARANG)  Bentuk  yang  lebih  kompleks  namun  sering  digunakan  adalah  Bentuk  IF  BERTINGKAT  (BERSARANG).  Singkatnya,  terdapat  instruksi  if  didalam  blok  if.  Lalu  berapa  instruksi  if  yang  dapat  disimpan  didalam  instruksi if ? Jawabannya adalah tak terhingga. Contoh bentuk IF BERTINGKAT :  if (Ekspresi A) {

if (Ekspresi B) { if (Ekspresi C) { ...instruksi jika hasil logika A, B dan C bernilai benar } } }   Berikut adalah listing program yang menerjemahkan algoritma di atas:  INPUT: // IF BERTINGKAT #include #include using namespace std; int main () { int x; cout << "Masukkan suatu bilangan bulat : "; cin >> x; if (x%2 == 0) { if (x >= 100) { cout << "Anda memasukkan bilangan GENAP dan lebih dari 100"; } else { cout << "Bilangan GENAP Anda dibawah nilai 100"; } } else { cout << "Anda memasukkan bilangan GANJIL"; } getch(); return 0; }

OUTPUT: Masukkan suatu bilangan bulat : 78 Bilangan GENAP Anda dibawah nilai 100

    

     

Related Documents

03 Percabangan
April 2020 32
Logika Percabangan
May 2020 19
Dan
April 2020 66
Dan
August 2019 69

More Documents from "Delta"

Gelombang Mekanik
June 2020 24
Termodinamika
June 2020 17
Fluida
June 2020 28
El Balet.docx
May 2020 24
Gaya Lorentz
June 2020 19
Potensial Listrik
June 2020 17