Showing posts with label Algoritma. Show all posts
Showing posts with label Algoritma. Show all posts

Tuesday, April 6, 2021

Interpolasi Polinomial Lagrange dan Newton dengan Python

Interpolasi Newton
Contoh interpolasi Newton titik-titik (10, 15), (15, 20), (20, 100), (30, 10)


Intepolation atau dalam bahasa Indonesia interpolasi adalah jenis estimasi (perkiraan), metode membangun titik data baru dalam kisaran set diskrit dalam titik data yang diketahui. Dalam sebuah eksperimen, peneliti menemukan data sejumlah titik dari hasil eksperimen atau penelitian yang dilakukan. Titik-titik data dari sebuah eksperimen mewakili variable yang diamati oleh peneliti. Dari titik-titik data hasil eksperimen ini, peneliti akan mencari nilai fungsi dari titik-titik data yang diperoleh sehingga membentuk fungsi yang kontinu. Sering kali peneliti menginterpolasikan atau memperkirakan nilai fungsi tersebut dengan beberapa metode yang tersedia.

Sementara itu dalam bidang komputer, Interpolasi digunakan untuk membuat sketsa, figure, atau bentuk dari berbagai benda dan makhluk hidup. Interpolasi dapat digunakan untuk peramalan data menggikuti pola suatu grafik yang ada. Seperti apabila memiliki sekumpulan data pengangguran di Indonesia. Data tersebut dapat dilakukan interpolasi hingga terbentuk grafik yang menunjukkan peramalan jumlah pengangguran di tahun-tahun berikutnya. Namun peramalan ini tidak akan akurat karena hanya berasal dari data, dan tidak memasukkan variable yang lain seperti jumlah lapangan kerja, banyak PHK dan variable lainnya.

Thursday, March 12, 2020

Integral Simpson dengan Python

Selamat malam semua, seperti biasa karena kesibukan admin saya jadi jarang nulis di blog ini. Sepertinya saya mau menulis lebih panjang dari sebelum-sebelumnya nih.

Integral adalah sebuah konsep matematika dalam menemukan luas, volume dan biasanya digunakan oleh mahasiswa matematika. Integral berkebalikan dengan differensial, karena itu integral disebut juga anti turunan. Untuk definisi formal integral kalian akan memperolehnya dalam pelajaran kalkulus 2. Di sana nanti akan dijelaskan apa itu integral dan seluk beluk memperolehnya. Karena kita akan membahas mengenai Integral dengan metode simpson, kalian harus tahu apa itu integral.

Saturday, December 14, 2019

Canvas Javascript Sprite Sheet Animation fungsi Sinus Cosinus

Selamat malam, besok senin udah UAS tapi malas banget mau belajar. Udah ngerasa bego gak mau belajar. Please give me motivation for study :v. Mau main game nge lag banget, ya udah lah mendingan ngisi blog sambil dengerin Already dead :v.


Artikel kali ini masih ada hubungannya dengan artikel sebelumnya, mengenai Grafik Fungsi Sinus Cosinus dengan Canvas Javascript. Saya mau membuatnya menjadi animation koin mengikuti jalur sinus cosinus pada fungsi sebelumnya.


Sebelum membuat animasinya kita pelajari dulu fungsi sinus cosinus yang akan digunakan. Dalam gambar tersebut grafik sinus ditunjukkan pada puncak pertama. Gambar cosinus ditunjukkan puncak kedua. Fungsi dari grafik sinus dapat ditunjukkan seperti dibawah ini:

f(x) = sin x

Karena umumnya dalam pemrograman menggunakan radian. Kita harus membentuknya dengan radian. Sementara itu fungsi cosinus ditunjukkan seperti dibawah ini:

f(x) = cos x

Dimana x dalam radian. Karena kita akan membentuknya seperti infinity kita melakukan sedikit perubahan pada fungsi cosinus ini. Bagaimana cara kita menggeser grafik cos supaya terbentuk hasil yang diinginkan. Untuk menggesernya kita hanya perlu menambahkan x dengan sudut yang diinginkan dalam hal ini kita menggunakan sudut 90 derajat atau pi/2. Fungsi yang kita gunakan akan berubah seperti ini:

f(x) = cos (x + pi / 2)

Setelah mengetahui fungsi dari sinus dan cosinus kita membutuhkan cara untuk mengubah gradien dunia nyata dengan gradien di komputer. Hal ini dilakukan karena dalam screen komputer tidak memiliki angka negatif. Bagian kanan atas merupakan titik (0, 0) komputer. Semakin kebawah nilai y akan bertambah. Karena itu kita membutuhkan pemetaan sederhana atau yang biasa disebut dengan window to viewport.

Window to Viewport


Window adalah koordinat dunia nyata atau yang biasa kita sebut dengan koordinat kartesius. Sementara itu viewport adalah koordinat elektronik atau koordinat layar pada komputer.

Window mendefinisikan apa yang ingin ditampilkan. Pemetaan bagian dari koordinat dunia nyata ke koordinat device sering disebut dengan window to viewport transformation atau windowing transformation.


Langkah-langkah transformation 

  • Buat world-coordinate scene menggunakan pemodelan dan transformasi koordinat
  • Konversi world-coordinate ke viewing coordinate
  • Petakan viewing coordinate ke normalized viewing coordinate menggunakan spesifikasi window-viewport
  • Petakan normalized viewing coordinat ke koordinat device

Viewport biasanya didefinisikan dalam bentuk persegi panjang atau square. Namun bisa juga dengan membuatnya menjadi lingkaran atau bentuk lainnya.


Lihat gambar diatas, window dengan viewport memiliki perbandingan yang sama antara jarak titik dan panjang atau lebar titik. Dalam matematika waktu smp kita telah belajar mengenai perbandingan. Dengan cara ini kita dapat menentukan letak titik pada device atau komputer.

Titik di posisi (xw, yw) pada window dipetakkan di posisi (xv, yv) pada viewport. Agar posisi relativ sama gunakan rumus berikut ini.


Dengan sifat matematika didapatkan rumus sebagai berikut :



Setelah saya cek dengan perbandingan rumus diatas ternyata masih salah. Rumus yang benar akan seperti dibawah ini.

const xv = xvmin + Math.round((xw - xwmin) * (xvmax - xvmin) / (xwmax - xwmin))
const yv = Math.round((ywmax - yw) * (yvmax - yvmin) / (ywmax - ywmin)) - yvmin

Logic Sprite Sheet Animation

Sebelum melangkah ke logika dari sprite sheet animation terlebih dahulu download bahan png image dibawah ini.


Dalam png image diatas terdapat posisi koin berbeda beda. Gambar tersebut akan ditransisikan dengan cepat sehingga mata kita melihatnya layaknya animasi. Padahal hanya gambar statis yang dipindah dengan cepat.

Sebelum berpindah pada posisi transisi selanjutnya, transisi pertama dihapus terlebih dahulu agar gambar tidak bertumpuk. Jika ingin menggunakan background dapat pula dihapus dengan menggenerate backgroun per transisi. Kurang lebih logika yang digunakan akan se simple ini. Tapi dalam implementasinya akan lebih rumit.

Source Code Sprite Sheet Animation



Karena sudah dijelaskan pada bagian logic saya rasa tidak perlu penjelasan lagi mengenai penggunaan fungsi-fungsi javascript diatas. Btw dalam program diatas menggunakan background yang saya manipulasi pada bagian css jadi saya hanya perlu menghapus canvasnya tidak perlu melakukan iterasi background. Saya rasa dengan cara ini dapat menghemat kompleksitas dari algoritma.

Dalam bahasa pemrograman lain, sepertinya anda diharuskan untuk melakukan iterasi pada bagian backgroundnya juga. Terima kasih. Jika ada yang gak dimengerti silakan tinggalkan komentar. Jika ingin melihat scriptnya secara menyeluruh silakan lihat di github saya di link here. Jika ingin melihat hasilnya silahkan klik link here.

Terima kasih. Minta doanya biar UAS gue lancar wkwk.

Friday, December 13, 2019

Grafik fungsi Sinus Cosinus Canvas Javascript

Selamat pagi, pada jumat pagi yang cerah di tempat saya ini sambil dengerin musik, saya mau share artikel mengenai grafik fungsi sinus cosinus dalam canvas dengan javascript. Saya akan membuatnya seperti gambar dibawah ini.


Sebelum menggambarkannya terlebih dahulu pelajari mengenai fungsi sinus dan cosinus dalam trigonometri. Sewaktu SMA kita sudah mendapatkan trigonometri. Jadi saya tidak akan membahas mengenai trigonometri secara lengkap.

Dalam gambar tersebut grafik sinus ditunjukkan pada puncak pertama. Gambar cosinus ditunjukkan puncak kedua. Fungsi dari grafik sinus dapat ditunjukkan seperti dibawah ini:

f(x) = sin x

Karena umumnya dalam pemrograman menggunakan radian. Kita harus membentuknya dengan radian. Sementara itu fungsi cosinus ditunjukkan seperti dibawah ini:

f(x) = cos x

Dimana x dalam radian. Karena kita akan membentuknya seperti infinity kita melakukan sedikit perubahan pada fungsi cosinus ini. Bagaimana cara kita menggeser grafik cos supaya terbentuk hasil yang diinginkan. Untuk menggesernya kita hanya perlu menambahkan x dengan sudut yang diinginkan dalam hal ini kita menggunakan sudut 90 derajat atau pi/2. Fungsi yang kita gunakan akan berubah seperti ini:

f(x) = cos (x + pi / 2)

Setelah mengetahui fungsi dari sinus dan cosinus kita membutuhkan cara untuk mengubah gradien dunia nyata dengan gradien di komputer. Hal ini dilakukan karena dalam screen komputer tidak memiliki angka negatif. Bagian kanan atas merupakan titik (0, 0) komputer. Semakin kebawah nilai y akan bertambah. Karena itu kita membutuhkan pemetaan sederhana atau yang biasa disebut dengan window to viewport.

Window to Viewport


Window adalah koordinat dunia nyata atau yang biasa kita sebut dengan koordinat kartesius. Sementara itu viewport adalah koordinat elektronik atau koordinat layar pada komputer.

Window mendefinisikan apa yang ingin ditampilkan. Pemetaan bagian dari koordinat dunia nyata ke koordinat device sering disebut dengan window to viewport transformation atau windowing transformation.


Langkah-langkah transformation 

  • Buat world-coordinate scene menggunakan pemodelan dan transformasi koordinat
  • Konversi world-coordinate ke viewing coordinate
  • Petakan viewing coordinate ke normalized viewing coordinate menggunakan spesifikasi window-viewport
  • Petakan normalized viewing coordinat ke koordinat device

Viewport biasanya didefinisikan dalam bentuk persegi panjang atau square. Namun bisa juga dengan membuatnya menjadi lingkaran atau bentuk lainnya.


Lihat gambar diatas, window dengan viewport memiliki perbandingan yang sama antara jarak titik dan panjang atau lebar titik. Dalam matematika waktu smp kita telah belajar mengenai perbandingan. Dengan cara ini kita dapat menentukan letak titik pada device atau komputer.

Titik di posisi (xw, yw) pada window dipetakkan di posisi (xv, yv) pada viewport. Agar posisi relativ sama gunakan rumus berikut ini.


Dengan sifat matematika didapatkan rumus sebagai berikut :



Setelah saya cek dengan perbandingan rumus diatas ternyata masih salah. Rumus yang benar akan seperti dibawah ini.

const xv = xvmin + Math.round((xw - xwmin) * (xvmax - xvmin) / (xwmax - xwmin))
const yv = Math.round((ywmax - yw) * (yvmax - yvmin) / (ywmax - ywmin)) - yvmin

Sekarang saatnya kita menggambarkannya dalam source code.

Source code Grafik Fungsi Sinus Cosinus Canvas Javascript


Saya menggunakan ukuran window dan viewport sebagai berikut:

canvas.width = 651
canvas.height = 300
const ctx = canvas.getContext('2d')

// window
const xwmin = 0
const xwmax = 7
const ywmin = -1.5
const ywmax = 1.5

// viewport 
const xvmin = 0
const xvmax = 700
const yvmin = 0
const yvmax = 300

Buat file animation.html dan graph.js isi dengan source code dibawah ini:


Jika sudah hasilnya akan seperti pada halaman ini. click here

Sekian artikel kali ini. Doain UAS gue lancar wkwk.

Sunday, November 3, 2019

Cara Membuat Pohon dengan Transformasi Affine dan Fractal

Selamat pagi, Hari ini saya akan share mengenai Grafika Komputer. Dalam grafika komputer salah satu yang dipelajarai adalah membuat gambar dalam komputer menggunakan rumus matematika transformasi.



Transformasi yang akan saya bagikan sekarang sedikit berbeda dengan transformasi yang sudah dipelajari di bangku SMA maupun SMP.

Menurut Barnsley, 1988 Sistem fungsi iterasi (SFI) adalah suatu sistem yang terdiri dari suatu ruang metrik lengkap (X,d) bersama dengan himpunan berhingga dari pemetaan kontraksi wn : X ® X dengan faktor kontraksi masing-masing adalah sn, untuk n = 1,2,…,N.  Dan biasanya diberi notasi {X; wn , n=1,2,…,N}.


Sedangkan yang dimaksud dengan Atraktor dari suatu sistem fungsi iterasi adalah suatu titik tetap (fixed point) A yang merupakan himpunan bagian kompak dari X yang memenuhi

A = W(A) = w1(A) È w2(A) È … ÈwN(A),

yaitu  A = Lim n®¥ Wn(B) , untuk sembarang B himpunan bagian kompak dari X, dimana

W1(B)=W(B), W2(B)=W(W(B)), W3(B)=W(W2(B)),…,Wn(B)=W(Wn-1(B)).

Untuk membuat suatu gambar fractal, sebagai pemetaan kontraksinya dapat digunakan transformasi affine sebagai berikut :



Ada dua algoritma untuk menggambar Fraktal, yaitu deterministik dan random. Perbedaan dari kedua algoritma ini sangatlah terasa. Jika menggunakan deterministik kita dapat menentukan sendiri jumlah perulangan yang digunakan. Tetapi dengan iterasi random kita melakukan iterasi sebanyak mungkin hingga terbentuk bentuk yang kita inginkan.


Algoritma Deterministik


Menentukan window {xwmin, ywmin, xwmax, ywmax} dan viewport {xvmin, yvmin, xvmax, yvmax};
Baca data fungsi Affine {a, b, c, d, e, f};
Buat gambar sembarang dalam viewport;
iterasi = 0;
reperat
     for i = xvmin to xvmax do begin
          for j = yvmin to yvmax do begin
               if(pixels[i, j] = warnaobjek) then begin
                    VW(i, j, x, y) // Transformasi viewport ke window dan hasilnya simpan di x, y
                         for k = 1 to n do begin // dengan n banyak fungsi transformasi Affine
                              xb = a[k] * x + b[k] * y + e[k]
                              yb = c[k] * x + d[k] * y + f[k]
                              WV(xb, yb, xi, yi) // Transfornasi window ke viewport dan hasilnya di simpan di xi, yi
                             bm.pixels[xl, yl] = warnaobjek
               end;
         end;
     end;
     copy(bm)
     inc(iterasi)
     until(iterasi = numit) // sesuaikan sampai terbentuk bentuk yang diinginkan
end

Penjelasan singkatnya: 

Pertama tentukan window dan viewport yang akan dibuat. Setelah itu tentukan rumus affine yang akan dibuat. Selanjutnya berikan sembarang gambar dalam viewport, hal ini digunakan untuk ditransformasikan ke bentuk selanjutnya. Scan viewport jika menemukan pixels yang membentuk gambar sembarang tadi lakukan transformasi affine. lakukan hal ini sampai membantuk objek yang diinginkan.

Algoritma Iterasi random


Menentukan window {xwmin, ywmin, xwmax, ywmax} dan viewport {xvmin, yvmin, xvmax, yvmax};
Baca data fungsi Affine {a, b, c, d, e, f}; banyaktitik = 300000
x = 0; y = 0; // sebagai titik awal transformasi
for i = 0 to banyaktitik do begin
     r = random
     if r<1/3 then k = 1; else if r<2/3 then k = 2; else k = 3; // sesuaikan jumlah fungsi transformasi affine
     xb = a[k] * x + b[k] * y + e[k]
     yb = c[k] * x + d[k] * y + f[k]
     if i>10 then begin
          WV(xb, yb, xi, yi) // Transformasi window ke viewport dan hasilnya di xi, yi
          bm.pixels[xi, yi] = warnaobjek
    end
    x = xb
    y = yb
end

Penjelasan singkat:

Pertama tentukan window dan viewport yang dibutuhkan. Baca / tentukan transformasi affine yang digunakan. Tentukan jumlah literasi dengan variabel banyak titik. Lakukann literasi dengan menggunakan pemilihan fungsi secara random. Gambar hasilnya. lakukan sampai i = banyak literasi / banyak titik.

Untuk memahaminya anda haruslah paham mengenai cara menentukan window to viewport atau sebaliknya.

Window to Viewport


Window adalah koordinat dunia nyata atau yang biasa kita sebut dengan koordinat kartesius. Sementara itu viewport adalah koordinat elektronik atau koordinat layar pada komputer.

Window mendefinisikan apa yang ingin ditampilkan. Dalam artikel ini kita ingin menampilkan kurva y = x^2. Viewport mendefinisikan di mana ditampilkannya. Pemetaan bagian dari koordinat dunia nyata ke koordinat device sering disebut dengan window to viewport transformation atau windowing transformation.


Langkah-langkah transformation 

  • Buat world-coordinate scene menggunakan pemodelan dan transformasi koordinat
  • Konversi world-coordinate ke viewing coordinate
  • Petakan viewing coordinate ke normalized viewing coordinate menggunakan spesifikasi window-viewport
  • Petakan normalized viewing coordinat ke koordinat device

Viewport biasanya didefinisikan dalam bentuk persegi panjang atau square. Namun bisa juga dengan membuatnya menjadi lingkaran atau bentuk lainnya.


Lihat gambar diatas, window dengan viewport memiliki perbandingan yang sama antara jarak titik dan panjang atau lebar titik. Dalam matematika waktu smp kita telah belajar mengenai perbandingan. Dengan cara ini kita dapat menentukan letak titik pada device atau komputer.

Titik di posisi (xw, yw) pada window dipetakkan di posisi (xv, yv) pada viewport. Agar posisi relativ sama gunakan rumus berikut ini.


Dengan sifat matematika didapatkan rumus sebagai berikut :



Sekarang saatnya kita menggambarkannya dalam source code.

Untuk Viewport to window dapat anda cari dengan rumus diatas dengan cara yang sama melalui perbandingan matematika.

Menggambar Pohon dengan Affine Fractal


Masuk ke dalam menggambar grafik affine. Pertama tentukan window dan viewportnya. Disini saya menggunakan window dan viewport
xwmin:=-3;xwmax:=3;ywmin:=0;ywmax:=7;
xvmin:=0;xvmax:=600;yvmin:=0;yvmax:=700;
Untuk rumus affine saya menggunakna :
alpa:=5; beta:=-50;  gama:=40;
a[1]:=0;b[1]:=0;c[1]:=0;d[1]:=0.37;e[1]:=0;f[1]:=0;   

a[2]:=0.65*cos(alpa*pi/180);  b[2]:=-0.65*sin(alpa*pi/180);
c[2]:=0.65*sin(alpa*pi/180);  d[2]:=0.65*cos(alpa*pi/180);
e[2]:=0;  f[2]:=2.5;

a[3]:=0.5*cos(beta*pi/180);  b[3]:=-0.5*sin(beta*pi/180);
c[3]:=0.5*sin(beta*pi/180);  d[3]:=0.5*cos(beta*pi/180);
e[3]:=0;  f[3]:=1.5;

a[4]:=0.5*cos(gama*pi/180);  b[4]:=-0.5*sin(gama*pi/180);
c[4]:=0.5*sin(gama*pi/180);  d[4]:=0.5*cos(gama*pi/180);
e[4]:=0;  f[4]:=1.7;
Saya akan menggunakan algoritma deterministik dengan sedikit perubahan karena saya tidak dapat menemukan fungsi copyrect pada javascript.

Source code Affine Pohon dapat dilihat dibawah ini:

Untuk algoritma yang menggunakan iterasi random silakan anda cek diwikipedia berikut ini. Silakan lihat hasilnya disini.

Terimakasih telah membaca artikel ini jika anda terbantu dengan artikel ini silakan share ke web yang anda mau terimakasih.

Kemarin gue nonton anime Violet Evergarden :v. Rekomended untuk ditonton wkwk. :)

Sunday, September 22, 2019

Transformasi Geometri: Pencerminan atau Refleksi Terhadap Garis Sembarang Titik Grafik pada Javascript dengan Canvas

Selamat siang, hari ini saya akan membagikan mengenai algoritma refleksi atau pencerminan. Saat kita SMA kita sudah di kenalkan dengan bidang datar segitiga, lingkaran, belah ketupat dan sebagainya. Pengoperasian bidang tersebut ada beberapa diantaranya seperti translasi, rotasi, scaling dan juga refleksi.

Sebelum masuk ke dalam coding, kita harus mengenal dulu apa itu Refleksi atau pencerminan.

Baca Juga: Membuat Grafik Kurva kuadrat dengan Canvas Javascript
Baca Juga: Membuat Lingkaran dan Garis Bergerak Seperti Menggambar pada Java

Refleksi atau Pencerminan


Wednesday, September 4, 2019

Membuat Lingkaran dan Garis Bergerak Seperti Menggambar pada Java

Dalam pemrograman juga ada pemrograman grafik. Umumnya semua bahasa pemrograman dapat digunakan untuk membuat grafik. Salah satunya adalah bahasa pemrograman Java.

Untuk membuat lingkaran kita membutuhkan beberapa library yang ada di Java. Seperti JPanel, JFrame, Graphics, dan sebagainya.

Membuat lingkaran yang tidak bergerak kita dapat menggunakan library bawaan java. Namun untuk membuatnya bergerak kita tidak bisa langsung menggunakan library dari Java.

Disini kita akan membuat lingkaran dan garis yang dapat bergerak atau animasi seperti gerakan seseorang yang sedang menggambar. Untuk itu diperlukan pemahaman mengenai rumus lingkaran dan rumus garis yang nanti akan kita gunakan.

Yang ingin kita buat adalah lingkaran yang bergerak dan garis yang bergerak setelah itu diikuti dengan lingkaran yang bergerak. Bergerak disini saya maksud dengan gerakan tangan seperti menggambar. Lihat contoh gambar yang ingin dibuat dibawah ini.


Kita akan membentuk gambar seperti diatas. Pertama-tama pelajari dulu persamaan garis lurus dan persamaan pada lingkaran.

Persamaan Garis Lurus


Secara umum persamaan garis lurus dihitung dengan rumus:

y = mx + c

Keterangan:


  • m adalah gradien; m = (y2 - y1) / (x2 - x1)
  • c adalah konstanta gradien

Kita dapat menggunakan persamaan tersebut untuk menentukan persamaan garis yang dibuat dan mencari titik pusat lingkaran. Untuk menentukan gradient yang tegak lurus kita membutuhkan rumus:

m1 m2 = -1

Dengan rumus diatas kita dapat menentukan pusat lingkaran. Kemudian kita membutuhkan Persamaan Lingkaran.

Persamaan Lingkaran


Dalam persamaan garis singgung lingkaran terdapat rumus persamaan lingkaran yang berkaitan dengan titik singgung (x1,y1) dan gradien garis singgung (m). Untuk menyelesaikan persamaan lingkaran yang diketahui titik singgung (x1,y1) dapat menggunakan rumus dibawah ini:


Selanjutnya terdapat rumus persamaan lingkaran jika diketahui gradien garis singgung (m) yaitu:


Untuk menentukan titik titik pada lingkaran kita membutuhkan persamaan parameter lingkaran berikut ini :



Setelah mempelajarinya kita akan masuk kedalam kode program Java yang akan kita implementasikan.

Program diatas menggunakan bahasa Java. Untuk penjelasannya lihat dibawah ini:

  • JPanel digunakan untuk menggambar pada method paintComponent,
  • JFrame digunakan untuk membuat frame aplikasi,
  • SwingUtilities opsional, nggak dikasih juga gak masalah,
  • Scanner digunakan untuk inputan pada console,
  • Constructor berisi algoritma menentukan pusat lingkaran dan menjalankan program draw yang berulang,
  • Timer digunakan untuk melakukan delay pada graphic,
  • Method gambarLingkaran adalah algoritma membuat lingkaran,
  • Method gambarGaris adalah algoritma membuat garis,
  • Method getPrefencesSize digunakan untuk menentukan ukuran dari Frame,
  • Method paintComponent digunakan untuk menggambar grafik.

Cara kerja program secara keseluruhan adalah mengambil titik-titik pada apa yang ada dilingkaran. Kemudian titik-titik tersebut akan disimpan dalam List kemudian menggambarkannya dengan timer. 

Karena java tidak memiliki method untuk menggambar titik, maka menggunakan cara alternatif dengan menggambar lingkaran.

Itu adalah Cara Menggambar Lingkaran (Circle) dan Garis (line) bergerak seperti menggambar. Sekian pembahasan kali ini terima kasih.

Tuesday, August 13, 2019

Pengertian Sequential Search dan Implementasinya

Sequential search adalah algoritma pencarian dengan menelusuri urut dari awal sampai akhir. Algoritma sequential search biasanya diimplementasikan oleh angka. Namun untuk teks string juga dapat diimplementasikan dengan algoritma ini.

Biasanya dalam java sudah terdapat library khusus yang digunakan untuk melakukan pencarian. Namun untuk bahasa tingkat tinggi seperti pascal, kayaknya belum memiliki library searching.

Searching dengan sequential search memiliki worst case apabila angka yang dicari berada di akhir array atau angka yang dicari tidak terdapat pada array. Sedangkan best case searching ini ketika angka yang dicari berada paling depan atau awal array.

Bagaimana cara kerja searching dengan mengurutkan dari awal sampai bilangan terakhir? Searching ini membandingkan angka yang dicari dengan angka yang berada dalam array satu per satu sampai angka yang dicari didapatkan.

Searching ini dapat digunakan tanpa terlebih dahulu mengurutkannya. Berbeda dengan algoritma binary search yang saat kita mau melakukan pencarian kita harus menggunakan angka yang sudah terurut.

Source code Sequential Search


Di bawah ini adalah source code untuk sequential search dengan menggunakan bahasa C++. Untuk mengubahnya ke dalam bahasa lain anda hanya perlu mengubah beberapa syntax. Karena algoritma akan bersifat universal untuk semua bahasa pemrograman yang digunakan.


Penjelasan


Kita memiliki angka-angka dalam array 1 dimensi. Untuk mencari panjang array kita gunakan operasi yang berada pada variable n.

Sebelum melakukan pencarian kita ingin menampilkan bilangan-bilangan yang berada pada variable angka. Kita menggunakan looping sebanyak n untuk melakukannya.

Untuk mengetahui angka yang dicari sudah ketemu atau belum kita gunakan variable boolean ketemu. Variable temp digunakan untuk melakukan looping sampai akhir dari array angka.

Dengan cara menghentikan perulangan saat ketemu membuat program menjadi ringan karena kita sudah tidak perlu lagi mencarinya sampai akhir array angka. Namun Cari ini tidak dapat digunakan untuk mencari dua nilai pada array yang sama.

Output


10 20 30 40 50 60 70 80 90 100
angka 5 tidak berada dalam array

Baca Juga: Pengertian Array dan penggunaannya dalam C++

Untuk mencari dua atau lebih nilai yang sama dapat dengan mudah mengedit program diatas dengan melakukan pencarian sampai akhir array. Cobalah untuk mengedit algoritma diatas agar dapat digunakan untuk mencari dua atau lebih nilai yang sama.