UNIVERSITAS GADJAH MADA PROGRAM STUDI FISIKA FMIPA
Bahan Ajar 4:
Pemrograman C (Minggu ke-5 dan ke-6)
PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024 Oleh Dr. Fahrudin Nugroho Dr. Iman Santosa Didanai dengan dana BOPTN P3-UGM Tahun Anggaran 2013 November 2013
2
BAB 5 Pemrograman C 5.1 Bagian-bagian dalam bahasa C Dalam bab ini akan diuraikan secara ringkas mengenai pemrograman C. Terutama bagian-bagian dalam tubuh program, dan masalah sitaksis (kebahasaan) yang digunakan dalam bahasa C. Untuk memulainya mari kita tinjau suatu program yang sangat sederhana berikut #include <stdio.h> int main() { printf("Mari kita mulai belajar C\n"); return 0; } Gambar berikut menjelaskan bagian-bagian yang ada dalam program di atas:
Gambar 1: Diagram penjelasan bagian kode program C.
3
Berikut adalah penjelasan atas bagian-bagian dalam program sederhana di atas 1. Berkas header dengan ekstensi.h adalah berkas berisi prototipe fungsi, definisi konstanta, dan definisi variabel. Prototipe fungsi berupa judul suatu fungsi yang dilengkapi argumen dan tipe argumen serta tipe nilai balik, untuk fungsi yang memberikan nilai balik. Bagian ini adalah bagian yang menjadi prasyarat agar suatu program dapat dikompilasi. 2. Praposesor #include adalah suatu perintah yang digunakan untuk mengatur kompiler agar membaca berkas header yang disertakan setelahnya. 3. main adalah fungsi yang akan dijalankan pertama kali ketika program dieksekusi. Int menunjukan bahwa program memberikan nilai balik yang bertipe integer yang berarti bilangan bulat 4. printf pada program di atas adalah sebuah fungsi yang digunakan untuk menampilkan tulisan pada layar. Adapun tulisan yang akan ditampilkan adalah tulisan yang berada dalam tanda kurung dan tanda petik. Tulisan yang ditampilkan mempunyai tipe data string. 5. Nilai balik program ditentukan oleh pernyataan return. Pada contoh di atas nilai balik adalah nol, yang berarti jika berhasil maka nilai balik inilah yang akan dikeluarkan. Selain pembahasan secara ringkas mengenai pemrograman C di atas, sebenarnya masih banyak sekali hal-hal yang perlu dipelajari oleh mahasiswa agar benar-benar menguasai bahasa pemrograman C. Beberapa hal yang perlu dipelajari tersebut adalah: pengenal (identifer), penunjuk (pointer), tipe data, variabel dan deklarasinya, literal, karakter escape, operator dan lain sebagainya. Bagian tersebut tidak akan dibahas secara detail dalam buku ini. Dalam bagian berikutnya akan ditunjukan suatu konsep yang penting dalam pemrograman yaitu konsep rekursi khususnya rekursi dalam bahasa C. 5.2 Rekursi dalam Bahasa C Rekursi adalah suatu konsep yang sangat penting dalam pemrograman. Suatu fungsi dalam program disebut sebagai rekursif jika fungsi tersebut memanggil dirinya sendiri.
4
Berikut adalah contoh penggunaan konsep rekursi dalam program C. #include <stdio.h> int sum(int n); int main(){ int num,add; printf("Enter a positive integer:\n"); scanf("%d",&num); add=sum(num); printf("sum=%d",add); } int sum(int n){ if(n==0) return n; else return n+sum(n-1); /*self call to function sum() */ } Contoh program di atas menunjukan bahwa fungsi sum pada dasarnya memanggil dirinya sendiri. Karenanya fungsi sum dalam program tersebut menunjukan sesuatu yang bersifat rekursif.
5.2.1 Penerapan pemrograman pada contoh sederhana Setelah contoh di atas kali ini akan dibahas suatu ungkapan matematik sederhana yang disebut dengan logistic map. Perlu ditekankan bahwa meskipun secara ungkapan matematik tampak sederhana namun permasalahan ini sebenarnya mengandung kompleksitas yang tinggi. Berikut adalah ungkapan matematik logistic map yang dimaksud 𝑥!!! = 𝑟𝑥! 1 − 𝑥! (5.1) Berikut ini adalah contoh program yang digunakan untuk menampilkan nilai dari x sebagai fungsi n dengan nilai masukan x0 dan r tertentu.
5
#include <stdio.h> #include <math.h> void main(void) { float const a = 2.80; float const b = 3.10; float const x0 = 0.312; float x = x0; float y = x0; int i; for (i = 0; i <= 60; i++) { printf("%d\t%f\t%f\n",i,x,y); x = a * x * (1.0-x); y = b * y * (1.0-y); } } Setelah dijalankan maka untuk parameter r = 1.8 dan x0 = 0.312
Figure 2: Hasil rekursi dengan menggunakan pers. (5.1).
6
Setelah dijalankan maka untuk parameter r = 2.8 dan x0 = 0.312
Gambar 3: Hasil rekursi dengan menggunakan pers. (5.1) dan parameter r = 2.8 dan x0 = 0.312.
Sedangkan untuk parameter untuk parameter r = 3.1 dan x0 = 0.312 hasil rekursi diberikan oleh gambar berikut
7
Gambar 4: Hasil rekursi dengan menggunakan pers. (5.1) dan parameter r = 3.1 dan x0 = 0.312.
5.3 Tugas Ubahlah kode sumber logistic map di atas (jika bisa gunakanlah logika rekursif). Dengan kode sumber tersebut, tunjukan grafik xn versus r dengan memvariasi r dari 0 sampai dengan 4 dengan selang 0.01.
8
Petunjuk :