Rabu, 17 Oktober 2012

PROGRAM KOMPUTER I (untuk prodi Matematika,S1)

I. SEJARAH PERKEMBANGAN KOMPUTER

Sejarah perkembangan komputer bermula dengan berkembangnya ilmu matematika. Dimulai dengan penggunaan jari-jemari manusia, kemudian tercipta alat Abacus (Gambar  1.1) yang dapat melakukan operasi hitung sederhana.


Pada tahun 1617, John Napier telah mengemukakan logaritma dan alat ini disebut tulang Napier yang dapat melakukan berbagai macam perhitungan angka-angka. Kemudian Blaise Pascal dalam usia 19 tahun menciptakan mesin hitung mekanikal pertama pada tahun 1642 yang beroperasi dengan cara menggerakkan gear pada roda dan kemudian telah dikembangkan oleh William Leibnitz (Gambar  1.2). Mesin tersebut digunakan untuk membantu ayahnya dalam perhitungan pajak yang tersusun atas 50 roda gigi (gear).

Gambar 1.2.    Susunan Roda Gigi
Pada tahun 1816 pula Charles Babbage telah membina the difference engine yang telah dapat menyelesaikan masalah perhitungan matematik seperti logaritma secara mekanikal dengan tepat sampai dengan dua puluh digit (Gambar  1.3).

Gambar 1.3.    The difference engine

Mesin ini juga telah menggunakan semacam "card" sebagai input, untuk menyimpan "file-file" data melakukan perhitungan secara otomatis dan seterusnya mengeluarkan output dalam bentuk cetakan pada kertas. "card" tersebut pertama kali telah digunakan sebagai alat input dalam industri tekstil pada mesin tenun otomatis ciptaan Joseph Jecquard pada tahun 1801. Ciptaannya ini dikenal dengan The Analytical Engine (Gambar 1.4).

Gambar 1.4.  The Analytical Engine

Pada tahun 1887 Herman Hoolerith telah mempopularkan penggunaan "card" (Gambar 1.5) sebagai alat input data yang telah banyak digunakan penduduk Amerika. Card ini dikenal dengan sebutan ”Punch Card” (Kartu Plong).

Gambar 1.5 Card
Howard Aiken memperkenalkan penggunaan mesin elektromekanika (Gambar 1.6). yang disebut "Mark 1" pada tahun 1937, elektronik dan mekanikal. Mesin ini dapat menyelesaikan masalah fungsi-fungsi trigonometri di samping perhitungan-perhitungan yang telah dilakukan mesin-mesin sebelum ini.

Gambar 1.6 Mark 1

A. Komputer Generasi Pertama 1940 - 1959
- ENIAC (Electronic Numerical Integrator and Calculator)
Komputer ENIAC (Gambar  1.7) ini diciptakan oleh Dr John Mauchly dan Presper Eckert pada tahun 1946
Gambar 1.7 ENIAC
- EDVAC (Electronic Discrete Variable Automatic Computer)
Penggunaan tube vacuum juga telah dikurangi di dalam EDVAC (Gambar  1.8), di mana proses perhitungan telah menjadi lebih cepat dibandingkan ENIAC

Gambar 1.8 EDVAC

- EDSAC (Electronic Delay Storage Automatic Calculator)
EDSAC (Gambar  1.9) telah memperkenalkan penggunaan raksa (merkuri) dalam tube untuk menyimpan memori.

Gambar 1.9 EDSAC

- UNIVAC I  (Universal Automatic Calculator)
Pada tahun 1951 Dr Mauchly dan Eckert menciptakan UNIVAC I (Gambar  1.10), komputer pertama yang digunakan untuk memproses data perniagaan.

Gambar 1.10   UNIVAC I 
B. Komputer Generasi Ke Dua  ( 1959 - 1964 )
Komputer-komputer generasi kedua telah menggunakan transistor dan diode untuk menggantikan saluran-saluran vakum dan menjadikan ukuran komputer lebih kecil dan lebih murah (Gambar  1.11). Cara baru menyimpan memori juga diperkenalkan melalui teknologi magnetik. Keupayaan pemprosesan dan ukuran memori utama komputer juga bertambah dan manjadikannya lebih efisien.

Gambar 1.11   Transistor 
Kemunculan FORTRAN dan COBOL menandakan permulaan bahasa tingkat tinggi untuk menggantikan bahasa pengantar dalam mesin yang lebih sukar. Compiler Pertama Fortran (1954) dikembangkan oleh IBM yang dipimpin John W. Backus. Bahasa Fortran (Gambar  1.12 dan Gambar  1.12) digunakan oleh ilmuwan untuk mengerjakan kalkulasi numerik yang tujuannya untuk mempercepat men-generate kode-kode.
           
Gambar 1.12 Contoh Kode Program Fortran 
Gambar 1.13 Contoh Kode Program Fortran 
Minikomputer juga telah diperkenalkan yaitu yang kedua terbesar di dalam  generasi komputer. Versinya yang pertama ialah DEC PDP 8 (Gambar  1.14) yang diciptakan pada tahun 1964 yang berguna untuk memproses data-data.

Gambar 1.14   DEC PDP 8

C. Komputer Generasi Ke Tiga (1964 - awal 80-an)
Chip mulai menggantikan transistor sebagai bahan logis komputer. Chip terdiri dari ribuan transistor akhirnya berhasil digabung dalam satu bentuk yang sangat kecil. Secuil silicium yag mempunyai ukuran beberapa milimeter berhasil diciptakan yang kemudian dikenal dengan nama Intergrated Circuit Chip (Gambar  1.15). IBM S-360 (Gambar  1.16) merupakan komputer pertama yang menggunakan IC dan diperkenalkan pada tahun 1964.


Gambar 1.15   IC – Chip
Gambar 1.16   IBM S-360





E. Komputer Generasi Ke Empat (awal 80-an)
Microprocessor merupakan ciri khas komputer generasi ke-empat yang merupakan pemadatan ribuan IC kedalam sebuah Chip. Karena bentuk yang semakin kecil dan kemampuan yang semakin meningkat meningkat dan harga yang ditawarkan juga semakin murah. Microprocessor (Gambar  1.17) merupakan awal kelahiran komputer personal. Pada tahun 1971, Intel Corp kemudian mengembangkan microprocessor pertama serie 4004. Pemrosesan dapat dilakukan dengan lebih tepat, sampai jutaan bit per detik. Memori utama komputer menjadi lebih besar sehingga menyebabkan memori sekunder kurang penting. Teknologi chip yang maju ini telah mewujudkan satu lagi kelas komputer yang disebut Supercomputer.

Gambar 1.17   Mikroprosesor
Contoh generasi ini adalah Apple I Computer (Gambar  1.18) yang dikembangkan oleh Steve Wozniak dan Steve Jobs dengan cara memasukkan microprocessor pada circuit board komputer. Disamping itu, kemudian muncul TRS Model 80 dengan processor jenis Motorola 68000 dan Zilog Z-80 menggunakan 64Kb RAM standard.

Gambar 1.18   Apple I Computer
Komputer Apple II-e (Gambar  1.19) yang menggunakan processor jenis 6502R serta Ram sebesar 64 Kb seperti halnya pada gambar disebelah, juga merupakan salah satu komputer PC sangat popular pada masa itu. Operating Sistem yang digunakan adalah: CP/M 8 Bit. Komputer ini sangat populer pada awal tahun 80-an.

Gambar 1.19   Apple II-e

IBM mulai mengeluarkan Personal Computer (Gambar  1.20) pada sekitar tahun 1981 seperti yang nampak pada gambar, dengan menggunakan Operating System MS-DOS 16 Bit. Dikarenakan harga yang ditawarkan tidak jauh berbeda dengan komputer lainnya, disamping teknologinya jauh lebih baik serta nama besar dari IBM sendiri, maka dalam waktu yang sangat singkat komputer ini menjadi sangat popular.

Gambar 1.20   Personal Computer

F. Komputer Generasi Ke Lima  (masa depan)
Generasi kelima dalam sejarah evolusi komputer merupakan komputer impian masa depan dan diperkirakan mempunyai lebih banyak unit pemprosesan yang berfungsi bersamaan untuk menyelesaikan lebih daripada satu tugas dalam satu masa. Komputer ini juga mempunyai ingatan yang amat besar sehingga memungkinkan penyelesaian  lebih dari satu tugas dalam waktu bersamaan. Unit pemprosesan pusat juga dapat berfungsi sebagai otak manusia. Komputer ini juga mempunyai kepandaian tersendiri, merespon keadaan sekeliling melalui penglihatan yang bijak dalam mengambil sesuatu keputusan bebas dari pemikiran manusia yang disebut sebagai artificial intelligence.
            Pada generasi ini ditandai dengan munculnya: LSI (Large Scale Integration) dapat dilihat pada Gambar  1.21 yang merupakan pemadatan ribuan microprocessor kedalam sebuah microprocesor. Selain itu, juga ditandai dengan munculnya microprocessor dan semi conductor. Perusahaan-perusahaan yang membuat micro-processor diantaranya adalah: Intel Corporation, Motorola, Zilog dan lainnya lagi. Dipasaran bisa kita lihat adanya microprocessor dari Intel dengan model 4004, 8088, 80286, 80386, 80486, dan Pentium.

Gambar 1.21   Mikroprocessor Intel

            Pentium-4 (Gambar  1.22) merupakan produksi terbaru dari Intel Corporation yang diharapkan dapat menutupi segala kelemahan yang ada pada produk sebelumnya, disamping itu, kemampuan dan kecepatan yang dimiliki Pentium-4 juga bertambah menjadi 2 Ghz. Gambar-gambar yang ditampilkan menjadi lebih halus dan lebih tajam, disamping itu kecepatan memproses, mengirim ataupun menerima gambar juga menjadi semakin cepat.

Gambar 1.22   Pentium 4

            Pentium-4 diproduksi dengan menggunakan teknologi 0.18 mikron. Dengan bentuk yang semakin kecil mengakibatkan daya, arus dan tegangan panas yang dikeluarkan juga semakin kecil. Dengan processor (Gambar  1.23) yang lebih cepat dingin, dapat dihasilkan kecepatan MHz yang lebih tinggi. Kecepatan yang dimiliki adalah 20 kali lebih cepat dari generasi Pentium – 3.

1-2u
Gambar 1.23   Processor Pentium 4









II. SEJARAH PERKEMBANGAN BAHASA PEMROGRAMAN
Sejarah pemrograman modern dan bahasa pemrograman mulai berkembang sejak 1940-an, yaitu sekitar 68 tahun yang lalu. Pada tahun 1922. Charles Babbage. Ketika belajar di Universitas Cambridge Inggris, Charles melihat pada saat itu terdapat berbagai macam tabel perhitungan seperti tabel yang terkait dengan astronomi, kelautan, navigasi dan sebagainya. Meskipun tabel-tabel perhitungan ini tersedia, namun yang terjadi adalah banyak sekali kejadian musibah seperti kapal tenggelam, kecelakaan dan kapal hilang. Dalam hal ini, Charles Babbage mengira bahwa musibah ini disebabkan oleh faktor kesalahan manusia yaitu keterbatasan kemampuan dalam mengimplementasikan tabel perhitungan yang ada. Hal inilah yang memicunya untuk memikirkan bagaimana cara mengelola data-data yang ada dalam tabel perhitungan tersebut supaya mudah digunakan  yaitu menggunakan sebuah ‘mesin’ dinamakan ‘Difference Engine’.
Sejak pertama komputer difference engine diciptakan oleh Charles Babbage pada tahun 1822, komputer membutuhkan sejumlah instruksi untuk melakukan suatu tugas tertentu. Instruksi-instruksi ini dikenal sebagai bahasa pemrograman. Bahasa komputer mulanya terdiri dari sejumlah langkah pengkabelan untuk membuat suatu program; hal ini dapat dipahami sebagai suatu rangkaian pengetikan kedalam komputer dan kemudian dijalankan.
Awalnya, difference engine-nya Charles Babbage hanya dibuat untuk menjalankan tugas dengan menggunakan perpindahan gigi roda untuk menjalankan fungsi kalkukasi. Jadi, bentuk awal dari bahasa komputer adalah berupa gerakan secara mekanik, selanjutnya gerakan mekanik tersebut digantikan dengan sinyal listrik ketika pemerintah AS mengembangkan ENIAC pada tahun 1942, tetapi masih banyak mengadopsi prinsip-prinsip dasar dari Babbage’s engine yang mana diprogram dengan mengeset switch dan perkabelan pada seluruh sistem pada setiap “program” maupun kalkulasi. Tentu saja ini merupakan pekerjaan yang membosankan.
Pada 1945, John Von Neumann yang bekerja pada Institute for Advanced Study mengemukakan dua konsep yang secara langsung mempengaruhi masa depan dari bahasa pemrograman komputer. Yang pertama dikenal sebagai “shared-program technique”. Pada teknik ini dinyatakan bahwa hardware komputer haruslah sederhana dan tidak perlu dilakukan pengkabelan dengan menggunakan tangan untuk setiap program. Sebagai gantinya, instruksi-instruksi yang lebih kompleks harus digunakan untuk mengendalikan perangkat keras yang lebih sederhana, hal ini memungkinkan komputer diprogram ulang dengan cepat.
Konsep yang kedua yang juga sangat penting untuk pengembangan bahasa pemrograman. Von Neumann menyebutnya sebagai “conditional control transfer”. Ide ini berkembang menjadi bentuk subrutin, atau blok kode yang kecil yang dapat panggil berdasarkan aturan tertentu, dari pada suatu himpunan tunggal urutan kronologis yang harus dijalankan oleh komputer. Bagian kedua dari ide tersebut menyatakan bahwa kode komputer harus dapat bercabang berdasarkan pernyataan logika seperti IF (ekspresi) THEN, dan perulangan seperti FOR statement. “Conditional control transfer” mengembangkan ide adanya “libraries,” yang mana merupakan blok kode yang dapat digunakan berulang kali.
Pada 1949, setelah beberapa tahun Von Neumann bekerja, bahasa Short Code dilahirkan, yang merupakan bahasa komputer yang pertama untuk peralatan elektronik yang membutuhkan programmer untuk mengubah perintah kedalam 0 dan 1 dengan tangan.
Pada 1957, bahasa khusus yang pertama muncul dalam bentuk FORTRAN yang merupakan singkatan dari sistem FORmula TRANslating. Bahasa ini dirancang pada IBM untuk perhitungan scientific. Komponen-komponennya sangat sederhana, dan menyediakan bagi programmer akses tingkat rendah kedalam komputer. Sampai saat ini, bahasa ini terbatas pada hanya terdiri dari perintah IF, DO, dan GOTO, tetapi pada waktu itu, perintah-perintah ini merupakan lompatan besar kearah depan. Type data dasar yang digunakan sampai sekarang ini dimulai dari FORTRAN, hal ini meliputi variabel logika (TRUE atau FALSE), dan bilangan integer, real, serta double-precision.
FORTRAN sangat baik dalam menangani angka-angka, tetapi tidak terlalu baik untuk menangani proses input dan output, yang mana merupakan hal yang penting pada komputasi bisnis. Komputasi bisnis mulai tinggal landas pada 1959, dengan dikembangkannya COBOL, yang dirancang dari awal sebagai bahasa untuk para pebisnis. Type data yang ada hanya berupa number dan text string. Hal tersebut juga memungkinkan pengelompokan menjadi array dan record, sehingga data di telusuri dan diorganisasikan dengan lebih baik. Sesuatu hal yang menarik untuk dicatat bahwa suatu program COBOL dibuat menyerupai suatu essay, dengan empat atau lima bagian utama yang membentuk keseluruhan yang tertata dengan baik. Perintah-perintah COBOL sangat menyerupai tata bahasa English, sehingga membuatnya agak mudah dipelajari. Semua ciri-ciri ini dikembangkan agar mudah dipelajari dan mudah diterapkan pada dunia bisnis.
Pada 1958, John McCarthy di MIT membuat bahasa LISt Processing (atau LISP), yang dirancang untuk riset Artificial Intelligence (AI). Karena dirancang untuk fungsi spesialisasi yang tinggi, maka tata cara penulisannya jaring kelihatan sebelum ataupun sesudahnya. Sesuatu perbedaan yang paling nyata dari bahasa ini dengan bahasa lain adalah dasar dan type satu-satunya adalah list, yang ditandai dengan suatu urutan item yang dicakup dengan tanda kurung. Program LISP sendirinya dibuat sebagai suatu himpunan dari list, sehingga LISP memiliki kemampuan yang khusus untuk memodifikasi dirinya, dan juga dapat berkembang sendiri. Tata cara penulisan LISP dikenal sebagai “Cambridge Polish,” sebagaimana sangat berbeda dari logika Boolean :
x V y – Cambridge Polish, what was used to describe the LISP program
OR(x,y) – parenthesized prefix notation, what was used in the LISP program
x OR y – standard Boolean logic
LISP masih digunakan sampai sekarang karena spesialiasi yang tinggi dari sifat abstraknya.
Bahasa Algol dibuat oleh suatu komite untuk pemakaian scientific pada tahun 1958. Kontribusi utamanya adalah merupakan akar dari tiga bahasa selanjutnya yaitu Pascal, C, C++, dan Java. Dia juga merupakan bahasa pertama dengan suatu tata bahasa formal, yang dikenal sebagai Backus-Naar Form atau BNF (McGraw-Hill Encyclopedia of Science and Technology, 454). Pada Algol telah diterapkan konsep-konsep baru, seperti rekursif pada function, bahasa berikutnya Algol 68, menjadi bahasa yang membosankan dan sulit digunakan. Hal ini mengarah kepada adopsi terhadap bahasa yang lebih kecil dan kompak seperti Pascal.
Pascal dimulai pada tahun 1968 oleh Niklaus Wirth di Technical University, Zurich – Swiss. Nama PASCAL diambil dari nama seorang ahli matematika bangsa Perancis, yaitu BLEISE PASCAL yang telah berjasa menemukan alat hitung mekanis pertama didunia pada abad ke-17. Tujuan pengembangannya adalah untuk kebutuhan pengajaran. Pada awalnya bahasa ini dikembangkan bukan dengan harapan adopsi pemakaian secara luas. Prinsipnya mereka mengembangkannya untuk alat pengajaran pemrograman yang baik seperti kemampuan debug dan perbaikan sistem dan dukungan kepada mikroprosesor komputer yang digunakan pada institusi pendidikan.
Pascal dirancang dengan pendekatan yang sangat teratur (terstruktur), dia mengkombinasikan kemampuan yang terbaik dari bahasa-bahasa saat itu, COBOL, FORTRAN, dan ALGOL. Dalam pengerjaannya banyak perintah-perintah yang tidak teratur dan aneh dihilangkan, sehingga sangat menarik bagi pemakai. Kombinasi dari kemampuan input/output dan kemampuan matematika yang solid, membuatnya menjadi bahasa yang sukses besar. Pascal juga mengembangkan tipe data “pointer”, suatu fasilitas yang sangat bermanfaat pada bahasa yang mengimplementasikannya. Dia juga menambahkan perintah CASE, yang mana memperbolehkan perintah bercabang seperti suatu pohon pada suatu aturan:
CASE expression OF
possible-expression-value-1:
  statements to execute…
possible-expression-value-2:
  statements to execute…
END

Kelemahan Pascal adalah tidak dapat mengimplementasikan suatu array dinamis, atau kelompok dari variabel-variabel yang mana sangat dibutuhkan sehingga posisi Pascal digeser dengan kemunculan bahasa C.
Bahasa C dikembangkan pada tahun 1972 oleh Dennis Richie ketika sedang bekerja pada Bell Labs di New Jersey. Transisi pemakaian dari bahasa umum yang pertama ke bahasa umum sampai hari ini yaitu transisi antara Pascal dan C, C merupakan perkembangan dari B dan BCPL, tetapi agak menyerupai Pascal. Semua fasilitas di Pascal, termasuk perintah CASE tersedia di C.
           

























III. KONSEP DASAR PROGRAM PASCAL

Program dalam bahasa pemrograman Pascal cukup banyak variannya seperti Delfi, yang merupakan visual pascal. Pascal memiliki beberapa versi yang beredar di pasaran seperti UCSD Pascal, Ms-Pascal, Apple Paskal, Free Pascal, Turbo Packal, dan sebagainya. Pascal adalah salah satu bahasa pemrograman yang sering dijadikan rujukan sebagai media untuk mempelajari bahasa pemrograman. Pascal merupakan sebuah program tingkat tinggi (high level language) yang orientasnya pada segala tujuan dirancang oleh Profesor Niklaus Wirth dari Technical University of Zurich, Switzerland. Nama Pascal diambil sebagai penghargaan terhadap Blaise Pascal, ahli matematik dan filosofer terkenal abad 17 dari Perancis.
Profesor Niklaus Wirth memperkenalkan kompiler bahasa Pascal pertama kali untuk komputer CDC 6000 (Control Data Corporation) yang dipublikasikan pada tahun 1971 dengan tujuan membantu mengajar program komputer secara sistematis, khususnya untuk memperkenalkan pemrograman terstruktur.
Dalam waktu singkat, Pascal telah menjadi bahasa yang populer di kalangan pelajar universitas dan merupakan bahasa yang diajarkan di beberapa perguruan tinggi. Beberapa profesional komputer juga mulai beralih ke bahasa Pascal. Kenyataannya, Pascal merupakan bahasa yang paling cepat populer dibandingkan dengan bahasa-bahasa komputer tingkat tinggi yang lainnya. Bahasa pemrograman Pascal Mempunyai beberapa kelebihan seperti:
1.      Tipe Data Standar, tipe-tipe data standar yang telah tersedia padaØ kebanyakan bahasa pemrograman. Pascal memiliki tipe data standar: boolean, integer, real, char, string,
2.      User defined Data Types, programmer dapat membuat tipe data lain yang diturunkan dari tipe data standar.
3.      Strongly-typed, programmer harus menentukan tipe data dari suatuØ variabel, dan variabel tersebut tidak dapat dipergunakan untuk menyimpan tipe data selain dari format yang ditentukan.
4.      Terstruktur, memiliki sintaks yang memungkinkan penulisan programØ dipecah menjadi fungsi-fungsi kecil (procedure dan function) yang dapat dipergunakan berulang-ulang.
5.      Sederhana dan Ekspresif, memiliki struktur yang sederhana dan sangatØ mendekati bahasa manusia (bahasa Inggris) sehingga mudah dipelajari dan dipahami.
Standar Pascal adalah bahasa Pascal yang didefinisikan oleh K.Jensen dan Niklaus Wirth. Penerapan nyata dari standar Pascal banyak yang berbeda dengan seperti apa yang telah didefinisikan oleh K. Jensen dan Niklaus Wirth. Standar Pascal di Eropa didefinisiakn oelh ISO (International Standards Organization) dan di Amerika oleh kerjasama antara ANSI (American National Standar Institute) dengan IEEE (Intitute of Electrical and Electronic Engineer).
Bahasa PASCAL juga merupakan bahasa yang digunakan sebagai standar bahasa pemrograman bagi tim nasional Olimpiade Komputer Indonesia (TOKI). Selain itu, Bahasa PASCAL masih digunakan dalam IOI (International Olympiad in Informatics).
Terdapat beberapa versi dari pascal yang telah berada di pasaran dan sampai saat ini untuk komputer-komputer micro personal Turbo Pascal merupakan yang paling populer dan banyak digunakan. Turbo Pascal banyak di gemari karena bersifat interaktif. Selain itu Turbo Pascal mengikuti definisi dari standar pascal yang didefinisikan oleh K. Jansen dan Niclaus Wirht di Pascal User Manual and Report. Turbo Pascal adalah copiright dari BORLAND Inc.
Beberapa versi dari Pascal yang telah beredar di pasaran, di antaranya UCSD pascal (University of California at San Diego Pascal), MS-Pascal (Microsoft Pascal), Apple Pascal, Turbo Pascal dan lain sebagainya. Sampai saat ini untuk komputer-komputer mikro dan personal, Turbo Pascal merupakan versi bahasa Pascal yang paling populer dan banyak digunakan. Kompiler Turbo Pascal banyak digemari, karena terutama bersifat interaktif, seperti interpreter saja layaknya. Selain itu Turbo Pascal mengikuti definisi dari standar Pascal seperti yang didefinisikan oleh K. Jensen dan Niklaus Wirth di Pascal User Manual dan Report. Turbo PASCAL adalah copyright dari Borland Inc. dan dapat digunakan pada sistem operasi PC-DOS, MS-DOS, CPM-86 dan CP/M-80.
1. Turbo Pascal
Kompiler Pascal dari Borland yang begitu terkenal diseluruh dunia, dikenal dengan nama Turbo Pascal, diperkenalkan pada tahun 1983, mengimplementasikan “Pascal User Manual and Report” oleh Jensen dan Wirth. Kompiler Turbo Pascal telah menjadi salah satu dari kompiler terlaris sepanjang masa, dan membuat bahasa ini sangat populer pada platform PC, dikarenakan keseimbangan antara kemudahan penggunaan dan kemampuan/kekuatan.
Turbo Pascal memperkenalkan suatu Integrated Development Environment (IDE) dimana Anda dapat mengedit code (dalam sebuah editor yang kompatibel dengan WordStar), menjalankan kompiler, melihat kesalahan yang ada, dan melompat kembali ke baris yang mengandung kesalahan tersebut. Hal ini mungkin kedengarannya sangat sepele pada dewasa ini, tapi pada masa sebelumnya Anda harus keluar dari editor, kembali ke DOS; menjalankan kompiler dari command-line, menuliskan nomor baris yang salah, membuka editor dan melompat ke baris tersebut.
2. Delphi’s Pascal
Setelah 9 versi dari kompiler Turbo dan Borland Pascal, yang secara perlahan mengembangkan bahasa ini, Borland meluncurkan Delphi pada tahun 1995, mengubah Pascal menjadi sebuah bahasa pemrograman visual.
Delphi mengembangkan bahasa Pascal dalam sekian banyak cara, termasuk pengembangan berorientasi objek yang berbeda dari produk Object Pascal lain, termasuk dari kompiler Borland Pascal with Objects.






IV. KOMPONEN PROGRAM PASCAL
Program dalam bahasa pascal tersusun atas komponen-komponen program. Komponen-komponen didalam program tersebut adalah kepala program, bagian deklarasi dan bagian pernyataan atau program utama. Struktur dari komponen program pascal adalah sebagai berikut :

Program nama_program; {bagian kepala}
[ deklarasi unit ]
[ deklarasi konstanta ]
[ deklarasi tipe data ]                               Bagian Deklarasi
[ deklarasi variabel ]
[ deklarasi subprogram ]

begin
     pernyataan 1;
                                                             Bagian pernyatan / program utama
            pernyataan 2;
end;

Struktur komponen program diatas dijelaskan lebih detail sebagai berikut :

1. Judul Program

Judul program didalam pascal umumnya berisi nama dari program yang bersangkutan, sifatnnya optional jika ditulis judul program diawali dengan kata “PROGRAM” yang diikuti dengan nama program. Setelah nama program diakhiri dengan titik koma. Sebagai contoh sebuah program untuk menghitung luas lingkaran, kepala program dapat ditulis sebagai berikut:

PROGRAM Menghitung_luas_lingkaran;

Nama program tidak terikat dengan apa harus ditulis tetapi ada beberapa hal yang harus diperhatikan dalam menuliskan nama program. Ketentuan-ketentuan dalam menuliskan nama program adalah sebagai berikut:
-          Nama program adalah satu kesatuan sehingga nama program tidak boleh lebih dari dua kata yang dipisahkan dengan spasi. Apabila nama program lebih dari dua kata maka sebaiknya digabungkan dengan menghilangkan spasi atau menggantinya dengan tanda underscore ( _ ).
-          Nama program tidak dapat diawali dengan angka.
-          Nama program tidak boleh mengandung karakter bukan huruf kecuali underscore ( _ ).

2. Bagian Deklarasi

      Bagian deklarasi digunakan bila di dalam program digunakan pengenal (identifier). Identifier dapat berupa label, konstanta, tipe, variabel, prosedur dan fungsi. Jika suatu program menggunakan identifier, Pascal mensyaratkan agar identifier tersebut diperkenalkan terlebih dahulu sebelum digunakan, yaitu dideklarasikan terlebih dahulu pada bagian ini. Bagian deklarasi terdiri atas deklarasi unit, deklarasi konstanta dan lain sebagainya.

a. Deklarasi Unit

Perintah-perintah didalam pascal sebagian besar tersimpan dalam sebuah file unit. Sebagai contoh ketika didalam program utama terdapat perintah untuk membersihkan layar dengan statemen clrscr; maka definisi dari clrscr ini terdapat dalam sebuah file unit yang disebut crt. Pascal tidak akan memahami perintah tersebut apabila dibagian deklarasi unit tidak disebutkan file unit yang direferensi yaitu unit crt.
Berdasarkan ilustrasi diatas, deklarasi unit digunakan untuk menuliskan unit-unit file yang berisi definisi dari perintah-perintah yang dipakai didalam program utama. Deklarasi unit dilakukan dengan menuliskan statemen USES yang diikuti dengan nama unit yang disertakan. Contoh deklarasi unit adalah sebagai berikut:

            Uses Wincrt,WinDos;

Deklarasi unit yang terdiri dari dua file unit atau lebih, penulisannya dilakukan setelah klausa USES diikuti dengan nama-nama file unit yang dipisahkan denga tanda koma (,) kemudian diakhiri dengan tanda titik koma (;). Contoh penulisan unit yang lebih dari satu file adalah sebagai berikut:

            Uses Wincrt,WinDos;

Daftar file unit yang dapat digunakan untuk menuliskan program terdapat pada tabel 1.

Tabel 1. Daftar file unit didalam pascal
  Nama Unit
Keterangan
Crt
Berisi rutin yang berkaitan dengan layar, keyboard, dan suara. Unit ini ada pada pascal untuk dos.
Wincrt
Hampir sama dengan unit crt tetapi digunakan untuk pascal for windows.
Dos
Unit yang berisi rutin yang digunakan untuk operasi terhadap system operasi dan penanganan dos.
WinDos
Hampir sama dengan unit dos tetapi digunakan dalam pascal for windows.
Printer
Berisi fasilitas untuk melakukan operasi yang berkaitan dengan pencetakan data melalui printer.
Graph
Berisi rutin yang digunakan untuk melakukan operasi berkaitan dengan grafis.
System
Berisi sejumlah pustaka yang digunakan saat eksekusi (runtime library). Rutime berisi hal-hal berikut:
-          penanganan input / output file
-          penanganan string
-          alokasi dinamis

Selain unit yang telah disebutkan diatas, masih terdapat beberapa unit yang lain.

b. Deklarasi konstanta

Konstanta adalah sebuah nilai tetapan yang tidak berubah. Salah satu contoh yang dapat dijadikan sebagai sebuah konstanta adalah nilai phi untuk menghitung luas lingkaran. Konstanta yang akan digunakan didalam sebuah program harus terlebih dahulu didefinisikan pada bagian deklarasi konstanta. Cara mendeklarasikan sebuah konstanta, digunakan sebuah klausa ‘CONST’ dan diikuti dengan nama konstanta beserta dengan nilai tetapannya. Contoh sebuah deklarasi konstanta adalah sebagai berikut:

            Const phi=3.14;

Nama konstanta diberikan oleh pemrogram. Untuk mendeklarasikan konstanta yang lebih dari satu maka dapat dituliskan dengan menambahkan konstanta berikutnya setelah sebuah konstanta dideklarasikan dan diakhiri dengan tanda titik koma (;).

      Const  phi=3.14;
          Huruf:char=’A’;

Pada contoh diatas terdapat dua jenis konstanta. Konstanta yang pertama adalah konstanta yang nilai tetapannya tidak dapat diubah didalam program. Pada konstanta yang kedua, nilai tetapan awal adalah huruf ‘A’, nilai ini dapat diubah pada program utama.

c. Deklarasi Tipe data

Terdapat dua kelompok tipe data yang dibedakan secara mendasar yaitu tipe data yang sudah ada di mengerti oleh bahasa pemograman pascal dan tipe data bentukan. Tipe data bentukan adalah tipe data yang didefinisikan oleh seorang pemrogram. Untuk mendeklarasikan sebuah tipe data, digunakan klausa “TYPE” kemudian diikuti dengan nama tipe data bentukan serta tipe data asli. Contoh deklarasi sebuah tipe data adalah sebagai berikut:

Type status : Boolean;

Dalam contoh diatas, tipe data bentukan dengan nama status bertipe boolean. Tipe status tersebut dapat digunakan oleh variabel yang akan di deklarasikan pada bagian deklarasi variabel.

d. Deklarasi Variabel

Variabel adalah sebuah perubah yang dapat digunakan untuk menyimpan data. Variabel juga dapat diperlakukan sebagaimana data atau nilai yaitu dengan operasi-operasi aritmatika maupun operasi logika. Setiap variabel yang akan digunakan untuk menyimpan data, akan ditentukan tipenya. Sebuah veriabel yang bertipe data numeric tidak akan dapat digunakan untuk menyimpan data huruf. Beberapa tipe data yang sangat umum digunakan adalah integer, real, char, dan string.
Deklarasi sebuah variabel dilakukan dengan menuliskan klausa “VAR” kemudian diikuti dengan tipe data yang digunakan. Sebagai contoh sebuah variabel dengan nama jumlah dengan tipe bilangan bulat maka dapat dituliskan sebagai berikut:

Var jumlah:integer;
Tipe data pada variabel juga dapat menggunakan tipe data bentukan yang deklarasikan oleh pemrogram pada bagian deklarasi tipe data. Contoh:

Type status:Boolean;
Var  jumlah:integer;
       Chek:status;

e. Deklarasi subprogram

Deklarasi subprogram adalah mendeklarasikan bagian program yang disebut dengan procedure dan function. Procedure dan function merupakan bagian dari program yang memiliki fungsi untuk menyelesaikan tugas tertentu yang menjadi bagian dari program.
Untuk mendeklarasikan procedure dapat digunakan klausa “PROCEDURE” kemudian diikuti dengan nama procedure sedangkan untuk mendeklarasikan function digunalan klausa “FUNCTION” kemudian diikuti dengan nama function. Setelah mendeklarasikan nama procedure ataupun nama function, berikutnya akan diikuti oleh bagian procedure atau function yang diawali dengan pernyataan BEGIN dan diakhiri pernyataan END;. Contoh penulisan procedure dan function adalah sebagai berikut:

Procedure bacainput(nilai:integer);
Begin
   . . .
End;

Function jumlah(nilai1:integer; nilai2:integer):integer;
Begin
   . . .
End;

Catatan : Identifier ini bebas, tetapi dengan ketentuan-ketentuan sebagai berikut :
1.      Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. Huruf besar dan huruf kecil dianggap sama.
2.      Tidak boleh mengandung blank.
3.      Tidak boleh mengandung simbol-simbol khusus, kecuali garis bawah.
4.      Panjangnya bebas, tetapi hanya 63 karakter pertama yang dianggap signifikan.

Contoh :
Identifier
Keterangan
GajiKaryawan
Benar
No_Mhs
Benar
P3K
Benar
1X
Salah, karakter pertama harus huruf
A&B
Salah, tidak boleh mengandung simbol khusus
A B
Salah, tidak boleh mengandung blank

3. Bagian Pernyataan / Program utama

Bagian program utama adalah bagian yang berisi langkah-langah dalam program. Statemen-statemen yang ada pada program utama adalah statemen untuk input pogram, proses, dan output program. Didalam program utama juga dapat dilakukan pemanggilan procedure dan function yang telah dedeklarasikan sebelumnya. Penulisan statemen pada program utama terletak diantara klausa “BEGIN” dan “END.” Beberapa aturan dalam program Pascal :
·         Akhir sebuah program Pascal ditandai dengan tanda baca titik (.) setelah END yang  paling akhir.
·         Tanda titik koma (;) merupakan pemisah antar instruksi satu dengan lainnya.
·         Beberapa statement boleh ditulis menjadi satu baris dipisahkan dengan tanda baca titik koma (;)
Contoh : simpan:=akhir;   akhir:= simpan+awal;
·         Baris komentar diletakkan diantara tanda (* dan *) atau diantara tanda { dan }
Contoh :    Var   rerata  : real;                  (*nilai rata-rata*)
                              Nil1    : real;               {nilai ujian}
     
Tipe pernyataan dalam Pascal terdiri atas :
1.      Sederhana :
-  menandai sebuah item data ke sebuah variabel (assigment statement)
            contoh : X := Y * 4.135
-      pemanggilan procedure dan goto statement
2.      Terstruktur:
- Compound Statement
            contoh : Begin
                  read (x) ;
                  y := x + 5;
                  write (y)
              End.
      - Repetitive Statement
            contoh :           For I := 1 to 100 do
                  write (count);
     - Conditional Statement
            contoh :           If x > 100 then write (s)
                        else write (p) ;

4. Komentar Program

Komentar program merupakan tulisan-tulisan yang berfungsi untuk memberikan keterangan pada program atau instruksi-instruksi yang ada di dalam program. Komentar program ini tidak akan diekseksi oleh program. Cara penulisan komentar adalah dengan memberikan tanda kurung kurawal buka dan tutup ({…}) pada awal komentar dan akhir komentar.
Contoh :  Menghitung luas bidang berbentuk empat persegi panjang dengan panjang P dan lebar L.

PROGRAM Luas;                 {Judul}
VAR P,L,Luas:real;            {Deklarasi variabel}
BEGIN
      Read (P,L);             {Statemant}
      Luas := P*L;            {Statement}
      Write (P,L,Luas);       {Statement}
END.




















V. TIPE DATA
Tipe data adalah sebuah tipe atau jenis data yang disimpan kedalam sebuah perubah atau variabel. Untuk mendeklarasikan sebuah variabel harus diikuti dengan tipe datanya. Sebagai contoh sebuah variabel dengan nama nilai dan bertipe data integer maka variabel tersebut hanya dapat menyimpan data yang berupa bilangan bulat seperti 1, 2, -3, dan lain sebagainya. Variabel tersebut tidak dapat digunakan untuk menyimpan data yang berupa bilangan desimal seperti 2.5, 4.25, atau tipe data yang lainnya yang tidak sesuai.
Didalam bahasa pemrograman pascal terdapat dua macam tipe data yatu tipe data dasar dan tipe data bentukan. Tipe data dasar merupakan tipe data yang telah disediakan dan dikenali oleh program sedangkan tipe data bentukan adalah tipe data yang dibuat dan didefinisikan oleh pemrogram. Tipe data dasar antara lain :

1. Tipe data Ordinal

Tipe data ordinal adalah sebuah tipe data yang memiliki nilai ordinalitas pada sebuah himpunan yang berurutan  (orderet set). Pada tipe data ordinal, nilai pertama memiliki nilai ordinalitas 0, berikutnya memiliki nilai ordinal 1 dan seterusnya. Khusus untuk tipe integer nilai ordinalitasnya adalah nilai integer itu sendiri.
Pada tipe data ordinalitas, setiap nilai memiliki nilai pendahulu kecuali pada nilai yang pertama dan memiliki nilai yang mengikutinya kecuali nilai terakhir. Standar fungsi yang digunakan untuk mengetahui nilai ordinalitas dari suatu data ordinal adalah Ord( ). Fungsi pred( ) digunakan untuk mengetahui nilai pendahulunya. Fungsi ini tidak dapat diterapkan pada nilai yang petama. Fungsi succ( ) digunkan untuk mengetahui nilai yang mengikutinya. Fungsi ini tidak dapat diterapkan pada nilai yang terakhir.
Pada tipe data ordinal terdapat beberpa jenis tipe data, yaitu tipe integer, tipe char, dan tipe Boolean.

a. Tipe Integer

Tipe data integer adalah tipe data yang berupa bilangan bulat. Tipe data ini tidak memiliki nilai hasil pembagian yang berupa pecahan. Dalam tipe data integer terdapat beberapa jenis yang membedakan ukurannya. Kelompok tipe data tersebut dapat dilihat ada tabel 1.

Tabel 1.  Tipe data integer
Tipe
Rentang Nilai
Ukuran
Byte
0..225
8 bit
Shortint
-128 .. 127
8 bit
Word
O .. 65535
16 bit
Integer
-32768..32767
16 bit
longInt
-2147483648..2147483647
32 bit

Contoh:
Var a,b,c:integer;
Begin
   A:=5;
   B:= -10;
   C:=A+B;
Write (C);
End;

b. Tipe Char

Tipe char digunakan untuk mendefinisikan sebuah himpunan karakter yang ada pada kode ASCII. Untuk menuliskan sebuah karakter didalam program dengan menyertakan tanda petik (‘) awal dan akhir karakter tersebut. Sebagai contoh ‘A’, ‘B’, ‘C’, ‘0’, ‘1’, ‘2’ dan sebagainya. Tipe data char hanya terdiri dari satu karakter.
Fungsi-fungsi yang telah dijelaskan sebelumnya dapat diterapkan pada tipe data ini. Fungsi ord( ) akan menghasilkan sebuah nilai ordnalitas dari sebuah karakter. Sebagai contoh Ord(‘A’) akan menghasilkan nilai 65. Fungsi pred() akan menghasilkan nilai sebelumnya. Sebagai contoh pred(‘B’) akan menghasilkan karakter ‘A’. Demikian juga dengan fungsi  succ( ) yang akan menghasilkan nilai sesudahnya. Sebagai contoh Succ(‘B’) akan menghasilkan karakter ‘C’.
Untuk menghasilkan sebuah nilai karakter dari suatu nilai ordinal juga dapat digunakan dengan sebuah fungsi chr( ). Sebagai contoh pada kode asci nilai 68 adalah sebuah karakter ‘D’, maka untuk memperoleh nilai ‘D’ dari suatu data integer dapat dilakukan dengan perintah Chr(68).
Sebagai ilustrasi yang lebh detail dapat dilihat pada contoh program berikut.

Program Karakter ASCII

Program karakter;
Uses wincrt;
Var nilai : integer;
    K:char;
Begin
  Writeln(’Program Cetak Karakter dari ASCII’);
  Writeln(’Masukan nilai karakter ASCII [0-255]=’);
  Readln(nilai);
  K:=chr(nilai);
  Write(‘Karakter=’,K);
End.


Output:

Program Cetak Karakter dari ASCII
Masukan nilai karakter ASCII [0-255]= 68
Karakter= D


c. Tipe Boolean

Tipe data Boolean merupakan tipe data logika dengan dua buah nilai kebenaran yaitu true dan false. Nilai true memiliki nilai biner 1 dan nilai false memiliki nilai biner 0.
Contoh:
Var x:Boolean;
Begin
   X:=true;
   Writeln(x);
End.

Dalam contoh diatas, x adalah variabel dengan tipe Boolean. Variabel x tersebut kemudian diberikan nilai true. Tampilan dari pogram tersebut adalah menampilkan nilai true.

2. Tipe Data Real

Tipe data real adalah tipe data bilangan yang mengandung nilai pecahan. Bilangan ini disbut dengan bilangan desimal. Penulisan data desimal tidak mengunakan tanda koma (,) tetapi menggunakan tanda titik (.), sebagai contoh 2.25
Sebagaimana tipe integer, didalam tipe data real juga terdapat beberapa jenis tipe data yang memiliki jangkauan yang berbeda. Kelompok tipe data tersebut dapat dilihat pada tabel 2.

Tabel 2.  Tipe data real
Tipe
Rentang nilai
Angka signifikan
Byte
Real
2.9e-39..1.7e38
11 – 12
6
Single
1.5e-45..3.4e38
7 -8
4
Double
5.0e-324..1.7e308
15 – 16
8
Extended
3.4e-4932..1.1e4932
19 -20
10
Comp
-2E63+ 1 .. 2E63-1
19 -20
8

Pada rentang nilai dituliskan dalam bentuk notasi denga huruf e. notasi ini memiliki arti perkalian dengan pangkat berbasis 10. Sebagai contoh 2.3E2, bilangan ini memiliki nilai 2.3 X 102 yaitu 230.

Program Pembagian

Program pembagian;
Uses wincrt;
Var a,b : integer;
    C:real;
Begin
  Writeln(’Program Operasi Pembagian’);
  Write(’Masukan nilai A =’); Readln(a);
  Write(’Masukan nilai B =’); Readln(b);
  c:=a/b;
  Writeln(‘Hasil Pembagian=’,c);
End.






Output:

Program Operasi Pembagian
Masukan Nilai A = 20
Masukan Nilai B = 3
Hasil Pembagian = 6.66666666666667E+0000

Pada program diatas, pada awalnya user akan diminta untuk memasukan data bilangan bulat yang disimpan dalam variabel A. Berikutnya user akan diminta untuk memasukan sebuah bilangan bulat yang akan disimpan dalam variabel B. Program akan melakukan pembagian yang hasilnya akan disimpan dalam variabel C yang bertipe real. Terakhir program akan menampilkan output yang ada pada variabel C dengan mengguanakan notasi perkalian pangkat 10 yaitu dengan huruf E. Untuk mengubah tampilan ini dapat disertakan format bit signifikan. Pernyataan terakhir dapat diganti dengan perintah:

Writeln(‘Hasil Pembagian=’,C:8:2);

3. Tipe data terstruktur

Tipe data terstruktur adalah tipe data yang dapat  menyimpan lebih dari satu nilai. Masing-masing nilai tersebut disebut sebagai elemen yang memiliki tipe tersendiri. Struktur pembentukan tipe data ini akan menentukan karakteristik penyimpanan dan pengaksesan data. Didalam tipe data terstruktur terdapat beberapa jenis tipe data yaitu tipe string, tipe himpunan (set), tipe larik (array), tipe rekaman (record) dan tipe berkas (file). Pembahasan pada bab ini hanya akan dilakukan pada dua buah tipe data yaitu tipe data string dan tipe data himpunan. Ketiga tipe data yang lain, yaitu tipe larik, tipe rekaman, dan tipe berkas akan dibahas dalam bab tersendiri.

a. Tipe String

Tipe data string adalah tipe data yang berisi kumpulan karakter. Untuk mendefinisikan tipe data string dapat diikuti dengan jumlah karakter yang dispesifikasikan. Jika jumlah karakter yang boleh disimpan tidak didefinisikan maka data yang disimpan tidak dibatasi. Untuk menspesifikasikan jumlah karakter yang dapat disimpan dalam sebuah variabel dapat dituliskan dengan tanda kurung siku ( [ ] ).

Contoh:
Var S:string;
    A:string[10];

Jika sebuah varabel dideklarasi dengan tipe data string dan dispesifikasikan jumlah karakter yang dapat disimpan maka variabel tersebut hanya mampu menyimpan sejumlah karakter tersebut meskipun diberikan sebuah input yang jumlah karakternya lebih banyak. Pada contoh diatas, variablel hanya mampu menyimpan 10 karakter. Apabila variabel tersebut diberi input ‘ABCDEFGHIJKLMN’ maka data yang akan tersimpan hanya ‘ABCDEFGHIJ’ sesuai dengan jumlah yang telah ditentukan.
Contoh:
Program Menampilkan salam
Program Salam;
Uses wincrt;
Var nama : string[20];
Begin
  Write(’Masukkan Nama Anda =’); Readln(nama);
  Writeln(‘Selamat Datang’,nama);
End.



Output:

Masukkan Nama Anda = Flori
Selamat Datang Andi

b. Tipe Himpunan

Himpunan adalah kumpulan data yang memiliki tipe yang sama. Sebagaimana pengertian himpunan di dalam matematika, himpunan adalah kumpulan objek yang memiliki karakteristik yang sama. Misalnya himpunan bilangan bulat 0 sampai 10 maka himpunan tersebut adalah kumpulan nilai yang memiliki tipe yang sama yaitu 0,1,2,3,4,5,6,7,8,9, dan 10.
Didalam bahasa pemrograman pascal, himpunan ditulis dengan tanda kurung siku ( [ ] ).  Himpunan bilangan bulat positif dari 0 sampai dengan 10 dapat dinyatakan dengan [0,1,2,3,4,5,6,7,8,9,10]. Urutan dalam himpunan tidak mempengaruhi karakteristiknya. Dua buah himpunan dikatakan sama apabila masing-masing himpunan memiliki anggota yang sama. Himpunan [0,1,2,3,4,5,6,7,8,9,10] sama dengan himpunan [10,9,8,7,6,5,4,3,2,1,0]. Untuk mendeklarasikan sebuah tipe data himpunan digunakan perintah dengan klausa “SET”.
Contoh:
Var X : set of  1..10;
    Karakter: set of  char;

Untuk mengetahui apakah suatu data merupakan anggota dari suatu himpunan dapat digunakan perintah In. Pada program dibawah ini akan memberikan gambaran yang lebih jelas.
Contoh :  Program Himpunan

Program himpunan;
Uses wincrt;
Var x : boolean;
    Y : integer;
Begin
  y:=5;
  x:=y in [1..10];
  Writeln(x);
End.


Dari contoh program diatas, nilai output dari program tersebut adalah true. Variabel X bernilai true karena varibael y yang berisi angka 5 adalah bagian dari bilangan dari 1 sampai 10.

c. Tipe data pointer

Tipe data pointer adalah tipe data terstruktur yang dipakai pada deklarasi variabel sehingga variabel tersebut bersifat dinamis. Sebagai ilustrasi, sebuah variabel dideklarasi dengan tipe string[20] maka variabel tersebut berukuran tetap yaitu 20. Pada saat program berjalan ukuran variabel tersebut tidak akan berubah. Dengan menggunakan sebuah tipe data pointer sebagai contoh pointer char maka variabel tersebut ukuran dapat berubah sesuai dengan kebutuhan program.
Deklarasi sebuah tipe data pointer digunakan sebuah perintah dengan menuliskan tanda topi (^) kemudian diikuti dengan jenis tipe data dasar.
Contoh:
x : ^char;

4. Tipe data bentukan

Tipe data bentukan adalah sebuah tipe data yang didefinsikan oleh pemrogram. Tipe data bentukan ini terdapat dua jenis taitu tipe terbilang (enumerated) dan tipe subjangkauan.

a. Tipe terbilang (enumerated)

Tipe terbilang adalah sebuah tipe data yang didefinisikan satu persatu. Sebagai contoh untuk mendeklarasikan sebuah tipe data hari maka semua nama hari harus disebutkan satu persatu yaitu senin, selasa, rabu, kamis, jumat, sabtu, dan minggu. Bentuk umum deklarasinya adalah pengenal = <tipe>. Pendeklarasian tipe data ini ada pada bagian deklarasi tipe sebagaimana yang telah dijelaskan pada bagian sebelumya.
Contoh:
Type
   Hari=(minggu,senin,selasa,rabu,kamis,jumat,sabtu);

Untuk mendeklarasikan sebuah variabel yang bertipe hari dideklarasikan pada bagian deklarasi variabel.
Contoh:
Var
   NamaHari:hari;

Variabel NamaHari yang telah dideklarasikan dengan tipe hari hanya dapat menyimpan data yang berupa nama-nama hari yang telah disebutkan pada bagian deklarasi tipe data.
Contoh:
NamaHari:=senin;

b. Tipe subjangkauan

Tipe subjangkauan adalah sebuah tipe yang menunjukkan adanya rentang nilai. Tipe subjangkauan dapat diambil dari sembarang nilai ordinal. Bentuk umum untuk menyatakan notasi ini adalah dengan sintak:
Type
   Pengenal1=konstanta1 .. konstanta 2
                  Keterangan :
Pengenal= nama tipe subjangkauan
      Konstanta1=nilai yang menyatakan batas awal jangkauan.
      Konstanta2= nilai yang menyetakan batas akhir jangkauan.

Contoh:
Type
   Nilai=1..100
   HurufBesar=’A’..’Z’

Sebuah variabel yang dideklarasikan sebagai tipe data maka variabel tersebut hanya dapat menerima data yang ada didalam rentang nilai tersebut. Program berikut ini adalah program yang menyajikan tipe data sub jangkuan.
Program Nilai mahasiswa1.

Program nilai_mhs1;
Uses wincrt;
Type
  Nilai=1..100;
Var
  Nilaimhs:nilai;
Begin
  Writeln(’Program Nilai Mahasiswa’);
  Writeln(’Masukkan Nilai Mahasiswa =’); Readln(nilaimhs);
  Writeln(’Nilai Mahasiswa’,nilaimhs);
End.


Output

Program Nilai Mahasiswa
Masukkan Nilai Mahasiswa = 98
Nilai Mahasiswa = 98

Pada program diatas, nilai adalah sebuah tipe subjangkauan dengan batas awal 1 dan batas akhir 100. variabel nilaimhs yang dideklarasikan dengan tipe nilai maka variabel tersebut hanya dapat menerima masukan data yang ada diantara seubjangkauan tersebut seperti 25, 40, 80 dan lain sebagainya. Variabel tersebut tidak dapat menerima nilai diluar subjangkauan tersebu seperti 125, -5,110 dan lain sebagainya.


VI. OPERATOR
Operator adalah suatu simbol yang digunakan untuk melakukan operasi terhadap data. Operasi yang dimaksud adalah memanipulasi dan mengolah data. Data dengan tipe tertentu dapat dilakukan operasi dengan operator tertentu.

1. Operator Penugasan

Operator penugasan adalah operator yang digunakan untuk memberikan nilai pada suatu perubah. Sebagai contoh sebuah variabel dideklrasikan dengan tipe data integer. Untuk memberikan sebuah nilai pada variabel tersebut digunakan operator penugasan. Didalam bahasa pascal operator penugasan ini dituliskan dengan simbol titik dua dan sama dengan (:=);
Contoh:
Nilai:=100;
A:=10;
B:=25;
C:=A*B;

Dari contoh diatas dapat dilihat bahwa untuk memberikan nilai 100 pada variable nilai digunakan operator penugasan yaitu titik dua dan sama dengan (:=). Demikian juga pemberian nilai pada variabel-variabel yang lain.

2. Operator Aritmatika

Operator aritmatika adalah operator yang digunakan untuk mengoperasikan data-data numerik. Operasi yang dilakukan adalah operasi aritmatika seperti penjumlahan, perkalian, pembagian dan lain sebagainya. Operator aritmatika memiliki beberapa simbol dengan fungsi yang berbeda-beda. Masing-masing simbol juga memiliki prioritas yang berbeda jika didalam suatu notasi terdapat lebih dari satu operator aritmatika. Simbol-simbol operator arimatika dan hierarki urutan prioritasnya dapat dilihat pada tabel 1.



Tabel 1.  Operator Aritmatika
Operator
Operasi
-
Tanda negative
* , /
Pekalian dan pembagian
Div
Pembagian integer
Mod
Modulo (sisa hasil bagi)
+ , -
Penambahan dan pengurangan

Keterangan:
¨      Operasi tanda negatif akan memberikan nilai negasi dari nilai yang disebutkan.
      Contoh: 5 + 10 = 5
¨      Operasi div akan menghasilkan nilai pembagian dalam bilangan bulat tanpa nilai pecahan
Contoh : 8 div 3 = 2
           4 div 5 = 0
           15 div 3 = 5
¨      Operasi mod akan menghasilkan nilai sisa hasil bagi
Contoh : 5 mod 2 = 1
        3 mod 5 = 3
        11 mod 5 = 1

Didalam proses operasi yang dilakukan dengan operator aritmatika, prioritas yang lebih tinggi akan dilaksananakan terlebih dahulu.
Contoh: 4 + 2 * 8
Proses operasi tersebut akan dilakukan dengan perkalian terlebih dahulu kemudian dilakukan proses penjumlahan. Hasil dari operasi tersebut adalah:
= 4 + 16
= 20

Untuk memberikan prioritas operasi yang lebih tinggi terhadap operator yang berprioritas rendah agar dikerjakan lebih dulu maka perlu adanya notasi penulisan dengan tanda kurung buka dan kurung tutup. Misalnya dari notasi yang telah dicontohkan diatas apabila proses penjumlahan ingin dilakukan lebih dulu dari pada proses perkalian maka notasi tersebut dapat diubah menjadi (4+2)*8 sehingga hasil yang diperoleh yaitu 8 * 8 = 64.
Operator aritmatika tersebut secara keseluruhan digunakan untuk melakukan proses perhitungan data-data numerik. Hanya ada satu operator yang digunakan untuk melakukan operasi terhadap jenis data yang lain yaitu untuk tipe string. Operator tersebut adalah penjumlahan (+) yang dapat digunakan untuk menggabungkan dua buah string.
Contoh :
NamaDepan:=’AGUS’
NamaBelakang:=’SETYIAWAN’
NamaLengkap :=NamaDepan + NamaBelakang;

3. Operator Logika

Operator logika adalah simbol-simbol yang digunakan untuk melakukan ekspresi terhadap data-data logika.  Proses operasi tersebut akan menghasilkan salah satu dari dua jenis nilai kebenaran yatu TRUE dan FLASE. Simbol-simbol operator logika tersebut dapat dilihat pada tabel 2.

Tabel 2.  Operator Logika
Operator
Keterangan
Not
Tidak
And
Dan
Or
Atau
Xor
Exclusive Or

Sebagaimana operator matematika, operator logika  juga memiliki urutan prioritas dalam melakukan prosesnya apabila dalam suatu pernyataan terdapat lebih dari satu operator.

a. Operator Not

Operasi not (lihat Tabel 3) merupakan operasi unary yang digunakan untuk sebuah nilai Boolean tunggal dan menghasilkan nilai kebalikanya (negasi). Jika sebuah ekspresi bernilai true kemudian diberikan operator not memakai akan menghasilkan nilai baru yaitu false.

Tabel 3.  Nilai kebenaran Operator NOT
Ekspresi
Hasil Operasi  NOT
True
False
False
True

Contoh:
A:=true;
B:=Not A;
Hasil yang ada pada variable B adalah FALSE.

b. Operator And

Operator and dilakukan untuk dua buah ekspresi Boolean. Operator and akan menghasilkan nilai true jika kedua ekspresi tersebut memiliki nilai true. Tabel 4 menunjukan hasil operasi and pada dua buah ekspresi Boolean.

Tabel 4.  Nilai kebenaran Operator And
Ekspresi1
Ekspresi2
Ekspresi 1 And Ekspresi2
False
False
False
False
True
False
True
False
False
True
True
True

Contoh:
A:=true;
B:=false;
C:=A and B
Variabel c mengandung nilai hasil operasi and yaitu false.

c. Operator Or

Operator Or dilakukan untuk dua buah ekspresi sebagimana operator and. Operator or akan manghasilkan nilai true apabila salah satu ekspresi bernilai true. Operator or akan menghasilkan nilai false apabila kedua ekspresi bernilai false. Tabel 5 merupakan tabel kebenaran yang menunjukan hasil operasi or.

Tabel 5. Nilai kebenaran Operator Or
Ekspresi1
Ekspresi2
Ekspresi 1 Or Ekspresi2
False
False
False
False
True
True
True
False
True
True
True
True

Contoh :
A:=true;
B:=false;
C:=A or B;
Variabel c mengandung nilai hasil operasi or yaitu true.

d. Operator Xor (Exclusive Or)

Sebagaimana operator and dan operator Or, operator Xor (lihat Tabel 6) juga merupakan operator yang digunakan untuk dua buah ekspresi. Operator Xor akan menghasilkan nilai true jka kedua ekpresi memiliki nilai yang berbeda. Operator xor akan menghasilkan nilai false jika kedua espresi bernilai sama.

Tabel 6.  Nilai kebenaran Operator XOr
Ekspresi1
Ekspresi2
Ekspresi 1 XOr Ekspresi2
False
False
False
False
True
True
True
False
True
True
True
False

Contoh:
A:=true;
B:=true;
C:=A Xor B
Variabel c mengandung nilai hasil operasi xor yaitu false.

4. Operator Relasi / Perbandingan

Operator relasi/perbandingan digunakan untuk membandingkan suatu data (ekspresi) dengan data (ekspresi) yang lain dan menghasilkan nilai logika (benar atau salah). Dua buah data atau ekspresi yang dibandingkan mempunyai tipe data yang sama. Tabel 7 merupakan daftar simbol-simbol operator perbandingan.

Tabel 7.   Operator Perbandingan
Operator
Keterangan
=
Sama dengan
<> 
Tidak sama dengan
Lebih kecil
Lebih besar
<=
Lebih kecil atau sama dengan
>=
Lebih besar atau sama dengan

Operasi perbandingan akan mengasilkan nilai kebenaran true jika pernyataannya bernilai benar dan akan menghasilkan nilai false apabila pernyataannya salah.
Contoh:
Tes = 5 > 4       ‘variabel tes berisi true’
A:=true;
B:=false;
C:=A=B;    
Variabel C berisi false karena A tidak sama dengan B

5. Operator Himpunan

Operator himpunan adalah operator yang digunakan untuk melakukan operasi terhadap data-data yang bertipe himpunan. Pada tipe data himpunan dapat diberlakukan beberapa operator yaitu interseksi, union, dan selisih. Selain operator tersebut, pada tipe data himpunan juga dapat diberlakukan operator perbandingan. Untuk memberikan gambaran yang jelas akan diberikan dua buah data himpunan yaitu:
  A:= [1,2,3,4,5,6]
  B:= [5,6,7,8,9,10]
Operator interseksi dinyatakan dengan symbol bintang (*). Operator ini akan menghasilkan himpunan anggota yang ada pada kedua himpunan tersebut. A*B akan menghasilkan himpunan anggota interseksi yaitu [5,6].
Operator union dinyatakan dengan symbol plus (+). Operator ini akan menghasilkan himpunan yang anggotaya adalah gabungan dari kedua himpunan. A + B akan menghasilkan himpunan yang anggotanya adalah gabungan dari himpunan A dan himpunan B yaitu [1,2,3,4,5,6,7,8,9,10]
Operator selisih dinyatakan dengan symbol minus (-). Operator ini akan menghasilkan himpunan yang anggotanya merupakan anggota himpunan pertama tetapi bukan anggota himpunan kedua. A – B akan menghasilkan himpunan yang anggotanya merupakan anggota himpunan A dan bukan anggota himpunan B yaitu [1,2,3,4]. B – A akan menghasilkan himpunan [7,8,9,10].
Untuk melakukan operasi perbandingan, pada tipe data himpunan dapat diberlakukan operator perbandingan yang telah dijelaskan pada bagian sebelumnya. Selain operator tersebut masih terdapat satu operator perbandingan yang ada pada data himpunan. Operator tersebut adalah operator in. Penggunaan operator in telah dijelaskan pada bagian tipe data himpunan.






Program pada umumnya dibuat untuk dapat menyelesaikan permasalahan tertentu. Sebagai contoh sebuah program kalkulator dibuat untuk menyelesaikan permasalahan yang berhubungan dengan perhitungan matematis atau perhitungan aritmatika.
Sebuah program dapat didesain dan dibuat dengan baik apabila permasalahan yang akan ditangani telah terdefinisi. Dari permasalahan yang telah didefinisikan dengan baik akan dapat diketahui data-data yang menjadi masukan sehingga proses dapat berjalan. Apabila proses telah berjalan dengan baik maka dapat dihasilkan informasi sebagai output dari pemrosesan data tersebut.
Setelah permasalahan didefinisikan dengan baik beserta dengan kebutuhan input dan output berikutnya dapat dilakukan desain algoritma yang berisi urutan input, proses dan output. Dari suatu algoritma dapat dilakukan pengkodean, debugging dan testing sehingga menghasilkan sebuah program. Namun sebelum meelakukan desain algoritma terlebih dahulu kita menganalisa permasalahan.
Didalam analisa permasalahan, harus dirumuskan dua hal yaitu input yang diperluakan dan output yang dihasilkan. Sebagai contoh permasalahan menghitung luas persegi panjang dapat diselesaikan apabila diketahui lebar dan panjang persegi panjang tersebut.
Dari analisa tersebut maka dapat dirumuskan hal-hal berikut:
Permasalahan:
            Menghitung luas persegi panjang
Input yang dibutuhkan:
            Panjang, lebar
Output yang dihasilkan
            Luas persegi panjang

Setelah memahami permasalahan dengan baik, seorang programmer kemudian akan menyusun strategi dan langkah-langkah untuk menyelesaikan masalah tersebut. Strategi untuk memecahkan sebuah pemasalahan yang sering dilakukan adalah dengan pendekatan teknik top down yaitu membagi permasalahan yang kompleks kedalam tingkatan yang lebih sederhana. Dengan demikian, dapat disusun langkah-langkah stategis untuk menyelesaikannya
Algoritma adalah urutan langkah-langkah logis yang digunakan untuk menyelesaikan masalah secara sistematis. Kata logis berarti langkah-langkah tersebut harus dapat ditentukan kebenaranya yaitu salah atau benar. Sebagai contoh permasalahan yang dapat dianalisa adalah mengitung luas persegi panjang. Dari permasalahan ini dapat dianalisa bahwa untuk menghitung luas sebuah persegi panjang dapat dilakukan dengan mengalikan  panjang dan lebar. Perkalian ini dapat dilakukan apabila panjang sebuah persegi panjang sudah diketahui dan lebar suatu persegi panjang juga sudah diketahui. Setelah proses perkalian maka informasi yang dapat dihasilkan adalah sebuah nilai yang menunjukan besarny luas persegi panjang tersebut.
Untuk merepresentasikan sebuah algoritma dapat dilakukan dengan tiga cara yaitu dengan bahasa natural (bahasa manusia), menggunakan grafik flowchart (diagram alir) dan menggunakan pseudocode. Algoritma bersifat netral dan dapat diterapkan kedalam bahasa pemrograman apa saja.

a.       Algoritma dengan bahasa natural
Algoritma dengan bahasa natral adalah algoritma yang representasikan dengan bahasa manusia sehari-hari. Urutan langkah-langkah dapat dijabarkan dengan memberikan nomer urut. Sebagai contoh algoritma untuk menghitung luas persegi panjang dapat diselesaikan dengan langkah-langkah sebagai berikut:
1).    Menentukan sisi panjang persegi panjang
2).    Menentukan sisi lebar persegi panjang
3).    Menghitung luas=Sisi panjang X Sisi lebar
4).    Menampilkan hasil perkalian (luas)
b.      Algoritma dengan flowchart
Flowchart merupakan algoritma dalam bentuk  diagaram secara grafis yang terdiri dari symbol-simbol yang memiliki arti tertentu. Symbol-simbol yang dapat digunakan dalam membuat flowchart dapat dilihat pada tabel 1.
Tabel 1. Simbol-simbol pada flowchart
Simbol
Nama
Keterangan
Terminator
Terminator adalah symbol yang digunakan untuk memberikan tanda awal dan akhir suatu diagram flowchart. Symbol ini biasanya diberi label start/ mulai untuk mengawali flowchart dan diberi label End/selesai untuk mengakhiri flowchart.
Input/Output
Symbol input digunakan untuk menunjukan data-data masukan yang dibutuhkan dalam menyelesaikan masalah sedangkan output merupakan informasi yang akan ditampilkan.


Nilai awal / inisialisai
Inisialisasi dilakukan untuk memberikan nilai awal pada suatu variabel. Inisialisasi biasanya diberikan sebelum proses dilakukan.
Proses
Simbol proses digunakan untuk menunjukan kegiatan pemrosesan data. Di dalam simbol ini dapat dituliskn operasi-operasi yang berlaku.
Percabangan / kondisi
Simbol percabangan digunakan untuk menyatakan sebuah kondisi. Pengecekan dapat dilakukan untuk melihat suatu keadaan. akan terdapat dua kemungkinan yaitu tepenuhi atau tidak.


Arah / Garis Alir
Arah/garis alir menunjukan kemana langkah berikutnya harus dijalankan dan berfungsi menghubungkan setiap langkah didalam flowchart.
Konektor / sambungan
Konektor digunakan untk menghubungkan suatu langkah dengan langkah yang lain. Konektor biasanya digunakan ketika sebuah aliran diagram terputus karena keterbatasan media dalam menggambarkan grafik flowchart. Pemberian label pada konektor yang memutus aliran diagram harus sama.


Berikut adalah simbol simbol flowchart yang harus diketahui :


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 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 penyimpanan yang 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)
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 magnetic-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 dokumen (symbol yang menyatakan input berasal dari dokumen dalam bentuk kertas atau output dicetak ke kertas)

Dari simbol-simbol yang ada pada tabel 1. Langkah-langkah untuk menyelesaikan perhitungan luas persegi panjang dapat digambarkan sebagai berikut:
            Flowchart luas persegi panjang
c.       Algoritma dengan pseudocode
Pseudocode merupakan istilah yang mendekati dengan bahasa pemrograman. Algoritma dengan pseudocode dilakukan dengan merepresentasikan algoritma dengan istilah-istilah yang mendekati bahasa pemrograman. Contoh dari permasalahan pada bagian sebelumnya yaitu untuk menghitung luas sebuah persegi panjang dapat dibuat algoritma dengan menggunakan pseudocode sebagai berikut:
Algoritma menghitung luas persegi panjang

Deklarasi
       Panjang,lebar,luas : integer
Deskripsi
       Mulai
       Read(panjang)
       Read(lebar)
       Luas ß panjang * lebar
       Write(luas)
       Selesai
Pada pembuatan algoritma dengan pseudocode secara umum struktur algoritma tersebut terdri dari tiga bagian. Bagian yang pertama yaitu bagian nama algoritma. Deklarasi sebagai bagian kedua berisi daftar variabel yang terlibat dalam algoritma tersebut. Bagian ketiga adalah bagian deskripsi yang berisi langkah-langkah dalam menyelesaikan suatu permalahan.

PEDOMAN-PEDOMAN DALAM MEMBUAT FLOWCHART
Jika seorang analis dan programmer akan membuat flowchart, ada beberapa petunjuk yang harus diperhatikan, seperti :
  1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan.
  2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat dimengerti oleh pembacanya.
  3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
  4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja.
  5. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
  6. Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri dengan hati-hati. Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak perlu digambarkan pada flowchart yang sama.
  7. Simbol konektor harus digunakan dan percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya bila percabangannya tidak berkaitan dengan sistem.
  8. Gunakan simbol-simbol flowchart yang standar.









algoritma , apa sih algoritma itu ?? sepenting apakah sih algoritma itu ??
pertanyaan itu yang ada dalam pikiran saya kawan, ketika mau belajar bahasa pemrogaman , ternyata memang benar kawan algoritma ini memang penting kawan , kenapa jika anda membuat suatu program tanpa algoritma, rasanya sangat sulit kawan
lalu apakah sebenarnya sih algoritma itu sendiri ??
Algoritma itu adalah urutan langkah langkah dalam menyelesaikan suatu permasalahan yang disusun secara sistematis dan logis, mungkin sulit kalau hanya pengertiannya algoritma tersebut
begini kawan contohnya saja ,anda akan membuat program yang berguna untuk menghitung luas dari sebuah persegi panjang , sebelumnya anda harus membuat sebuah algoritma dari program tersebut :

algoritmanya ( langkah - langkah )

1.mulai ( setiap awal algoritma harus ada "mulai")
2.masukkan panjang
3.masukkan lebar
4.proses menghitung
luas = panjang x lebar
5.hasil luas persegi panjang
6.selesai ( diakhir harus ada kata selesai karena di awal ada kata mulai )

nah seperti itu kawan , algoritma tidaklah sulit , dan memang sangat diperlukan sebagai alur dari penyelesaian sebuah permasalahan



flowchart


flowchart ?? apa lagi itu ??
flowchart adalah diagram alur , dimana setelah anda membuat sebuah algoritma anda juga harus membuat flowchart juga , flowchart digunakan untuk menggambarkan sebuah alur dari program tersebut,flowchart juga biasanya digunakan untuk bahan presentasi alur dari cara kerja program kita yang digunakan untuk mempermudah orang awam untuk mengerti alur kerja program kita
flowchart memiliki simbol tertentu antara lain


didalam tabel tersebut berisi simbol simbol yang dipakai dalam pembuatan diagram alur ( flowchart )
, contoh kita akan membuat flowchart cara menghitung luas persegi panjang , yang sebelumnya telah kita buat algoritmanya :

Algoritma

1.mulai ( setiap awal algoritma harus ada "mulai")
2.masukkan panjang
3.masukkan lebar
4.proses menghitung
luas = panjang x lebar
5.hasil luas persegi panjang
6.selesai ( diakhir harus ada kata selesai karena di awal ada kata mulai )


Flowchart


keterangan :

- awal dari flowchart kita mulai dengan ( " START ")
- Lalu selanjutnya kita melakukan pendeklarasian variabel apa saja yang kita gunakan
dalam hal ini adalah (" Panjang , Lebar , Luas ")
- langkah selanjutnya adalah memasukkan panjang dan lebar
- selanjutnya kita akan menghitung Luas
Luas = panjang x lebar
- setelah proses perhitungan , maka akan muncul output dalam hal ini (" Luas ")
- dan flowchart akan diakhiri dengan perintah END


Mudah kan kawan membuat flowchart , dimana dengan flowchart ini akan memudahkan anda mempresentasikan hasil program yang anda buat, ya demikian kawan pengenalan dari algoritma dan flowchart , semoga bisa bermanfaat buat teman teman ,salam sukses selalu








VII. PERINTAH SELEKSI DALAM PASCAL

Bahasa pemrograman Pascal memiliki kemampuan untuk melakukan pemilihan terhadap beberapa alternatif yang ada. Sebuah aksi atau statemen akan dilaksanakan apabila sebuah kondisi terpenuhi. Pemilihan ini tidak hanya berlaku untuk satu buah kondisi tetapi juga dapat beberapa kondisi.

A. Perintah Seleksi If … Then …

Kondisi merupakan ekspresi yang bernilai logika yaitu bernilai benar atau salah. Jika pernyataan yang akan dieksekusi oleh If ketika kondisi bernilai benar hanya berupa sebuah pernyataan, maka dapat dituliskan dalam satu baris sebagai berikut :

If < kondisi 1 > Then < pernyataan >

Contoh

If nilai>75 Then Writeln(‘A’);

Jika pernyataan yang akan dieksekusi oleh If ketika kondisi bernilai benar namun berupa beberapa pernyataan, maka di awal pernyataan harus diawali dengan begin dan di akhir pernyataan yang terakhir harus diakhiri dengan end. Struktur perintah seleksi tersebut adalah sebagai berikut :

If < kondisi 1 > Then
Begin
   < pernyataan_1 >
   < pernyataan_2 >
                End;

Contoh

If nilai>75 Then
Begin
   Writeln(‘A’);
      Writeln(‘Anda Lulus’);
End;

B. Perintah Seleksi If … Then … Else

Struktur perintah seleksi If … Then ... Else memungkin programmer melakukan spesifikasi untuk menyatakan kondisi yang benar dan salah. Kondisi merupakan ekspresi yang bernilai logika yaitu bernilai benar atau salah. Jika pernyataan yang akan dieksekusi oleh If ketika kondisi bernilai benar hanya berupa sebuah pernyataan :
Flowchart Perintah Seleksi If … Then … Else

Struktur Perintah Seleksi If … Then … Else

If < kondisi 1 > Then
pernyataan
       Else
    Pernyataan;

Jika hanya terdapat satu pernyataan pada kondisi pertama maka tidak menggunakan titik koma diakhir pernyataan tersebut. Jika hanya ada satu pernyataan setelah else maka diakhir pernyataan tersebut menggunakan titik koma.

Contoh
Membuat Program Kelulusan. Jika nilai lebih atau sama dengan 60 maka cetak lulus. Jika tidak cetak tidak lulus.
Flowchart
Program
If nilai>=60 Then
Writeln(’Lulus’)
Else
Writeln(’Tidak Lulus’);


Jika pernyataan yang akan dieksekusi oleh If ketika kondisi bernilai benar dan berupa beberapa pernyataan, maka dapat dituliskan sebagai berikut :

If < kondisi 1 > Then
Begin
Pernyataan_1
Pernyataan_2
       End
       Else
       Begin
Pernyataan_1
Pernyataan_2
End;

Jika ada dua atau lebih pernyataan di dalam if … then … else … maka harus diawali dengan Begin dan End. End Sebelum else tidak menggunakan titik koma. Namun Pernyataan didalam begin dan end diakhiri dengan titik koma. Sedangkan End terakhir menggunakan titik koma.

Contoh :
Membuat Program Kelulusan. Jika nilai lebih atau sama dengan 60 maka cetak ’Lulus’ dan cetak ’Anda dapat sertifikat’. Jika tidak cetak ’Tidak lulus’ dan cetak ’Anda tidak mendapat sertifikat’.
Flowchart
Program

If nilai>=60 Then
Begin
Writeln(’Lulus’);
Writeln(’Anda dapat Sertifikat’);
End;
Else
Begin
   Writeln(’Tidak Lulus’);
   Writeln(’Anda tidak dapat Sertifikat’)
End;

Berikut adalah struktur if ... then ... else ... jika ada tiga kondisi atau lebih :

If < kondisi 1 > Then
Pernyataan
       Else If < kondisi 2 > Then
   Pernyataan
       Else
    Pernyataan;

Selama menemukan else di dalam struktur if ... then … maka pernyataan tidak diakhiri dengan titik koma atau jika didalamnya terdapat dua pernyataan atau lebih dan menemukan else maka End juga tidak diakhiri dengan titik koma.

Flowchart
Program
If nilai > 85 Then
Writeln(‘A’)
Else If nilai > 75 Then
       Writeln(‘B’)
Else If nilai > 60 Then
       Writeln(‘C’)
Else If nilai > 50 Then
       Writeln(‘D’)
Else
       Writeln(‘E’);


C. Perintah Seleksi Case - Of

Pernyataan case .. of merupakan perluasan dari pernyataan if. Untuk pemilihan yang terdiri dari banyak kondisi, struktur if melakukan pengecekan terhadap setiap kondisi, bila satu kondisi tidak terpenuhi baru akan dilanjutkan pada kondisi yang berikutnya. Berbeda dengan pernyataan if, penyataan case melakukan pengecekan dengan pemilihan kondisi yang sesuai parameter yang ada.


Pernyataan case dapat dituliskan dengan struktur sebagai berikut:
Case < kondisi > Of
Nilai_1 : Pernyataan_1;
Nilai_2 : Pernyataan_2;
Nilai_3 : Pernyataan_3;
   Nilai_n : Pernyataan_n;
End ; { end dari case }

Nilai pada pernyataan case dapat berupa konstanta, range dari konstanta  yang bukan bertipe real. Pada program dibawah nilai berupa huruf.

Program nilai;
Var nil : Char ;
Begin
Write ('Nilai Numerik yang didapat :');
Readln (nil);
Case nil Of
'A': Writeln ('Sangat Baik’);
'B': Writeln('Baik’);
'C': Writeln('Cukup');
'D': Writeln('Kurang');
'E': Writeln('Sangat Kurang');
End;
End.
hasil :
Nilai Numerik yang didapat : B (Input)
Baik
Pada program dibawah nilai berupa angka.
Program Hari;
Var h : angka ;
Begin
Write ('Ini Angka :');
Readln (h);
Case h Of
1: Writeln ('Satu');
2: Writeln('Dua');
3: Writeln('Tiga');
4: Writeln('Empat');
5: Writeln('Lima');
End;
End.
hasil :
Ini Angka : 1
Satu









VIII. PERINTAH PERULANGAN
Perulangan adalah suatu proses terhadap hal yang sama yang diulang beberapa kali sampai suatu kondisi atau batas tertentu terpenuhi dan merupakan salah satu operasi dasar algoritma yang sangat penting. Struktur perulangan digunakan untuk mengulang sebagian rutin sehingga tidak perlu menulis ulang rutin sebanyak pengulangan yang diinginkan. Hampir semua aplikasi untuk tujuan tertentu terdapat operasi dasar pengulangan, bentuknya antara lain For ... To ... Do, While … Do, Repeat Until …

A. Perulangan For ... To ... Do

Merupakan konstruksi perulangan tanpa kondisi (unconditional looping), artinya perintah-perintah yang ada di dalam badan perulangan diulangi sejumlah kali yang dispesifikasikan oleh pemrogram. Jadi, jumlah perulangan sudah diketahui/ dapat dtentukan sebelum konstruksi pengulangan eksekusi. Nilai awal pengulangan, kenaikan pengulangan dan nilai akhir pengulangan terdapat dalam sintaks For.
Flowchart  Struktur Perulangan For ... To ... Do


Aturan penulisan For ... To … Do adalah sebagai berikut :

For Variabel:=NilaiAwal To NilaiAkhir Do
        Pernyataan;
           
Keterangan:
§  Variabel adalah variabel dengan tipe numerik yang akan dipakai sebagai tempat menghitung proses pengulangan.
§  NilaiAwal adalah nilai awal dari variabel penghitung.
§  NilaiAkhir adalah nilai akhir dari variabel penghitung.
§  Selang adalah selang peningkatan atau penurunan dari variabel penghitung. Jika positif, maka selangnya adalah peningkatan dan jika negatif selangnya adalah penurunan.
§  Pernyataan digunakan untuk menuliskan baris program yang akan diulang.

Berikut adalah contoh untuk menentukan barisan bilangan 1, 2, … ,5 maka bilangan mempunyai nilai awal=1, nilai akhir = 5.
    
Flowchart
Program
For bilangan = 1 To 5 Do
    Write(bilangan); 

Output :
12345


            Untuk menentukan barisan bilangan 5,4,...,1 maka bilangan mempunyai nilai awal=5, nilai akhir = 1.
Flowchart
Program
For bilangan = 5 DownTo 1 Do
    Write(bilangan); 

Output :
54321


Jika didalam perulangan for ada dua pernyataan atau lebih maka struktur for adalah sebagai berikut :

For Variabel=NilaiAwal To NilaiAkhir Do
      Begin
            Pernyataan_1;
            Pernyataan_2;
           
            Pernyataan_n;
      End;

Contoh :
Mencetak angka 1 sampai dengan 3 yang berurutaan dan diikuti oleh kalimat ‘Saya suka programming’

Flowchart
Program
For bilangan = 1 To 3 Do
Begin
  Write(bilangan,’ ‘);
  Writeln(‘Saya suka programming’);
End; 

Output :
1 Saya suka programming
2 Saya suka programming
3 Saya suka programming






B. Perulangan While ... Do

Perulangan While ... Do biasanya dipakai apabila jumlah perulangan belum diketahui, dan nilai awal perulangan harus diinisialisasi (diberi nilai) dahulu. Dalam program terdapat counter untuk menaikkan nilai perulangan.
Flowchart Struktur Perulangan While ... Do sebagai berikut :
Struktur perulangan While ... Do sebagai berikut :

<inisialisasi>
While <kondisi perulangan> Do
Begin
<pernyataan>
<counter>
End;


            Keterangan :
§  Inisialisasi untuk memberikan nilai awal proses perulangan
§  While adalah pernyataan pengulangan selama kondisi benar.
§  Kondisi (bersifat opsional). Ekspresi numerik atau string yang menghasilkan dua nilai logika benar atau salah.
§  Pernyataan digunakan untuk menuliskan baris program yang akan diulang.
§  Counter untuk menaikkan nilai perulangan
§  Begin dan End untuk menyatakan terjadinya perulangan

Contoh :
Membuat program menampilkan angka satu sampai lima.

Flowchart
Program
i:=1;
While i<=5 Do
Begin
   Write(i);
   i:=i+1;
End;

Output :
12345




C. Perulangan Repeat Until ...

Struktur Repeat Until ... seperti perulangan While ... Do tetapi pemeriksaan kondisi berada di bawah. Perulangan Repeat Until ...biasanya dipakai apabila jumlah perulangan belum diketahui, dan nilai awal perulangan harus diinisialisasi (diberi nilai) dahulu. Dalam program terdapat counter untuk menaikkan nilai pengulangan.




Flowchart Struktur Repeat Until ... adalah berikut ini :
Struktur Repeat Until ... adalah berikut ini :
<inisialisasi>
Repeat
Begin
<counter>
<pernyataan>
End;
Until <kondisi perulangan>;


            Keterangan :
§  Inisialisasi untuk memberikan nilai awal proses perulangan
§  Repeat Until adalah pernyataan pengulangan selama kondisi benar.
§  Kondisi (bersifat opsional). Ekspresi numerik atau string yang menghasilkan dua nilai logika benar atau salah. Operator kondisi berlawanan dengan While ... Do.
§  Pernyataan digunakan untuk menuliskan baris program yang akan diulang.
§  Counter untuk menaikkan nilai perulangan
§  Begin dan End untuk menyatakan terjadinya perulangan
Contoh :
Membuat program menampilkan angka satu sampai lima.

Flowchart
Program
i:=1;
Repeat
Begin
   Write(i);
   i:=i+1;
End;
Until i>5;

Output :
12345




























IX. ARRAY

Array (larik) adalah sebuah variabel yang dapat menyimpan lebih dari satu nilai sejenis (memilikii tipe data sama). Hal ini berbeda dengan variabel biasa yang hanya mampu menampung satu buah nilai. Setiap nilai yang disimpan di dalam array disebut dengan elemen array, sedangkan nilai urut yang digunakan untuk mengakses elemennya disebut dengan indeks array. Sebagai contoh, misalkan terdapat array A yang memiliki 10 buah elemen nilai yang bertipe integer, maka dapat dipresentasikan sebagai berikut :

Gambar 1.1 Komponen Array (sumber :Rahardjo)

Setiap elemen array di atas menyimpan nilai bertipe integer dan akan menempati alamat memori yang berbeda, hal ini akan menyebabkan array tersebut memiliki ukuran 40 byte, yang berasal dari 10 x 4. Nilai 10 menunjukkan banyaknya elemen array sedangkan nilai 4 merupakan ukuran dari tipe data integer (dalam 32 bit).
1)        Deklarasi Array
Sama seperti variabel lain, array juga dideklarasikan di dalam bagian deklarasi variabel. Bila akan didefinisikan sebagai tipe bentukan, maka array juga akan dideklarasikan di bagian definisi tipe (di bawah kata kunci type). Dalam bahasa Pascal, pendeklarasian array dilakukan dengan menggunakan kata kunci array dan tipe data yang akan disimpan di dalamnya, selai itu juga harus disertai dengan batas-batas indeksnya yang diapit oleh tanda bracket ([ ]). Berikut ini bentuk umum pendeklarasian array.

                        NamaArray : array [Indeks Awal  . .  IndeksAkhir] of tipe data;
Gambar 1.2 Bentuk Umum Pendeklarasian array(sumber:Rahardjo)

Sebagai contoh, apabila ingin mendeklarasikan array dengan nama A yang berisi 10 buah elemen bertipe integer, maka harus mendeklarasikannya dengan cara berikut.

Var
A : array [1 . . 10] of integer;

Pada kode tersebut, indeks array diulai dari satu. Perlu diperhatikan bahwa bahasa Pascal berbeda dengan bahasa C yang indeks array-nya selalu dimulai dari nol. Pada bahasa Pascal, indeks array dapat dimulai dari bilangan berapapun. Selain itu, indeks array juga dapat bertipe karakter maupun tipe enumerasi. Berikut ini contoh-contoh kode yang dapat digunakan untuk mendeklarasikan 10 buah elemen array bertipe integer sebagai pengganti kode di atas.

Var
A1 : array [0 . . 9] of integer;
A2 : array [5 . . 15] of integer;
A3 : array [’a’ . . ’j’] of integer;
A4 : arrat [’A’ . . ’J’] of integer;

Dalam bahasa Pascal, tersedia dua buah fungsi yang dapat digunakan untuk mengambil indeks terendah dan tertinggi dari sebuah array, yaitu fungsi Low dan High. Adapun parameter dari kedua fungsi tersebut adalah nama array yang akan dicari indeksnya. Perhatikan contoh kode berikut.

Var
A: array [1 . . 100] of integer;
terendah, tertinggi : integer;
Begin
terendah := Low (A);        {akan menghasilkan nilai 1}
tertinggi := High (A)         {akan menghasilkan nilai 100}
 . .
end.
1)      Mengakses Elemen Array
Setelah mengetahui cara pendeklarasian array, selanjutnya harus mengetahui bagaimana cara untuk memanipulasi array tersebut. Langkah pertama yang harus dilakukan adalah mengisikan nilai ke dalam elemen-elemen array bersangkutan. Bentuk umum untuk pengisian elemen array adalah sebagai berikut.
NamaArray [indeks] := nilai;
Gambar 1.3 Bentuk Umum Pengisian Elemen Array(sumber:Rahardjo)

Untuk lebih memahaminya, coba perhatikan contoh kode di bawah ini.
Var
A: array [1..100] of integer;
Begin
A[1] :=1;                {mengisi elemen pertama dengan nilai 1}
A[2] :=2;                {mengisi elemen kedua dengan niali 2}
A[3] :=3;                {mengisi elemen ketiga dengan niali 3}
....
A[100] :=100;       {mengisi elemen keseratus dengan nilai 100}
end.

Kode tersebut akan melakukan pengisian 100 elemen array dengan nilai 1 sampai 100 sehingga kode tersebut akan lebih sederhana apabila dituliskan dengan menggunakan struktur pengulangan seperti yang terlihat pada kode berikut.

Var
A: array [1..100] of integer;
i  : integer;
Begin
For  i:= 1 to 100 do
Begin
A[1] := i;               
end;
End.




2)      Mengapa Harus Menggunakan Array
Apabila akan membuat program untuk menyimpan sekumpulan data, misalnya data-data hasil penelitian yang berupa bilangan, dimana jumlah dari data tersebut puluhan, ratusan atau bahkan ribuan, apakah akan menggunakan variabel sebanyak data yang ada? Jawabannya tentu tidak, karena hal tersebut merupakan hal yang sangat tidak efisien. Sebagai contoh, asumsikan bahwa banyak data tersebut.

Var
N1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : real;
Begin
Writeln(’masukkan data ke-1 :  ’); readln(n1);
Writeln(’masukkan data ke-2 :  ’); readln(n2);
Writeln(’masukkan data ke-3 :  ’); readln(n3);
Writeln(’masukkan data ke-4 :  ’); readln(n4);
Writeln(’masukkan data ke-5 :  ’); readln(n5);
Writeln(’masukkan data ke-6 :  ’); readln(n6);
Writeln(’masukkan data ke-7 :  ’); readln(n7);
Writeln(’masukkan data ke-8 :  ’); readln(n8);
Writeln(’masukkan data ke-9 :  ’); readln(n9);
Writeln(’masukkan data ke-10 :  ’); readln(n10);
End.

Hal ini tentu akan merepotkan diri. Apabila dilihat, program di atas memang masih pendek karena datanya hanya 10, bagaimana bila ratusan ata bahkan ribuan? Untuk mengatasi masalah ini, seharusnya menggunakan array untuk menyimpan data-data tersebut sehingga program akan jauh lebih sederhana dan mudah dalam pengerjaannya. Berikut ini perbaikan program di atas apabila kita menampung data-datanya ke dalam sebuah array.

Const max = 10;
Var
n : array [1 . . max] of real;
i : integer;
begin
for i:= 1 to max do
writeln(’Masukkan data ke-’, i,’  :  ’); readln(n[i]);
end.

Apabila ternyata data berjumlah 100 atau 1000, maka kita hanya perlu mengganti nilai dari konstanta max di atas dengan nilai yang sesuai. Alasan seperti inilah yang menyebabkan kita perlu untuk menggunakan array.

3)      Array Sebagai Tipe Data Bentukan
Array juga dapat digunakan sebagai tipe data bentukan, yaitu dengan cara mendeklarasikannya di bagian definisi tipe data, yaitu bagian yang diawali dengan kata kunci type.

Type
Bilangan = array [1 . . 100] of integer;
Vokal = array [1 . . 5] of char;

Setelah selesai mendefinisikan array tersebut, maka dapat menggunakannya untuk mendeklarasikan variabel lain di dalam program. Berikut ini contoh pendeklarasian variabel yang menggunakan tipe bentukan berupa array.

Var
X : bilangan;
Vowel : vokal;

Pada ontoh di atas mendeklarasikan variabel dengan nama x yang bertipe Bilangan, sedangkan variabel vowel bertipe vokal. Hal ini menyebabkan variabel tersebut juga dapat diperlukan sebagai array. Berikut ini contoh kode yang menunjukkan penggunaan variabel-variabel tersebut.

Begin
X[1[ := 1;
X[2] := 2;
. . .
Vowel [1] := ’a’;
Vowel [2] := ’i’;
. . .
End.


4)      Array Konstan

Nilai yang terkandung di dalam sebuah array dapat bernilai konstan, artinya nilai-nilai tersebut tidak dapat diubah. Untuk melakukan hal tersebut, kita harus mendeklarasikan array bersangkutan dengan kata kunci const. Berikut ini bentuk umum pendeklarasiannya.

Const
         NamaArray : array [indexAwal . . indeksAkhir] of tipe_data =  Nila1, nilai2, ...);
Gambar 1.4 Bentuk Umum Pendeklarasian Array Konstan (sumber:Rahardjo)

Perlu diperhatikan bahwa banyaknya nilai konstan yang dituliskan diatas harus sesuai dengan banyaknya elemen array yang didefinisikan. Sebagai contoh, apabila ingin mendeklarasikan array dengan jumlah elemen 5, maka nilai konstan yang diisikan juga haruslah berjumlah 5. Perhatikan contoh kode berikut.

Const
A : array [1 . . 5] of char = (’A’ , ’B’ , ’C’ , ’D’ , ’E’);

Oleh karena array A di atas bersifat konstan, maka kita tidak dapat menggantikan nilainya dengan nilai lain, seperti yang ditunjukkan oleh kode di bawah ini.

A [1]           := ’V’ ; {SALAH, karena elemen A [1] selalu bernilai ’A’}
A [2]           := ’W’ ; {SALAH, karena elemen A [2] selalu bernilai ’B’}
A [1]           := ’X’ ; {SALAH, karena elemen A [3] selalu bernilai ’C’}
A [1]           := ’Y’ ; {SALAH, karena elemen A [4] selalu bernilai ’D’}
A [1]           := ’Z’ ; {SALAH, karena elemen A [5] selalu bernilai ’E’}

Hal ini menunjukkan bahwa array konstan nilainya hanya dapat dibaca, namun tidak untuk diubah. Agar lebih memahami konsepnya, perhatikan contoh implementasi dari array konstan berikut ini.
                
Function HariSekarang : string;
Const
Hari : array[0 . .6] of string[6] =
            (’Minggu’,  ’Senin’,  ’Selasa’,  ’Rabu’,  ’Kamis’,  ’Jumat’,  ’Sabtu’);
var
thn, bln, hr, indeksHari : word;
begin
getDate(thn, bln, hr, indeksHari);
HariSekarang := Hari [indeksHari];
End;

Pada contoh di atas membuat sebuah fungsi untuk mendapatkan nama hari sesuai dengan tanggal sekarang (hari ini). Berikut ini contoh program lain yang akan menunjukkan penggunaan array konstan.

Program ArrayKonstan;
Uses crt;
Const
Bulan : array [1 . . 12] of string =
              (’Januari’, ’Februari’, ’Maret’, ’April’, ’Mei’, ’Juni’, ’Juli’, ’Agustus’,
               ’September’, ’Oktober’, ’Nopember’, ’Desember’);
var
noBulan : integer;
begin
clrscr;
write(’Masukkan nomor bulan :’); readln(noBulan);
write(’Nama bulan ke-’, noBulan,  ’adalah  ’, Bulan[noBulan]);
readln;
end.

Contoh hasil yang akan diberikan oleh program di atas adalah sebagai berikut.

Masukkan nomor bulan : 3
Nama bulan ke-3 adalah Maret

5)     Array Sebagai Parameter
Pada kasus-kasus pemrograman tertentu kita juga dituntut untuk menggunakan array sebagai parameter sebuah prosedur ataupun fungsi. Hal ini sering kita jumpai pada saat kita akan melakukan pencarian maupun pengurutan dari sekumpulan data. Berikut ini contoh penggunaan array di dalam sebuah prosedur.

Type
Bilangan = array[1..100] of integer;
Procedure inputArray[a:bilangan; N:integer);
Var
i : integer;
Begin
For i := 1 to N do
Write (’masukkan elemen array ke-’, i); readln(A[i]);
End;

Pada contoh di atas kita te;ah membuat prosedur yang memiliki parameter bertipe array. Prosedur tersebut akan digunakan untuk melakukan pengisian elemen array sebanyak N, dimana 1£ N £ 100.
Perlu diperhatikan bahwa array yang dilewatkan sebagai parameter ini harus dideklarasikan terlebih dahulu. Berikut ini contoh penggunaan array yang tidak diperbolehkan oleh kompiler.

Procedure InputArray [A:array[1..100] of integer; N);                           {salah}

Berikut ini kode yang merupakan perbaikan dari kode sebelumnya.

Procedure InputArray [A:array of integer; N);                         {benar}

Untuk lebih memahaminya, perhatikan contoh program di bawah ini dimana kita akan menggunakan array sebagai parameter.

Program ParamArray;
Uses crt;
Const max = 100;]type
Bilangan = array [1 . . max] of integer;
Procedure InputArray[A:bilangan; N:integer);
Var
i:integer;
Begin
Writeln (’Memasukkan data :’);
For i : 1 to N do
Write(’Masukkan nilai A[’, i,  ’] : ’); readln(A[i]);
End;
Procedure OutputArray (A:bilangan; N:integer);
Var
i:integer;
begin
writeln(’Menampilkan data :’);
for i : 1 to N do
write (’A[’, i,  ’] = ’, A[i]);
end;
var
Arr:bilangan;
count:integer;
Begin
Clrscr;
Write (’Masukkan banyaknya elemen array :’); readln(count);
Writeln;
OutputArray (Arr, count);
Readln;
End.

Contoh hasil yang akan diberikan dari program di atas adalah sebagai berikut.

Masukkan banyaknya elemen array : 3
Memasukkan data :
Masukkan nilai A[1] : 10
Masukkan nilai A[2] : 20
Masukkan nilai A[3] : 30

Menampilkan data :
A[1] = 10
A[2] = 20
A[3] = 30

6)      Array Multidimensi
Sejauh ini kita baru membahas mengenai array berdimensi satu. Pada bagian ini kita akan mempelajari bagaimana cara mendeklarasikan dan memanipulasi data yang terdapat pada array multidimensi. Agar lebih mempermudah pembahasan, materi ini akan dibagi menjadi dua kelompok, yaitu array dua dimensi dan array tiga dimensi.

7)     Array Dua Dimensi
Array dua dimensi adalah array yang memiliki dua buah elemen bertipe array. Dengan kata lain, array dua dimensi memiliki dua buah subskrip, yang biasanya dipresentasikan dengan baris dan kolom. Untuk lebih memahami konsepnya, perhatikan terlebih dahulu gambar di bawah ini.



Gambar 1.5. Array dua dimensi (sumber:Rahardjo)

Pada gambar di atas, array memiliki 3 buah baris dan 4 buah kolom, sehingga jumlah elemennya adalah 3x4 = 12. Perlu diketahui bahwa keadaan tersebut sebenarnya hanya merupakan keadaan logik yang bertujuan untuk mempermudah pemahaman array dua dimensi. Pada kenyataannya, pengalamatan memori di komputer dari array dua dimensi tetap akan dipresentasikan dengan sebuah deretan larik yang memanjang (tidak berbentuk baris dan kolom). Pendeklarasian array dua dimensi di dalam bahasa Pascal dilakukan melalui bentuk umum di bawah ini.

NamaArray : array [1 . . banyakbaris, 1 . . banyakkolom] of tipe_data;

Sebagai contoh, apabila kita akan mendeklarasikan array dua dimensi dengan 3 buah baris dan 4 buah kolom dimana setiap elemennya bertipe integer, maka kita dapat menuliskan kode seperti berikut.

Array2D : array [1 . . 3, 1 . . 4] of integer;

Untuk melakukan pengaksesan terhadap elemen-elemennya, kita harus menuliskan indeks baris dan kolomnya. Sebagai contoh, apabila kita ingin mengisikan nilai 100 ke dalam elemen yang terdapat pada baris ke-2 kolom ke-3, maka kita harus menuliskannya sebagai berikut.

Array2D [2, 3] : = 100;
Berikut ini contoh program yang menunjukkan penggunaan array dua dimensi. Di sini kita akan membuat program yang dapat menjumlahkan dua buah matriks A dan B yang masing-masing berordo 2 x 3 (memiliki 2 baris dan 3 kolom).

Program JumlahMatriks;
Uses crt;
Const
Jbaris = 2;
Jkolom = 3;
Type
Matriks23 = array [1 . . Jbaris, 1 . . Jkolom] of integer;
Var
A,B,C : Matriks23;
j, k : integer;
begin
clrscr;
{mengisikan matriks A}
writeln (’Matriks A’);
for j: = 1 to Jbaris do begin
for k: = 1 to Jkolom do begin
write(’A[’, j,  ’ , ’ , k,  ’] = ‚); readln(A[j, k]);
end;
writeln;
end;
writeln;
{mengisikan matriks B}
writeln(’Matriks B’);
for j: = 1 to Jbaris do begin
for k: = 1 to Jkolom do begin
write(’B[’, j,  ’ , ’ , k,  ’] = ‚); readln(B[j, k]);
end;
writeln;
end;
writeln;
{melakukan penjumlahan matriks A dan B sekaligus menampilkan hasilnya ke layar}
writeln(’Hail Penjumlahan’);
for j: = 1 to Jbaris do begin
for k: = 1 to Jkolom do begin
C[j, k] : = A[j, k] + B[j, k];
write(’C[’, j,  ’ , ’ , k,  ’] = ‚); readln(C[j, k]);
end;
writeln;
end;
readln;
end.

Contoh hasil yang akan diberikan oleh program di atas adalah sebagai berikut.

Matriks A

A[1, 1] = 1
A[1, 2] = 2
A[1, 3] = 3

A[2, 1] = 4
A[2, 2] = 5
A[2, 3] = 6

Matriks B
B[1, 1] = 3
B[1, 2] = 2
B[1, 3] = 1

B[2, 1] = 6
B[2, 2] = 5
B[2, 3] = 4

Hasil Penjumlahan
C[1, 1] = 4
C[1, 2] = 4
C[1, 3] = 4

C[2, 1] = 10
C[2, 2] = 10
C[2, 3] = 10












X. PROSEDUR DAN FUNGSI

A. Procedure

1)        Konsep Pemrograman Moduler

Dalam membuat program besar dan kompleks, si pemrogram perlu memecah program menjadi beberapa sub program yang lebih kecil. Tiap sub program kadangkala cukup independen dari program utama sehingga programnya dapat dirancang tanpa mempertimbangkan konteks tempat di mana sub program tersebut digunakan. Tiap sub program, yang disebut modul dapat dirancang oleh pemrogram selain dari orang yang mengembangkan program utama. Modul yang sudah ditulis dapat dipasang ke program lain yang membutuhkannya. Teknik pemrograman seperti ini dinamakan teknik pemrograman modular. Beberapa bahasa pemrograman termasuk Pascal menamakan modul dengan sebutan rutin, prosedur atau fungsi.
Modularisasi program memberikan 2 (dua) keuntungan. Pertama, untuk aktivitas yang harus dilakukan lebih dari satu kali, modularisasi menghindari penulisan teks program yang sama secara berulangkali.Di sini, modul program cukup ditulis sekali saja, lalu modul tersebut dapat diakses dari bagian lain di dalam program.Di sini, penggunaan modul program dapat mengurangi panjang program.
Keuntungan kedua dari modularisasi adalah kemudahan menulis dan menemukan kesalahan program. Kemudahan menulis akan sangat berguna pada masalah besar yang dikerjakan oleh satu tim pemrogram yang beranggotakan beberapa orang. Masalah yang akan diprogram dipecah menjadi beberapa masalah yang lebih keil. Setiap masalah yang lebih kecl tersebut ditulis ke dalam modul individual yang spesifik dan dikerjakan oleh orang yang berbeda. Seluruh modul diintegrasikan menjadi satu buah program yang lengkap. Program modular menjai lebih mudah untuk dibaca dan dimengerti. Program yang tidak modular sulit dipahami, khususnya kalau program tersebut panjang atau terdiri dari puluhan, ratusan atau ribuan baris intruksi.
Karena setiap modul melakukan aktivitas specsifik, maka apabila terdapat kesalahan di dalam program, kesalahan tersebut dapat dilokalisisr pada modul yang bersangkutan. Kebanyakan program komputer dapat ditulis modular, meskipun program tersebut tidak melibatkan eksekusi yang berulang dari aktivitas yang sama. Pemecahan program menjadi modul-modul individul umumnya dianggap sebagai praktek pemrograman yang baik.
Terdapat dua jenis modul program, pertama prosedur (procedure) dan kedua fungsi (function). Struktur setiap modul tersebut pada hakikatnya sama dengan struktur algoritma biasa, yaitu ada bagian judul (header) yang berisi nama modul, bagian deklarasi, dan bagian badan (body) program yang berisi instruksi yang akan dilaksanakan.
2)     Definisi Prosedur
Prosedur adalah modul program yang mengerjakan tugas/aktivitas yang spesifik dan menghasilkan suatu efek netto . Suatu efek netto diketahui dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan prosedur. Oleh karena itu, pada prosedur kita harus mendefinisikan keadaan awal sebelum rangkaian instruksi di dalam prosedur dilaksanakan dan keadaan akhir yang diharapkan setelah rangkaian instruksi dilaksanakan.

3)       Pendefinisian Prosedur

Pada dasarnya, struktur prosedur sama dengan struktur algoritma yang sudah dikenal, yaitu : bagian judul yang terdiri atas nama prosedur dan komentar yang menjelaskan yang menjelaskan spesifikasi prosedur tersebut, bagian deklarasi dan badan prosedur. Setiap prosedur memiliki nama yang unik. Nama prosedur sebaiknya diawali dengan kata kerja karena prosedur berisi suatu aktivitas, misalnya HitungLuas, Tukar, CariMaks, Inisialisasi, AktifkanMenu dan lain sebagainya.



Notasi Algoritma yang digunakan untuk mendefinisikan struktur prosedur adalah :
Procedure NamaProsedur
{Spesifikasi prosedur, berisi penjelasan tentang apa yang dilakukan prosedur ini}
{K. Awal : keadaan sebelum prosedur dilaksanakan}
{K. Akhir : keadaan setelah prosedur dilaksanakan}

Deklarasi
{semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur yang didefinisikan di sini}

Deskripsi
{badan prosedur, berisi kumpulan instruksi}

Gambar 3.1 Bentuk Umum Pendefinisian Prosedur(sumber:Rahardjo)
Contoh
Tuliskan prosedur mencetak string ’Hello World!’.
Penyelesaian
Procedure CetakHalo
{mencetak string ’Hello World!’ ke piranti keluaran}
{K. Awal : sembarang}
{K. Akhir : string ’Hello World!’ tercetak}

Deklarasi
{tidak ada}

Deskripsi
Write (’[Hello World!’)

Contoh
Tuliskan prosedur untuk menghitung luas segitiga dengan rumus L=(alas x tinggi)/2. Panjang alas dan tinggi segitiga dibaca dari dalam prosedur. Luas segitiga dicetak ke piranti keluaran.




Penyelesaian
Procedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus L=(alas x tinggi)/2
{K. Awal : sembarang}
{K. Akhir : L berisi luas segitiga. Nilai L dicetak ke piranti keluaran}

Deklarasi
Alas, tinggi, luas : real

Deskripsi
Read (alas, tinggi)
Luas ß (alas*tinggi)/2
Write (L)

4)      Pemanggilan Prosedur
Prosedur bukan program yang berdiri sendiri, jadi tidak dapat dieksekusi secara langsung. Ini berarti, instruksi-instruksi di dalam prosedur baru dapat dilaksanakan hanya bila prosedur tersebut diakses/dipanggil. Prosedur diakses dengan cara m,emanggil namanya dan program pemanggil (program utama atau modul program lain) :

NamaProsedur
Gambar 2.2 Pemanggilan Prosedur(sumber:Rahardjo)

Ketika NamaProsedur dipanggil, kendali program berpindah secara otomatis ke prosedur tersebut. Instruksi di dalam badan prosedur dilaksanakan. Setelah semua instruksi selesai dilaksanakan, kendali program berpindah secara otomatis ke instruksi sesudah pemanggilan prosedur.
Di dalam program pemanggil, kita harus mendeklarasikan prototype prosedur di dalam bagian deklarasi. Prototype prosedur hanya berisi bagian judul prosedur. Tujuan pendeklarasian prototype program adalah supaya program pemanggil “mengenal“ nama prosedur tersebut serta cara mengaksesnya.

Contoh
Tuliskan contoh program utama untuk memanggil prosedur CetakHalo
Penyelesaian
Algoritma Halo
{program utama untuk mencetak string ’Halo!’}

Deklarasi
Procedure CetakHalo
{mencetak string ’Halo!’ ke piranti keluaran}

Deskripsi
CetakHalo {panggil prosedur CetakHalo}

Contoh
Tuliskan contoh program utama untuk memanggil prosedur HitungLuasSegitiga.
Penyelesaian
Algoritma Luas_Segitiga
{program uatama untuk menghitung luas segitiga}

Deklarasi
Prcedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus L=(alas x tinggi)/2}

Deskripsi
Write(’Menghitung Luas Segitiga’)
HitungLuasSegitiga
Write (’Selesai’)

B. Fungsi


1)       Definisi Fungsi
Definisi fungsi sebenarnya sama dengan sebuah prosedur. Perbedaannya, pada fungsi terdapat pengembalian nilai, sehingga pada saat pemanggilan, fungsi dapat langsung digunakan untuk mengisikan sebuah ekspresi.
2)      Pendefinisian Fungsi
Berbeda dengan prosedur yang didefinisikan dengan kata kunci function. Berikut ini bentuk umum dari pendefinisian sebuah fungsi.


                            Function NamaFungsi (parameter1 : tipe_data,
                                    paraneter2: tipe_data, . . .) : tipe_data;
const
{daftar konstanta lokal}
Var
{daftar pendeklarasian variabel lokal}
Begin
{kode program yang akan ditulis}
. . .
NamaFungsi := nilai_kembalian;            {ingat baris ini}
End;

Gambar 4.1 Bentuk Umum Pendefinisian Fungsi
Berikut ini contoh pendefinisian fungsi sederhana yang akan mengalikan dua buah bilangan bulat.
Function Kali (x, y : integer) : longint;
Begin
        Kali := x * y;
End;

Kita juga dapat mendeklarasikan variabel lokal untuk menyimpan nilai sebelum akhirnya dikembalikan lagi ke fungsi, misalnya seperti kode di bawah ini.
Function Kali (x, y : integer) : longint;
Var
        Hasil : longint;
Begin
        Hasil := x * y;
        Kali := Hasil;
End;

3)        Pemanggilan fungsi
Fungsi diakses dengan cara memanggil namanya dari program pemanggil, diikuti dengan daftar parameter aktual (bila ada). Oleh karena fungsi menghasilkan sebuah nilai maka pada saat pemanggilannya juga dapat ditampung ke dalam suatu variabel. Berikut ini contoh pemanggilan fungsi di atas.
Var
        A : longint;
Begin
        {memanggil fungsi Kali dan menyimpan nilainya ke dalam variabel A)
        A := Kali (10, 5);
. . .
End.

4)      Parameter
Parameter merupakan suatu nilai atau referensi yang dilewatkan ke dalam rutin tertentu dan kehadirannya akan mempengaruhi proses maupun nilai yang terdapat di dalam rutin itu sendiri. Parameter ditempatkan di dalam tanda kurung setelah nama rutin bersangkutan. Suatu fungsi umumnya mempunyai parameter. Namun bisa saja suatu fungsi tidak memiliki paramater. Setiap parameter yang dilewatkan harus memiliki tipe data tersendiri yang dapat berupa dari tipe dasar maupun bentukan seperti array, record atau pointer. Untuk mengetahui arti parameter, perhatikan fungsi matematika di bawah ini.
f (x) =  2x2 + 5x – 3

Bila x=1, maka f akan mengembalikan nilai 4, yang berasal dari

f (1) =  2(1)2 + 5(1) – 3 = 2 + 5 – 3 = 4

Bila x=2, maka f akan mengembalikan nilai 15, yang berasal dari
f (2) =  2(2)2 + 5(2) – 3 = 8 + 10 – 3 = 15

Dari ilustrasi tersebut terlihat jelas bahwa hasil nilai dari fungsi f ditentukan oleh besarnya nilai x, sehingga x disebut sebagai parameter dari fungsi f.
            XI. RECORD
1)      Definisi Record
Record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-masing dapat berlainan tipe.
2)      Mendeklarasikan Record
Suatu tipe record dideklarasikan dengan bentuk sebagai berikut :

RECORD                                          Gambar 2.1 Pendeklarasian Record
Daftar_field_1 : tipe_1;                                     (sumber:Kadir)
Daftar_field_2 : tipe_2;
. . .
daftar_field_n : tipe_n;
END


Masing-masing daftar_field dapat berupa satu atau beberapa nama pengenal dan masing-masing dinamakan field. Bila daftar_field berisi lebih dari satu field, antar field perlu dipisahkan dengan koma. Masing-masing tipe dapat berupa tipe data apa saja termasuk array.
Berikut contoh pendeklarasian record :

Type
        RecBarang = Record
                                             Nama       : String;
                                             Kualitas   : Char;
                                             Harga       : LongInt
                                  End;

Var
        Barang : RecBarang;

Dengan mendeklarasikan seperti di atas, Barang akan mengandung tiga buah field, yaitu :
-          Nama,
-          Kualitas,
-          Harga.
3)      Cara Mengakses Field
Field dari suatu record diakses dengan bentuk :
Variabel.field
Gambar 2.2 Mengakses Field(sumber:Kadir)
Sebagai contoh :
Barang.Nama

Berarti “field Nama dari variabel record bernama Barang“.
Contoh penugasan nilai ke field tersebut :

Barang.Nama := ’Ubin TISKA 20x20’;

Dengan cara seperti di atas, field Nama dari record Barang berisi string ’Ubin TISKA 20x20’.
Isi dari suatu field ditampilkan dengan menggunakan Write atau Writeln.
Contoh :

Writeln (Barang.Nama);

Merupakan perintah untuk menampilkan isi field Nama dari record Barang. Contoh program yang memberikan gambaran pendeklarasian record, pengisian terhadap field-field serta menampilkan isi masing-masing field dapat dilihat di bawah ini.

Program Rec1;
Uses crt;
Type
           RecBarang = Record
                                            Nama         : String[25];
                                            Kualitas     : Char;
                                            Harga         : LongInt
                                     End;

Var
           Barang : RecBarang;               {variabel bertipe record}

Begin
Clrscr;
{Penugasan nilai terhadap field-field}
Barang.Nama := ’Ubin TISKA 20x20’;
Barang.Kualitas := ’A’;
Barang.Harga := 14000;

{menampilkan isi field}
writeln (’Nama Barang             : ’, Barang.Nama);
writeln (’Kualitas          : ’, Barang.Kualitas);
writeln (’Harga                            : ’, Barang.Harga);
Readln
End.

Hasil program :
Nama Barang                 : Ubin TISKA 20x20
Kualitas                            : A
Harga                                : 14000

4)      Penugasan Antar Record
Jika record R1 dan R2 bertipe sama dan masing-masing memiliki F1, F2, dan F3, maka penugasan :
R1 := R2;
diperkenankan. Pernyataan di atas merupakan penyederhanaan dari sederetan pernyataan berikut :
R1.F1 := R2.F1;
R1.F2 := R2.F2;
R1.F3 := R2.F3;
Untuk lebih jelasnya, tulislah program berikut dan cobalah menjalankannya.

Program Rec2;
Uses crt;
Type
            RecBarang = Record
                                             Nama                  : string[25];
                                             Kualitas              : car;
                                             Harga                  : longInt
                                      End;
Var
            Barang1, Barang2 : RecBarang;   {variabel bertipe record}
Begin
Clrscr;
{penugasan nilai terhadap field-field}
Barang1.Nama := ’Ubin TISKA 20x20’;
Barang1.Kualitas := ’A’;
Barang1.Harga := 14000;

{menyalin record}
Barang2 := Barang1;

Menampilkan isi field}
Writeln (’Nama Barang                 : ’, Barang2.Nama);
Writeln (’Kualitas    : ’, Barang.Kualitas);
Writeln (’Harga              : ’, Barang.Harga);
Readln
End.

Dengan adanya penugasan
Barang2 := Barang1;
maka semua field pada record Barang2 akan berisi recrod Barang1. Hasil dari program di atas :

Nama Barang                 : Ubin TISKA 20x20
Kualitas                            : A
Harga                                : 14000

5)      Record Di Dalam Record
Mungkin saja sebuah record berisi record. Sebagai gambaran hal ini, perhatikan deklarasi berikut :
RecTanggal = Record
                                                  Tanggal,
                                                  Bulan,
                                                  Tahun               :Integer
                                            End;
RecPegawai = Record
                                                  Nomor              : LongInt;
                                                  Nama                : String [35];
                                                  TglLahir           : RecTanggal;
                                            Gaji                    : LongInt
                                     End;

Tampak bahwa tipe record bernama RecPegawai berisi record yang lain (RecTanggal).
Hal yang menarik yang perlu diperhatikan adalah cara mengakses field seperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah sebagai berikut.

Nama_variabel.TglLahir.Tanggal
Nama_variabel.TglLahir.Bulan
Nama_variabel.TglLahir.Tahun

Praktekkan program berikut, untuk mencoba pembuatan record dengan bentuk sepert di atas.

Program Rec3;
Uses crt;
Type
         RecTanggal = Record
                                                 Tanggal,
                                                 Bulan,
                                                 Tahun              : Integer
                                          End;
RecPegawai = Record
                                                 Nomor             : LongInt;
                                                 Nama               : string [35];
                                                 TglLahir          : RecTanggal;
                                                 Gaji                   : longInt
                                          End;
Var
         DataPeg : RecPegawai;                      {variabel betipe record}
Begin
Clrscr;
Penugasan nilai terhadap field-fiedl}
DataPeg.Nomor := 56789;
DataPeg.Nama   := ’Badu’;
DataPeg.TglLahir.Tanggal := 24;
DataPeg.TglLahir.Bulan := 12;
DataPeg.TglLahir.Tahun := 1972;
DataPeg.Gaji := 750000;

{menampilkan isi field}
Writeln (’Nama Pegawai  : ’, DataPeg.Nama);
Writeln (’Tanggal Lahir    : ’, DataPeg.TglLahir.Tanggal,
                     ’/’, DataPeg.TglLahir.Bulan,
                     ’/’, DataPeg.TglLahir.Tahun);
Readln
End.

Hasil dari program di atas adalah sebagai berikut :

Nama Pegawai                      : Badu
Tanggal Lahir                         : 24 / 12 / 1972

6)     Pernyataan With

Untuk menyederhanakan notasi seperti :

DataPeg.TglLahir.Tanggal

Turbo Pascal menyediakan pernyataan WITH. Bentuk pernyataan ini adalah sebagai berikut :
With nama_record do
pernyataan

Gambar 2.3 Bentuk Umum Pernyataan With(sumber:Kadir)

Pada bentuk ini, field-field yang terletak pada bagian pernyataan dapat disebutkan tanpa perlu menyertakan lagi nama record dan tanda titik. Untuk lebih jelasnya, perhatikan program berikut yang merupakan alternatif lain dari program di atas.

Program Rec4;
Uses crt;
Type
        RecBarang = Record
                                              Nama                : String [25];
                                              Kualitas            : Char;
                                              Harga                : LongInt
                                       End;
Var
        Barang : RecBarang;                          {variabel bertipe record}



Begin
Clrscr;
{penugasan nilai terhadap field-field}
With Barang do
Begin
        Nama := ’Ubin TISKA 20x20’;
        Writeln (’Nama Barang                    : ’, Nama);
        Writeln (’Kualitas   :’, Kualitas);
       Writeln (’Harga        :’, Harga);
End;
Readln
End.

Bila suatu record memiliki record lain, pernyataan With dapat diikuti dengan with yang lain. Sebagai contoh, program di atas ditulis menjadi :

Program Rec5;
Uses crt;
Type
       RecTanggal = Record
                                                Tanggal,
                                                Bulan,
                                                Tahun             : Integer
                                         End;
       RecPegawai = Record
                                                Nomor            : LongInt;
                                                Nama              : string [35];
                                                TglLahir         : RecTanggal;
                                                Gaji                  : LongInt
                                         End;
Var
       DataPeg : RecPegawai; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg do
With TglLahir do
Begin
       Nomor            := 56789;
       Nama              := ’Badu’;
       Tanggal          := 24;
       Bulan               := 12;
       Tahun             := 1972;
       Gaji                  := 750000;
End;
{menampilkan isi field}
With DataPeg do
       With TglLahir do
       Begin
                     Writeln (’Nama Pegawai             :’, DataPeg.Nama);
                     Writeln (’Tanggal lahir                 :’, DataPeg.TglLahir.Tanggal,
                                         ’/’, DataPeg.TglLahir.Bulan
                                         ’/’, DataPeg.TglLahir.Tahun)
       End;
Readln
End.

Pernyataan seperti :
With DataPeg do
                 With TglLahir do

Dapat ditulis menjadi :

With DataPeg, TglLahir do

dengan antar nama record dipisahkan oleh tanda koma.
Contoh program :

Program Rec6;
Uses crt;
Type
       RecTanggal = Record
                                                Tanggal,
                                                Bulan,
                                                Tahun             : Integer
                                         End;
       RecPegawai = Record
                                                Nomor            : LongInt;
                                                Nama              : string [35];
                                                TglLahir         : RecTanggal;
                                                Gaji                  : LongInt
                                         End;
Var
       DataPeg : RecPegawai; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg, TglLahir do
Begin
        Nomor           := 56789;
        Nama             := ’Badu’;
        Tanggal         := 24;
        Bulan              := 12;
        Tahun            := 1972;
        Gaji                 := 750000;
End;
{menampilkan isi field}
With DataPeg, TglLahir do
        Begin
                     Writeln (’Nama Pegawai             :’, DataPeg.Nama);
                     Writeln (’Tanggal lahir                 :’, DataPeg.TglLahir.Tanggal,
                                         ’/’, DataPeg.TglLahir.Bulan
                                         ’/’, DataPeg.TglLahir.Tahun)
        End;
Readln
End.

7)      Array Record
Elemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihat di bawah ini.
Const
         Jum_Maks = 20;
Type
         RecBarang = Record
                                               Nama           : String [25];
                                               Kualitas       : Char;
                                               Harga           : LongInt
                                         End;
         TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
         DafBarang : TabelBarang;           {array record}

Pada contoh di atas, DafBarang adalah array yang maksimum berisi 20 buah elemen bertipe record.
Untuk mengakses suatu field, kita perlu menggunakan notasi :

       DafBarang [indeks].NamaField



Berikut contoh program Array Record.
Program Rec7;
Uses Crt;
Const
        Jum_Maks = 20;                        {jumlah maksimal jenis baramg}


Type
        RecBarang = Record
                                                 Nama              : string [25];
                                                 Kualitas          : char;
                                                 Harga              : longInt
                                      End;
        TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
        DafBarang : TabelBarang;                 {array record}
        JumBarang : Integer;

{memasukkan data barang je array DafBarang}
Procedure EntriBarang (Var DafBarang : TabelBarang;
                                                          Var JumBarang : Integer);    
Var
       Indeks : Integer;
Begin
       Clrscr;
       Write (’Jumlah Barang (Maksimum = 20) :’); Readln (JumBarang);
       For Indeks := 1 to JumBarang do
       With Dafbarang [indeks] do
       Begin
       Clrscr;
       Writeln (’Data Barang ’, Indeks, ’ :’);
       Write (’Nama                                                     :’); Readln (Nama);
       Write (’Kualitas                                                 :’); Readln (Kualitas);
       Write (’Harga                                                     :’); Readln (Harga);
       Writeln;
       End;
       End;                {akhir EntriBarang}

{menampilkan isi array DafBarang}
Procedure InfoBarang (Var DafBarang : Tabelbarang;
                                                        JumBarang : Integer);
Var
       Indeks : Integer;
Begin
       Clrscr;
       Writeln (’NAMA BARANG’:25, ’KUALITAS’:10, ’HARGA’:10);
       For Indeks := 1 to JumBarang do
       With Dafbarang [Indeks] do
       Writeln (Nama : 25, Kualitas : 10, Harga : 8);
       End;                {Akhir InfoBarang}
Begin
       Entribarang (DafBarang, JumBarang);
       InfoBarang (DafBarang, JumBarang);
       Readln
End.                 

Kesimpulan
Record adalah salah satu tipe data terstuktur bentukan yang digunakan untuk mempresntasikan sebuah objek yang tidak dapat dipresentasikan menggunakan tipe data dasar, seperti integer, real, boolean, character. Setiap record terdiri dari beberapa elemen yang disebut field. Setiap field menggambarkan informasi tertentu, dan tipe setiap field sudah dikenal, baik itu tipe dasar atau tipe bentukan lainnya.
Operasi atau manipulasi terhadap record hanya dapat dilakukan terhadap field-field pembentuknya. Pengacuan pada setiap field dilakukan dengan record selector. Operasi yang dapat dilakukan terhadap field-field tersebut sama dengan operasi yang dapat dikenakan terhadap tipe pembentuknya.













DAFTAR PUSTAKA

Jogiyanto. 1990. Turbo Pascal. Yogyakarta : Andi Offset.
Kadir, Abdul.  1991. Pemrograman Turbo Pascal. Jakarta : Elek Media Komputindo, PT. Gramedia.
Munir, Rinaldi. 2002. Algoritma dan Pemrograman dalam bahasa Pascal dan C Edisi 2. Bandung: Informatika.

Rahardjo, Budi. 2005. Teknik Pemrograman Pascal. Bandung:Informatika
Santosa. 1998. Dasar-dasar Pemrograman Pascal. Yogyakarta : Andi Offset.



Tidak ada komentar:

Poskan Komentar