Translate to your languages

Selamat Datang . Suatu kehormatan bagi saya atas kunjungan ini. Saya sangat berharap kunjungan berikutnya.

29 Oktober 2008

PENGULANGAN

PENGULANGAN


 

Struktur pengulangan terdiri atas dua bagian :

  1. Kondisi pengulangan : ekspresi boolean yg harus dipenuhi untuk melaksanakan pemrograman pengulangan. Kondisi ini ada yg dinyatakan secara eksplisit oleh pemrogram atau dikelola sendiri oleh komputer(implisit).
  2. Badan (body) pengulangan : satu atau lebih aksi yg akan diulang.

Struktur pengulangan biasanya disertai dengan bagian :

  1. inisialisasi : aksi yg dilakukan sebelum pengulangan dilakukan pertama kali;
  2. terminasi : aksi yg dilakukan setelah pengulangan selesai dilaksanakan.

3 macam notasi struktur pengulangan :

  1. struktur WHILE-DO ;
  2. struktur REPEAT-UNTIL : statement perulangan dapat dilakukan min 1X;
  3. struktur FOR : jika banyak pengulangan yg harus dilakukan sudah diketahui; jika banyak pengulangan belum diketahui harus ditambahkan lagi keadaannya.

Tabel Translasi Notasi Algoritmik Pengulangan ke Notasi bahasa Pascal

Struktur 

Algoritmik 

Pascal

Keterangan 

WHILE-DO 

While <kondisi> do

aksi

endwhile 

While kondisi do

aksi;

(*endwhile*)

 

REPEAT-

UNTIL 

Repeat

Aksi 1

Until <kondisi>

repeat

aksi;

until kondisi;

 

FOR 

FOR menaik :

for peubah←a to b do

aksi

endfor

FOR menaik :

for peubah :=a to b do

aksi;

(*endfor*)

 
  

for peubah:=a to b do

begin

aksi 1;

aksi 2;

.

.

.

end; (*for*)

bila aksi lebih dari satu buah, runtunan aksi diawali dengan begin dan end.


 

For menurun :

for peubah←b downto a do

Aksi

Endfor

For menurun :

for peubah :=b downto a do

aksi;

(*endfor*)

 
  

for peubah :=b downto a do

begin

aksi 1;

aksi 2;

.

.

.

end; (*for*)

bila aksi lebih dari satu buah runtunan aksi diawali dengan begin dan end..


 

Struktur WHILE-DO

Contoh1 : Algoritma menghitung jumlah Deret 1 + 2 + 3+ … +N.

ALGORITMIK

Algoritma JUMLAH_DERET_1

{ Menjumlahkan deret

1 + 2 + 3+ … +N

dengan N adalah bilangan bulat Positif yang dibaca dari piranti masukan. Jumlah deret dicetak ke piranti keluaran.}


 

DEKLARASI

N : integer
{banyaknya suku deret}

Angka : integer
{ suku deret}

Jumlah : integer
{jumlah deret}


 

DESKRIPSI


read (N) { banyaknya suku deret }

jumlah←0 {inisialisasi jumlah deret}

angka←1 {suku deret}


while angka ≤ N do

jumlah←jumlah + angka { jumlah deret sekarang}

angka←angka + 1 { suku deret berikutnya}


endwhile

(angka > N ) {kondisi setelah pengulangan berhenti}

write (jumlah)


 

PASCAL

Program JUMLAH_DERET_1;

Uses wincrt;

var

N         : integer;

Angka     : integer;

Jumlah     : integer;


 

begin


write ('Berapa banyak suku deret ?'); read (N)

jumlah := 0 ;

angka := 1;


while angka <= N do

begin

Jumlah := jumlah + angka;

Angka := angka + 1;


end;


writeln ('Jumlah deret = ', jumlah);

end.


 

Struktur REPEAT-UNTIL

Contoh2 : Algoritma menghitung jumlah Deret 1 + 2 + 3+ … +N.

ALGORITMIK

Algoritma JUMLAH_DERET_2

{ Menjumlahkan deret

1 + 2 + 3+ … +N

dengan N adalah bilangan bulat Positif yang dibaca dari piranti masukan. Jumlah deret dicetak ke piranti keluaran.}


 

DEKLARASI

N : integer
{banyaknya suku deret}

Angka : integer
{ suku deret}

Jumlah : integer
{jumlah deret}


 

DESKRIPSI


read (N) { banyaknya suku deret }

jumlah←0 {inisialisasi jumlah deret}

angka←1 {suku deret}


repeat

jumlah←jumlah + angka { jumlah deret sekarang}

angka←angka + 1 { suku deret berikutnya}


until angka > N


write (Jumlah)


 

PASCAL

Program JUMLAH_DERET_2;

Uses wincrt;

var

N         : integer;

Angka     : integer;

Jumlah     : integer;

begin


write ('Berapa banyak suku deret ?'); read (N)

jumlah := 0 ;

angka := 1;


repeat

begin

Jumlah := jumlah + Angka;

Angka := Angka + 1;


until angka > N;


writeln ('Jumlah deret = ', jumlah);

end.


 

Struktur FOR-TO-DO

Contoh3 : Algoritma menuliskan deret angka

ALGORITMIK

ALGORITMA DERET_ANGKA1

{ menuliskan angka mulai 1 sampai dengan batas }


 

DEKLARASI

i : integer
{banyaknya suku deret}

batas : integer
{ batas deret}


 

DESKRIPSI

baca (i)


for i
ß 1 to batas do


write (i)


endfor


 

PASCAL

Program DERET_ANGKA1;

Uses wincrt;

var

i : integer;

batas : integer;


 

begin

write ('Masukkan batas bilangan yang akan ditampillkan ?'); readln (batas);


for i := 1 to batas do


write (i, ' ' ) ;

end.


 


 

Struktur FOR-DOWNTO-DO

Contoh4 : Algoritma menuliskan deret angka

ALGORITMIK

ALGORITMA DERET_ANGKA2

{ menuliskan deret mulai batas sampai dengan 1 }


 

DEKLARASI

i : integer
{banyaknya suku deret}

batas : integer
{ batas deret}


 

DESKRIPSI

baca (i)


for i
ß batas to 1 do


write (i)


endfor


 

PASCAL

Program DERET_ANGKA2;

Uses wincrt;

var

i : integer;

batas : integer;


 

begin

write ('Masukkan batas bilangan yang akan ditampillkan ?'); readln (batas);


for i := batas downto 1 do


write (i, ' ' ) ;

end.


 

TUGAS :

Buatlah Program menggunakan bahasa pascal untuk algoritma berikut ini !!!

ALGORITMIK

ALGORITMA SUDAH_BISA

{ menanyakan jawaban sampai jawaban yang diberikan valid }


 

DEKLARASI

jawab : char
{banyaknya suku deret}


 

DESKRIPSI


baca (jawab)


while not ((jawab = 'Y') or (jawab = 'T'))


baca (jawab)


endfor

PEMILIHAN


 

PEMILIHAN


 

Menganalisis kasus suatu masalah : menentukan kondisi boolean (bernilai true atau false) dan menentukan aksi yang dilakukan jika kondisi tersebut berlaku(memenuhi).

Kondisi Boolean     : suatu ekspresi relasional (ekspresi dengan operator relasional) yg bernilai true atau false bergantung pada nilai masing-masing operand yang terlibat di dalamnya.

Aksi yg dikerjakan bila kondisi boolean memenuhi dapat berupa pengisian nilai (assignment), kalkulasi, baca, tulis, dsb.


 

Penentuan kondisi boolean dan aksi yg dilakukan bergantung pada jumlah kasus yg terdapat pada masalah tsb : satu kasus, dua kasus, atau lebih dari dua kasus.


 

Tabel Translasi Notasi Algoritmik Pemilihan ke Notasi bahasa Pascal

Kelompok

Algoritmik

Pascal

Ket

1. IF-THEN

if <kondisi> then

aksi

endif

if kondisi then

aksi;

(*endif*)

Bila aksi lebih dari satu :

if kondisi then

begin

aksi1;

aksi2;


aksiN;


end; (*if*)

2. IF-THEN-

ELSE

if <kondisi> then

aksi1

else

aksi2

endif

if kondisi then

aksi1;

else

aksi2;

(* endif *)

 

3. CASE


 

case (nama)

<kond1> : aksi1

<kond2> : aksi2

.

.

.

<kondN> : aksiN

[otherwise aksiX]

Translasi cara 1 :

case nama of

nilai1 : aksi1;

nilai2 : aksi2;

.

.

.

nilaiN : aksiN;

[else aksiX]

end;

nilai1, nilai2,… adalah nilai yg bertipe integer, char atau boolean.

Translasi cara 2 :

if kondisi1 then

aksi1;

else


if kond2 then

aksi2;

else


Cara ini diterapkan bila kondisi berupa ekspresi yg operatornya bukan '=' atau bila operatornya '=' tetapi tetapan di ruas kanan '=' tidak bertipe integer, char boolean.


 

Contoh 1 : Algoritma menentukan sebuah bilangan bulat merupakan bilangan genap

ALGORITMIK

Algoritma BILANGAN_GENAP

{Mencetak pesan "bilangan genap" jika sebuah bilangan bulat yg dibaca dari piranti masukan merupakan bilangan genap}

DEKLARASI

bil : integer

DESKRIPSI

    read(bil)

    if bil mod 2 = 0 then

        write ('bilangan genap')

    endif


 

Pascal

PROGRAM BILANGAN_GENAP ;

( Mencetak pesan "bilangan genap" jika sebuah bilangan bulat yg dibaca dari piranti masukan merupakan bilangan genap )


 

uses wincrt;


 

(* DEKLARASI *)

var

bil : integer;


 

(* DESKRIPSI *)

Begin

writeln ("Ketikkan sembarang bilangan bulat : "); readln(bil);

if bil mod 2 = 0 then

writeln ('bilangan genap');

    (*end if *)

end.


 

Latihan :

Buatlah algoritma dan program dalam bahasa pascal, untuk menentukan bilangan terbesar(maksimum) dari dua buah bilangan!!!


 


 

Contoh 2 : Algoritma menentukan nama hari dari nomor harinya

ALGORITMIK

Algoritma NAMA_NAMA_HARI

{ Mencetak nama hari bila diberikan nomornya }

DEKLARASI

NoHari : integer [1..7]

DESKRIPSI

    read (NoHari)

    case (NoHari)

    NoHari=1    : write('Senin')

    NoHari=2    : write('Selasa')

    NoHari=3    : write('Rabu')

    NoHari=4    : write('Kamis')

    NoHari=5    : write('Jumat')

    NoHari=6    : write('Sabtu')

    NoHari=7    : write('Minggu')

    otherwise write (' Tidak ada Harinya !!! ')

    endcase


 

PASCAL

PROGRAM
NAMA_ HARI
;

( Mencetak nama hari bila diberikan nomornya )

Uses wincrt;

(* DEKLARASI *)

var


NoBulan : integer ;

(* DESKRIPSI *)

Begin


Write ('Masukkan nomor hari (1-7) : '); readln(NoBulan);


Case NoBulan of

    1     : writeln ('Senin');

    2     : writeln ('Selasa');

    3     : writeln ('Rabu');

    4     : writeln ('Kamis');

    5    : writeln ('Jumat');

    6    : writeln ('Sabtu');

    7    : writeln ('Minggu');

    else    writeln ('Tidak ada Harinya');

end;

end.


 


 

Contoh 3 : Algoritma menu empat persegi panjang

ALGORITMIK

Algoritma EMPAT_PERSEGI_PANJANG

{Algoritma untuk menampilkan menu perhitungan empat persegi panjang, memilih menu, dan melakukan proses perhitungan }

DEKLARASI

nomor_menu     : integer

panjang, lebar     : real

luas, keliling, diagonal : real

DESKRIPSI

    { Cetak Menu }

    write(' ************************************************** ')

    write('        MENU EMPAT PERSEGI PANJANG         ')

    write('            1. Hitung Luas                 ')

    write('            2. Hitung Keliling             ')

    write('            3. Hitung panjang diagonal         ')

    write('            4. Keluar dari Program             ')

    write(' *************************************************** ')

    write(' Masukkan pilihan anda dengan mengetikkan angka (1/2/3/4) ? ')

    read (nomor_menu)

    case (nomor_menu)

    nomor_menu =1    : read (panjang,lebar)

             luasßpanjang*lebar

             write('luas')

    nomor_menu =2    : read (panjang,lebar)

             kelilingß2*panjang + 2*lebar

             write('keliling')

    nomor_menu =3    : read (panjang,lebar)

             diagonalßsqrt(panjang*panjang + lebar*lebar)

             write('diagonal')

    nomor_menu =4    : write('Keluar dari program … sampai jumpa')

    endcase


 

PASCAL

PROGRAM EMPAT_PERSEGI_PANJANG;

(* Program untuk menampilkan menu perhitungan empat persegi panjang, memilih menu, dan melakukan proses perhitungan *)


 

Uses wincrt;

var

nomor_menu     : integer ;

panjang, lebar     : real;

luas, keliling, diagonal : real;

Begin

    writeln(' ******************************************************* ');

    writeln('        MENU EMPAT PERSEGI PANJANG         ');

    writeln('            1. Hitung Luas                 ');

    writeln('            2. Hitung Keliling             ');

    writeln('            3. Hitung panjang diagonal         ');

    writeln('            4. Keluar dari Program             ');

    writeln(' ******************************************************** ');

    write(' Masukkan pilihan anda dengan mengetikkan angka (1/2/3/4) ? ');    readln(nomor_menu);


 

    case nomor_menu of

    1    : begin

         Write('Panjang? '); readln(panjang);

         Write('Lebar? '); readln(lebar);

         Luas:=panjang*lebar;

         writeln('Luas = ',luas);

         end;

    2    : begin

         Write('Panjang? '); readln(panjang);

         Write('Lebar? '); readln(lebar);

         Keliling:=2*panjang + 2*lebar;

         writeln('Keliling = ', keliling);

         end;

    3    : begin

         Write('Panjang? '); readln(panjang);

         Write('Lebar? '); readln(lebar);

         Diagonal:=sqrt(panjang*panjang + lebar*lebar);

         writeln('Diagonal = ', diagonal);

         end;

    4    : writeln('Keluar dari program :-) sampai jumpa');


 

    end;

end.


 

TUGAS :

Buatlah Algoritma & Program menggunakan bahasa pascal untuk menentukan indeks nilai ujian, gunakan struktur IF-THEN-ELSE !!!


 

Rules :

Index A untuk nilai ≥ 80,

Index B untuk 70 ≤ nilai < 80,

Index C untuk 55 ≤ nilai < 70,

Index D untuk 40 ≤ nilai < 55,

Index E untuk nilai < 40.

PEMILIHAN