Sabtu, 25 Desember 2010

logika dan algoritma 1

     

                         teori logika dan algoritma 1

       1. tiga pasang suami istri akan menyeberang sungai dari desa  A ke desa B. terdapat sebuah perahu dengan batas muatan hanya 2  saja yang akan digunakan untuk menyeberang.permasalahanpun terjadi ternya 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…
            Jawab:
          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}

     2. Algoritma untuk mengisi voucher telepon genggam (HP)

     Jawab :
        
    1. Sediakan hp dan voucher As
           Proses:
           1.Bukalah plastik pembungkus voucher
           2.Gosok bagian berhologram untuk melihat kode voucher
           3. Masukkan kode voucher dengan cara :
           4. Hubungi 888 dan ikuti petunjuk selanjutnya atau,
           5. Tekan *133*kode voucher#lalu tekan YES/OK
     3. Algoritma untuk membuat sebuah pakaian jadi (baju atau celana) dari bahan mentah (kain) yang disediakan.

         Jawab:
          1. Siapkan alat dan bahannya
         2. Buatlah pola sesuai model pakaian (baju atau celana) yang diinginkan
         3. Guntinglah kain sesuai model pola
          4. Obras pinggiran kain yang telah digunting tadi
          5. Kemudian jahit kain yang telah diobras tadi untuk dibuat pakaian (baju atau celana)

    4. Menampilkan bilangan kelipatan 3 dari angka 1 s/d 20

    Jawab:
            -1. Beri nilai awal A=3
            -2. Untuk I = 1 sampai 20, lakukan
             2.1Cetak Nilai A
             2.2 Hitung : A = A + 3

    Program pascal:
     uses crt;
            var I,A: integer;
      begin
      clrscr;
       A:=3;
      for I:=1 to 6 do
      begin
      writeln(A);
      A:=A+3
     end;
      Readln;
           end.
     5. Menampilkan bilangan ganjil dari angka 1 s/d 100
     1. Beri Nilai A = 2.
      2. Untuk  I = 1 sampai 100 lakuka
      2.1  Cetak Nilai A
     2.2 Jika A mod 2 = 1 , maka nilai A = bilangan ganjil

     Program pascal:
     uses crt;
     var I,A: integer;
     begin
      A:=1;
      clrscr;
      for I:= 1 to 100 do
     begin
      if I mod 2= 1 then
      write(I:5);
     end;
      Readln;
           end.

     6. Menampilkan bilangan genap dari angka 1 s/d 50
    Jawab:
         - 1. Beri Nilai A = 1
         - 2. Untuk I = 1 samapi 50 lakukan
         2.1 Cetak Nilai A
         2.2  Jika A mod 2 = 0 , maka nilai A = bilangan genap

     Program pascal:
     uses crt;
     var I,A: integer;
     begin
     A:=1;
      clrscr;
      for I:= 1 to 50 do
    begin
    if I mod 2= 0 then
    write(I:5);
    end;
      Readln;
          end.

    7. Menampilkan bilangan prima dari angka 1 s/d 20

     Jawab :
     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 (kecuali 2) sampai bilangan sebelum bilangan itu (x-1).
     3.    mencetak 2 terlebih dahulu ke layar.
     4.    mengeset status bilangan prima menjadi true.
     5.    beri nilai  =1 (menandakan bilangan prima).
     6.    melakukan pengecekan mulai dari 2 sampai x-1.
     7.    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).
     8.    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.
     9.    tambahkan nilai x dengan 1 dan ulangi dari langkah ke-5 sampai nilai x= 20
      program pascal:
     uses crt;
      var x,y:  integer;
      prima: boolean;
      begin
      clrscr;
      write('2':4);
      for x := 3 to 20 do
     begin
      prima:=true;
     for y := 2 to x-1 do
     begin
     if (x mod y) = 0 then
     begin
      prima := false;
     break;
      end;
     end;
      if prima then write(x:4);
      end;
      Readln;
          end.

      8. Menampilkan bilangan kelipatan 3 dan kelipatan 5 dari angka 1 s/d 30
     Jawab:
      -    Untuk i:= 1 sampai 30 lakukan:
      -    jika i mod 3= 0 maka cetak i
      -    selain itu jika i mod 5= 0 maka cetak i.

   uses crt;
    var i: integer;
    begin
     clrscr;
     for i:= 1 to 30 do
     begin
      if i mod 3 = 0 then write(i:4)
                                  else
      if i mod 5 = 0 then write(i:4);
         end.

    9. Masukan sebuah bilangan kemudian tentukan apakah bilangan yang diinput termasuk bilangan ganjil, bilangan genap. Gunakan metode pemilihan
    Layout :
Masukan sebuah bilangan   : 3⇾ente
  Bilangan yang anda input adalah bilangan ganjil
     Jawab :

        1.1. Beri Nilai A
        2.2..Cetak Nilai A
        2.1 Jika A mod 2 = 0, maka A bilangan genap
        2.2 Jika tidak, maka A bilangan ganjil

        uses crt;
    var A: integer;
     begin
     write('masukan bilangan:');
      Readln(A);
      if (A mod 2)= 0 then
     write(A,' ','adalah bilangan genap')
      else
      write(A,' ','adalah bilangan ganjil');
     Readln;
          end.
    10. Masukan bilangan 1, setelah itu masukan bilangan 2, kemudian lakukan proses penjumlahan, perkalian pengurangan, dan pembagian. Hasil dari ke empat operasi aritmatika tersebut ditampilkan
     Layout :
    Bilangan 1   : 6
    Bilangan 2  : 3
    Hasil Penjumlahan : 9
    Hasil Pengurangan : 3
    Hasil Perkalian  : 18
    Hasil Pembagian : 2
     Jawab:
    uses crt;
    var A,B:integer;
    begin
      clrscr;
     Write('Bilangan 1: ');Readln(A);
      Write('Bilangan 2: ');Readln(B);
     Writeln('Hasil Penjumlahan= ',A+B);
      Writeln('Hasil Pengurangan= ',A-B);
      Writeln('Hasil Perkalian  = ',A*B);
      Writeln('Hasil Pembagian  = ',A/B:0:0);
     Readln;
          end.

     11. Masukan nilai jari-jari sebuah lingkaran. Kemudian program akan menampilkan

     hasil luas lingkaran.
     Layout :
     Jari-jarilingkaran  :7
     Luar Lingkaran adalah 154

     Jawab :
          1.1. Masukan nilai jari-jari yang menyatakan r
         2.2. Menetapkan nilai phi yaitu phi = 3.14
         3.3. Menghitung luas lingkaran yang menyatakan L yaitu L = phi * r * r
         4.4.Cetak hasil luas lingkaran(L)
     uses crt;
     constphi=3.14;
     varL,r:real;
     begin
     writeln('ProgramMenghitungLuasLingkaran');
      write('Masukanjari-jariLingkaran:');
     Readln(r);
     L:=phi*r*r;
     writeln('LuasLingkaranadalah:',round(L));
         Readln;
          end.
     12. Buat algoritma dan program untuk menghitung luas yang diarsir pada gambar dibawah ini

     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

         Program pascal:
         uses crt;
         var pL, lL, pT, lT, Ltotal , Ltengah: integer;
         begin
          clrscr;
          pL:=18; lL:=12; pT:=10; lT:=5;
         Ltotal:= pL*lL;
        Ltengah:= pT*lT;
          writeln('Luas total  = ', Ltotal);
         writeln('Luas tengah = ', Ltengah);
         writeln('Luas yang diarsir= ', Ltotal-Ltengah);
           readln;
                end.

    13 .Buat tampilan program dibawah 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

   
     Jawab:
         1.     uses crt;
          var I,J :integer;
         begin
         clrscr;
         for I:=    1 to 4 do
         begin
         for J:= 1 to 4 do
         write(J:4);
         writeln;
         end;
         readln;
             end.

         2. uses crt;
     var A, I,J: integer;
      begin
      clrscr;
      A:=2;
     for I:= 1 to 3 do
     begin
     for J:= 1 to 3 do
     write(A:4);
     A:=A-1; writeln;
     end;
     Readln;
          end.
3. uses crt;
       var i, j: byte;
     begin
     clrscr;
    for i:= 1 to 3 do
     begin
      for j:= 3 downto 1 do
     write(j:4); writeln;
     end;
     readln;
          end.
     4. uses crt;
     var i, j: integer;
      clrscr;
     for i:= 1 to 4 do
      begin
     for j:= 1 to i do
     write(j:4); writeln;
     end;
      readln;
          end.

    5. uses crt;
     var A, i,j:integer;
     begin
      clrscr;
     for i:= 4 downto 1 do
      begin
     A:=4;
      for j:= 1 to i do
      begin
      write(A:4);
     end;
      writeln;
      end;
      readln;
          end.

     6. uses crt;
      var A, i, j: byte;
     begin
      clrscr;
      A:= 1;
      for i:= 1 to 4 do
      begin
       for j:= 1 to i do
      begin
      write(A:4);
      A:= A+2;
       end;
      writeln;
      end;
      readln;
           end.

     14. Buat urutan angka dari terkecil sampai terbesar dari 5 (lima) nilai yang dinput. Gunakan metode urutan,  pemilihan dan perulangan.
    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

     Jawab:
    a. urutan
    if N1 >  N2 maka tukarkanlah

 8    17    5    7    18


 5    17    8    7    18

 5    8    17    7    18


 5    7    17    8    18


 5    7    8    17    18


    b. pemilihan dan perulangan
     uses crt;
     var x: array[1..5] of integer;
      n,min,temp,i,j: integer;
     begin
      clrscr;
     writeln('Program pengurutan bilangan');
     writeln('____________________________');
      writeln;
      for n:=1 to 5 do
      begin
      write('Input bilangan ',n,': ');readln(x[n]);
      end;
      n:=5;
      for i:=1 to n-1 do
     begin
      min:=i;
     for j:=i+1 to n do
      begin
     if x[j] < x[min] then
      min:=j;
     end;
     temp:=x[i];
      x[i]:=x[min];
      x[min]:=temp;
      end;
      writeln('Hasil pengurutan adalah:');
     writeln;
      for n:=1 to 5 do
      write(x[n]:4);
       readln
           end.

     15. Buat program sederhana menggunakan metode pemilihan untuk menampilkan keterangan umur di mana:

   
 - Dengan memasukan nama, nim, program studi, tahun lahir. Maka akan ditampilkan umur dan keterangan umur


     Layoutnya :

    Nama  : Andi
    Nim  : 21015199
    Program Studi : Sistem Informasi
    Tahun Lahir  : 1981

    Umur  : 29
    Keterangan  : Dewasa
     jawab :

    uses crt;
     var nama, nim,programstudi,ket: string ;
     begin
      clrscr;
     write('Nama: '); readln(nama);
     write('NIM  : '); readln(nim);
     write('Program Studi: '); readln(programstudi);
      write('Tahun Lahir  : '); readln(tahunlahir);
     umur:= 2010-tahunlahir;
      writeln;
      writeln('Umur: ', umur);
      if umur <=5 then ket:='balita'
      else if umur <=13 then ket:='anak-anak'
     else if umur <=25 then ket:='remaja'
      else if umur <=40 then ket:='dewasa'
      else ket:='orang tua';
      writeln('Keterangan: ',ket);
       readln;
           end.