• Tidak ada hasil yang ditemukan

Pengenalan bahasa pemrograman C++

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pengenalan bahasa pemrograman C++"

Copied!
28
0
0

Teks penuh

(1)

Pengenalan bahasa pemrograman C++

Tujuan Praktikum :

a. Mahasiswa dapat mengenal bahasa pemrograman C++.

b. Mahasiswa dapat membuat source code, Struktur Program di C++ dan fungsi dari bahasa C++. c. Mahasiswa dapat mengkompile source code dan memanggil program.

d. Mahasiswa dapat mengetahui input dan output dan menganalisa dari sebuah program.

Dasar Toeri

1. Membuat Source Code

Source code merupakan nama lain dari listing program dari suatu program yang akan dikompile. Source code ditulis dengan menggunakan text editor atau aplikasi pengolah kata lainnya yang disediakan oleh sistem operasi. Misal di sistem operasi linux menggunakan text editor vi atau emacs sedangkan di Microsoft menggunakan notepad. Source code yang dituliskan dengan text editor tesebut harus disimpan dengan nama yang berekstension *.cpp atau *.c. Karena source code ditulis dalam bahasa pemrograman C/ C++ yang akan kita gunakan dalam praktikum Algoritma dan Pemrograman.

2. Mengkompilasi Source Code

Source code bukanlah suatu program, tetapi dari source code ini dapat dihasilkan suatu program. Program merupakan file yang berextensi exe (executable).

3. Struktur Program di C++

Dalam bahasa pemrograman C++ strukturnya adalah sebagai berikut: a. Header. Ex: #include<iostream.h>

b. Main adalah isi dari program diawali {……. dan diakhiri dengan ……..}

4. Fungsi

Fungsi dalam suatu program sangat berguna untuk membuat source code dari program tersebut menjadi ringkas dan padat. Suatu fungsi dalam source code akan dipanggil dan dikerjakan sesuai dengan urut-urutan source code-nya. Fungsi harus mengembalikan suatu nilai, baik isi maupun kosong, yang disebut void.

Latihan:

1. #include <iostream.h> 2. int tambah (int x, int y)

3. {

4. cout <<”Berada di dalam fungsi tambah ( )\n”; 5. cout << “Angka I = “;

6. cin >> a;

7. cout << “Angka II = “; 8. cin >> b;

9. cout << “\nPanggil fungsi tambah ( ) …..\n “; 10. c = tambah(a,b);

11. cout << “\n Kembali ke fungsi main ( )\n “;

12. cout << “Hasil penjumlahan “ << a << “dan “ << b << “adalah “ << c << “\n”;

13. cout << “ \nSelesai…\n”; 14. return 0;

15. }

(2)

5. Input dan Output

Program komputer berfungsi mengolah dan memroses suatu data yang diinputkan menjadi informasi yang dioutputkan menjadi informasi yang dioutputkan. Statemen input dalam c++, cin dengan cara penulisannya :

cin >> a;

statemen output dalam c++, cout dengan cara penulisan

cout << “---“;

6. Analisa Program

Menganalisa bagian perbagian dan menjelaskan dari kegunaan masing-masing bagian program Contoh:

#include <iostream.h> // mencari (#) preprosesor (include) file iostream.h dalam (<>) yang digunakan untuk input dan output.

int main () // menjalankan fungsi main yang dipanggil secara otomatis leh sistem operasi yang akan mengembalikan nilai integer. {

int nomer;

cout << “Masukkan suatu angka “; cin >> nomer;

cout << “Angkanya adalah “ << number; return 0;

}

Tugas

1. Buatlah source code dari program yang memiliki algoritma sebagai berikut : a. Masukkan suatu kalimat = “Hallo, ini program pertamaku” b. Tulis/ tampilkan kalimat yang pernah dimasukkan

(3)

Tipe Data, Variabel dan Konstanta

Tujuan Praktikum:

a. Mahasiswa dapat mengenal beberapa tipe data yang terdapat dalam bahasa C++. b. Mahasiswa dapat belajar menggunakan variable dalam pembuatan sebuah program. c. Mahasiswa dapat belajar menggunakan konstanta dalam pembuatan sebuah program.

Dasar teori 1. Tipe Data

Setiap program pada umumnya mempunyai data yang akan diolah menjadi suatu informasi, data mempunyai tipe tertentu seperti terlihat pada tabel data berikut :

No Tipe Ukuran Nilai

1. Bool 1 byte True atau False

2. Unsigned short int 2 byte 0 – 65.535

3. Short int 2 byte -32.768 – 32.767

4. Unsigned long int 4 byte 0 – 4.294.967.295

5. Long int 4 byte -2.147.483.648 – 2.147.483.647 6. Int (16 bit) 2 byte -32.768 – 32.767

7. Int (32 bit) 4 byte -2.147.483.648 – 2.147.483.647 8. Unsigned int (16 bit) 2 byte 0 – 65.535

9. Unsigned int (32 bit) 4 byte 0 – 4.294.967.295

10. Char 1 byte 256 nilai karakter ASCII

11. Float 4 byte -1.2e-38 – 3.4e+38

12. Double 8 byte -2.2e-308 – 1.8e+308

2. Variable

Variabel merupakan tempat untuk menyimpan data yang digunakan dalam program. Variabel yang telah di deklarasikan akan dibuatkan tempatnya pada RAM sehingga dapat digunakan untuk menyimpan data yang suatu saat dapat digunakan kembali.

int a, b, c;

Keterangan:

int : Tipe data a, b, c : variabel

unsigned short int lebar = 5, panjang;

Keterangan :

Unsigned short int : tipe data

Lebar : variabel

5 : data untuk variable

3. Konstanta

Konstanta merupakan lokasi penyimpanan suatu data, hampir mirip dengan variabel, tetapi konstanta nilainya tidak dapat diubah ketika program dijalankan

Latihan

1. #include <iostream.h> 2. int main ()

3. {

4. const int minggu = 0; 5. const int senin = 0; 6. const int selasa = 0; 7. const int rabu = 0; 8. const int kamis = 0; 9. const int jumat = 0;

(4)

10. const int sabtu = 0; 11. int pilih;

12. cout << “Masukkan hari dalam angka (0-6) = “ ; 13. cin >> pilih;

14. if (pilih = = minggu || pilih = = sabtu) 15. {

16. cout << “\n Sekarang anda berada di akhir minggu ! \n “; 17. cout << “Karena anda dihari ke : “ << pilih << endl; 18. }

19. else 20. {

21. cout << “\n Wah, anda dihari kerja ….“;

22. cout << “Karena anda dihari ke : “ << pilih << endl; 23. }

24. cout << endl; 25. return 0;

Latihan

1. Buat source code dari algoritma di bawah ini a. Masukkan panjang dan lebar b. Luas  panjang * lebar c. Tulis luas

(5)

O p e r a t o r

Tujuan Praktikum:

Operator merupakan simbol atau kata yang dapat digunakan dalam program untuk melakukan suatu operasi atau manipulasi, seperti menjumlahkan 2 buah nilai, memberikan nilai ke variabel dan sebagainya. Sehingga mahasiswa dapat memahami fungsi atau kegunaan dari operator tersebut.

Dasar Teori

1. Operator Pengerjaan (Assigment Operator)

Suatu operator bertanda sama dengan (=) yang digunakan untuk mengisikan nilai yang berada pada sebelah kanan variabel.

Contoh a = 5 a = b = c Latihan

Buat source code untuk algoritma dibawah ini : a. Masukkan data untuk variabel a b. a = b = c

c. Tampilkan nilai a, b dan c

2. Operator Aritmatika

Operator yang digunakan untuk melakukan operasi aritmatika terhadap nilai suatu variabel-variabel. Ada 2 jenis operator aritmatika yaitu operator binary dan operator unary.

Tabel operatur binary

Operator Keterangan * Perkalian / Pembagian

% Modulus atau sisa pembagian + Pertambahan

- Pengurangan Tabel Operator unary

Operator Keterangan + Tanda Plus - Tanda Minus ++ Prefix : preincrement Postfix : Postincrement -- Prefix : predecrement Postfix : Postdecrement Latihan

1. Buat source code untuk algoritma dibawah ini a. Masukkan jari-jari lingkaran

b. Luas  * r2

c. Tampilkan jari-jari lingkaran d. Tampilkan luas lingkaran 2. Analisa luas lingkaran

3. Operator Peningkatan dan Penurunan

Operator peningkatan digunakan untuk menambah nilai 1 dari nilai sebelumnya dan operator penurunan digunakan untuk mengurangi nilai 1 pada nilai sebelumnya.

Latihan

(6)

1. #include <iostream.h> 2. int main()

3. {

4. int x = 10; 5. x = ++x;

6. cout << “Nilai x = “ << x << endl; 7. x = ++x;

8. cout << “Nilai x = “ << x << endl; 9. x = --x;

10. cout << “Nilai x = “ << x << endl; 11. return 0;

12. }

Latihan

1. Buat source code untuk algoritma dibawah ini a. Masukkan data a dan b

b. C  a+b++ c. Tampilkan c 2. Analisa program

3. Buat algoritma dan source code-nya untuk mencari nilai c = a+ ++b

4. Operator Bitwise

Operator dalam bentuk bit dan seluruh operasinya hanya dapat dikenakan pada operand yang bertipe integer atau karakter

Operator Keterangan << Geser ke kiri >> Geser ke kanan

& Operasi bit AND | Operasi bit OR ^ Operasi bit XOR ~ Operasi bit NOT Latihan

1. # include <iostream.h> 2. int main

3. {

4. unsigned x = 93;

5. cout << “Nilai x semula adalah “ << x << endl; 6. x = x << 1;

7. cout << “Nilai x setelah digeser ke kiri adalah << x << endl; 8. x = x >> 2;

9. cout << “Nilai x setelah digeser ke kanan adalah << x << endl; 10. return 0;

11. }

5. Operator Hubungan

Operator ini digunakan untuk membandingkan dua elemen nilai dan akar yang dihasilkan nilai perbandingannya, yaitu betul (bernilai 1) atau salah (bernilai 0).

Operator Keterangan > Lebih besar dari

>= Lebih besar sama dengan < Lebih kecil

<= Lebih kecil sama dengan = = Sama dengan

(7)

6. Operator Logika

Operator logika bisasanya berpasangan dengan operator hubungan nilai perbandingan dari operator logikanya menghasilkan 2 nilai yaitu betul (nilai 1) dan salah (nilai 0)

Operator Keterangan

&& Operator logika AND || Operator logika OR ! Operator logika NOT Latihan

1. Buatlah source code untuk algoritma berikut ini a. Masukkan nilai dan tugas

b. Jika nilai lebih besar dari 70 AND tugas lebih besar sama dengan 75, maka tulis lulus c. Jika nilai lebih kecil sama dengan 70 AND tugas lebih kecil dari 75, maka tulis tidak lulus 2. Analisa program tersebut.

7. Operator Alamat

Operator ini berhubungan dengan pengunaan pointer &  menunjukkan alamat dari suatu data *  menunjukkan suatu pointer

Latihan 1. # include <iostream.h> 2. int main () 3. { 4. int a, *b; 5. a = 20; 6. b = &a;

7. cout << “Pointer b menunjuk alamat “ << b << endl; 8. cout << “Alamat tsb bernilai “ << *b << endl; 9. return 0;

(8)

Percabangan

Tujuan Praktikum:

Mahasiswa dapat belajar dan memahami tentang percabangan dalam bahasa pemrograman C++ sehingga dapat menggunakan percabangan tersebut dalam membuat sebuah program baik itu if, if else, nested if maupun percabangan majemuk.

Dasar Teori 1. IF

Statement ini digunakan untuk melakukan pilihan terhadap 2 atau lebih alternatif pilihan dengan bentuk umumnya sebagai berikut.

If (kondisi)

Pernyataan

Contoh : penggalan program Discount = 0; If (harga>10000) {

discount = (10/100)*harga; bonus = “Kaos Kaki”

}

dari penggalan program diatas percabangan terjadi atas kondisi harga yang lebih besar dari 10000 mendapat discount sebesar 10% dan juga mendapat bounus Kaos Kaki.

Latihan :

1. Buatlah algoritma yang lengkap dari penggalan program diatas. 2. Buatlah source code-nya.

2. IF… ELSE Bentuk umumnya : If (kondisi) { pernyataan1 …. } else { Pernyataan …… }

Dalam bentuk percabangan ini jika kondisi yang ditanyakan benar maka akan mengerjakan pernyataan pertama, jika kondisi yang ditanyakan salah maka akan mengerjakan pernyataan kedua.

Contoh :

1. #include<iostream.h> 2. int main()

3. {

4. int n,t;

5. cout<<”Masukan sebuah nilai “<<endl; 6. cin>>n;

7. cout<<”Masukan nilai dari Tugas “<<endl; 8. cin>>t;

9. if (nilai>70)

10. cout<<”Lulus”<<endl;

(9)

11. else

12. cout<<”Tidak Lulus”<<endl; 13. return 0;

14. }

Bila program dijalankan, akan muncul pertanyaan tentang nilai dan tugas yang harus dimasukan, kondisi yang dipertanyakan adalah besarnya n atau nilai lebih dari 70, jika benar maka akan muncul pernyataan Lulus, jika salah maka akan muncul pernyataan Tidak Lulus.

Latihan

1. Buatlah source code dari algoritma berikut ini : a. Masukan harga barang yang dibeli

b. Jika harga >= 10000, dikenakan diskon 10% c. Tampilkan harga yang harus dibayarkan

d. Jika harga kurang dari kondisi yang ditetapkan, dikenakan diskon 5% e. Tampilkan harga yang harus dibayarkan

2. Analisa-lah program yang dihasilkan

3. NESTED IF

ini merupakan suatu bentuk percabangan didalam percabangan dengan bentuk umumnya sebagai berikut :

if (kondisi1) if (kondisi2) pernyataan; else pernyataan; else pernyataan; Latihan

1. Buatlah source code dari algoritma berikut ini : a. Masukan Nilai angka

b. Jika 100=>nilai >=81, maka nilai dalam bentuk hurufnya adalah A, jika tidak berarti 81>nilai>=60 dan nilai dalam bentuk hurufnya adalah B, jika tidak berarti 60 >nilai>=40 dan nilai dalam bentuk hurufnya adalah C, jika tidak berarti 40>nilai>=20 dan nilai dalam bentuk hurufnya adalah D, jika tidak berarti nilai hurufnya adalah E

c. Tampilkan tulisan “Nilai dalam bentuk hurufnya =” 2. Buatlah flowchart-nya

3. Analisa-lah program tersebut

4. PERCABANGAN MAJEMUK

Percabangan majemuk disini yang dimaksud adalah suatu percabangan yang menyajikan banyak alternatif pilihan pernyataan yang sesuai dengan kondisi yang dipertanyakan. Dalam bahasa C/C++ percabangan ini menggunakan perintah SWITCH sedangkan pada pascal menggunakan case…of. Bentuk umumnya

switch(ekspresi) { case konstanta1 : pernyataan1; break; case konstanta2 : pernyataan2; break; ….. …. …. Default : pernyataanx; }

(10)

contoh :

1. #include<stdio.h> 2. main()

3. {

4. int kode;

5. printf(“Masukan Kode Hasri [1-7] : “); 6. scanf(“%d”,&kode); 7. switch(kode) 8. { 9. case 1: 10. printf(“Senin”); 11. break; 12. case 2: 13. printf(“Selasa”); 14. break; 15. case 3: 16. printf(“Rabu”); 17. break; 18. case 4: 19. printf(“Kamis”); 20. break; 21. case 5: 22. printf(“Jumat”); 23. break; 24. case 6: 25. printf(“Sabtu”); 26. break; 27. case 7: 28. printf(“Minggu”); 29. break; 30. default:

31. printf(“Kode tidak ditemukan”); 32. }

33. }

Latihan :

Sebuah program yang dibuat dengan bahasa C/C++ jika dijalankan akan tampak seperti dibawah ini : MENU UTAMA --- 1. Bujursangkar 2. Segitiga 3. Lingkaran 4. Keluar --- Pilih[1-4] : Buatlah : 1. Algoritmanya 2. Source Code 3. Penjelasan

(11)

Perulangan

Tujuan praktikum:

Mahasiswa dapat memahami tentang looping pada sebuah program karena pada dasarnya suatu program ketika dieksekusi sering memunculkan sesuatu yang diulang-ulang, berarti program ini mempunyai listing dengan menggunakan metode looping. Ada dua cara untuk membuat looping yaitu dengan rekursi atau iterasi. Cara iterasilah yang akan dibahas pada Bab 5 ini.

Dasar Teori 1. While…do

While sering digunakan untuk melakukan pengulangan, bentuk penulisannya

While ( kondisi ) { statment1 ; . . statment2; Contoh

1. //Menunjukan looping dengan 'while' 2. //Sebagai pengganti 'goto'

3. #include<iostream.h> 4. int main()

5. {

6. //inisialisasi variabel 'hitung' 7. int hitung = 0;

8. //Mulai looping dengan memeriksa kondisi 9. while (hitung <=5)

10. {

11. hitung++;

12. cout <<"Menghitung : " << hitung << endl; 13. }

14. cout << endl;

15. cout << "Selesai menghitung." << endl;

16. cout << "Perhitungan terakhir : " << hitung; 17. cout << endl;

18. return 0; 19. }

Looping do….while ini mengeksekusi statement yang ada dalam blok looping sebelum mengecek kondisinya.

Cara penulisannya sebagai berikut :

Menghitung : 1

Menghitung : 2

Menghitung : 3

Menghitung : 4

Menghitung : 5

Selesai menghitung

Perhitungan terakhir : 5

5

(12)

Do { . . statement; . . } while ( kondisi ); contoh

1. //Menunjukkan looping 'do..while' 2. #include <iostream.h>

3. int main 4. {

5. int hitung, hit;

6. cout << "Berapa kali perulangan ? "; 7. cin >> hitung;

8. //Menyalin isi 'hitung' ke 'hit' untuk perbandingan 9. hit = hitung;

10. cout << "menghitung mundur .. \n" << endl; 11. //Mulai looping (setidaknya satu kali) 12. do

13. {

14. cout << "Mencetak : " << hitung << endl; 15. hitung--;

16. }

17. while (hitung > 0); 18. cout << endl;

19. //Memeriksa apakah input dari user dengan 'hit' yang disalin dari 'hitung'

20. // kurang atau sama dengan nol 21. if (hitung <=0)

22. {

23. cout << "Tidak ada perulangan ... "; 24. cout << endl;

25. } 26. else 27. {

28. cout << "Selesai mengulang." << endl;

29. cout << "Perhitungan terakhir : " << hitung << endl; 30. }

31. return ; 32. }

2. For

Dengan menggunakan loopingdo ini ada tiga langkah yang harus dijalankan yaitu inisialisai ( awalan ), pengujian kondisi, dan aksi yang dilakukan yang dapat berupa penambahan atau pengurangan suatu variabel.

For ( insialisasi; pengujian; aksi ) { . . statement; . . }

(13)

Contoh

1. #Menunjukkan looping 'for' 2. #include <iostream.h> 3. int main()

4. {

5. int hitung hit;

6. cout <<"Berapa kali perulangan ? "; 7. cin >> hitung;

8. // Menyalin isi 'hitung' ke 'hit' untuk perbandingan 9. hit = hitung;

10. cout << "Menghitung mundur ...\n" << endl;

11. // Mulai looping dengan kondisi 'hitung' lebih besar atau sama dengan 'hit'

12. // dan akan berakhir ketika 'hitung' sama dengan nol 13. for (hit>= hitung; hitung > 0; hitung--)

14. {

15. cout << "mencetak : " << hitung << endl; 16. }

17. cout >> endl;

18. //Memeriksa apakah input dari user dengan 'hit' yang disalin dari 'hitung' kurang atau sama dengan nol

19. if (hit <= 0) 20. {

21. cout << "tidak ada perulangan ..."; 22. cout << endl;

23. } 24. else

25. cout << "Selesai menghitung." << endl;

26. cout << "Perhitungan terakhir : " << hitung; 27. cout << endl;

28. }

29. return 0; 30. }

3. Goto

Perintah ini digunakan untuk mengalihkan proses ke suatu label tertentu. Contoh : 1. #include<stdio.h> 2. main() 3. { 4. int n=1; 5. cetak :

6. printf(“Praktikum ini terlalu mudah\n”); 7. if(n++<10)

8. goto cetak; 9. }

Latihan :

Buatlah program dalam bentuk menu, yang menampilkan suatu bentuk konversi seperti dibawah ini. MENU UTAMA --- 1. BBM 2. Mata Uang 3. Suhu 4. Keluar --- Pilih[1-4] :

(14)

Dengan ketentuan

1. BBM meliputi premium, solar, premix dan minyak tanah. Tampilkan pembelian dari 1 liter hingga 10 liter dengan kenaikan per 1 liter dengan rumus :

 Premiun = liter*1850

 Solar = liter*1650

 Premix = liter*2200

 Minyak = liter*700

2. Mata uang meliputi rupiah, dolar dan euro 3. Suhu meliputi celcius, reamur dan fahrenheit

 Fahrenheit = 9/5*celceius+32

(15)

Fungsi

Tujuan Praktikum:

a. Mahasiswa dapat memahami fungsi dalam sebuah program yaitu subprogram yang akan mengolah data dan mengembalikan nilai.

b. Mahasiswa dapat memahami fungsi keluaran bukan integer.Prototipe fungsi Parameter formal dan parameter actual Variabel local file header dan rekursi

Dasar Teori

Fungsi adalah subprogram yang akan mengolah data dan mengembalikan nilai. Setiap program C++ mempunyai minimal satu fungsi, yaitu main(), yang dijalankan otomatis oleh sistem operasi. Suatu fungsi dapat memanggil fungsi yang lainnya, atau sebaliknya. Setiap fungsi harus dapat mengembalikan suatu nilai, jika tidak akan menjadi fungsi void. Jadi ketika fungsi dipanggil, ia akan akan mengerjakan sesuatu seperti pada listing programnya, dan kemudian mengirimkan hasilnya. Nilai yang dikembalikan disebut dengan returnvalue dan tipenya harus dideklarasikan.

Contoh

1. #include <iostream.h> 2. // fungsi prototype

3. int LuasSegiEmpat(int x, int y); 4. int main()

5. {

6. int panjang, lebar, luas; 7. cout <<"Masukkan Panjang : " ; 8. cin >> panjang;

9. cout <<"Masukkan Lebar : " ; 10. cin >> lebar;

11. cout << endl; 12. // panggil fungsi

13. luas = LuasSegiEmpat(panjang, lebar);

14. cout << "Luas yang didapat adalah = " << luas <<"\n"; 15. return 0;

16. }

17. int LuasSegiEmpat(int x, int y) 18. {

19. //nilai hasil perhitungan langsung dikembalikan 20. return (x*y); 21. } int main ( ) { statement; fungsi1( ); . . . .statment; fungsi2( ); . . . . Return 0; } . . . . return . Fungsi3 ( ); . . return . . . . return

6

(16)

Fungsi Uraian Sqrt(x) exp(x) log(x) log10(x) fabs(x) ceil(x) floor(x) pow(x) fmod(x,y) sin(x) cos(x) tan(x)

Akar kuadrat dari x Fungsi eksponen ex

Logaritma alami dari x (dasar e) Logaritma dari x (dasar 10) Nilai mutlak dari x

Pembulatan ke bilangan bulat terkecil yang tidak lebih kecil dari x Pembulatan ke bilangan bulat terbesar yang tidak lebih besar dari x xy

pembagian x/y sebagai tipe float sinus dari x (dalam radian) cos dari x (dalam radian) tangen dari x(dalam radian)

1. Fungsi dengan nilai keluaran bukan integer

Untuk fungsi dengan nilai keluaran bukan integer, langkah yang diperlukan berupa :  Fungsi harus dideklarasikan di awal program

 Fungsi didefinisikan dengan diawali penentu tipe fungsi Contoh float minimum(x,x) float x,y; { if(x>y) return(x); else return(y); } 2. Prototipe fungsi

Yang dinamakan prototipe fungsi adalah cara atau gaya dalam mendeklarasikan fungsi. Fungsi ini digunakan untuk menjelaskan kepada kompiler mengenai :

 Tipe keluaran fungsi  Jumlah parameter

 Tipe dari masing-masing parameter

Keuntungan pemakaiannya adalah kompiler akan melakukan konversi seandainya antara tipe parameter dalam definisi dan parameter saat pemanggilan fungsi tidak sama atau akan menunjukan kesalahan kalau jumlah parameter dalam definisi dan saat pemanggilan berbeda.

Kalau definisi semula berupa : Float jumlah(x,y) Float x,y ;

Maka menjadi

Float jumlah(float x, float y)

3. Parameter formal dan parameter aktual

Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi. Parameter aktual adalah parameter yang dapat berupa variabel atau konstanta maupun ungkapan yang dipakai dalam pemanggilan fungsi. Contoh

printf(“%f”, kali(2*3,5*6)); Adapun cara melewatkan parameter adalah :

 Pemanggilan dengan nilai  Pemanggilan dengan referensi Contoh :

1. #include<stdio.h>

(17)

3. main() 4. {

5. int a, b; 6. a = 99; 7. b = 11;

8. printf(“Nilai sebelum pemanggilan fungsi : \n”); 9. printf(“Nilai a =%d nilai b =%d\n\n”,a,b);

10. tukar(a,b);

11. printf(“Nilai sesudah pemanggilan fungsi :\n”); 12. printf(“Nilai a =%d nilai b =%d\n\n”,a,b); 13. }

14. void tukar (int px, int py); 15. {

16. int z: 17. z=px; 18. px=py;

19. printf(“Nilai diakhiri fungsi :\n”);

20. printf(“Nilai px=%d nilai py=%d\n\n “, px,py); 21. }

4. Variabel lokal

Variabel lokal adalah variabel yang dideklarasikan didalam fungsi yang bersifat :

 Otomatis diciptakan ketika fungsi dipanggil dan hilang ketika fungsi selesai digunakan  Hanya dikenal oleh fungsi tempat variabel berada

 Pada waktu diciptakan nilainya tidak tentu

 Dalam penulisannya dapat ditambahakan kata “AUTO” didepannya Contoh :

1. #include <iostream.h>// fungsi prototype 2. void fungsiKu();

3. int x = 5, y = 7; 4. int main()

5. {

6. cout << "x dari fungsi 'main()' : " << x << endl; 7. cout << "y dari fungsi 'main()' : " << y << endl; 8. cout << endl;

9. cout << "*** Panggil fungsi 'fungsiKu()' *** \n\n"; 10. fungsiKu();

11. cout << "\nKembali lagi ke 'main()' dari 'fungsiKu()'\n"; 12. cout << endl;

13. cout << "x dari fungsi 'main()' : " << x << endl; 14. cout << "y dari fungsi 'main()' : " << y << endl; 15. return 0;

16. }

17. void fungsiKu() 18. {

19. int y = 10; // variabel lokal 'y'

20. cout << "x dari fungsi 'fungsiKu()' : " << x << endl; 21. cout << "y dari fungsi 'fungsiKu()' : " << y << endl; 22. }

5. File header

Setiap pustaka baku mempunyai file header yang mengandung prototipe fungsi untuk semua fungsi yang ada didalam pustaka dan definisi dari tipe-tipe data maupun konstanta yang diperlukan oleh fungsi tersebut.

 assert.h : berisi makro dan informasi untuk diagnosa yang membantu pemeriksaan kesalahan prose dalam program

 ctype.h : mengandung prototipe fungsi untuk menguji properti dari karakter, dan dapat digunakan untuk mengubah karakter huruf kecil ke besar

(18)

 errno.h : mendifinisikan makro untuk melaporkan kondisi kesalahan  float.h : berisi batasan didalam sistem bilangan bertipe float  limits.h : berisi batasan sistem integral

 locale.h : berisi prototipe fungsi dan informasi lainnya yang dapat memodifikasi sistem data pada saat program diproses

 math.h : berisi prototipe fungsi untuk pustaka matematika

 setjmp.h : berisi prototipe fungsi yang menuntun urutan pemanggilan fungsi

 signal.h : berisi prototipe fungsi dan makro untuk menangani kondisi yang bermacam-macam saat program diproses

 stdarg.h : mendifinisikan makro untuk menangani daftar argumen fungsi yang nilai dan tipenya tidak diketahui

 stddef.h : berisi definisi umum dari tipe yang digunakan C untuk membentuk perhitungan tertentu  stdio.h : berisi prototipe fungsi untuk pustaka input/ output

 stdlib.h : berisi prototipe fungsi untuk konversi nilai ke teks atau sebaliknya, alokasi memori, bilangan acak dan utilitas lainnya

 strings.h : pemrosesan string  time.h : manipulasi data dan waktu

6. Rekursi

Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri, artinya fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri. Fungsi faktorial, yang menghitung nilai faktorial dari suatu bilangan bulat positif, merupakan pokok bahasan yang memudahkan pemahaman fungsi rekursif.

Contoh : #include<stdio.h> int faktorial(int n) { if (n==1) return(1); else return(n*faktorial(n-1)); } main() { int x ;

printf(“Mencari nilai faktorial\n “);

printf(“Masukan nilai x : “); scan(“%d”,&x);

printf(“Nilai faktorial dari %d=%d\n”,x,faktorial(x)); }

Latihan

Buatlah program dalam bentuk menu, yang menampilkan suatu bentuk konversi seperti dibawah ini.

MENU UTAMA --- 1. Perkalian 2. Pembagian 3. Pengurangan 4. Pengurangan 5. Keluar --- Pilih[1-5] : Pernyataan :

 Pilihan yang disajikan dibuat menggunakan fungsi

(19)

Array, String dan Pointer

Tujuan Praktikum:

a. Mahasiswa dapat memahami, mendeklarasikan dan menggunakan array dimensi dua. b. Mahasiswa dapat memahami, mendeklarasikan dan menggunakan string.

c. Mahasiswa dapat memahami, mendeklarasikan dan menggunakan pointer.

Dasar Teori

1. Deklarasi array

Array merupakan koleksi data dimana setiap elemen memakai nama yang sama dan bertipe sama dengan dibedakan setiap elemennya dengan sebuah indeks. Nilai dari indeks dimulai dari 0, dengan cara penulisan

Tipe_data nama_array[jumlah_elemen_array] Contoh 1. #include<stdio.h> 2. int main() 3. { 4. int square[100]; 5. int i; 6. int k; 7. for(i=0;i<10;i++) 8. { 9. k=i+1; 10. square[i]=k*k;

11. printf(“\nPangkat dari %d adalah %d “,k,square[i]) 12. }

13. return 0; 14. }

2. Array dimensi dua

Contoh :

1. #include <iostream.h> 2. #include <iomanip.h>

3. int jum_kol(int arrIn[] [3], int nilai_kol[]); 4. int jum_bar(int arrIn[] [3], int nilai_bar[]); 5. int main()

6. {

7. static int arr[2][3] = { 8. {10,20,30},

9. {11,21,31} 10. };

11. int bar, kol; 12. int nilai_kol[3]; 13. int nilai_bar[2];

14. for (bar = 0; bar < 2; bar ++)

(20)

15. {

16. for (kol = 0; kol < 3; kol++)

17. { // Mengatur tampilan matik agar teratu 18. cout << setw(5) << arr[bar][kol];

19. }

20. cout << "\n\n"; 21. }

22. jum_kol(arr, nilai_kol); 23. for (kol = 0; kol < 3; kol++) 24. {

25. cout << "Hasil penjumlahan kolom " << kol << " adalah "; 26. cout << nilai_kol[kol] << endl;

27. }

28. jum_bar(arr, nilai_bar); 29. for (bar = 0; bar < 2; bar++) 30. {

31. cout << "Hasil penjumlahan baris " << bar << " adalah "; 32. cout << nilai_bar[bar] << endl;

33. }

34. return 0; 35. }

36. int jum_kol(int arrIn[][3], int nilai_kol[]) 37. {

38. int bar, kol;

39. for (kol = 0; kol < 3; kol++) 40. {

41. nilai_kol[kol] = 0;

42. for (bar = 0; bar < 2; bar++) 43. { 44. nilai_kol[kol] += arrIn[bar][kol]; 45. } 46. } 47. return 0; 48. }

49. int jum_bar(int arrIn[][3], int nilai_bar[]) 50. {

51. int bar, kol;

52. for (bar = 0; bar < 3; bar++) 53. {

54. nilai_bar[bar] = 0;

55. for (kol = 0; kol < 3; kol++) 56. { 57. nilai_bar[bar] += arrIn[bar][kol]; 58. } 59. } 60. return 0; 61. } Latihan

Diketahui sebuah data nilai mahasiswa Teknik Informatika STTA Yogyakarta sebagai berikut

No Nim Nama UTS UAS Tugas Total Nilai

1 2 3 4 5 03000001 03000002 03000003 03000004 03000005 Budi Ima Jojon Bagong Londo 70 80 60 75 85 50 40 45 55 60 100 90 80 70 60 Buatlah program dengan menggunakan tampilan menu berikut ini

(21)

MENU UTAMA --- 1. Memasukan Data 2. Menampilkan Data 3. Keluar --- Pilih[1-3] : Panduan :

a. Tampilan menu untuk memasukan data adalah sebagai berikut :

NIM : Nama : UTS : UAS : Tugas : Lagi(y/t)?

b. Total diperoleh dengan menggunakan rumus = UTS*0.3+UAS*0.5+Tugas*0.2 c. Nilai dalam bentuk huruf dengan ketentuan :

100>= Nilai>80 = A 80>= Nilai >60 = B 60>= Nilai >40 = C 40>= Nilai >20 = D

20>= Nilai >0 = E

d. Tampilan menu untuk menampilkan data dibuat mirip dengan data yang didapat diatas.

3. String

String merupakan betuk data yang biasa dipakai dalam pemrograman guna menampung dan memanipulasi data teks, string bukan merupakan tipe data tersensiri tetapi merupakan jenis khusus dari array ( dalam bahasa pemrograman C/C++ ).

Data string biasanya dimasukan dengan perintah gets atau scanf :

gets(namalarik); Atau scanf(“%s”,namalarik); contoh : 1. #include<stdio.h> 2. main() 3. { 4. char nama[20];

5. printf(“masukan nama anda: “);scanf(“%s”,nama);

6. printf(„ Nama yang tadi dimasukan adalah : %s\n”,nama); 7. }

Variabel string dalam bentuk char ini dapat diakses seperti halnya kita mengakses suatu tipe data dalam bentuk array atau larik dengan contoh sebagai berikut :

1. #include<stdio.h> 2. main()

3. {

4. int a, j; 5. char kata[25];

6. puts(Ketikan Suatu Kalimat : “); gets(kata); 7. j=0;

8. for(a=0;kata[a];a++) 9. j=j++;

10. printf(“Jumlah karakter dari kalimat yang anda ketikan adalah : %d\n”,j);

(22)

5. Pointer

Ambil angka di alamat berikutnya : 5

Jumlahkan angka tersebut dengan angka di alamat sebelumnya 6

Simpan hasilnya di alamat berikutnya : 11 Hentikan program 1 2 3 4 5 6 7 alamat instruksi data

Pointer adalah sebuah variabel yang menunjuk ke alamat memori komputer. Memori komputer digambarkan seperti tampak pada gambar diatas sebagai suatu tumpukan penyimpanan dengan lokasi yang berbeda-beda, untuk memdeakan lokasinya digunakan nomor-nomor yang unik, nomor ini disebut dengan alamat memor. Ada kebiasaan bahwa seorang programmer tidak tahu tentang alamat-alamat memori yang dipakai untuk variabel-variabel yang dibuat karena kompiler sudah menangani ini secara detail. Kita dapat mengetahui alamat-alamat yang dipakai oleh variabel-variabel yang kita buat, dengan menggunakan operator “&“.

Keuntungan meakses memori dengan menggunakan pointer daripada menggunakan variabel global adalah bahwa fungsi yang dapat mengakses data hanya fungsi yang mempunyai pointer tersebut, dengan demikian kontrol terhadap pemakaian data dan mengurangi masalah yang timbul ketika sebuah fungsi mengubah data tersebut secara tidak sengaja.

Contoh :

1. #include<iostream.h>

2. typedef unsigned short int USHORT; 3. int main()

4. {

5. USHORT umurku; //variabel umurku

6. USHORT *umurku = null; // pointer yang menunjuk ke variabel umurku 7. umurku=5;

8. cout<<”umurku = “<<umurku<<endl;

9. *umurku=&umurku; // pointer umurku disi dengan alamat umurku 10. cout<<””Pointer umur ku = “<<*umurku<<endl;

11. cout <<endl; 12. umurku=7;

13. cout<<”umurku = “<<umurku<<endl;

14. *umurku=&umurku; // pointer umurku disi dengan alamat umurku 15. cout<<””Pointer umur ku = “<<*umurku<<endl;

16. cout <<endl; 17. return 0 18. }

bandingkan dengan ini :

1. #include<iostream.h>

2. typedef unsigned short int USHORT; 3. int main()

4. {

5. USHORT umurku; //variabel umurku

data

*data

(23)

6. USHORT *umurku = &umurku; // pointer yang menunjuk ke variabel umurku

7. umurku=5;

8. cout<<”umurku = “<<umurku<<endl;

9. cout<<””Pointer umur ku = “<<*umurku<<endl; 10. cout <<endl;

11. umurku=7;

12. cout<<”umurku = “<<umurku<<endl;

13. cout<<””Pointer umur ku = “<<*umurku<<endl; 14. cout <<endl;

15. return 0 16. }

(24)

Studi Kasus I, Operasi Matrik

Tujuan praktikum:

 Mengetahui cara inisialisasi dan memanipulasi data elemen dari sebuah matrix

 Dapat melakukan operasi matrix, penambahan, pengurangan, perkalian, inverse dll. dengan program komputer

 Dapat menggunakan array 2D pada C untuk melakukan operasi matrix

Dasar teori:

Sebuah matrix terdiri dari array segiempat dari elemen-elemen yang ditandai dengan simbul [A]. Individual elemen-elemen dari sebuah matrix [A] dinotasikan dengan

a

ij. Set dari elemen-elemen horizontal disebut baris dan set dari elemen-elemen vertikal disebut kolom. Dengan demikian sebuah program matrix dapat diimplementasikan menggunakan array 2D.

Contoh:

int a[2][3];

a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]

Array 2D adalah array dari arrays, sehingga deklarasi di atas adalah array dari dua array integer. Matrix di atas mempunyai jumlah baris 2 dan jumlah kolom 3. Berikut adalah contoh program untuk mengisi data elemen-elemen 1 s/d 6 dan me-print elemen-elemen-elemen-elemen dalam baris dan kolomnya.

1. #include<iostream.h> 2. #include<conio.h> 3. void main(){ 4. clrscr(); 5. int a[3][3]; 6. int b[3][3]; 7. int c[3][3]; 8. int i,j; 9. for (i=1;i<3;i++) { 10. for (j=1;j<3;j++) {

11. cout << "Masukkan elemen matrik A " << i << "," << j << " : "; 12. cin >> a[i][j];

13. } 14. }

15. cout << "Matrik A : " <<endl; 16. for (i=1;i<3;i++) { 17. for (j=1;j<3;j++) { 18. cout << a[i][j] << " "; 19. } 20. cout << endl; 21. } 22. }

Penambahan atau pengurangan dua buah matrix [A] dan [B] dapat dilakukan dengan cara menambahkan atau mengurangkan masing elemen yang bersesuaian dari tiap-tiap matrix [A] dan [B] tersebut.

[C] = [A] + [B]

c

ij

a

ij

b

ij

(25)

[C] = [A] – [B]

c

ij

a

ij

b

ij

Program penambahan dua buah matrix 2 x 2. Pada program penambahan matrix di bawah terdapat dua buah function mat_read (int mat[2][2]) dan function mat_print (int mat[2][2]) belum dibuat. Buatlah sendiri kedua function tersebut dengan mengacu potongan program di atas dan kemudian selesaikan program penambahan dua buah matrix di bawah.

Program untuk menambah dua matrix 2 x 2:

1. #include<iostream.h> 2. #include<conio.h> 3. 4. void main(){ 5. clrscr(); 6. int a[3][3]; 7. int b[3][3]; 8. int c[3][3]; 9. int i,j; 10. 11. for (i=1;i<3;i++) { 12. for (j=1;j<3;j++) { 13.

14. cout << "Masukkan elemen matrik A " << i << "," << j << " : "; 15. cin >> a[i][j];

16. } 17. } 18.

19. cout << "Matrik A : " <<endl; 20. for (i=1;i<3;i++) { 21. for (j=1;j<3;j++) { 22. 23. cout << a[i][j] << " "; 24. 25. } 26. cout << endl; 27. } 28. 29. for (i=1;i<3;i++) { 30. for (j=1;j<3;j++) { 31.

32. cout << "Masukkan elemen matrik B " << i << "," << j << " : "; 33. cin >> b[i][j];

34. } 35. } 36.

37. cout << "Matrik B : " <<endl; 38. for (i=1;i<3;i++) { 39. for (j=1;j<3;j++) { 40. 41. cout << b[i][j] << " "; 42. 43. } 44. cout << endl; 45. } 46. 47. for (i=1;i<3;i++) { 48. for (j=1;j<3;j++) { 49. c[i][j]=a[i][j]+b[i][j]; 50. }

(26)

51. } 52.

53. cout << "Matrik C : " << endl; 54. for (i=1;i<3;i++) { 55. for (j=1;j<3;j++) { 56. cout << c[i][j] << " "; 57. } 58. cout << endl; 59. } 60. }

Perkalian sebuah matrix [A]: m x n, dengan bilangan skalar c, dapat dihitung sebagai berikut: c a11 c a12 ... c a1n

[B] = c [A] = c a21 c a22 ... c a2n

c am1 c am2 ... c amm

Sedang perkalian dua buah matrix [C] = [A] [B] dapat dilakukan dengan persamaan sebagai berikut (ingat jumlah baris-kolom dari matrik [C]).

n k kj ik ij

a

b

c

1

Inverse dari sebuah matrix [A] adalah [A]-1 yang dapat dihitung sebagai berikut: [A] [A]-1 = [A]-1 [A] = [I]

dengan [I] adalah matrix identitas.

Untuk matrix inversi dari matrix 2 x 2 inverse matrix dapat dihitung dengan jauh lebih sederhana sebagai berikut.            11 21 12 22 21 12 22 11 1 1 ] [ a a a a a a a a A Tugas:

 Buat program perkalian matrix 2 x 2 dengan bilangan skalar c yang dapat divariasi. Kemudian tentukan matrix inverse dari matrix 2 x 2 tersebut.

(27)

Studi Kasus I, Iterasi Bisection

Tujuan praktikum:

 Dapat memahami penyelesaian persamaan f(x) = 0 dan mencari akar-akar persamaannya dengan metode penggambaran grafis.

 Memahami metode trial-and-error dengan metode Bisection untuk mencari akar-akar persamaan f(x) = 0.

 Dapat membuat program metode numerik Bisection untuk mencari akar-akar persamaan f(x) = 0.

Dasar teori:

Metode paling sederhana untuk mencari akar-akar persamaan f(x) = 0 adalah dengan me-plot fungsi yang dicari akar-akarnya. Akar-akar persamaan adalah harga-harga f(x) yang memotong sumbu x. Metode ini biasa disebut metode grafis.

Contoh:

Gunakan metode grafis untuk menentukan koefisien penurunan parasut c yang turun dengan massa m = 68.1 kg, kecepatan v = 40 m/s, pada waktu turun t = 10 detik. Grafitasi bumi adalah g = 9.8 m/detik2.

Persamaan:

e

v

c

gm

c

f

(

)

1

(c/m)t

c (ordinat) f(c) (absis) 4 8 12 16 20 34.115 17.653 6.067 -2.269 -8.401 Metode Bisection:

Secara umum jika f(x) adalah berharga real dan kontinyu pada interval

x

l

x

u dan harga-harga

f

(

x

l

)

dan

)

(

x

u

f

mempunyai tanda yang berbeda, maka berlaku persamaan

f

(

x

l

)

f

(

x

u

)

0

. Dan paling tidak akan

ada satu persamaan yang berharga di antara

x

l

x

u.

Mencari akar-akar persamaan dengan metode Bisection adalah dengan membagi dua interval

x

l

x

u kemudian mencari akar-akarnya pada tiap-tiap interval, lalu membagi dua kembali interval yang memuat akar-akar persamaannya. Step-step algoritma dari metode Bisection adalah sebagai berikut:

9

1 2 1 6 Akar persamaan c f(c)

(28)

 Pilih harga rendah

x

l dan harga tinggi

x

u di mana akar-akar persamaanya akan termuat di antaranya.

 Tentukan estimasi akar persamaan

2

u l r

x

x

x

 Evaluasi hasilnya dengan cara sebagai berikut:

a. Jika

f

(

x

l

)

f

(

x

u

)

0

, maka akar persamaan yang dicari ada pada interval bawah. Maka set r

u

x

x

dan kembali ke step 2.

b. Jika

f

(

x

l

)

f

(

x

u

)

0

, maka akar persamaan yang dicari ada pada interval atas. Maka set r

l

x

x

dan kembali ke step 2.

c. Jika

f

(

x

l

)

f

(

x

u

)

0

, maka akar persamaan yang dicari adalah

x

r.

Program mencari akar persamaan dengan metode Bisection:

/* User perlu memdefinisikan fungsi yang dicari akarnya sebagai fungsi pada program dengan nama: ffunction. Contoh diberikan pada program ini. */

1. #include<iostream.h>

2. void main() {

3. float a,b,c,fa,fb,fc,konvergensi;

4. int iterasi;

5.

6. cout << "Masukkan Nilai A : ";

7. cin >> a;

8. cout << "Masukkan Nilai B : ";

9. cin >> b; 10. 11. konvergensi=1; 12. iterasi=0; 13. while (konvergensi > 0.000005) 14. { 15. c=(a+b)/2; 16. 17. fa=(2*a)+3; 18. fb=(2*b)+3; 19. fc=(2*c)+3; 20. 21. if ((fc*fb) > 0) 22. b=c; 23. else 24. a=c; 25. 26. konvergensi=a-b; 27. if (konvergensi < 0) 28. konvergensi=konvergensi*-1; 29. 30. iterasi++; 31. } 32.

33. cout << "Jumlah iterasi : " << iterasi << endl; 34. cout << "Akar persamaan : " << a <<endl;

35. 36. }

Tugas:

Gambar

Tabel operatur binary

Referensi

Dokumen terkait

Digunakan untuk membuat tipe bentukan atau tipe khusus yang nantinya digunakan dalam deklarasi variabel.

Intepreter adalah software yang mampu mengeksekusi kode program kemudian menterjemahkannya dalam bahasa mesin, sehingga mesin melakukan instruksi yang diminta oleh

 Program Java yang ditulis dapat dieksekusi di paltform manapun tanpa memerlukan kompilasi ulang (portable) asalkan Java Virtual Machine untuk platform tersebut tersedia..

Akhir adalah ungkapan yang memberikan nilai maksimal pada variabel yang harus dipenuhi supaya perulangan masih dapat terus dilakukan (misalnya x&lt;=20, berarti statemen yang

Dalam laporan.txt tuliskan bagaimana Anda melakukan kompilasi program add.cpp dan jelaskan cara-cara memanggil yang masih memberikan hasil yang relevan dengan hasilnya. 9

A &gt; 80 Merupakan perolehan mahasiswa yang mengikuti perkuliahan dengan sangat baik, memahami materi dengan sangat baik bahkan tertantang untuk memahami lebih jauh, memiliki

Dalam program yang lebih kompleks, terkadang terdapat instruksi yang dilaksanakan dan yang tidak, tergantung kondisi yang terjadi. Contohnya dalam menghitung akar

• File include umumnya memiliki ekstensi .h, misalnya stdio.h, atau biasa disebut dengan file judul header file berisi kode yang akan dilibatkan dalam program C • Kode dalam file