Laporan Praktikum Algoritma dan Pemrogra

V. Tugas Praktikum

V.1 Program Sederhana Dalam C Analisa Program

Pada percobaan program 1 dengan memodifikasi program tersebut dapat dianalisa sebagai berikut:

1. Pada saat program ditambahkan #include<stdio.h> program menjadi compiled. Hal ini karena sintaks tersebut library standar untuk operasi input/output atau fungsi lain yang mana library tersebut terdapat di dalam file header studio.h .

2. Pada saat sintaks /* . . . */ dan // dihapus, muncul pesan error ketika program decompile. Hal ini dikarenakan kode yang dimasukan setelah sintaks komentar dihapus tidak dapat didefinisikan atau tidak dikenali tipe seperti itu. Namun program bias di run dan dijalankan dengan benar.

3. Pada saat main() diganti dengan Main(), program tidak dapat dicompile karena Main() tidak dikenali, dan akibat lainnya program tersebut tidak memiliki fungsi utama ( main() ) sehingga fungsi lain tidak akan dieksekusi.

4. Setelah tamda \n dihapus, tampilan program setelah di-run baris kedua pada program dengan output “Selamat belajar Algoritma dan Pemrograman” menjadi berada di baris pertama. Hal ini dikarenakan \n adalah fungsi yang digunakan untuk membuat baris yang baru.

5. Setelah tanda “;” dihapus, saat dicompile terdapat pesan error bahwa program tidak dapat dicompile. Tanda “;” adalah tanda yang digunakan sebagai akhir dari sebuah fungsi atau statement, sehingga ketika tanda tersebut dihapus, program atau statement yang ada tidak dapat dikenali.

6. Setelah tanda { atau } dihapus terjadi error dimana fungsi dan statement yang ditulis tidak dapat dikenali.

7. Setelah tanda (“..”) diganti dengan tanda (‘…’), terjadi error saat dicompile dengan pesan invalid conversion from ‘int’ to ‘const char*’. Fungsi tidak dapat dikenali karena diharuskan untuk memakai “…” bukan ‘…’.

8. Setelah sintaks return 0 ; dihapus, program masih bias dicompile dan ditampilkan dengan tampilan yang sama dengan pemakaian return 0 ;. Sintaks

ini berfungsi untuk mengembalikan nilai ke angka 0.

V.2 Mengoperasikan Dua Buah Bilangan Listing Program

#include<stdio.h> main() {

int bil1, bil2, jumlah; printf("Input bilangan 1 : \n"); scanf("%d", &bil1); printf("Input bilangan 2 : \n"); scanf("%d", &bil2); jumlah=bil1+bil2; printf("Penjumlahan %d dengan %d adalah %d", bil1, bil2, jumlah); return 0;

Tampilan Program

Tabel 5.1 Operator aritmatika dalam C

Operator C Operator Aritmatika

Ekspresi C Perkalian

Ekspresi Aljabar

bil1 x bil2

bil1 * bil2

Analisa Program

Program menggunakan output dan input yaitu printf() dan scanf() dimana sebelumnya dideklarasikan bahwa dua bilangan yang dipakai adalah bilangan bulat

dengan sintaks int bil1, bil2, jumlah; . pintf() digunakan untuk menampilkan perintah apa yang akan diinput ke dalam program, sedangkan scanf(“%d”, &bil ) berfungsi membaca nilai bertipe integer (bilangan bulat) dari variable bil. jumlah dideklarasikan dengan operator assignment, yaitu jumlah=bil1+bil2.

Operator penjumlahan diganti dengan operator perkalian dengan simbol “*”. Hasil yang ditampilkan adalah sama dengan hasil perkalian aritmatika perkalian.

V.3 Menggu nakan statement “if” dan operator relasi Listing Program

#include<stdio.h> main() {

int bil1, bil2; printf("Masukan dua bilangan integer, \n"); scanf("%d %d", &bil1, &bil2); printf("Hubungan antara dua bilangan tersebut adalah : "); if (bil1 == bil2) printf("%d sama dengan %d \n", bil1, bil2); if (bil1 != bil2) printf("%d tidak sama dengan %d \n", bil1, bil2); if (bil1 < bil2) printf("%d lebih kecil dari %d \n", bil1, bil2); if (bil1 > bil2) printf("%d lebih besar dari %d \n", bil1, bil2); if (bil1 <= bil2) printf("%d lebih kecil atau sama dengan %d", bil1, bil2); if (bil1 >= bil2) int bil1, bil2; printf("Masukan dua bilangan integer, \n"); scanf("%d %d", &bil1, &bil2); printf("Hubungan antara dua bilangan tersebut adalah : "); if (bil1 == bil2) printf("%d sama dengan %d \n", bil1, bil2); if (bil1 != bil2) printf("%d tidak sama dengan %d \n", bil1, bil2); if (bil1 < bil2) printf("%d lebih kecil dari %d \n", bil1, bil2); if (bil1 > bil2) printf("%d lebih besar dari %d \n", bil1, bil2); if (bil1 <= bil2) printf("%d lebih kecil atau sama dengan %d", bil1, bil2); if (bil1 >= bil2)

Tampilan Program

Analisa Program

Pada program ini dilakukan pendeklarasian dimana bil1 dan bil2 adalah integer. Sintaks printf() untuk menampilkan perintah input pada layar, dan sintaks scanf(“%d”, variable) digunakan untuk menginput data dari perintah yang ditampilkan, dan memberikan nilai pada variable yang ditulis. Sintaks if digunakan dalam pengkondisian saat statement memiliki dua kemungkinan yaitu true atau false. Operator relasi yang digunakan akan mengecek hubungan antara dua bilangan yang diinput, dan setelah if digunakan sintaks printf() untuk menampilkan hubungan dua bilangan tersebut dilayar sesuai dengan operator yang digunakan pada sintaks if. Data yang diinput akan diproses oleh semua sintaks if (dengan operan yang berbeda) dan akan menghasilkan output yang bernilai benar mengenai relasi dua bilangan tersebut.

VI. Tugas Akhir

1. Buatlah program C untuk memasukkan tiga buah bilangan integer melalui keyboard . Kemudian program akan menampilkan jumlah, rata-rata, product (perkalian ketiga bilangan tersebut), nilai terkecil dan nilai terbesar dari ketiga bilangan tersebut, Sebagai contoh, tampilan yang diinginkan adalah sebagai berikut

Masukkan tiga buah bilangan integer : 2 8 7 Penjumlahan : 17

Rata-rata : 5,67 Product : 112

Listing program

#include<stdio.h> main() {

int a, b, c, sum=0, product=0; float average; printf("Input tiga bilangan integer : \n"); scanf("%d %d %d", &a, &b, &c); sum=a+b+c; printf("Penjumlahan : %d \n", sum); average=sum/3; printf("Rata-rata : %.2f \n", average); product=a*b*c; printf("Product : %d \n", product); if(a>=b && a>=c) printf("Bilangan Terbesar : %d \n", a); if(b>=a && b>=c) printf("Bilangan Terbesar : %d \n", b); if(c>=a && c>=b) printf("Bilangan Terbesar : %d \n", c); if(a<=b && a<=c) printf("Bilangan Terkecil : %d \n", a); if(b<=a && b<=c) printf("Bilangan Terkecil : %d \n", b); if(c<=a && c<=b) printf("Bilangan Terkecil : %d \n", c); return 0;

Tampilan Program

Analisa Program

Pada program ini dilakukan pendeklarasian bilangan integer yaitu tiga bilangan yang diiput, jumlah, dan product, sedangkan average dideklarasikan sebagai bilangan riil. Printf() digunakan untuk menampilkan output berupa perintah Pada program ini dilakukan pendeklarasian bilangan integer yaitu tiga bilangan yang diiput, jumlah, dan product, sedangkan average dideklarasikan sebagai bilangan riil. Printf() digunakan untuk menampilkan output berupa perintah

2. Buatlah program yang menghasilkan keluaran sebagai berikut:

Listing Program

#include<stdio.h> main() {

printf("**********\t * \t * \t **********\t 123456789\n"); printf("* *\t * * \t * * \t * ** *\t 21 8\n"); printf("* *\t * * \t * * *\t * ** *\t 3 1 7\n"); printf("* *\t * * \t * \t * ** *\t 4 1 6\n"); printf("* *\t * * \t * \t **********\t 5 1 5\n"); printf("* *\t * * \t * \t * ** *\t 4 1 4\n"); printf("* *\t * * \t * \t * ** *\t 3 1 3\n"); printf("* *\t * * \t * \t * ** *\t 2 12\n");

printf("**********\t * \t * \t **********\t 123456789\n"); }

Tampilan Program

Analisa Program

Pada program statement/fungsi output yang digunakan hanya printf(). Bentukan disesuaikan dengan output yang ingin dihasilkan. Tanda \t digunakan untuk menambah tab pada output agar terdapat jarak yang cukup antargambar, sehingga tidak perlu menggunakan spasi untuk memberi jarak bentukan/gambar.

VII. Kesimpulan

Dari praktikum yang dilakukan, dapat disimpulkan beberapa hal sebagai berikut:

1. Bahasa program C adalah salah satu bahasa program tingkat tinggi (sebagian mengkategorikan sebagai bahasa tingkat menengah) yang banyak digunakan dan dipelajari.

2. Statement input pada bahasa C diantaranya degan menggunakan scanf(), yaitu fungsi input standar library. Sintaks dari statement scanf() adalah:

scanf(“convention specifier”, variable);

Sedangkan sintaks dasar output adalah statement print(). Sintaks ini akan menampilkan statement di monitor. Sintaks dari statement printf() adalah: printf(“convention specifier”, variable);

3. Tipe data dalam bahasa C dapat dibagi menjadi tiga tipe data, yaitu yaitu tipe data dasar, tipe data bentukan, dan tipe data enumerasi.

a. Tipe data dasar diantaranya tipe bilangan bulat (int), tipe bilangan riil (float), tipe karakter dan string, dan tipe data logika.

b. Tipe data bentukan adalah tipe data yang didefinisikan sendiri pada program yang dibuat. Tipe ini diantaranya adalah tipe array dan struktur.

c. Tipe data enumerasi adalah tipe data yang nilainya telah didefinisikan secara pasti pada saat pembuatan tipe tersebut.

4. Operator dalam bahasa C digunakan untuk mengoperasikan operand dengan bentuk simbol-simbol. Operator dapat dikelompokan menjadi empat.

a. Operan assignment, yaitu untuk memasukan nilai ke suatu variable (simbol =).

b. Operator unery, untuk melakukan operasi-operasi pada sebuah operan.

c. Operator binery, untuk melakukan operasi-operasi pada dua buat operand.

d. Operator ternary, untuk melakukan operasi-operasi pada tiga buah operand.

V. Tugas Praktikum

V.1 Struktur if … else if … Menampilkan Huruf Mutu dari Nilai Ujian Listing Program

/* Program 2 - Menampilkan Huruf Mutu dari Nilai*/ #include<stdio.h> main() {

int nilai; printf("Masukkan nilai ujian : \n"); scanf("%d", &nilai); if(nilai>=80 && nilai<=100) printf("Huruf Mutu : A"); else if(nilai>=68 && nilai<=79) printf("Huruf Mutu : B"); else if(nilai>=58 && nilai<=67) printf("Huruf Mutu : C"); else if(nilai>=45 && nilai<=57) printf("Huruf Mutu : D"); else if(nilai<=45) printf("Huruf Mutu : E"); return 0;

Tampilan Program

Gambar 5.1 Tampilan program 2 – Menampilkan huruf mutu dari nilai ujian

Analisa Program

Program ini memberikan output yang sesuai yang diinginkan. Program menggunakan struktur else if. Variable yang dideklarasikan adalah nilai, yang akan diinput untuk menentukan huruf mutu dari nilai. Ketika nilai dimasukkan dan dibaca melalui sintaks scanf(), nilai akan diproses ke dalam perintah if.. else if.. Ketika kondisi nilai memenuhi salah satu kondisi if, maka statement dalam if akan dieksekusi yaitu berupa huruf mutu.

Modifikasi 1 – Memunculkan Pesan Error Listing Program

/* Program 2 - Menampilkan Huruf Mutu dari Nilai*/

#include<stdio.h> main() {

int nilai; printf("Masukkan nilai ujian : \n"); scanf("%d", &nilai); if(nilai>=80 && nilai<=100) printf("Huruf Mutu : A"); else if(nilai>=68 && nilai<=79) printf("Huruf Mutu : B"); else if(nilai>=58 && nilai<=67) printf("Huruf Mutu : C"); else if(nilai>=45 && nilai<=57) printf("Huruf Mutu : D"); else if(nilai>=0 && nilai<=45) printf("Huruf Mutu : E"); else printf("Nilai yang anda masukan salah"); return 0;

Tampilan Program

Gambar 5.2 Pesan error ketika nilai diluar rentang 0 hingga 100

Analisa Program

Program ini memiliki rentang 0 sampai 100 karena ketika kondisi nilai tidak ada yang memenuhi maka akan dieksekusi perintah else di akhir berupa pesan kesalahan ( else printf("Nilai yang anda masukan salah");).

Modifikasi 2 – Memberikan ketentuan tanda plus (+) dan minus (-) dalam rentang tertentu

Listing Program

#include<stdio.h> main() {

int nilai, r, b, a; printf("Masukkan nilai ujian : \n"); scanf("%d", &nilai); if(nilai>=80 && nilai<=100) {

r=100-80; a=(0.7*r)+80; b=(0.4*r)+80; if(nilai>=a) printf("Huruf Mutu : A+"); else if (nilai<=b) printf("Huruf Mutu : A-"); else printf("Huruf Mutu : A");} r=100-80; a=(0.7*r)+80; b=(0.4*r)+80; if(nilai>=a) printf("Huruf Mutu : A+"); else if (nilai<=b) printf("Huruf Mutu : A-"); else printf("Huruf Mutu : A");}

else if(nilai>=58 && nilai<=67){ r=100-80; a=(0.7*r)+58; b=(0.4*r)+58; if(nilai>=a) printf("Huruf Mutu : C+"); else if (nilai<=b) printf("Huruf Mutu : C-"); else printf("Huruf Mutu : C"); }

else if(nilai>=45 && nilai<=57){ r=100-80; a=(0.7*r)+45; b=(0.4*r)+45; if(nilai>=a) printf("Huruf Mutu : D+"); else if (nilai<=b) printf("Huruf Mutu : D-"); else printf("Huruf Mutu : D"); }

else if(nilai>=0 && nilai<=45) { r=100-80; a=(0.7*r)+0; b=(0.4*r)+0; if(nilai>=a) printf("Huruf Mutu : E+"); else if (nilai<=b) printf("Huruf Mutu : E-"); else printf("Huruf Mutu : E"); }

else printf("Nilai yang anda masukan salah"); return 0;

Tampilan Program

Gambar 5.3 Modifikasi program 2 dengan menambah tanda + atau -

Analisa Program Program diberikan inisialisai diantara rentang nilai dari tiap kasus dimana ada penambahan berupa output data yang memakai tanda “+” , “-”, atau tanpa kedua

tanda tersebut dengan memberikan nilai pada variable r (rentang) a, dan b. Penginisialisasian dilakukan di dalam blok tiap kasus if, sehingga yang akan dieksekusi adalah ketika kasus memenuhi.

V.2 Struktur switch… case… break Mengkonversi Hururf Mutu Menjadi Angka Mutu

Listing Program

#include<stdio.h> main() {

char a; // a = huruf mutu printf("Masukan Huruf Mutu : \n"); scanf("%c", &a); switch(a) {

case 'A' : printf("Angka Mutu %c adalah 4", a); break; case 'B' : printf("Angka Mutu %c adalah 3", a); break; case 'C' : printf("Angka Mutu %c adalah 2", a); break; case 'D' : printf("Angka Mutu %c adalah 1", a); break; case 'E' : printf("Angka Mutu %c adalah 0", a); break; default : printf("Angka yang anda masukkan salah");}

return 0; }

Tampilan Program

Gambar 5.4 Program mengkonkersi huruf mutu menjadi angka mutu

Analisa Program

Program menampilkan perintah untuk memasukan huruf mutu dengan sintaks printf(), dengan menginput huruf berupa karakter melalui scanf() statemen. Kemudian diinput angka mutu yang diinginkan. Program akan mengecek ke dalam case yang ada. Ketika pada suatu case kondisi bernilai benar (true) maka program akan mengeksekusi statement pada case tersebut, yaitu menampilkan angka mutu dari huruf mutu yang diinput, kemudian program tidak akan mengecek Program menampilkan perintah untuk memasukan huruf mutu dengan sintaks printf(), dengan menginput huruf berupa karakter melalui scanf() statemen. Kemudian diinput angka mutu yang diinginkan. Program akan mengecek ke dalam case yang ada. Ketika pada suatu case kondisi bernilai benar (true) maka program akan mengeksekusi statement pada case tersebut, yaitu menampilkan angka mutu dari huruf mutu yang diinput, kemudian program tidak akan mengecek

VI. Tugas Akhir

1. Buatlah program C untuk menghitung jumlah hari dengan data masukan berupa

tanggal, bulan, dan tahun. Luaran yang diharapkan adalah sebagai berikut

Masukkan tanggal pertama (tt bb thn) : 01 04 2007 Masukkan tanggal kedua (tt bb thn) : 01 03 2007 Jumlah hari adalah : 31 hari

Perhatikan pula perhitungan kabisat.

2. Buatlah program untuk menghitung IP (Indeks Prestasi) mahasiswa dengan data masukan berupa jumlah mata kuliah, SKS mata kuliah, serta huruf mutu untuk tiap mata kuliah. Keluaran yang diharapkan berupa nilai IP mahasiswa. Jangan lupa tampilkan pesan kesalahan apabila huruf mutu tidak berada dalam rentang A hingga E.

VI.1 Menghitung Jumlah Hari dari Dua Tanggal Listing Program

/*AP-2 Tugas Akhir 1 - Menghitung hari dari dua tanggal*/ #include <stdio.h>

int bulan2hari(int m, int y) { if (m==1) {m=0;} else if (m==2) {m=31;} else if ((m==3) && (y%4==0)) {m=60;} else if ((m==3) && (y%4!=0))

{m=59;} else if ((m==4) && (y%4==0)) {m=91;} else if ((m==4) && (y%4!=0)) {m=90;} else if ((m==5) && (y%4==0)) {m=121;} else if ((m==5) && (y%4!=0)) {m=120;} else if ((m==6) && (y%4==0)) {m=152;} else if ((m==6) && (y%4!=0)) {m=151;} else if ((m==7) && (y%4==0)) {m=182;} else if ((m==7) && (y%4!=0)) {m=181;} else if ((m==8) && (y%4==0)) {m=213;} else if ((m==8) && (y%4!=0)) {m=212;} else if ((m==9) && (y%4==0)) {m=244;} else if ((m==9) && (y%4!=0)) {m=243;} else {m=59;} else if ((m==4) && (y%4==0)) {m=91;} else if ((m==4) && (y%4!=0)) {m=90;} else if ((m==5) && (y%4==0)) {m=121;} else if ((m==5) && (y%4!=0)) {m=120;} else if ((m==6) && (y%4==0)) {m=152;} else if ((m==6) && (y%4!=0)) {m=151;} else if ((m==7) && (y%4==0)) {m=182;} else if ((m==7) && (y%4!=0)) {m=181;} else if ((m==8) && (y%4==0)) {m=213;} else if ((m==8) && (y%4!=0)) {m=212;} else if ((m==9) && (y%4==0)) {m=244;} else if ((m==9) && (y%4!=0)) {m=243;} else

int d1, m1, y1, d2, m2, y2, s1, s2, r; //Input data dibawah printf("Masukkan tanggal pertama (tt bb thn) : "); scanf("%d %d %d", &d1,&m1,&y1); printf("Masukkan tanggal kedua (tt bb thn) : "); scanf("%d %d %d", &d2,&m2,&y2); m1=bulan2hari(m1,y1); m2=bulan2hari(m2,y2); s1=d1+m1+((y1-1)*365); s2=d2+m2+((y2-1)*365); if(s1<s2) r=s2-s1; else r=s1-s2;

printf("Jumlah hari adalah : %d hari", r); //Output }

Tampilan Program

Gambar 5.5 Program menghitung selisih hari dari dua tanggal

Analisa Program

Program menggunakan struktur if else if, dimana dideklarasikan variable untuk tanggal pertama (d1 m1 y1) dan tanggal kedua(d2 m2 y2), lalu jumlah hari tanggal pertama (s1) dan tanggal kedua (s2), serta jumlah hari (r) yang berupa output baris ketiga pada gambar 5.5. Karena terdapat perbedaan jumlah hari dalam bulan, maka dibuat beberapa kasus menggunakan statement else if untuk bulan dengan jumlah hari berbeda. Jumlah hari yang berbeda yaitu 28,29,30, dan 31. Karena terdapat pula perbedaan jumlah hari pada tahun kabisat dengan bukan kabisat, maka dibuat kondisi untuk tahun kabisat (tahun habis dibagi nol) dan tahun bukan kabisat (tahun tidak habis dibagi nol).

Output yang dihasilkan dengan perintah printf() yaitu tanggal dan jumlah hari memberikan tampilan yang benar.

VI.2 Menghitung IP (Indeks Prestasi) Mahasiswa Listing Program

/* AP-2 Tugas Akhir-2 Menghitung IP*/ #include<stdio.h>

main() {

char h; int dk, mk; float SKS, angka, IP, i, a, b, total; label : a=0, b=0; printf("Masukkan jumlah mata kuliah : "); scanf("%d", &mk);

for(i=1; i<=mk; i++) { dk=dk+1; printf("Masukkan jumlah SKS mata kuliah ke-%d: ", dk); scanf("%f", &SKS); printf("Masukkan huruf mutu mata kuliah ke-%d: ", dk); scanf("%s", &h);

switch (h) { case 'A' : angka=4; break; case 'B' : angka=3; break; case 'C' : angka=2; break; case 'D' : angka=1; break; case 'E' : angka=0; break; default : angka=5; break;

} IP=SKS*angka; a+=IP; b+=SKS; total=a/b; } if(angka>=1 && angka<=4) printf("Jumlah IP=%.2f\n", total); else {printf("Huruf mutu yang anda masukkan salah, silahkan

ulangi!\n"); goto label ;}

Tampilan Program

Gambar 5.6 Program menghitung IP

Gambar 5.7 Pesan erro ketika huruf mutu yang diinput diluar rentang A sampai E

Analisa Program

Program mendeklarasikan tipe data integer, float, dan character. Tipe float dideklarasikan untuk angka karena pada pengoperasian IP dibutuhkan tipe float untuk menghasilkan IP berupa bilangan riil. Statement for dingunaka untuk mengulangi input data SKS dan huruf mutu berdasarkan jumlah mata kuliah yang diinput. Statement switch digunakan di dalam blok statemen for untuk pengecekan angka yang memiliki beberapa kondisi dari huruf mutu yang diinput. Dalam blok for juga dilakukan pengoperasian IP. Huruf mutu berada pada rentang A sampai E sehingga digunakan statement if else untuk kondisi tersebut. Apabila kondisi bernilai benar maka akan menghasilkan output berupa nilai IP, sedangkan apabila inputan huruf mutu bernilai salah maka yang akan dieksekusi adalah statemen pada else berupa pesan kesalahan.

VII. Kesimpulan

Berdasarkan praktikum yang telah dilakukan, dapat ditarik kesimpulan sebagai berikut.

1. Statement if.. digunakan dalam pengkondisian dengan satu kasus, dimana akan terdapat dua kemungkinan dari kondisi tersebut, yaitu kondisi bernilai benar (true) atau kondisi bernilai salah (false), pada kondisi true maka program akan mengeksekusi statemen true, sedangkan ketika kondisi bernilai salah maka program tidak akan mengeksekusi dan akan langsung keluar dari pemrosesan.

2. Statement else digunakan pada satu pengkondisian untuk dua kasus, dimana pada kondisi bernilai benar akan ada statement yang dieksekusi, dan apabila pada kasus bernilai salah aka nada juga statement yang dieksekusi.

3. Statement else if digunakan untuk pengkondisian dengan banyak kemungkinan kasus (lebih dari dua). Sehingga pada beberapa kondisi akan menyebabkan beberapa kasus yang memungkinkan untuk dieksekusi.

4. Statement switch.. case.. break.. digunakan dalam pengkondisian dimana suatu ekspresi (nilai atau karakter) akan memiliki beberapa kemungkinan nilai (konstan) yang didefinisikan di dalam perintah case, lalu perintah break akan menghentikan pengecekan jika case telah terpenuhi.

V. Tugas Praktikum

VI.1. Menghitung Nilai Faktorial Listing Program

#include<stdio.h> main() {

int i, bil, n; printf("Masukkan bilangan : "); scanf("%d", &bil); n=1; for (i=1; i<=bil ; i++) {

n=n*i; } printf("Faktorial dari %d adalah %d", bil, n);

Tampilan Program

Gambar 5.1 Program menghitung nilai factorial menggunakan struktur for

Analisa Program

Program menampilkan output yang benar. Program mendeklarasikan nilai bilangan sebagai integer, lalu dilakukan perintah memasukan bilangan dengan sintaks printf() dan menginput bilangan dengan sintaks scanf() yang dimasukan sebagai nilai variable bil. Dengan menggunakan struktur for, dimana di dalam blok for terdapat statement n=n*i. Pengeksekusian statemen tersebut akan berlangsung dari i=1 sampai i=9. Setiap I akan menghasilkan nilai n yang baru dan akan dimasukan untuk i yang selanjutnya sehingga pada akhir eksekusi akan didapat nilai factorial sesuai definisi matematisnya yakni 𝑛! = 1 𝑥 2 𝑥 3 𝑥 . . . 𝑥 𝑛 .

V.2 Struktur while… dan do-while…

1. Modifikasi Program 1 – Menentukan Nilai Rata-rata dengan struktur while Listing Program

#include<stdio.h> main() {

int i, N, bil; float jumlah=0, rata2; i=1; printf("Masukkan jumlah bilangan : "); scanf("%d", &N); while (i<=N) {

printf("Masukan bilangan ke %d: ", i); scanf("%d", &bil); jumlah+=bil; i++;

} rata2=jumlah/N; printf("Nilai rata-rata adalah : %.2f \n", rata2);

return 0; }

Tampilan Program

Gambar 5.2 Program menghitung nilai rata-rata menggunakan struktur while

Analisa Program

Program menggunakan deklarasi integer dan float dimana variable yang dideklarasikan sebagai integer adalah i, N, bil, dan sebagai float adalah jumlah, dan rata2. Hal ini dikarenakan untuk menghasilkan nilai rata2 yang berupa bilangan real (float) maka dalam pengoperasian aritmatik untuk rata2 (rata2=jumlah/N) harus ada yang berupa minimal 1 tipe data float. i=1 diinisialisasikan agar variable i digunakan dimulai dari angka 1. Dengan sintaks printf() deperintahkan untuk memasukkan jumlah bilangan yang akan diinput, dan sintaks scanf() akan membaca inputan keyboard dan memasukan inputan sebagai nilai variable N. Dengan penggunaan struktur while, i dikondisikan i<=N, dan didalamnya terdapat statement printf() untuk melakukan perintah inputan bilangan ke-I, dan juga statement berupa operasi aritmatika jumlah+=bil. operasi ini akan menjumlahkan bilangan yang diinput. Pengulangan akan berhenti ketika nilai I sudah tidak Program menggunakan deklarasi integer dan float dimana variable yang dideklarasikan sebagai integer adalah i, N, bil, dan sebagai float adalah jumlah, dan rata2. Hal ini dikarenakan untuk menghasilkan nilai rata2 yang berupa bilangan real (float) maka dalam pengoperasian aritmatik untuk rata2 (rata2=jumlah/N) harus ada yang berupa minimal 1 tipe data float. i=1 diinisialisasikan agar variable i digunakan dimulai dari angka 1. Dengan sintaks printf() deperintahkan untuk memasukkan jumlah bilangan yang akan diinput, dan sintaks scanf() akan membaca inputan keyboard dan memasukan inputan sebagai nilai variable N. Dengan penggunaan struktur while, i dikondisikan i<=N, dan didalamnya terdapat statement printf() untuk melakukan perintah inputan bilangan ke-I, dan juga statement berupa operasi aritmatika jumlah+=bil. operasi ini akan menjumlahkan bilangan yang diinput. Pengulangan akan berhenti ketika nilai I sudah tidak

2. Modifikasi Program 1 – Menentukan Nilai Rata-rata dengan struktur do- while Listing Program

#include<stdio.h> main() {

int i, N, bil; float jumlah=0, rata2; i=1; printf("Masukkan jumlah bilangan : "); scanf("%d", &N); do {

printf("Masukan bilangan ke %d: ", i); scanf("%d", &bil); jumlah+=bil; i++;

} while (i<=N); rata2=jumlah/N; printf("Nilai rata-rata adalah : %.2f \n", rata2);

return 0; }

Tampilan program

Gambar 5.3 Program menentukan nilai rata-rata menggunakan struktur do-while

Gambar 5.4 Program ketika variable i > N

Gambar 5.5 Program dengan struktur while ketika i>N

Analisa Program

Program ini hampir sama dengan struktur while, namun yang membedakan adalah program akan terlebih dahulu mengeksekusi statemen di blok do yaitu inputan bilangan dan pengoperasian jumlah+=bil, dan baru ketika setelah eksekusi akan dicek nilai i apakah masih memenuhi kondisi di while atau tidak. Kasus akan berbeda apabila i diinisialisasikan lebih dari N, maka program akan tetap mengeksekusi statement didalam blok do-while seperti gambar 5.4 dan akan memberikan nilai bagi variable jumlah dan akan dioperasikan pada operasi rata2 walaupun tidak akan sesuai yang diinginkan. Sedangkan pada struktur while, statemen tidak akan dieksekusi dan output seperti gambar 5.5.

3. Modifikasi Program 2 – Menampilkan Deret Fibonacci dengan Struktur while Listing Program

#include<stdio.h> main() {

int n, i, bil1, bil2, bil3; printf("Program Deter Fibonacci\n"); printf("Masukkan jumlah bilangan yang ingin ditampilkan :

"); scanf("%d", &n); printf("Masukkan bilangan pertama : "); scanf("%d", &bil1); printf("Masukkan bilangan ke dua : "); scanf("%d", &bil2); printf("\tOutput : %d,%d", bil1, bil2); i=1; while (i<=n-2) {

bil3=bil1+bil2; bil1=bil2; bil2=bil3; printf(",%d", bil3); bil3=bil1+bil2; bil1=bil2; bil2=bil3; printf(",%d", bil3);

Tampilan Program

Gambar 5.6 Program Deret Fibonacci menggunakan struktur while

Analisa Program

Program ini menggunakan deklarasi integer untuk bilangan ke 1 dan 2, dan jumlah bilangan serta output deret bilangan. Sintaks printf() menampilkan tulisan Program Deret Fibonacci, perintah untuk memasukkan jumlah bilangan yang ditampikan, bilangan pertama dan kedua dan sintaks scanf() akan membaca inputan keyboard tersebut yang akan memberikan nilai bagi variable n, bil1, dan bil2. Dengan struktur while, dimana dikondisikan untuk i<=N akan dieksekusi statement berupa operasi aritmatik di dalam blok while, bilangan 3 diperoleh dari bil3=bil1+bil2, setelah itu bil1 akan diinisialkan sebagai bil2 dan bil2 akan diinisialkan sebagai bil3, dan bil3 diawal akan dioutputkan, ketika nilai i masih memenuhi kondisi maka akan dieksekusi lagi statement sampai kondisi tidak memenuhi. Perintah \t dalam sintaks printf("\tOutput : %d,%d", bil1, bil2); akan memberikan tab kepada tampilan sintaks tersebut.

4. Modifikasi Program 2 – Menampilkan Deret Fibonacci dengan struktur do-while Listing Program

#include<stdio.h> main() {

int n, i, bil1, bil2, bil3; printf("Program Deret Fibonacci\n"); int n, i, bil1, bil2, bil3; printf("Program Deret Fibonacci\n");

bil3=bil1+bil2; bil1=bil2; bil2=bil3; printf(",%d", bil3); i++;

} while (i<=n-2); return 0; }

Tampilan Program

Gambar 5.7 Program Deret Fibonacci menggunakan struktur do-while

Analisa Program

Program ini menghasilkan output yang sama dengan program yang menggunakan struktur while hanya dalam prosesnya program akan mengeksekusi terlebih dahulu statement dalam blok do-while selanjutnya mengecek kondisi di while(i<n-2) apakah masih memenuhi atau tidak. Perbedaan dengan struktur while akan terjadi apabila penginisialan diawal untuk i yang lebih dari n-2.

5. Modifikasi Program 3 – Menghitung Nilai Faktorial Menggunakan Struktur while Listing program

#include<stdio.h> main() {

int i, bil, n; i=1; int i, bil, n; i=1;

n=n*i; i++;

} printf("Faktorial dari %d adalah %d", bil, n);

Tampilan Program

Gambar 5.8 Program menentukan nilai factorial menggunakan struktur while

Analisa Program

Program mendeklarasikan variable yang digunakan dengan integer. Sintaks printf() akan menampilkan perintah inputan bilangan dan scanf() akan membaca bilangan yang diinput dan akan menyimpan nilai inputan sebagai nilai variable bil. Dengan menggunakan while, program akan melakukan operasi matematis seseuai statement di dalam blok pengulangan yaitu n=n*1 yang berupa operasi perhitungan nilai factorial sampai kondisi i tidak memenuhi. Setelah pengulangan berhenti akan ditampilkan nilai factorial dengan sintaks printf() yang diambil dari variable n hasih pengulangan.

6. Modifikasi Program 3 – Menghitung Nilai Faktorial Mengggunakan Struktur do-while Listing Program

#include<stdio.h> main() {

int i, bil, n; i=1; printf("Masukkan bilangan : "); scanf("%d", &bil); do {

n=n*i; i++;

} while (i<=bil); } while (i<=bil);

Tampilan Program

Gambar 5.9 Program menentukan nilai factorial menggunakan struktur do-while

Gambar 5.10 Program ketika i diinisialisasikan lebih dari bil (i=5, bil=3), statement akan dieksekusi pertama kali tanpa melakukan pengecekan kondisi terlebih dahulu

Analisa Program

Program menghasilkan output yang sama dengan menggunakan struktur while. Hanya saja program pertama kali akan mengeksekusi statement yang berada di blok do-while lalu mengecek kondisi di while(). Seperti program lain dengan menggunakan struktur do-while. Hasil akan berbeda apabila kondisi langsung tidak terpenuhi sementara program akan mengeksekusi terlebih dahulu, seperti gambar

VI. Tugas Akhir

VI.1 Menghitung Nilai Permutasi dan Kombinasi Listing Program

#include<stdio.h> main() {

int i, n, r, N, nr, R, P, C; printf("Masukkan nilai n : "); scanf("%d", &n); printf("Masukkan nilai r : "); scanf("%d", &r); if (n>=r) {

N=1; N=1;

N=N*i;

} R=1; for (i=1; i<=r; i++) {

R=R*i;

} nr=1; for (i=1; i<=n-r; i++) {

nr=nr*i;

} P=N/nr; C=N/(R*nr); printf("Nilai permutasi P(%d,%d) adalah %d\n", n, r,

P); printf("Nilai kombinasi C(%d,%d) adalah %d\n", n, r, C); } else printf("Nilai n harus lebih besar atau sama dengan r (n>=r)");

Tampilan Program

Gambar 6.1 Program menghitung nilai permutasi dan kombinasi

Gambar 6.2 Program dengan nilai 𝑛 < 𝑟 akan ada pesan error

Analisa Program

Program mendeklarasi integer pada semua variable yang digunakan. Sintaks printf() memberikan tampilan perintah menginput nilai n dan r dan sintaks scanf(%d, &variabel) akan membaca inputan dari keyboard dan menyimpan Program mendeklarasi integer pada semua variable yang digunakan. Sintaks printf() memberikan tampilan perintah menginput nilai n dan r dan sintaks scanf(%d, &variabel) akan membaca inputan dari keyboard dan menyimpan

variable) ditampilkan nilai permutasi dan kombinasi dengan menampilkan nilai variable P dan C.

VI.2 Membuat Program dengan Output Membentuk Pola Gambar Listing Program

#include<stdio.h> main() {

int i, j; for (i=1; i<=9; i++) { if (i==1 || i==9) printf("**********\t "); else printf("* *\t"); if (i==1 || i==9) {printf(" * \t");} else if (i==2 || i==8) printf(" * * \t"); else if (i==3 || i==7) printf(" * * \t"); else if (i==4 || i==6) printf(" * * \t"); else {printf("* *\t");} if (i==1 || i>=4) printf(" * \t"); else if (i==2) printf(" * * \t"); else printf("* * *\t"); if (i==1 || i==5 || i==9) {printf("**********\t");} else {printf("* ** *\t");} if (i==1) { for (j=1; j<=9; j++) { if (j!=9) printf("%d",j); else printf("%d\n",j);} } else if (i==9) {for (j=9; j>=1; j--) {printf("%d",j);}} else {printf("%d",i); for (j=1; j<i-1; j++) printf(" "); printf("1"); for (j=1; j<=8-i; j++) printf(" "); printf("%d\n",10-i);} }

Tampilan Program

Gambar 6.3 Program Tugas Akhir 2

Analisa Program

Program menggunakan dua variable yang dideklarasikan integer (int) yaitu

i dan j. Pada struktur program digunakan struktur pengulangan for dan struktur pemilihan if. struktur if digunakan untuk melakukan pengkondisian yang memerlukan eksekusi yang berbeda dari tiap nilai i. Pada statement pertama dengan struktur for (i=1; i<=9; i++) dan diteruskan dengan struktur if , dimana untuk baris 1 dan 9 akan menampilkan ∗∗∗∗∗∗∗∗∗∗ , sedangkan else mengeksekusi untuk

i selain 1 dan 9 dengan output ∗ ∗. Begitu seterusnya untuk pola bintang pada sebelahnya berupa belah ketupat, yang menggunakan if else if untuk pengkondisian outpu yang sama. Pada pola terakhir berupa tampilan angka-angka. Variable j digunakan dan dengan statement yang dieksekusi berupa angka. Karena angka tersebut membentuk pola/deret maka digunakan pengulangan dengan penambahan nilai 1 (j++) atau pengurangan 1 (j--), seperti pada statement if (j!=9) printf("%d",j);else printf("%d\n",j);}. Penggunakan perintah \t berfungsi untuk menambahkan tab pada tampilan dari printf() sehingga antar pola bintang dan angka akan terpisah, tanpa perlu menggunakan spasi yang lebih harus dihitung dalam penggunaannya.

V. Tugas Praktikum

V.1 Menggunakan Fungsi dalam Librari C Program Menampilkan deret table sin(x), cos(x), tan(x) Listing Program

#include<stdio.h> #include<math.h> garis() {

int i; for (i=1; i<=45; i++) printf("_"); printf("\n");

main() {

float x, rad; garis(); printf("SUDUT\t\tSIN\t COS\tTAN\n"); garis(); rad=3.14/180; for (x=0; x<=360 ; x+=30) {

if(x==90 || x==270) printf("%5.f%14.2f%13.2f%12s \n", x, sin(x*rad), cos(x*rad), "~"

); else

x, sin(x*rad), cos(x*rad), tan(x*rad)); if (x==30 || x==120 || x==210 || x==300) printf("%5.f%14.2f%13.2f%12.2f\n",

printf("%5.f%14.2f%13.2f%12.2f

\n",

sin((x+15)*rad), cos((x+15)*rad), tan((x+15)*rad)); }

x+15,

Tampilan Program

Gambar 5.1 Program deret tabel sin(x), cos(x), tan(x)

Analisa Program

Program meggunakan header file math.h (#include<math.h>) agar bias menggunakan fungsi matematika sin, cos, dan tan. Untuk menambahkan garis untuk table dibuat fungsi garis() dengan pajang hingga 45 karakter, disesuaikan dengan isi table. Fungsi garis() dideklarasikan sebelum fungsi main agar lebih mudah, walaupun fungsi ini berupa fungsi tanpa nilai balik (tanpa menghasilkan nilai). Dalam fungsi garis() digunakan bentuk pengulangan for. Dalam fungsi main, dideklarasikan tipe data float karena yang dibutuhkan adalah bentuk bilangan real. Diantara printf() untuk keterangan table sudut, sin, cos, dan tan, dipanggil fungsi garis() sehingga menampilkan garis seperti tampilan pada gambar. rad=3.14/180 diinisialisasikan karena fungsi yang digunakan yaitu dalam bentuk radian. Digunakan struktur for untuk mengulang nilai x dengan nilai ditambah 30 (x+=30) untuk sekali eksekusi statemen for. Dalam struktur for digunakan pengkondisian if karena pengoperasian beberapa sudut berbeda. %f digunakan karena tipe data berupa float dan %s digunakan untuk mengeprint simbol ~. Tampilan akhir berupa nilai sin cos tan untuk beberapa sudut (sudut istimewa dan kelipatannya).

V.2 Fungsi yang Menghasilkan Nilai Program Deret Fibonacci Listing Program

#include<stdio.h> float fibonacci(int a, int b) {

return(a+b); }

main() {

int i, N, bil1, bil2, bil3; printf("Masukkan banyaknya bilangan yang akan ditampilkan : "); scanf("%d", &N); printf("Masukkan bilangan pertama : "); scanf("%d", &bil1); printf("Masukkan bilangan kedua : "); scanf("%d", &bil2); printf("%d,%d,", bil1, bil2); for (i=1; i<=N-2; i++)

{ bil3=fibonacci(bil1,bil2); printf("%d,", bil3); bil1=bil2; bil2=bil3;

} printf("\n"); return 0;

Tampilan Program

Gambar 5.2 Program deret Fibonacci

Analisa Program

Program berjalan dengan baik dengan hasil yang benar. Digunakan fungsi Fibonacci untuk operasi penambahan bil1 dan bil2 yang akan dipanggil di fungsi main. Dalam fungsi main dideklarasikan semua variabel dalam bentuk bilangan bulat (integer). Sintaks print() digunakan untuk menampilkan perintah inputan nilai dan menampilkan hasil operasi. Sintaks scanf() digunakan untuk membaca inputan keyboard yang akan dimasukkan sebagai nilai variabel berdasarkan perintah inputan. Untuk pengoperasian digunakan struktur for yang mana di dalam blok for terdapat pemanggilan fungsi fibonacci(), sehingga ketika dipanggil fungsi tersebut akan dieksekusi/digunakan. Dengan struktur for yang mengeksekusi sebanyak N-2 kali maka didapat hasil deret yang diminta. Modifikasi ini lebih efisien dibanding program awal karena proses operasi untuk fibonacci dilakukan di fungsi khusus, dan di fungsi main() hanya tinggal memanggil fungsi fibonacci tersebut.

Modifikasi Program Deret Fibonacci – dalam bentuk fungsi Listing Program

#include<stdio.h> float fibonacci(int a, int b, int c) {

int i, hasil; for (i=1; i<=c-2; i++) {

hasil=a+b; printf(", %d", hasil); a=b; b=hasil;

} } main() {

int i, N, bil1, bil2; printf("Masukkan banyaknya bilangan yang akan ditampilkan : "); scanf("%d", &N); printf("Masukkan bilangan pertama : "); scanf("%d", &bil1); printf("Masukkan bilangan kedua : "); scanf("%d", &bil2); printf("%d, %d", bil1, bil2); fibonacci(bil1, bil2, N);

printf("\n"); return 0;

Tampilan Program

Gambar 5.3 Modifikasi program deret fibonacci

Analisa Program

Program hasil modifikasi dengan membuat fungsi fibonacci float fibonacci(int a, int b, int c) dimana dalam fungsi tersebut terdapat statemen untuk menghitung nilai deret fibonacci. Parameter yang digunakan ada 3 yaitu int a, int

b, int N, karena data masukkan berupa bilangan pertama, bilangan kedua dan jumlah bilangan yang ditampilkan, yang akan digunakan sebagai input bagi fungsi fibonacci. penuliasan dalam printf() untuk deret fibonacci diubah menjadi , %d agar saat output yang keluar di deret paling akhir tidak terdapat koma lagi.

Program Menghitung Nilai Faktorial Listing Program

#include<stdio.h> int Faktorial (int N){

if (N==0){ return 1; } else { return N*Faktorial(N-1); } } main() {

int bil; printf("Masukkan bilangan bulat yang akan dihitung : "); scanf("%d", &bil); printf("Faktorial dari %d adalah %d", bil, Faktorial(bil)); return 0;

Tampilan Program

Gambar 5.4 Program menghitung nilai factorial

Analisa Program

Program menggunakan fungsi Faktorial (int N) dalam tipe integer dimana menggunakan pengkondisian if, dan berupa fungsi rekursi karena terdapat pemanggilan fungsinya sendiri dalam fungsi tersebut ( return N*Faktorial(N-1);) . Dengan perintah return maka fungsi akan mengembalikan atau memberikan hasil nilai dari proses operasi pada fungsi tersebut.

VI. Tugas Akhir

1. Buatla program C untuk menghitung nilai permutasi dan kombinasi daro suatuu bilangan dengan menggunakan fungsi. Rumus permutasi : nPr = n!/(n-r)!

Rumus kombinasi : nCr = n!/(r!(n-r)!)

Program Menghitung Nilai Permutasi dan Kombinasi Listing Program

#include<stdio.h> int faktorial(int N) {

if (N==0) return 1; else return N*faktorial(N-1);

main() {

int i, n, r, C, P; printf("Masukkan nilai n : "); scanf("%d", &n); printf("Masukkan nilai r : "); scanf("%d", &r); P=faktorial(n)/faktorial(n-r); C=faktorial(n)/(faktorial(r)*faktorial(n-r)); printf("Nilai permutasi P(%d,%d) adalah %d\n", n,r,P); printf("Nilai kombinasi C(%d,%d) adalah %d", n,r,C);

Tampilan Program

Gambar 6.1 Program menghitung nilai permutasi dan kombinasi

Analisa Program

Program menggunakan fungsi int faktorial(int N) untuk mencari nilai faktorial dari data yang dibutuhkan yakni n!, r! dan (n-r)!. fungsi ini adalah fungsi rekursi karena memanggil fungsinya sendiri dalam statement fungsinya. Nilai permutasi P diinisialisasikan dengan memanggil nilai faktorial(n) dan faktorial(n-r), sama seperti kombinasi hanya saja ada pemanggilan faktorial(n-r). Dengan penggunaan ini maka faktorial akan dicari dengan fungsi faktorial(int i) yang dibuat.

Hasil tampilan berupa berupa proses input nilai dan nilai permutasi dan kombinasi yang benar.

2. Buatlah program untuk menghitung nilai 𝜋 dengan menggunakan deret bilangan seperti berikut menggunakan fungsi.

Program Menghitung Nilai 𝝅 dengan Deret Leibniz

Listing Program

#include<stdio.h> double DeretL(double n) {

double i, pi=0, s=1; for(i=1; i<=(n*2); i+=2) {

pi=pi+s*(4/i); s=-s;

} return pi;

main() {

double n; printf("Menghitung Nilai Pi dengan Deret Leibniz\n"); printf("\tpi = 4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + .... \n"); printf("\nMasukkan iterasi n : "); scanf("%lf", &n); printf("Niilai pi = %.16lf", DeretL(n));

Tampilan Program

Gambar 6.2 Program menghitung nilai 𝜋

Analisa Program

Program menggunakan fungsi deret Leibniz (DeretL(n)) yang di dalamnya terdapat operasi matematis menghitung nilai 𝜋 menggunakan pengulangan for. fungsi dideklarasikan bertipe data double karena untuk nilai 𝜋 memerlukan digit dibelakang angka dan ketelitian yang lebih banyak. begitupun variabel n, dan parameter n dideklarasikan dalam double. Iterasi n dimasukkan secara bebas karena untuk n yang bernilai tak hingga (~) maka program akan lama mengeksekusi dan tidak tampil hasil eksekusinya. sehingga n, yang menentukan banyaknya deret yang dihitung, diperkirakan dimasukkan nilai yang relatif besar seperti pada gambar 6.2. Perintah %.16lf digunakan untuk mengoutputkan 16 digit angka dibelakang koma dari nilai yang diambil yang bertipe double. Hanya 16 digit angka dibelakang koma ketelitian yang bias digunakan dalam program ini. Pemanggilan fungsi DeretL(n) yaitu ketika dalam perintah printf() untuk menampilkan nilai 𝜋.

VII. Kesimpulan

Berdasarkan praktikum yang telah dilakukan, dapat disimpulkan beberapa hal sebagai berikut.

1. Fungsi adalah blok program yang berisi statement yang dapat dipanggil berulang ulang. Fungsi dalam bahasa C memiliki struktur umum:

tipe_data nama_fungsi(parameter1,…) {

statement1; …

2. Program yang modular yaitu program yang diselesaikan dengan proses kerja yang di bagi menjadi sub-sub program. Sub program ini bias menggunakan fungsi. Program yang dibuat seperti fungsi garis(), hapus(), deret fibonacci, deret trigonometri, nilai faktorial, nilai kombinasi dan permutasi, dan nilai 𝜋.

V. Tugas Praktikum

V.1. Mengurutkan data secara naik (ascending) dan turun (descending) menggunakan metode bubble sort

Program Mengurutkan Data dengan Metode Bubble Sort Listing Program

#include<stdio.h> int bubbles_asc(int a[], int N){

int i, j, temp; for(i=N-2; i>=0; i--){

for(j=0; j<=i; j++){

if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;

} } } int bubbles_desc(int a[], int N){

int i, j, temp; for(i=N-2; i>=0; i--){

for(j=0; j<=i; j++){

if(a[j]<a[j+1]){ temp=a[j+1]; a[j+1]=a[j]; a[j]=temp;

} } } main() {

int N, i, a[100]; printf("Masukkan banyak bilangan : "); scanf("%d", &N); for(i=0; i<N; ++i){

printf("Bilangan ke %d : ", i+1); scanf("%d", &a[i]);

} bubbles_asc(a, N); printf("Ascending : "); for (i=0; i<N; i++) {

printf("%d ", a[i]); } bubbles_desc(a, N); printf("\nDescending : "); for (i=0; i<N; i++){ printf("%d ", a[i]); } bubbles_desc(a, N); printf("\nDescending : "); for (i=0; i<N; i++){

Tampilan Program

Gambar 5.1 Program mengurutkan data dengan bubble sort

Analisa Program

Program pengurutan bubble sort ini dibuat dengan membuat fungsi pengurutan untuk ascending dan descending yang terpisah di atas fungsi main(). Untuk ascending

yaitu bubbles_asc(a ,N) dimana fungsi dan parameternya menggunakan tipe data integer, dan untuk descending pun sama. di dalam fungsi terdapat pengulangan untuk mengecek hubungan antara bilangan a[i+1] dengan a[i], yang dimulai dari pengulangan untuk indeks 0 sampai N-2, dan pengecekan pengulangan bertahap dari j=0 sampai j<=i dimana dibandingkan satu per satu, ketika memenuhi maka bilangan akan ditampung ke variabel temp, dan akan bergeser ke kanan untuk ascending jika nilai lebih besar daripada nilai di urutan selanjutnya. Sedangkan untuk descending akan digeser (ditukar) ke kiri untuk nilai yang lebih kecil dari pengecekan nilai di urutan yang berdampingan. Pada fungsi main() array a[] dideklarasikan memiliki jumlah elemen 100 agar membatasi penggunaan karena keterbatasan penggunaan nilai dari suatu tupe data integer. printf() akan mengoutputkan perintah dan tulisan di layar, dan scanf() akan membaca inputan untuk dimasukan ke alamat &variabel. Ada pemanggilan fungsi sebelum perintah menampilkan urutan agar yang terbaca dalam perimtah menampilkan urutan adalah dari hasil eksekusi fungsi tersebut. Dari i=0 sampai i<N maka akan didapat nilai dari elemen array a[]. I dimulai dari nol karena untuk array indeks dimulai dari a[0] bukan a[1].

V.2. Menentukan nilai tengah (median) dari suatu kumpulan data Program Menentukan Median Listing Program

#include<stdio.h> int bubbles_asc(float a[], int n){

int i, j, temp; for(i=n-2; i>=0; i--){

for(j=0; j<=i; j++){

if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;

main() {

int n, i, j; float med, a[50]; printf("Masukkan banyak bilangan : "); scanf("%d", &n); for(i=0; i<n; ++i){

printf("Bilangan ke %d : ", i+1); scanf("%f", &a[i]);

} bubbles_asc(a, n); if (n%2==0){

med=(a[n/2-1]+a[n/2])/2.0; } else med=a[n/2]; printf("Median adalah %.2f", med);

Tampilan Program

Gambar 5.2 Program menentukan median dari data berjumlah genap

Analisa Program

Program menginputkan data bilangan sama seperti program sebelumnya, dengan perintah bilangan ke-i, yang mana akan dimasukkan ke array a[i] yang dimulai dari 0 sampai n-1. Sebelum eksekusi median dilakukan pengurutan, biasanya menggunakan ascending sort. Dibuat fungis ascending sort (bubbles_asc(a, N). Untuk mencari median dibuat dua pengkondisian untuk data berjumlah ganjil dan genap. Jika n mod 2 = 0 (if n%2==0) maka data berjumlah genap sehingga akan dieksekusi statement dengan rumusan median data genap, dan apabila data tidak memenuhi kondisi diatas berarti data berjumlah ganjil. Nilai median (med) dideklarasikan float karean untuk median akan berupa bilangan real, khususnya data berjumlah genap. Sehingga a[] dideklarasi float jiga karena digunakan dalam operasi matematis median.

Modifikasi pada yang dibuat saat prosedur II.2 Listing Program

#include<stdio.h> int bubbles_asc(float a[], int N){

int i, j, temp; for(i=N-2; i>=0; i--){

for(j=0; j<=i; j++){

if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;

} } } int bubbles_desc(int a[], int N){

int i, j, temp; for(i=N-2; i>=0; i--){

for(j=0; j<=i; j++){

if(a[j]<a[j+1]){ temp=a[j+1]; a[j+1]=a[j]; a[j]=temp;

} } } main()

{ int N, i, j; float med, a[50]; printf("Masukkan banyak bilangan : "); scanf("%d", &N); for(i=0; i<N; ++i){

printf("Bilangan ke %d : ", i+1); scanf("%f", &a[i]);

} bubbles_asc(a, N); printf("Ascending : "); for (i=0; i<N; i++) {

printf(" %.2f", a[i]); } bubbles_desc(a, N); printf("\nDescending : "); for (i=0; i<N; i++){

printf(" %.2f", a[i]); } bubbles_asc(a, N); if (N%2==0){ med=(a[N/2-1]+a[N/2])/2.0; } else med=a[N/2]; printf("\nMedian adalah %.2f", med);

Tampilan Program

Gambar 5.3 Modifikasi program

Analisa Program

Modifikasi ini menggabungkan program 1 dan 2 dimana ditampilkan hasil pengurutannya. Untuk a[] dideklarasi float dengan tampilan urutan %.2f artinya akan ada 2 angka di belakang koma. Operasi median digunakan dengan membaca hasil pengurutan ascending. Walaupundalam kasus ini bisa digunakan dengan urutan descending, namun secara definisi median akan menggunakan urutan ascending.

VI. Tugas Akhir

1. Buatlah program C untuk menghitung deret Fibonacci menggunakan array 1 dimensi.

Program Menghitung Deret Fibonacci Listing Program

#include<stdio.h> main() {

int f[100], N, i, sum; printf("Program Deret Fibonacci\n"); printf("Masukkan banyak bilangan yang ingin ditampilkan : "); scanf("%d", &N); printf("Masukkan bilangan pertama : "); scanf("%d", &f[0]); printf("Masukkan bilangan kedua : "); scanf("%d", &f[1]); printf("Deret bilangan : %d, %d", f[0], f[1]); sum=f[0]+f[1]; for (i=2; i<=N-1; i++){

f[i]=f[i-1] + f[i-2]; printf(", %d", f[i]); sum+=f[i];

} printf("\nJumlah deret bilangan = %d", sum);

Tampilan Program

Gambar 6.1 Program menghitung deret fibonacci

Analisa Program

Program ini menggunakan array f[] yang mana merupakan array dari deret fibonacci. Printf() akan menampilkan perintah masukkan dan hasil. Scanf() akan membaca inputan dan dimasukkan ke alamat memori variabel. Karena bilangan pertama dan kedua dimasukkan secara bebas (acak) maka untuk baris bilangan Program ini menggunakan array f[] yang mana merupakan array dari deret fibonacci. Printf() akan menampilkan perintah masukkan dan hasil. Scanf() akan membaca inputan dan dimasukkan ke alamat memori variabel. Karena bilangan pertama dan kedua dimasukkan secara bebas (acak) maka untuk baris bilangan

2. Buatlah program C untuk menampilkan deret Pascal menggunakan array 1 dimensi.

Program Menampilkan Deret (Segitiga) Pascal Listing Program

#include<stdio.h> main() {

int i, j, n; typedef int Deret[100]; Deret d1, d2; printf("Masukkan banyak baris (tinggi) : "); scanf("%d",&n); int p=n; for(i=0; i<=1; i++)

d1[i]=i; for(i=1; i<=n; i++){ d1[i+1]=0; for(int h=p; h>=1; h--){

printf(" ");