Followers

Thursday, 28 March 2013

KATA-KATA BIJAK

Kata Kata Bijak

"Seorang pemenang tidak pernah menyerah, dan orang yang menyerah tidak pernah menang."


"Syukurilah apa yang anda dapatkan baik suka ataupun tidak maka anda sudah menghargai hidup anda sendiri"


"Pekerjaan yang berat apabila kita menikmati pekerjaan tersebut maka pekerjaan akan menjadi mudah dikerjakan dan memuaskan"


"Dalam hidup, ada hal yang datang dengan sendirinya, dan ada hal yang harus diperjuangkan dahulu untuk mendapatkannya."


"Tidak ada satupun di dunia ini, yang bisa di dapat dengan mudah. Kerja keras dan doa adalah cara untuk mempermudahnya."


"Keberhasilan kita di masa depan lebih penting, daripada kepedihan kita di masa lalu."


"Jangan membiarkan masalah bertumpuk sampai akhirnya kamu enggak bisa menyelesaikannya"


"Jangan terlalu berharap apa yang dapat dunia berikan untukmu,Tetapi berikanlah yang terbaik untuk dunia. Niscaya dunia akan menjadi tempat yang lebih indah"


"Memberi adalah wujud perasaan berterima kasih terhadap berkat-berkat yang telah kita terima"


"KASIH ITU MENUTUPI BANYAK KESALAHAN....KASIHILAH MUSUHMU...Bagaimana engkau dapat mengasihi Tuhan yang tidak kelihatan bila manusia yang terlihat saja tidak dapat kau kasihi"


"Orang yang berpikiran positif, dalam kondisi apapun juga selalu memacu dirinya sendiri ke arah yang lebih baik, tanpa terpengaruh oleh kondisi luar, selalu berusaha melihat dari segi positif, dan menjadikan halangan sebagai tantangan untuk maju"


"Bila cintamu tak kunjung tiba sedangkan umur terus menua dan diri beranggapan bahwa pernikahan harus dijalankan demi mendapat pengakuan, jangan ada keraguan untuk melanjutkan asal tanamkan saling pengertian, karena pernikahan seperti ini akan terhindar dari badai kecemburuan"


"Orang malas tidak akan menangkap buruannya,tetapi orang rajin akan memperoleh harta yg berharga"


"Ketika kamu gembira, kegembiraanmu tidak melampaui hakmu.Ketika kamu berkuasa, kamu tidak mengambil sesuatu yang bukan hakmu.” itulah adab orang beriman"


"Orang sukses memiliki kebiasaan melakukan hal yang tidak suka dilakukan oleh orang malas.Orang sukses itu sendiri sebenarnya juga tidak suka melakukannya,tapi ketidaksukaan mereka di taklukkan oleh kekuatan tujuan mereka."


"You Never Change If You Never Try..do it your own way by your self.Dont give up and be a weak until we die.Try to the best things what you got. BECAUSE YOU ARE NOT A LOOSER !!"


"Apapun yang bisa di bayangkan pikiran manusia, serta di yakini dan diusahakannya.. PASTI AKAN TERCAPAI!!!"


"Tanda akal seseorang itu adalah pekerjaannya, dan tanda ilmu seseorang itu adalah perkataannya."


"Gagal dalam kemuliaan adalah lebih baik, daripada menang dalam kehinaan dan kecurangan."


"Bicaralah ketika engkau merasa tak kunjung damai,biarkan teman''di sampingmu setia untuk mendengar semua keluhanmu itu,karena dunia ini tak mungkin selalu ada keluarga yang mampu mendengar semua rasa yang kau pendamkan dalam benak mu.di samping mu masih ada yang punyai derita batin sama seperti mu"


"Tidak ada satupun sifat yang diberikan Tuhan kepada kita, yang tidak pernah berguna."


"Gagal dalam sebuah pertempuran akan lebih ksatria,daripada gagal sebelum sempat menarik pedang"


"Rasa hormat tidak selalu membawa persahabatan, tapi persahabatan tidak mungkin ada tanpa rasa hormat."


"Gagalnya cinta bukanlah gagalnya hidup. Bahkan banyak orang yg berhasil karena ditempa kekecewaan yg sangat mendalam."


"Jangan bersedih jika kamu tidak di hargai, tapi bersedihlah jika kamu tidak berharga lagi."


"Jangan pernah perlihatkan kesedihan kita di depan umum, karena itu tak akan pernah berguna."


"Seorang ibu tidak pernah memintamu untuk meletakkan dunia di tangannya, namun tutur kata yang halus, perangai yang santun, prilaku yang bertanggung jawab dari seorang anak adalah kebahagiaan buat seorang Ibu"


"Berpikir baik-baik sebelum melangkah atau mengucapkan sesuatu, karena bertindak atau berbicara yang tidak tepat waktu dan sasaran justru akan berakibat buruk. Adakalanya kita harus melangkah, adakalanya kita harus diam"


"Jangan pernah berhenti bermimpi...karena tak ada yang mustahil...selama mau berjuang untuk meraihnya"


"Cinta seorang ibu berada tepat di bawah cinta Tuhan kepada kita. “Ibu tidak pernah lelah untuk menyayangi dan mengasihi kita. Cinta nya lebih mulia daripada cinta seseorang dimanapun di dunia ini. I’m sorry Mom! I never meant to hurt you! I never meant to make you cry."


"Tidak menyesali ataupun dendam/marah pada hal-hal yang sudah berlalu, dan tidak menaruh rasa cemas yang berlebihan akan masa mendatang, itulah ketenangan sejati"


"Salah satu hal yang tidak dapat di daur ulang adalah waktu yang telah terbuang. Jadi pastikanlah kamu menggunakan setiap waktumu dengan baik."


"Jangan engkau katakan setiap apa yang engkau ketahui, tapi ketahuilah setiap apa yang engkau katakan."


"Membuang waktu mu untuk melakukan hal yang tidak berguna dapat menghancurkan masa depanmu"

Monday, 25 March 2013

kisi algoritma uas 2012


Best Case
Keadaan yang tercapai jika elemen pada himpunan A disusun secara increasing(menaik). Dengan perbandingan waktu n-1 kali satuan operasi.

Contoh :
Terdapat himp.A yang berisi 4 buah bilangan telah disusun secara increasing A=2,4,5,10.Dengan A(1)= 2,A(2)=$,A(3)=5,A(4)=10.Tentukan / cari bilangan MAX & MIN serta jumlah operasi jumlah operasi perbandingan yang dilakukan.

Penyelesaianya:

Untuk masalah tersebut dapat digunakn procedure STRAITMAXMIN yang menghasilkan bilangan Min = 2 bilangan Max = 10, Operasi perbandingan mencari bilangn Maxmin dari himpunan tersebut= 3 kali operasi.

Worst Case

Terjadi jika elemen dalam himpunan disusun secara decreasing (menurun).Dengan Operasi perbandingan sebanyak 2(n-1)kali satuan operasi.

Contoh:
Mencari elemen MaxMin & jumlah operasi perbandingan yang dilakukan terhadap himpunan A yang disusun decreasing.
A ={80,21,6,-10}.

Penyelesaiannya:

Untuk masalah tersebut dengan proses STRAITMAXMIN adalah elemen max=80 & elemen min= -10, operasi perbandingan untuk elemen Maxmin tersebut adalah 2(4-1)=6 kali satuan operasi.

Average Case

Jika pencarian elemen MaxMin dilakukan pada elemen dalam himpunan yang tersusun secara acak (tidak decreasing / tidak increasing).
Jumlah operasi.Perbandingan yang dilakukan adalah rata-rata wakytu tempuh best case & worst case yaitu 1/2[(n-1)+2(n-1)]=(3 n/2-1) kali.

Contoh:
Pada himpunan A yang berisi {5,-4,9,7}dilakukan pencarian elemen max &min denagn menggunakan proses STRIATMAXMIN.
Tipe Data Sederhana
Tipe data sederhana adalah tipe data yang tidak diturunkan dari tipe data lain. Sering kali tipe data sederhana disebut juga tipe data primitif. Adapun yang termasuk dalam tipe data sederhana adalah tipe data numerik dan boolean.
Tipe data Numerik
Tipe data Numerik digunakan untuk mendeklarasikan variable (identifier) untuk operasi berbasis numerik. Tipe data numerik ada 2 Jenis yaitu integer dan floating point
Tipe data integer ada 5 yaitu
1.      byte
2.      short
3.      int
4.      long
5.      char



Tipe data Floating-Point
Sedangkan tipe data floating point ada 2 yaitu
1.      float
2.      double
Tipe Data Komposit
Tipe data komposit disusun dari tipe data sederhana atau tipe data komposit lain yang sudah ada. Tipe data komposit terdiri dari
1.      String
String di Java direpresentasikan dengan class, bukan array yang berisi karakter (array of character). Kelas string dalam Java dikelompokkan menjadi dua, yait String(konstan atau statis, immutable) dan stringBuffer (dapat diubah atau dinamis, mutable) . Klik disini untuk pembahasan string lebih lanjut
2.      Class
3.      Array
Array adalah bentukan yang menyediakan penyimpanan untuk sejumlah item atau data individu dengan tipe data yang sama. Item-item array dapat berupa data sederhana maupun komposit. Dalam Java array bisa teridiri dari satu dimensi dan multi dimensi. Klik disini untuk pembahasan array lebih lanjut
4.      Interface
Interface adalah prototipe untuk class dan berguna ditinjau dari perspektif rancangan logik. Interface mirip dengan class abstrak, sehingga interface merupakan class abstrak yang sepenuhnya tidak diimplementasikan. Artinya tidak ada method di class tersebut yang telah diimplementasikan. Data anggota interface dapat dipastikan variable final static yang berarti konstanta murni.
Ingerface berisi kumpulan nama method tanpa implementasi aktual. Interface ini menandai kelas mempunyai sekumpulan perilaku sebagai tambahan perilaku yang diterima dari superkelasnya (superclass)

1.       Usaha mengurutkan kumpulan data dalam array disebut ? = Sorting
2. Usaha Pencarian data dalam kumpulan data disebut ? = Searching
3. Pencarian data dengan meneliti data satu per satu dari awal ? = Linear Search
4. Teknik Sort yang bekerja dengan teknik gelembung disebut ? = Bubble Sort
5. Proses pencarian data pada data urut lebih efektif jika menggunakan teknik search ? = Binary Search
6. Himpunan yang disusun secara menaik / increasing akan mengalami keaadaan time complexity yang disebu ? = Best Case
7. Himpunan yang disusun secara acak akan mengalami keadaan time complexity yang disebut ? = Average Case
8. Himpunan yang disusun secara menurun / decreasing akan mengalami keadaan time complexity yang disebut ? = Worst Case
9. Pembagian waktu pada average case / data tak tersusun disebut ? = 3n/2-1
10. Metode yang biasa digunakan untuk melakukan sorting yaitu ? = Selection Sort, Quick Sort, Merge Sort, Bubble Sort
11. Kriteria Array dua dimensi yaitu ? = memiliki baris dan kolom
12. Teknik yang sering digunakan dalam metode search ? = Linear Search dan Binary Search
13. Knapshack Problem dapat diselesaikan dengan cara ?
= Matematika
= Kriteria Greedy
= Algoritma Pemrograman Greedy

14. Arti dari suatu simpul yang tidak dihubungkan dengan suatu ruas apapun dalam menentukan suatu pola lalu lintas dengan jumlah fase minimal adalah ? = Simpul tersebut selalu berlaku lampu hijau.
15. Dalam masalah pewarnaan warna yang dipergunakan sebaiknya ? = Seminimal mungkin
16. Graph yang dihasilkan dalam masalah traveling salesman adalah ? = Graph Tertutup
17. Fungsi Utama / tujuan dalam masalah knapshack adalah ? = Maximum pixi
18. Problem pemberian warna pada semua simpul sehingga 2 simpul yang berdampingan (ada ruas yang menghubungkan kedua simpul tersebut) mempunyai warna yang berbeda disebut ? = Coloring
19. Apa yang disebut dengan Quick Sort ? = yaitu Sorting dengan iterasi secara terurut dari posisi element 1 ke element 2 dan seterusnya
20. Apa yang disebut dengan Bubble Sort ? = yaitu Teknik Sort yang bekerja dengan menggunakan prinsip gelembung udara yang akan bergerak naik keatas secara satu persatu
21. Apa yang dimaksud dengan Selection Sort ? = Tenik sort dengan cara pemilihan element atau proses kerja dengan memilih element data terkecil untuk kemudian dibandingkan dan ditukarkan dengan element pada data awal dan seterusnya sampai dengan seluruh element sehingga akan menghasilkan pola data yang telah disort
22. Pemberian warna yang sama pada coloring terjadi apabila ? = Simpul tidak berdampingan
23. Pemberian warna yang tidak sama pada coloring terjadi apabila ? = Simpul berdampingan
24. Permasalahan bagaimana mengoptimalisasi storage / memory dalam computer agar data yang disimpan dapat termuat dengan optimal disebut ? = Optimal storage on tapes problem
25. Algoritma yang digunakan untuk mencari ruas terpendek yang menghubungkan setiap simpul dalam graph adalah ? = Shortest Path Problem
26. ALgoritma untuk mencari waktu tempuh perjalanan terpendek dan kembali ke simpul awal adalah ? = Traveling Sallesman
27. Kriteria Knapshack Problem adalah ?
= minimum weight (berat terkecil) = wi
= maximum profit (profit terbesar) = pi
= maximal profit/weight = pi/wi
28. Ciri – cirri graph minimum spanning tree adalah ?
a. Setiap ruas graph tidak saling berhubungan
b. Setiap ruas memiliki nilai
c. Setiap ruas tidak memiliki arah
29. Pencarian max dan min akan mendapatkan best case jika data yang diurutkan ? = secara increasing / urut menaik
30. Dalam pencarian binary (bagi dua) dengan data terurut ascending ,algoritma yang benar adalah ?
= jika x= jika x>a[mid] maka low = mid+1
= jika a[mid]31. Fungsi tujuan Knapshack Problem adalah ? = untuk mendapatkan solusi yang optimal dengan mencari profit yang maximal

32. Greedy By Densitas adalah ? = Pilih barang dengan perbandingan nilai dan berat yaitu pi/wi terbesar
33. Salah satu contoh penerapan coloring graph adalah ? = menentukan pola lalu lintas dengan fase minimal
34. Teknik pencarian yang hanya bisa melakukan proses pencarian apabila datanya urut adalah ? = Binary Search
35. Jumlah perbandingan yang dilakukan untuk worst case adalah ? = 2(n-1)
3
6. Hal yang mempengaruhi kecepatan algoritma sort adalah ? = jumlah operasi
37. Nilai middle adalah ? = (low + high)div2
38. Graph yang dihasilkan minimum spanning tree adalah ? = graph tertutup
39. Diket Data : 2 22 10 15 3 8
Jika menggunakan Bubble sort maka iterasi ke 2 keadaan data menjadi ?
= 2 3 22 10 15 8
40. Diket data : 5 3 4 2 1
Jika menggunakan insertion sort maka iterasi ke 3 adalah ?

= 3 4 5 2 1


PERTEMUAN 9

Soal Logika dan Algoritma Semester I B
1. Kumpulan elemen-elemen yang terurut dan memiliki tipe data yang sama disebut :
a. Rekursif >c.Array e. Direktori
b. Record d. File

2. int nilai [6];
Variabel nilai dalam statment diatas merupakan :
a. Tipe data c. Jumlah baris e. Jesnis Data
>b. Nama Array d. Jenis Array

3. Sebuah matriks dideklarasikan sebagai berikut:
int nilai [3][4];
Jumlah elemen dari matriks tersebut adalah:
a. 7 c. 3 e. 8
b. 4 >d. 12


4. Pada array dua dimensi dengan ordo 4 x 4, dengan kondisi A[i,j]=1, jika i<=j, A[i,j]=j, jika i>j dari pernyataan diatas nilai dari A[3,2] adalah :
a. 1 > c. 3 e. 6
b.2 d. 4

5. Dibawah ini merupakan hal-hal yang harus dikemukakan dalam mendeklarasikan suatu bentuk array, kecuali :
>a. Tipe array c. Ukuaran Array e. Ukuran Data
b. Tipe Data d. Nama Array

6. Tehnik dalam memilih dan menyeleksi sebuah elemen dari beberapa elemen yang ada disebut :
> a. Searching c. Devide
b. Sorting d. Conquer

7. Algoritma pencarian elemen Maximal dan Miumimal dengan Linier / Squential Search disebut :
>a. Strait MaxMin c. D and C
b. Binary Search d. Knapsack

8. Bila Terdapat deret data atau angka sebanyak 950 buah dan kita akan melakukan pencarian data pada deret tersebut dengan teknik linier search, maka akan membutuhkan waktu maksimal :
a. 400 kali c. 470 kali
>b. 95 kali d. 950 kali

9. Pencarian data dengan meneliti data satu persatu dari posisi awal dikenal dengan istilah :
a. Binary Searching >c. Sequential Searching
b. Randon Searching d. Binari Searching

10. Teknik yang digunakan untuk mencari suatu data pada himpunan data yang tersusun secara urut dengan cara membagi urutan himpunan menjadi 2 bagian adalah :
a. Sequential Search >c. Binary Search
b. Fibonacci Search d. D and C Search

11. Hal yang mempengaruhi kecepatan algoritma sort adalah :
>a. Jumlah operasi perbandingan dan jumlah operasi pemindahan data.
b. Jumlah operasi pembagian dan jumlah operasi pemindahan data.
c. Jumlah operasi perhitungan.
d. Jumlah operator

12. Teknik Devide dan Conquer digunakan dalam memecahkan masalah antara lain :
a. Array c. Matrix
b. MaxMin >d. Sorting dan Searching

13. Membagi n input menjadi k subset input yang berbeda (1<k≤n). dari="" k="" subset="" yang="" berada="" akan="" terdapat="" subproblem="" dan="" setiap="" mempunyai="" solusinya="" masing-masing.="" hali="" ini="" merupakan="" prinsip="" dasar="" :
>a. D and C c. Sorting
b. Searching d. Rekursif

14. Usaha untuk mengurutkan kumpulan-kumpulan data dalam suatu array disebut :
a. Searching c. Devide
>b. Sorting d. Conquer

15. Berikut ini adalah metode yang digunakan pada teknik sorting , kecuali :
a. Bubble >c. Fibonacci
b. Heap d. Insertion

16. Metode Greedy dapat digunakan untuk menyelesaikan masalah dibawah ini, kucuali :
a. Knapsack Problem >c. Faktorial
b. Shortest Path Problem d. Minimum Spanning Tree

17. Permasalahan bagaimana mengoptimalisasi storage / memory dalam computer agar data yang disimpan dapat termuat dengan optimal merupakan permasalahan dari :
a. Knapsack Problem c. Minimum Spanning Tree
b. Sortes Path Problem >d. Optimal On Tape Storage

18. Misal terdapat 3 buah program (n=5) yang masing-masing mempunyai panjang program (l1, l2,l3,l4,l5)=(15,8,10,23,9). Tentukan urutan penyimpanannya :
a. l4,l1,l3,l5,l2 c. l2,l4,l3,l1,l5
>b. l2,l5,l3,l1,l4 d. l4,l1,l2,l5,l1

19. Penyelesaian knapsack dengan konsep dibawah ini, kecuali :
a. Pilih objek dengan nilai Pi maximal c. Pilih objek dengan PiWi maximal
b. Pilih objek dengan berat Wi minimal >d. Pilioh objek dengan berat Wi maximal

20. Dalam kasus menentukan objek yang akan dimuat dalam suatu kantong masing-masing obejek dari n objek tersebut harus mempunyai :
>a. Berat dan Profit c. Profit dan Panjang
b. Berat dan Panjang d. Panjang dan LebarMenghitung.

21. Menghitung jarak satu persatu sesuai dengan arah dan graph yang ditunjuk oleh tiap-tiap ruas / edge dan dilakukan terhadap ruas dari graph yang memiliki jalur awal dan jalur akhir adalah proses untuk mendapatkan solusi optimal dari permasalahan :
a. Knapsack c. Knapsack Problem
b. Shortest Path Problem >d. Minimum Spanning Tree

22. Short Path Problem digunakan untuk mencari :
a. Terpanjang c. Terlama
>b. Terpendek d. T erdepan

23. Penyelesaian kasus knapsack problem, yang paling optimal efektif dan efisien adalah dengan cara :
a. Matematika c. Kriteria Greedy
>b. Algoritma Greedy d. Pemrograman Greedy

24. Graph yang nantinya dihasilkan dalam masalah TRAVELINGSALESMAN adalah :
a. Graph Terbuka c. Graph semi ter tutup
b. Graph Sederhana >d. Graph Tertutup

25. Fungsi utama / tujuan dari masalah Knapsack adalah :
>a. Maksimum ∑PiXi c. Minimum ∑PiWi
b. Maksimum ∑PiWi d. Minimum ∑PiWi

26. Arti dari simpul yang tidak dihubungkan dengan suatu ruas apapun dalam menentukan pola lalu lintas dengan jumlah fase minimal adalah :
a. Simpul tersebut selalu berlaku lampu merah
b. Simpul tersebut selalu berlaku lampu merah/hijau
c. Simpul tersebut selalu berlaku lampu kuning
>d. Simpul tersebut selalu berlaku lampu hijau
e. Simpul tersebut selalu berlaku lampu hijau / kuning

27. Dalam masalah pewarnaan, banyaknya warna yang dipergunakan sebaiknya :
>a. Seminimal mungkin c. Semaksimal mungkin e. Tidak ada
b. Seoptimal mungkin d. Tidak ditentukan

28. Dalam masalah pewarnaan, warna yang sama akan diberikan bila :
> a. Simpul tidak berdampingan c. Simpul tidak terhubung oleh ruas e. Simpul tidak beruas
b. Simpul berdampingan d. Simpul terhubung oleh ruas

29. Dalam masalah pewarnaan, warna yang berbeda akan diberikan bila :
a. Simpul tidak berdampingan c. Simpul tidak terhubung oleh ruas e. Simpul tidak beruas
> b. Simpul berdampingan d. Simpul terhubung oleh ruas

30. Untuk menentukan pola lalulintas dengan jumlah Fase Minimal merupakan contoh kasus dari problem :
a. Minimum Spanning Tree .>c. Colloring
b. Sort Path Problem d. Traveling Salesman

sola dan latihan logika algoritma 2
08:56 | Diposkan oleh homeland321 | | Edit Entri



1. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut:
a. Proses
b. Program
c. Prosesor
*d. Algoritma
e. Logika

2. Suatu prosedure yang hanya akan berhenti jika mempunyai atau menghasilkan solusi sedangkan tidak menghasilkan solusi maka prosedur tersebut akan berjalan tanpa henti disebut:
a. Programming language
b. Algoritma
*c. Semi algoritma
d. Procedure
e. function

3. Diberikan P=6, Q=7, R=8 dan diberikan instruksi P=Q;Q=R maka nilai P, Q dan R saat ini adalah
a. 6,7,8
b. 7,8,6
c. 8,6,7
d. 7,8,7
*e. 7,8,8

4. Struktur percabangan yang tidak menggunakan syarat menggunakan perintah
*a. goto
b. if…then
c. select…case
d.while
e. if …then…else

5. Rekursif adalah
a. suatu prosedur yang dipanggil
b. suatu proses yang memanggil prosedur lainnya
*c. suatu proses yang bisa memanggil dirinya sendiri.
d. Suatu prosedur looping.
e. suatu prosedur yang dipanggil dari prosedur lainnya.

6. Penjadwalan kuliah dapat diselesaikan dengan cara
*a. colouring
b. minimum spanning tree
c. knapsack problem
d.short path problem
e. travelling salesman

7. Algoritma yang digunakan untuk mencari ruas terpendek untuk menghubungkan setiap simpul dalam graph?
a. coloring
b. minimum spanning tree
c. Travelling salesman
*d. short path problem
e. knapsack problem

8. Algoritma untuk mencari waktu tempuh perjalanan terpendek dan kembali ke simpul awal:
*a. Travelling sallesman
b. minimum spanning tree
c. knapsack problem
d. short path problem
e. colouring

9. ciri-ciri graph dalam minimum spanning tree, kecuali
*a. graph tidak boleh tertutup
b. graph boleh tertutup
c. setiap ruas graph memiliki nilai
d. setiap ruas pada graph tidak memiliki arah.
e. setiap simpul terhubung oleh ruas

10. Perhatikan gambar berikut, berapakah jarak/ruas paling minimum untuk menghubungkan semua simpul pada graph. (gunakan minimum spanning tree)
a. 26


*b. 23
c. 30
d. 18
e. 24






11. Berikut ini kriteria Knapsack problem adalah
*a. minimum weight
b. maximum weight
c. minimum profit
d. minimum profit/weight
e. zero profit

12. Pencarian max dan min akan mendapatkan best case jika data yang di urutkan.
*a. urut naik
b. urut turun
c. data acak
d. data urut naik dan turun
e. data diawal harus lebih besar dari data terakhir


13. Dalam pencarian biner (bagi dua) dengan data terurut ascending. Berikut ini algoritma yang benar, kecuali :
a. jika X < A[mid] maka high = mid-1 b. jika X > A[mid] maka low = mid+1
*c. jika X > A[mid] maka high = mid+1
d. jika A[mid] < X ,maka low = mid+1 e. jika X > A[high] maka pencarian gagal

14. Diketahui data: 2 22 10 15 3 8
jika dikerjakan dengan Bubble Sort, maka iterasi ke 2 keadaan data menjadi:
a. 2 22 10 15 3 8
b. 2 3 22 10 15 8
c. 2 3 8 10 15 22
*d. 2 3 8 22 10 15
e. 2 3 8 15 10 22

15. Di ketahui data sebagai berikut:
5 3 4 2 1
dengan insertion sort, hasil iterasi ke 3 adalah:
a. 3 5 4 2 1
*b. 2 3 4 5 1
c. 3 4 5 2 1
d. 1 2 3 4 5
e. 3 4 5 1 2

16. Berapa banyak operasi perbadingan pada kondisi worst case pada proses STARITMAXMIN
*a. 2(n-1)
b.2n-1
c.n-1
d.3n/2 - 1
e.3/2n -1


17. Prinsip kerja bubble sort adalah sebagai berikut, kecuali
a. Pengecekan dimulai dari data ke 1 sampai data ke n
b. Membandingkan data ke-n dengan data sebelumnya (n-1)
c. Data dipindahkan bila bilangan yang dibandingkan lebih kecil dengan angka didepannya.
d. data tidak dipindahkan bila bilangan yang dibandingkan lebih kecil dengan angka didepannya.
*e. data tidak dipindahkan bila bilangan yang dibandingkan lebih besar dengan angka didepannya.

18. Prinsip kerja ascendingn quick sort adalah sebagai berikut, kecuali
a. menentukan lower bound
b. menentukan upper bound
c. tukarkan nilai lower bound bila lebih besar dari nilai upper bound
*d. tukarkan nilai lower bound bila lebih kecil dari nilai upper bound
e. jika lower bound lebih kecil sama dengan dari upper bound maka tidak ditukar.

19. Kumpulan Elemen – Elemen yang terurut dan memiliki tipe data yang sama disebut:
a. Rekursif           d. File
b. Record             e. Direktori
*c. Array

20. Pada Array 2 Dimensi dengan Ordo 4x4, dengan kondidsi A[I,J] = I , Jika I <= J, A[I,J] = J, Jika I>J Dari pernyataan diatas nilai dari A[2,2] adalah :
a. 1         d. 4
*b. 2      e.6
c. 3

21. Ada berapa simpul yang harus dibuat bila diselesaikan dengan colouring
a. 4         *d. 12
b. 8         e. 16
c. 10

22. Ada berapa simpul yang tidak dihubungkan dengan ruas
a. 1         *d. 4
b. 2         e.6
c. 3

23. Ada berapa ruas yang keluar dari tiap simpul
a. 1         *d. 4
b. 2         e. 5
c. 3

24. Bila fase perjalanan AC hijau maka perjalanan yang akan hijau adalah
a. DB,BD,CB,BA                 d. DB,BD,CB,BC
b. DA,AB,CD,BA                 e. DB,BD,CA,CD
*c. DA,AB,CD,BC



25. Ada berapa fase yang terbentuk untuk menyelesaikan permasalahan tersebut
a. 3         d. 6
*b. 4      e. 7
c. 5

26. Arti simpul yang dihubungkan ruas adalah
*a. Perjalanan saling melintas
b. Perjalanan tidak saling melintas
c. Perjalanan berdampingan
d. Perjalanan tidak berdampingan
e. Perjalanan tidak melewati persimpangan

27. Syarat pemberian warna pada colouring adalah
a. simpul yang berdampingan diberi warna yang sama.
*b. simpul yang berdampingan diberi warna berbeda .
c. simpul yang tidak dihubungkan ruas diberi warna.
d. Simpul yang tidak melintas diberi warna yang sama.
e. Simpul yang saling melintas diberi warna yang sama.

28. Sebuah matriks yang dideklarasika
int j [2] [4]
Jumlah elemen matriks tersebut adalah:
a. 2         *d. 8
b. 4         e.10
c. 6

29. Hal yang mempengaruhi kecepatan algoritma pengurutan data adalah
a. Jumlah data yang dimasukkan
*b. Jumlah operasi perbandingan
c. Jenis data yang dimasukkan
d. Bahasa program yang digunakan
e. Sistem operasi yang digunakan

30. Membagi n input menjadi k subset input yang berbeda ( 1 < k < n ) . Dari k subset yang berbeda akan terdapat k subproblem dan setiap subproblem mempunyai solusinya masing-masing . Hal ini merupakan prinsip dasar dari :
*a. D and C
b. Searching
c. Sorting
d. Rekursif
e. Branching

Kunci Jawaban

DCEACADAAB
AACDBAEDCB
DDDCBABDBA </k≤n).>

RUMUS AKUTANSIN

HPP (Harga Pokok Penjualan)
HPP = Persediaan barang dagang awal + Pembelian bersih - Persediaan barang dagang akhir
Rinciannya ---> persediaan barang dagang awal + pembelian + biaya angkut - retur pembelian - persediaan barang dagang akhir - potongan pembelian

Pembelian Bersih
pembelian + biaya angkut - retur pembelian - potongan pembelian

Persediaan Barang Dagang
HPP - barang yang tersedia untuk dijual

Barang yang Tersedia Untuk Dijual
persediaan barang dagang awal + pembelian + biaya angkut - retur pembelian

Laba Kotor
penjuala bersih - HPP

Laba Bersih 
laba kotor - beban beban + pendapatan bunga

Modal Akhir
modal akhir + laba - prive

Penjuala Bersih
penjuala - potongan penjualan - retur penjualan

Laba Bersih Sebelum Pajak
penjualan bersih - laba kotor

3/10 , n/30
Kode faktur diatas memiliki arti sebagai berikut :
Bila pembayaran dilakukan dalam waktu kurang dari/tepat 10 hari, maka akan memperoleh potongan sebesar 3%. Namun, bila pembayaran dilakukan lewat dari 10 hari, maka tidak akan mendapatkan potongan. Dan, faktur berlaku selama 30 hari.

Wednesday, 20 March 2013

Contoh Program Sederhana Bahasa Pemograman C++ menggunakan IF,ealse,strcpy moga bermanfaat.

Contoh Program Sederhana Bahasa Pemograman C++ menggunakan IF,ealse,strcpy moga bermanfaat.

#include
#include
#include
main()
{
char nama[30],nabar[20],kode,gudang[20],satuan[20],bonus[20];
long harga,jumbel,ubay,ukem,total,bayar;
clrscr();
cout<<"Toko bangunan Adi Jaya Semesta\t"<cout<<"\tHP : 08569968234"<cout<<"_________________________________"<cout<<"Nama petugas :";cin>>nama;
cout<<"kode barang[a/b/c] :";cin>>kode;
cout<<"_________________________________"<if(kode=='a'||kode=='A')
{
strcpy(nabar,"Semen");
strcpy(satuan,"Sak");
harga=50000;
}
else if(kode=='b'||kode=='B')
{
strcpy(nabar,"Pasir");
strcpy(satuan,"colt");
harga==100000;
}
else if(kode=='c'||kode=='C')
{
strcpy(nabar,"Batu");
strcpy(satuan,"Buah");
harga=1000;
}
else
{
strcpy(nabar,"tidak ada");
strcpy(satuan,"tidak ada");
harga=0;
}
cout<<"Nama Petugas :"<cout<<"kode Pilihan :"<cout<<"Nama Barang :"<cout<<"Satuan :"<cout<<"Harga :"<cout<<"Jumlah Beli :";cin>>jumbel;
bayar=harga*jumbel;
cout<<"Total Bayar :"<if(bayar>=100000)
{
strcpy(bonus,"baju");
}
else if(bayar>=500000)
{
strcpy(bonus,"Kaos kaki");
}
else if(bayar<500000)
{
strcpy(bonus,"gak Dapet");
}
cout<<"bonus :"<cout<<"Uang Bayar :";cin>>ubay;
ukem=ubay-bayar;
cout<<"Uang Kembali :Rp."<getch();
}

strcmp

strcmp(string1, string2);
Sebagaimana yang telah dijelaskan diatas, bahwa fungsi "strcmp" melakukan perbandingan antara string1 dengan string2 dan hasil perbandingannya berupa nilai bulat. Dalam proses penentuan hasil selisih kedua data string tersebut, fungsi "strcmp" melakukan perbandingan dan mencari selisih antara karakter indek-n pada string1 dan karakter indeks-n pada string2 (karakter indeks yang sama pada string1 dan string2) dan proses perbandingan dimulai pada indeks ke-0. apabila selisih kedua karakter tersebut bernilai 0 (=0) artinya tidak terdapat perbedaan = sama, maka perbandingan akan dilakukan ke indeks selanjutnya. Namun apabila pada indeks terdahulu hasil selisih kedua karakternya bernilai bukan 0 (!=0) artinya kedua data string tersebut tidaklah sama, sehingga untuk perbandingan indeks selanjutnya akan diabaikan.
Contoh :
 
 
Dan hasinya : 
 

 
 
Amatilah setiap hasil selisih dari huruf yang anda input.

Dan sebagai contoh penggunaannya dalam menyeleksi/membandingkan 2 buah data berupa string :
Dan Hasilnya :
 
Semoga Bermanfaat...!! (worship)

Saturday, 16 March 2013

DASAR – DASAR SQL (Structured Query Language)

DASAR – DASAR SQL (Structured Query Language)

SQL adalah bahasa standar dalam basis data yang digunakan untuk melakukan manipulasi data (merupakan bahasa pemrograman/query standart yang digunakan untuk mengakses basis data relasional). Standardisasi bahasa ini dilakukan oleh ANSI (American National Standards Institution) tahun 86, 89, 92 dan 99, dimana tiap perubahan tahun dilakukan peningkatan kemampuan SQL.
Pada perkembangan saat ini standar yang paling banyak digunakan adalah standar ANSI 92. Hampir semua DBMS menggunakan SQL sebagai fasilitas untuk memanipulasi data seperti Oracle, SQLServer, MySQL, PostgreSQL, Foxpro dsb.
Meskipun awalnya hanya merupakan bahasa untuk memanipulasi data, pada perkembangannya SQL juga dapat digunakan untuk melakukan definisi data maupun control (security) terhadap data.
Sehingga bahasa Query ini dibagi menjadi 3 bagian :
1. DDL (Data Definition Language)
• Membuat database (CREATE DATABASE)
• Menghapus database (DROP DATABASE)
• Menciptakan tabel (CREATE TABLE)
• Menghapus tabel (DROP TABLE)
• Mengubah tabel (ALTER TABLE)
2. DML (Data Manipulation Language)
• Menambah record (INSERT INTO)
• Melihat isi tabel (SELECT)
• Menganti isi record (UPDATE)
• Menghapus record (DELETE)
3. DCL (Data Control Language): kelompok perintah yang dipakai untuk melakukan otorisasi terhadap pengaksesan data dan pengalokasian ruang.
Misal: suatu data bisa diakses si A, tetapi tidak bisa diakses oleh si B
• GRANT
• REVOKE
• COMMIT
• ROLLBACK
TIPE DATA
Setiap data memiliki tipe data. Tipe data menurut dalam SQL, antara lain:
Tipe Data Keterangan
CHAR atau CHARACTER – Menyatakan deretan karakter (huruf, bil, tanda baca, karakter khusus (ex:enter)) atau String
- Biasanya lebarnya ttt / tetap, mk biasanya dipakai sbg kunci primer (NIP, NIM),ttp tdk sbg kunci primer juga bisa (Jurusan, lebarnya 2 digit: MI, TI)
- Cara nulisnya diapit tanda petik bisa tunggal ’-’ atau ganda ”-”
VARCHAR – Untuk menyatakan string dengan panjang tidak tetap (nama, alamat, dll)
- Lebih boros penyimpanan di memori
- Cara nulisnya diapit tanda petik bisa tunggal ’-’ atau ganda ”-”
DECIMAL atau DEC Bilangan pecahan, ttp formatnya lebih jelas ex: 5,2 (—,–) shg tampilan dilayar lebih rapi dibanding float dan double (tergantung nilainya)
INTEGER atau INT – Menyatakan tipe data bilangan bulat, defaulnya max 11 karakter
- Bisa dipakai untuk operasi matematis
- Tdk operasi matematis juga bisa (ex:tinggi badan)
SMALLINT Menyatakan tipe data bilangan bulat yang jangkauannya lebih kecil dari pada INTEGER
FLOAT Tipe data bilangan real/pecahan, lebar dibelakang koma 17 karakter
DOUBLE Tipe data bilangan real/pecahan dengan presisi/teliti lebih tinggi dari pada FLOAT, lebar dibelakang koma sampai 30 digit
DATE Untuk menyatakan tanggal (th-bl-tgl)
TIME Untuk menyatakan waktu
ex: jam chek In, chek Out di hotel
TIMESTAMP Untuk menyatakan tanggal dan waktu
BLOB Untuk menyatakan data biner yang berguna untuk menyimpan gambar atau suara
AUTO-INCREMENT Untuk menyatakan data yang akan dinaikkan sebesar satu secara otomatis
BOOLEAN Untuk menyatakan tipe nalar yi benar atau salah
ENUM Untuk mendefinisikan data yang mempunyai kemungkinan nilai tetentu
KONSTANTA
Konstanta menyatakan nilai yang tetap. Beberapa contoh konstanta:
• Konstanta numerik : 145, -145, 27.5 (tanda pecahan pada suatu angka berupa titik)
• Konstanta string : ’Jl. Solo km.14, Kalasan, DIY’ (ditulis dengan awalan dan akhiran petik tunggal)
• Di dalam konstanta string, tanda \ diikuti dengan karakter tertentu mempunyai makna khusus. Lihat tabel di bawah ini
Penulisan Keterangan
Karakter dengan ASCII = 0 (karakter ke 0 dari tabel ASCII=256 karakter)
\’ Karakter petik tunggal
\” Karakter petik ganda
\b Karakter backspace
\n Newline (pindah baris)
\r Carriage return (karakter enter)
\t Tab
\\ Backslash
Jika ingin menuliskan string :Jum’at, maka penulisannya di mySql : ’Jum\’at’
EKSPRESI
Ekspresi adalah segala sesuatu yang menghasilkan nilai. Contoh:
0.1 * TOTAL_BAYAR
merupakan ekspresi untuk menghitung diskon sebesar 10%
Operator Aritmetika menurut prioritas pengerjaan dari yang tertinggi ke yang terendah
Operator Keterangan
* Perkalian
/ Pembagian
% Sisa pembagian (hanya digunakan untuk bilangan bulat)
+ Penjumlahan
- Pengurangan
Contoh:
1. Select 2+4*5/2;
hasilnya: 12
2. Select (2+4)*5/2;
hasilnya: 15
3. Select 5%2
hasilnya : 1
4. Select 5%3
hasilnya: 2
MySQL adalah
• database server, dapat menyimpan sejumlah database
• diakses oleh program client (MySQL Command Line Client, aplikasi Java, dll)
• akses dengan bahasa SQL (structured query language)


MySQL server dapat diaktifkan (dilihat) lewat
Start > Setting > ControlPanel > Administrative Tools > Services
Klik Start the service, sehingga kolom Status menjadi started
atau lewat:
Klik Start > All Program > AppServ > Control Server by Service > MySQL Start
Menjalankan program MySQL Command line Client
Klik Start > All Programs > AppServ > MySql Command Line Client
Anda akan mengakses MySQL dari client, dengan user root.
• root adalah superuser database server MySQL.
• root berkuasa dalam mengelola manajemen database.
masukkan password: root (default)
setelah dimasukkan password, akan muncul tampilan:
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.51b-community-nt-log MySQL Community Edition (GPL)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>
Keluar dari program MySQL Command line Client
salah satu dari ini:
mysql> EXIT
mysql> QUIT
mysql> \q
Catatan: semua perintah pada prompt mysql harus diakhiri dengan titik koma (;)
Melihat database:
mysql> SHOW DATABASES;
Hasil:
mysql> show databases;
+———-+
| Database |
+———-+
| mysql |
| test |
+———-+
2 rows in set (0.03 sec)
mysql>

Koneksi ke database
Sebelum menggunakan program MySQL, kita harus mengakses basisdata nya terlebih dahulu, dengan perintah
USE nama_basisdata
contoh:
mysql> use akademik;
tanggapan mysql:
Database changed
Melihat tabel:
mysql> SHOW TABLES;
Hasil:
mysql> show TABLES;
+——————–+
| Tables_in_akademik | |
+——————–+
| mhs |
| krs |
+——————–+
2 rows in set (0.03 sec)
mysql>
Melihat struktur tabel
mysql> describe mhs;
Hasil:
mysql> describe mhs;
+———+—————+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+—————+——+—–+———+——-+
| nim | char(9) | NO | PRI | NULL | |
| nama | varchar(30) | YES | | NULL | |
| kelamin | enum(‘L’,'P’) | YES | | NULL | |
| tglahir | date | YES | | NULL | |
| jurusan | char(2) | YES | | NULL | |
| ipkum | decimal(3,2) | YES | | NULL | |
+———+—————+——+—–+———+——-+
6 rows in set (0.03 sec)

MENGENAL OPERASI DASAR SQL
1. DDL (Data Definition Language)
DDL merupakan bahasa yang digunakan untuk membuat atau memodifikasi database dan tabel,
Perintah DDL a.l:
a. CREATE Untuk membuat
Syntak :
- membuat database
CREATE DATABASE nama_database
- membuat tabel
CREATE TABLE nama_tabel ( field1 type_data1 (lebar_data1), field2 type_data2 (lebar_data2)
- Apabila akan menambahkan konstrain integritas PRIMARY KEY maka syntaknya adalah sbb :
CREATE TABLE nama_tabel ( field1 type_data1 (lebar_data1) PRIMARY KEY, field2 type_data2 (lebar_data2))
- Catatan : yang akan dijadikan primary key adalah field1
Misal :CREATE TABLE mahasiswa (nim char(10), nama char(30), jurusan char(2), ipk decimal(4,2))
- Mengatur agar data selalu diisi
Saat menciptakan tabel, pada field ditambah pemodifikasi NOT NULL
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR NOT NULL ,
Jumlah INTEGER,
PRIMARY KEY(kode)
);
Maka pada saat mengisi ke tabel Barang field Kode, Nama, Jenis harus diisi, sedangkan field Jumlah tidak harus diisi (boleh diisi boleh tidak)
- Menentukan kunci primer
dengan menyertakan PRIMARY KEY.
- Membuat kunci komposit
Untuk kunci yang tersusun lebih dari satu kolom.
CREATE TABLE DetilJual (
NoNota CHAR(3),
Kode CHAR(3),
Jumlah INTEGER UNSIGNED,
PRIMARY KEY(NoNota, Kode));
Ctt: tipe Integer lebarnya boleh diisi boleh tidak, kalau diisi maksimum 11 karakter, kalau tidak defaulnya 11 karakter.
Tipe Integer Unsigned (bilangan bulat positif)
- Memberi Nilai Bawaan
Jika suatu kolom tidak diberi nilai, bisa dikehendaki untuk dapat diberi nilai bawaan.
Dengan kata kunci DEFAULT.
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR,
Jumlah INTEGER DEFAULT 0);
Ctt: kalau jumlah tidak diisi maka akan diisi defaultnya yi 0 atau:
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR DEFAULT MI,
Jumlah INTEGER DEFAULT 0);
kalau jenis tidak diisi maka akan diisi defaultnya yi MI (minuman)
- Memberi nilai yang unik
Sebenarnya kunci primer juga bertindak sebagi penjamin bahwa nilai suatu kolom akan bersifat unik (tdk kembar). Namun, kadangkala diperlukan agar suatu kolom yang tidak berfungsi sebagai kunci primer juga bersifat unik. Hal ini dapat dilakukan dengan memberikan kekangan UNIQUE pada kolom yang bersangkutan. Contoh
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL PRIMARY KEY,
Nama VARCHAR(20) NOT NULL UNIQUE,
Jenis CHAR,
Jumlah INTEGER DEFAULT 0);
Penambahan kata UNIQUE pada kolom nama menyatakan bahwa tidak boleh ada nama barang yang sama
- Perbedaan PRIMARY KEY dan UNIQUE
PRIMARY KEY UNIQUE
Dalam sebuah tabel, keberadaannya hanya bisa satu kali Sejumlah kolom yang unik bisa didefinisikan
Kolom-kolom yang menjadi kunci primer tidak boleh berisi NULL Kolom yang didefinisikan sebagai kolom unik boleh berisi NULL sepanjang kolom tidak didefinisikan sebagai NOT NULL
b. DROP Untuk menghapus :
Syntak :
- menghapus database
DROP DATABASE nama_database
- menghapus tabel
DROP TABLE nama_table
c. ALTER Untuk memodifikasi tabel
Syntak :
- menambah field baru
ALTER TABLE nama_tabel ADD [COLUMN] field_baru type_data(lebar_data)
Misal :
ALTER TABLE mahasiswa ADD [COLUMN] alamat varchar(30)
- menghapus field
ALTER TABLE nama_tabel DROP [COLUMN] field_yang_dihapus
Misal :
ALTER TABLE mahasiswa DROP COLUMN alamat atau
ALTER TABLE mahasiswa DROP alamat
- mengedit / mengganti field
ALTER TABLE nama_tabel CHANGE [COLUMN] field_lama field_baru type_data(lebar_data)
Misal :
ALTER TABLE mahasiswa CHANGE nama nama_mhs char(40)
- Mengubah struktur tabel
mysql> alter table mhs modify nama varchar(35);
artinya: mengubah tipe field nama menjadi varchar(35)
2. DML (Data Manipulation Language)
DML merupakan bahasa untuk memanipulasi data (menambah, membaca/menampilkan, mengedit, menghapus)
Perintah DML a.l :
a. INSERT INTO: Untuk Menambah data baru/record/baris/row
Syntak :
INSERT INTO nama_tabel (field1, field2, …) VALUES (value1, value2,…).
Field dan value harus berjumlah sama dan masing-masing berpasangan, artinya : value1 akan diisikan ke field1, value2 akan diisikan ke field2,dst.
Misal:
create table mhs (
nim char(9) not null,
nama varchar(30),
kelamin enum(‘L’,'P’),
tglahir date,
jurusan char(2),
ipkum decimal(3,2),
primary key(nim)
);
INSERT INTO mhs (nim,nama,kelamin, tglahir,jurusan,ipkum)VALUES(‘05023562’,’TOTOK’,’L’,’1991-06-11’,’TI’, 2.45);
atau kalau semua field mau diisi, nama fieldnya tidak perlu ditulis
mysql> insert into mhs
values(’067890001′, ‘Agus Sugiarto’, ‘L’, ’1990-08-17′, ‘TI’, 2.56);
Cobalah untuk mengisi beberapa record lagi. Ingat! nim tidak boleh sama dan harus diisi (krn not null).
Menambah record tetapi hanya field nim, nama, dan kelamin yang diisi:
mysql> insert into mhs(nim, nama, kelamin) values(’067890003′, ‘Amir Hamzah’, ‘L’);
CREATE TABLE Barang (
Kode CHAR(3) NOT NULL,
Nama VARCHAR(20) NOT NULL,
Jenis CHAR(1) NOT NULL ,
Jumlah INTEGER,
PRIMARY KEY(kode)
);
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’001′, ‘Beras’, ‘M’, 10);
Jika tidak ingin untuk memasukkan data ke kolom Jenis (Kode,Nama,Jenis: semua NOT NULL)
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’001′, ‘Beras’, NULL, 10);
perintah ini akan ditolak: krn jenis tdk diisi padahal harus diisi/NOT NULL (tidak boleh kosong)
Tetapi kalau jenis diisi ’null’ pakai tanda petik, perintah ini akan diterima karena dianggap karakter
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’001′, ‘Beras’, ’NULL’, 10);
Atau perintah di bawah ini, juga akan ditolak: krn nama, jenis tidak diisi (padahal not null : tdk boleh kosong)
INSERT INTO Barang (Kode, Jumlah)
VALUES (’006′, 12);
Maka yang benar:
INSERT INTO Barang (Kode, Nama, Jenis, Jumlah)
VALUES (’006′,’Buku’,’alat tulis’,12);
Tetapi kalau field Jumlah tidak diisi maka field jumlah tidak usah ditulis (krn jumlah boleh kosong/bukan NOT NULL)
INSERT INTO Barang (Kode, Nama, Jenis)
VALUES (’006′,’Buku’,’alat tulis’);
atau ditulis juga bisa
INSERT INTO Barang (Kode, Nama, Jenis,jumlah)
VALUES (’006′,’Buku’,’alat tulis’,null);
Dengan menggunakan sebuah INSERT, kita bisa menambahkan sejumlah baris yang berasal dari hasil qeury. Sekarang dicoba membuat tabel baru bernama barangbr dengan perintah sbb:
create table barangbr (
Kd_brg char(3),
nama varchar(10),
Jenis char(1);
dengan menggunakan INSERT, semua data barang, dengan jenis M (jenis ttt) dapat di transfer ke tabel barangbr. Caranya sbb:
INSERT INTO barangbr (Kd_brg, nama, Jenis) SELECT Kode, nama, Jenis FROM barang WHERE Jenis = ’M’;
b. UPDATE: Untuk MengEdit/mengubah data
Syntak :
UPDATE nama_tabel SET field1 = value1, field2 = value2,…[ WHERE kriteria ]
Ctt: WHERE tujuannya untuk mengurangu jumlah record yang ditampilkan, kalau tanpa WHERE semua record akan tampil
Misal :Untuk mengganti nama mahasiwa menjadi ANDI untuk nim 05023562
UPDATE mahasiswa SET nama = “ANDI” WHERE nim=”05023562”
mengubah sebuah kolom sebuah baris
UPDATE barang
SET nama = ‘beras delanggu’
WHERE Kode = ‘001’;
Mengubah beberapa kolom
UPDATE barang
SET Nama = ‘beras delanggu’,
Jumlah = 10
WHERE Kode = ‘001’;
Mengubah beberapa baris
UPDATE barang
SET Jumlah = 0
WHERE Jenis = ‘M’;
atau
UPDATE barang
SET Jumlah = 10
WHERE Kode = ‘001’ OR
Kode = ‘004’;
setelah dieksekusi perintah diatas maka data jumlah milik kode 001 serta 004 berubah menjadi 10
Mengubah semua baris (semua record, field jumlah isinya null semua)
UPDATE barang
SET Jumlah = null;
Misal dalam tabel barang ditambah atribut/field harga, kita bisa menaikkan harga 20% dari harga semula, dengan menggunakan bentuk ekspresi sbb:
UPDATE barang
SET harga = 1.2 * harga;
c. DELETE: Untuk Menghapus Data
Syntak :
DELETE FROM nama_tabel[WHERE Kriteria];
Misal :
- Untuk menghapus data mahasiswa yang mempunyai nim 05023562
DELETE FROM mahasiswa WHERE nim = “05023562”
- Menghpus sebuah baris
DELETE FROM Barang WHERE Kode = ‘001’;
akan menghapus baris yang kolom Kode bernilai ‘001’ (hanya satu karena kunci primer)
- Menghapus beberapa baris
DELETE FROM Barang WHERE Jenis = ‘M’;
akan menghapus baris yang kolom Jenis bernilai ‘M’ (bisa lebih dari satu)
- Menghapus semua baris
DELETE FROM Barang;
d. SELECT: untuk membaca atau menampilkan data
SELECT Daftar_field_yang_akan_ditampilkan
FROM nama_tabel
[WHERE kriteria_data_yang_akan_ditampilkan]
Misal :
- Menampilkan semua kolom semua baris
SELECT * FROM Barang;
- menampilkan nim dan nama semua mahasiswa (menampilkan kolom tertentu)
SELECT nim, nama FROM mahasiswa
SELECT Kode, Nama FROM Barang;
- menampilkan nim dan nama mahasiswa jurusan MI
SELECT nim, nama FROM mahasiswa WHERE jurusan = ‘MI’
- menampilkan semua field dari tabel mahasiswa jurusan MI (memilih baris tertentu)
SELECT * FROM mahasiswa WHERE jurusan = ‘MI’
SELECT * FROM Barang WHERE Jenis=’A’;
- Kalau hasil yang dikehendaki hanya berupa kemungkinan isi dari kolom jenis, maka bisa menyisipkan kata DISTINCT pada klausa SELECT
SELECT DISTINCT jenis FROM barang;
SELECT DISTINCT kota FROM pegawai;
mengetahui di kota mana saja pegawai bertempat tinggal (tdk semua record ditampilkan)
- Menampilkan jam sekarang
SELECT time(now());
- Menampilkan waktu sekarang
SELECT now();
- Menampilkan tahun sekarang
SELECT year(now());
- Menampilkan tanggal sekarang
SELECT date(now());
- Menampilkan hari sekarang
SELECT day(now());
- Operator Relasi
Beberapa operator relasi yang digunakan pada saat akan dibutuhakan suatu kriteria tertentu untuk menampilkan data adalah :
Operator Arti
= Sama dengan
> Lebih dari
>= Lebih dari atau sama dengan
< Kurang dari
<= Kurang dari atau sama dengan
<> Tidak Sama Dengan
LIKE Mengandung suatu kata/huruf tertentu
BETWEEN Rentang antara dua nilai
- untuk memperoleh barang yang jumlahnya antara 4 dan 11
SELECT * FROM Barang WHERE Jumlah >= 4 AND Jumlah <= 11;
dapat diganti dengan perintah
SELECT * FROM Barang WHERE Jumlah BETWEEN 4 AND 11;
SELECT nama,stok FROM barang WHERE Jumlah > 10;
SELECT nama,harga FROM barang where not (harga > 6600 AND harga < 3000);
Operator logika (operator Boolean)
Yang sering digunakan adalah : AND (dan/dua-duanya harus benar), OR (atau/salah satu benar, jawabannya benar) dan NOT (bukan/tidak)
- Menampilkan nim, nama dan alamat mahasiswa jurusan TI dan berjenis kelamin wanita
SELECT nim,nama,alamat FROM mahasiswa WHERE jurusan= ‘TI’ AND jenis_kel = ‘WANITA’;
SELECT * FROM barang WHERE jenis = ‘MI’ AND stok = 10;
SELECT * FROM barang WHERE jenis = ‘MI’ OR stok = 10;
SELECT nama,jenis FROM barang WHERE NOT jenis = ‘MI’;
Operator BETWEEN dan NOT BETWEEN
- untuk memperoleh barang yang jumlahnya antara 4 dan 11
SELECT * FROM Barang WHERE Jumlah BETWEEN 4 AND 11;
- Menampilkan nim, nama dan IPK mahasiswa yang mempunyai IPK 2,5 sampai 3,2
SELECT nim,nama,ipk FROM mahasiswa WHERE ipk BETWEEN 2.5 AND 3.2
- untuk memperoleh barang yang jumlahnya lebih kecil dari 4 dan lebih besar dr 11
SELECT * FROM Barang WHERE Jumlah NOT BETWEEN 4 AND 11;
Operator IN dan NOT IN
untuk melakukan pencocokan dengan salah satu yang termasuk didalam daftar
select * from mhs where jurusan = ‘MI’ or jurusan = ‘KA’;
untuk memperoleh mhs yang jurusannya MI atau KA.
Dapat diganti dengan
select * from mhs where jurusan IN(‘MI’,'KA’);
Bila ditambah NOT di depan IN akan memperoleh data diluar MI dan KA.
Menampilkan semua dari tabel barang yang jenis nya hanya MI dan SA
select * from barang where jenis IN(‘MI’,’SA’);
Menampilkan semua tabel barang yang jenisnya selain MI dan SA
select * from barang where jenis NOT IN(‘MI’,’SA’);
Operator LIKE dan NOT LIKE
- bermanfaat untuk mencari data semacam:
- barang apa saja yang mengandung huruf ‘be’
- perlu menyebutkan tanda wilcard berupa garis bawah ( _ ) atau persen (%).
• tanda _ berarti sebuah karakter apa saja
contoh:
a_i bisa berati ani, ali, abi, dll
• tanda % berarti cocok dengan karakter apa saja dan berapapun panjangnya
contoh:
- %a%  cocok dengan apa saja yang mengandung karakter a atau A.
- %a  cocok dengan yang berakhiran a atau A, hanya berlaku untuk yang bertipe VARCHAR
- a%  cocok dengan yang berawalan a atau A
contoh:
- menampilkan nama mahasiswa yang berawalan “PAR”
SELECT nama FROM mahasiswa WHERE nama LIKE “PAR%”
SELECT * FROM Barang WHERE Nama LIKE ‘b%’;
SELECT * FROM Barang WHERE Nama LIKE ‘%p’;
SELECT * FROM Barang WHERE Nama LIKE ‘%u%’;
SELECT * FROM Barang WHERE Nama LIKE ‘_u%’;
Kalau ditambah NOT berarti menampilkan selain kata yang berawalan b
SELECT * FROM Barang WHERE Nama NOT LIKE ‘b%’;
- Operator IS NULL dan IS NOT NULL
Jika ingin menampilkan data stok yang berisi NULL:
SELECT * FROM barang WHERE stok IS NULL;
Jika ingin menampilkan semua barang yang stok nya tidak berisi NULL, anda bisa memakai operator IS NOT NULL
SELECT * FROM barang WHERE stok IS NOT NULL;
Mengurutkan data dengan ORDER BY
- Menampilkan semua barang yang ada di tabel barang secara urut naik berdasarkan kode barang
SELECT * FROM barang ORDER BY harga;
- Mengurutkan barang berdasar nama secara urut naik (ascending)
SELECT kode, nama FROM barang ORDER BY nama;
- Mengurutkan secara urut turun (descending)
SELECT kode, nama FROM barang ORDER BY nama DESC;
- Mengurutkan barang menurut jenis dan nama
SELECT kode, jenis, nama FROM barang ORDER BY jenis, nama;
- Mengurutkan barang menurut jenis (descending) dan nama (ascending)
SELECT kode, jenis, nama FROM barang
ORDER BY jenis DESC, nama;
atau
SELECT kode, jenis, nama FROM barang
ORDER BY jenis , nama DESC;
- Mengurutkan barang menurut kolom 2 (jenis)
SELECT kode, jenis, nama FROM barang ORDER BY 2;
SELECT kode,jenis,nama FROM barang ORDER BY 2 DESC;
Mengelompokkan data dengan GROUP BY (hampir sama dengan DISTINCT)
Mengetahui jurusan apa saja dalam tabel mhs
SELECT jurusan FROM mhs GROUP BY jurusan;
hasilnya:
+———+
| jurusan |
+———+
| KA |
| MI |
| TI |
| TK |
———–
SELECT jenis FROM barang GROUP BY jenis;
Klausa HAVING (pengganti WHERE)
• Klausa HAVING terkait dengan klausa GROUP BY
• Gunanya untuk menentukan kondisi bagi GROUP BY
• Kelompok yang memenuhi HAVING saja yang akan dihasilkan
- Menampilkan jurusan dari tabel mhs berdasarkan kelompok jurusan, selain jurusan KA
SELECT jurusan FROM mhs group by jurusan
having jurusan <> ‘KA’;
hasilnya:
+———+
| jurusan |
+———+
| MI |
| TI |
| TK |
+———+
perintah ini dapat diganti dengan:
SELECT jurusan FROM mhs WHERE jurusan <> ‘KA’
GROUP BY jurusan;
- Menampilkan jenis dari tabel barang berdasarkan kelompok jenis, yang jenisnya MA
SELECT jenis FROM barang group by jenis
having jenis = ‘MA’;
Penggunaan Fungsi Agregat
Daftar Fungsi Agregat
Fungsi Agregat Keterangan
AVG Memperoleh nilai rata-rata
COUNT Menghitung cacah data
MAX Menghasilkan nilai terbesar
MIN Menghasilkan nilai terkecil
SUM Memperoleh penjumlahan data
Fungsi AVG
- Menghitung harga rata-rata barang
SELECT AVG(harga) FROM barang;
- Menghasilkan rata-rata ipkum
SELECT AVG(ipkum) FROM mhs;
- Menghitung harga rata-rata per jenis
SELECT jenis, AVG(harga) FROM barang GROUP BY jenis;
- Menghasilkan rata-rata ipkum dikelompokkan berdasar jurusan
SELECT jurusan, AVG(ipkum) FROM mhs GROUP BY jurusan;
- Menghasilkan rata-rata ipkum mhs yang mempunyai jurusan MI
SELECT AVG(ipkum) FROM mhs WHERE jurusan = ‘MI’;
- Menampilkan rata-rata harga dari tabel barang yang jenis MI
SELECT AVG(harga) FROM barang WHERE jenis = ‘MI’;
atau
SELECT AVG(harga) FROM barang GROUP BY jenis HAVING jenis = ‘MI’;
Fungsi COUNT
- Menghasilkan cacah baris dari tabel mhs. Kolom nim dalam COUNT dapat diganti dengan kolom apa saja (hanya 1 field) atau cukup ditulis * (sembarang).
SELECT COUNT(nim) FROM mhs;
SELECT jurusan, COUNT(*) FROM mhs GROUP BY jurusan;
menghasilkan:
+———+———-+
| jurusan | count(*) |
+———+———-+
| KA | 1 |
| MI | 2 |
| TI | 2 |
| TK | 1 |
+———+———-+
- catatan: kolom kedua bisa diganti nama kolomnya dengan klausa AS (untuk memberi nama lain terhadap suatu keluaran):
SELECT jurusan, COUNT(*) AS cacah FROM mhs GROUP BY jurusan;
menghasilkan:
+———+———-+
| jurusan | cacah |
+———+———-+
| KA | 1 |
| MI | 2 |
| TI | 2 |
| TK | 1 |
+———+———-+
- Menghitung cacah/jml barang per jenis, khusus untuk yang jumlahnya lebih dari 2
SELECT jenis, COUNT(*) FROM barang GROUP BY jenis HAVING COUNT(jenis) > 2;
- Menghitung cacah jenis yang tertera dalam tabel barang
SELECT COUNT(DISTINCT jenis) FROM barang;
Fungsi MAX
Untuk memperoleh nilai terbesar
- Menampilkan harga terbesar
SELECT MAX(harga) FROM barang;
SELECT nama, MAX(harga) FROM barang;
- Menampilkan harga terbesar per jenis
SELECT jenis, MAX(harga) FROM barang GROUP BY jenis;
SELECT jenis, nama, MAX(harga) FROM barang GROUP BY jenis;
Fungsi MIN
Untuk memperoleh nilai yang terkecil
- Menampilkan harga terkecil
SELECT MIN(harga) FROM barang;
SELECT nama, MIN(harga) FROM barang;
- Menampilkan harga terkecil per jenis
SELECT jenis, MIN(harga) FROM barang GROUP BY jenis;
SELECT jenis, nama, MIN(harga) FROM barang GROUP BY jenis;
Fungsi SUM
Untuk melakukan penjumlahan data
- Menghasilkan jumlah seluruh ipkum
SELECT SUM(ipkum) FROM mhs;
- Menampilkan seluruh stok barang
SELECT SUM(stok) FROM barang;
- Menampilkan total stok untuk setiap jenis
SELECT jenis, SUM(stok) FROM barang GROUP BY jenis;
Klausa LIMIT
untuk membatasi jumlah baris yang ditampilkan,
- SELECT * FROM mhs LIMIT 3;
hanya menampilkan 3 record dari atas
- SELECT nama, harga FROM barang LIMIT 4;
Penggunaan Ekspresi
SELECT harga FROM barang;
- Misal harga diskon 10%
SELECT nama,harga * 0.1 FROM barang;
- berarti harga yang di bayarkan 90%
SELECT nama,harga * 0.9 AS hargabr FROM barang;
SELECT nama,harga * 0.9 AS hargabr FROM barang where Kd_brg=’B07’;
Ctt:kolom harga diberi judul hargabr
- Untuk melihat kekayaan per barang
SELECT harga * stok FROM barang;
- Melihat total kekayaan
SELECT sum(harga * stok) FROM barang;

Friday, 15 March 2013

Cara Hack Menggunakan SQL Injection

Cara Hack Menggunakan SQL Injection

Maros-Salah Satu Teman saya (SANCA) pernah menjelaskan teknik para hacker menyerang web dengan cara SQLi Tekhnik yang digunakan seorang Hacker dalam melakukan SQL Injection ini salah satunya adalah:

1. mencari target

Kita bisa menggunakan dork pada search engine, kali ini penulis mencoba menggunakan http://google.com sebagai search enginenya.



Ketik : inurl:news.php?id= <<<<<<<< salah satu contoh dork. Misal kita mendapatkan salah satu website yang beralamat http://sitecontoh.com/news.php?id=19 2. Mencoba melakukan testing Di website http://sitecontoh.com/news.php?id=19 kita coba menambahkan karakter “ ‘ “ (tanda kutip) dibelakang angka “19” tersebut menjadi: http://sitecontoh.com/news.php?id=19’ . Dikarenakan ada keluar error yang biasanya seperti ini : “ Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ……..”
kita bisa asumsikan kalau website tersebut vulnerable.

Dikarenakan saya akan lebih focus bagaimana mencegah SQL Injection, mungkin untuk penjelasan lebih lanjut tentang Tekhnik SQL Injection bisa dicari di google yang sudah banyak website yang menjelaskan tentang tekhnik ini lebih gamblang dan mungkin lebih lengkap dan jelas.


Ok, sebenarnya tekhnik diatas hanya salah satu dari berbagai tekhnik yang digunakan seorang hacker untuk mencoba “membobol” website. Tekhnik SQL Injection ini bisa dilakukan pada alamat website (URL) ataupun juga bisa dilakukan pada form-form login. Dengan memasukan query-query sql injection di dalamnya. Query tersebut banyak jenisnya, contoh:

' or 1=1 or ''='

' or 1=1--

' or 1=1#

' or 1=1/*

') or '1'='1--

') or ('1'='1--

" or 1=1--

or 1=1--


Dan masih banyak lagi yang lainnya yang bisa anda cari di google.

Nah setelah kita mengetahui tekhnik-tekhnik yang digunakan seorang hacker dalam melakukan SQL Injection (walaupun singkat), minimal kita bisa sedikit ada gambaran kenapa hal itu bisa terjadi. Mungkin menurut pemahaman saya yang Newbie ini, saya bisa mengambil kesimpulan kalau hal itu terjadi dikarenakan Peng-codean atau bisa dikatakan ada kesalahan dalam penulisan pemrograman. Lalu yang akan menjadi pertanyaan, salah dimananya ya?

Baik sekarang kita bahas, karena diatas ada pertanyaan dimana letak kesalahan tersebut..?? kita perhatikan pengkodean dibawah ini :


$match = false;
if (isset($_POST['submit'])) {
$nama = $_POST['nama'];
$pass = $_POST['pass'];
$sql = "SELECT nama, password FROM user WHERE
nama='$nama' AND password='$pass'";
$res = mysqli_query($db, $sql);
// jika res berhasil,dan row yang
// dikembalikan=1, set $match=true
if ($res && mysqli_query_rows($res) == 1) {
$match = true ;
mysqli_free_result($res);
}
if ($match === true) {
echo 'account match';
} else {
echo 'invalid account';
}
}


kode program diatas memang kelihatan melakukan verifikasi data, tetapi sebenarnya sangat rapuh,penyerang bisa menggnakan query-query seperti dibawah ini,untuk melakukan akses secara tidak sah


// mengisi field nama saja,# adalah komentar,
// yang akan mengabaikan baris setelahnya
admin'#

// mengisi nama field saja
// mengekstrak data kelokasi tertentu
'OR' 1=1 INTO DUMPFILE '/path/ke_lokasi/file.txt '#
'OR' 1=1 INTO OUTFILE '/path/ke_lokasi/file.txt '#


atau seperti ini:

(tekhnik serangan multiple SQL Injection)


// $id dari method GET/POST
$sql = "SELECT * FROM buku WHERE kode='{$id}’ “;
//mengahapus isi table
0; DELETE FROM user
// membuat account baru
0; GRANT ALL ON *.* TO 'xxx@%'


Dalam kasus ini,macig quote akan mengabaikan tanda titik koma,ini sangat membahayakan
jika menggunakan SQLite atau postgreSQL. Adapun solusi nya adalah menggunakan operator
casting untuk memastikan bahwa id harus integer.


//Simulasi nilai $_POST['id']
0; DELETE FROM user
$id = (int) myMacig($_POST['id']);


apabila anda ingin memeriksa apakah input mengandung karakter tertentu,gunakan fungsi strpos().

$nama = myMacig ($_POST ['id']);
// periksa apakah karakter ; terdapat
// di variabel $nama.
if (strpos($nama, ';' die (gunakan karakter yang tidak merugikan kantong anda… hehehe');


oia, ketika form login juga biasa masih banyak loh yang bisa di exploitasi. Seperti yang kita ketahui dan mungkin suatu hal yang jadi standarisasi bahwasanya username dan password harus berupa angka dan huruf. Kenapa..?? Karena karakter khusus. SQL Injection biasanya memberikan variasi tanda mulai dari “=” (Sama dengan), “%” (Persen), “;” (Titik Koma), “\’” (Petik satu), “”" (Petik Dua) dan lain sebagainya. Berarti perlu adanya validasi anti karakter khusus. Salah satunya dengan melakukan pengkodean seprti dibawah ini :

//Mengambil nilai - nilai dari form
$username = trim($_POST[”username”]);
$password = trim($_POST[”password”]);

//apakah bernilai huruf dan angka.
if (!ctype_alnum($username) OR !ctype_alnum($password))
{
echo “Jagalah Hati,,,,,”;
}
else
{
echo “Alhamdulillah”;

berikut dibawah ini beberapa contoh fungsi yang bisa mencegah SQL Injection:

1.mysql_escape_string

Contoh :



Fungsi mysql_escape_string merubah "The Injec'tion" menjadi "The Injec\'tion"



2. mysql_real_escape_string

Contoh :



Fungsi mysql_real_escape_string merubah "The Injec'tion's" menjadi "The Injec\'tion\'s"



Mungkin cukup sekian dulu tutorial sederhana dari saya.
Mohon maaf apabila terdapat kekeliruan di dalamnya, dan kurang sistematis nya tulisan saya diatas.
Saya cuma pengen mencoba untuk share tulisan aja.

Kritik dan saran sangat penulis harapkan. Terimakasih.....

kalo ada pertanyaan, tanyain aja ma yang pinter disini. hehehe bcanda dink.... kalo da yang ditanyain silahkan posting aja..kali aja da yang jawab. -0-

TRANSLATE