Selasa, 15 November 2011

Modul Algoritma


MODUL PRAKTIKUM
Algoritma dan pemrograman


BAB 1
STRUKTUR UMUM TURBO PASCAL

                Struktur utama dari bahasa pemrograman turbo Pascal terdiri dari beberapa bagian umum seperti Komentar, Preposesor Directive, Global Declaration, User Define Function,  dan Main Program.
1.       Komentar
Adalah bagian program yang berguna untuk memberi keterangan program atau keterangan pada fungsi dari program, dan biasanya komentar tersebut diapit oleh tanda { dan }, sehingga apapun yang tertulis didalam kedua tanda tersebut tidak akan dieksekusi contoh :
{ program sederhana untuk menampilkan string }
2.       Preprosesor Directive
Preprosesor Directive adalah persiapan penggunaan fungsi uses yang nantinya akan menggunakan file-file yang telah disediakan pada direktori doc, contoh :
Uses wincrt;
Uses printer;
3.       Global Declaration
Global declaration adalah pendeklarasian fungsi dan variable secara global, pendeklarasian ini bermaksud bahwa semua fungsi dan variable yang ada dapat dikenal diseluruh program, contoh :
Var Angka : Integer;
Begin
End
4.       Main Program
Main program atau program utama berisi keseluruhan perintah pada sebuah program yang dapat berupa perintah langsung atau berupa pemanggilan fungsi-fungsi :
var  nama: string;
Begin
    clrscr;
    write(‘ Masukan nama anda : ”);
readln(nama);
    write(‘Selamat datang’, nama);
    readln;
End.
5.       User Define Function
Adalah tempat penulisan fungsi-fungsi yang telah dideklarasikan sebelumnya, bagian ini akan dibahas lebih lanjut pada pembahasan fungsi dan prosedur.
                Hampir semua perintah pada Turbo Pascal diakhiri dengan tanda titik koma (;).Turbo Pascal adalah bahasa pemrograman yang incase-sensitive yang berarti tidak membedakan penggunaan huruf besar dan kecil.        

Berikut table standar penggunaan short-cut pada Turbo Pascal
Tombol
Keterangan
F2
Menyimpan File
F3
Membuka File
F5
Membesarkan jendela halaman kode program
F6
Berpindah halaman kode program
CTRL+F9
Menjalankan Program
ALT+F9
Mengkompile Program




BAB 2
TIPE DATA, INPUT DAN OUTPUT

1.       Tipe Data
Setiap variabel yang ditulis pada turbo Pascal memiliki tipe data tertentu, sehingga dalam membuat pendeklarasiannya pun berbeda pula. Beberapa tipe data yang umum digunakan adalah :
a.       Integer
Berupa kumpulan angka numerik bulat. Cara mendeklarasikannya adalah
namavar : integer;
b.       Real
Berupa kumpulan angka numeric pecahan. Cara mendeklarasikannya adalah
Namavar : real ;
c.        Char
Berupa sebuah karakter tunggal atau sebuah karakter. Cara mendeklarasikannya adalah namavar : char;
d.       String
Berupa kumpulan dari karakter dengan jumlah tertentu. Cara mendeklarasikannya adalah : namavar : string;
e.        Boolean
Tipe data yang hanya memiliki 2 nilai yaitu true dan false. Cara mendeklarasikannya adalah : namavar : Boolean;               
2.       Perintah Input
Perintah yang digunakan untuk mengambil sebuah masukan dari keyboard yang dipakai pada Turbo Pascal adalah: Read/Readln, Contoh :
Uses wincrt;
Var Nama:string;
Begin
Clrscr;
Write(‘Masukan Nama Anda : ’);
Readln(Nama);
Readln; 
End.

3.       Perintah Output
Perintah yang digunakan untuk membuat sebuah nilai keluaran pada Turbo Pascal adalah: write/writeln, Contoh :
Uses wincrt;
Var Nama:string;
Begin
Clrscr;
Write(‘Masukan Nama Anda : ’);
Readln(Nama);
Writeln(‘Selamat Datang : ’,Nama);
Readln; 
End.
                Studi Kasus 1
Buat sebuah program yang menerima input nama, alamat, umur, pekerjaan dan mengeluarkan output nama, alamat, umur dan pekerjaan.



                                                                                                     BAB 3
VARIABEL, KONSTANTA DAN OPERATOR

1.       Variabel
Seperti yang telah dijelaskan sebelumnya pada pembahasan tipe data, turbo Pascal mengenal bermacam-macam tipe data baik itu tipe data numeric dan data karakter atau string. Variabel yang memiliki tipe data numeric ( integer, real ) adalah variable yang dapat melakukan proses perhitungan sedangkan variable yang memiliki tipe data karakter atau string ( char, string ) tidak dapat melakukan prose perhitungan. Berikut contoh-contoh penulisannya :
A : Integer;
A,B,C : Real;
A : Char;
A,B,C : string;
2.       Konstanta
Konstanta adalah sebuah nilai yang tetap dan tidak berubah, pendeklarasian sebuah konstanta sedikit berbeda dengan pendeklarasian variable karena diperlukan inisialisasi sebuah nilai awal dan diletakkan sebelum/sesudah deklarasi variabel:
Const phi=3.14;
Const Pass=’AADC’
3.       Operator
Operator aritmatika digunakan untuk memproses segala jenis data bilangan baik bilangan bulat maupun bilangan pecahan. Berikut table operator aritmatika :
Opeator
Fungsi
Contoh
Hasil
*
Perkalian
2*3
6
+
Pertambahan
1+3
4
/
Pembagian
9/3
3
-
Pengurangan
5-3
2
Mod
Sisa bagi
7 mod 2
1
Div
Hasil Bagi
9 div 2
4
:=
Pemberian Nilai
A:=7

()
Prioritas
2*(3+2)
10





Selain operator aritmatika pada Turbo Pascal juga dikenal operator logika dan operator kondisi, seperti yang ditunjukan pada table berikut :
Operator
Fungsi
Keterangan
NOT
NOT
Lawan/Pembalik
AND
AND
Salah satu salah , maka salah semua
OR
OR
Salah satu benar, maka benar semua
X>Y

X lebih besar dari Y
X<Y

X lebih kecil dari Y
X>=Y

X lebih besar sama dengan Y
X<=Y

X lebih kecil sama dengan Y
X=Y

X sama dengan Y
X<>Y

X tidak sama dengan Y

Studi Kasus 2
Buat sebuah program perhitungan nilai akhir
                Input    : nama, tugas, quiz, uts, dan uas
Proses  : nilai = 10%*tugas, 20%*quiz + 30%*uts, dan 40%*uas.
Output : nama, dan nilai



BAB 4
STRUKTUR UMUM IF – THEN – ELSE

                Fungsi logika if adalah salah satu cara yang paling umum dalam melakukan pengkondisian pada sebuah program. Beberapa contoh dari struktur if diantaranya :
1.       Struktur IF sederhana
If (kondisi) Then
Begin
  pernyataan bila kondisi dipenuhi
End
Pada struktur ini, pernyataan yang diapit oleh Begin..End hanya akan dieksekusi bila kondisi if terpenuhi. Jika pernyataan pada kondisi if lebih dari satu, diharuskan menggunakan Begin..End ini bila hanya satu, hal itu bisa dihilangkan.
Contoh :
Uses wincrt;
Var A,B:integer;
Begin
   A:=2;B:=8;
   if (a<b) then
   Write(A,’  lebih kecil dari ’,  B);
End
2.       Struktur IF ganda
if (kondisi) then
Begin
  pernyataan bila kondisi dipenuhi
End
else
Begin
  pernyataan bila kondisi tidak dipenuhi
End
Struktur ini memungkinkan dilakukannya aksi yang berbeda tergantung dari hasil pengkondisian. Bila kondisi dipenuhi maka pernyataan pada blok if dieksekusi, bila tidak, maka pernyataan pada blok else dieksekusi. Contoh :
Uses wincrt;
Var A,B:integer;
Begin
   A:=7; B:=12;  
   If (a<b) Then
   Begin
     textcolor(red); Write(A,’  lebih kecil dari ’,  B);
   end
   else
   Begin
     textcolor(blue); Write(A,’  lebih besar dari ’,  B);
    End;
End;
3.       Struktur IF bersarang
if (kondisi1) then
begin
   if (kondisi2) then
   begin
      pernyataan bila kondisi2 dipenuhi
     end
     else if (kondisi3) then
     begin
       pernyataan bila kondisi3 dipenuhi
      end
end
else
begin
  pernyataan bila kondisi1 tidak dipenuhi
end;
Struktur if bersarang ini memungkinkan terjadi if didalam if yang mengakibatkan adanya sebuah kondisi dalam kondisi yang lain, penulisannya cukup rumit sehingga agar lebih mudah diharapkan penulisan kondisi seperti ini dibuat lebih sistematis. Contoh:
Uses wincrt;
Var A,B:integer;
Begin
   if (a<b) then
   begin
      textcolor(red); Write(A,’  lebih kecil dari ’,  B);
    end
   else if (a=b) then
         begin
           Write(A,’  sama dengan ’,  B);
          end
          else
          begin
            Write(A,’  lebih besar dari ’,  B);
          end;
end.



                Studi Kasus 3
Buat sebuah program perhitungan gaji pegawai
                Input    : nama, gajipokok, status, jumlah_anak
Proses  : gajibersih=gajipokok+tunjangan
                   tunjangan=tunjangan_istri + tunjangan_anak
                   tunjangan_istri=10%*gajipokok
                   tunjangan_anak=jumlah_anak*5%*gajipokok
Output : nama, dan gajibersih
Keterangan :
Status hanya menerima 3 buah input, bila status = 1(menikah) maka perlu dilakukan proses perhitungan tunjangan istri dan anak(bila ada), bila status =2(belum menikah) proses perhitungan tunjangan istri dan anak diabaikan, bila status=3(cerai) maka proses perhitungan tunjangan istri diabaikan dan lakukan proses perhitungan tunjangan anak(bila ada).
JAWABAN
Studi Kasus 3
Program Kasus3;
Uses wincrt;
Var Nama:string;
    Status,Ja:integer;
    T,ti,Ta,……………,………………:real;
Begin
 Clrscr;
 write('Masukan Nama Pegawai : ');readln(Nama);
 write('Masukan Gaji Pokok   : ');readln(Gapok);
 write('Masukan Status       : ');readln(Status);
 if status=……………… then
   ta:=0.05*ja*gapok;
   t:=ti+ta;
  end
  else if status=…………… then
        begin
         t:=0;
        end
        else if status=3 then
              begin
               write('Masukan Jumlah Anak : ');readln(ja);
               ti:=0;
               ta:=0.05*Ja*Gapok;
               ………………:=Ti+Ta;
              end;
 Gaber:=Gapok+T;
 Write('Nama : ',Nama,' Gaji Bersih Anda : ',Gaber:10:2);
 readln;
End.
  begin
   write('Masukan Jumlah Anak : ');readln(Ja);
   ti:=0.1*gapok;



BAB 5
STRUKTUR UMUM CASE - OF

                Fungsi case of merupakan struktur kondisi yang majemuk yang biasanya digunakan untuk melakukan kondisi sederhana dalam jumlah banyak. Struktur umum case of adalah sebagai berikut :
case (kondisi) of
   a :  pernyataan solusi untuk kondisi a;
   b : pernyataan solusi untuk kondisi b;
   c  : pernyataan solusi untuk kondisi c
   else  pernyataan solusi selain dari a,b,c;
end;
Berikut contoh penggunaannya :
Uses wincrt
Var A:integer;
Begin
writeln(‘Masukan hari ke : ‘);readln(A);
Case (a) Of
   1 : write (“Hari ke ’,A,’ adalah Senin’);
   2 : write (“Hari ke ’,A,’ adalah Selasa’);
   3 : write (“Hari ke ’,A,’ adalah Rabu’);
   4 : write (“Hari ke ’,A,’ adalah Kamis’);
   5 : write (“Hari ke ’,A,’ adalah Jumat’);
   6 : write (“Hari ke ’,A,’ adalah Sabtu’);
   7 : write (“Hari ke ’,A,’ adalah Minggu’)
   else  write(“Salah ketik tuh !!!”);
 End;
End.
Bila pada penggunaan case of ini, pernyataan yang akan dieksekusi lebih dari satu baris maka diharuskan menggunakan pengapit Begin..End disetiap kondisi case.

                Studi Kasus 4
Buat sebuah program perhitungan gaji pegawai
                Input    : nama, golongan, status, jumlah_anak
Proses  : gajibersih=gajipokok+tunjangan
                   tunjangan=tunjangan_istri + tunjangan_anak
                   tunjangan_istri=10%*gajipokok
                   tunjangan_anak=jumlah_anak*5%*gajipokok
Output : nama, dan gajibersih
Keterangan :
Golongan hanya menerima 4 buah input, bila golongan=’A’ maka gajipokok=4000, bila golongan=’B’ maka gajipokok=3000, bila golongan=’C’ maka gajipokok=2000, dan bila golongan=’D’ maka gajipokok=1000.
Status hanya menerima 3 buah input, bila status = 1(menikah) maka perlu dilakukan proses perhitungan tunjangan istri dan anak(bila ada), bila status =2(belum menikah) proses perhitungan tunjangan istri dan anak diabaikan, bila status=3(cerai) maka proses perhitungan tunjangan istri diabaikan dan lakukan proses perhitungan tunjangan anak(bila ada).





                                                                                                          BAB 6
STRUKTUR UMUM PENGULANGAN

1.       Struktur umum for to do
For (kondisi awal) to (kondisi akhir) do
Begin  
                  proses selama kondisi benar
End
Struktur for to do diatas memiliki kondisi awal dan kondisi akhir. Kondisi awal adalah kondisi untuk pertama kalinya pengulangan dilakukan dan kondisi akhir adalah sampai kapan pengulangan itu berlangsung. Proses pengubahan variable pada for to do dilakukan otomatis dan penambahan atau pengurangannya sebanyak satu-satu. Contoh :
Uses wincrt
Var X : integer;
Begin
   for X:=1 to 10 do
   Begin 
   write(‘ angka ’,x);  End;
End.
Contoh diatas dapat dibaca sebagai : cetak angka dari satu sampai sepuluh dengan, angka awalnya adalah satu dan angka akhir adalah sepuluh dengan pertambahan satu-satu. Kebalikan dari contoh diatas adalah :
Uses wincrt
Var X : integer;
Begin
   for X:=10 downto 1 do
   Begin 
   write(‘ angka ’,x);  End;
End.
2.       Struktur umum while - do
While (kondisi) do
Begin
    proses selama kondisi terpenuhi
End;
Struktur ini akan melakukan proses setelah sebelumnya dilakukan sebuah pengkondisian dengan kata lain minimal pengulangan yang mungkin terjadi pada struktur ini adalah 0 kali.


 Contoh :
Uses wincrt;
Var A:integer;
Begin
   A:=1;
   while ( A <= 10 ) do
   Begin
         write(‘ angka ’,A);
        A:=A+1;
   End;
End.
Contoh diatas dapat dibaca sebagai : cetak angka dari satu sampai sepuluh dengan, angka awalnya adalah satu dan angka akhir adalah sepuluh dengan pertambahan satu-satu. Satu hal yang perlu diingat, pertambahan variable penunjuk pengulangan (A:=A+1;) harus ditulis dan disimpan pada blok pengulangan bila tidak, maka pengulangan tidak akan pernah berhenti.
3.       Struktur umum repeat - until
Repeat
    proses selama kondisi terpenuhi
Until (kondisi)
Struktur ini akan melakukan proses terlebih dahulu baru kemudian dilakukan sebuah pengkondisian dengan kata lain minimal pengulangan yang mungkin terjadi pada struktur ini adalah 1 kali. Contoh :
Uses wincrt;
Var A:integer;
Begin
   A:=1;
   Repeat
         write(‘ angka ’,A);
        A:=A+1;
   Until A>10;
End.







Studi Kasus 5
-    Buat sebuah program penjumlahan bilangan 1 sampai 100
-    Buat sebuah program penjumlahan bilangan genap/ganjil 1 sampai 100
JAWABAN
Studi Kasus 5
Program Kasus5;
Uses wincrt;
Var I,Jum:integer;
Begin
 Clrscr;
 Jum:=……………………;
 Write('Penjumlahan bilangan dari 1 - 100 adalah : ');
 for ………………………………………………… do
  Jum:=Jum…………………;
 Write(……………);
 Readln;
End.

Program Kasus5;
Uses wincrt;
Var I,Jum:integer;
Begin
 Clrscr;
 Jum:=0;
 Write('Penjumlahan bilangan Genap dari 1 - 100 adalah : ');
 for I:=1 to 100 do
  …………………………………………………………………
   Jum:=Jum+I;
 Write(Jum);
 Readln;
End.

BAB 7
PROSEDUR DAN FUNGSI

Suatu program merupakan kumpulan dari beberapa pernyataan solusi, kadang kala pernyataan solusi tersebut dapat berulang pada blok-blok tertentu program. Bila pernyataan tersebut ditulis ulang, akan sangat tidak efisien dan memakan waktu, sehingga akan lebih baik bila pernyataan tersebut dibuat menjadi sebuah fungsi/prosedur tersendiri sehingga lebih mudah dalam pemanggilannya. Secara garis besar, fungsi adalah proses yang mengirimkan sebuah nilai keluaran sedangkan procedure tidak mengirimkan nilai keluaran.
1.       Procedure
Bentuk umum dari penulisan sebuah prosedur adalah sebagai berikut:
Procedure NamaProsedur
Begin
   pernyataan prosedur
End;
Bila kita telah menyatakan sebuah prosedur tersendiri, maka perintah yang ada didalamnya dapat kita gunakan dengan hanya memanggil nama prosedurnya saja. Berikut contoh dari penulisan prosedur :

Program cobaprosedur;
uses wincrt;
var a:integer;
procedure inputnama;
var nama:string;
begin
        clrscr;
        write('masukan Nama Anda : ');readln(nama);
        write('halo ',nama);
        readln;
end;
begin
        inputnama;
end.

2.       Function
Bentuk umum dari penulisan sebuah fungsi adalah sebagai berikut:
Function NamaFungsi(parameter):tipe fungsi;
Begin
   pernyataan fungsi
End;
Fungsi sedikit lebih rumit dari prosedur karena dia selain menerima parameter, fungsi juga dapat menghasilkan nilai keluaran dari hasil pemrosesannya sehingga dalam pemanggilannya pun sedikit berbeda, berikut contohnya :
     
Program cobafungsi;
uses wincrt;
function inputnama(x:string):string;
var salam:string;
begin
salam:='Selamat Datang '+X;
inputnama:=salam;
end;
var nama,kalimat:string;
begin
  clrscr;
  write('masukan Nama Anda : ');readln(nama);
  kalimat:=inputnama(nama);
  write(kalimat);
  readln;
end.
Disarankan dalam pemakain fungsi, sebaiknya segala bentuk perintah penerimaan input dilakukan diluar fungsi sehingga fungsi hanya menerima parameter, melakukan proses dan mengeluarkan output tanpa harus menerima input dari keyboard.
Studi Kasus 6
Buat sebuah program pencari huruf mutu mahasiswa dengan menggunakan fungsi dengan ketentuan :
Nilai > 75 <=100 à A                                                                Buat dengan fungsi
Nilai > 65 <=75 à B                                                                 
Nilai > 50 <=65 à C
Nilai > 40 <=50 à D
Nilai >= 0 <=40 à E
Program Kasus6;
Uses wincrt;
function carihuruf(X:integer):char;
var jawab:char;
begin
 jawab:='?';
 if (x>75) and (X<=100) then
    jawab:='A'
 else if (x>65) and (X<=75) then
      jawab:='B'
 else if (x>50) and (X<=65) then
      jawab:='C'
 else if (x>40) and (X<=50) then
      jawab:='D'
 else if (x>0) and (X<=40) then
      jawab:='E';
 carihuruf:=jawab;
end;
Var nilai:integer;
    hurufmutu:char;
Begin
 Clrscr;
 Write('Masukan Nilai : ');readln(nilai);
 hurufmutu:=carihuruf(nilai);
 Write('Huruf Mutu : ',hurufmutu);End.

BAB 8
ARRAY / LARIK

                Array/Larik adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama, setiap elemen diakses langsung melalui indeksnya. Deklarasi array secara umum adalah sebagai berikut :
                Namavar : array[ panjang array]of tipedata
                Tipedata berisi jenis data atau tipe data variable yang digunakan, Namavar adalah nama dari variabel nya sendiri, dan panjang array adalah panjang dari array yang telah dipersiapkan. Contoh:
                Nilai : Array[1..10] of integer;  à deklarasi array tipe integer sebanyak 10 buah
                Nama: Array[1..20] of string;  à deklarasi array tipe string sebanyak 20 buah
                Berikut adalah beberapa contoh program yang menggunakan array :
Program ArrayAngka;
uses wincrt;
var a:array[1..100] of integer;
      i:integer;
begin
       clrscr;
       for i:=1 to 10 do
       begin
        write('Masukan Angka : ');readln(a[i]);
       end;
      for i:=1 to 10 do
       begin
        writeln('Angka ke ',i,' adalah : ',a[i]);
       end;
       readln;
end.

                Contoh lainnya:
Program ArrayNama;
uses wincrt;
var nama:array[1..100] of string;
      i:integer;
begin
      clrscr;
      for i:=1 to 10 do
      begin
       write('Masukan Nama Anda : ');readln(nama[i]);
      end;
      for i:=1 to 10 do
      begin
       writeln('Nama Ke ',i,' adalah : ',nama[i]);
      end;
       readln;
end.

Catatan : Indeks array pada turbo Pascal dimulai dari angka 1,2,3 dan seterusnya.

Studi Kasus 7
Buat sebuah program perhitungan nilai akhir 5 orang mahasiswa
                Input    : nama, tugas, quiz, uts, dan uas
Proses  : nilai = 10%*tugas + 20%*quiz + 30%*uts+ 40%*uas.
Output : nama, dan nilai ditampilan menurut index

Jawaban
Program Kasus7;
Uses wincrt;
Var Nama:array[1..5]of string;
    I,Tugas,Quiz,UTS,UAS:integer;
    Nilai:array[1..5]of real;
Begin
 for I:=1 to 5 do
  begin
   Clrscr;
   write('Masukan Nama  : ');readln(Nama[I]);
   write('Masukan Tugas : ');readln(Tugas);
   write('Masukan Quis  : ');readln(Quiz);
   write('Masukan UTS   : ');readln(UTS);
   write('Masukan UAS   : ');readln(UAS);
   Nilai[I]:=0.1*Tugas+0.2*Quiz+0.3*UTS+0.4*UAS;
  end;
 Clrscr;
 for I:=1 to 5 do
  writeln('Nama    : ',Nama[I],' mendapat nilai : ',nilai[i]:5:2);
 readln;
End.





BAB 9
RECORD

                Record adalah sekumpulan data yang memiliki tipe data yang berbeda, atau dapat dikatakan sebagai sejumpulan data yang bervariasi tipe datanya. Walaupun tipe datanya berbeda, biasanya merupakan suatu kesatuan yang menjelaskan sebuah variable. Struktur umumnya :
                Struct nama_struktur
{ Pendeklarasian variabel };
Struct nama_struktur namavar;
Pemasukan data kedalam suatu record hars didahului dengan nama variable utamanya diikuti dengan variable yang ada didalamnya. Berikut contoh penggunaan record secara lengkap :
 Program cobarecord;
 uses wincrt;
 type data= record
          nim:string;
          nama:string;
          nilai:integer;
          end;
 var i:integer;
       mahasiswa : data;
 begin
       clrscr;
       write('Masukan NIM   : ');readln(mahasiswa.nim);
       write('Masukan Nama  : ');readln(mahasiswa.nama);
       write('Masukan Nilai : ');readln(mahasiswa.nilai);
       writeln('NIM    : ',mahasiswa………………………);
       writeln('Nama   : ',mahasiswa………………………);
       writeln('Nilai  : ',mahasiswa………………………………);
       readln;
end.



Penggunaan record juga bisa digabungkan dengan array sehingga sebuah variable yang mengandung record dapat terdiri dari banyak variable yang serupa yang dibedakan dengan nomor indeksnya. Berikut contoh lengkapnya :

Program recorddanarray
uses wincrt;
type data= ………………………
          nim:string;
          nama:string;
          nilai:integer;
          end;
var x,i:integer;
          mahasiswa : array[1..100] of data;
          jawab:…………………………;
begin
      i:=………………;
      repeat
       clrscr;
       write('Masukan NIM   : ');readln(mahasiswa  ?.nim);
       write('Masukan Nama  : ');readln(mahasiswa ?.nama);
       write('Masukan Nilai : ');readln(mahasiswa ?.nilai);
       write('Masukan data lagi Y/T ?');
       readln(……………………………);
      I:=i+1;
      ……………………… (jawab='t') or (jawab='T');
       for x:=1 to …………… do
      begin
       writeln('NIM    : ',mahasiswa ?.nim);
       writeln('Nama   : ',mahasiswa ?.nama);
       writeln('Nilai  : ',mahasiswa ?.nilai);
      end;
       readln;
end.



BAB 10
KUMPULAN STUDI KASUS

Studi Kasus 1
Program Kasus1;
Uses wincrt;
Var Nama,Alamat:string;
    Umur:integer;
Begin
 Clrscr;
 write('Masukan Nama Anda : ');readln(Nama);
 write('Masukan Alamat Anda : ');readln(Alamat);
 write('Masukan Umur Anda : ');readln(Umur);
 writeln('Nama    : ',Nama);
 writeln('Alamat  : ',Alamat);
 writeln('Umur    : ',Umur);
 readln;
End.

Studi Kasus 2
Program Kasus2;
Uses wincrt;
Var Nama:string;
    Tugas,Quiz,UTS,UAS:integer;
    Nilai:real;
Begin
 Clrscr;
 write('Masukan Nama  : ');readln(Nama);
 write('Masukan Tugas : ');readln(Tugas);
 write('Masukan Quis  : ');readln(Quiz);
 write('Masukan UTS   : ');readln(UTS);
 write('Masukan UAS   : ');readln(UAS);
 Nilai:=0.1*Tugas+0.2*Quiz+0.3*UTS+0.4*UAS;
 writeln('Nama    : ',Nama,' mendapat nilai : ',nilai:5:2);
 readln;
End.

Studi Kasus 3
Program Kasus3;
Uses wincrt;
Var Nama:string;
    Status,Ja:integer;
    T,ti,Ta,gapok,gaber:real;
Begin
 Clrscr;
 write('Masukan Nama Pegawai : ');readln(Nama);
 write('Masukan Gaji Pokok   : ');readln(Gapok);
 write('Masukan Status       : ');readln(Status);
 if status=1 then
  begin
   write('Masukan Jumlah Anak : ');readln(Ja);
   ti:=0.1*gapok;
   ta:=0.05*ja*gapok;
   t:=ti+ta;
  end
  else if status=2 then
        begin
         t:=0;
        end
        else if status=3 then
              begin
               write('Masukan Jumlah Anak : ');readln(ja);
               ti:=0;
               ta:=0.05*Ja*Gapok;
               T:=Ti+Ta;
              end;
 Gaber:=Gapok+T;
 Write('Nama : ',Nama,' Gaji Bersih Anda : ',Gaber:10:2);
 readln;
End.

Studi Kasus 4
Program Kasus1;
Uses wincrt;
Var Nama:string;
    Golongan:char;
    Status,Ja:integer;
    T,ti,Ta,gapok,gaber:real;
Begin
 Clrscr;
 write('Masukan Nama Pegawai : ');readln(Nama);
 write('Masukan Golongan     : ');readln(Golongan);
 Golongan:=Upcase(Golongan);
 Case Golongan Of
 'A' : Gapok:=1000;
 'B' : Gapok:=2000;
 'C' : Gapok:=3000;
 'D' : Gapok:=4000
 Else Exit;
 End;
 write('Masukan Status       : ');readln(Status);
 Case Status Of
  1 : begin
       write('Masukan Jumlah Anak : ');readln(Ja);
       ti:=0.1*gapok;
       ta:=0.05*ja*gapok;
       t:=ti+ta;
      end;
  2 : begin
       t:=0;
      end;
  3 : begin
       write('Masukan Jumlah Anak : ');readln(ja);
       ti:=0;
       ta:=0.05*Ja*Gapok;
       T:=Ti+Ta;
      end
  Else Exit;
  end;
 Gaber:=Gapok+T;
 Write('Nama : ',Nama,' Gaji Bersih Anda : ',Gaber:10:2);
 readln;
End.

Studi Kasus 5
Program Kasus5;
Uses wincrt;
Var I,Jum:integer;
Begin
 Clrscr;
 Jum:=0;
 Write('Penjumlahan bilangan dari 1 - 100 adalah : ');
 for I:=1 to 100 do
  Jum:=Jum+I;
 Write(Jum);
 Readln;
End.

Program Kasus5;
Uses wincrt;
Var I,Jum:integer;
Begin
 Clrscr;
 Jum:=0;
 Write('Penjumlahan bilangan Genap dari 1 - 100 adalah : ');
 for I:=1 to 100 do
  If I mod 2 = 0 Then
   Jum:=Jum+I;
 Write(Jum);
 Readln;
End.








Studi Kasus 6
Program Kasus6;
Uses wincrt;
function carihuruf(X:integer):char;
var jawab:char;
begin
 jawab:='?';
 if (x>75) and (X<=100) then
    jawab:='A'
 else if (x>65) and (X<=75) then
      jawab:='B'
 else if (x>50) and (X<=65) then
      jawab:='C'
 else if (x>40) and (X<=50) then
      jawab:='D'
 else if (x>0) and (X<=40) then
      jawab:='E';
 carihuruf:=jawab;
end;
Var nilai:integer;
    hurufmutu:char;
Begin
 Clrscr;
 Write('Masukan Nilai : ');readln(nilai);
 hurufmutu:=carihuruf(nilai);
 Write('Huruf Mutu : ',hurufmutu);
 Readln;
End.










Studi Kasus 7
Program Kasus7;
Uses wincrt;
Var Nama:array[1..5]of string;
    I,Tugas,Quiz,UTS,UAS:integer;
    Nilai:array[1..5]of real;
Begin
 for I:=1 to 5 do
  begin
   Clrscr;
   write('Masukan Nama  : ');readln(Nama[I]);
   write('Masukan Tugas : ');readln(Tugas);
   write('Masukan Quis  : ');readln(Quiz);
   write('Masukan UTS   : ');readln(UTS);
   write('Masukan UAS   : ');readln(UAS);
   Nilai[I]:=0.1*Tugas+0.2*Quiz+0.3*UTS+0.4*UAS;
  end;
 Clrscr;
 for I:=1 to 5 do
  writeln('Nama    : ',Nama[I],' mendapat nilai : ',nilai[i]:5:2);
 readln;
End.

Studi Kasus Pilihan 1
Buatlah sebuah program yang dapat memberikan output seperti dibawah ini :
a.             1                              b.             12345                    c.             x                              d.             xxxxx
12                                           1234                                       xx                                           xxxx
123                                         123                                         xxx                                         xxx
1234                                       12                                           xxxx                                       xx
12345                                    1                                              xxxxx                                    x






Program KasusPilihan;
Uses wincrt;
Var I,J:Integer;
Begin
 Clrscr;
  For I:=1 to 5 Do
   Begin
    For J:=1 to I Do
     Write('*');
    Writeln;
   End;
 Readln;
End.

Program KasusPilihan;
Uses wincrt;
Var I,J:Integer;
Begin
 Clrscr;
  For I:=5 downto 1 Do
   Begin
    For J:=1 to I Do
     Write(J);
    Writeln;
   End;
 Readln;
End.

Studi Kasus Pilihan 2
Buatlah sebuah program yang dapat memberikan tampilan animasi
a.       Teks bergerak ke kanan dan ke kiri
b.       Teks bergerak ke atas dan kebawah
c.        Teks bergerak memutari layar monitor

Program KasusPilihan;
Uses wincrt;
Var I,J,Pos:Integer;
Begin
 I:=1; J:=50; Pos:=0;
 Repeat
  If (I<=50) and (Pos=0) Then
   Begin
    Textcolor(I);
    Clrscr;
    Gotoxy(i+1,5);
    write(' ANIMASI ');
    delay(100);
    I:=I+1;
    If I>50 Then
     Begin
      Pos:=1;
      J:=50;
     End;
   End;
  If (J>=2) and (Pos=1) Then
   Begin
    Textcolor(J);
    Clrscr;
    Gotoxy(J-1,5);
    write(' ANIMASI ');
    delay(100);
    J:=J-1;
    If J<2 Then
     Begin
      Pos:=0;
      I:=1;
     End;
   End;
 Until Keypressed;
 Readln;
End.


Studi Kasus Pilihan 3
Buatlah sebuah program yang dapat memberikan tampilan menu dengan isi menu
a.       Penjumlahan, pengurangan, perkalian, dan pembagian
b.       Pemasukan Data Mahasiswa, Tampilan Data Mahasiswa, Pencarian Nilai Mutu
Bantuan : Untuk proses pembuatan kotak dapat disisipkan prosedur dibawah ini, sehingga dalam pembuatan kotak hanya perlu dipanggil nama prosedur+parameternya saja J.
Kotak(Posx:integer;Posy:integer;Baris:integer;Kolom:integer;
Warna:integer);

Program KasusPilihan;
Uses wincrt;
Procedure Kotak(Posx:integer;Posy:integer;Baris:integer;Kolom:integer;Warna:integer);
var I:integer;
Begin
Textcolor(Warna);
Gotoxy(posx+1,posy+1);write('ALT+202');
For I:=1 to Kolom Do write('ALT+205'); write('ALT+187');
For I:=1 to Baris+1 Do
Begin
Gotoxy(posx+1,posy+1+i);write('ALT+186');
Gotoxy(posx+2+kolom,posy+1+i);write('ALT+186');
End;
Gotoxy(posx+1,posy+2+baris);write('ALT+200');
For I:=1 to Kolom Do write('ALT+205'); write('ALT+188');
End;



procedure penjumlahan;
var a,b,c:integer;
begin
 clrscr;
 kotak(20,5,9,40,12);
 gotoxy(32,9);textcolor(10);write('PROGRAM PENJUMLAHAN');
 textcolor(15);
 gotoxy(27,11);write('Masukan Bilangan Pertama : ');
 readln(a);
 gotoxy(27,12);write('Masukan Bilangan Kedua   : ');
 readln(b);
 c:=a+b;textcolor(14);
 gotoxy(27,14);write('Hasil Dari ',a,' + ',b,' adalah ',c);
 readln;
end;

procedure pengurangan;
var a,b,c:integer;
begin
 clrscr;
 kotak(20,5,9,40,12);
 gotoxy(32,9);textcolor(10);write('PROGRAM PENGURANGAN');
 textcolor(15);
 gotoxy(27,11);write('Masukan Bilangan Pertama : ');
 readln(a);
 gotoxy(27,12);write('Masukan Bilangan Kedua   : ');
 readln(b);
 c:=a-b;textcolor(14);
 gotoxy(27,14);write('Hasil Dari ',a,' - ',b,' adalah ',c);
 readln;
end;

procedure perkalian;
var a,b,c:integer;
begin
 clrscr;
 kotak(20,5,9,40,12);
 gotoxy(33,9);textcolor(10);write('PROGRAM PERKALIAN');
 textcolor(15);
 gotoxy(27,11);write('Masukan Bilangan Pertama : ');
 readln(a);
 gotoxy(27,12);write('Masukan Bilangan Kedua   : ');
 readln(b);
 c:=a*b;textcolor(14);
 gotoxy(27,14);write('Hasil Dari ',a,' x ',b,' adalah ',c);
 readln;
end;

procedure pembagian;
var a,b,c:real;
begin
 clrscr;
 kotak(20,5,9,40,12);
 gotoxy(32,9);textcolor(10);write('PROGRAM PEMBAGIAN');
 textcolor(15);
 gotoxy(27,11);write('Masukan Bilangan Pertama : ');
 readln(a);
 gotoxy(27,12);write('Masukan Bilangan Kedua   : ');
 readln(b);
 c:=a/b;textcolor(14);
 gotoxy(27,14);write('Hasil Dari ',a:2:0,' / ',b:2:0,' adalah ',c:2:2);
 readln;
end;


var jawab:integer;

Begin
 Repeat
  clrscr;
  kotak(25,5,10,30,12);
  gotoxy(35,8);textcolor(14);write('MENU PILIHAN');
  textcolor(11);
  gotoxy(30,10);write('1. Program Penjumlahan');
  gotoxy(30,11);write('2. Program Perkalian');
  gotoxy(30,12);write('3. Program Pengurangan');
  gotoxy(30,13);write('4. Program Pembagian');
  gotoxy(30,14);write('5. Keluar');
  textcolor(15);
  gotoxy(30,16);write('Masukan Pilihan Anda ? ');
  readln(jawab);
  case jawab of
  1 : penjumlahan;
  2 : perkalian;
  3 : pengurangan;
  4 : pembagian;
  end;
 Until jawab=5;
 Readln;
End.

     
TIPS : Gunakan SHIFT+Tanda Panah untuk melakukan Blok dan CTRl + Insert untuk melakukan COPY atau SHIFT + DEL untuk melakukan CUT  dan SHIFT + Insert untuk melakukan PASTE.        

Sumber  : bpk Suhanda,ir.,M.T.