Setelah genap waktunya, maka Allah mengutus anakNya (Yesus) yang lahir dari seorang perempuan dan takluk kepada hukum Taurat. (Galatia 4:4)

Rabu Wage, 8 September 2010
Home | Kontak Saya | Eureka! | ArenA | Bimbingan Tugas Akhir | Download | Links
Algoritma & Pemrograman 1 | Algoritma & Pemrograman 2 | Struktur Data | Teknik Kompilasi | Kecerdasan Buatan
KDD & Data Mining | Web Mining | E-Business | Systems Analysis and Design
 
 Search Engine
Manfaatkan Google untuk memperoleh sejumlah informasi yang Anda inginkan dalam hansmichael.com.
 
Kutipan
Jangan bermain-main dengan Iblis, Iblis tidak akan berubah, kau yang berubah.

Max California (Joaquin Phoenix dalam 8mm)
 
Tokoh Hari Ini
Blaise Pascal

Blaise Pascal lahir pada 19 Juni 1623 di Rouen, Perancis. Ia meninggal dunia pada tahun 1666 di Perancis. Pascal adalah ahli matematika, fisika, penulis prosa, dan dikenal sebagai salah satu filsuf Kristen abad pertengahan. Pascal menemukan mesin penjumlah yang mengatur penambahan carry antar digit dan segitiga Pascal yang memuat koefisien-koefisien deret binomial. Ia juga penemu roda gerobak sampai roda rolet. Pascal juga meletakkan dasar bagi teori modern probabilitas: hukum Pascal untuk Tekanan. Menariknya, walaupun ia ahli dalam berbagai bidang sains, pemikiran religiusnya sebagai filsuf Kristen menekankan doktrin yang lebih mengutamakan pengalaman dengan Tuhan lebih melalui hati daripada melalui nalar.

 
Berita Terakhir

Buat TTS Cuma Tiga Menit

Deskripsi Tugas VIII NLP

Download File Pelengkap Tugas AI

Tugas V - Tagset dan Grammar Bahasa Indonesia

Proyek II Web Mining - Versi 2.0

Proyek II Web Mining - Versi 1.0

Handout Presentasi Kuliah ARM III: Apriori.

Tugas 8 - Assignment Kuliah DM & KDD

Materi Kuliah Algoritma dan Pemrograman 1

Talita, DocSearch, KoranNorak

Materi UTS Data Mining dan KDD

Materi UTS Alpro1 & Web Mining

20 Points Quiz 1 Alpro 1

File-file Deskripsi Tugas

Penyerahan Laporan Assignment 2 Web Mining

Web Mining

Materi UAS Web Mining Semester Genap 2006/2007

Daftar Metode yang TIDAK DAPAT Dipakai

Download File Kuliah Kecerdasan Buatan

Penambahan Soal Algoritma dan Pemrograman 1

Nilai Kuliah Algoritma dan Pemrograman 1 STTS

Pertama, Situs Tanya Jawab Alkitab

Materi UTS Algoritma 1 dan Data Mining-KDD

Turbo Pascal menjadi Software Antik

Rekayasa Perangkat Lunak

Extended Abstract Tugas Akhir

Life is Beautiful?

Eureka! dan Arena

Konfirmasi Materi Proyek II yang Disetujui

Penanganan Trouble Registrasi dan Upload

Download Materi UAS

Materi UAS Struktur Data Genap 2004/2005

Materi UAS Kecerdasan Buatan Genap 2004/2005

Lebih dari 100 Abstrak Tugas Akhir

Deadline Proyek I dan Tugas III

Komponen Penilaian Tugas Akhir

Materi UTS Kecerdasan Buatan Genap 2004/2005

Materi UTS Struktur Data Genap 2004/2005

Proyek Software Assignment I

Kuliah Pengganti

MKP Bernilai 'D' atau 'E' Tidak Perlu Dibatalkan

Workshop IT for Non-IT Executive PLN Jatim

 
 

Algoritma dan Pemrograman 1 (CB106)

Semester Gasal 2007-2008 - Kelas B dan C

Text Book

  • An Introduction to Computer Science - An Algorithmic Approach, Jean-Paul Tremblay dan Richard B. Bunt, McGraw-Hill, 1981, 635 halaman.

Komponen Penilaian

  • 20% Nilai Quiz 1 (setelah Minggu IV)
  • 30% Nilai Ujian Tengah Semester (UTS)
  • 20% Nilai Quiz 2
  • 30% Nilai Ujian Tengah Semester (UAS)
  • 10% Nilai Tugas Mingguan dan Tugas Kelompok

Jadwal Kuliah Semester Gasal 2007/2008

Link-link Menarik (Khususnya Internet)

Contoh Soal

 A. Sequence

A1. Tulislah flowchart dan program melalui VBScript untuk menghitung dan mencetak keliling (k) dan luas (l) dari sebuah segitiga siku-siku. Sepasang nilai real single precision untuk alas (a) dan tinggi (t) segitiga siku-siku diisi melalui keyboard.
A2.

Tulislah flowchart dan program melalui VBScript untuk menghitung dan mencetak keliling (k) dan luas (l) dari sebuah bujur sangkar. Nilai real single precision untuk sisi (s) diisikan melalui keyboard.

A3. Tulislah flowchart dan program untuk mengisikan nilai jari-jari sebuah lingkaran, dan kemudian mencetak keliling dan luas lingkaran tersebut.
A4. Mengisikan ketiga panjang sisi dari sebuah segitiga (S1, S2, dan S3), dan kemudian mencetak nilai luas (L) segitiga tersebut, yang dapat diperoleh dari rumus:

dimana

A5. Nilai tukar (kurs tengah) valuta asing terhadap rupiah pada suatu hari di tahun 2007 tertulis sebagai berikut: 1 US$ = Rp 9.375 = 1,0435 Euro = 1,725 SG$ = 0,6525 Pound Inggris

Masukkan nilai Rupiah dan kemudian tampilkan nilai-nilai yang setara dalam satuan mata uang US$, Euro, Singapore$ (SG$), dan Poundsterling Inggris. 

A6. Suatu sistem persamaan linier dalam bentuk:

ax + by = c

dx + ey = f

dapat diselesaikan dengan menggunakan rumus-rumus:

dan

Bacalah koefisien-koefisien dari sepasang persamaan yang diberikan (a, b, c, dan d, e, f) dan kemudian mencetak solusi untuk nilai x dan y. Periksalah dengan seksama, adakah kasus khusus yang menyebabkan flowchart dan program Anda tidak dapat bekerja dengan baik?

A7.
  1. Masukkan sebuah bilangan dan kemudian cetaklah nilai satuan, puluhan, dan ratusan dari bilangan tersebut.

  2. Ulangi soal (a) untuk masalah yang lebih umum, yaitu mencetak digit yang ke-i (yang dihitung mulai dari digit terkanan) dari sebuah bilangan n. Nilai n dan i dimasukkan melalui keyboard. Sebagai contoh, untuk nilai n=4627985 dan i=3, yang akan tercetak adalah 9.
A8. Masukkan dari keyboard nilai dari 2 buah variabel, A and B, kemudian tukarlah pasangan nilainya. Sebelum dan sesudah proses pertukaran, cetaklah isi kedua variabel tersebut ke layar.

B. Selection

B1. Masukkan sebuah bilangan melalui keyboard, kemudian tampilkan keterangan pada layar komputer, apakah bilangan tersebut adalah gasal atau genap.
B2. Masukkan sebuah bilangan melalui keyboard, kemudian tampilkan keterangan pada layar komputer, apakah bilangan tersebut adalah Positif, Negatif, atau Nol.
B3. Masukkan 3 (tiga) buah bilangan melalui keyboard, kemudian tentukan bilangan yang terbesar dari ketiga bilangan yang dimasukkan tersebut.
B4. Masukkan 3 (tiga) buah bilangan melalui keyboard, kemudian tampilkan urutan ketiga bilangan tersebut mulai dari yang terkecil sampai yang terbesar (ascending order).
B5. Untuk konversi satuan panjang, diketahui bahwa 1 Kilometer = 3281 Feets = 0,6214 Miles. Tulislah sebuah flowchart yang berguna untuk memasukkan nilai panjang yang akan dikonversi dan menampilkan 2 buah hasil konversi lainnya. Dengan demikian flowchart juga harus menerima input kode satuan panjang asal, yaitu salah satu dari 'K' (untuk Kilometer), 'F' (untuk Feets), atau 'M' (untuk Miles). Anggap bahwa kode yang diisi selalu benar, yaitu selalu salah satu dari 'K' , 'F' , dan 'M'.
B6. Untuk konversi mata uang, diketahui bahwa nilai tukar (kurs tengah) valuta asing pada suatu hari adalah sebagai berikut: 1 USD = Rp 9325 = 3,85 Ringgit Malaysia. Gambarlah sebuah flowchart yang berguna untuk memasukkan nilai uang (u) yang akan dikonversi dan mencetak 4 buah hasil konversi lainnya. Dengan demikian flowchart juga akan menerima input kodemata uang asal (k), yaitu salah satu dari "DA" (Dollar Amerika), "RI" (Rupiah Indonesia), atau "RM" (Ringgit Malaysia). Anggap bahwa kode yang diisi selalu benar, yaitu selalu salah satu dari "DA", "RI" dan "RM".
B7. Gambarlah sebuah flowchart untuk program komputer mewujudkan sebuah kalkulator yang sangat sederhana. Program akan meminta user untuk mengisi 2 buah nilai numerik (v1 dan v2) dan sebuah operator (opr) melalui keyboard, dan kemudian menampilkan sebuah nilai hasil perhitungannya bila v1 dan v2 dioperasikan dengan menggunakan operator opr. Operator yang dapat digunakan hanyalah +, -, *, /, atau ^. Anda tidak perlu melakukan test validitas input untuk memeriksa apakah opr diisi selain 5 karakter yang diijinkan. Sebagai contoh, jika v1=5, v2=2 dan opr="^", maka yang ditampilkan adalah 125. Sedangkan jika v1=15, v2=8 dan opr="+", maka outputnya 23.
B8. Terdapat sejumlah data karyawan yang masing-masing menyimpan informasi :
  • Jenis kelamin; nama variabel adalah jk (character); yang hanya boleh diisi 'P', 'p', 'W', atau 'w'.
  • Umur, nama variabel adalah umur (integer).

Nyatakan kalimat berikut ini dalam sebuah ekspresi logika yang benar: "karyawan pria yang berumur 25-40 tahun atau karyawan wanita yang berumur 20-30 tahun".

B9. Sebuah integer maksimal 4 digit dapat digunakan untuk menyajikan waktu dalam format jam:menit, sebagai contoh 1741 -- integer seribu duaratus empat puluh satu -- menunjukkan jam 17:41 WIB., sedangkan 905 menunjukkan jam 09:05 WIB. Gambarlah sebuah flowchart untuk menghitung selisih dalam satuan menit antara dua buah waktu (w1 dan w2) yang diinputkan melalui keyboard. Sebagai contoh, jika w1=550 dan w2=2005, maka selisih waktunya 855 menit. Jika w2 "lebih awal" daripada w1, misal w1=2005 dan w2=550, maka dianggap w2 berada pada hari berikutnya, sehingga selisih waktunya 585 menit. Anda tidak perlu melakukan test validitas input untuk memeriksa apakah w1 dan w2 diisi dengan waktu yang tidak valid, misalnya 26:10 atau -9.65, dan sebagainya.
B10. Write a flowchart that print all real solutions to the quadratic equation ax2+bx+c=0. Read in a, b, and c. If the discriminant b2-4ac is negative, display a message stating that there are no real solutions.
B11. Read the lengths of three sides of a triangle (S1, S2, and S3) and determine what type of triangle it is, based on the following cases. Let A denote the largest of S1, S2, and S3, and B and C the other two. Then
  • If A >= B+C No triangle is formed
  • If A2 = B2+C2 A right-angled triangle is formed
  • If A2 > B2+C2 An obstuse triangle is formed
  • If A2 < B2+C2 An acute triangle is formed
B12.

Perusahaan Daerah Air Minum mengenakan biaya retribusi air minum pelanggannya dengan memperhatikan jumlah pemakaian air pelanggan (dalam meter kubik, m3) dan kode pelanggan ('F' untuk Fasilitas Umum; 'R' untuk peRumahan biasa, dan 'N' untuk Niaga), yang mana biaya per meter kubik air dihitung berdasarkan tabel berikut:

Kode/Ukuran

s.d. 50 m3

51m3 s.d. 100m3

lebih dari 100 m3

F

100

150

250

R

400

700

1000

N

750

1000

1350

Isikan kode pelanggan dan jumlah pemakaian airnya, dan kemudian menampilkan biaya retribusi yang dikenakan kepada pelanggan berdasarkan tabel di atas.

B13.

Gambarlah flowchart unuk membantu seorang kasir menentukan jumlah uang yang harus dibayar pembeli pada suatu penjualan berdiscount. Pembelian di bawah Rp. 100.000,-- tidak diberikan discount. Discount 7,5% akan diberikan untuk pembelian Rp. 100.000,-- s.d. 200.000,--. Discount 10% akan diberikan untuk pembelian Rp. 200.000,-- s.d. 350.000,--. Discount 15% akan diberikan untuk pembelian di atas Rp. 350.000,-- Sebagai data input adalah total nilai penjualan, sednagkan output adalah uang yang harus dibayar pembeli setelah discount (jika ada) diberikan.

B14. Triplet Phytagoras adalah pasangan 3 buah bilangan yang memenuhi rumus kuadrat bilangan terbesarnya sama dengan total kuadrat kedua bilangan lainnya yang lebih kecil. Tulislah sebuah flowchart untuk memasukkan 3 buah bilangan, dan menampilkan keterangan sebagai outputnya, bahwa bilangan yang diisikan merupakan triplet phytagoras, atau sebaliknya: bukan merupakan triplet phytagoras. Perhatikan bahwa 3 data input dapat diberikan secara tidak urut. Contoh: 4,3,5 adalah triplet Phytagoras, demikian pula dengan 10,6,8.

 C. Iteration

C1. Gambarlah flowchart dan tulislah program melalui VBScript untuk mencetak deret 0,1,3,6,10,15,21,28,... yang secara logika tidak akan berhenti atau infinite loop.
C2. Gambarlah flowchart dan tulislah program melalui VBScript untuk mencetak deret Fibonacci yang secara logika tidak akan pernah berhenti atau infinite loop seperti berikut ini: 0,1,1,2,3,5,8,13,21,34,55,... Perhatikan bahwa sebuah bilangan pada deret Fibonacci adalah hasil penjumlahan dua bilangan sebelumnya, kecuali dua bilangan pertama.
C3. Tulislah 3 (tiga) buah flowchart dan program untuk tujuan yang sama, yaitu mencetak deret bilangan berikut:

100, 95, 90, 85, .......... , -140, -145, -150

Anda tidak harus memakai koma untuk memisahkan angka-angkanya. Pastikan semua flowchart Anda hanya memakai angka-angka 100, -150, dan -5. Jangan memakai angka-angka lainnya.

  1. Menggunakan counted loop.
  2. Menggunakan conditional loop dengan bottom-tested iteration (mode until).
  3. Menggunakan conditional loop dengan top-tested iteration (mode while).
C4.

  1. Apabila semua nilai I pada flowchart A, B, C, D semula sama dengan 0. Hitung berapa banyak PROSES yang dijalankan pada masing-masing gambar flowchart untuk N yang sama jika kondisi untuk semua decision adalah I >= N.
  2. Supaya PROSES pada keempat flowchart tersebut dijalankan sama banyaknya, misalnya n kali, tulislah kondisi untuk decision pada masing-masing flowchart.
  3. Yang manakah dari keempat flowchart di atas yang dapat disebut sebagai "algoritma yang terstruktur"
C5. Write a flowchart that shows the sum of 1 to n for every n from 1 to 50. That is, the flowchart prints 1, 3 (the sum of 1 and 2), 6 (the sum of 1, 2, and 3), and so on.
C6. Menghitung nilai deret berikut:

2 + 4 + 8 + 16 + ....... + 8192. Perhatikan bahwa 8192=213

C7. Menghitung nilai deret berikut:

1001 - 1 + 2 - 4 + 8 - 16 ..... ± 2N

N adalah data input yang harus bulat positif.

C8. Compute the sum of the following series to 50 term:

C9.

Tulislah algoritma atau box diagram untuk mencetak deret Fibonnacci dalam range 1 s.d. 1000 dengan format:

0 (GENAP)

1 (GASAL)

1 (GASAL)

2 (GENAP)

3 (GASAL)

5 (GASAL)

8 (GENAP)

:

:

:

987 (GASAL)

 

C10. Menghitung pangkat 3 dari suatu bilangan bulat positif yang dibaca melalui keyboard, dengan cara menjumlahkan sejumlah bilangan tertentu. Perhatikan contoh berikut:

53 = 21 + 23 + 25 + 27 + 29 = 125

di mana : 21 = 5 * (5-1) + 1

83 = 57 + 59 + 61 + 63 + 65 + 67 + 69 + 71 = 512

di mana : 57 = 8 * (8-1) + 1

C11. A sales company pays its employees strictly on the commission from sales. Each week, data is prepared for each employee. This data consist of the employee's identification number followed by the amounts of each sale that employee made in the past week. The last amount for each employee is followed by a sentinel value of zero. The commission rate is 3.45 percent. Write a program or flowchart to read and add up the sales total for each employee and compute the commission for each salesperson.
C12. Gambarlah sebuah flowchart untuk menghitung h yaitu hasil deposito setelah t tahun, jika nilai awal yang disetorkan sebesar n rupiah, dengan bunga sebesar b % per tahun. Pemerintah mengenakan pajak penghasilan untuk bunga deposito sebesar 15% per tahun. Bank penyelenggara deposito akan membantu pemerintah dengan mengambil nilai pajak ini pada setiap akhir tahun selama masa deposito. Diasumsikan bahwa selama t tahun, uang yang didepositokan tidak pernah diambil sehingga bunga yang diperoleh pada sebuah tahun (setelah dipotong pajak) akan diinvestasikan juga pada tahun berikutnya. Nilai-nilai h, t, dan n diinputkan melalui keyboard dengan syarat ketiganya harus bilangan positif, sehingga jika tidak dipenuhi maka pengisian data harus diulang.
C13. Gambarlah flowchart untuk memasukkan nama mahasiswa, nilai UTS, nilai UAS, dan nilai Tugas dari N mahasiswa melalui keyboard. Nilai N sendiri diisi sebelumnya melalui keyboard juga dengan validitas harus bilangan positif. Flowchart akan menghitung dan menampilkan rata-rata nilai akhir, nilai akhir terbesar dan nama mahasiswa yang memperolehnya, nilai akhir terkecil dan nama mahasiswa yang memperolehnya. Perhatikan bahwa: Nilai akhir untuk seorang mahasiswa diperoleh dari 10% Nilai Tugas + 45% Nilai UTS + 45% Nilai UAS.
C14.

Bilangan-bilangan seperti 153 dan 370 memiliki sifat yang menarik, disebut Bilangan yang Mencintai Dirinya Sendiri, karena total pangkat tiga dari digit-digit penyusunnya adalah bilangan itu sendiri:

153 = 13 + 53 + 33 = 1 + 125 + 27 = 153

370 = 33 + 73 + 03 = 27 + 343 + 0 = 370

Mencetak semua bilangan dalam range 1 s.d. 500 yang memiliki sifat yang sama.

C15. The value of ex can be computed as the power series:

1 + x +  x2/2!  +  x3/3!  +  .....

Write a flowchart that computes ex using this formula. Of course, you can't compute an infinite sum. Just keep adding values until an individual summand (term) is less that a certain threshold (0.0000001).

C16. Pada peringatan Proklamasi kemerdekaan 17 Agustus 2045 diadakan Lomba "Lompat Karung Terjauh dalam 10 Menit". Karena teknologi saat itu sudah sedemikian majunya, pelaksanaan lomba akan dikendalikan oleh sebuah komputer yang dilengkapi dengan sensor penglihat dari sebuah satelit. Anggaplah area lombanya berada pada suatu grafik Cartesius dengan satuan jarak meter. Semua peserta berangkat dari garis start yang sama, dengan persamaan garis Ax+By+C=0. Karena harus melompat dengan kaki di dalam karung, maka peserta tidak dapat bergerak menuju arah yang sama, bahkan dapat berpencar ke berbagai titik yang berbeda, termasuk berlawanan arah. Tidak menjadi masalah, karena hal ini diijinkan. Diketahui bahwa rumus untuk menghitung jarak antara titik (m,n) dengan garis yang memiliki persamaan Ax+By+C=0 adalah:

Kriteria hadiah bagi peserta lomba yang akan ditransfer secara langsung oleh komputer ke rekening masing-masing peserta lomba adalah:

Menempuh jarak (dalam meter)

Hadiah (Rp)

10,00 s.d. 50,00 meter

Rp. 100.000,--

>50,00 s.d. 100,00 meter Rp. 250.000,--
>100,00 meter Rp. 500.000,--
Khusus bagi seorang pemenang saja dengan jarak terjauh akan mendapatkan hadiah Rp. 1.000.000,--

Buat prototype program komputer dengan untuk menangani masalah ini. Inputkan nomor peserta lomba, nama peserta, dan pasangan titik koordinat (m,n) yang menunjukkan dimana seorang peserta harus berhenti saat peluit akhir permainan ditiup. Semua inputan nomor peserta lomba tidak diijinkan menggunakan bilangan negatif, akan tetapi nomor lomba 0 digunakan secara khusus untuk menghentikan inputan data peserta.

Pada akhir proses, program komputer akan menghitung:

  • Jumlah peserta yang mendapat hadiah Rp. 100.000,--
  • Jumlah peserta yang mendapat hadiah Rp. 250.000,--
  • Jumlah peserta yang mendapat hadiah Rp. 500.000,--
  • Nama seorang pemenang yang mencapai jarak terjauh
  • Total uang yang dikeluarkan panitia untuk membayar semua hadiah
  • Jumlah peserta lomba

Bantuan untuk Anda:

  • Untuk mendapatkan harga mutlak, gunakan fungsi ABS( )
  • Nilai A, B, dan C dari persamaan garis start dimasukkan pertama, dan sekali saja, sebelum entry semua data peserta lomba.
C17.

Sebuah mini market ingin menggunakan komputer sebagai cash register untuk menangani seluruh penjualan dalam satu hari kerja. Untuk setiap pembeli, kasir mengisikan sebuah nomor nota penjualan. Selain itu untuk seorang pembeli kasir juga mengisikan sejumlah (satu atau lebih) kode barang, nama barang, banyaknya barang, dan harga satuan. Spesifikasi prosesnya sebagai berikut:

  • Proses input data barang untuk seorang pembeli diakhiri dengan mengisi string '###' pada kode barang.

  • Output yang dicetak untuk seorang pembeli adalah semua data barang yang dibeli dan total uang yang harus dibayar pembeli itu.

Untuk mengakhir proses penjualan -- ketika mini market akan tutup -- kasir mengisikan nilai 0 pada nomor nota penjualan. Saat proses diakhiri, program komputer yang dibuat diminta untuk mencetak jumlah uang yang diterima oleh mini market tersebut. Semua data diinputkan melalui keyboard. Tulislah flowchart dan programnya.

 D. Array
D1. Given a vector a( ) of n real numbers, draw a flowchart to obtain the largest difference and smallest difference between two consecutive elements of this vector.
D2. Consider the following problem. Given arrays A and B which each have n elements. The elements in the arrays are not necessarily in sorted order and each array can contain repeated elements We define A and B to be disjoint if they contain no elements in common. For example, the arrays [1,7,2,5,2] and [6,7,8,9,6] are not disjoint because they both contain the number. However the arrays [2,1,7,2,5] and [8,8,9,6,9] are disjoint. Draw a flowchart to determine whether arrays A and B are disjoint. If the arrays are disjoint the algorithm should return a pair (i,j) such that A[i]=B[j]. Otherwise the algorithm should return (0,0).
D3. Tulislah sebuah flowchart untuk menggeser n elemen vektor v[ ] sejauh p. Nilai-nilai n, p, dan seluruh elemen vektor v[ ] diisi melalui keyboard (syarat: n>0, p<>0, dan n>|p|). Jika p positif pergeseran ke kanan, sebaliknya jika negatif arahnya ke kiri. Contoh untuk v[ ] = 12, 98, 56, 73, 77, 45, 32, 42, 90 (n=9):
  • jika p = - 6 maka vektor v[ ] akan menjadi : 32, 42, 90, 12, 98, 56, 73, 77, 45
  • jika p = + 4 maka vektor v[ ] akan menjadi : 45, 32, 42, 90, 12, 98, 56, 73, 77
  • Cetak susunan elemen vektor sebelum dan sesudah pergeseran. Untuk mencetak sebaiknya gunakan modul.

    D4. The Sieve of Eratosthenes, named after a third-century Greek astronomer and geographer, is a technique for generating prime number. We begin by writing all the odd integers from 3 up to N, then crossing out every third element after 3, every fifth element after 5, and so on until multiples of all odd integers less than vN have been eliminated. The integers remaining in the list are exactly the prime numbers from 3 to N. Draw a flowchart to generate the prime numbers from 3 to 1,000 using the sieve technique.
    D5.

    Hilangkan elemen yang kembar (double-check) pada sebuah vektor seperti contoh berikut:

    Jika jumlah elemen vektor diisi 10, dan masing-masing elemennya adalah:

    A1  A2  A3  A4  A5  A6  A7  A8  A9  A10

    15  31  23  15  75  23  41  15  31  85

    Maka output algoritma / program ini adalah informasi bahwa jumlah elemen vektor baru adalah 6 dan masing-masing elemennya adalah:

    A1  A2  A3  A4  A5  A6

    15  31  23  75  41  85

    D6.

    Hasilkan teks ejaan dari suatu bilangan dalam bahasa Indonesia yang baik dan benar . Range bilangan yang dapat dimasukkan adalah mulai 1 sampai 99999.

    Beberapa contoh:

     

    Masukkan bilangan : 11712

    Teks Ejaannya     : sebelas ribu tujuh ratus dua belas

    Masukkan bilangan : 2052

    Teks Ejaannya     : dua ribu lima puluh dua

    Masukkan bilangan : 5555

    Teks Ejaannya     : lima ribu lima ratus lima puluh lima

     

    D7.

    Membuat matriks identitas A[I , J] berukuran N x N. Sebagai input adalah n yang harus dalam range 2 sampai dengan 50. Jika tidak memenuhi syarat ini, maka pengisian nilai n harus diulang. Matriks identitas adalah matriks bujursangkar (N x N) yang semua elemennya berisi 0, kecuali elemen diagonal utama yang berisi 1.

    D8. An array is a palindrome if it reads the same in both directions. For example,

    3 5 7 2 4

    is not a palindrome; however, the following one is.

    4 2 6 2 4

    Write a program that reads in an array and checks if it is a palindrome.

    D9.

    Ingatlah baik-baik problem Knight Tour yang anda pelajari:

    Tunjukkan perjalanan kuda sampai mati langkah dengan menggambar papan catur (6 x 6) yang diisi angka-angka mulai 1,2,3 dan seterusnya, untuk masing-masing perintah di bawah ini:

    1. Kuda berangkat dari posisi Y=5, X=3, dengan prioritas gerakan kuda mulai V = +2, H = -1, yang memutar berlawanan dengan jarum jam.

    2. Kuda berangkat dari posisi Y=5, X=3, dengan prioritas gerakan kuda mulai V = +2, H = -1, yang memutar berlawanan dengan jarum jam, namun demikian baris terakhir pada segmen algoritma di bawah ini tidak ditulis:

    IF KOTAK[ Y+V[P], X+H[P] ] <> 0

       THEN P <--- P+1

       ELSE NOLANGKAH <--- NOLANGKAH + 1

            Y <--- Y + V[P]

            X <--- X + H[P]

            KOTAK[Y,X] <--- NOLANGKAH

            P <--- 1    {baris ini saja yang tidak ditulis}

    D10. A vector of length n is an ordered list of n elements, V = [ v1, v2, ... vn ], and can be represented in a program as a one-dimensional array of length n. Consider two vectors A and B, both of length n. The dot product of A and B, denoted A . B, is the sum of the n pairwise products of the vectors' elements:

    A . B = a1.b1 + a2.b2 + ... + an.bn

    Write a program that:

    1. prompts the user and inputs an integer representing the length of both of the vectors;
    2. dynamically allocates memory for both of the vectors;
    3. prompts the user and inputs all of the elements of the first vector;
    4. prompts the user and inputs all of the elements of the second vector;
    5. calculates the dot product of the two vectors;
    6. outputs the dot product of the two vectors.

    For this exam problem, you are not required to have comments, idiotproofing or a greeting (though you should prompt the user for input), and you may use numeric literal constants in the body of your program; otherwise, all rules for programming projects apply. Note that the array elements are numbers but are not constrained to be integers.

    D11. Write a program that reverses the order of the elements of a given array. For example, if the given array contains five elements:

    56, 78, 10, 3, 50, 7, 21, 4, 89

    after reversing the order of elements, the result is

    89, 4, 21, 7, 50, 3, 10, 78, 56

    D12.

    Isilah vektor A[ ] dengan N elemen bilangan bulat. Periksa validitasnya bahwa nilai N harus dalam range 2 sampai dengan 100. Selain itu periksa pula validitas semua elemen A[i] bahwa 0<A[i]<=50. Jika tidak memenuhi syarat pengisian data harus diulangi. Kemudian lakukan pengelompokkan ke dalam vektor B[ ] dengan cara semua elemen yang gasal ke kiri dan semua elemen yang genap ke kanan, sedangkan urutan antara elemen tak berubah, jadi vektor B[ ] tetap sebanyak N elemen. Sebagai contoh:

    Jika A[ ] diisi dengan:

    2, 49, 47, 36, 15, 8, 20, 24, 26, 19, 10, 17, 38, 48, 19, 50

    maka vektor B[ ] akan berisi:

    49, 47, 15, 19, 17, 19, 2, 36, 8, 20, 24, 26, 10, 38, 48, 50

    Syarat: Hanya boleh menggunakan sebuah loop REPEAT-FOR, tidak boleh menggunakan tambahan loop lainnya, dengan kategori apapun.

     E. Modularity: Procedures & Functions

    E1 Write a procedure named printTable that accepts a height and a width as parameters and then prints a table of those dimensions, where the table follows the following pattern:

    1  2  3  4  5

    2  4  6  8  10

    3  6  9  12 15

    4  8  12 16 20

    The above table is the result of calling printTable(4, 5).

    E2. Tulis flowchart untuk masing-masing modul di bawah ini. Untuk setiap flowchart jawabannya, tulislah parameternya secara lengkap.
    1. Sebuah Function Max untuk mendapatkan nilai maximal dari 2 buah bilangan, dan
    2. Sebuah Procedure CariMax yang juga untuk mendapatkan nilai maximal dari 2 buah bilangan.
    E3. Tulis flowchart untuk masing-masing modul di bawah ini. Untuk setiap flowchart jawabannya, tulislah parameternya secara lengkap.
    1. Sebuah Function RataRata untuk mendapatkan rata-rata dari 3 buah bilangan.
    2. Sebuah Procedure CariRataRata yang juga untuk mendapatkan rata-rata dari 3 buah bilangan.
    E4. Tulis flowchart untuk masing-masing modul di bawah ini. Untuk setiap flowchart jawabannya, tulislah parameternya secara lengkap.
    1. Sebuah Function Total untuk mendapatkan total penjumlahan dari 3 buah bilangan.
    2. Sebuah Procedure CariTotal , juga untuk mendapatkan total penjumlahan dari 3 buah bilangan.
    E5.

    Algoritma Function SIMETRIS(M[ ] , N) yang akan memeriksa apakah M adalah matriks yang simetris? Output fungsi boolean ini akan TRUE, jika dan hanya jika M adalah matriks yang simetris. Matriks M disebut simetris jika pada semua elemen di dalamnya berlaku M[i,j]=M[j,i]. Sebagai contoh, matriks berikut ini adalah simetris:

    8    29   45   10

    29   57  100    0

    45  100   13   15

    10    0   15  -99

    Syarat proses: Sebuah elemen tidak boleh diperiksa lebih dari sekali.

    E6.

    Design a procedure to compute Sigma, the summation of the n elements of a vector x( ) and Prod, the product of the n elements of x( ), an integer vector. x( ) and n are parameters of the procedure.

    E7. Algoritma Function Odd(N) yang akan memeriksa bilangan N genap atau gasal? Function boolean ini akan bernilai TRUE, jika dan hanya jika N bilangan gasal.
    E8. Write a function NumberOfDigit that takes an integer number as an argument and returns the number of digits in its decimal representation. For example, the integer 1023 has four digits.
    E9. Write a Boolean Function isPerfect() that takes a non-negative integer n and returns true if n is a perfect number and false otherwise. A perfect number n is a number that equal to the sum of all the numbers that smaller than n, AND divisible by the smaller number. For example:
  • 6 is a perfect number, because 6 = 1 + 2 + 3
  • 28 is a perfect number, because 28 = 1 + 2 + 4 + 7 + 14
  • however, 4 is not a perfect number because 4 <> 1 + 2.
  • E10.

    Algoritma Procedure MaxMin(A[ ], N, max, min) yang akan mendapatkan nilai maksimal dan sekaligus minimal dari vektor A[] sejumlah N elemen. Nilai maksimal akan disimpan ke dalam variabel max, sedangkan nilai minimal akan disimpan ke dalam variabel min.

    E11.

    Algoritma Procedure NewSelectionSort(A[ ], N, FIRST, LAST) yang adalah modifikasi metode sorting Selection Sort untuk mengurutkan vektor A[ ] sebanyak N elemen secara descending. Parameter FIRST dan LAST, masing-masing adalah posisi awal dan akhir range (daerah) yang diurutkan, artinya semua elemen di luar range ini tidak diurutkan atau dibiarkan seperti keadaan semula. Sebagai contoh, jika vektor V[ ] adalah 100, 10, 1, 50, 500, 555, 5, 111, 505, 0, 55, 501, 0, 55, 500, 55, maka CALL NewSelectionSort(V[ ], 16, 6, 13) akan menyebabkan susunan vektor V[ ] menjadi:

    100, 10, 1, 50, 500, 0, 0, 5, 55, 111, 501, 505, 555, 55, 500, 55

    Dalam procedure ini harus diperiksa lebih dahulu, jika FIRST dan LAST bukan nilai-nilai dalam range 1 s.d. N, ataupun FIRST > LAST, maka procedure ini tidak melakukan proses apapun.

    E12.

    Dengan menggunakan box diagram, tulislah Function Range (v[] , n) yang berguna untuk mendapatkan nilai range sebuah vektor. Range diperoleh dengan menghitung selisih nilai maksimal dan minimal vektor v[] sejumlah n elemen. Sebagai contoh, jika isi vektor v[] adalah (34, 77, 83, 23, 11, 10, 35), maka nilai rangenya adalah nilai maksimal (83) - nilai minimal (10) atau 73.

    E13. Given a continuous equation f(x)=0 and two values a and b (a < b), if f(a)*f(b) < 0 (i.e., f(a) and f(b) have opposite signs), it can be proved that there exists a root of f(x)=0 between a and b. More precisely, there exists a c, a <= c <= b, such that f(c)=0 holds. This result provides us with a method for solving equations. If we take the midpoint of a and b, c=(a+b)/2, and computes its function value f(c), we have the following cases:

    If f(c) is very small (i.e., smaller than a tolerance value), then c can be considered as a root of f(x)=0 and we are done.

    Otherwise, since f(a) and f(b) have opposite signs, the sign of f(c) is either identical to that of f(a) or that of f(b).

    • If the sign of f(c) is different from that of f(a), then since f(a) and f(c) have opposite signs, f(x)=0 has a root in the range of a and c.
    • If the sign of f(c) is different from that of f(b), then since f(b) and f(c) have opposite signs, f(x)=0 has a root in the range of c and b.

    Therefore, if the original interval [a,b] is replaced with [a,c] in the first case or replaced with [c,b] in the second case, the length of the interval is reduced by half. If continue this process, after a number of steps, the length of the interval could be very small. However, since this small interval still contains a root of f(x)=0, we actually find an approximation of that root!

    Write a program that contains two functions: (1) Funct() - the function f(x) and (2) Solve() - the equation solver based on the above theory. Then, reads in a and b and uses function Solve() to find a root in the range of a and b. Note that before calling Solve, your program should check if f(a)*f(b)<0 holds. Since this process keeps dividing the intervals into two equal halves, it is usually referred to as the Bisection method. It is also known as Bozano's method.

    E14. Tulislah flowchart untuk Procedure GanjilGenap(V( ) , N , jumlahGanjil, jumlahGenap, totalGanjil, totalGenap) yang berguna untuk menghitung jumlah bilangan yang ganjil dan yang genap, serta total bilangan yang ganjil dan yang genap dari N elemen vektor V( ). Contoh untuk V( )=(12, 56, 11, 10, 12, 10, 19) dengan N=7, maka jumlahGanjil=2, jumlahGenap=5, totalGanjil=30 (dari 11+19), dan totalGenap=100 (dari 12+56+10+12+10).
    E15. Dengan menggunakan pseudo code, tulislah Procedure GetFactors(x, f[], n) yang berguna untuk mendapatkan daftar faktor / divisor, yang akan diletakkan dalam vektor f[] sejumlah n, dari sebuah bilangan integer x. Angka 1 selalu menjadi faktor x apapun, tetapi nilai x sendiri tidak menjadi anggota vektor output. Sebagai contoh jika x=220 maka n=11 dan vektor f[] akan berisi elemen-elemen: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110. Contoh lainnya jika x=36, maka f[] berisi 1, 2, 3, 4, 6, 9, 12, 18. Catatan: Jika soal nomor E15 ini tidak dapat dikerjakan, nomor E16 dan nomor E17 tetap dapat dikerjakan.
    E16. Dengan memanfaatkan Procedure GetFactors (dari soal nomor E15), tulislah sebuah flowchart untuk memasukkan sebuah bilangan melalui keyboard -- pastikan bahwa bilangan ini harus positif, kemudian menampilkan keterangan bahwa bilangan tersebut prima atau bukan prima.
    E17. Pasangan bilangan amicable adalah suatu pasangan bilangan dimana jumlah semua faktor dari bilangan pertama adalah bilangan kedua, dan sebaliknya. Bilangan 220 dan 284 adalah contoh pasangan bilangan amicable terkecil, karena faktor dari 220 = 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 (Jumlahnya adalah 284) sedangkan faktor dari 284 = 1, 2, 4, 71, 142 (Jumlahnya adalah 220). Asumsikan telah tersedia Function Sum yang berguna untuk mendapatkan total elemen sebuah vektor.

    FUNCTION Sum (v[], n)

    1. acc <--- 0

    2. REPEAT FOR c = 1, 2, 3, ....., n

           acc <--- acc + v[c]

    3. Sum <--- acc

    Tulislah sebuah flowchart untuk mencetak semua pasangan bilangan amicable yang mungkin dalam range 1 sampai 100000, dengan memanfaatkan Function Sum dan Procedure GetFactors (dari soal nomor E15).

     F. Sorting & Searching

    F1.

    Perhatikan unordered vector (vektor yang belum diurutkan) berikut ini:

    100, 10, 1, 50, 500, 505, 501, 0, 111, 5, 555, 55, 0, 55, 500, 55

    Tunjukkan perubahan susunan vektor pada masing-masing pass, jika data diurutkan dengan:

    • Radix Sort

    • Merge Sort

    Setelah unordered vector di atas telah diurutkan secara ascending order, tabelkan perubahan semua nilai low, mid dan high pada metode pencarian data:

    • Binary Search, jika data yang dicari adalah 15.

    • Fibonacci Search, jika data yang dicari adalah 55.

    F2.

    Pada setiap bulan sebuah perusahaan menyimpan data penjualan produknya dalam sebuah file. Asumsikan struktur recordnya sangatlah sederhana, yaitu Kode Produk, Nama Produk dan Jumlah Produk Terjual dalam Bulan Tersebut. Akibatnya sampai hari ini perusahaan telah memiliki sejumlah file yang strukturnya sama. Untuk evaluasi unjuk kerja perusahaan, pimpinan ingin memperoleh Daftar Penjualan Produknya selama dua bulan terakhir, yang mana untuk setiap produk hanya diperlukan informasi Total Jumlah Produk Terjual Selama Dua Bulan.Pada kasus seperti ini teknik penggabungan data seperti apakah yang harus dipakai? Simple Merge ? Mailing List? atau justru Bukan Keduanya ? Jelaskan jawaban anda.

     G. Stepwise Refinement

    G1.

    Bilangan 38 ditambah 83 menghasilkan 121, yang bersifat palindrom, sebab bila dibaca dari depan atau belakang hasilnya sama saja. Sedangkan 68 ditambah dengan 86 hasilnya 154 dan bukan palindrom, tetapi jika diulang terus (hasilnya ditambah dengan kebalikannya) pada satu saat akan diperoleh bilangan yang palindrom, sebagai contoh:

     68 +  86 = 154  (bukan palindrom, lanjutkan!)

    154 + 451 = 605  (bukan palindrom, lanjutkan!)

    605 + 506 = 1111 (palindrom, hentikan!)

    Isilah sebuah bilangan dan mencetak rangkaian bilangan hasil penjumlahannya terus-menerus sampai menghasilkan palindrom. Contoh lain, bila inputnya 1872, flowchart akan mencetak: 4653, 8217, 15345, 69696 (berhenti, karena bilangan yang terakhir adalah palindrom).

    Lakukan pengembangan sebuah algoritma -- flowchart atau Box-Diagram -- dengan stepwise refinement untuk menyelesaikan masalah ini.

    G2.

    "Tantangan Rantai". Guru Karen dan Alan, Pak Khan, menyuruh mereka menyelidiki rantai bilangan berikut: "Mulai dengan sembarang bilangan cacah, menambah satu jika bilangan itu ganjil; atau membagi dua bila bilangan itu genap", dan begitu seterusnya sampai berakhir menjadi 1. Misalnya:

    13 ---> 14 ---> 7 ---> 8 ---> 4 ---> 2 ---> 1

    yang mulai dengan angka 13 dan berakhir menjadi 1 setelah 6 langkah. Beberapa waktu kemudian Pak Khan menantang mereka untuk menemukan bilangan kurang dari 2000 yang menghasilkan rantai terpanjang. Segera Alan menghidupkan komputernya, membuat program untuk keperluan ini.

    Soal: Lakukan stepwise refinement dengan box diagram untuk membuat flowchart dari program yang dirancang Alan untuk keperluan ini, yaitu mendapatkan bilangan mana (kurang dari 2000) yang menghasilkan rantai terpanjang.

    KITA PEDULI

    Di Yayasan Pendidikan Tuna Wisma dan Cacat (YPTK) "Pelayanan Kasih" Simpang Darmo Permai Selatan XV/121 Surabaya terdapat kurang lebih 150 penderita cacat -- buta, tuli, gangguan mental -- dan tuna wisma dari berbagai usia yang berbeda.

    Di sana tinggal bayi-bayi beberapa bulan sampai manula delapan puluhan tahun, yang mungkin disia-siakan keluarganya.....

    Rencana Allah saja -- dalam misteri keadilanNya yang tak pernah kita ketahui -- yang membawa mereka ada di sana, sedangkan kita ada di sini.

    Kunjungilah Tuhan..... Di sana!

    Home | Kontak Saya | Eureka! | ArenA | Bimbingan Tugas Akhir | Download | Links
    Algoritma & Pemrograman 1 | Algoritma & Pemrograman 2 | Struktur Data | Teknik Kompilasi | Kecerdasan Buatan
    KDD & Data Mining | Web Mining | E-Business | Systems Analysis and Design

    Copyright (C) December 2004, October 2007, www.hansmichael.com