Buatlah Susunan Algoritma dari soal dibawah ini:
Penyelesaian
- 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..
- Algoritma untuk mengisi voucher telepon genggam (HP)
- Algoritma untuk membuat sebuah pakaian jadi (baju atau celana) dari bahan mentah (kain) yang disediakan.
Penyelesaian
- Masing-masing pasangan disimbolkan dengan S1 I1, S2 I2, dan S3 I3
{di desa A: S1, I1, S2, I2, S3, I3 --- di desa B: belum ada}
2. Algoritma untuk mengisi pulsa HP
3. Algoritma untuk membuat pakaian
5. Algoritmanya untuk menampilkan bilangan ganjil dari 1 s/d 100:
7. Algoritma untuk menampilkan bilangan prima dari 1 s/d 20:
Cara pertama menggunakan variabel bertipe boolean (true/false):
8. Algoritma untuk menampilkan bilangan kelipatan 3 dan kelipatan 5 dari
angka 1 s/d 30:
1 2 3 4 2 2 2 3 2 1 1 2 3 4 1 1 1 3 2 1
1 4 3 2 1 1 1 2 4 3 2 3 5 1 2 3 4 4 13 15 17 19
5 7 8 17 18
15. Buat program sederhana menggunakan metode pemilihan untuk menampilkan keterangan umur di mana:
13. 1)
2)
3)
4)
5)
6)
- 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
- I3 kembali ke desa A
- S1 dan S2 menyeberang ke desa B
- 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
- I1 kembali ke desa A
- I1 dan I2 menyeberang ke desa B
- I2 kembali ke desa A
- I2 dan I3 menyebrang ke desa B
2. Algoritma untuk mengisi pulsa HP
- Voucher Elektrik
- Ketik SMS berikut: kode<spasi>nominal_pulsa<spasi>nomor_penerima<spasi>PIN
- Masukkan nomor provider pulsa
- Kirim
- Pulsa otomatis masuk ke nomor penerima setelah SMS berhasil diterima oleh provider pulsa.
- Voucher Fisik
- Gesek kartu untuk melihat kode voucher
- Ketikkan kode voucher sesuai perintah (berbeda untuk tiap jenis Kartu SIM)
- Lalu tekan yes/Ok/telp.
- Pulsa otomatis bertambah sesuai nominal pada voucher.
3. Algoritma untuk membuat pakaian
- Menyiapkan bahan, kain dan peralatan menjahit
- Menentukan ukuran, biasanya sudah ada ukuran standard (S-M-L-XL)
- Membuat pola
- Memotong kain sesuai pola, dilebihkan +5 cm untuk area menjahit
- Menjahit sesuai pola yang ada
- Merapikan pakaian yg sudah jadi
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:
- menentukan nilai awal A:=3
- 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.
menampilkan bilangan kelipatan 3. |
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.
menampilkan bilangan ganjil |
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.
menampilkan bilangan genap |
7. Algoritma untuk menampilkan bilangan prima dari 1 s/d 20:
Cara pertama menggunakan variabel bertipe boolean (true/false):
- bilangan prima hanya akan habis bila dibagi 1 dan bilangan itu sendiri.
- sehingga pasti akan ada sisa hasil bagi (mod) jika dibagi bilangan lebih dari 1 sampai bilangan sebelum bilangan itu (x-1).
- 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.
- uses crt;
- var x,y: integer;
- prima: boolean;
- begin
- clrscr;
- for x:= 2 to 20 do
- begin
- prima:= true;
- for j:= 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.
Cara kedua menyeleksi jumlah nol dari sisa bagi:
- Telah kita ketahui bahwa bilangan prima hanya akan memiliki sisa bagi= 0 ketika dibagi dengan angka 1 dan bilangan itu sendiri.
- Berarti jika bilangan prima dibagi dengan bilangan berapapun hanya memiliki 2 kesempatan mendapatkan sisa bagi=0.
- Ketika jumlah sisa bagi=0 lebih dari 2 berarti bilangan tersebut bukan bilangan prima, tidak ditampilkan ke layar.
- uses crt;
- var i,j, jumlahnol: integer;
- begin
- clrscr;
- for i := 1 to 20 do
- begin
- jumlahnol:= 0;
- for j:= 1 to i do
- begin
- if i mod j = 0 then
- jumlahnol:= jumlahnol+1;
- end;
- if jumlahnol = 2 then
- write(i:4);
- end;
- readln
- end.
menampilkan bilangan prima |
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.
- uses crt;
- var i: byte;
- begin
- for i:= 1 to 30 do
- if (i mod 3=0) and (i mod 5=0)
- then write(i:4);
- readln
- end.
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
menampilkan bilangan kelipatan 3 dan kelipatan 5. |
9. Masukkan sebuah bilangan kemudian tentukan apakah bilangan yang diinput adalah bilangan ganjil
atau bilangan genap. Gunakan metode pemilihan.
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.
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.
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:
- 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.
menentukan bilangan yang diinput sebagai bilangan ganjil atau genap. |
menentukan bilangan yang diinput sebagai bilangan ganjil atau genap. |
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.
manampilkan hasil proses aritmatika dari dua buah bilangan tang diinput. |
11. Program pascal untuk menghitung luas lingkaran dengan menginput jari-jari lingkaran (r):
- uses crt;
- var L,r: real;
- const pi=3.14;
- begin
- clrscr;
- write('Jari-jari lingkaran= '); readln(r);
- L:= pi * sqr(r);
- writeln('Luas lingkaran = ', L:0:0);
- readln
- end.
menampilkan hasil perhitungan luas lingkaran dengan menginput nilai jari-jari |
12. Algortma untuk menghitung luas daerah yang diarsir pada gambar:
- 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.
- Menghitung luas total, LTotal= pL x lL
- Menghitung luas tengah, LTengah= pT x lT
- 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.
menampilkan hasil perhitungan luas daerah yang diarsir dari sebuah persegi panjang |
13. Buat tampilan program di bawah ini dengan menggunakan metode perulangan:
1 2 3 4 0 0 0 3 2 1
1 2 3 4
1 2 3 4 3 7 9 11
14. Buat urutan angka dari terkecil sampai terbesar dari 5 (lima) nilai yang diinput. Gunakan metode urutan,
pemilihan dan pengulangan.
pemilihan dan pengulangan.
Layout:
Angka 1 : 8
Angka 2 : 17
Angka 3 : 5
Angka 4 : 7
Angka 5 : 18
Hasil urutan sebagai berikut:
Umur | Keterangan |
0-5 | Balita |
6-13 | Anak-anak |
14-25 | Remaja |
26-40 | Dewasa |
> 41 | Orang Tua |
Dengan memasukkan nama, nim, program studi, dan tahun lahir, maka akan ditampilkan
umur dan keterangan umur.
Layoutnya:
Nama : Asraruddin
Nim : 21015135
Program studi : Sistem Informasi
Tahun lahir : 1987
Umur : 23
Keterangan : Remaja
Penyelesaian:
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);
- end;
- readln
- end.
5)
- uses crt;
- var i, j: byte;
- begin
- clrscr;
- for i:= 1 to 4 do
- begin
- for j:= 4 downto i do
- write(j:4);
- 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. 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:
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 doif x[j] <= x[min] thenmin:= j eif
efor{menukar elemen terkecil dengan elemen i}temp:= x[min]x[min]:= x[i]x[i]:= tempefor
Program pascal:
- 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(#10);
- writeln('Hasil pengurutan adalah:');
- writeln;
- for n:=1 to 5 do
- write(x[n]:4);
- readln
- end.
menampilkan hasil pengurutan dari sebarang bilangan yang diinput |
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.
menampilkan umur dan keterangan umur sesuai data yang diinput |