Rabu, 19 Januari 2011

Tugas Teori Algoritma dan Pemrograman (end)

13. Buat tampilan program di bawah ini dengan menggunakan metode perulangan:
       1 2 3 4                         2 2 2                           3 2 1
       1 2 3 4                         1 1 1                           3 2 1
       1 2 3 4                         0 0 0                           3 2 1
       1 2 3 4

       1                                  4 3 2 1                        1
       1 2                               4 3 2                           3   5
       1 2 3                            4 3                              7   9   11
       1 2 3 4                         4                                 13 15 17 19

14.  Buat urutan angka dari terkecil sampai terbesar dari 5 (lima) nilai yang  diinput. Gunakan metode urutan,
       pemilihan dan pengulangan.
       Layout:
       Angka 1         : 8
       Angka 2         : 17
       Angka 3         : 5
       Angka 4         : 7
       Angka 5         : 18
       Hasil urutan sebagai berikut:
       5          7          8          17        18

15. Buat program sederhana menggunakan metode pemilihan untuk menampilkan keterangan umur di mana:
Umur         Keterangan           
0-5Balita
6-13Anak-anak
14-25Remaja
26-40Dewasa
> 41Orang Tua

     Dengan memasukkan nama, nim, program studi, dan tahun lahir, maka akan ditampilkan
      umur dan keterangan umur.
      Layoutnya:
      Nama                 : Olis AB. Yusuf
      Nim                    : 21015269
      Program studi  : Sistem Informasi
      Tahun lahir        : 1991

      Umur                 :20
      Keterangan      : Remaja

Penyelesaian:

13. 1) Listing Program:

  1. uses crt;  
  2. var i, j: byte;  
  3. begin  
  4.   clrscr;   
  5.   for i:= 1 to 4 do  
  6.    begin  
  7.      for j:= 1 to 4 do  
  8.      write(j:4); writeln(#10);  
  9.    end;  
  10.   readln;  
  11. end.  

     2)
Listing Program:
  1. uses crt;  
  2. var A, i, j: byte;  
  3. begin  
  4.   clrscr;  
  5.   A:=2;  
  6.   for i:= 1 to 3 do  
  7.    begin  
  8.      for j:= 1 to 3 do  
  9.      write(A:4);  
  10.      A:=A-1;  
  11.      writeln(#10);  
  12.    end;  
  13.    readln  
  14. end.  

     3)
Listing program
  1. uses crt;  
  2. var i, j: byte;  
  3. begin  
  4.   clrscr;  
  5.   for i:= 1 to 3 do  
  6.    begin  
  7.      for j:= 3 downto 1 do  
  8.      write(j:4);  
  9.      writeln(#10);  
  10.    end;  
  11.   readln  
  12. end.  
     4) Listing Program:
  1. uses crt;  
  2. var i, j: byte;  
  3. begin  
  4.   clrscr;  
  5.   for i:= 1 to 4 do  
  6.    begin  
  7.      for j:= 1 to i do  
  8.      write(j:4);  
  9.      writeln(#10);  
  10.    end;  
  11.   readln  
  12. end.  

     5) Listing Program
  1. uses crt;  
  2. var i, j: byte;  
  3. begin  
  4.   clrscr;  
  5.   for i:= 1 to 4 do  
  6.    begin  
  7.      for j:= 4 downto i do  
  8.      write(j:4);  
  9.      writeln(#10);  
  10.    end;  
  11.    readln  
  12. end.  

     6)
Listing Program:
  1. uses crt;  
  2. var A, i, j: byte;  
  3. begin  
  4.   A:=1;  
  5.   for i:= 1 to 4 do  
  6.    begin  
  7.      for j:=1 to i do  
  8.       begin  
  9.         write(A:4);  
  10.         A:=A+2;  
  11.       end;  
  12.       writeln(#10);  
  13.    end;  
  14.    readln  
  15. end.  


14. Program pengurutan data yang diinput secara acak.
      Menggunakan metode  selection sort
      Jika min menyatakan indeks elemen terkecil dari  elemen ke i sampai elemen ke n, di mana n merupakan
        jumlah data yang akan diurutkan. Algoritma untuk mencari elemen terkecil adalah:
for i:= 1 to n-1 do 
{cari elemen terkecil}
min:= i {min adlh index elemen terkecil}
for j:= i+1 to n do
if x[j] <= x[min] then
min:= j eif
efor
{menukar elemen terkecil dengan elemen i}
temp:= x[min]
x[min]:= x[i]
x[i]:= temp
efor
       Listing Program:
  1. uses crt;  
  2. var x: array[1..5of integer;  
  3.     n,min,temp,i,j: integer;  
  4. begin  
  5.   clrscr;  
  6.   writeln('Program pengurutan bilangan');  
  7.   writeln('____________________________');  
  8.   writeln;  
  9.   for n:=1 to 5 do  
  10.    begin  
  11.     write('Input bilangan ',n,': ');readln(x[n]);  
  12.    end;  
  13.    n:=5;  
  14.    for i:=1 to n-1 do  
  15.     begin  
  16.       min:=i;  
  17.       for j:=i+1 to n do  
  18.        begin  
  19.          if x[j] <= x[min] then  
  20.          min:=j;  
  21.        end;  
  22.          temp:=x[i];  
  23.          x[i]:=x[min];  
  24.          x[min]:=temp;  
  25.     end;  
  26.    writeln(#10);  
  27.    writeln('Hasil pengurutan adalah:');  
  28.    writeln;  
  29.    for n:=1 to 5 do  
  30.    write(x[n]:4);  
  31.    readln  
  32. end.  

15. Program pascal untuk mengisi biodata mahasiswa serta menampilkan umur dan keterangan umur
      secara otomatis:
  1. uses crt;  
  2. var lahir, umur: integer;  
  3.     ket: string;  
  4. begin  
  5.   write('NIM          : ');readln;  
  6.   write('Nama         : ');readln;  
  7.   write('Program Studi: ');readln;  
  8.   write('Tahun Lahir  : ');readln(lahir);  
  9.   writeln(#10);  
  10.    umur:=2010-lahir;  
  11.     if umur<=5 then ket:='balita'  
  12.       else if umur<=13 then ket:='anak-anak'  
  13.         else if umur<=25 then ket:='remaja'  
  14.           else if umur<=40 then ket:='dewasa'  
  15.             else ket:='orang tua';  
  16.   writeln('Umur      : ', umur);  
  17.   writeln('Keterangan: ', ket);  
  18.   readln  
  19. end.  

Tugas Teori Algoritma dan Pemrograman (bag.3)

9. Masukkan sebuah bilangan kemudian tentukan apakah bilangan yang diinput adalah bilangan ganjil
    atau bilangan genap. Gunakan metode pemilihan.
     Layout:
     Masukkan sebuah bilangan: 3 --> ENTER
     Bilangan yang anda input adalah bilangan ganjil
10.Masukkan bilangan 1, setelah itu bilangan 2, kemudian lakukan proses penjumlahan, perkalian,
     pengurangan, dan pembagian. Hasil dari keempat proses aritmatika tersebut ditampilkan.
      Layout:
      Bilangan 1:  6
      Bilangan 2:  3
      Hasil penjumlahan  = 9
      Hasil pengurangan = 3
      Hasil perkalian      = 18
      Hasil pembagial     = 2

11.Masukkan nilai jari-jari sebuah lingkaran. Kemudian program akan menampilkan hasil perhiutungan
     luas lingkaran.
       Layout:
       Jari-jari lingkaran: 7
       Luas lingkaran adalah: 154
 12.Buat algoritma dan program untuk menghitung luas yang diarsir pada gambar berikut.

Penyelesaian:

9. Program pascal untuk menentukan bilangan bulat yang diinput adalah bilangan ganjil atau genap:
  1. uses crt;  
  2. var lagi: char; x: longint; ket: string;  
  3. begin  
  4.   clrscr;  
  5.   lagi:='Y';  
  6.   while lagi='Y' do  
  7.    begin  
  8.      clrscr;   
  9.      write('Masukkan sebuah bilangan bulat: ');readln(x);  
  10.      if x mod 20 then ket:='genap'  
  11.       else ket:='ganjil';  
  12.      writeln;   
  13.      writeln('Bilangan yang diinput adalah bilangan ',ket);  
  14.      write('Coba lagi (Y/N ): '); read(lagi);  
  15.      end;  
  16.   readln  
  17. end.  

10. Program pascal untuk menghitung hasil proses aritmatika dari dua bilangan bulat yang diinput:
  1. uses crt;  
  2. var  b1, b2: longint;  
  3. begin  
  4.   clrscr;  
  5.   write('Bilangan 1: '); read(b1);  
  6.   write('Bilangan 2: ');readln(b2);  
  7.   writeln(#10);  
  8.   writeln('Hasil penjumlahan= ', b1+b2);  
  9.   writeln('Hasil pengurangan= ', b1-b2);  
  10.   writeln('Hasil perkalian  = ', b1*b2);  
  11.   writeln('Hasil pembagian  = ', b1/b2 :0:0);  
  12.   readln;  
  13. end.  

11. Program pascal untuk menghitung luas lingkaran dengan menginput jari-jari lingkaran (r):
  1. uses crt;  
  2. var L,r: real;  
  3. const pi=3.14;  
  4. begin  
  5.    clrscr;  
  6.    write('Jari-jari lingkaran= '); readln(r);  
  7.      L:= pi * sqr(r);   
  8.    writeln('Luas lingkaran   = ', L:0:0);  
  9.    readln  
  10. end.  

12. Algortma untuk menghitung luas daerah yang diarsir pada gambar:
  1. Menentukan nilai panjang sisi luar (pL): pL= 18, lebar sisi luar (lL): lL= 12, panjang sisi dalam (pT): pT= 10, dan lebar sisi dalam (lT): lT= 5.
  2. Menghitung luas total, LTotal= pL x lL
  3. Menghitung luas tengah, LTengah= pT x lT
  4. Didapat luas yang diarsir, LArsir= LTotal-LTengah
      Listing Program:
  1. uses crt;  
  2. var pL, lL, pT, lT, L_total, L_tengah: integer;   
  3. begin  
  4.   clrscr;  
  5.   pL:=18;  lL:=12;  pT:=10;  lT:=5;  
  6.   L_total:= pL*lL;  
  7.   L_tengah:= pL*lL;  
  8.   writeln('Luas total     = ', L_total);  
  9.   writeln('Luas tengah    = ', L_tengah);  
  10.   writeln('Luas yg diarsir= ', L_total-L_tengah);  
  11.   readln;   
  12. end

Tugas Teori Algoritma dan Pemrograman (bag.2)

Buatlah Algoritma kemudian terjemahkan ke dalam bahasa pemrograman pascal 

4. Menampilkan bilangan kelipatan tiga dari angka 1 s/d 20
5. Menampilkan bilangan ganjil dari angka 1 s/d 100
6. Menampilkan bilangan genap dari angka 1 s/d 50
7. Menampilkan bilangan prima dari angka 1 s/d 20
8. Menampilkan bilangan kelipatan 3 dan kelipatan 5 dari angka 1 s/d 30



Penyelesaian

4. Algoritma untuk menampilkan bilangan kelipatan 3 dari 1 s/d 20:
  1. menentukan nilai awal A:=3
  2. untuk i:=1 sampai 6 lakukan:
    • cetak A (nilai awal)
    • berikutnya cetak A:=A+3 lakukan sampai i ke 6, berhenti.
    listing program:
  1. uses crt;  
  2. var A, i: byte;  
  3. begin  
  4.   clrscr;  
  5.   A:=3;  
  6.   for i:=1 to 6 do  
  7.    begin  
  8.      write(A:4);  
  9.      A:=A+3;  
  10.    end;  
  11.   readln;  
  12. end.  

5. Algoritmanya untuk menampilkan bilangan ganjil dari 1 s/d 100:
  • untuk a:=1 sampai 100 lakukan:
    • jika a mod 2=1 maka
    • cetak a
    listing program:
  1. uses crt;  
  2. var a: byte;  
  3. begin  
  4.   for a:= 1 to 100 do  
  5.    begin  
  6.      if a mod 21 then  
  7.      write(a:4);  
  8.    end;  
  9.   readln  
  10. end.   


6. Algoritma untuk menampilkan bilangan genap dari 1 s/d 50:
  • untuk a:=1 sampai 50 lakukan:
    • jika a mod 2= 0 maka
    • cetak a.
    listing program:
  1. uses crt;  
  2. var a: byte;  
  3. begin  
  4.   clrscr;  
  5.   for a:= 1 to 50 do  
  6.    begin  
  7.      if a mod 20 then  
  8.      write(a:4);  
  9.    end;  
  10.   readln  
  11. end.  

7. Algoritma untuk menampilkan bilangan prima dari 1 s/d 20:
    Cara pertama menggunakan variabel bertipe boolean (true/false):
  1. bilangan prima hanya akan habis bila dibagi 1 dan bilangan itu sendiri.
  2. sehingga pasti akan ada sisa hasil bagi (mod) jika dibagi bilangan lebih dari 1 sampai bilangan sebelum bilangan itu (x-1).
  3. untuk nilai x= 2 sampai 20 lakukan:
    • mengeset status bilangan prima menjadi true.
    • pengecekan mulai dari 2 sampai x-1.
    • jika x habis dibagi bilangan yang ada antara 2 sampai x-1, berarti x bukan bilangan prima. Variabel prima yang awalnya true berubah jadi false dan pengecekan tidak perlu dilanjutkan (break).
    • jika dari bilangan antara 2 sampai x-1 tak satupun yang habis dibagi, maka variabel prima yang dideklarasikan sebagai true tidak berubah nilai (tetap true). Sehingga bilangan tersebut adalah bilangan prima dan akan ditampilkan ke layar.
    • ulangi lagi dari point 4 hingga nilai x = 20.
     Listing Program:
  1. uses crt;  
  2. var x,y: integer;  
  3.     prima: boolean;  
  4. begin  
  5.   clrscr;  
  6.   for x:= 2 to 20 do  
  7.    begin  
  8.      prima:= true;  
  9.      for j:= 2 to x-1 do  
  10.       begin  
  11.         if x mod y= 0 then  
  12.          begin  
  13.            prima:= false;  
  14.            break;  
  15.          end;  
  16.       end;  
  17.       if prima then write(x:4);  
  18.    end;  
  19.    readln;  
  20. end.  
     Cara kedua menyeleksi jumlah nol dari sisa bagi:
  1. Telah kita ketahui bahwa bilangan prima hanya akan memiliki sisa bagi= 0 ketika dibagi dengan angka 1 dan bilangan itu sendiri.
  2. Berarti jika bilangan prima dibagi dengan bilangan berapapun hanya memiliki 2 kesempatan mendapatkan sisa bagi=0.
  3. Ketika jumlah sisa bagi=0 lebih dari 2  berarti bilangan tersebut bukan bilangan prima, tidak ditampilkan ke layar.
     Listing Program:
  1. uses crt;  
  2. var i,j, jumlahnol: integer;  
  3. begin  
  4.   clrscr;  
  5.   for i := 1 to 20 do  
  6.    begin  
  7.      jumlahnol:= 0;  
  8.      for j:= 1 to i do  
  9.       begin  
  10.         if i mod j = 0 then  
  11.         jumlahnol:= jumlahnol+1;  
  12.       end;  
  13.      if jumlahnol = 2 then  
  14.      write(i:4);  
  15.     end;  
  16.   readln  
  17. end.  


8. Algoritma untuk menampilkan bilangan kelipatan 3 dan kelipatan 5 dari
    angka 1 s/d 30:
  • Untuk i:= 1 sampai 30 lakukan:
    • jika (i mod 3= 0) dan (i mod 5 =0)
    • maka cetak i.
     Listing Program:
  1. uses crt;  
  2. var i: byte;  
  3. begin  
  4.   for i:= 1 to 30 do  
  5.    if (i mod 3=0and (i mod 5=0)   
  6.    then write(i:4);  
  7.   readln  
  8. end

Tugas Teori Algoritma dan Pemrograman (bag.1)

Buatlah Susunan Algoritma dari soal dibawah ini:
  1. Tiga pasang suami istri akan menyeberang sungai dari desa A ke desa B. Terdapat sebuah perahu dengan batas muatan hanya 2 orang saja yang akan digunakan untuk menyeberang. Permasalahan pun terjadi ternyata para suami-suami memiliki sifat cemburu, sehingga tidak bisa meninggalkan istrinya dengan suami lain. Susunlah algoritma untuk menyeberangkan ketiga pasang suami istri dari desa A ke desa B tanpa ada satu orang pun suami yang cemburu..
  2. Algoritma untuk mengisi voucher telepon genggam (HP)
  3. Algoritma untuk membuat sebuah pakaian jadi (baju atau celana) dari bahan mentah (kain) yang disediakan.

Penyelesaian

  1. Masing-masing pasangan disimbolkan dengan S1 I1, S2 I2, dan S3 I3
         Algoritmanya: 
         {di desa A: S1, I1, S2, I2, S3, I3 --- di desa B: belum ada} 
  • I1 dan I2 menyeberang ke desa B
         {di desa A: S1, S2, S3, I3 --- di desa B: I1, I2}
  • I2 kembali ke desa A
        {di desa A: S1, S2, I2, S3, I3 --- di desa B: I1} 
  • I2 dan I3 menyebrang ke desa B
         {di desa A: S1, S2, S3 --- di desa B: I1, I2, I3}
  • I3 kembali ke desa A
         {di desa A: S1, S2, S3, I3 --- di desa B: I1, I2}
  • S1 dan S2 menyeberang ke desa B
         {di desa A:  S3, I3 --- di desa B: S1, I1, S2, I2}
  • S2 dan I2 kembali ke desa A
         {di desa A: S2, I2, S3, I3 --- di desa B: S1, I1}
  • S2 dan S3 menyeberang ke desa B
         {di desa A: I2, I3 --- di desa B: S1, I1, S2, S3}
  • I1 kembali ke desa A
         {di desa A: I1, I2, I3 --- di desa B: S1, S2, S3}
  • I1 dan I2 menyeberang ke desa B
           {di desa A: I3 --- di desa B: S1, I1, S2, I2, S3}
  • I2 kembali ke desa A
         {di desa A: I2, I3 --- di desa B: S1, I1, S2, S3}
  • I2 dan I3 menyebrang ke desa B
         {di desa A: habis --- di desa B: S1, I1, S2, I2, S3, I3}

    2. Algoritma untuk mengisi pulsa HP
  • Voucher Elektrik
    1. Ketik SMS berikut: kode<spasi>nominal_pulsa<spasi>nomor_penerima<spasi>PIN
    2. Masukkan nomor provider pulsa
    3. Kirim
    4. Pulsa otomatis masuk ke nomor penerima setelah SMS berhasil diterima oleh provider pulsa.
  • Voucher Fisik
    1. Gesek kartu untuk melihat kode voucher
    2. Ketikkan kode voucher sesuai perintah (berbeda untuk tiap jenis Kartu SIM)
    3. Lalu tekan yes/Ok/telp.
    4. Pulsa otomatis bertambah sesuai nominal pada voucher.

    3. Algoritma untuk membuat pakaian
    1. Menyiapkan bahan, kain dan peralatan menjahit
    2. Menentukan ukuran, biasanya sudah ada ukuran standard (S-M-L-XL)
    3. Membuat pola
    4. Memotong kain sesuai pola, dilebihkan +5 cm untuk area menjahit
    5. Menjahit sesuai pola yang ada
    6. Merapikan pakaian yg sudah jadi