Selasa, 17 Juli 2012

algoritma 1


BAB I
KONSEP DASAR BAHASA PASCAL

1.1   Definisi algoritma
“Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis”.Kata logis merupakan kata kuncidalam algoritma.Langkah-langkah dalam algoritma harus logis dan harusdapat ditentukan bernilai salah atau benar.Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untukmelakukan pekerjaan tertentu.Pertimbangan dalam pemilihan algoritmaadalah, pertama, algoritma haruslah benar. Artinya algoritma akan memberikankeluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidakpeduli sebagus apapun algoritma, kalau memberikan keluaran yang salah,pastilah algoritma tersebut bukanlah algoritma yang baik.

Pembuatan algoritma mempunyai banyak keuntungan di antaranya:
1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun, artinya penulisan algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya.
2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.

Beberapa hal yang perlu diperhatikan dalam membuat algoritma:
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah.
Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri.
Hal ini dikarenakan teks algoritma tidak sama dengan teks program. Namun, supaya notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa pemrograman secara umum.
4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itupseudocode dalam notasi algoritmik tidak dapat dijalankan olehkomputer. Agar dapat dijalankan oleh komputer, pseudocode dalamnotasi algoritmik harus ditranslasikan atau diterjemahkan ke dalamnotasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orangyang menulis program sangat terikat dalam aturan tata bahasanya danspesifikasi mesin yang menjalannya.
5. Algoritma sebenarnya digunakan untuk membantu kita dalammengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
6. Algoritma merupakan hasil pemikiran konseptual, supaya dapatdilaksanakan oleh komputer, algoritma harus ditranslasikan ke dalamnotasi bahasa pemrograman. Ada beberapa hal yang harus diperhatikanpada translasi tersebut, yaitu:
a. Pendeklarasian variabel
Untuk mengetahui dibutuhkannya pendeklarasian variabel dalampenggunaan bahasa pemrograman apabila tidak semua bahasapemrograman membutuhkannya.
b. Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkanpendeklarasian variabel maka perlu hal ini dipertimbangkan padasaat pemilihan tipe data.
c. Pemakaian instruksi-instruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi masingmasingmemiliki kelebihan dan kekurangan yang berbeda.
d. Aturan sintaksis
Pada saat menuliskan program kita terikat dengan aturan sintaksisdalam bahasa pemrograman yang akan digunakan.
e. Tampilan hasil
Pada saat membuat algoritma kita tidak memikirkan tampilan hasilyang akan disajikan. Hal-hal teknis ini diperhatikan ketikamengkonversikannya menjadi program.
f. Cara pengoperasian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk dalam kelompokcompiler atau interpreter.


1.2   Flowchar
Alat Bantu menggambarkan proses di dalam program
Dibagi menjadi tiga kelompok :
I. Flow Direction Symbols; dipakai untuk menggabungkan antara symbol yang satu   dengan symbol lainnya
Symbol Off-line Connector ( Simbol untuk keluar/masuk prosedure atau proses dalam lembar/halaman yang lain)               
Symbol Connector (Simbol untuk keluar/masuk prosedur atau proses dalam   lembar/halaman yang sama)
Symbol Comunication Link ( Simbol transmisi untuk informasi dari satu lokasi ke lokasi lainnya)
II. Processing Symbols, menunjukan jenis operasi pengolahan dalam suatu prosedur
Symbol Process (Simbol yang menunjukkan pengolahan yang dilakukan oleh komputer)
Symbol Manual Operation (Simbol yang menunjukkan pengolahan yang  tidak dilakukanoleh komputer)                                              
Symbol Decision (Simbol untuk kondisi yang akan menghasilkan beberapa   kemungkinan jawaban/aksi)                
Symbol Predefined Process (Simbol untuk mempersiapkan penyimpananyang akan digunakan sebagai tempat pengolahan di dalam storage)              
Symbol Terminal (Simbol untuk permulaan atau akhir dari suatu program)
Symbol Off-line Storage (Simbol yang menunjukkan bahwa data di dalam symbol ini akan disimpan)
Symbol Manual Input  (Simbol untuk pemasukan data secara manual on-line keyboard)
Symbol Keying Operation (Simbol operasi dengan menggunakan mesin yang mempunyai keyboard)

III. Input-output symbols; menyatakan jenis peralatan yang digunakan sebagai media input atau output.

Symbol input-output (Symbol yang menyatakan proses input dan output tanpa tergantung dengan jenis peralatannya)
Symbol magnetig-tape unit (Symbol yang menyatakan input berasal pita magnetic atau output disimpan ke pita magnetic)
Symbol punched card (Symbol yang menyatakan input berasal dari kartu atau output ditulis ke kartu)
Symbol disk and on-line storage (Symbol untuk menyatakan input berasal dari disk atau output disimpan ke disk)
Symbol display (Symbol yang menyatakan peralatan output yang digunakan yaitu layar, plotter, printer, dan sebagainya)
Symbol transmittal tape(Symbol untuk menyatakan input berasal dari mesin jumlah/hitung)
Symbol dokumen (symbol yang menyatakan input berasal dari dokumen dalam bentuk kertas atau output dicetak ke kertas)




1.3   Sejarah singkat bahasa PASCAL
Pascal merupakan pengembangan dari bahasa ALGOL 60, bahasa pemrograman untuk sains komputasi. Tahun 1960, beberapa ahli komputer bekerja untuk mengembangkan bahasa ALGOL, salah satunya adalah Dr. Niklaus Wirth dari Swiss Federal Institute of Technology (ETH-Zurich), yang merupakan anggota grup yang membuat ALGOL. Tahun 1971, dia menerbitkan suatu spesifikasi untuk highly- structured language (bahasa tinggi yang terstruktur) yang menyerupai ALGOL. Dia menamainya dengan PASCAL (seorang filsuf dan ahli matematika dari Perancis) Pascal bersifat data oriented, yaitu programmer diberi keleluasaan untuk mendefinisikan data sendiri. Pascal juga merupakan teaching language (banyak dipakai untuk pengajaran tentang konsep pemrograman). Kelebihan yang lain adalah penulisan kode Pascal yang luwes, tidak seperti misalnya FORTRAN, yang memerlukan programmer untuk menulis kode dengan format tertentu. Bentuk dasar program_Pascal_adalah_seperti_berikut:
program TITLE ; begin pernyataan; pernyataan ; end.

1.4   Ciri – Ciri Pascal
Sebagai bahasa terstruktur, PASCAL mempunyai ciri-ciri sebagai berikut:
1.      Berurutan Susunan dari kode-kode dalam teks Pascal harus ditulis secara urut dari atas, pernyataan-pernyataan yang ditulis lebih awal akan dieksekusi lebih dahulu. Oleh karena itu, suatu pernyataan yang menyangkut suatu variabel di dalam program, maka variable itu harus terdefinisi dahulu sebelumnya. Hal ini terutama menyangkut pada pemanggilan sub-program oleh sub-program yang lain. Bisa dibaca lebih lanjut pada bagian sub-program.
2.      Blok dengan batas-batas yang jelas.Pascal memberikan pembatas yang jelas pada tiap-tiap blok, seperti pada blok program utama, sub-program, struktur kontrol (pengulangan/ pemilihan), dll. Pemakaian kata kunci begin untuk mengawali operasi pada blok dan end untuk menutupnya memudahkan programmer menyusun programnya dengan mudah.
Seperti_contoh:
If X>0 then
begin
Write ( ‘ bilangan positif’);
Writeln ( ‘ program selesai’);
end;

3.      Satu pintu masuk dan satu pintu keluar pada blok pemilihan dan pengulangan. Contoh di atas juga mengilustrasikan pintu masuk tunggal pada suatu blok pemilihan yaitu suatu test logika X>0, dengan pintu keluaran yang satu pula (satu disini maksudnya bukan dua baris perintah output tapi suatu paket perintah yang dirangkai dengan begin .. end.3. Bakuan PASCALDibakukan oleh ISO pada tahun 1983 dan dikembangkan dalam beberapa versi, diantaranya: USCD PASCAL, MS PASCAL, TURBO PASCAL dll. Dengan semakin berkembangnya teknologi dalam komputasi, Pascal dimanfaatkan untuk pengembangan DELPHI (berasal dari nama suatu kota di masa Yunani kuno), suatu bahasa pemrograman visual yang menonjolkan pada efek grafis dan orientasi pada objek-objek yang siap dipakai, karena memiliki Visual Component_Library(VCL).

1.5   Struktur_Bahasa_PASCAL.
Secara umum Pascal mempunyai struktur sebagai berikut:
1. Bagian Judul Program
2. Bagian Deklarasi.
a. Deklarasi tipe data (TYPE)
b. Deklarasi variabel (VAR)
c. Deklarasi konstanta (CONST)
d. Deklarasi label (LABEL)
e. Deklarasi sub-program (PROCEDURE dan FUNCTION)
3. Bagian_Program_Utama_Perintah-perintah.
Teks Pascal setidaknya memiliki bagian Judul Program, bagian Deklarasi, dan Bagian Program Utama yang berupa perintah-perintah.Sedangkan untuk bagian deklarasi menyesuaikan dengan isi dari program itu sendiri.

1.6   Unsur-unsur Pemrograman
1.      Mendapatkan data dengan membaca data dari default input (key board, file atau   sumber data lainnya).
2.      Menyimpan data ke dalam memori dengan struktur data yang sesuai,
3.      Memproses data dengan instruksi yang tepat.
4.      Menyajikan atau mengirimkan hasil olahan data ke default output (monitor, file atau tujuan lainnya).
Dalam mengolah data diperlukan pengelolaan instruksi terstruktur:
a)      Beberapa instruksi dikelompokkan dalam satu blok atau model yang mengerjakan tugas tertentu.
b)      Beberapa perintah dilaksanakan dengan persyaratan tertentu.
c)      Beberapa perintah dilaksanakan berulang dengan jumlah pengulangan tertentu. Identifier Digunakan untuk nama: Program, Sub-program (procedure dan function), nama: Variable, Constant, Type, Label.

Nama-nama ini digunakan untuk pemakaian dan pemanggilan dalam program. Ketentuan penulisan identifier :
a. Nama identifier harus dimulai dengan karakter huruf alfabet: a sampai z, A sampai Z atau karakter '_' (underscore - garis bawah)
b. Karakter berikutnya boleh karakter numerik (0 .. 9) atau kombinasi alphanumerik (huruf-numerik).
c. Panjang nama, pada berbagai versi Pascal umumnya antara 32 - 63.
d. Tidak boleh menggunakan karakter istimewa: + - * / | \ = <> [ ] . , ; : ( ) ^ @ { } $ # ~ ! % & ` " ' dan ? Contoh penulisan:
Penulisan yang benar: X _PQR Beta Sudut_Alpha luasLingkaran
Penulisan yang salah: 3D sisi-Kanan B#

Jenis identifier
a. Identifier umum
 Merupakan identifier yang didefinisikan sendiri oleh pemrogram. Pemrogram mempunyai kebebasan untuk menentukan nama identifiernya, dengan syarat nama tersebut tidak sama dengan identifier standar dan reserved word yang akan dibahas lebih lanjut. Hal ini untuk mencegah kesalahan yang bisa timbul akibat tumpang tindih identifier dalam program.
b. Identifier Standar (Baku)
Merupakan identifier yang didefinisikan oleh pembuat kompiler Pascal.Biasanya pembuat kompiler menyediakan suatu library yang sudah ada didalam kompiler.Library berisi berbagai procedure, fungsi atau unit yang sudah siap pakai. Misalnya Turbo Pascal Windows 1.5 memiliki suatu unit untuk memproses output yaitu wincrt, gotoxy, yang dengan mudah bisa dipakai oleh programmer di dalam menuliskan kode-kode programnya. Dinamai Identifier Standar karena suatu kompiler tidak harus memilikinya, masing-masing kompiler dimungkinkan mempunyai identifier yang berbeda untuk suatu tugas yang hampir sama. Misalnya Turbo Pascal versi DOS menggunakan crt untuk melakukan fungsi yang sama dengan wincrt (TPW 1.5). Beberapa Identifier Standar yang dimiliki oleh kompiler-kompiler Pascal antara lain:
c. Identifier "reserved word", yaitu yang sudah didefinisikan dan digunakan oleh bahasa PASCAL sendiri (Kita tidak bisa menamai identifier kita dengan ini).
Deklarasi Variable:
Mendeklarasikan varibel adalah:
a. Memberikan nama variabel sebagai identitas pengenal
b. Menentukan tipe data variabel




Contoh deklarasi variabel:
Var
K : integer;
R : real;
C : char;
T : String;

LATIHAN:
1.    Tuliskan beberapa contoh algoritma dalam kehidupan sehari-hari. Tuliskan juga beberapa contoh langkah di dalam algoritmanya.
2.    Misalkan terdapat dua buah ember, masing-masing mempunyai volume 5 liter dan 3 liter. Tuliskan algoritma untuk memperoleh air sebanyak 1 liter dengan hanya menggunakan kedua ember tersebut.
BAB II
JENIS-JENIS DATA SEDERHANA
Tipe data yang disediakan oleh PASCAL meliputi:
1. Tipe Data Sederhana
Merupakan tipe data dasar yang sering dipakai oleh program, meliputi: integer (bilangan bulat), real (bilangan pecahan), char (alphanumerik dan tanda baca), dan boolean (logika). Untuk data integer dan real masing-masing terbagi menjadi beberapa kategori
a. Bilangan Integer
Merupakan tipe data berupa bilangan bulat, terbagi atas beberapa kategori seperti terlihat dalam tabel 2.1.Tabel 2.1 menunjukkan jenis data, ukuran dalam memori dan rentang nilainya.
Tabel 2.1. Tipe Data Bilangan Integer
Tipe Data
Ukuran Tempat
Rentang Nilai
 Byte
1 byte
0 s/d +255
Shortint 
1 byte
-28 s/d +127
 integer
2 bytes
-32768 s/d 32767
Word 
2 bytes
0 s/d 65535
Longint 
4 bytes
2147483648 s/d 2147483647
Contoh bilangan integer adalah: 34 6458 -90 0 1112 Penggolongan tipe data integer tersebut dimaksudkan untuk membatasi alokasi memori yang dibutuhkan misalkan untuk suatu perhitungan dari suatu variabel bilangan diperkirakan nilai maksimumnya 32767 kita cukup mendeklarasikan variabel bilangan sebagai integer (2 byte), daripada sebagai longint(4 byte). Di dalam kompilernya, Pascal menyediakan konstanta untuk bilangan Integer yaitu: MaxInt and MaxLongInt, pemrogram bisa menggunakannya di dalam programnya tanpa harus terlebih dahulu mendefinisikannya.
-MaxInt bernilai 32.767
-MaxLongint bernilai 2.147.483.647.

contoh:
Program display_maxint;
uses wincrt;
begin writeln (maxint)
end.


Hasilnya: 32.767
b. Bilangan Real

Bilangan real atau nyata merupakan jenis bilangan pecahan, dapat dituliskan secara biasa atau model scientific . Contoh bilangan real: 34.265 -3.55 0.0 35.997E+11, dimana E merupakan simbol perpangkatan 10. Jadi 452.13 mempunyai nilai sama dengan 4.5213e2. Penggolongan tipe data bilangan real dapat dilihat pada tabel 2.2.
Tabel 2.2 Bilangan Real
Tipe Data
Ukuran Tempat
Rentang Nilai
real
6 bytes
2.9 x 10-39 s/d 1.7 x1038
single 
4 bytes
1.5 x 1045 s/d 3.4 x 1038  
double
8 bytes
5.0 x 10-324 s/d 1.7 x 10308
extended 
10 bytes
3.4 x 10-4932 s/d 1.1 x 104932
comp 
8 bytes
-9.2x 1018 s/d 9.2x 1018
 c. Char
Tipe data ini menyimpan karakter yang diketikkan dari keyboard, memiliki 266 macam yang terdapat dalam tabel ASCII (American Standard Code for Information Interchange). Contoh: 'a' 'B' '+', dsb. Yang perlu diingat bahwa dalam menuliskannya harus dengan memakai tanda kutip tunggal.Jenis data ini memerlukan alokasi memori sebesar 1(satu) byte untuk masing-masing data.
d. Tipe Data Boolean
Merupakan tipe data logika, yang berisi dua kemungkinan nilai: TRUE (benar) atau FALSE (salah). Turbo Pascal for Windows memiliki tiga macam jenis ini yaitu: Boolean, WordBool, dan LongBool. Tipe boolean memakai memori paling kecil, sedangkan WordBool dan LongBool dipakai untuk menulis program yang sesuai dengan lingkungan Windows.
Tabel 2.3. Tipe Data Boolean
Tipe Data
Ukuran Tempat
Boolean
1 byte
WordBool
2 byte
Longbool
3 byte
Sebagai bilangan ordinal boolean true mempunyai nilai 1(satu), sedangkan false nilainya adalah 0(nol).
CONTOH:
Contoh (1) :
Tipe data byte digunakan jika nilai tidak lebih dari 255
Var
Jumlah : byte ;
Begin
Jumlah : = 200 ;
Writeln (‘ Nilai jumlah = ’, Jumlah);
End.
Contoh (2) :
Bila nilai yang digunakan lebih besar dari 255, tetapi tidak lebih besar dari 32767, maka dapat digunakan tipe integer
Var
Jumlah ; integer ;
Begin
Jumlah : = 25000 ;
Writeln (‘ nilai jumlah = ’, Jumlah) ;
End.
Contoh(3) :
Var
Nilai1, Nilai2 : real ;
Begin
Nilai1 : = 12345678901.2345 ;
Nilai2 : = 12345 ;
Writeln (‘ Nilai 1 = ’, Nilai1) ;
Writeln (‘ Nilai 2 = ‘, Nilai2) ;
End.
Output dari contoh program diatas :
Nilai1 = 1.2345678901E+10
Nilai2 = 1.2345000000E+04
Contoh (4):
Var
Huruf : char ;
Begin
Huruf : = ‘ D ‘ ;
Writeln (‘ Hurufnya adalah : ‘, Huruf ) ;
End.
Output program :
Hurufnya adalah : D
Contoh (5):
Var
Tanggal : string [10] ;
Hari : string [6] ;
Jarak : char ;
Begin
Tanggal : = ’ 19 Februari 2007 ’ ;
Hari : = ‘ Senin ‘ ;
Jarak : = ‘ ‘ ;
Writeln (Tanggal, Jarak, Hari) ;
End.
Contoh (6):
Var
Lagi : Boolean ;
Begin
Lagi : = True ;
Writeln (‘nilai lagi adalah ‘, Lagi) ;
End.
LATIHAN
1.    Definisikan sebuah tipe terstruktur untuk menyatakan data/variabel yang digunakan dalam penjumlahan dua buah bilangan.
2.    Definisikan sebuah tipe terstruktur untuk menyatakan data nasabah di sebuah bank. Data nasabah terdiri atas field: nomor account, nama nasabah, alamat nasabah, kota nasabah, nomor telepon nasabah. Untuk setiap field, definisikan tipe data yang cocok.
BAB III
INPUT DAN OUTPUT DATA
3.1 Memasukkan Data
Cara yang paling banyak digunakan untuk memasukkan data adalah dengan mengetikkannya melalui keyboard. Prosedur yang digunakan untuk melakukannya dalam pascal adalah Read dan Readln.
Perbedaan perintah read dan readln adalah :
Ø  Readln : untuk memasukkan data per baris, setelah menekan  tombol enter, maka akan ganti baris
Ø  Read : untuk memasukkan data dan tidak berganti baris, masih  dalam baris yang sama

3.2 Menampilkan Hasil
Untuk menampilkan hasil digunakan prosedur standar Write atau Writeln.
Perbedaan perintah write dan writeln adalah :
Ø  Write : menampilkan hasil tanpa ganti baris dan tampilan berikutnya akan disambung dalam baris yang sama
Ø  Writeln : untuk menampilkan tampilan per baris, akan ganti baris untuk tampilan berikutnya.

CONTOH:
1.     Program input_output;
uses crt;
var a,b: integer;
begin
clrscr;
write('Masukkan bilangan antara 1 - 100: ');
readln(a);
b:= a * 2;
writeln('Bilangan yang dimasukkan adalah ', a);
writeln('Bilangan setelah dikali 2 adalah ', b);
readkey;
end.
2.     Program Menghitung_Jarak;
Uses WinCrt;
var
x1,x2,y1,y2:integer;
d:real;
begin
Writeln('Program Menghitung Jarak Titik A dan B');
Writeln('======================================');
Writeln;
Write('Masukan Nilai A (X1): ');readln(x1);
Write('Masukan Nilai B (X2): ');readln(x2);
Write('Masukan Nilai A (Y1): ');readln(y1);
Write('Masukan Nilai B (Y2): ');readln(y2);
d:=sqrt(sqr(x2-x1)+sqr(y2-y1));
Writeln;
Writeln('Jadi Jarak Titik A ke B Adalah: ',d:4:2);
end.
Output:
3.     Program Konversi_Suhu;
Uses WinCrt;
var f,c:real;
begin
Writeln('Program Konversi Fareinheit Ke Celcius');
Writeln('======================================');
Writeln;
Write('Masukan Suhu dalam Farenheit: ');readln(f);
c:=5/9*(f-32);
Writeln;
Writeln('Jadi Suhu Dalam Celcius Adalah: ',c:4:2);
end.
Output:
LATIHAN:
1.      Buatkan program untuk menampilan identitas kalian.
2.      Buatkan program untuk menjumlahkan dua buah bilangan.
3.      Buatkan program untuk menghitung nilai akhir mata kuliah dengan rincian nilai akhir= (10% x harian) +(20% x tugas) +(30% x uts) + (40% x uas).


BAB IV
STRUKTUR PERULANGAN
Ada macam notasi kondtruksi pengulangan dalam bentuk pernyataan yaitu:
1.      Pernyataan FOR,
2.      Pernyataan WHILE,
3.      Pernyataan REPEAT,

4.1              Pernyataan FOR
Kontsruksi FOR digunakan untuk menghasilkan pengulangan sejumlah kali yang telah dispesifikasikan. Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi.Untuk mencacah sudah berapa kali pengulangan dilakukan, kita memerlukan sebuah peubah (variabel) pencacah (counter).
4.1.1        FOR menaik
Bentuk umum:
For pencacahßnilai_awal to nilai_akhit do
Penyataan
endfor
4.1.2        FOR menurun
Bentuk umum;
For pencacahßnilai_akhir downto nilai_awal do
Penyataan
endfor
4.2              Pernyataan WHILE
Kontsruksi WHILE digunakan untuk menghasilkan pengulangan sampai kondisi berhenti terpenuhi.
Bentuk umum:
While kondisi do
Pernyataan
endwhile
4.3              Pernyataan REPEAT
Kontsruksi REPEAT digunakan untuk menghasilkan pengulangan sampai kondisi berhenti terpenuhi.
Bentuk umum:
Repeat
Pernyataan
Until kondisi
CONTOH:
Program Menghitung_Rata_Rata;
Uses Wincrt;
Var n,x,i,tot:integer;
rata:real;
Begin
Writeln('Program Menghitung Rata-Rata');
Writeln('============================');
Writeln;
Write('Masukkan Jumlah Bilangan: ');readln(n);
Writeln;
Writeln('Masukkan Bilangan: ');
tot:=0;
For i:= 1 to n do
Begin
Readln(x);
tot:=tot+x;
End;
rata:=tot/n;
Writeln;
Writeln('Total Bilangan: ',tot:6);
Writeln('Rata-Rata : ',rata:6:2);
End.
Output:
LATIHAN
1.      Buatkan program untuk menghitung mundur peluncuran sebuah roket deret dengan menggunkan teknik pengulangan FOR.
2.      Buatkan program untuk menghitung rata-rata dari sejumlah data bilangan bulat yang dibaca dari papan ketik selama data yang dibaca tidak sama dengan nol, dengan menggunkan teknik pengulangan FOR.
3.      Buatkan program untuk menghitung jumlah dari sebuah deret dengan menggunkan teknik pengulangan FOR.
BAB V
STATEMENT PENYELEKSIAN KONDISI
           
Adapun statemen penyeleksian kondisi dalam pascal,sebagai berikut:
5.1 Satu Kasus
            Bentuk Umum:
            If kondisi then
            Pernyataan
            Endif

5.2 Dua Kasus
Bentuk Umum:
            If kondisi then
            Pernyataan 1
Else
Pernyataan 2
            Endif

5.3 Tigas Kasus atau Lebih
Bentuk Umum:
            If kondisi1 then
            Pernyataan 1
Else
If kondisi 2 then
                        Pernyataan 2
Else
If kondisi 3  then
                                    Pernyataan 3
            Endif
Endif
Endif

5.4 Struktur CASE
            Bentuk umum konstruksi CASE:
            Case ekspresi
Nilai 1: pernyataan 1
Nilai 2: pernyataan 2
Nilai 3:pernyataa 3
....
Nilai n : pernyataan n
Otherwise : pernyataan x
Endcase

CONTOH:
1. Program Menghitung_Pangkat;
Uses Wincrt;
Var i,n,m: integer;
x: real;
Begin
Writeln('Program Menghitung Pangkat');
Writeln('==========================');
Writeln;
Write('Masukkan Jumlah Pangkat : ');readln(n);
Write('Masukkan Bil. Yang DiPangkat : ');readln(m);
Writeln;
x:=1;
if (n>0) then
For i:= 1 to n do
x:=x*m
else if (n=0) then
x:=1
else
begin
n:=-1*n;
For i:= 1 to n do
begin
x:=x*(1/m);
end;
end;
Writeln('Hasil Pangkat: ',x:6:2);
End.
Output:
2.Program Konversi_Waktu1;
Uses WinCrt;
var j,m,d,dm,sisa,sisa1:integer;
begin
Writeln('Program Konversi Waktu 1');
Writeln('========================');
Writeln;
Write('Masukkan Jumlah Detik : ');readln(dm);
if (dm/3600)>0 then
begin
j:=dm div 3600;
sisa:=dm-(j*3600);
end
else
begin
j:=0;
sisa:=dm;
end;
if (sisa/60)>0 then
begin
m:=sisa div 60;
sisa1:=sisa-(m*60);
end
else
begin
m:=0;
sisa1:=sisa;
end;
d:=sisa1;
Writeln;
Writeln('Hasil => ',j,' jam ',m,' menit ',d,' detik');
end.
Output:

LATIHAN:
1.      Buatkan program untuk mencetak pesan “genap” jika sebuah bilangan bulat yang dibaca merupakan bilangan genap.
2.      Buatkan program untuk menentukan bilangan terbesar (maksimum) dari dua buah bilangan.
3.      Buatkan program untuk menentukan apakah sebuah bilangan bulat merupakan bilangan positif, negatif atau nol.
4.      Buatkan program untuk mencetak nama-nama bulan berdasarkan nomor bulannya yaitu bulan 1 sampai 12.




BAB VI
PROCEDURE dan FUNCTION
Procedure dan Function adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama.

􀁮 PROCEDURE
Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya.
Prosedur banyak digunakan pada program yang terstruktur, karena :
1. Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block. Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja.
Bentuk Umum header suatu procedure adalah :
PROCEDURE nama;
Atau
PROCEDURE nama (formal parameter : jenis);
Jika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus dituliskan pada bagian deklarasi.
Contoh : Misal akan dibuat suatu procedure untuk menentukan bilangan bulat terbesar diantara tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut :
PROCEDURE maksimum;
VAR max : integer;
BEGIN
IF a > b THEN max := a ELSE max := b;
IF c > max THEN max := c;
WRITELN(max);
END.
Selanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk penulisan sebagai berikut :

Contoh 1:

PROGRAM contoh_1;
HEADER program utama
VAR a,b,c : integer;
PROCEDURE maksimum;
VAR max : integer;
BEGIN
IF a>b THEN max := a ELSE max := b; deklarasi program
IF c>max THEN max := c; utama
WRITELN(max);
END;
BEGIN
READLN(a,b,c);
Maksimum statement program utama
END.

Contoh 2 :
PROGRAM CONTOH_2;
VAR p,l,t,vol,panj : real;
PROCEDURE kotak;
VAR v,pl : real;
BEGIN
v := p * l * t ;
pl := p + 2.0 * t;
writeln(v,pl);
END;
BEGIN
writeln(‘panjang’ : 10,’lebar’ : 10,’tinggi’ : 10);
readln(p,l,t);
kotak;
END.

JANGKAUAN IDENTIFIER
Identifier yang dideklarasikan dalam suatu blok program hanya berlaku pada blok dimana identifier tersebut didefinisikan.

Contoh :
1. PROGRAM p;
VAR x : real;
PROCEDURE pl;
VAR y : integer;
begin
………………..; daerah berlakunya y daerah
………………..; berlakunya x
end;
begin
………………..;
………………..;
end.
y → variabel global
2. Program P ;
Var x,y : real; y (real) berlaku disemua blok …………… program P, kecuali di P1
…………… x (real) berlaku disemua
blok P, kecuali di P2
Procedure Pl ;
Var y : integer; hanya berlaku di P1 saja (lokal)
……………..
Begin
………
………
End;
Procedure P2;
Var x : char; hanya berlaku di P2 saja (lokal)
……………
Begin
………..
………..
End;
Begin
………….
x := ……. x dan y yang dimaksud adalah x dan y real
y := ……. (variabel global)
…………
End.

PROCEDURE DENGAN PARAMETER

Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.
Contoh :
Prosedur Tanya_hitung;
Var X,Y :real;
Begin
Write (‘Nilai X ?’);
Readln(X);
Y:=X*X;
Writeln(‘Nilai Y = ‘,Y:6:2);
End;
Begin
Tanya_Hitung;
End.
Hasilnya :
Nilai X ? 5
Nilai Y = 25.00
Keterangan :
Variabel X dan Y sifatnya adalah lokal untuk prosedur Tanya_hitung, artinya hanya dapat digunakan pada modul itu saja, Pada modul yang lain tidak dapat digunakan, contoh :
Prosedur Tanya_hitung;
Var X,Y :real;
Begin
Write (‘Nilai X ?’);
Readln(X);
Y:=X*X;
End;
Begin
Tanya_Hitung;
Writeln(‘Nilai Y = ‘,Y:6:2);
End.
Hasilnya :
Error 31: Unknown identifier
Supaya nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara :
1. Dibuat bersifat global
Harus dideklarasikan di atas modul yang menggunakannya.
Procedure kesatu;
Begin
…….
……..
End; (*akhir dari procedure kesatu……*)
Var
A,B : word;
Procedure kedua;
Begin
……..
……..
End; (*akhir dari procedure kedua*)
Procedure ketiga;
Begin
……..
……..
End; (*akhir dari procedure ketiga*)
Begin
……..
……..
End. (*akhir dari modul utama*)
Pada contoh diatas, variabel A dab B bersifat global untuk prosedur kedua, ketiga dan utama, tetapi tidak bersifat global untuk prosedur kesatu, sehingga prosedur kesatu tidak dapat menggunakan variabel-variabel tersebut.
Var
A,B : real;
Procedure kesatu;
Begin
…….
……..
End; (*akhir dari procedure kesatu……*)
Procedure kedua;
Begin
……..
……..
End; (*akhir dari procedure kedua*)
Procedure ketiga;
Begin
……..
……..
End; (*akhir dari procedure ketiga*)
Begin
……..
……..
End. (*akhir dari modul utama*)
Pada contoh ini, variabel A dan B bersifat global untuk semua modul.
2. Dikirimkan sebagai parameter ke modul yang membutuhkannya.
Parameter yang dikirim dari modul utama ke modul prosedur disebut actual parameter, dan parameter yang ada dan dituliskan pada judul prosedur disebut formal parameter.
2.1 Pengiriman parameter secara nilai
Parameter yang dikirimkan secara nilai, maka parameter formal yang ada di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur.
Perhatikan procedure berikut :
Procedure konversi;
begin
f := (5/9) * c + 32; f dan c variabel global, c sebagai input dan writeln(c,f); f sebagai output.
end;
Procedure di atas dapat dipanggil dengan variabel yang berbeda, tetapi penulisannya harus diubah dengan menggunakan parameter sbb:
Procedure konversi (var f : real; c : real);
Begin
F := (5/9) * c + 32; disebut formal parameter
Writeln(c,f);
End;
Selanjutnya procedure di atas dapat dipanggil dengan parameter lain, misalnya :
konversi (x,y) ;
actual parameter
x dan y disebut sebagai actual parameter.
Pada eksekusinya x akan menggantikan c dan y akan menggantikan f.
x dan y ini dapat berupa :

- konstanta
- variabel
- procedure, atau
- fungsi

Contoh :
Procedure Hitung(A,B : integer);
Var C : integer;
Begin
C := A + B;
Writeln(‘Nilai C = ‘,C)
End;
Var X,Y : integer;
Begin
Write(‘Nilai X ? ‘);
Readln(X);
Write(‘Nilai Y ?’);
Readln(Y);
Hitung(X,Y);
End.
Hasilnya :
Nilai X ? 2
Nilai Y ? 3
Nilai C = 5


2.2    Pengiriman parameter secara acuan
Bila pengiriman parameter secara acuan (by reference), maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai actual parameter .
Procedure hitung(Var A,B,C : integer);
Menunjukkan pengiriman parameter secara acuan.
Contoh :
Procedure Hitung(Var A,B,C : integer);
Begin
C := A + B;
End;
Var X,Y,Z : integer;
Begin
X := 2; Y:= 3;
Hitung(X,Y,Z);
Writeln(‘X = ‘,X,’ Y = ‘,Y,’ Z = ‘,Z);
End.
Hasilnya :
X = 2 Y = 3 Z = 5

Acuan Forward
Digunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya.
Contoh :
Procedure pro1(var I : integer); Forward;
Procedure pro2(var I : integer);
Begin
Writeln(‘prosedur pro’, I);
End;
Procedure pro1;
Begin
Writeln(‘prosedur pro’,I);
End;
Var I : integer;
Begin
I := 1; pro1(I);
I := 2; pro2(I);
End.
Hasilnya :
prosedur pro1
prosedur pro2

Prosedur Standar
Prosedur yang disediakan oleh Turbo Pascal :

1. Prosedur standar EXIT
Digunakan untuk keluar dari suatu blok.
2. Prosedur standar HALT
Digunakan untuk menghentikan proses program baik di program bagian maupun di program utama.

3. Prosedur standar MOVE
Bentuk umum : MOVE (Var source,dest; count : word);
Digunakan untuk menyalin suatu blok sebanyak count byte memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest.
4. Prosedur standar FILLCHAR
Digunakan untuk mengisi sejumlah byte nilai ke dalam suatu variabel, sebagai berikut
FillChar(x;count :word;ch);
X adalah variabel yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal Ch sebanyak count byte.

􀁯 FUNCTION
Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya atau jenis hasilnya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi.
Pada bahasa Pascal dikenal beberapa fungsi, misalkan : abs, pred, sqrt, sqr, succ dan sebagainya.
Fungsi-fungsi tersebut biasanya dikenal dengan Built in Function. Sedangkan function yang akan bicarakan disini adalah fungsi yang kita buat sendiri.
Berbeda dengan procedure, function merupakan modul program yang menghasilkan suatu kuantitas.
Hal ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis data dari kuantitas yang dihasilkan.
Secara umum bentuk header suatu function adalah :

FUNCTION nama : jenis hasil;
Atau FUNCTION nama (formal parameter : jenis ) : jenis_hasil;
Contoh :

1. Akan dibuat suatu fungsi dengan nama MAX yang dapat menentukan integer terbesar di antara dua integer.
Function MAX (x,y : integer) : integer;
Begin
If x < y then MAX := y ;
Else MAX := x;
End;
Selanjutnya kita dapat menggunakan fungsi di atas dalam suatu program, misalnya dengan menyatakan sebagai berikut :
P := MAX(a,b);
Z := MAX(a+b,a*b);
Q := MAX(MAX(a,b),c);
…………………………
dsb.

2. Function LOG (x : real) : real;
Begin
LOG := ln (x) / ln (10.0);
End;

3. Function POWER (x,y : real) : real;
Begin
POWER := exp (y * ln (X))
End;
ab = POWER (a,b)
ba = POWER (b,a)
(p + q)r/s = POWER (p + q, r/s)
………………………………..
dll

Contoh :
Function Hitung(Var A,B : integer): integer;
Begin
Hitung := A + B;
End;
Var X,Y : integer;
Begin
Write(‘Nilai X ? ‘);
Readln(X);
Write(‘Nilai Y ? ‘);
Readln(Y);
Writeln;
Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y));
End.
Hasilnya :
Nilai X ? 2
Nilai Y ? 3
1 + 3 = 5

Perbedaan fungsi dengan prosedur adalah :

1. Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya (kalau pada prosedur pada parameter yang dikirimkan secara acuan). Pada contoh, nama fungsi tersebut adalah Hitung dan nilai yang dikirim balik berada pada nama fungsi tersebut. Sehingga nama fungsi ini harus digunakan untuk menampung hasil yang akan dikirimkan dari fungsi, sebagai berikut :
Hitung := A + B;
Nama fungsi yang berisi nilai yang akan dikirimkan

2. Karena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya, sebagai berikut :

Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y));
Nama fungsi yang langsung digunakan untuk ditampilkan hasilnya.
Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variabel yang lainnya, sebagai berikut :
Hasil := Hitung(X,Y);
Writeln(X,’ + ‘,Y, ‘ + ‘,Hasil);
Sedang pada prosedur, nama prosedur tersebut tidak dapat digunakan langsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik.





REKURSIF
Suatu fungsi atau prosedur dalam bahasa Pascal dapat bersifat rekursif. Artinya, fungsi atau prosedur tersebut dapat memanggil dirinya sendiri. Berikut ini sebuah contoh fungsi dan prosedur yang rekursif.

1. function faktorial (nilai : integer) : integer;
begin
if nilai <= 0 then faktorial := 1;
else faktorial := nilai * faktorial (nilai-1)
end;

Var
N : integer;
Begin
Write(‘Berapa faktorial ? ‘);
Readln(N);
Writeln(N,’ faktorial = ‘,faktorial(N):9:0);
End.
faktorial (4) = 4 * faktorial (3)
3 * faktorial (2)
2         * faktorial (1)
1 * faktorial (0)
1
= 4 * 3 * 2 * 1 * 1
= 24

2. Bilangan Fibonanci:
F (0) = 0
F (1) = 1

F (n) = F ( n-1 ) + F (n-2); untuk n >1
Function fibonacci ( n : integer ) : integer;
Begin
If n = 0 then fibonacci := 0
Else
If n := 1 then fibonacci := 1
Else fibonacci := fibonacci (n-1) + fibonacci (n-2);
End;

3. Procedure reverse ( num : integer );
Begin
If num < 10 then write(num)
Else begin
Write(num mod 10);
Reverse(num div 10);
End;
End;


Fungsi Standar

1. Fungsi standar arutmatika

• Fungsi standar ABS
Bentuk umum : ABS(x);
Digunakan untuk memutlakkan suatu nilai yang ditunjukkan oleh argumen x.
Contoh :
Begin
X:=-2.3;
Write(‘Nilai X = ‘,X,’ Nilai mutlaknya = ‘,Abs(X):3:1);

End.

• Fungsi standar EXP
Bentuk Umum : EXP(x:):real;
Digunakan untuk menghitung nilai pangkat dari bilangan e yaitu sebesar ex. Hasilnya berupa nilai real.

• Fungsi standar LN
Bentuk umum : LN(x):real;
Digunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai x. Hasilnya berupa nilai real.

• Fungsi standar INT
Bentuk umum : INT(x:real):real;
Digunakan untuk menghasilkan nilai integer dari x. hasil dari fungsi adalah tipe real dengan nilai yang berupa pembulatan ke bawah (nilai pecahan dibuang) dari nilai x.
Contoh :
Begin
X:=9.99;
Write(‘Nilai yang akan dibulatkan = ‘,X);
Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2);
End.

Hasil :
Nilai yang akan dibulatkan = 9.99
Nilai pembulatannya = 9.00

• Fungsi standar FRAC
Bentuk umum : FRAC(x:):real;
Digunakan untuk mendapatkan nilai pecahan dari argumen x. Argumen x dapat bernilai real maupun integer dan hasil dari fungsi adalah real.
Contoh :
Begin
X:=9.99;
Write(‘Nilai X = ‘,X,’ Nilai pecahannya = ‘,Frac(X):4:3);
End.
Hasilnya : Nilai X = 9.99 Nilai pecahannya = 0.990


• Fungsi standar SQR
Bentuk umum : SQR(x);
Digunakan untuk menghitung nilai pangkat kuadrat dari argumen x.
Contoh :
Begin
X :=2;
Write(‘Nilai X = ‘,X,’ Nilai kuadratnya = ‘,sqr(x));
End.
Hasilnya : Nilai X = 2 Nilai kuadratnya = 4

• Fungsi standar SQRT
Bentuk umum : SQRT(x) : real;
Digunakan untuk menghitung nilai akar dari argumen x, hasilnya berupa real.

• Fungsi standar PI, SIN, COS, ARCTAN


1. Fungsi Standar Transfer
Digunakan untuk merubah suatu nilai ke bentuk nilai lain.

• Fungsi standar CHR
Bentuk umum : CHR(x:byte):char;
Digunakan untuk merubah nilai dari byte x ke bentuk karakter yang sesuai dengan kode ASCII.
Contoh :
X := 66;
Write(‘Nilai X = ‘,x,’ Nilai karakternya = ‘,CHR(X));
Hasilnya : Nilai X = 66 Nilai karakternya = B

• Fungsi standar ORD
Bentuk umum : ORD(x):longint;
Digunakan untuk merubah nilai x ke bentuk nilai longint yang sesuai dengan kode ASCII, merupakan kebalikan dari fungsi CHR.

• Fungsi standar ROUND
Bentuk umum : ROUND(x:real):longint;
Digunakan untuk membulatkan nilai dari real x ke nilai longint yang terdekat. Bila nilai pecahan sama dengan atau lebih besar dari 0.5 akan dibulatkan ke atas, sedang kalau lebih kecil dari 0.5 akan dibulatkan ke bawah.
Contoh :
Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Round(10/3));
Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Round(20/3);
Hasilnya :
10 dibagi 3 hasil pembulatan terdekat adalah 3
20 dibagi 3 hasil pembulatan terdekat adalah 7


• Fungsi standar TRUNC
Bentuk umum : TRUNC(x:real):longint;
Digunakan untuk membulatkan nilai dari real x ke nilai longint terkecil. Atau dengan kata lain membulatkan ke bawah.
Contoh :
Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Trunc(10/3));
Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Trunc(20/3);
Hasilnya :
10 dibagi 3 hasil pembulatan terdekat adalah 3
20 dibagi 3 hasil pembulatan terdekat adalah 6

1. Fungsi Standar Lainnya
Fungsi standar yang tidak termasuk dalam kelompok pembagian di atas :

• Fungsi standar Hi, Lo, Swap
• Fungsi standar Random
Bentuk umum : Random [(range :word)];
Digunakan untuk menghasilkan angka random berkisar dari nilai lebih besar atau sama dengan nol dan lebih kecil dari satu. Bila range tidak disebutkan, hasil dari fungsi ini adalah real, bila range disebutkan, hasilnya adalah word.
• Fungsi standar SizeOf
Bentuk umum : SizeOf(x):word;
Digunakan untuk menunjukkan besarnya byte yang digunakan oleh suatu variabel x, hasilnya berupa nilai word.
• Fungsi standar UPCASE
Bentuk umum : UpCase(Ch:char):char;
Digunakan untuk merubah argumen suatu karakter yang ditunjukkan oleh Ch menjadi bentuk karakter huruf besar (upper case).











BAB VII
ARRAY
Array (larik ) adalah tipe terstruktur yang terdiri dari sejumlah komponen yang
mempuyai tipe sama.
Array Satu Dimensi :
Array [ 1 . . 20 ] of tipe_data ; (Dimensi 1)

Arrai Dua Dimensi :
Array [1 . . 3 , 1 . . 2] of tipe_data; (Dimensi 2)

1. Definisi
Array adalah koleksi data yang tipenya sama, tersusun dalam bentuk barisan linier berurutan (sequence) dan jumlah elemen atau datanya tidak berubah (statis) sesuai dengan deklarasi awal. Semua elemen array diidentifikasi dengan sebuah nama (nama array) dan untuk setiap elemennya diidentifikasi/dibedakan dengan sebuah index.
2. Deklarasi.
Bentuk umum deklarasi array adalah:
type tipe_array = array [range_index] of ipe_data;
var var_array : tipe_array;
var_array adalah nama variabel array yang dipakai untuk mengidentifikasi array. Pemilihan nama variabel array mengikuti aturan pemberian nama variabel secara umum.
Range_index adalah batasan index yang digunakan untuk mengidentifikasi elemen array. Range_index menentukan jumlah elemen array, yang jumlahnya tidak akan berubah (statis) mulai saat awal disediakan (program dijalankan) hingga program selesai dijalankan. Misalnya range 0..9 atau 1..10 atau –1..8 atau ‘A’..’J’ akan menentukan jumlah elemen array sebanyak 10 buah.
Setiap elemen array diidentifikasi oleh salah satu index yang berada dalam range yang telah ditentukan. Penggunaan index yang berada di luar range Index akan mengakibatkan kesalah, Index ini tidak harus berupa bilangan positif, tetapi harus berupa bilangan bulat atau data-data yang masuk kategori tipe data ordinal (seluruh tipe data dasar selain real dan double), seperti semua varian integer, char, boolean atau tipe data enumerasi yang dibuat sendiri oleh user.
Tipe_data adalah tipe data untuk elemen array.Tipe data elemen array tidak harus berupa integer, atau tipe data dasar yang lain, tetapi dapat berupa tipe data terstruktur seperti array.
.
3. Operasi Pada Array
- Operasi Memasukkan dan Mengambil Nilai
Bila array sudah dideklarasikan dan sudah diberi suatu nama, maka dapat dimanfaatkan sesuai fungsinya sebagai objek data. Operasi memasukkan nilai adalah operasi untuk memasukkan nilai data ke dalam elemen-elemen array. Biasanya hal ini dilakukan dengan operasi penugasan (assignment) dengan objek array terletak sebagai operan di sebelah kiri tanda ‘:=’.
Sedangkan operasi mengambil nilai adalah operasi untuk mendapatkan/membaca nilai dari suatu array.Hal dini dilakukan ketika menggunakan array sebagai operan nada suatu operasi atau sebagai parameter sebuah fungsi/prosedur.
- Operasi Mengakses Array
Operasi mengakses suatu objek data merupakan nama yang lebih umum daripada operasi memasukkan nilai ataupun membaca nilai. Jadi, operasi mengakses array dapat berupa memasukkan nilai atau membaca nilai array.Operasi ini dapat dilakukan pada array secara keseluruhan ataupun pada suatu elemen tertentu.
- Mengakses Elemen Array Secara Acak/Random
Setiap elemen array dapat diperlakukan secara individual terlepas dari elemen-elemen lainnya. Misalnya dalam hal memasukkan data, nilai[7] dapat dimasukkan lebih dulu daripada elemen lainnya.meskipun akhirnya semua elemen array akan diakses, namun tidak aturan yang pasti tentang urutan mengaksesnya. Kita bisa saja mengakses nilai[5] tanpa mengakses komponen array lainnya.
- Mengakses Elemen Array Secara Sequensial (Berurutan)
Struktur array yang elemen-elemennya tersusun secara berurutan, memungkinkan kita mengakses sebagian atau seluruh elemen array secara berurutan.
Untuk proses mengunjungi elemen array (traversal of array) secara berurutan dapat dilakukan dengan proses looping (perulangan). Pada model-model di atas, elemen-elemen array diakses secara berurutan dengan selisih satu index. Jadi elemen ke-6 akan diakses sebelum atau sesudah elemen ke-5 ataupun ke-7. Pergeseran index dilakukan dengan menambah atau mengurangi index sebelumnya dengan 1. Kita juga dapat membuat model yang lain dengan mengubah selisih indexnya. Misalkan menjadi 2, 3, atau berapa saja sesuai keperluan, asalkan selalu berada pada range index.
- Mengakses Array Secara Keseluruhan
Selain mengakses komponen array, kita juga dapat mengakses array secara keseluruhan yang akan mempengaruhi semua elemennya sekaligus. Misalkan A dan B adalah dua buah variabel array yang tipenya sama, dan jumlah elemennya juga sama, maka dalam Pascal dapat dilakukan operasi penugasan A := B yang berarti memasukkan nilai dari setiap elemen array B ke semua elemen A pada Index-Index yang bersesuaian.
4. Array Multidimensi
Tipe data elemen array tidak harus berupa tipe data elementer, namun juga dapat berupa tipe data terstruktur, misalnya array. Sebagai contoh, perhatikan deklarasi berikut :
Var Matrix:array[1..3,1..3] of integer;
Bentuk deklarasi mungkin saja dibuat untuk kasus demikian, tipe nilai_ujian adalah berupa array dengan dua elemen bertipe integer untuk menyimpan nilai ujian midterm dan ujian akhir.Sedangkan variabel nilai adalah array dengan sepuluh elemen bertipe nilai_ujian, yang digunakan untuk menyimpan nilai ujian dari 10 mahasiswa.Elemen-elemen array nilai bertipe array integer.Walaupun terdapat dua buah array, tetapi setiap deklarasi array hanya dibatasi dengna sebuah range Index saja.Jumlah elemen array nilai adalah 10, walaupun secara keseluruhan banyaknya bilangan yang dapat disimpan adalah 20 buah.Array demikian dikenal sebagai array berdimensi 1.
5. Penggunaan Konstanta untuk Batas Index Arrray
Deklarasi konstanta sering digunakan untuk batas bawah dan batas atas pada range Index array. Setiap kali menggunakan array, kita pasti berharap agar ruang yang kita sediakan sesuai dengna banyaknya data yang akan disimpan; jangan sampai berlebihan, ataupun kekurangan.
Sering kali kita terpaksa harus mengubah batas-batas range Index untuk menyesuaikan jumlah data. Penggunaan konstanta akan memudahkan bila ada keperluan untuk mengubah batas-batas range Index array, yaitu cukup mengganti nilai konstanta tersebut.


CONTOH:
Program Array1;
Uses Wincrt;
Var x : array [1..100] of integer;
n,i :integer;
Begin
Writeln('Program Array');
Writeln('=============');
Writeln;
Write('Masukkan Jumlah Data: ');readln(n);
Writeln;
For i:= 1 to n do
Readln(x[i]);
Writeln;
Write('Data Yang Telah Dimasukkan: ');
For i:= 1 to n do
Write(x[i],' ');
End.
Output:
Program Array2;
Uses Wincrt;
Var x : array [1..100] of integer;
n,i,max,min : integer;
Begin
Writeln('Program Array');
Writeln('=============');
Writeln;
Write('Masukkan Jumlah Data: ');readln(n);
Writeln;Writeln('Data Harus Urut');
For i:= 1 to n do
Readln(x[i]);
Writeln;
Write('Data Yang Telah Dimasukkan: ');
max:=x[1];
min:=x[1];
For i:= 1 to n do
Begin
Write(x[i],' ');
if (max<x[i]) then
max:=x[i]
else
min:=x[i];
End;
Writeln;
Writeln('Nilai Maximal: ',max);
Writeln('Nilai Minimal: ',min);
End.
Output:

LATIHAN

1.      Buatkan program untuk menampilkan data mahasiswa dengan menggunakan teknik ARRAY.
2.      Buatkan program untuk menampilkan data agen Bus dengan menggunakan teknik ARRAY.
3.      Buatkan program untuk menampilkan data Karyawan dengan menggunakan teknik ARRAY.
4.      Buatkan program untuk menampilkan data bengkel motor dengan menggunakan teknik ARRAY.



1 komentar:

  1. 5 Best Bitcoin Casino Sites - Casinoworld
    Best 인카지노 Bitcoin Casino sites. The febcasino Best Online Casino and Slot Machine Games in 2021. youtube mp3 The Casino List and Bonuses List. We List the Best

    BalasHapus