Modul Praktikum Algoritma & Pemrograma - C Programming
Modul Praktikum Algoritma & Pemrograma - C Programming
Modul Praktikum Algoritma & Pemrograma - C Programming
ALGORITMA
DAN
PEMROGRAMAN
OLEH
ISMAIL ADHA KESUMA
([email protected])
Puji syukur kepada Allah SWT yang telah menyebarkan berjuta-juta nikmat
kesehatan, kesempatan, serta ketabahan kepada penulis dalam menyelesaikan modul
praktikum ini, yang merupakan kegiatan dari Kerja Laboratorium untuk menunjang
kemampuan mahasiswa dalam menerapkan teori secara aplikatif.
Dalam menyelesaikan modul ini penulis tidak luput dari kesulitan, namun berkat
kesungguhan, ketekunan, ketabahan, serta dukungan dan bimbingan dari teman-teman
maupun semua pihak baik secara langsung maupun tidak langsung, akhirnya dapat
diselesaikan dengan baik.
Kami menyadari sepenuhnya bahwa modul ini masih belum dapat memenuhi seluruh
harapan, sehingga beberapa perbaikan dan penyempurnaan masih diperlukan. Oleh karena
itu, saran-saran perbaikan dan masukan untuk menyempurnakan modul ini, dalam waktu-
waktu berikutnya, sangat diharapkan.
Akhirnya, kami mengucapkan terima kasih kepada semua pihak yang telah
memberikan sumbangan terhadap penulisan modul ini. Harapan kami agar modul ini dapat
memberikan manfaat bagi perluasan wawasan kita bersama mewujudkan peranan pendidikan
dalam mengembangkan kualitas Sumber Daya Manusia Indonesia menghadapi era
persaingan globalisasi di masa mendatang.
[I]
DAFTAR ISI
[II]
Modul Praktikum Algoritma & Pemrograman
MODUL I
PENGENALAN BAHASA C
1. Baris Komentar
Baris komentar adalah baris-baris yang menjelaskan maksud dari perubah yang digunakan
atau maksud dari program itu sendiri. Hal ini dimaksudkan untuk memudahkan pelacakan
atas perubah yang digunakan apabila program yang digunakan cukup besar atau
memudahkan orang lain memahami program yang kita buat. Dalam program, baris
komentar diletakkan diantara tanda /* dan */ dan baris ini tidak dikerjakan oleh komputer,
hanya dianggap sebagai baris kosong.
2. Struktur Bahasa C
Bentuk program C mirip dengan kebanyakan program bahasa tingkat tinggi lainnya.
Bentuk programnya adalah :
Judul Program
Daftar Header File
Deklarasi
Deskripsi
Judul Program
Judul program sifatnya sebagai dokumentasi saja, tidak signifikan terhadap proses
program. Ditulis dalam bentuk baris komentar.
Contoh :
/* Program Menghitung Rata-Rata */
Deklarasi
Deklarasi adalah bagian untuk mendefinisikan semua nama yang dipakai dalam
program. Nama tersebut dapat berupa nama tetapan (konstanta), nama variabel, nama
tipe, nama prosedur, nama fungsi.
Deskripsi
Bagian inti dari suatu program yang berisi uraian langkah-langkah penyelesaian
masalah. Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Sebuah
program minimal mengandung sebuah fungsi. Setiap fungsi terdiri dari satu atau
beberapa pernyataan, yang secara keseluruhan dimaksudkan untuk melaksanakan
tugas khusus.
[1]
Modul Praktikum Algoritma & Pemrograman
Bagian pernyataan fungsi (disebut tubuh fungsi) diawali dengan tanda { dan diakhiri
dengan tanda }
3. Variabel
Variabel dalam program digunakan untuk menyimpan suatu nilai tertentu dimana nilai
tersebut dapat berubah-ubah. Setiap variabel mempunyai tipe dan hanya data yang bertipe
sama dengan tipe variabel yang dapat disimpan di dalam variabel tersebut. Setiap variabel
mempunyai nama. Pemisahan antar variabel dilakukan dengan memberikan tanda koma.
Contoh :
int jumlah;
float harga_per_unit, total_biaya;
Dari contoh diatas,variabel jumlah hanya boleh menerima data yang bertipe integer
(bulat), tidak boleh menerima data bertipe lainnya. Variabel harga_per_unit dan
total_biaya hanya bisa diisi dengan bilangan float (pecahan).
4. Konstanta
Berbeda dengan variabel yang isinya bisa berubah selama eksekusi program berlangsung,
nilai suatu konstanta tidak bisa berubah.
Contoh :
const int m = 8;
#define pajak 0.05
5. Fungsi main()
Fungsi main() harus ada pada program, karena fungsi inilah yang menjadi titik awal dan
titik akhir eksekusi program. Tanda { di awal fungsi menyatakan awal tubuh fungsi
sekaligus awal eksekusi program, sedangkan tanda } di akhir fungsi merupakan akhir
tubuh fungsi dan sekaligus akhir eksekusi program.
6. Fungsi printf()
Merupakan fungsi yang digunakan untuk menampilkan data ke layar. Dengan
menggunakan fungsi ini, tampilan dapat diatur (diformat) dengan mudah.
Bentuk umum dari fungsi ini :
printf(”string kontrol”, argumen1, argumen2, ....);
String kontrol dapat berupa keterangan beserta penentu format (seperti %d, %f). Argumen
adalah data yang akan ditampilkan, dapat berupa variabel, konstanta, maupun ungkapan.
Contoh :
/* Program Satu */
#include <stdio.h>
main()
{
Printf(”Belajar Pemrograman Komputer”);
}
7. Fungsi scanf()
Merupakan fungsi yang digunakan untuk menampilkan data yang dimasukkan dari
keyboard.
[2]
Modul Praktikum Algoritma & Pemrograman
Contoh 1
Menghitung luas dan keliling lingkaran dengan besar jari-jari lingkaran dimasukkan melalui
keyboard.
/* Menghitung Luas dan Keliling Lingkaran */
#include<stdio.h>
#define phi 3.14
main()
{
float jari,luas,keliling;
printf(”Masukan jari-jari lingkaran = ”);
scanf(”%f”, &jari);
luas=phi*jari*jari;
keliling=2*phi*jari;
printf(”Luas lingkaran = %f \n”,luas);
printf(”Keliling lingkaran = %f \n”,keliling);
}
Contoh 2
Menukarkan dua buah nilai dari dua buah variabel. Misalnya, sebelum pertukaran nilai a=5,
nilai b=3, maka setelah pertukaran nilai a=3, nilai b=5.
/* Menukarkan nilai a dengan b */
#include<stdio.h>
main()
{
int a,b,c;
printf("Program Menukar 2 Buah Nilai \n\n");
printf("Sebelum ditukar \n");
printf("--------------- \n");
printf("Bilangan pertama = ");
scanf("%i",&a);
printf("Bilangan kedua = ");
scanf("%i",&b);
c=a;
a=b;
b=c;
printf("Setelah ditukar \n");
printf("--------------- \n");
printf("Bilangan pertama = %i\n",a);
printf("Bilangan kedua = %i\n",b);
}
Contoh 3
Mengkonversikan total detik menjadi jam menit detik.
Petunjuk : 1 menit = 60 detik
1 jam = 3600 detik
[3]
Modul Praktikum Algoritma & Pemrograman
LATIHAN
2. Tulislah algoritma untuk menghitung luas bangun geometri yang lain (lingkaran,
bujursangkar, segitiga, trapesium, dan sebagainya). Data masukan dibaca dari piranti
masukan dan luas bangun ditampilkan sebagai keluaran.
3. Misalkan, seekor semut menempuh perjalanan sejauh x cm. Tulislah algoritma untuk
mengkonversi jarak x ke dalam kilometer-meter-sentimeter. Ingat bahwa 1 m = 100
cm dan 1 km = 1000 m = 100.000 cm. Misal x = 261341 cm, ini berarti semut
menempuh jarak sejauh 2 km + 63 m + 141 cm.
[4]
Modul Praktikum Algoritma & Pemrograman
MODUL II
PEMILIHAN KONDISI
1. Pilihan Tunggal
Bentuk paling sederhana pilihan tunggal adalah jika hanya ada satu pilihan kondisi yang
disediakan.
Bentuk umum:
if (kondisi)
{
true statement;
}
Contoh Permasalahan: Menentukan huruf vokal dari suatu huruf yang dimasukkan dari
keyboard.
/* Program menentukan huruf vokal */
#include<stdio.h>
main()
{
char huruf;
printf("Program Menentukan Huruf Vokal \n");
printf("------------------------------ \n \n");
printf("Masukkan huruf : ");
scanf("%c",&huruf);
if
(huruf=='a'||huruf=='i'||huruf=='u'||huruf=='e'||huruf=='o
')
printf("Huruf %c adalah huruf vokal\n",huruf);
}
2. Pilihan Ganda
Digunakan untuk menentukan tindakan yang akan digunakan bila kondisi bernilai benar
dan salah. Bentuk umum:
if kondisi
{
true statement;
}
else
{
false statement;
}
Contoh Permasalahan: Menentukan bilangan terbesar dari dua buah bilangan.
[5]
Modul Praktikum Algoritma & Pemrograman
3. Pilihan Majemuk
Untuk menentukan tindakan yang akan digunakan disediakan lebih dari 2 alternatif.
Merupakan bentuk statement if dengan statement if lain di dalam if sebelumnya.
Bentuk umum:
if kondisiA
{
if kondisiB
{
true statementB
}
else
{
false statementB
}
}
else
{
false statementA
}
Contoh Permasalahan:
Mengelompokan nilai dengan ketentuan :
Jika nilai angka >= 90, maka nilai huruf = A
Jika nilai angka >= 80, maka nilai huruf = B
Jika nilai angka >= 70, maka nilai huruf = C
Jika nilai angka >= 60, maka nilai huruf = D
Jika nilai angka < 60, maka nilai huruf = E
[6]
Modul Praktikum Algoritma & Pemrograman
Contoh permasalahan :
Pemilihan kode jurusan dengan struktur case
/* Program pemilihan kode jurusan */
#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
char nama[15],ket[30],kode;
printf("Masukkan nama mahasiswa: ");
scanf("%s",&nama);
printf("Pilih kode jurusan [A/B/C/D] : ");
kode=getche();
switch (kode)
[7]
Modul Praktikum Algoritma & Pemrograman
{
case 'A' : {
strcpy(ket,"Jurusan Teknik Informatika");
break;
}
case 'B' : {
strcpy(ket,"Jurusan Manajemen Informatika");
break;
}
case 'C' : {
strcpy(ket,"Jurusan Sistem Informasi");
break;
}
case 'D' : {
strcpy(ket,"Jurusan Teknik Komputer");
break;
}
}
printf("\n \n");
printf("Nama mahasiswa : %s \n",nama);
printf("Kode jurusan : %c \n",kode);
printf("Nama jurusan : %s \n",ket);
getch();
}
LATIHAN
Jumlah jam kerja normal selama 1 minggu adalah 48 jam. Kelebihan jam kerja
dianggap lembur dengan upah lembur adalah Rp.4000,- per jam untuk semua
golongan karyawan. Buat program menghitung gaji karyawan mingguan. Data yang
dimasukan dari keyboard adalah nama karyawan, golongan, jumlah jam kerja. Data
yang dicetak adalah nama karyawan dan gajinya.
Program dibuat dengan menggunakan struktur IF dan CASE.
[8]
Modul Praktikum Algoritma & Pemrograman
MODUL III
PENGULANGAN (LOOPING)
1. Struktur For
Struktur ini digunakan bila kita mengetahui secara pasti banyaknya pengulangan yang
akan dilakukan. Pernyataan FOR mempunyai 3 parameter yaitu :
a. Nilai awal (initial value)
b. Test kondisi yang menentukan akhir loop (condition expression)
c. penentu perubahan nilai (incremental expression)
Bentuk For:
for (initial value; condition expression; incremental
expression)
Keterangan:
Initial value
memberikan nilai awal pada variabel kontrol
Condition expression
ekspresi yang menyatakan berhentinya pengulangan. Jika tes kondisi bernilai salah maka
loop akan berhenti.
Incremental expression
berfungsi menaikkan/menurunkan nilai dari variabel kontrol. Dapat berupa nilai positif
(penaikan) / nilai negatif (penurunan)
Penaikan : setiap loop operator ++ akan menambah nilai 1 ke variabel kontrol
Penurunan : setiap operator -- akan menurunkan nilai 1 pada variabel kontrol
Contoh 1:
/* Program Mencetak Angka Urut (Penaikan) */
#include<stdio.h>
main()
{
int i;
for (i=1;i<=10;i++)
printf("%d.Hallo,Selamat belajar,Aku yakin Aku pasti
bisa... \n",i);
}
[9]
Modul Praktikum Algoritma & Pemrograman
Contoh 2:
/* Program Mencetak Angka Urut (Penurunan) */
#include<stdio.h>
main()
{
int i;
for (i=10;i>=1;i--)
printf("%d.Hallo,Selamat belajar,Aku yakin Aku pasti
bisa...\n",i);
}
Contoh 3:
/* Program Mencari Data Terbesar Terkecil */
#include<stdio.h>
main()
{
int n,i,max,min,bil;
printf("Program mencari data terbesar dan terkecil
\n\n");
printf("Masukkan banyaknya data = ");
scanf("%d",&n);
printf("Masukkan bilangan ke-1 : ");
scanf("%d",&bil);
max=bil;
min=bil;
for(i=2;i<=n;i++)
{
printf("Masukkan bilangan ke-%d : ",i);
scanf("%d",&bil);
if(bil>max)
max=bil;
if(bil<min)
min=bil;
}
printf("\n");
printf("Data terbesar %d \n",max);
printf("Data terkecil %d \n",min);
}
Contoh program:
Membuat tampilan seperti berikut :
Masukkan tinggi segitiga : 5
*
**
***
****
*****
[10]
Modul Praktikum Algoritma & Pemrograman
3. Struktur While
Struktur ini digunakan bila kita belum mengetahui secara pasti berapakali banyaknya
pengulangan yang akan dilakukan. Berakhirnya proses pengulangan ditentukan oleh suatu
kondisi. Selama kondisi terpenuhi, maka pengulangan terus dilakukan, dan sebaliknya,
bila kondisinya tidak terpenuhi maka pengulangan dihentikan.
Bentuk while:
while (condition expression)
{
statement-statement;
}
Contoh masalah:
/* Program Menghitung Rata-rata Bilangan */
#include<stdio.h>
main()
{
int n=0;
float jumlah=0,bil,rata;
char lagi='Y';
while ((lagi=='Y')||(lagi=='y'))
{
printf("Masukkan bilangan : ");
scanf("%f",&bil);
jumlah=jumlah+bil;
n=n+1;
printf("Apakah Anda akan memasukkan data lagi
[Y/T]: ");
[11]
Modul Praktikum Algoritma & Pemrograman
scanf("%s",&lagi);
printf("\n");
}
rata=jumlah/n;
printf("\n");
printf("Banyaknya bilangan : %i \n",n);
printf("Rata-rata bilangan : %.2f \n",rata);
}
4. Struktur do...While
DO-WHILE pada dasarnya sama dengan instruksi WHILE. Perbedaannya hanya terletak
pada penempatan ekspresi kondisi. Untuk DO-WHILE, kondisi diletakkan pada bagian
bawah. Jadi statement-statement yang berada dalam loop akan dikerjakan dahulu baru
dilakukan tes terhadap kondisi.
Bentuk do....while:
do
{
statement-statement;
}
while (condition expression);
Contoh masalah:
Contoh 1:
/* Program Menghitung Rata-rata Bilangan */
#include<stdio.h>
main()
{
int n=0;
float jumlah=0,bil,rata;
char lagi;
do
{
printf("Masukkan bilangan : ");
scanf("%f",&bil);
jumlah=jumlah+bil;
n=n+1;
printf("Apakah Anda akan memasukkan data lagi
[Y/T]: ");
scanf("%s",&lagi);
printf("\n");
} while ((lagi=='Y')||(lagi=='y'));
rata=jumlah/n;
printf("\n");
printf("Banyaknya bilangan : %i \n",n);
printf("Rata-rata bilangan : %.2f \n",rata);
}
[12]
Modul Praktikum Algoritma & Pemrograman
Contoh 2:
/* Program Membuat Menu Pengulangan */
#include<stdio.h>
main() {
int pilih;
do
{
printf("DAFTAR MENU MAKANAN \n");
printf("------------------------ \n");
printf("1. Pecel Lele \n");
printf("2. Tempe Bakar\n");
printf("3. Ayam Bakar\n");
printf("4. Bakso Sapi\n");
printf("\n");
printf("Masukkan pilihan Anda ! (0=selesai) ");
scanf("%i",&pilih);
switch(pilih) {
case 1:
printf("Harga Pecel Lele Rp.4000,-\n");
break;
case 2:
printf("Harga Tempe Bakar Rp.3000,-\n");
break;
case 3:
printf("Harga Ayam Bakar Rp.5000,-\n");
break;
case 4:
printf("Harga Bakso Sapi Rp.5000,-\n");
break;
case 0:
printf("Selesai\n");
break;
}
} while (pilih !=0);
}
LATIHAN
1. Buatlah algoritma untuk menghitung jumlah N buah bilangan ganjil pertama (yaitu, 1
+ 3 + 5 + ...). Catatan: N adalah bilangan bulat tidak negatif.
[13]
Modul Praktikum Algoritma & Pemrograman
MODUL IV
PROSEDUR DAN FUNGSI
Bentuk:
tipe_data nama_fungsi (daftar parameter)
daftar parameter berisi variabel dan tipe variabel yang berfungsi sebagai masukan
untuk fungsi tersebut. Masukan tersebut akan diproses untuk menghasilkan nilai
tertentu sesuai dengan tipe data fungsi.
Contoh:
int tukar (int x, int y)
Variabel Global
Variabel yang dideklarasikan di luar blok fungsi dan bersifat dikenali oleh semua
bagian program.
[14]
Modul Praktikum Algoritma & Pemrograman
Data-data yang tersimpan dalam sebuah variabel dapat diakses di setiap blok
fungsi
Disarankan untuk tidak digunakan, karena variabel ini dapat men-sharing-kan data
dan dapat diubah secara tidak sengaja oleh suatu blok fungsi, sehingga nilainya
bisa berubah.
Variabel Lokal
Variabel yang dideklarasikan dalam suatu blok fungsi tertentu dan hanya dikenal
oleh blok fungsi tersebut.
Variabel lokal akan dihapus dari memori jika proses sudah meninggalkan blok
letak variabel lokalnya.
Variabel Statik
Variabel statik sering dipakai sebagai variabel lokal.
Beda variabel lokal dan variabel statik adalah variabel lokal akan dihapus dari
memori jika proses sudah meninggalkan blok letak variabel lokalnya, sedangkan
variabel statik akan dihapus dari memori jika program dimatikan.
Contoh:
int i,j; /* variabel global */
main ()
{
int k,l; /* variabel lokal */
}
fungsi()
{
static int m,n; /* variabel statik */
}
Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi
fungsi.
Parameter aktual (nyata) adalah parameter yang dapat berupa variabel atau konstanta
maupun ungkapan yang dipakai dalam pemanggilan fungsi.
Contoh :
A,B parameter aktual
x, y parameter formal
Ax
By
[15]
Modul Praktikum Algoritma & Pemrograman
Pada dasarnya semua fungsi mengembalikan nilai, tetapi untuk fungsi yang tidak
mengembalikan nilai disebut fungsi bertipe void, disebut juga Prosedur.
Untuk mengembalikan nilai sebuah fungsi, digunakan kata return yang diikuti dengan
nilai yang akan dikembalikan.
Dalam sebuah fungsi return bisa mengembalikan beberapa nilai, tetapi setiap kata
return hanya bisa mengembalikan sebuah nilai saja.
E. Contoh Permasalahan
[16]
Modul Praktikum Algoritma & Pemrograman
/* definisi fungsi */
int jumlah(int x,int y) /*variabel x,y merupakan paramater
formal by value, sehingga nilai x = a, nilai y=b*/
{
int hasil; /* variabel lokal */
[17]
Modul Praktikum Algoritma & Pemrograman
MODUL V
LARIK (ARRAY)
Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang
sama serta setiap elemen diakses dengan membedakan indeks arraynya.
Bentuk :
tipe nama_var[ukuran];
Keterangan :
Tipe : menyatakan jenis elemen array misal int, char, dll
Ukuran : menyatakan jumlah maksimal elemen array
[18]
Modul Praktikum Algoritma & Pemrograman
[19]
Modul Praktikum Algoritma & Pemrograman
MODUL VI
PENGURUTAN (SORTING)
Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak
atau tidak teratur menjadi urut dan teratur menurut suatu aturan tertentu.
1. SELECTION SORT
Proses pengurutan menggunakan selection sort secara ascending :
- Mencari data terkecil dari data pertama sampai data terakhir, kemudian ditukarkan
posisinya dengan data pertama.
- Mencari data terkecil dari data kedua sampai data terakhir, kemudian ditukarkan
posisinya dengan data kedua.
- Mencari data terkecil dari data ketiga sampai data terakhir, kemudian ditukarkan
posisinya dengan data ketiga.
- Dan seterusnya sampai semua data terurut naik. Bila terdapat n buah data yang akan
diurutkan, maka membutuhkan (n – 1) proses / langkah pengurutan, dimana data
terakhir yaitu data ke-n tidak perlu diurutkan karena hanya tinggal satu-satunya.
Contoh :
Terdapat 5 buah data yang nilainya belum terurut :
40 50 10 41 90
Data akan diurutkan secara ascending menggunakan selection sort :
Karena ada 5 data maka dibutuhkan (5-1) = 4 proses pengurutan.
Proses ke-1
indexmin=1
Data ke-2 : data[indexmin] < data[2] data[1] < data[2] 40 < 50
Data ke-3 : data[indexmin] < data[3] data[1] < data[3] 40 > 10 indexmin=3
Data ke-4 : data[indexmin] < data[4] data[3] < data[4] 10 < 41
Data ke-5 : data[indexmin] < data[5] data[3] < data[5] 10 < 90
[20]
Modul Praktikum Algoritma & Pemrograman
Karena data[1] <> data[indexmin], yaitu data[1]<>data[3] maka tukar nilai data ke -1 dan
data ke-indexmin (data ke-3). Akhir dari proses ke 1 adalah :
10 50 40 41 90
Selanjutnya kondisi data pada akhir proses pertama ini digunakan sebagai masukan pada
proses kedua.
Proses ke-2
indexmin=2
Data ke-3 : data[indexmin] < data[3] data[2] < data[3] 50 > 40 indexmin = 3
Data ke-4 : data[indexmin] < data[4] data[3] < data[4] 40 < 41
Data ke-5 : data[indexmin] < data[5] data[3] < data[5] 40 < 90
Karena data[2] <> data[indexmin], yaitu data[2]<>data[3] maka tukar nilai data ke-2 dan
data ke-indexmin (data ke-3). Akhir dari proses ke 2 adalah :
10 40 50 41 90
Kondisi data pada akhir proses kedua digunakan sebagai masukan pada proses ketiga.
Proses ke-3
indexmin=3
Data ke-4 : data[indexmin] < data[4] data[3] < data[4] 50 > 41 indexmin = 4
Data ke-5 : data[indexmin] < data[5] data[4] < data[5] 41 < 90
Karena data[3] <> data[indexmin], yaitu data[3]<>data[4] maka tukar nilai data ke-3 dan
data ke-indexmin (data ke-4). Akhir dari proses ke 3 adalah :
10 40 41 50 90
Kondisi data pada akhir proses ketiga digunakan sebagai masukan pada proses keempat.
Proses ke-4
indexmin=4
Data ke-5 : data[indexmin] < data[5] data[4] < data[5] 50 < 90
[21]
Modul Praktikum Algoritma & Pemrograman
Contoh:
/* Program selection sort ascending */
#include<stdio.h>
main()
{
int i,n,temp,indexmin,j;
int data[10];
/* ---memasukan data --- */
printf("Selection sort ascending \n");
printf("Banyak data : ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Data ke-%d : ",i);
scanf("%d", &data[i]);
}
/* --- proses pengulangan pembandingan data --- */
for(i=1;i<=(n-1);i++)
{
indexmin=i;
for(j=i+1;j<=n;j++)
{
if(data[indexmin] > data[j])
indexmin=j;
}
/* --- proses tukar data (swap)--- */
if (data[i] != data[indexmin])
{
temp = data[i];
data[i]=data[indexmin];
data[indexmin]=temp;
}
}
/* --- proses tampil data setelah urut --- */
printf("Setelah pengurutan \n");
for(i=1; i<=n;i++)
printf("%d ",data[i]);
}
Untuk selection sort data descending, program hanya diganti pada bagian
if (data[indexmin] > data[j]) menjadi if (data[indexmin]
< data[j])
[22]
Modul Praktikum Algoritma & Pemrograman
2. Bubble Sort
Proses yang terjadi pada pengurutan bubble sort adalah selalu membandingkan 2 data
yang berdekatan. Secara ascending bila data yang berada di sebelah kanannya bernilai
lebih kecil maka dipertukarkan sampai semua data terurut sehingga memunculkan data
terbesar di posisi paling akhir.
Contoh :
Terdapat 5 buah data yang nilainya belum terurut :
40 50 10 41 90
Data akan diurutkan secara ascending menggunakan bubble sort :
Proses 1
Data 1-2 : data[1] > data[2] 40 < 50
40 50 10 41 90
Data 2-3 : data[2] > data[3] 50 > 10 ditukar
40 10 50 41 90
Data 3-4 : data[3] > data[4] 50 > 41 ditukar
40 10 41 50 90
Data 4-5 : data[4] > data[5] 50 < 90
40 10 41 50 90
Proses 2
Data 1-2 : data[1] > data[2] 40 > 10 ditukar
10 40 41 50 90
Data 2-3 : data[2] > data[3] 40 < 41
10 40 41 50 90
Data 3-4 : data[3] > data[4] 41 < 50
10 40 41 50 90
Proses 3
Data 1-2 : data[1] > data[2] 10 < 40
10 40 41 50 90
Data 2-3 : data[2] > data[3] 40 < 41
10 40 41 50 90
Data 3-4 : data[3] > data[4] 41 < 50
10 40 41 50 90
Proses 4
Data 1-2 : data[1] > data[2] 10 < 40
10 40 41 50 90
Data 2-3 : data[2] > data[3] 40 < 41
10 40 41 50 90
[23]
Modul Praktikum Algoritma & Pemrograman
Contoh:
/* Program bubble sort ascending */
#include<stdio.h>
main()
{
int i,n,temp,j;
int data[10];
/* ---memasukan data --- */
printf("Bubble sort ascending \n");
printf("Banyak data : ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Data ke-%d : ",i);
scanf("%d", &data[i]);
}
/* --- proses pengulangan pembandingan & tukar data --- */
for(i=1;i<=(n-1);i++)
{
for(j=1;j<=(n-i);j++)
{
/* --- membandingkan data ---*/
if (data[j] > data[j+1])
{
/* --- tukar data (swap) ---*/
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
/* --- proses tampil data setelah urut --- */
printf("Setelah pengurutan \n");
for(i=1; i<=n;i++)
printf("%d ",data[i]);
}
[24]
Modul Praktikum Algoritma & Pemrograman
DAFTAR PUSTAKA
Munir, Rinaldi. (2005). Algoritma dan Pemrograman Dalam Bahasa Pascal dan C, Edisi III.
Bandung: Informatika Bandung. ISBN: 979-95779-3-4.
[25]