Contoh soal program studi Teknik Informatika "Algoritma dan Pemrograman 1."

Bagian I : Teori 10%
Pilih satu dari tiga soal berikut ini
1. Jelaskan secara singkat, apa perbedaan tipe data dasar (integer,real,chararacter dan boolean)
dengan tipe data array? Apa kelebihan dan kelemahan array dibanding tipe data dasar? Apa
yang akan terjadi jika jumlah nilai yang dimasukan ke dalam array melebihi jumlah elemen?
2. Pada kasus berikut : Menentukan diskon berdasarkan jenis barang, misalnya :
a. Jenis1 : diskon 5%
b. Jenis2 : diskon 10%
c. .... dst
Menurut pendapat anda, struktur program apakah yang paling tepat untuk menyelesaikan kasus
penentuan diskon di atas? (misalnya menggunakan struktur while, for, if, switch, atau struktur
lain), jelaskan !
Bagian II : Pilihan Berganda 30%
Petunjuk : Dalam satu soal ada kemungkinan jawaban lebih dari satu. Jawaban yang menurut anda benar
tulis di lembar jawab dengan menggunakan huruf kapital (jika salah satu salah maka jawaban anda
dianggap salah)
1. Dari pernyataan-pernyataan di bawah ini, pernyataan mana yang benar
A. Logika yang menggunakan notasi WHILE-DO…ENDWHILE, proses/perintah-perintah
di dalam notasi tersebut minimal akan dilaksanakan satu kali
B. Logika yang menggunakan notasi REPEAT…UNTIL, proses/perintah-perintah di
dalam notasi akan dilaksanakan kembali apabila kondisi belum benar/terpenuhi
C. Notasi IF-THEN-ENDIF digunakan untuk melaksanakan proses yang berulang
(looping)
D. Dalam logika dengan menggunakan WHILE-DO… ENDWHILE, proses/perintahperintah
tidak akan dilaksanakan lagi apabila kondisi tidak benar/terpenuhi
E Array dapat digunakan untuk menampung banyak nilai dengan jumlah elemen statis
(terbatas)
F String termasuk array yang tipe datanya adalah Character
2. Di antara nama variabel berikut, manakah yang tidak sesuai kaidah pemberian nama variabel
pada algoritma dan C/C++ :
A. 3rd_entry C. Harga_barang E. Char1
B. nama$iswa D. char F. Tidak ada jawaban yang benar
UTS-Algoritma & Pemrograman I Ver/Rev : 6/0 Halaman : 2 dari 2
3. Pada potongan program berikut
for (bil=1; bil<=10; bil++){
if ((bil>4) && (bil<8))
continue;
cout<<bil<<” “;
}
A. 1 2 3 4 5 6 7 8 9 10 D. 1 3 5 7 9
B. 2 4 6 8 10 E 1 2 3 4 5
C. 1 2 3 4 8 9 10 F Syntax Error
D. 1 3 5 7 9
Bagian berikut ini untuk nomor 4-7
Algoritma Program
Judul:
1 Algoritma untuk .......... 18 //Program untuk ..........
19 #include<...........>
Kamus :
20 int main() {
2 N : INTEGER 21 int N;
3 Arr1 : ARRAY[1..25] OF REAL 22 float Arr1[25];
4 .......... 23 ..........
5 noStep, Idx : .......... 24 int noStep,Idx;
Algoritma:
6 INPUT N 25 scanf(“%d”, &N);
7 FOR noStep = 1 TO N STEP 1 DO 26 for(noStep=1;noStep<=N;noStep++){
8 INPUT Arr1[noStep] 27 scanf(“%d”, &Arr1[noStep]);
9 ENDFOR 28 }
10 Idx 1 29 Idx=1;
11 FOR noStep = N TO 1 STEP -1 DO 30 ..........
12 Arr2[noStep] Arr1[Idx] 31 Arr2[noStep] = Arr1[Idx];
13 Idx Idx+1 32 ..........
14 ENDFOR 33 }
15 .......... 34 for(noStep=1;noStep<=N;noStep++){
16 OUTPUT Arr2[noStep] 35 ..........
17 .......... 36 }
37 return 0;
38 }
4. Sintaks berikut ini dapat digunakan untuk mengisi bagian kosong pada algoritma dan program
di atas
A. 4 Arr2 : ARRAY[1..25] OF INTEGER
B. 23 float Arr2[25];
C. 15 WHILE (noStep <=N) DO
D. 30 for(noStep=N;noStep<=1;noStep--){
E 32 Idx++
F 35 printf(“%0.2f”, &Arr2[noStep]);
5. Sintaks berikut ini tidak dapat digunakan untuk mengisi bagian kosong pada algoritma dan
program di atas, kecuali
A. 5 INTEGER
B. 5 REAL
C. 17 ENDFOR
D. 17 ENDWHILE
E 19 iostream.h
F 35 printf(“%0.2f”, Arr2[noStep]);
UTS-Algoritma & Pemrograman I Ver/Rev : 6/0 Halaman : 3 dari 3
6. Pernyataan berikut ini yang paling tepat digunakan untuk mengisi bagian kosong pada algoritma
dan program di atas baris 1 dan 18
A. Membaca nilai-nilai pada array 1 dimensi mulai dari elemen paling belakang sampai
elemen paling depan
B. Menghitung jumlah elemen dalam array 1 dimensi
C. Membalik urutan elemen dalam array 1 dimensi kemudian menampilkannya
D. Memasukan nilai ke dalam array 1 dimensi kemudian menjumlahkan nilai tersebut
dengan nilai Idx dan kemudian menampilkannya
E Pengulangan proses input dan output dalam array 1 dimensi
F Tidak ada jawaban yang benar
7. Jika N diberi nilai 7, maka total jumlah looping yang akan dilakukan oleh algoritma atau
program di atas adalah sebanyak
A. 7 kali C. 21 kali E. 42 kali
B. 14 kali D. 28 kali F. Tidak ada jawaban yang benar
Potongan program berikut untuk soal nomor 8 dan 9
void main{
int a,b,c;
a=5;
b=6;
c=(a<b) ? a : b;
cout<<”Hasil c = “<<c;
getche();
}
8. Keluaran yang tepat untuk program tersebut adalah :
A. Hasil c = 11 C. Hasil c = 6 E. Hasil c = -1
B. Hasil c = 5 D. Hasil c = 1 F. Tidak ada jawaban
9. Berapakah nilai variabel c pada program tersebut jika diberikan nilai untuk variabel a dan b
masing-masing 15 dan 8
A. 15 C. 23 E. 0
B. 8 D. 7 F. Syntax Error
10. Perhatikan potongan program berikut
void main()
{
int nilai[5] = {14, 7, 2, 10, 15}
int i = 1;
float x;
float y=0;
while (i<=3){
if ( (i>1) && (i==3)){
x=nilai[i+1]/nilai[i];
}
cout<<”x = “<<x;
}
i++;
}
Keluaran dari program di atas adalah
A. x = 4 C. x = 2 E. x = 10
B. x = 5 D. x = 7 F. Syntax Error
UTS-Algoritma & Pemrograman I Ver/Rev : 6/0 Halaman : 4 dari 4
Bagian III : Konstruksi Algoritma & Program 60%
Kerjakan semua soal berikut ini
1. (15% Algoritma, 15 % program) Kamen Raider Mengubah Array 1 Dimensi Menjadi ARRAY 2
Dimensi
Untuk berubah menjadi Kamen Raider ternyata sangat sulit. Dan salah satu Kamen Raider
memberitahu caranya. Sebelum berubah Kamen Raider harus memasang sabuk yang berupa
Array satu dimensi yang akan menyimpan nilai-nilai bilangan pecahan. Kemudian si Kamen
Raider treak ”HENSIN”, nha setelah treak kata itu tuh Kamen Raider harus mengubah sabuk
array 1 dimensinya menjadi array 2 dimensi dengan aturan sebagi berikut:
a. Jumlah baris dan kolom array 2 dimensi sama dengan jumlah elemen pada array 1 dimensi
b. Nilai-nilai pada array 1 dimensi akan dipindahkan ke dalam array 2 dimensi dengan rumus
Jika nilai pada array 1 dimensi adalah bilangan ganjil positif maka nilai tersebut akan
dibuat menjadi pangkat dua dari nilai sebelumnya
Jika nilai pada array 1 dimensi adalah bilangan ganjil negatif maka nilai tersebut akan
dibuat menjadi positif dan kemudian dibuat menjadi akar dari nilai sebelumnya
Jika nilai pada array 1 dimensi adalah bilangan genap positif maka nilai tersebut akan
dibuat menjadi akar dari nilai sebelumnya
Jika nilai pada array 1 dimensi adalah bilangan ganjil negatif maka nilai tersebut akan
dibuat menjadi pangkat dua dari nilai sebelumnya
Input
Baris pertama merupakan banyaknya elemen pada array 1 dimensi (1 < N 25), baris kedua dan
seterusnya merupakan nilai-nilai yang akan disimpan pada array 1 dimensi
Output
Array 2 dimensi sesuai aturan di atas
Contoh
Input Output
2
36
-9
6 3
6 3
3
-2
-1
3
4 1 9
4 1 9
4 1 9
2. Rental warnet “Connect” memerlukan program untuk menghitung biaya rental dengan
ketentuan sebagai berikut :
Pemakaian komputer dibagi menjadi 3 jenis yaitu internet, pengetikan, dan game-online. Untuk
internet dikenakan tarif 4000 per jam, pengetikan tarifnya 2000/jam dan game-online dikenai
tarif 5000/jam. Tarif dihitung per menit pemakaian, setelah 30 menit pertama (artinya,
pemakaian kurang dari 30 menit dianggap sebagai 30 menit).
Fasilitas lain yang disediakan oleh warnet tersebut sebagai berikut :
a. Scan : 1000/file
UTS-Algoritma & Pemrograman I Ver/Rev : 6/0 Halaman : 5 dari 5
b. Print : warna = 500/lbr, hitam-putih = 300/lembar
c. Teh botol = 3000/botol
Contoh kasus perhitungannya sebagai berikut :
Udin menyewa komputer di warnet “Connect”, lama penggunaan 90 menit, untuk mengetik
selama 40 menit, sisanya digunakan untuk konek ke internet. Udin men-scan 3 x (3 file), print 3
lembar hitam putih, 2 lembar warna, dan memesan 1 teh botol.
Biaya yang harus dibayarkan oleh Udin adalah sbb :
• Biaya rental komputer
o Mengetik = 40 (40/60)*2000=1333.33
o Internet = 50 menit = 50/60 * 4000 = 3333.333
• Biaya scan = 3 x 1000 = 3000
• Biaya print : warna = 2 x 500 = 1000, hitam-putih = 3x300 = 900
• Teh botol = 1 x 3000 = 3000
Total biaya yang harus dibayarkan Udin = Rp. 12,566.66
Pembayaran = Rp. 15,000
Kembali = Rp. 2,400 (dibulatkan)
(15% Algoritma, 15 % program) Buatlah algoritma dan program untuk kasus tersebut dengan
asumsi-asumsi sebagai berikut :
a. Masukannya adalah jenis pemakaian, lama/waktu pemakaian, lembar scan, lembar print
hitam-putih, lembar print warna, jml teh botol.
b. Menghitung total keseluruhan (tanpa dibulatkan)
c. Mengisikan uang yang dibayarkan konsumen
d. Menghitung kembalian (fungsi pembulatan dalam algoritma ROUND(X), fungsi
pembulatan dalam program floor(X) atau ceil(X) library header math.h, dimana X
adalah data yang berisi nilai yang akan dibulatkan)
UTS-Algoritma & Pemrograman I Ver/Rev : 6/0 Halaman : 6 dari 6
Bagian IV : Bonus 10%
Bagian ini dikumpulkan bersama dengan lembar jawaban
Bonus Nilai : 10% (jika diisi semua)
Berdasarkan apa yang anda rasakan selama perkuliahan ini beri tanda atau X pada kolom yang
menurut anda paling sesuai.
KETERANGAN ISIAN KOLOM :
5 = Setuju dengan pendapat tersebut
4 = Cenderung setuju dengan pendapat tersebut
3 = Ragu-ragu antara setuju dan tidak setuju
2 = Kurang setuju dengan pendapat tersebut
1 = Tidak setuju sama sekali dengan pendapat tersebut
A. Kemampuan Dosen 1 2 3 4 5
1 Dosen menguasai materi perkuliahan dengan baik
2 Dosen berkomunikasi/menyampaikan kuliah dengan baik
B. Sikap Dosen
3 Dosen mempersiapkan kuliah dengan baik
4 Dosen bersikap responsif, bersedia berdiskusi, dan memberikan
umpan balik
5 Dosen mampu meningkatkan motivasi belajar anda
C. Penyelenggaraan Kuliah
6 Dosen menjelaskan tujuan, rencana materi kuliah, dan buku acuan
yang bermanfaat
7 Beban kuliah yang diberikan sesuai SKS yang dialokasikan
8 Contoh Kasus dan tugas yang diberikan membantu pemahaman
anda
E. Manfaat/Hasil Kuliah
9 Anda menguasai/mengerti materi kuliah setelah mengikuti kuliah
ini

F. Kehadiran Mahasiswa
10 Tingkat kehadiran anda dalam kuliah ini tinggi




 # Semoga postingan ane kali ini bermanfaat ya sobat, Amin....
 

Macam-macam Sorting

Assalamualaikum sobat, postingan ane kali ini membahas soal "Macam-macam Sorting dalam Bahasa Java
 
 
 
Bubble Sort
Bubble sort merupakan algoritma sorting sederhana. Algoritma ini dimulai pada awal set data. Ia membandingkan dua elemen pertama, dan jika yang pertama adalah lebih besar dari yang kedua, maka swap mereka. Terus melakukan hal ini untuk setiap pasangan elemen berdekatan dengan akhir kumpulan data. Ia kemudian mulai lagi dengan dua elemen pertama, mengulang sampai tidak ada swap telah terjadi pada lulus terakhir. Rata-rata Algoritma dan kinerja kasus terburuk adalah O (n2), sehingga jarang digunakan untuk menyortir besar, unordered, set data. Gelembung sort dapat digunakan untuk mengurutkan sejumlah kecil item (dimana inefisiensi adalah bukan hukuman tinggi). Gelembung sort juga dapat secara efisien digunakan pada daftar yang sudah diurutkan kecuali untuk jumlah yang sangat kecil elemen. Misalnya, jika hanya satu unsur yang tidak sesuai, bubble sort hanya akan memakan waktu 2n. Jika dua unsur yang
tidak sesuai, bubble sort hanya akan mengambil paling banyak 3n waktu.
Gelembung sort rata-rata kasus dan kasus terburuk keduanya O (n ²).
Selection Sort
Semacam Seleksi adalah semacam perbandingan di tempat. Ini memiliki O (n2) kompleksitas, sehingga tidak efisien dalam daftar besar, dan umumnya melakukan lebih buruk dari insertion sort serupa. Seleksi semacam terkenal karena kesederhanaan, dan juga memiliki keunggulan kinerja lebih algoritma yang lebih rumit dalam situasi tertentu. Algoritma mencari nilai minimum, swap dengan nilai di posisi pertama, dan mengulangi langkah-langkah untuk sisa daftar. Itu tidak lebih dari swap n, dan dengan demikian berguna dimana swapping sangat mahal.
Insertion Sort
Insertion sort merupakan algoritma sorting sederhana yang relatif efisien untuk daftar kecil dan sebagian besar daftar-disortir, dan sering digunakan sebagai bagian dari algoritma yang lebih canggih. Ia bekerja dengan mengambil unsur-unsur dari satu daftar dengan satu dan memasukkan mereka dalam posisi yang benar mereka ke dalam daftar diurutkan baru. Pada array, daftar baru dan elemen-elemen yang tersisa dapat berbagi ruang array, tetapi penyisipan mahal, membutuhkan menggeser semua elemen-elemen berikut alih oleh satu. Shell sort (lihat di bawah) adalah varian dari insertion sort yang lebih efisien untuk daftar yang lebih besar.
Shell Sort
Shell sort diciptakan oleh Donald Shell pada tahun 1959. Ini meningkatkan atas bubble sort dan insertion sort dengan menggerakkan keluar dari elemen-elemen memesan lebih dari satu posisi pada suatu waktu. Salah satu implementasi dapat digambarkan sebagai mengatur urutan data dalam array dua dimensi dan kemudian menyortir kolom dari array menggunakan insertion sort.

 Comb Sort
Comb Sort adalah semacam algoritma sorting yang relatif sederhana awalnya dirancang oleh Wlodzimierz Dobosiewicz pada tahun 1980. Kemudian ditemukan kembali dan dipopulerkan oleh Stephen Lacey dan Richard Box dengan sebuah artikel majalah Byte diterbitkan pada bulan April 1991. Sisir semacam meningkatkan pada bubble sort, dan algoritma saingan seperti Quicksort. Ide dasarnya adalah untuk menghilangkan kura-kura, atau nilai kecil dekat akhir daftar, karena dalam semacam gelembung menyortir ini sangat melambat. (Kelinci, nilai besar sekitar awal daftar, tidak menimbulkan masalah di bubble sort.).
Merge Sort
Merge sort mengambil keuntungan dari kemudahan penggabungan sudah daftar diurutkan ke daftar diurutkan baru. Dimulai dengan membandingkan setiap dua elemen (yaitu, 1 dengan 2, kemudian 3 dengan 4 ...) dan swapping mereka jika yang pertama datang setelah kedua. Kemudian masing-masing menggabungkan daftar yang dihasilkan dua menjadi daftar empat, kemudian menggabungkan daftar tersebut empat, dan seterusnya, sampai akhirnya dua daftar digabungkan ke dalam daftar diurutkan akhir. Dari algoritma yang dijelaskan di sini, ini adalah yang pertama yang baik daftar skala yang sangat besar, karena kasus terburuk running time adalah O (n log n). Merge sort telah melihat lonjakan yang relatif baru dalam popularitas untuk implementasi praktis, yang digunakan untuk rutin semacam standar dalam bahasa pemrograman Perl, [5] Python (sebagai timsort [6]), dan Jawa (juga menggunakan timsort per JDK7 [7 ]), antara lain. Merge sort telah digunakan di Jawa setidaknya sejak 2000 di JDK1.3.
Heap Sort
Heapsort adalah versi yang jauh lebih efisien selection sort. Ia juga bekerja dengan menentukan elemen (atau terkecil) terbesar daftar, menempatkan bahwa pada akhir (atau awal) dari daftar, kemudian melanjutkan dengan sisa daftar, tapi menyelesaikan tugas ini secara efisien dengan menggunakan struktur data yang disebut tumpukan, tipe khusus pohon biner. Setelah daftar data telah dibuat menjadi tumpukan, simpul akar dijamin menjadi unsur (atau terkecil) terbesar. Ketika dipindahkan dan ditempatkan di akhir daftar, tumpukan adalah ulang sehingga elemen terbesar yang tersisa bergerak ke akar. Menggunakan heap, menemukan elemen terbesar berikutnya membutuhkan O (log n) waktu, bukan O (n) untuk linear scan di selection sort sederhana. Hal ini memungkinkan heapsort untuk menjalankan dalam O (n log n) waktu, dan ini juga merupakan kompleksitas kasus terburuk.
Quick Sort
Quicksort adalah membagi dan menaklukkan algoritma yang mengandalkan operasi partisi: untuk partisi array, kita memilih sebuah elemen, yang disebut pivot, memindahkan semua unsur kecil sebelum poros, dan memindahkan semua elemen yang lebih besar setelah itu. Hal ini dapat dilakukan secara efisien dalam waktu linier dan di tempat. Kami kemudian secara rekursif mengurutkan sublists lebih kecil dan lebih besar. Implementasi Efisien quickSort (dengan partisi di-tempat) biasanya macam stabil dan agak rumit, tetapi adalah salah satu dari algoritma pengurutan tercepat dalam praktek. Bersama dengan sederhana O (log n) penggunaan ruang, ini membuat salah satu quickSort dari algoritma pengurutan yang paling populer, tersedia di perpustakaan banyak standar. Isu paling kompleks di quickSort adalah memilih elemen pivot yang baik; konsisten pilihan yang buruk pivots dapat mengakibatkan drastis lambat O (n ²) kinerja, tetapi jika di setiap langkah kita memilih median sebagai pivot maka ia bekerja dalam O (n log n ). Menemukan median, bagaimanapun, adalah O (n) operasi pada daftar unsorted, dan karena itu menuntut hukuman sendiri.
Counting Sort
Counting Sort berlaku jika setiap masukan diketahui milik set tertentu, S, kemungkinan. Algoritma ini berjalan di O (| S | + n) dan O (| S |) memori di mana n adalah panjang dari input. Ia bekerja dengan membuat sebuah array integer ukuran | S | dan menggunakan bin i untuk menghitung kejadian anggota i S dalam masukan. Setiap masukan kemudian dihitung oleh incrementing nilai bin terkait. Setelah itu, array menghitung adalah dilingkarkan melalui untuk mengatur semua masukan dalam rangka. Algoritma sorting ini tidak bisa sering digunakan karena S harus cukup kecil agar bisa efisien, namun algoritma ini sangat cepat dan menunjukkan perilaku asimtotik besar sebagai meningkat n. Hal ini juga dapat dimodifikasi untuk menyediakan perilaku yang stabil.
Bucket Sort
Bucket sort adalah membagi dan menaklukkan algoritma sorting yang generalizes Counting mengurutkan berdasarkan partisi array ke dalam jumlah terbatas ember. Setiap ember kemudian diurutkan secara individual, baik menggunakan algoritma sorting yang berbeda, atau dengan rekursif menerapkan algoritma sorting ember. Sebuah variasi dari metode ini disebut semacam hitungan satu buffer lebih cepat daripada quickSort dan memakan waktu sekitar waktu yang sama untuk berjalan di setiap set data. Karena kenyataan bahwa semacam ember harus menggunakan sejumlah ember yang terbaik adalah cocok untuk digunakan pada set data lingkup terbatas. Bucket sort akan cocok untuk data seperti nomor jaminan sosial - yang memiliki banyak variasi.
Radix Sort
Radix sort adalah sebuah algoritma yang macam angka dengan digit individu pengolahan. n digit angka yang terdiri dari masing-masing k diurutkan dalam waktu O (n ° K). Radix sort bisa proses digit setiap angka mulai dari angka signifikan paling sedikit (LSD) atau digit yang paling signifikan (MSD). Hasil uji BNT macam algoritma pertama daftar dengan paling signifikan angka sambil menjaga agar relatif mereka menggunakan semacam stabil. Kemudian macam mereka dengan angka berikutnya, dan seterusnya dari paling signifikan yang paling signifikan, berakhir dengan sebuah daftar diurutkan. Sedangkan jenis LSD radix memerlukan penggunaan semacam stabil, MSD algoritma radix sort tidak (kecuali sorting yang stabil yang diinginkan). Di tempat semacam MSD radix tidak stabil. Adalah umum untuk algoritma semacam menghitung untuk digunakan secara internal oleh jenis radix. Hybrid pemilahan pendekatan, seperti menggunakan insertion sort sampah kecil untuk meningkatkan kinerja semacam radix signifikan.
Distribution Sort
Distribution Sort mengacu pada setiap algoritma sorting dimana data didistribusikan dari input untuk struktur antara beberapa yang kemudian dikumpulkan dan ditempatkan pada output. Lihat Bucket sort.
Tim Sort
Distribusi semacam mengacu pada setiap algoritma sorting dimana data didistribusikan dari input untuk struktur antara beberapa yang kemudian dikumpulkan dan ditempatkan pada output. Lihat Bucket sort.
Download file
 
 
Support : Creating Website | Ari Java | Ari Java
Copyright © 2011. Warta Tekhnologi - All Rights Reserved
Template Created by Creating Website Published by Ari Java
Proudly powered by Blogger