Selasa, 26 Oktober 2010

tugas teori Algoritma & Pemograman

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
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.

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              : ZAINAL M. NOOR
      Nim                 : 21015197
      Program studi  : Sistem Informasi
      Tahun lahir       : 1989


      Umur                 : 21
      Keterangan        : Remaja



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.
     program pascal:
uses crt;
var A, i: byte;
begin
    clrscr;
    A:=3;
    for i:=1 to 6 do
    begin
        write(A:4);
        A:=A+3;
    end;
    readln;
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
    program pascal:
uses crt;
var a: byte;
begin
    for a:= 1 to 100 do
    begin
        if a mod 2= 1 then
        write(a:4);
    end;
    readln
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.
    program pascal:
uses crt;
var a: byte;
begin
    clrscr;
    for a:= 1 to 50 do
    begin
        if a mod 2= 0 then
        write(a:4);
    end;
    readln
end.

7. Algoritma untuk menampilkan bilangan prima dari 1 s/d 20:
  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: byte; prima: boolean;
begin
    clrscr;
    write('2':4);
    for x:= 1 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. Algoritma untuk menampilkan bilangan kelipatan 3 dan kelipatan 5 secara
    bersamaan dari angka 1 s/d 30:
  • Untuk i:= 1 sampai 30 lakukan:
    • jika i mod 3= 0 maka cetak i
    • selain itu jika i mod 5= 0 maka cetak i.
     Program pascal:
uses crt;
var i: byte;
begin
    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;
    readln
end.


9. Program pascal untuk menentukan bilangan bulat yang diinput adalah bilangan
    ganjil atau genap:
uses crt;
var lagi: char; x: longint; ket: string;
begin
   clrscr;
   lagi:='Y';
   while lagi='Y' do
   begin
   clrscr;
   write('Masukkan sebuah bilangan bulat: ');readln(x);
     if x mod 2= 0 then ket:='genap'
     else ket:='ganjil';
   writeln;
   writeln('Bilangan yang diinput adalah bilangan ',ket);
   write('Coba lagi (Y/N ): '); read(lagi);
   end; readln
end.


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

 11. Program pascal untuk menghitung luas lingkaran dengan menginput jari-jari
       lingkaran (r):
uses crt;
var L,r: real;
begin
    clrscr;
    write('Jari-jari lingkaran= '); readln(r);
    L:= pi * sqr(r);
    writeln('Luas lingkaran   = ', L:0:0);
    readln
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
      Program pascal:
uses crt;
var pL, lL, pT, lT, L_total, L_tengah: integer;
begin
    clrscr;
    pL:=18;  lL:=12;  pT:=10;  lT:=5;
    L_total:= pL*lL;
    L_tengah:= pL*lL;
    writeln('Luas total     = ', L_total);
    writeln('Luas tengah    = ', L_tengah);
    writeln('Luas yg diarsir= ', L_total-L_tengah);
    readln;
end.
13. 1) uses crt;
var i, j: byte;
begin
    clrscr;
    for i:= 1 to 4 do
    begin
        for j:= 1 to 4 do
        write(j:4); writeln(#10);
    end;
    readln;
end.

     2) uses crt;
var A, i, j: byte;
begin
    clrscr;
    A:=2;
    for i:= 1 to 3 do
    begin
        for j:= 1 to 3 do
        write(A:4);
        A:=A-1; writeln(#10);
    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(#10);
    end;
    readln
end.

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

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

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

14. <belum ada>

15. Program pascal untuk mengisi biodata mahasiswa serta menampilkan umur
      dan keterangan umur secara otomatis:
uses crt;
var lahir, umur: integer;
    ket: string;
begin
    write('NIM          : ');readln;
    write('Nama         : ');readln;
    write('Program Studi: ');readln;
    write('Tahun Lahir  : ');readln(lahir);
    writeln(#10);
    umur:=2010-lahir;
      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('Umur      : ', umur);
    writeln('Keterangan: ', ket);
    readln
end.


Kamis, 07 Oktober 2010

Tugas (1) "Logika & Algoritma"


( Masalah: )

Tiga pasang suami istri bermaksud menyeberangi sebuah sungai dari kampung A ke kampung B.  Hanya ada sebuah perahu kecil yang hanya bisa membawa tidak lebih dari dua orang setiap kali menyeberang. Penyeberangan juga dirumitkan oleh kenyataan bahwa para suami sangat pencemburu dan tidak mau meninggalkan istri-istri mereka jika ada lelaki lain. Tulislah algoritma untuk menunjukkan bagaimana penyeberangan itu bisa dilakukan.

( Solusi: )

 {Masing-masing pasangan disimbolkan dengan S1 I1, S2 I2, dan S3 I3}

Algoritmanya:
  {di kamp. A: S1, I1, S2, I2, S3, I3 --- di kamp. B: belum ada}
- I1 dan I2 menyeberang ke kampung B
  {di kamp. A: S1, S2, S3, I3 --- di kamp. B: I1, I2}
- I2 kembali ke kampung A
  {di kamp. A: S1, S2, I2, S3, I3 --- di kamp. B: I1}
- I2 dan I3 menyebrang ke kampung B
  {di kamp. A: S1, S2, S3 --- di kamp. B: I1, I2, I3}
- I3 kembali ke kampung A
  {di kamp. A: S1, S2, S3, I3 --- di kamp. B: I1, I2}
- S1 dan S2 menyeberang ke kampung B
  {di kamp. A:  S3, I3 --- di kamp. B: S1, I1, S2, I2}
- S2 dan I2 kembali ke kampung A
  {di kamp. A: S2, I2, S3, I3 --- di kamp. B: S1, I1}
- S2 dan S3 menyeberang ke kampung B
  {di kamp. A: I2, I3 --- di kamp. B: S1, I1, S2, S3}
- I1 kembali ke kampung A
  {di kamp. A: I1, I2, I3 --- di kamp. B: S1, S2, S3}
- I1 dan I2 menyeberang ke kampung B
   {di kamp. A: I3 --- di kamp. B: S1, I1, S2, I2, S3}
- I2 kembali ke kampung A
  {di kamp. A: I2, I3 --- di kamp. B: S1, I1, S2, S3}
- I2 dan I3 menyebrang ke kampung B
  {di kamp. A: habis --- di kamp. B: S1, I1, S2, I2, S3, I3}


Tugas (2) "Logika & Algoritma"



Tuliskan algoritma dari kegiatan berikut:
  • membuat pakaian
  • membuat mie + telur dadar
  • mengisi voucher pulsa

 Penyelesaian


A. Algoritma dalam 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
B. Algoritma dalam membuata Mie + Telur Dadar
  1. Siapkan mie instant dan telur
  2. Nyalakan kompor
  3. Panaskan minyak untuk menggoreng telur
  4. Pecahkan telur masukkan dalam mug
  5. Dikocok-kocok, tambahkan garam secukupnya
  6. Goreng hingga matang
  7. Angkat dan tiriskan
  8. Panaskan air untuk merebus mie
  9. Siapkan bumbu dalam piring/mangkuk
  10. Rebus mie selama + 3 menit
  11. Angkat dan tiriskan
  12. Masukkan ke dalam piring/mangkuk yg sudah siap dengan bumbu
  13. Campurkan mie dan bumbu secara merata
  14. Sajikan bersama telur dadar
C. Algoritma dalam mengisi pulsa HP
  • Voucher Elektrik
  1. Ketik SMS berikut: kode<spasi>nominal_pulsa<spasi>nomor_penerima<spasi>kode_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.

Tugas (3) "Logika & Algoritma"


Soal

  1. Tentukan nilai A=3. Seleksi A, jika A=bilangan genap maka cetak genap, sebaliknya cetak ganjil.
  2. Tentukan nilai A=25. Seleksi A, jika A=bilangan kelipatan 3 maka cetak "benar", sebaliknya cetak "salah".
Penyelesaian

1. A = 3.
       {bil. genap = 2, 4, 6, 8, 10, ...dst
         3 tidak termasuk bil. genap,
         berarti 3 adalah bil. ganjil}

       A = 'bil. ganjil'
       jika A = 'bil. genap' maka cetak 'Genap'
       sebaliknya cetak 'Ganjil'
    Hasil: Ganjil

proses_utk_soal_nmr_1

output_utk_soal_nmr_1

2. A = 25
       {bil. kelipatan 3 = 3, 6, 9, 12, 15, 18, 21, 24, 27, ...dst
         25 tidak termasuk bil. kelipatan 3. Jika difaktorkan
                           25
                            /\
                         5    5
          didapat 5 merupakan faktor terkecil dari 25,
          berarti 25 adalah bil. kelipatan 5.
          bil. kelipatan 5 = 5, 10, 15, 20, 25, ...dst}

       A = 'bil. kelipatan 5'
       jika A = 'bil. kelipatan 3' maka cetak 'Benar'
       sebaliknya cetak 'Salah'
    Hasil: Salah

proses_utk_soal_nmr_2
output_utk_soal_nmr_2