Wednesday, December 3, 2014

[FIRST TEACHER] Algorithm

Apakah kalian semua tau? bahwa post-post saya yang sebelumnya tentang algoritma pemograman pascal dasar?
Jika kalian pemerhati blog ini, pasti kalian tau..

 

Pada kali ini saya ingin bercerita sedikit tentang Guru / Seorang yang sangat berjasa dalam hidup saya. Beliau adalah orang yang pertama kali mengenali saya bagaimana algoritma bekerja, bagaimana saya membuat algoritma, bagaimana saya membuat algoritma yang elegan, bagaimana saya membuat algoritma yang mempunyai banyak antisipasi untuk user.

Algoritma sendiri sangat sangat lah penting sekali untuk saya, Beliau adalah orang yang benar benar berjasa untuk hidup saya. Kenapa Beliau sangat berjasa? Algoritma adalah awal dari semua pemograman, seperti yang dikatakan Beliau  

"Jika kamu sudah menguasai satu buah algoritma pemograman, kamu bisa pindah ke algoritma pemograman lain dengan cara membaca buku pemograman tsb" 

Kini saya mengerti maksud dari yang Beliau katakan, semua pemograman itu membutuhkan algoritma. Ya, jelas sekali, yaitu logika awal kita membuat program. Yang membedakan hanyalah bentuk-bentuk penulisannya saja dalam pemograman nya.

Saya rasa, saya sangat beruntung bertemu Guru Algoritma seperti Beliau. Saya sangat beruntung karena, Beliau banyak memotivasi, seperti biasa. Sebelum memulai belajar, pasti diawali dengan kata-kata mutiara yang membangkitkan kita. Hampir semua motivasi dari Beliau saya cerna baik-baik.

Beliau memiliki model mengajar yang menarik, menurut saya. Beliau membuat Algoritma menjadi tidak terlalu sulit untuk saya. Saya selalu suka saat Beliau menceritakan buku yang telah dibacanya. Beliau sangat memiliki kebiasaan yang cukup menarik bagi saya, yaitu membaca buku. Beliau pun sering menceritakan buku yang dibacanya, semua yang diceritakan sangat menarik bagi saya. Dan sangat memotivasi saya.

Inti nya, Beliau lah orang berjasa bagi hidup saya. Karena telah mengenali saya dengan Algoritma, dan kini saya bisa bermain dengan Algoritma. Rasa nya ingin sekali saya bermain bareng dengan Algoritma bersama Beliau.

Di Akhir kelas saat mengajar, saya selalu mengatakan
"Pak, kapan saya bisa menjadi partner bapak?"

dan beliau pun menjawab
"Kapan pun saat kamu siap"

Saya tau saat ini saya belum siap, bukannya saya tidak siap, Tapi saya akan berusaha untuk mempersiapkan itu. 
Sebenarnya banyak kalimat beliau yang masih tersimpan di otak saya


"Membuat program itu, pasti harus mencari cara tidak elegan dahulu, sebelum mendapatkan cara yang elegan"
 ---------------------------------------------
"Kamu beruntung mendapatkan banyak logika, karena ini bisa menambahkan amunisi kamu"
  ---------------------------------------------
 "Kamu tidak akan bisa, jika kamu tidak mencoba itu secara langsung"
 ---------------------------------------------
"Harusnya kalian marah pada saya, jika saya tidak mengasih tugas kepada kalian, karena kalian rugi sudah bayar mahal"
 ---------------------------------------------
"Yang mempengaruhi hidup kita ada 2, yaitu orang yang kita temui dan buku yang kita baca"
 ---------------------------------------------


Kata yang paling saya ingat
"Sukses yah..." 

Beliau adalah
  www.awanrimbawan.com
www.awanrimbawan.com
 Bpk. Awan Rimbawa
Seseorang yang berjasa dalam hidup saya.
Terima kasih pak, Blog saya di post-post sebelumnya sudah jelas tentang Algoritma. Ya, itu semua berkat Bapak.. Saya harap kita bisa menjadi Partner Pak.






 "Segala sesuatu itu, harus belajar dari dasar, untuk mencapai hal yang besar. Dan saya ingin mencapai sesuatu hal yang besar. Karena keinginan saya untuk sukses, lebih besar dari pada ketakutan saya untuk gagal"

Vicky, -M Lukmanul Hakim 






Kalian bisa mengunjungi web Bapak Awan di sini www.awanrimbawan.com

Wednesday, November 26, 2014

[TUTORIAL] [PASCAL] Contoh Procedure Pascal | Program Bank dan Perhitungan Bilangan

1.Buatlah sebuah kalkulator sederhana, untuk  operasi tambah, kurang, kali, bagi, kuadrat dan pangkat dengan menggunakan prosedur.

1.Kuadrat 1 parameter (x) = (5) = 25.

2.Pangkat 2 parameter (x,y) = (2,3) = 8.

              uses crt;

              var

   a, b, c, pang, pil : integer;
   yes : string;

   procedure tambah(var x,y,z:integer);
   begin
       z := x+y;
   end;

   procedure kurang(var x,y,z:integer);
   begin
       z := x-y;
   end;

   procedure kali(var x,y,z:integer);
   begin
       z := x*y;
   end;

   procedure bagi(var x,y,z:integer);
   begin
       z := x div y;
   end;

   procedure kuadrat(var x, z: integer);
   Begin
         z:= x * x;
   end;

   procedure pangkat(var x, y, z: integer);
   begin
         z:= z + (x * x);
   end;

begin
     clrscr;
     repeat
     clrscr;
     writeln('---------------');
     writeln('     Menu      ');
     writeln('---------------');
     writeln('1. Penjumlahan');
     writeln('2. Pengurangan');
     writeln('3. Perkalian');
     writeln('4. Pembagian');
     writeln('5. Kuadrat');
     writeln('6. Pangkat');
     writeln('7. Keluar');
     writeln('---------------');
     write('Masukkan pilihan anda (1-7): ');
     readln(pil);
      case pil of
      1 : begin
         clrscr;
          writeln;
          writeln('     PENJUMLAHAN      ');
          write('Angka pertama : '); readln(a);
          write('Angka kedua : '); readln(b);
          tambah(a,b,c);
          writeln(a,' + ',b,' = ',c);
          end;
      2 : begin
         clrscr;
          writeln;
          writeln('     PENGURANGAN       ');
          write('Angka pertama : '); readln(a);
          write('Angka kedua : '); readln(b);
          kurang(a,b,c);
          writeln(a,' - ',b,' = ',c);
          end;
      3 : begin
         clrscr;
          writeln;
          writeln('     PERKALIAN       ');
          write('Angka pertama : '); readln(a);
          write('Angka kedua : '); readln(b);
          kali(a,b,c);
          writeln(a,' * ',b,' = ',c);
          end;
      4 : begin
         clrscr;
          writeln;
          writeln('     PEMBAGIAN       ');
          write('Angka pertama : '); readln(a);
          write('Angka kedua : '); readln(b);
          bagi(a,b,c);
          writeln(a,' : ',b,' = ',c);
          end;
      5 : Begin
         clrscr;
         Writeln;
         Writeln('      Kuadrat         ');
          write('Masukkan angka : '); readln(a);
          kuadrat(a, c);
          writeln(a,' Kuadrat = ', c);
          end;
      6 : begin
         clrscr;
         writeln;
         writeln('      Pangkat     ');
            write('Masukkan Angka : '); readln(a);
            write('Masukkan Banyaknya Pangkat : '); readln(b);
                        pang:= b;
                        repeat
                        begin
                        pangkat(a, b, c);
                        pang:= pang - 1;
                        end;
                        until pang = 1;
            writeln('Pangkat ', b, ' dari ', a, ' = ', c);
          end;
      else
      clrscr;
      write('Keluar dari program...');
      writeln();
      readln;
      end;
      writeln('-------------------------');
      writeln('Lanjutkan (Y/N)');
      readln(yes);
      writeln('-------------------------');
      readln;
      until (yes = 'n') or (yes= 'N') or (pil = 7);

end.


 


 

 

 

2.Buatlah Transaksi perbankan sederhana : Tabung, Tarik dan Transfer dengan menggunakan prosedur. Pada menu awal ditampilkan 3 pilihan menu:

1.Tabung

2.Tarik

3.Transfer

Saldo anda saat ini Rp

 

uses crt;
var
 menu  : integer;
 sm : longint;
 saldo   : longint;
 setoran : longint;
 tarikan : longint;
 transfer : longint;
 yes : string;

procedure cek ();
        begin
         writeln ('Saldo anda sebesar : RP. ', saldo);
        end;

procedure setor (tunai: longint);
        begin
         writeln ('Saldo Awal anda sebesar : Rp. ',saldo);
         writeln ('Setoran anda sebesar    : Rp. ',tunai);
         saldo := saldo + tunai;
         writeln ('--------------------------------------------------+');
         writeln ('Saldo Akhir anda sebesar: Rp. ',saldo);
        end;

procedure tarik (t: longint);
        begin
         writeln ('Saldo awal anda sebesar : Rp. ',saldo);
         writeln ('Tarikan anda sebesar    : Rp. ',t);
                if ((saldo-t) >= sm) then
                    begin
                     saldo := saldo - t;
                     writeln ();
                     writeln ('Saldo akhir anda sebesar : Rp. ',saldo);
                    end
                else
                    begin
                     writeln ('Saldo anda tidak mencukupi');
                    end;
        end;

procedure transf (t: longint);
         begin
          writeln('Saldo awal anda sebesar : Rp. ', saldo);
          writeln('Anda transfer sebesar : Rp. ', transfer);
          t:= saldo - transfer;

          writeln('Saldo akhir anda sebesar : Rp. ', t);
         end;

begin
clrscr;
randomize;
saldo := random (1000000);
sm    := 100000;

repeat
clrscr;
  writeln ('V-Bank');
  writeln ('MENU UTAMA :');
  writeln ('1. Cek Saldo');
  writeln ('2. Menabung ');
  writeln ('3. Tarik tunai ');
  writeln ('4. Transfer ');
  writeln ('5. Keluar ');
  writeln ('Pilihan anda : '); readln(menu);

  case menu of
  1 : begin
     clrscr;
        cek();
      end;
  2 : begin
       clrscr;
        write ('Jumlah setoran : Rp. '); readln(setoran);
        setor(setoran);
      end;
  3 : begin
       clrscr;
        write ('Jumlah tarikan : Rp. '); readln(tarikan);
        tarik(tarikan);
      end;
  4 : begin
       clrscr;
        write ('Jumlah yang ingin di transfer : Rp. '); readln(transfer);
        transf(transfer);
      end;
  5 : begin
       clrscr;
        writeln('             Terimakasih');
        writeln ('V-Bank, Uang nya masa depan anda');
      end;
  end;
    readln;
    clrscr;

writeln('Lanjutkan (Y/N)');
      readln(yes);
      writeln('-------------------------');
      readln;
      until (yes = 'n') or (yes= 'N') or (menu=5);
      writeln('           Terimakasih');
      write('V-Bank, Uang nya masa depan anda');
      readln;
end.


 

Wednesday, October 29, 2014

[PASCAL] Kumpulan Soal dan Jawaban Perulangan LOOP [PART 2]


11. Buat algoritma dan program yang menentukan apakah sebuah bilangan genap atau ganjil. Bilangan diinputkan oleh user. Jika genap maka cetak perkataan “Even”, jika ganjil maka cetak perkataan “Odd”. Lakukan pendeteksian genap ganjil tidak menggunakan Mod tetapi menggunakan loop


uses crt;
var
         ang: integer;

begin
clrscr;
         write('Masukkan sebuah angka   : '); readln(ang);
       
         repeat
         begin
                         ang := ang - 2;
         end;
         until ang <= 1;
       
         if ang = 0 then
                         write('Even')
         else
                         write('Odd');
                       
         readln;
end.


12. Buat algoritma dan program yang inputannya sebuah bilangan. Kemudian menentukan apakah bilangan tersebut adalah bilangan prima atau bukan. Gunakan mekanisme loop untuk pendeteksian bilangan prima.



13. Buat Algoritma dan program yang menginput sebuah bilangan bulat yang menyatakan waktu dalam detik. Kemudian konversikan dan cetak waktu itu dalam satuan Jam, Menit, Detik.
Cth:
Input: 7405
Output: 2 Jam, 3 Menit, 25 Detik

Note:
Gunakan mekanisme loop untuk menentukan jam dan menit. Untuk mendapatkan jam kurangi terus menerus detik dengan 3600, sampai nilainya < 3600. Setiap detik dikurangi 3600 maka Jam bertambah 1. Untuk mendapatkan menit kurangi terus detik dengan 60, sampai nilainya < 60. Setiap detik dikurangi 60 menitnya ditambah 1.

uses crt;
var
       deb, jam, men, det, njam, nmen: integer;

begin
clrscr;
       write('Masukkan Waktu dalam Detik   : '); readln(deb);
       
       jam := 0;
       men := 0;
       det := 0;
       
       njam := deb;
       nmen := deb;
       
       repeat
       begin
                   njam:= njam - 3600;
                   jam := jam + 1;
       end;
       until njam < 3600;
       
       repeat
       begin
                   nmen := nmen - 60;
                   men := men + 1;
                   
                   if (men > 60) then
                               men := men - 60;
       end;
       until nmen < 60;
       
       write(jam, ' Jam, ', men, ' Menit, ', nmen, ' Detik '); readln;
end.


14. Buat algoritma dan program yang menampilkan deret: 1 2 3 5 8 13 21....

uses crt;
var
       bat, x, y: integer;

begin
clrscr;
       write('Masukkan Batas deret   : '); readln(bat);
       
       x:= 1;
       y:= 1;
                   
       write(x, ' ');
                   
       while (x <= bat) or (y <= bat) do
       begin
                   x:= x + y;
                   y:= y + x;
                   
                   if (x <= bat) then
                   write(x, ' ');
                   if (y <= bat) then
                   write(y, ' ');
       end;
       readln;
end.


15. Dalam sebuah kandang ada 1000 bebek. Setiap akhir bulan bebek tersebut serempak melahirkan satu bebek baru. Namun sebelum melahirkan, 20% dari bebek tersebut mati. Susun algoritma dan program untuk menghitung dan mencetak jumlah bebek setelah 10 bulan.

uses crt;
var
       bul, beb: integer;

begin
clrscr;
       write('Jumlah bebek sekarang 1000 bebek'); writeln;
       write('Masukkan berapa bulan kedepan   : '); readln(bul);
     
       beb:= 1000;
     
       for bul := 1 to bul do
                   begin
                   beb:= (beb * 20 div 100) + 1;
                   end;
                 
       write('Jumlah bebek setelah ', bul, ' Bulan kedepan   : ', beb);
       readln;
end.


16. Sebuah truk bergerak dari Kota Malang ke Pulau Sempu. Pada Km pertama ia menghabiskan 10kg bahan bakar. Pada Km ke 2 ia menghabiskan 8kg bahan bakar (atau 80% dibanding Km pertama). Demikian seterusnya setiap Km sebelumnya. Susun algoritma dan program untuk menghitung dan mencetak total bahan bakar yang dihabiskan setelah mencapai 100km.

17. Seseorang menyimpan uang 1.000.000 di bank dengan bunga 2% perbulan. Jadi setelah satu bulan uangnya menjadi 1.020.000. satu bulan berikutnya uang 1.020.000 ini mendapat bunga lagi 2% sehingga setelah 2 bulan uangnya menjadi 1.020.000 + 20.400 = 1.040.400. Buat algoritma dan program untuk menghitung dan mencetak jumlah uang setelah 10bulan.

uses crt;
var
       uan, bun: real;
       bul: integer;

begin
clrscr;
       write('Masukkan Jumlah Uang            : '); readln(uan);
       write('Masukkan Berapa bulan kedepan   : '); readln(bul);
       
       for bul := 1 to bul do
       begin
                   bun := uan * 0.02;
                   uan := uan + bun;
       end;
       
       write('Jumlah Uang setelah ', bul, ' bulan, adalah ', uan:0:0); readln;
end.


18. Seseorang mengendarai mobil dengan kecepatan tetap. Tepat pukul 08:25:10 pagi kecepatannya masih tetap 5 m/detik. Tetapi sepuluh menit kemudian, kecepatannya dinaikkan 1 m/detik sehingga kecepatannya menjadi tetap 6 m/detik. Demikian 10 menit berikutnya kecepatannya selalu dinaikkan 1 m/detik. susun algoritma dan program untuk menghitung jarak yang ditempuhnya sejak pukul 08:25:10 sampai jam tepat menunjukkan 10:00:00 pagi pada hari yang sama.


19. Elon Musk berangkat dari New York menuju Amsterdam tepat pukul 08:00 dengan kecepatan tetap 5 m/detik. Jack Ma juga berangkat dari New York menuju titik Amsterdam tepat pukul 09:00 dengan kecepatan tetap 8 m/detik. Buat algoritma dan program untuk menghitung dan mencetak pada pukul berapa Elon Musk dan Jack Ma tepat berada pada titik yang sama dimana Jack Ma mulai akan mendahului Elon Musk.

20. Prof. Carol Dweck berangkat dari titik A menuju titik B yang berjarak 100km dengan kecepatan tetap 10 m/detik. Tetapi setelah 10menit kemudian, kecepatannya menjadi 11 m/detik. Demikian setelah 10 menit berikutnya kecepatan konstan dengan lebih cepat 1 m/detik dibandingkan 10 menit sebelumnya. Buat algoritma dan program yang menghitung dan mencetak berapa lama Prof. Carol Dweck menempuh perjalanan (dalam Jam, Menit dan Detik) dari titik A sampai titik B.