Anda di halaman 1dari 30

LEMBAR PENGESAHAN

No Praktikum : 01/PRAA/3.2/IT/2017

Judul Praktikum : Algoritma Brute Force

Tanggal Praktikum : 08 Maret 2017

Tanggal Penyerahan Laporan : 15 Maret 2017

Nama Praktikan : Diva Safitri

NIM : 1457301039

Kelas : 3.2

Jurusan : Teknologi Informasi dan Komputer

Prodi : Teknik Informatika

Nilai :

Keterangan :

Buket Rata, 15 Maret 2017


Dosen Pembimbing

Muhammad Arhami, Ssi, M.Kom


NIP. 19741029 2000 3 001
DAFTAR ISI

LEMBAR PENGESAHAN..........................................................................................

DAFTAR ISI................................................................................................................

DAFTAR GAMBAR..................................................................................................

1.1 Pendahuluan..........................................................................................................

1.2 Tinjauan Pustaka...................................................................................................

1.2.1 Landasan Teori Algotirma Brute Force............................................................

1.3 Langkah Kerja......................................................................................................

1.3.1 Perangkat yang diperlukan...............................................................................

1.3.2 Langkah percobaan..........................................................................................

1.4 Analisa dan Pembahasan...................................................................................

1.4.1 Program..........................................................................................................

1.5 Kesimpulan dan Saran.......................................................................................

Daftar Pustaka...........................................................................................................
DAFTAR GAMBAR

Gambar 1.1 Icon Dev C++.....................................................................................7


Gambar 1.2 Tampilan awal Dev C++.....................................................................7
Gambar 1.3 Tampilan Source File..........................................................................8
Gambar 1.4 Input 1.................................................................................................9
Gambar 1.5 Output 1..............................................................................................9
Gambar 1.6 Input 2...............................................................................................10
Gambar 1.7 Output 2............................................................................................10
Gambar 1.8 Input 3...............................................................................................11
Gambar 1.9 Output 3............................................................................................11
Gambar 1.10 Input 4.............................................................................................12
Gambar 1.11 Output 4..........................................................................................12
Gambar 1.12 Input 5.............................................................................................13
Gambar 1.13 Output 5..........................................................................................13
Gambar 1.14 Input 6.............................................................................................14
Gambar 1.15 Input 6.............................................................................................15
PRAKTIKUM 1
ALGORITMA BRUTE FORCE

1.1 Pendahuluan
1.1.1 Tujuan Praktikum
Mengenal Algoritma Brute Force
Mengetahui cara kerja Algoritma Brute Force dalam program

1.1.2 Latar Belakang


Algoritma merupakan langkah atau cara untuk menyelesaikan suatu
masalah. Program komputer pada umumnya semua sudah menggunakan
algoritma-algoritma yang berbeda. Dengan mengimplementasikan
algoritma ke dalam program dan mengerti tentang algoritma-algoritma
yang digunakan akan membantu kita dengan mudah dan mempersingkat
waktu untuk memecahkan suatu masalah. Analisis algoritma merupakan
salah satu dasar ilmu komputer yang sangat penting kepada siapapun yang
terjun ke bidang sistem informasi atau pengembangan perangkat lunak.
Setiap masalah akan digunakan algoritma yang berbeda sesuai dengan
kondisi yang dibutuhkan untuk menyelesaikan masalah tersebut. Masibg-
masing algoritma memiliki keunggulan dan kekurangan dalam pencarian,
kecocokan, ketepatannya masing-masing.
Disini kita telah mempelajari tentang algoritma dan penerapannya
dalam pemrograman komputer. Kesulitan yang dihadapi dalam
permasalahan ini adalah susahnya kita mengerti algoritma dan
penyelesaian dari permasalahan yang dihadapi, serta sulitnya
membayangkan struktur data yang akan digunakan. Dalam memahami
penyelesaian suatu permasalahan, kita akan lebih mudah untuk mengingat
dan memahaminya apabila permasalahan itu dapat ditampilkan dalam
bentuk visual dan gambar, sehingga penyajian nya menjadi lebih menarik.
1.2 Tinjauan Pustaka

1.2.1 Landasan Teori Algotirma Brute Force


Brute Force (Rinaldi Munir, 2004, p. 2) adalah sebuah pendekatan
langsung (straight forward) untuk memecahkan suatu masalah, yang
biasanya didasarkan pada pernyataan masalah (problem statement) dan
definisi konsep yang dilibatkan. Pada dasarnya algoritma Brute Force
adalah alur penyelesaian suatu permasalahan dengan cara berpikir yang
sederhana dan tidak membutuhkan suatu permikiran yang lama.
Sebenarnya, algoritma Brute Force merupakan algoritma yang
muncul karena pada dasarnya alur pikir manusia adalah Brute Force
(langsung/to the point). Beberapa karakteristik dari algoritma Brute Force
dapat dijelaskan sebagai berikut.
a. Membutuhkan jumlah langkah yang banyak dalam menyelesaikan
suatu permasalahan sehingga jika diterapkan menjadi suatu algoritma
program aplikasi akan membutuhkan banyak memori.
b. Digunakan sebagai dasar dalam menemukan suatu solusi yang lebih
efektif.
c. Banyak dipilih dalam penyelesaian sebuah permasalahan yang sederhana
karena kemudahan cara berpikirnya.
d. Pada banyak kasus, algoritma ini banyak dipilih karena hampir dapat
dipastikan dapat menyelesaikan banyak persoalan yang ada.
e. Digunakan sebagai dasar bagi perbandingan keefektifan sebuah
algoritma.

Kelebihan dari algoritma Brute Force adalah sebagai berikut.


Metode Brute Force dapat digunakan untuk memecahkan hampir
sebagian besar masalah (wide applicability).
Metode Brute Force sederhana dan mudah dimengerti.
Metode Brute Force menghasilkan algoritma yang layak untuk beberapa
masalah penting, seperti pencarian, pengurutan, pencocokan string,
perkalian matriks.
Metode Brute Force menghasilkan algoritma baku (standard) untuk
tugas-tugas komputasi seperti penjumlahan/perkalian n buah bilangan,
menentukan elemen minimum atau maksimum di dalam tabel (list).

Selain itu, terdapat beberapa kelemahan dari algoritma Brute Force:


Metode Brute Force jarang menghasilkan algoritma yang efektif.
Beberapa algoritma Brute Force lambat sehingga tidak dapat diterima.
Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya.

Berikut ini adalah contoh-contoh penerapan algoritma Brute Force pada


perhitungan matematika biasa.

1) Menghitung an (a > 0, n adalah bilangan bulat tak-negatif)

n
a = a x a x x a (n kali) , jika n > 0

=1

, jika n = 0

Algoritma: kalikan 1 dengan a sebanyak n kali.

2) Menghitung n! (n bilangan bulat tak-negatif)

n! = 1 2 3 n , jika n > 0

=1 , jika n = 0

Algoritma: kalikan n buah bilangan, yaitu 1, 2, 3, , n, sekaligus.

3) Mengalikan dua buah matrik yang berukuran n n.


Misalkan C = A B dan elemen-elemen matrik dinyatakan sebagai cij, aij,
dan bij.

Algoritma: hitung setiap elemen hasil perkalian satu per satu, dengan cara
mengalikan dua vektor baris dan kolom yang panjangnya n.
4) Menemukan semua faktor dari bilangan bulat n selain dari 1 dan n
itu sendiri.
Definisi: Bilangan bulat a adalah faktor dari bilangan bulat b jika a habis
membagi b.

5) Mencari elemen terbesar (atau terkecil)

Diberikan sebuah himpunan yang beranggotakan n buah bilangan bulat.


Bilangan-bilangan bulat tersebut dinyatakan sebagai a1, a2, , an. Carilah
elemen terbesar di dalam himpunan tersebut.

6) Sequential Search

Sequential Search adalah proses membandingkan setiap elemen larik


satu per satu secara beruntun, mulai dari elemen pertama sampai elemen
yang dicari ditemukan atau seluruh elemen sudah diperiksa. Algoritma
pencarian secara linear digunakan untuk mencari sebuah nilai pada tabel
sembarang. Ada dua macam cara pencarian pada tabel. Algoritma ini
mempunyai dua jenis metode yaitu dengan boolean dan tanpa boolean.
Algoritma pencairan secara linear melakukan pengulangan sebanyak 1 kali
untuk kasus terbaik (value sama dengan elemen pertama dalam tabel) dan
Nmax kali untuk kasus terburuk. Sehingga algoritma ini mempunyai
kompleksitas algoritma O(n).
Proses pencarian data dengan metode ini cukup sederhana dan mudah
dipahami. Dalam pencarian ini proses dilakukan dengan cara mencocokan
data yang akan dicari dengan semua data yang ada dalam kelompok data.
Proses pencarian data dilakukan dengan cara mencocokan data yang akan
dicari dengan semua data yang ada dalam kelompok data. Proses
pencocokan data dilakukan secara berurut satu demi satu dimulai dari data
ke-1 hingga data pada ururtan terakhir. Jika data yang dicari mempunyai
harga yang sama dengan data yang ada dalam kelompok data, berarti data
telah ditemukan. Tetapi jika data yang dicari tidak ada yang cocok dengan
data-data dalam sekelompok data, berarti data tersebut tidak ada dalam
sekelompok data
7) Bubble Sort

Bubble Sort adalah salah satu algoritma untuk sorting data, atau kata
lainnya mengurutkan data dari yang terbesar ke yang terkecil atau sebaliknya
(Ascending atau Descending).
Bubble sort (metode gelembung) adalah metode/algoritma pengurutan
dengan dengan cara melakukan penukaran data dengan tepat disebelahnya
secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak
ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut.
Disebut pengurutan gelembung karena masing-masing kunci akan dengan
lambat menggelembung ke posisinya yang tepat.
Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh
gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung
sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung
ke atas permukaan. Prinsip di atas dipakai pada pengurutan gelembung.
Algoritma bubble sort adalah salah satu algoritma pengurutan yang paling
simple, baik dalam hal pengertian maupun penerapannya. Ide dari algoritma ini
adalah mengulang proses pembandingan antara tiap-tiap elemen
array dan menukarnya apabila urutannya salah. Pembandingan elemen-elemen ini
akan terus diulang hingga tidak perlu dilakukan penukaran lagi. Algoritma
ini termasuk dalam golongan algoritma comparison sort, karena menggunakan
perbandingan dalam operasi antar elemennya. Berikut ini adalah gambaran dari
algoritma bubble sort. Misalkan kita mempunyai sebuah array dengan. Elemen-
elemen 4 2 5 3 9. Proses yang akan terjadi apabila digunakan algoritma
bubblesort adalah sebagai berikut.

Pass pertama
(4 2 5 3 9) menjadi (2 4 5 3 9)
(2 4 5 3 9) menjadi (2 4 5 3 9)
(2 4 5 3 9) menjadi (2 4 3 5 9)
(2 4 3 5 9) menjadi (2 4 3 5 9)
Pass kedua
(2 4 3 5 9) menjadi (2 4 3 5 9)
(2 4 3 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
Pass ketiga
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
Dapat dilihat pada proses di atas, sebenarnya pada pass kedua, langkah
kedua, array telah terurut. Namun algoritma tetap dilanjutkan hingga pass kedua
berakhir. Pass ketiga dilakukan karena definisi terurut dalam algoritma bubblesort
adalah tidak ada satupun penukaran pada suatu pass, sehingga pass ketiga
dibutuhkan untuk memverifikasi keurutan array tersebut.

Algoritma Bubble Sort


1. Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak
sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa
maksudnya tidak sesuai? Jika kita menginginkan algoritme menghasilkan data
dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-
i+1, dan sebaliknya untuk urutan descending (A-Z).
2. Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan
pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5
; n-1 dgn n.
3. Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1)
dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai
dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.
4. Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.
1.3 Langkah Kerja
1.3.1 Perangkat yang diperlukan
PC yang dilengkapi dengan perangkat multimedia (sound card,
Microphone, Speaker active, atau headset)
Sistem Operasi Windows dan Perangkat Lunak Dev C++

1.3.2 Langkah percobaan


Untuk memulai menggunakan program Dev C++. Setelah itu, buka
program Dev C++
Setelah itu jalankan aplikasi dengan cara melakukan double-clicking pada
shortcut icon Dev C++

Gambar 1. 1 Icon Dev C++

Selanjutnya akan mendapatkan tampilan awal aplikasi seperti pada


gambar berikut ini.

Gambar 1. 2 Tampilan awal Dev C++

Lalu mulai lah membuat sebuah project baru pada menu File yang
ada pada toolbar program, dan pilih New lalu pilih pada pilihan
Source File. Lalu akan tampil gambar seperti dibawah ini:

Gambar 1. 3 Tampilan Source File


Lalu mulailah mengetikkan source program dibawah ini yang akan
dijalankan dengan aplikasi Dev C++ hingga mengeluarkan output yang
sesuai dengan benar.

1) Program menghitung pangkat


Input

Gambar 1. 4 Input 1
Output

Gambar 1. 5 Output 1

2) Program Eulied (m,n)


Input

Gambar 1. 6 Input 2
Output

Gambar 1. 7 Output 2

3) Program Sequential Search


Input

Gambar 1. 8 Input 3
Output

4) Program Bubble Sort


Input
Gambar 1. 9 Output 3

Gambar 1. 10 Input 4
Output

5) Program Uji Keprimaan


Gambar 1. 11 Output 4
Input

Gambar 1. 12 Input 5
Output

Gambar 1. 13 Output 5
6) Program Menghitung Nilai Polinom secara Brute Force
Input
Gambar 1. 14 input 6

Output
Gambar 1. 15 Output 6

1.4 Analisa dan Pembahasan


1.4.1 Program 1
a) Program Mencari Pangkat
#include merupakan salah satu jenis pengarah preprosessor directive.
Sedangkan <stdio.h> merupakan singkatan dari standar input output
header yang digunakan sebagai standar input output operasi yang
digunakan dalam bahasa C.
main () merupakan tanda eksekusi akan dimulai.
int a,n, k,hasil; int merupakan type dalta yang digunakan,

sedangkan a, n, k, hasil merupakan variabel, jadi variabel tersebut


dideklarasikan ke dalam type data int.
printf ("Program perpangkatan bilangan\n"); printf berfungsi
untuk menampilkan data atau tulisan. Data yang akan ditampilkan adalah
data yang ditulis setelah tanda buka dan diakhiri tutup kurung. Pada
program ini akan ditampilkan data dengan tulisan Program perpangkatan
bilangan pada output.
printf ("Masukkan bilangan = "); printf berfungsi untuk
menampilkan data atau tulisan. Data yang akan ditampilkan adalah data
yang ditulis setelah tanda buka dan diakhiri tutup kurung. Pada baris
program ini akan ditampilkan data dengan tulisan Masukkan bilangan=
pada output.
scanf ("%i",&a);scanf berfungsi untuk mengambil nilai pada variabel a
yang memiliki type data integer.
printf ("Masukkan pangkat = "); printf berfungsi untuk
menampilkan data atau tulisan. Data yang akan ditampilkan adalah data
yang ditulis setelah tanda buka dan diakhiri tutup kurung. Pada baris
program ini akan ditampilkan data dengan tulisan Masukkan pangkat=
pada output.
scanf ("%i",&n); scanf berfungsi untuk mengambil nilai pada variabel n
yang memiliki type data integer
hasil=1; hasil merupakan nama variabel. Pada baris program ini,

variabel hasil bernilai 1.

for (k=1;k<=n;k++); for merupakan perulangan, dimana variabel k = 1,


maka jika nilai variabel k lebih besar sama dengan nilai n, nilai pada
variabel k akan melakukan iterasi dan k akan +1.
{hasil=hasil*a} ; variabel hasil = variabel hasil dikalikan dengan nilai

yang terdapat dalam variabel a.


printf ("hasil pangkatan %i dari %i = ",a,n); "); printf
berfungsi untuk menampilkan data atau tulisan. Data yang akan
ditampilkan adalah data yang ditulis setelah tanda buka dan diakhiri tutup
kurung. %i mengambil nilai integer dari variabel i dan n.
for (k=1;k<=n;k++); for merupakan perulangan, dimana variabel k = 1,

maka jika nilai variabel k lebih besar sama dengan nilai n, nilai pada
variabel k akan melakukan iterasi dan k akan +1.
{if(k==1) {printf ("%i",a); kondisinya, jika i=1 maka program

akan menampilkan data yang ada pada variabel a dengan type data integer.
}else {printf (" x %i",a); kondisininya jika lainnya maka program

akan menampilkan x dan mengambil data yang tersimpan dalam variabel a


dengan type data integer.
printf (" = %i",hasil) printf berfungsi untuk menampilkan data atau
tulisan. Data yang akan ditampilkan adalah data yang ditulis setelah tanda
buka dan diakhiri tutup kurung. %i mengambil nilai integer dari variabel
hasil.

b) Program Eulied (m,n)


#include<stdio.h> merupakan salah satu jenis pengarah
preprosessor directive. Sedangkan <stdio.h> merupakan singkatan
dari standar input output header yang digunakan sebagai standar input
output operasi yang digunakan dalam bahasa C
int gcd(int m,int n)int merupakan type data yang digunakan yaitu

integer, gcd merupakan singkatan dari greatest common divisor atau


factor persekutuan terbesar. Yang akan dieksekusi dengan fungsi int
gcd ini adalah nilai yang tersimpan di dalam variable m dan n dengan
type data integer.
int r; int merupakan type data yang digunakan, sedangkan r

merupakan variabel, jadi variabel tersebut dideklarasikan ke dalam


type data int.
while (n!=0){r=m%n; m=n; n=r;}ketika n bernilai tidak
samadengan nol, maka akan dijalankan perintah nilai variabel r adalah
nilai dari modulo atau sisa bagi dari variabel m dan n, nilai variabel m
samadengan n dan nilai variabel n samadengan r.
return m; berfungsi untuk mengembalikan nilai pada variabel m.
int m,n; int merupakan type data yang digunakan, sedangkan m, n,

merupakan variabel, jadi variabel tersebut dideklarasikan ke dalam


type data int.
printf("masukkan nilai m: "); printf berfungsi untuk
menampilkan data atau tulisan. Data yang akan ditampilkan adalah
data yang ditulis setelah tanda buka dan diakhiri tutup kurung. Pada
baris program ini akan ditampilkan data dengan tulisan Masukkan
nilai m= pada output.
scanf("%d",&m); scanf berfungsi untuk mengambil nilai pada

variabel m yang memiliki type data default/char


printf("masukkan nilai n: ");printf berfungsi untuk
menampilkan data atau tulisan. Data yang akan ditampilkan adalah
data yang ditulis setelah tanda buka dan diakhiri tutup kurung. Pada
baris program ini akan ditampilkan data dengan tulisan Masukkan
nilai n= pada output.
scanf("%d",&n); scanf berfungsi untuk mengambil nilai pada

variabel n yang memiliki type data default/char


printf("Faktor pembagi bilangan %d dan %d adalah

%d\n",m,n,gcd(m,n)); printf berfungsi untuk menampilkan data


atau tulisan. Data yang akan ditampilkan adalah data yang ditulis
setelah tanda buka dan diakhiri tutup kurung. %d mengambil nilai
default dari variabel m,n dan fungsi gcd (m,n).

c) Program Sequential Search


#include <stdio.h> merupakan salah satu jenis pengarah preprosessor
directive. Sedangkan <stdio.h> merupakan singkatan dari standar
input output header yang digunakan sebagai standar input output operasi
yang digunakan dalam bahasa C
int x,k,n,A[100]; int merupakan type dalta yang digunakan,

sedangkan x, k, n, A merupakan variabel, jadi variabel tersebut


dideklarasikan ke dalam type data int. sedangkan A[100] merupakan
variable a dideklarasikan array sebanyak [100] index
void sequential(int k)
k=1; k merupakan variable yang dibelikan nilai 1.
while ((k<n) && (A[k]!=x)) mengecek kondisi jika nilai variable k
lebih kecil dari n dan nilai array A dengan index k tidak samadengan x,
maka akan dijalankan baris program dibawah ini
k=k+1; if (A[k]==x) nilai k akan ditambah 1, lalu disimpan ke nilai k.

jika kondisi nilai array A dengan index k sama dengan x, maka akan
dijalankan baris program yang selanjutnya.
{A[k]=k;
printf("Data ditemukan pada data ke %d",k); A[k] merupakan
variable a dideklarasikan array sebanyak nilai yang ada pada variabel [k]
indexnya bernilai nol. Printf berfungsi untuk menampilkan data atau
tulisan. Data yang akan ditampilkan adalah data yang ditulis setelah tanda
buka dan diakhiri tutup kurung. Pada baris program ini akan ditampilkan
data dengan tulisan Data tidak ditemukan pada output.
}else{
A[k]=0; printf("Data tidak ditemukan");} else merupakan pilihan
kedua jika kondisi diatas tidak benar, maka akan mengecek kondisi ini.
Jika A[k] merupakan variable a dideklarasikan array sebanyak nilai yang
ada pada variabel [k] indexnya bernilai nol. Printf berfungsi untuk
menampilkan data atau tulisan. Data yang akan ditampilkan adalah data
yang ditulis setelah tanda buka dan diakhiri tutup kurung. Pada baris
program ini akan ditampilkan data dengan tulisan Data tidak ditemukan
pada output.
printf("Program Sederhana Sequential Search\n\n"); printf
berfungsi untuk menampilkan data atau tulisan. Data yang akan
ditampilkan adalah data yang ditulis setelah tanda buka dan diakhiri tutup
kurung. Pada baris program ini akan ditampilkan data dengan tulisan
Program Sederhana Sequential Search pada output.
printf("Inputkan jumlah data yang diinginkan : ");
scanf("%d",&n); printf berfungsi untuk menampilkan data atau tulisan.
Data yang akan ditampilkan adalah data yang ditulis setelah tanda buka
dan diakhiri tutup kurung. Pada baris program ini akan ditampilkan data
dengan tulisan Inputkan jumlah data yang diinginkan: pada output.
Scanf berfungsi untuk mengambil nilai pada variabel n yang memiliki type
data default/char
for (k=1;k<=n;k++){ for merupakan perulangan, dimana variabel k = 1,
maka jika nilai variabel k lebih besar sama dengan nilai n, nilai pada
variabel k akan melakukan iterasi dan k akan +1.
printf("Data ke %d = ",k); printf berfungsi untuk menampilkan data

atau tulisan. Data yang akan ditampilkan adalah data yang ditulis setelah
tanda petik. %d mengambil nilai default dari variabel k.
scanf("%d",&A[k] );} Scanf berfungsi untuk mengambil nilai pada

variabel A yang memiliki index array senilai var k dengan type data
default.
printf("Inputkan bilangan yang dicari : ");scanf("%d",&x);

printf berfungsi untuk menampilkan data atau tulisan. Data yang akan
ditampilkan adalah data yang ditulis setelah tanda buka dan diakhiri tutup
kurung. Pada baris program ini akan ditampilkan data dengan tulisan
Inputkan bilangan yang dicari: pada output. Scanf berfungsi untuk
mengambil nilai pada variabel x yang memiliki type data default/char
sequential(k);

d) Program Bubble Sort


#include merupakan salah satu jenis pengarah preprosessor directive.

Sedangkan <stdio.h> merupakan singkatan dari standar input output


header yang digunakan sebagai standar input output operasi yang
digunakan dalam bahasa C
int L[20],temp,i,j,n=6; int merupakan type data yang digunakan,
sedangkan L, i, j, n merupakan variabel, jadi variabel tersebut
dideklarasikan ke dalam type data int. sedangkan L[20] merupakan
variable a dideklarasikan array sebanyak [20] ruang dan variabel n bernilai
6.
printf("pengurutan berdasarkan Bubble sort \nmasukkan %d

elements: \n",n); printf berfungsi untuk menampilkan data atau


tulisan. Data yang akan ditampilkan adalah data yang ditulis setelah tanda
petik. %d mengambil nilai default dari variabel n.
for(i=0;i<n;i++){ for merupakan perulangan, dimana variabel i = 0,
maka jika nilai variabel i lebih kecil dari nilai n, nilai pada variabel i akan
melakukan iterasi dan k akan +1. Dan akan menjalani perintah dibawah:
scanf("%d",&L[i]);} printf("\nsebelum sorting: "); Scanf

berfungsi untuk mengambil nilai pada variabel L dengan array sebanyak


nilai variabel i yang memiliki type data default/char. Lalu ditampilkan
tulisan sebelum sorting dengan perintah print f pada output.
for(i=0;i<n;i++){printf("%d ",L[i]);} ++){ for merupakan

perulangan, dimana variabel i = 0, maka jika nilai variabel i lebih kecil


dari nilai n, nilai pada variabel i akan melakukan iterasi dan k akan +1.
Lalu akan ditampilkan nilai dari variabel L dengan banyak array nilai i.
for(i=n-2;i>=0;i--){ for merupakan perulangan, dimana variabel i =

nilai n dikurangkan 2, maka jika nilai variabel i lebih besar samadengan


nol, nilai pada variabel i akan melakukan iterasi dan i akan -1
for(j=0;j<=i;j++){ for merupakan perulangan, dimana variabel j= 0,

maka jika nilai variabel j lebih kecil samadengan dari nilai i, nilai pada
variabel j akan melakukan iterasi dan j akan +1.

if(L[j]>L[j+1]){
temp=L[j];
L[j]=L[j+1];
L[j+1]=temp;} berfungsi untuk mengecek kondisi. Jika array dengan
index j lebih besar dari nilai pada array dengan index j+1, maka nilai array
L dengan index j akan disimpan ke dalam variabel temp. lalu nilai array
variabel j+1 akan dimaskkan ke dalam array L[j]. dan nilai var temp akan
akan dimasukkan kedalam array dengan index j+1.
printf("\nsetelah sorting: ");printf berfungsi untuk menampilkan

data atau tulisan. Data yang akan ditampilkan adalah data yang ditulis
setelah tanda buka dan diakhiri tutup kurung. Pada baris program ini akan
ditampilkan data dengan tulisan Setelah sorting: pada output
for(i=0;i<n;i++);for merupakan perulangan, dimana variabel i= 0,

maka jika nilai variabel i lebih kecil dari nilai n, nilai pada variabel i akan
melakukan iterasi dan j akan +1.
{printf("%d ",L[i]);} printf("\n"); printf berfungsi untuk
menampilkan data atau tulisan. Data yang akan ditampilkan adalah data
yang ditulis setelah tanda buka dan diakhiri tutup kurung. %d mengambil
nilai default dari variabel L dengan array senilai variable i.
e) Program Uji keprimaan
#include merupakan salah satu jenis pengarah preprosessor directive.

Sedangkan <stdio.h> merupakan singkatan dari standar input output


header yang digunakan sebagai standar input output operasi yang
digunakan dalam bahasa C
#include <math.h> merupakan salah satu jenis pengarah preprosessor

directive. Sedangkan <math.h> berfungsi untuk program yang


menggunakan operasi matematika kuadrat.
bool Prime(int x){ fungsinya bool merupakan type data, sedangkan

prime merupakan var dengan nilai integer variable x.


int k,y; int merupakan type data yang digunakan, sedangkan k, y

merupakan variabel, jadi variabel tersebut dideklarasikan ke dalam type


data int.
bool test; if(x<2)berfungsi untuk mendeklarasikan variabel test pada
nila Boolean. Jika nilai x lebih kecil dari 2, maka akan menjalankan
perintah program dibaris selanjutnya.
return false; mengembalikan nilai salah.
else if(x==2){ else merupakan pilihan kedua jika kondisi diatas tidak

benar, maka akan mengecek kondisi ini. jika nilai x = 2, maka


return true; } mengembalikan nilai benar.
else{ jika kondisi kedua salah lagi, maka akan lanjut mengecek pada

eksekusi terakhir.
y=ceil(sqrt(x)); berfungsi untuk menghitung nilai akar dari variabel x,
kemudian disimpan ke y.
test=true; berfungsi untuk memindahkan nilai yang ada pada true ke

test.
while (test && (y>=2)){ berfungsi untuk mengecek kondisi variabel
test dan variable y lebih besar samadengan 2.
if (x%y==0) test=false; jika sisa bagi dari variabel x dan y adalah

nol, maka nilai pada variabel test akan bernilai salah/false.


else
y--; kondisi lain untuk jika nilai y -1
return test;} berfungsi untuk mengembalikan nilai awal apada variabel
test.
int main(){fungsi utama dari sebuah kode bahasa c dengan nilai type
data integer
int a; bool prima;
printf ("Masukkan angka: "); scanf ("%d",&a);
int merupakan type data yang digunakan integer, sedangkan a adalah
variabelnya. Bool juga merupakan type data Boolean yang dideklarasikan
pada variabel prima. Printf berfungsi untuk menampilkan data atau tulisan.
Data yang akan ditampilkan adalah data yang ditulis setelah tanda petik.
%d mengambil nilai default dari variabel a. Scanf berfungsi untuk
mengambil nilai pada variabel a dengan type data default dan ditampilkan
pada output program.
prima=Prime(a);
if (prima)jika kondisi pada variabel merupakan nilai dari var prima,
maka program akan mengeksekusi perintah program dibawah ini
printf ("%d bilangan prima",a); Printf berfungsi untuk
menampilkan data atau tulisan. Data yang akan ditampilkan adalah data
yang ditulis setelah tanda petik. %d mengambil nilai default dari variabel a
else else merupakan pilihan lain jika kondisi diatas tidak benar, pada

baris ini adalah kondisi terakhir. Jiksa semua kondisi diatas salah, maka
program akan menjalankan perintah pada baris program dibawah ini
printf ("%d bukan bilangan prima",a); Printf berfungsi untuk

menampilkan data atau tulisan. Data yang akan ditampilkan adalah data
yang ditulis setelah tanda petik. %d mengambil nilai default dari variabel a
return 1;} berfungsi untuk mengembalikan ke nilai 1.

f) Program mencari nilai Polinom dengan Brute Force

#include merupakan salah satu jenis pengarah preprosessor directive.


Sedangkan <stdio.h> merupakan singkatan dari standar input output
header yang digunakan sebagai standar input output operasi yang
digunakan dalam bahasa C
#include merupakan salah satu jenis pengarah preprosessor directive.

Sedangkan <stdlib.h> merupakan file header yang berfungsi pada


operasi pembanding dan operasi konversi.
#define MAXSIZE 10 untuk menetapkan nilai maxsize 10 sebagai

konstanta yang tetap pada program.


int main(void) merupakan fungsi utama dalam program Bahasa c.
int array[MAXSIZE]; merupakan fungsi untuk mendeklarasikan variabel
array yang memiliki type data int atau integer yang arraynya maxsize.
int i, j, a; int merupakan type data yang digunakan, sedangkan i, j, a

merupakan variabel, jadi variabel tersebut dideklarasikan ke dalam type


data int.
float x, pangkat; float merupakan type data yang digunakan,
sedangkan x merupakan variabel, jadi variabel tersebut dideklarasikan ke
dalam type data int. pangkat juga merupakan variabel yang digunakan.
printf("========= Program Polinom ==========\n\n");
printf("Masukkan Banyak Polinom \n");
scanf("%d", &j); Printf berfungsi untuk menampilkan data atau tulisan.
Data yang akan ditampilkan adalah data yang ditulis setelah tanda petik.
Scanf berfungsi untuk mengambil nilai pada variabel j dengan type data
default dan ditampilkan pada output program.
printf("Masukkan Nilai x \n");
scanf("%f", &x); Printf berfungsi untuk menampilkan data atau tulisan.
Data yang akan ditampilkan adalah data yang ditulis setelah tanda petik.
Scanf berfungsi untuk mengambil nilai pada variabel x dengan type data
float dan ditampilkan pada output program.
printf("Masukkan %d Nilai Konfiden \n", j + 1);
for (i = 0; i <= j; i++)
scanf("%d", &array[i]); Printf berfungsi untuk menampilkan data
atau tulisan. Data yang akan ditampilkan adalah data yang ditulis setelah
tanda petik, for merupakan perulangan, dimana variabel i= 0, maka jika
nilai variabel i lebih kecil samadengan dari nilai j, nilai pada variabel i
akan melakukan iterasi dan i akan +1. Scanf berfungsi untuk mengambil
nilai pada array dengan index var i dan ditampilkan pada output program.
pangkat = array[0]; merupakan nilai array dengan index 0 akan

diambil dan dimasukkan pada variable pangkat.


for (i = 1; i <= j; i++) for merupakan perulangan, dimana variabel

i= 1, maka jika nilai variabel i lebih kecil samadengan dari nilai j, nilai
pada variabel i akan melakukan iterasi dan i akan +1.
pangkat = pangkat * x + array[i]; merupakan nilai variable

pangkat dikali dengan nila variabel x lalu dijumlahkan dengan array yang
indengnya adalah sebanyak variabel I, lalu hasilnya akan dimasukkan ke
dalam variabel pangkat. a = j; variabel a sadengan nilai pada var b.
printf("Nilai Polinomnya : \n"); printf berfungsi untuk
menampilkan data atau tulisan. Data yang akan ditampilkan pada output
adalah data yang ditulis setelah tanda petik
for (i = 0; i <= j; i++){if (a < 0) break;
for merupakan perulangan, dimana variabel i= 0, maka jika nilai variabel i
lebih kecil samadengan dari nilai j, nilai pada variabel i akan melakukan
iterasi dan i akan +1. Jika nilai variable a lebih kecil dari nol, maka
program dibawah akan di break atau dilewati.
if (array[i] > 0) printf(" + ");
disini akan mengecek kondisi, jika kondisi array dengan index variabel i
lebih besar dari nol, maka akan menjalankan perintah unruk menampilkan
data tulisan + pada output.
else if (array[i] < 0)
printf(" - "); disini akan mengecek kondisi lain jika kondisi diatas
tidak sesuai, jika kondisi array dengan index variabel i lebih kecil dari nol,
maka akan menjalankan perintah unruk menampilkan data tulisan -
pada output.
else
printf(" ");
printf("%dx^%d ", abs(array[i]), a--)} disini akan mengecek
kondisi lain terakhir jika kondisi diatas tidak sesuai, maka akan
menjalankan perintah unruk menampilkan data tulisan spasi dan
menampilkan nilai mutlak dari nilai array dengan index i dan nilai default
selanjutnya adalah nilai dari variable a dikurangkan 1 pada output.
printf("\n\nHasil Dari Polinom = %6.2f \n", pangkat);} Printf
berfungsi untuk menampilkan data atau tulisan. Data yang akan
ditampilkan adalah data hasil polino, dengan type data nilai float atau
pecahan dan diambil dari variable pangkat.

1.5 Kesimpulan dan Saran

Kesimpulan yang diambil dari praktikum 1 ini adalah :

Algoritma merupakan langkah atau cara untuk menyelesaikan suatu


masalah. Algoritma juga sangat dekat dengan kehidupan sehari-hari
manusia.
Algoritma Brute Force adalah alur penyelesaian suatu permasalahan
dengan cara berpikir yang sederhana dan tidak membutuhkan suatu
permikiran yang lama.
Algoritma Brute Force juga banyak memiliki jenis algoritma yang
berbeda-beda sesuai dengan masaah yang dihadapi program atau yang
dibutuhkan untuk menyelesaikan sebuah masalah dengan program.
Dalam program-program diatas yang sudah dipraktekkan dapat kita
simpulkan bahwa koding-koding yang digunakan harus sesuai dengan
algoritma yang ditentukan untuk mendapatkan hasil dari algoritma itu
sendiri dengan benar.
Program dev c++ juga menerapkan sifat case sensitive dimana program
harus diperhatikan sedetail mungkin untuk menjalankan program, jika
terdapat kesalahan maka program tidak akan bisa dijalankan dan tidak
akan mengeluarkan output.

Saran pada praktikum 1, semoga praktikan bisa dapat memahami lagi


algoritma-algoritma diatas dengan lebih baik lagi dan memperbanyak ilmunya lagi
tentang algoritma brute force

Daftar Pustaka

1. http://aryo.lecture.ub.ac.id/files/2013/03/DAA-III-Brute-Force.pptx
Diakses pada tanggal 14 Maret 2017
2. https://smallpdf-production-files.s3-eu-west-
1.amazonaws.com/cfc89c9ed6fe1f2d1e6fa7e2eebb7cf0.pdf.docx Diakses
pada tanggal 14 Maret 2017
3. http://marvinproject.sourceforge.net/download/Makalah-IF3051-2012-
025.pdf Diakses pada tanggal 13 Maret 2017