Selasa, 23 April 2013

perbedaan penggunaan perintah case dan perintah if



Case sering digunakan untuk menyederhanakan penulisan IF-THEN-ELSE yang bertingkat-tingkat sedangkan if digunakan untuk kondisi yang jumlahnya tidak terlalu banyak.

Selasa, 16 April 2013

kendali case


Program Sederhana dengan Pernyataan Kendali Case


Dengan contoh program yang sama untuk versi penyataan case dapat
dilihat pada program di bawah ini :

program P0202;
var
  alas, tinggi, jejari, luas: Real;
  pilih: Integer;
begin
  Writeln('1. Segitiga   2. Lingkaran');
  Readln(pilih);
case pilih   of
    1:  begin
         Readln(alas, tinggi);
         luas := 1 / 2 * alas * tinggi;
         Writeln('Luas Segitiga : ', luas);
End;
    2:  begin
     Readln(jejari);
         luas := pi * Sqr(jejari);
         Writeln('Luas Segitiga : ', luas);
end;
end;
  Readln;
end.

Dari bentuk-bentuk struktur kendali yang telah dijelaskan di atas
dapat terjadi dimana struktur kendali tertentu berada pada struktur
kendali  yang lain, yang dikenal dengan struktur kendali bersarang.

Misalnya didalam pernyataan  if

terdapat pernyataan if     lagi atau dalam

pernyataan case terdapat pernyataan if dan seterusnya.
Untuk lebih jelasnya salin program berikut :
program P0203;
var
  nama, alamat: string;
  nrp:  string[8];
  keterangan: string[2];
  grade, pilih: Char;
  nilai: Integer;  
begin
  Writeln('1. Memasukkan data mahasiswa  2. Keluar');
  Write('Pilihan Anda : ');
  Readln(pilih);
 case pilih   of
    '1':     begin
 


Write('Masukkan Nama Anda : ');
           Readln(nama);
           Write('Masukkan NRP Anda : ');
           Readln(nrp);
           Write('Masukkan Alamat Anda : ');
           Readln(alamat);
           Write('Masukkan Nilai Anda : ');
           Readln(nilai);
           {menentukan program studi}
if (copy(nrp, 3, 2)='11') then
             keterangan := 'S1'
else
if (copy(nrp, 3, 2)='31') then
               keterangan := 'D3';
           {menentukan grade}
if (nilai >= 80) then
             grade := 'A'
else
if (nilai >= 70) then
               grade := 'B'
else 
if (nilai >= 60) then
                 grade := 'C'
else 
                 grade := 'D';
           Writeln('Data mahasiswa yang diinputkan');
           Writeln('Nama : ',nama);
           Writeln('NRP : ',nrp);
           Writeln('Program Studi : ',keterangan);
           Writeln('Alamat : ',alamat);
           Writeln('Nilai : ',nilai);
           Writeln('Grade : ',grade);
end;
    '2':     begin
           Writeln('Anda mengakhiri program !');
Exit;
end;
else  
begin
      Writeln('Pilihan Anda salah !');
 Exit;
end;
 end;  
  Readln;
end.

pemetaan asosiatif dan asosiatif set



   Pemetaan Assosiatif
Pemetaan asosiatif mengatasi kekurangan pemetaan langsung dengan cara setiap blok memoriutama dapat dimuat ke sembarang saluran cache. Alamat memori utama diinterpretasikan dalamfield tag dan field word oleh kontrol logika cache. Tag secara unik mengidentifikasi sebuah blokmemori utama.45.Mekanisme untuk mengetahui suatu blok dalam cache dengan memeriksa setiap tag saluran cache oleh kontrol logika cache. Dengan pemetaan ini didapat fleksibilitas dalampenggantian blok baru yang ditempatkan dalam cache. Algoritma penggantian dirancang untuk
memaksimalkan hit ratio, yang pada pemetaan langsung terdapat kelemahan dalam bagian ini.
Kekurangan pemetaan asosiatif adalah kompleksitas rangkaian sehingga mahal secara ekonomi.
c.       Pemetaan Assosiatif Set
Pemetaan asosiatif set menggabungkan kelebihan yang ada pada pemetaan langsung danpemetaan asosiatif. Memori cache dibagi dalam bentuk set – set.Pemetaan asosiatif set prinsipnya adalah penggabungan kedua pemetaan sebelumnya.Alamat memori utama diinterpretasikan dalam tiga field, yaitu: field tag, field set, dan field word.Hal ini mirip dalam pemetaan langsung. Setiap blok memori utama dapat imuat dalamsembarang saluran cache.  Dalam pemetaan asosiatif set, cache dibagi dalam v buah set, yang masing –masingterdiri dari k saluran. Hubungan yang terjadi adalah :
m = v x k
i = j modulus v dan v = 2d dimana :
i = nomer set cache
j = nomer blok memori utama
m = jumlah saluran pada cache 46
 saluran pada masing-masing set, yang dikenal sebagai asosiatif set dua arah. Nomor setmengidentifikasi set unik dua saluran di dalam cache. Nomor set ini juga memberikan jumlahblok di dalam memori utama, modulus 2. Jumlah blok menentukan pemetaan blok terhadapsaluran. Sehingga blok-blok 000000, 00A000,…,FF1000 pada memori utama dipetakan terhadapset 0 cache. Sembarang blok tersebut dapat dimuatkan ke salah satu dari kedua saluran di dalamset. Perlu dicatat bahwa tidak terdapat dua blok yang memetakannya terhadap set cache yang
sama memiliki nomor tag yang sama. Untuk operasi read, nomor set dipakai untuk menentukanset dua saluran yang akan diuji. Kedua saluran di dalam set diuji untuk mendapatkan yang cocokdengan nomor tag alamat yang akan diakses.Penggunaan dua saluran per set ( v = m/2, k = 2), merupakan organisasi asosiatif set yangpaling umum. Teknik ini sangat meningkatkan hit ratio dibandingkan dengan pemetaan langsung.Asosiatif set empat arah (v = m/4, k = 4) memberikan eningkatan tambahan yang layak denganpenambahan harga yang relatif rendah. Peningkatan lebih lanjut jumlah saluran per set hanya
memiliki efek yang sedikit.