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.



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



1.     Jika user memasukkan angka 5 Apa Output dari algoritma berikut?
ALGORITMA loop1
KAMUS DATA
I,j,n: Integer
BEGIN
Input(n)
For i :=0  to  n-1 do
                      begin
For j:=0 to n-1 do
begin
           Output(i+1)
End
          Output("\n") //ganti baris
             End
End.






2.     Jika user memasukkan angka 5 Apa Output dari algoritma berikut?

ALGORITMA loop2
KAMUS DATA
I,j,n: Integer
BEGIN
Input(n)
For i :=0 to n-1 do
                    begin
For j:=0 to n-1 do
begin
           Output(j+1)
end
          Output("\n") //ganti baris
             end
End

 

3.     Buatlah algoritma dan program untuk menampilkan angka seperti berikut:
Contoh inputan :

Jumlah angka : 5
1   5
 2 4
  3 
 2 4
1   5
Jumlah angka : 6
1    6
 2  5
  34 
  34 
 2  5
1    6
Jumlah angka : 9
1       9
 2     8
  3   7 
   4 6  
    5   
   4 6  
  3   7 
 2     8
1       9


uses crt;
var
        x, k, tin, y: integer;

begin
clrscr;
        write('Masukkan Jumlah Angka   : '); readln(x);
        k := x;
       
        for tin := 1 to x do
        begin
                                        for y := 1 to x do
                                        begin
                                         if (tin = y) or (y = k) then
                                          begin
                                                        write(y);
                                          end
                                         else
                                          begin
                                                        write(' ');
                                         end;
                                        end;
                         k := k - 1;
                         writeln(' ');
        end;      
        readln; 
end.


4.     Soal: Bintang Ketupat
Buatlah algoritma dan program untuk menampilkan bintang berbentuk belah ketupat:
Contoh inputan :
Jumlah bintang : 5
  * 
 * *
*   *
 * *
  *
Jumlah bintang : 6
  ** 
 *  *
*    *
*    *
 *  *
  **
Jumlah bintang : 9
    *   
   * *  
  *   * 
 *     *
*       *
 *     *
  *   * 
   * *  
    *
Kerjakan soal no 2 tanpa melihat jawabannya dahulu. Pastikan Anda mengerti tiap komponen dari program




5.     Soal: Buatlah algoritma dan program yang menginputkan 4 bilangan yang merupakan nilai ujian mahasiswa, serta  mencetak nilai tertinggi yang didapat mahasiswa.


uses crt;
var
                              n, max, nilai: integer;

begin
clrscr;
                              n := 0;
                              max := 0;
                              repeat
                              begin
                                 n := n + 1;
                                 write('Masukkan nilai Mahasiswa ke-', n, ' : '); readln(nilai);
                                 if nilai > max then
                                                 max := nilai;
                              end;
                              until n = 4;
                            
                              write('Nilai Tertinggi               : ', max, ' '); readln;
end.


6.       Soal: Buatlah algoritma dan program yang menginputkan 7 bilangan yang merupakan nilai ujian mahasiswa, mencetak nilai tertinggi yang didapat mahasiswa dan juga mencetak berapa orang yang mendapat nilai tertinggi tersebut.
Misal bilangan yg diinput: 72              80           80           92           95           87           95
Nilai Tertinggi: 95
Jumlah: 2


uses crt;
var
                              n, max, nilai, jml: integer;

begin
clrscr;
                              n := 0;
                              max := 0;
                              jml := 0;
                              repeat
                              begin
                                 n := n + 1;
                                 write('Masukkan nilai Mahasiswa ke-', n, ' : '); readln(nilai);
                                 if nilai = max then
                                                 begin
                                                 jml := jml + 1;
                                                 end;
                                 if nilai > max then
                                                 begin
                                                 max := nilai;
                                                 end;
                              end;
                              until n = 7;
                            
                              write('Nilai Tertinggi               : ', max, ' '); writeln;
                              write('Banyak Nilai Tertinggi        : ', jml, ' '); readln;
end.



7.     Soal: Buatlah algoritma dan program yang menginputkan 10 bilangan yang merupakan nilai ujian mahasiswa, kemudian mencetak nilai tertinggi dan nilai terendahnya.
        Misal bilangan yg diinput:  72              80           80           92           95           87           95
 Nilai Tertinggi: 95
Nilai Terendah: 72


uses crt;
var
                                    n, max, nilai, min: integer;

begin
clrscr;
                                    n := 0;
                                    max := 0;
                                    min := 100;
                                    repeat
                                    begin
                                        n := n + 1;
                                        write('Masukkan nilai Mahasiswa ke-', n, ' : '); readln(nilai);
                                        if nilai < min then
                                                        begin
                                                        min := nilai;
                                                        end;
                                        if nilai > max then
                                                        begin
                                                        max := nilai;
                                                        end;
                                    end;
                                    until n = 10;
                                  
                                    write('Nilai Tertinggi               : ', max, ' '); writeln;
                                    write('Nilai Terendah                : ', min, ' '); readln;
end.


8.     Soal: Buatlah algoritma dan program yang menginputkan sebuah bilangan bulat yang merupakan nilai ujian. Apabila nilai yang diinput < 0 atau > 100 maka cetak perkataan “Data salah, silahkan ulangi lagi” dan ulangi menginput data. Bila nilainya >= 60 maka cetak perkataan “LULUS”, selainnya cetak perkataan “COBA LAGI TAHUN DEPAN”. Gunakan format Do While


uses crt;
var
             nilai: integer;

begin
clrscr;
             write('Masukkan Nilai Mahasiswa    : '); readln(nilai);
             
             while (nilai < 0) or (nilai > 100) do
             begin
                         write('Data salah, Silahkan Ulangi lagi    : '); readln(nilai);
             end;
             writeln;
             
             if (nilai >= 60) then
                         write('Lulus!')
             else
                         write('Coba Lagi Tahun Depan'); readln;
                         
end.


9.     Soal: Dalam lembar dokumen tersedia banyak sekProf. Carol Dweck data berupa bilangan-bilangan integer. Buat algoritma dan program untuk menginput data-data tersebut dan menjumlahkannya. Kondisi berhenti adalah ketika jumlah dari data tersebut sudah melebihi 1000. Cetak berapa banyak bilangan yang diinputkan.
Cth:
Data Input: 300, 300, 500
Output: banyak data 3, jumlah 1100

Data Input: 200, 400, 100, 200,100,1
Output: banyak data 6 , jumlah 1001



uses crt;
var
        n, jml, ang: integer;

begin
clrscr;
        n := 0;
        jml := 0;
       
        repeat
        begin
                         write('Masukkan Data   : '); readln(ang);
                         jml := jml + ang;
                         n := n + 1;
        end;
        until jml > 1000;
         writeln;
         write('Banyak data ', n, ' Jumlah nya ', jml); readln;
end.



10. Soal: Buat algoritma dan program untuk menghitung rata-rata nilai mahasiswa. Berapa banyak nilai mahasiswa tidak diketahui. Kondisi berhenti adalah ketika diinputkan nilai 999 yang pasti bukan merupakan nilai ujian.
Misal data yang diinputkan : 60, 50, 999, 65, 75, 999
Output: rata-ratanya: (60+50+70+65+75) / 5 = 64
Note: banyaknya data bisa berupa n bilangan (n tidak diketahui)


uses crt;
var
        n, jml, rat, nilai: integer;

begin
clrscr;
        n := 0;
        jml := 0;
        rat := 0;
      
        write('Masukkan nilai Mahasiswa   : '); readln(nilai);
      
        while nilai <= 100 do
                        begin
                                        jml := jml + nilai;
                                        n := n + 1;
                                        rat := jml div n;
                                        write('Masukkan nilai Mahasiswa   : '); readln(nilai);
                        end;
                      
        write('Rata - ratanya   : ', jml, ' / ', n, ' : ', rat); readln;
end.