tag:blogger.com,1999:blog-88101051500880520592024-03-12T23:00:44.563-07:00PEMROGRAMAN DASARPemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-8810105150088052059.post-52127063947447293932008-10-22T03:43:00.006-07:002008-10-22T05:35:54.083-07:00Anggota Tim Penanggung Jawab<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyKrTLChYbHDgO7aNjbX1LjTI_RSbJWcwb5qHt6IQH5cxwNXhu-Gitr0MGCQCnX_KwQznq_4nP04v4xdeKg1VgN0Ggs96PLp06A3KtqFxVlqa5y37FdoIz0xI0nmlPZiS0oSCnfuWd970/s1600-h/DFASD.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyKrTLChYbHDgO7aNjbX1LjTI_RSbJWcwb5qHt6IQH5cxwNXhu-Gitr0MGCQCnX_KwQznq_4nP04v4xdeKg1VgN0Ggs96PLp06A3KtqFxVlqa5y37FdoIz0xI0nmlPZiS0oSCnfuWd970/s320/DFASD.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5259955766760308418" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqrYL0eY6RvA77j9vG4_d7b26N68PljeqiHWhNJNI19ZNM2q5OUgcP1Go_o7lmfdPtdfo7HeU6lCuCQaa0tzL3YX030oYShERo83TTmvSsX2fhS3AlW9siLZpKSm7JTpZO-viQDPbB7fU/s1600-h/My+foto(1538).jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqrYL0eY6RvA77j9vG4_d7b26N68PljeqiHWhNJNI19ZNM2q5OUgcP1Go_o7lmfdPtdfo7HeU6lCuCQaa0tzL3YX030oYShERo83TTmvSsX2fhS3AlW9siLZpKSm7JTpZO-viQDPbB7fU/s320/My+foto(1538).jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5259931132570910066" /></a><br /><p align="center">I Komang Widarta Kusuma</p><p align="center">(0715323010)</p><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjipVUugce5dWm8SZ6fGKggMKmOuVBAjt4FIuOxVXIY7wpXc_uv6QTqZCoOtMA9RL82jd_hwjGpQv_ZuU5mZFd-RNGjncIB0LcF3m08cvkncRnyPDTJre9CAdL1tR96b166WrklsyJjeoo/s320/edit1+copy.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5259929871549335298" /></p><p align="center">Gede Nurjaya</p><p align="center">(0715323011)</p><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhGf9kJH5Rgb1fnUdNxuEsRnJpd0dqfj5VzetdF4Bz3ruMYw9MPiNRRgKvcAlbpDjMrc9O92gnMSFJCtECLiHcin8fVkpjA8cVUyJK0j9k7WOVemcxMRPxQe3IeMeUijpYizgwXsCG7QY/s320/kade.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5259930167437383250" /></p><p align="center">Kade Musgita Yasa</p><p align="center">(0715323021)</p>Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-9955055075469810842008-10-22T03:43:00.005-07:002008-10-22T04:05:32.323-07:00PendahuluanPascal dikembangkan dari bahasa ALGOL, yang merupaka bahasa pemrograman komputasi <br />scientific. ALGOL memiliki beberapa kelemahan seperti pada tipe data pointer, karakter, dan <br />sulitnya mengimplementasikan bahasa tersebut ke dalam compiler menyebabkan ALGOL tidak <br />berkembang dan sedikit demi sedikit ditinggalkan. <br /><br />Pada akhirnya, tahun 1971, salah seorang pengembang ALGOL telah berhasil mengembangkan bahasa pemrograman baru yang diberinama PASCAL, yang mengadopsi nama ilmuwan Perancis pada abad ke 17 Blaise Pascal. Kelebihan dari bahasa PASCAL adalah merupakan bahasa pemrograman yang terstruktur,bahasa pemrograman tingkat tinggi (high level language), serta mudah bagi programmer untuk menentukan tipe data yang diinginkan. Di awal tahun 1980 an, PASCAL telah menjadi bahasa pemrograman standard di berbagaiuniversitas. Terdapat dua peristiwa yang menyebabkan PASCAL menjadi sangat populer padasaat itu yaitu digunakannya PASCAL sebagai bahasa untuk membuat aplikasi/software guna keperluan ujian di beberapa sekolah, serta dirilisnya Turbo Pascal Compiler oleh perusahaan Borland International untuk komputer IBM. Sampai saat ini, Turbo Pascal sudah mencapai rilis 7.0 bahkan sudah ada yang berjalan di platform Windows (Turbo Pascal for Windows). Terdapat pula varian dari Turbo Pascal yang lebih bersifat open source yaitu Free Pascal. Namun, pada saat ini. PASCAL sudah mulai banyak ditinggalkan. Kebanyakan para programmer saat ini lebih memilih bahasa C/C++ dan Java karena lebih mendukung untuk pemrograman berorientasi obyek. Meskipun demikian, bukan berarti PASCAL juga harus ditinggalkan pada saat ini. PASCAL masih layak dipelajari, khususnya bagi mereka yang baru belajar bahasa pemrograman karena perintah-perintahnya menggunakan bahasa tingkat tinggi (mirip bahasa manusia - Inggris) sehingga mudah dipahami. Selain itu, dengan belajar PASCAL akan diperoleh modal untuk dapatmenguasai pemrograman visual DELPHI. Karena pada prinsipnya, DELPHI merupakan PASCAL yang dikombinasikan dengan efek visual.Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-90647150748906193502008-10-22T03:43:00.003-07:002008-10-22T04:07:22.898-07:00Konsep Dasar Pemrograman Pascal1.1 Perkembangan Pascal <br /><br /> Pascal adalah bahasa pemrograman yang pertama kali di buat oleh Profesor Niklaus Wirth, seorang anggota International Federation of Information Processing (IFIP) pada tahun 1971. Dengan mengambil nama dari matematikawan Perancis, Blaise Pascal, yang pertama kali menciptakan mesin penghitung, Profesor Niklaus Wirth membuat bahasa Pascal ini sebagai alat bantu untuk mengajarkan konsep pemrograman komputer kepada mahasiswanya. Selain itu, Profesor Niklaus Wirth membuat Pascal juga untuk melengkapi kekurangan-kekurangan bahasa pemrograman yang ada pada saat itu. <br />1.2 Struktur Program Pascal <br /> Struktur dari suatu program pascal terdiri dari sebuah judul program dan suatu blok program atau badan program. Blok program dibagi lagi menjadi dua bagian, yaitu : bagian deklarasi dan bagian pernyataan. Secara ringkas, struktur suatu program pascal dapat terdiri dari : <br /> 1. Judul program <br /> 2. Blok program <br /> a. Bagian deklarasi <br /> - deklarasi label <br /> - deklarasi konstanta <br /> - deklarasi tipe <br /> - deklarasi variable <br /> - deklarasi prosedur <br /> - deklarasi fungsi <br /> b. Bagian pernyataan <br />Program pascal yang paling sederhana adalah program yang hanya terdiri dari sebuah bagian pernyataan saja. <br /> Begin <br /> End. <br />Bentuk umum dari bagian pernyataan adalah : <br /> Begin <br /> Statement; <br /><br /> End . <br /> <br />Contoh : <br /> Begin <br /> Writeln ( ‘Saya pascal’ ); <br /> Writeln ( ‘--------------‘ ) <br /> End . <br />Outputnya : Saya pascal <br /><br />--------------- <br /> Program pascal tidak mengenal aturan penulisan di kolom tertentu, jadi boleh ditulis mulai kolom berapapun. Penulisan statement-statement pada contoh program yang menjorok masuk beberapa kolom tidak mempunyai pengaruh diproses, hanya dimaksudkan supaya mempermudah pembacaan program, sehingga akan lebih terlihat bagian-bagiannya, dan baik untuk dokumentasi. <br /><br />Judul program sifatnya optional dan tidak signifikan didalam program. Jika ditulis dapat digunakan untuk memberi nama program dan daftar dari parameter tentang komunikasi program dengan lingkungannya yang sifatnya sebagai dokumentasi saja. Judul program bila ditulis harus terletak pada awal dari program dan diakhiri dengan titik koma. <br />Contoh : <br />Program contoh ; <br /> Begin <br /> Writeln ( ‘Gunadarma’ ); <br /><br /> Writeln( ‘---------------‘ ); <br /><br />End . <br />1.3 Deklarasi <br />Bagian deklarasi digunakan bila didalam program menggunakan pengenal (identifier) yang dapat berupa label, konstanta, tipe, variable, prosedur dan fungsi. <br />1.3.1 Deklarasi Konstanta <br /><br />Definisi konstanta diawali dengan kata cadangan Const diikuti oleh kumpulan identifier yang diberi suatu nilai konstanta. Data konstanta nilainya sudah ditentukan dan pasti, tidak dapat dirubah didalam program. <br />Contoh : <br />Program contoh_konstanta; <br /> Const <br /> Potongan = 0.2 ; <br /> Gaji = 25000 ; <br /> Namaperusahaan = ‘PT ABC’ ; <br />Begin <br /> Writeln ( ‘Potongan =’, Potongan ) ; <br /> Writeln ( ‘Gaji =’, Gaji ) ; <br /> Writeln ( ‘Nama =’, Namaperusahaan) ; <br /><br />End . <br />1.3.2 Deklarasi Variabel <br />Variabel adalah identifier yang berisi data yang dapat diubah-ubah nilainya didalam program. Menggunakan kata cadangan Var sebagai judul didalam bagian deklarasi variable dan diikuti oleh satu atau lebih identifier yang dipisahkan koma, diikuti dengan titik dua dan tipe dari datanya diakhiri dengan titik koma. <br />Contoh : <br />Var <br /> Total, Gaji, Tunjangan : real ; <br /> Jumlahanak : integer ; <br /> Keterangan : string [25] ; <br />Begin <br /> Gaji : = 500000 ; <br /> Jumlahanak : = 3 ; <br /> Tunjangan : = 0.25 * Gaji + Jumlahanak * 30000 ; <br /> Total : = Gaji + Tunjangan ; <br /> Keterangan : = ‘Karyawan Teladan’ ; <br /> Writeln ( ‘ Gaji bulanan = Rp. ‘ , Gaji ) ; <br /> Writeln ( ‘ Tunjangan = Rp. ‘ , Tunjangan ) ; <br /> Writeln ( ‘ Total gaji = Rp. ‘ , Total ) ; <br /> Writeln ( ‘ Keterangan = Rp. ‘ , Keterangan ) ; <br /><br />End . <br />1.3.3 Deklarasi Tipe <br />Pascal menyediakan beberapa macam tipe data, yaitu : <br />1. tipe data sederhana, terdiri dari : <br />a. tipe data standar : integer, real, char, string, Boolean. <br />Konsep dasar pemrograman pascal <br />Algoritma & Pemrogram 2A <br />b. Tipe data didefinisikan pemakai : enumerated atau scalar, subrange <br />2. Tipe data terstruktur : array, record, file, set <br />3. Tipe data penunjuk <br />Contoh : <br />Type <br /> Pecahan = real ; <br /> Bulat = integer ; <br /> Huruf = string [25] ; <br />Begin <br /> …….. <br /> …….. <br /> …….. <br /><br />End . <br />1.3.4 Deklarasi Label <br />Jika program menggunakan statement Goto untuk meloncat ke suatu statement yang tertentu, maka dibutuhkan suatu label pada statement yang dituju dan label tersebut harus di deklarasikan terlebih dahulu pada bagian deklarasi. Menggunakan kata cadangan Label diikuti oleh kumpulan identifier label dengan dipisahkan oleh koma dan diakhiri dengan titik koma. <br />Contoh : <br />Label <br /> 100, selesai ; <br />Begin <br /> Writeln ( ‘Bahasa’ ) ; <br /> Goto 100 ; <br /> Writeln ( ‘Cobol’ ) ; <br /> 100 : <br /> Writeln ( ‘Pascal’ ) ; <br /> Goto selesai ; <br /> Writeln ( ‘Fortran’ ) ; <br /> Selesai : <br /><br />End . <br /><br />Output : Bahasa Pascal <br />1.3.5 Deklarasi Prosedur <br />Prosedur merupakan bagian yang terpisah dari program dan dapat diaktifkan dimanapun didalam program. Prosedur dibuat sendiri bilamana program akan dibagi-bagi menjadi beberapa blok-blok modul. Prosedur dibuat didalam program dengan cara mendeklarasikannya dibagian deklarasi prosedur. Menggunakan kata cadangan Procedure. <br /><br />Contoh : <br />Procedure tambah ( x, y : integer ; var hasil : integer ) ; <br />Begin <br /> Hasil : = x + y ; <br /><br />End ; <br /><br />Output : <br /><br />{program utama} <br />var <br /> z : integer ; <br />Begin <br /> Tambah ( 2, 3, z ) ; <br /> Writeln ( ‘ 2 + 3 = ‘, z ); <br /><br />End . <br /><br />2 + 3 = 5 <br />1.3.6 Deklarasi Fungsi <br />Fungsi juga merupakan bagian program yang terpisah mirip dengan prosedur, tetapi ada beberapa perbedaannya. Kata cadangan yang digunakan Function. <br />Contoh : <br />Function Tambah ( x, y : integer ) : integer ; <br />Begin <br /> Tambah : = x + y ; <br />End ; <br />{program utama} <br />Begin <br />Writeln ( ‘ 2 + 3 = ‘ , Tambah ( 2, 3)) ; <br /><br />End . <br /><br /><br />1.4 Unit <br />Suatu unit adalah kumpulan dari konstanta, tipe-tipe data, variable, prosedur dan fungsi-fungsi. Tiap-tiap unit tampak seperti suatu program Pascal yang terpisah. Unit standar sudah merupakan kode mesin (sudah dikompilasi), bukan kode sumber Pascal lagi dan sudah diletakkan di memori pada waktu menggunakan pascal. Untuk menggunakan suatu unit, harus diletakkan suatu anak kalimat Uses diawal blok program, diikuti oleh daftar nama unit yang digunakan. <br />1.4.1 Unit System <br />Sebenarnya adalah pustaka dari runtime Turbo Pascal yang mendukung semua proses yang dibutuhkan pada waktu runtime. Unit system berisi semua prosedur dan fungsi standar turbo pascal. Unit system ini akan secara otomatis digunakan didalam program, sehingga boleh tidak disebutkan didalam anak kalimat Uses. <br /><br />1.4.2 Unit Crt <br />Digunakan untuk memanipulasi layer teks ( windowing, peletakkan cursor dilayar, color untuk teks, kode extanded keyboard dan lainnya). Unit standar crt hanya dapat digunakan oleh program yang digunakan dikomputer IBM PC, IBM AT, IBM PS/2 atau yang kompatibel dengannya. <br />Contoh : <br />Uses crt ; <br />Begin <br /> Clrscr ; <br /> Writeln ( ‘Hallo’ ) ; <br /> Writeln ( ‘-------‘ ) ; <br /><br />End . <br /><br />Prosedur standar yang menggunakan unit crt adalah : <br />AssignCrt <br />HighVideo <br />Sound <br />ClrEol <br />InsLine <br />TextBackground <br />ClrScr <br />LowVideo <br />TextColor <br />Delay <br />NormVideo <br />TextMode <br />DelLine <br />NoSound <br />Window <br />GotoXY <br />Fungsi standar yang menggunakan unit Crt adalah : <br />KeyPressed <br />ReadKey <br />WhereX <br /><br />WhereY <br />1.4.3 Unit Printer <br />Merupakan unit yang sangat kecil dirancang untuk penggunaan printer didalam program. <br />Contoh : <br /> Uses printer ; <br />Begin <br /> Writeln ( Lst, ‘Hallo’ ) ; <br /> Writeln ( Lst, ‘-------‘ ) ; <br /><br />End . <br />1.4.4 Unit Dos <br />Digunakan bila akan menggunakan prosedur-prosedur dan fungsi-fungsi standar yang berhubungan dengan DOS call, semacam DetTime, SetTime, DiskSize, DiskFree dan lainnya. <br />Contoh : <br />Uses Dos ; <br />Begin <br /> Writeln ( DiskFree(0), ‘ byte sisa isi disk ‘ ) ; <br /><br />End . <br />1.4.5 Unit Graph <br />menyediakan suatu kumpulan rutin grafik yang canggih, sehingga dapat memanfaatkannya untuk keperluan-keperluan pembuatan grafik. <br />contoh : <br />Uses graph ; <br />Var <br /> DriveGrafik, ModeGrafik : integer ; <br /> I, x, y : integer ; <br />Begin <br /> DriveGrafik : = detect ; <br /> ……. <br /> ……. <br /><br />End . <br /><br />1.5 Kelebiham pemrograman pascal <br /><br /> Kelebihan dari bahasa pemrograman Pascal adalah: <br />Tipe Data Standar, tipe-tipe data standar yang telah tersedia pada kebanyakan bahasa pemrograman. Pascal memiliki tipe data standar: boolean, integer, real, char, string, <br />User defined Data Types, programmer dapat membuat tipe data lain yang diturunkan dari tipe data standar. <br />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. <br />Terstruktur, memiliki sintaks yang memungkinkan penulisan program dipecah menjadi fungsi-fungsi kecil (procedure dan function) yang dapat dipergunakan berulang-ulang. <br />Sederhana dan Ekspresif, memiliki struktur yang sederhana dan sangat mendekati bahasa manusia (bahasa Inggris) sehingga mudah dipelajari dan dipahami. <br /><br />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).Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-71994093738880634212008-10-22T03:43:00.001-07:002008-10-22T04:32:02.454-07:00Tipe-tipe Data dalam Pascal<p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisE-a5GqktNthyphenhyphen1_EhltSdjmodYQPTVcWptFTssy89Fc9ew1fYJwJiJ-QVuslZznod25p9Hfs64Wc7w1fK7vZ5U8Z1ldzqwEW5LqA0AaiTrEa2LzOr9fwSGfTZhCCqo03El_AmieEc-N0/s320/komputer_alfa.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5257900066312622578" /></p><p></p><p><p>Secara umum, tipe data dalam pemrograman Pascal adalah:<br /></p>• Tipe data sederhana<br />• Tipe data standard (standard data type)<br />contoh dari tipe data standard terdiri dari Integer, Real, Boolean, Char, dan String<br /><br />• Tipe data didefinisikan pemakai (user defined data type)<br />Contoh : subrange dan enumerasi<br />• Tipe data terstruktur<br />Contoh : Array, record, set, file<br />• Tipe data penunjuk<br />Contoh : Pointer<br /><br />Tipe data berfungsi membatasi jangkauan data yang akan dilaksanakan.<br /><br /> TIPE DATA SEDERHANA<br />Tipe Data Standard<br />1. Integer<br /><p> Tipe integer adalah tipe data yang nilainya bulat. Ada 5 macam tpe integer, yaitu:</p><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIGMhHh7isy_96MSHxqgee-_WFVK6HEtgk2ttvS4m3T7yFAGuclYZWyYq6wjmoDG4r_bQPydBqXZZDFIBPcknP-GjjQ-lUEIEUTRu4THB2PShHpJfemuOR2A0qatQnfdJyYd1e78sPnJo/s320/tipedata.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5257897090501490946" /></p><p><br /></p><br />Contoh deklarasi:<br /> Var A, B, C : Integer;<br /> D, E, F : Longint;<br />Operator-operator yang berlaku pada tipe data integer, yaitu :<br />Operator arithmatik : +, - , *, /, div, mod<br />Operator logic : <, = , > , <= , >= , <><br /><br />2. Real<br /> Real merupakan tipe bilangan pecahan. Bilangan real bisa dinyatakan dalam bentuk<br /><p>eksponensial. Ada 5 macam tipe real, yaitu:</p><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8h3mN9vTGY8sgKtNFYulTOssh6ZdgEQOmMCmSxjUwfv-lg_RM9Vc3C8Qkn9VAQDlbGcvi9TzqrlOL8UiAXVI_ZiHSAgAidwIO4tKET32-Z1TK7P2Ttgl_uUk2Nl6lyu9D7r1HmV5XzUQ/s320/tipe2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5257897817595574082" /></p><p>Contoh deklarasi:<br /></p>Var A, B, C : Real;<br /> D, E, F : Double;<br /><br />Operasi – operasi yang bisa dikerjakan oleh tipe data real adalah:<br />• Operasi biner, seperti penjumlahan (+), pengurangan (-), perkalian (*), dan<br />pembagian (/)<br />• Operasi uner. Contoh: -4.25, +1.25<br />– Boolean<br />Boolean adalah tipe data yang hanya mempunyai dua kemungkinan, yaitu true dan<br />false. Biasanya tipe data ini digunakan untuk perbandingan.<br /><br />Var A, B, C : Boolean;<br />Operator NOT, OR, AND, dan XOR dapat dibentuk secara bersamaan menjadi<br />sebuah ungkapan Boolean yang rumit.<br />Misal:<br />Var A,B,C: Boolean;<br />Begin<br /> C := false; B := true;<br /> A := (Not(C) AND Not (B)) XOR (C);<br /> Write(A); readln;<br />End.<br /><br /><p>Menurut anda, berapakah nilai A?</p><p><br /></p>3. Char<br />Char adalah semua tombol yang terdapat pada keyboard atau lebih lengkapnya semua karakter yang terdapat pada kode ASCII.<br />Catatan : Apabila char ingin dijadikan sebagai konstanta maka karakter yang dimasukkan harus diapit dengan tanda kutip satu. Dan apabila karakter itu berupa tanda kutip satu maka harus diapit dengan dua tanda kutip satu Beberapa fungsi untuk memanipulasi tipe daa char:<br />3.1 Ord(x) dengan x adalah data bertipe char. Fungsi ini digunakan untuk memperoleh nilai urutan dalam kode ASCII yang digunakan untuk melambangkan karakter tersebut. Contoh: Ord('C') adalah 67.<br />3.2 Char(x) dengan x adalah data bertipe byte. Fungsi ini adalah kebalikan dari fungsi Ord. Nilai yang diperoleh merupakan karakter ASCII yang dinyatakan dengan urutan ke x. Contoh: Char(67) adalah 'C'.<br />3.3 Pred(x) dengan x adalah data bertipe char. Fungsi ini digunakan untuk mengetahui karakter yang mendahului x. Contoh: Pred('h') adalah 'g'.<br />3.4 Succ(x) dengan x adalah data bertipe char. Fungsi ini digunakan untuk mengetahui karakter sesudah x. Contoh: Succ('h') adalah 'i'. Jika x tidak mempunyai penerus, maka nilai fungsi ini tidak terdefinisikan.<br />3.5 Upcase(x) dengan x adalah data bertipe char. Jika x merupakan huruf kecil maka akan dikembalikan huruf kapitalnya. Contoh: upcase('a') adalah 'A'.<br />4. String<br />String adalah data yang berisi sederet karakter yang terletak diantara tanda kutip satu. Jika karakter kutip merupakan bagian dari konstanta string, maka ditulis dengan menggunakan dua buah tanda kutip satu berurutan. Nilai data string akan<br />menempati memori sebesar maksimla jumlah karakter yang dapa ditampung ditambah denga 1 byte (index ke-0) untuk menyimpan panjang string yang sebenarnya. Jika panjang string tidak ditulis, maka panjang string dianggap 255 karakter. Panjang string yang diijinkan antara 1 sampai 255. Bentuk umum dari deklarasi tipe string adalah:<br />Var pengenal : string[panjang];<br /><br />dimana<br />pengenal : nama variable<br /><br />panjang : bilangan bulat yang menunjukkan banyaknya karakter (1 – 255). Untuk tipe data string, operator yang berlaku adalah operator penggabungan (+). Tipe data didefinisikan pemakai (user-defined data type)<br /><br />5 . Subrange<br />Tipe data subrange adalah suatu range yang menunjukkan nilai terkecil dan nilai terbesar yang dapat dipergunakan. Deklarasi tipe data subrange mempunyai bentuk: <br />Type pengenal = konstanta1 .. konstanta2;<br />dimana:<br />pengenal : nama tipe data yang dideklarasikan<br />konstanta1 : batas bawah nilai data<br />konstanta2 : batas atas nilai data<br />Kedua konstanta di dalam subrange harus bertipe ordinal yang sama, di mana nilai konstanta pertama lebih kecil atau sama dengan nilai konstanta kedua. Tipe data real tidak dapat digunakan sebagai nilai subrange, karena buka tipe ordinal. Contoh:<br />Type tanggal = 1 .. 31;<br />bulan = 1 .. 12;<br />7. Enumerated<br />Tipe data enumerated (skalar) menunjukkan kumpulan dari nilai yang urutannya<br />sudah pasti. Nilai dari tipe yang dideklarasikan ini akan diwakili dengan pengenal – pengenal (identifiers) yang akan menjadi nilai suatu konstanta. Contoh:<br />Type bahasa = (delphi, java, c, pascal, basic);<br />bulan = (maret, april, mei, juni, juli);<br />Tipe data bulan mempunya 5 elemen dari maret sampai juli. Dari urutannya, maret adalah identifier berupa konstanta bernilai 0 dan juli bernilai 4. Yang perlu diperhatikan dengan tipe data skalar ini adalah tipe data ini sudah berbeda dengan tipe standar yang ada dan pascal tidak mengijinkan operasi dengan tipe data yamg berbeda.<br /><br />Derajat Operator<br />Anda sudah mengenal beberapa tipe data di dalam Pascal dan operatornya. Di dalam Pascal, operator – operator tersebut memiliki derajat atau tingakatan. Adapun kegunaan dari derajat ini adalah Pascal dapat menentukan operator mana yang akan di jalankan terlebih dahulu.<br />Misal: x := 4 + 5 * 3<br />Menurut anda, berapakah nilai dari x? <br />Apakah 27 (hasil dari 9 * 3) atau 19 (hasil dari 4 +15)<br />Berikut ini urutan operator berdasarkan derajatnya:<br />@, not, *, /, div, mod, as, and, shl, shr, +, -, or, xor, :=, <>, <, >, <=, >=, in<br />Berdasarkan dari urutan operator di atas, maka nilai x pada x := 4 + 5 * 3 adalah 19,<br />karena operator * lebih dulu dikerjakan daripada operator +.<br />Akan tetapi, jika kita ingin agar operator + dikerjakan terlebih dahulu, kita bisa<br />meletakkan operasi penjumlahan tersebut di dalam kurung, musalnya: x := (4 + 5) * 3. Di<br />sini nilai x itu adalah 27, karena di dalam Pascal operasi yang di dalam kurung akan<br /><p>dilakukan terlebih dahulu, tidak dipengaruhi oleh derajat operator.</p><p><br /></p><p> INPUT OUTPUT DI DALAM PASCAL</p><p><br /></p>Write dan Writeln<br />Perintah ini digunakan untuk mencetak kata-kata atau variable ke layer kompuer. Sebagai contoh untuk mencetak kata ‘Sedang Belajar Pascal’, perintah yang diberikan<br />adalah:<br /> Write(‘Sedang Belajar Pascal’);<br />atau<br /> Writeln(‘Sedang Belajar Pascal’);<br />Jika menggunakan write, setelah mencetak kata – kata atau variable, kursor akan diletakkan di samping hasil cetakan. Jka menggunakan perintah writeln, setelah<br /> mencetak kata – kata atau variable, kursor akan dipindahkan ke bawah satu baris dengan posisi horizontal pada awal baris. Untuk mencetak suatu variable, tidak perlu tanda petik satu. Contoh:<br /><br />Var A : integer;<br />Begin<br /> A:= 9;<br /> Writeln(A);<br />End.<br />Dengan menggunakan write atau writeln, kita bisa menampilkan kata – kata dan variable<br />dengan tanda koma (,) sebagai pemisah antara variable dan kata - kata, Contoh:<br /><br />Var A : integer;<br />Begin<br /> A:= 9;<br /> Writeln(‘Nilai A adalah ’, A);<br /><p>End.</p><p><br /></p>Terkadang kita menemukan prosedur write atau writeln yang ditulis seperti ini, writeln(‘Asyik’: 10) _ Jika ditulis seperti ini, maka akan menghasilkan space yang disediakan untuk menuliskan kata asyik di layar monitor adalah 10 karakter, mulai dari kiri ke kanan. Coba tuliskan program berikut ini:<br /><br />begin<br /> write(‘Sehat’: 10); write(‘Senang’: 10);<br /> readln;<br />end.<br /><br />Perhatikan apa yang terjadi pada penggalan program di atas! Selain itu, dengan menggunakan write atau writeln, kita dapat mengatur berapa banyak angka di belakang koma yang akan ditampilkan di layar monitor jika kita ingin menampikan bilangan real, caranya adalah dengan menuliskan seperti program di bawah ini<br />Begin<br /> Write(1/3: 5 : 2); write(2/3: 5: 2);<br /> Readln;<br />End.<br /><br />Read dan Readln<br />Read atau readln digunakan untuk menerima masukan dari user untuk disimpan ke dalam suatu variable. Contoh:<p><br /></p>Var A: Integer;<br />Begin<br /> Write(‘Masukkan nilai A: ’);readln(A);<br /> Writeln(‘Nilai yang anda masukkan adalah: ’, A);<br /><p>End.</p><p><br /></p>Catatan:<br />Terkadang kita menggunakan fungsi readln pada satu baris sebelum kata end.. Hal ini dimaksudkan agar suatu program tidak akan langsung terminate (berhenti) tanpa menunggu suatu masukan dari user. Adapun masukan tersebut berupa penekanan tombol enter pada keyboard.<br /><br />Komentar<br />Komentar adalah bagian dari program yang tidak akan diproses oleh compiler (Free Pascal). Komentar hanya digunakan untuk dokumentasi saja. Cara pemberian komentar adalah dengan menambahkan // untuk 1 baris atau {…} untuk lebih dari 1 baris. Contoh pemberian komentar:<br /><p>Program Komentar;<br /></p>Begin<br /> //Ini Adalah Komentar<br />(Pernyataan – pernyataan ini<br />Tidak kan Diproses}<br />End.<br /><br />Unit<br />Di dalam Pascal, ada bagian yang disebut sebagai unit. Unit ini menyimpan fungsi dan prosedur standard yang sudah didefinisikan oleh pembuat compiler. Beberapa unit standard yang ada dalam Pascal adalah Crt, System, Graph, Dos, Printer, dan Overlay. Cara penggunaan unit adalah dengan menambahkan statemen:<br /><br />Uses nama_unit;<br />pada bagian Deklarasi.<br />Misal:<br />Uses Crt;<br />Beberapa fungsi dan prosedur yang ada dalam unit Crt:<br />Clrscr<br />Clrscr adalah suatu prosedur untuk membersihkan layer. Contoh:<br />Uses crt;<br />Begin<br />Writeln(‘Layar Sudah Bersih’);<br />Readln;<br />End.<br /><br />Readkey<br />Readkey adalah fungsi masukan yang hanya akan mengambil satu karakter masukan. Jenis variable yang dapat diinput oleh readkey pun hanya jenis variable karakter.<br />Contoh:<br />Uses crt;<br />Var A : Char;<br /> Begin<br /> Write(‘Tekan karakter apa saja di dalam keyboard’);<br /> A := Readkey;<br /> Writeln(‘Karakter yang barusan anda tekan adalah: ’, A);<br /> Readln;<br /><p>End.</p><p><br /></p>TextBackground<br />TextBackground merupakan prosedur untuk mengganti warna background tulitan yang<br /><p>ditampilhan di layer dengan warna yang kita inginkan. Perintah yang digunakan adalah: Textbackground(warna); Warna merupakan variable yang bias diganti dengan nama warna atau nilai warna tersebut:</p><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxueesaXkGxygiJLsG5mde__JBtERFqc0HDIa2TI-DqM1y15BAyY7UchPn3N7IRkyzGKBIkxDR3ipr5rM75VPKIGyjapRqE3k9toSKad_7h-YbFyaVIbXTGh8xlKiBOQRrEsv9pKH8klU/s320/warna.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5257898077980813362" /><br /></p> <br /><br />Contoh:<br />Uses Crt;<br />Begin<br /> Textbackground(Red);<br /> Writeln(‘Laboratorium Komputasi FMIPA UGM’);<br /> Readln;<br /><p>End.</p><p><br /></p>Textcolor<br />Textcolor merupakan prosedur yang digunakan untuk mewarnai tulisan. Perintahnya<br />adalah:<br />Textcolor(warna);<br />Cara pengisian warna sama dengan Textbackground.<br /><p>Contoh:</p><p><br /></p>Uses crt;<br />Begin<br /> Textbackground(Red);<br /> Textcolor(Blue);<br /> Writeln(‘Laboratorium Komputasi FMIPA UGM’);<br /> Readln;<br /><p>End.</p><p><br /></p>Beberapa fungsi dan prosedur untuk operasi Aritmatika:<br />Sqr(Value) _ fungsi ini digunakan untuk menghasilkan nilai perpangkatan<br />Sqrt(Value) _ fungsi ini digunakan untuk menghasilkan nilai akar pangkat dua<br />Abs(Value) _ untuk menghasilkan nilai mutlak<br />Ln(Value) _ untuk mencari nilai logaritma natural<br />Exp(Value) _ untuk mencari nilai eksponennya<br />Trunc(Value) _ untuk memotong nilai real ke suatu nilai integer<br />Round(Value) _ untuk membulatkan nilai real ke nilai integer yang terdekat<br />STRUKTUR PERCABANGAN<br />Struktur percabangan atau sering disebut dengan struktur kontrol ini memungkinkan<br />programmer untuk membuat program yang dapat memilih satu langkah di antara<br /><p>sejumlah langkah untuk dikerjakan.</p><p><br /></p>Dalam Pascal disediakan 2 buah struktur kontrol seleksi, yaitu:<br />a. Struktur IF……THEN…..<br />Merupakan struktur kontrol di mana suatu aksi dilaksanakan berdasarkan kondisi<br />logikanya (benar atau salah). Struktur if .. then … sendiri memiliki 4 jenis, yaitu:<br />• Bentuk 1<br />if (kondisi) then aksi;<br /><p>{Jika kondisi benar maka aksi akan dilaksanakan dan sebaliknya }</p><p><br /></p>• Bentuk 2<br />if (kondisi) then aksi1 else aksi2 ;<br />{Jika kodisi benar maka aksi1 diaksanakan, jika kondisi salah maka aksi2<br /><p>akan dilaksanakan}</p><p><br /></p>• Bentuk 3<br />if (kondisi1) then aksi1 else<br />if (kondisi2) then aksi2 else<br />……………………..<br />if (kondisi-n) then aksi-n ;<br />{Jika kondisi1 benar maka aksi1 dilaksanakan tanpa membaca kondisi2 dan<br />seterusnya. Jika kondisi1 salah maka aksi2 dilaksanakan tanpa membaca<br /><p>aksi3 dan selanjutnya. Demikian seterusnya}</p><p><br /></p>• Bentuk 4<br />if (kondisi1) then aksi1 ;<br />if (kondisi2) then aksi2 ;<br />……………………….<br />if (kondisi-n) then aksi-n ;<br />{Masing-masing kondisi akan dibaca dan aksi akan tetap dilaksanakan. Jadi<br /><p>masing-masing struktur terpisah satu dengan yang lain}</p><p><br /></p>Contoh program 1:<br />Program menghitung akar kwadrat<br />uses crt;<br />var A,B,C:integer;<br /> x1,x2,D:real;<br />begin<br /> clrscr;<br /> write('Baca koofisien:');readln(A,B,C);writeln;<br /> writeln(A,'x*x + (',B,') x +',C);<br /> if A=0 then writeln('Bukan persamaan kwadrat') else<br /> begin<br /> D:=(B*B) - (4*A*C);<br /> writeln('Determinannya :',D:2:2);readln;<br /> if D>0 then<br /> begin<br /> writeln('Persamaan kwadrat mempunyai 2 akar yang berbeda');<br /> x1:= (-B + sqrt(D))/(2*A);<br /> x2:= (-B - sqrt(D))/(2*A);<br /> writeln('Akar-akarnya adalah:',x1:2:2,'dan',x2:2:2);<br /><p> end</p><p> else<br /></p> if D=0 then<br /> begin<br /> writeln('Persamaan kwadrat mempunyai akar yang sama'<br /> x1:= -B/(2*A);<br /> x2:= -B/(2*A);<br /> writeln('Akar-akanya adalah:',x1:2:2);<br /><p> end</p><p> else<br /></p> writeln('Tidak memiliki akar riil');<br /> end;<br /> readln;<br /><p>end.</p><p><br /></p>Contoh Program 2:<br />Program Konversi nilai<br />Uses Crt;<br />var Nilai : Byte;<br />begin<br /> clrscr;<br /> write('Baca nilai :');readln(Nilai);<br /><p> if nilai>=80 then </p><p> write('Nilai = A') </p><p> else<br /></p><p> if nilai>=65 then </p><p> write('Nilai = B')</p><p> else<br /></p><p> if nilai>=41 then</p><p> write('Nilai = C')</p><p> else<br /></p><p> if nilai>=26 then</p><p> write('Nilai = D') </p><p> else<br /></p> write('Nilai = E');<br /> readln;<br /><p>end.</p><p><br /></p>Catatan:<br />Jika anda menggunakan else, perlu diinga bahwa satu baris sebelum else<br />tidak diperkenankan mengandung tanda ;<br />b. Struktur CASE…OF…<br />Merupakan peluasan dari struktur IF. Karena kalau dalam struktur IF hanya<br />disediakan dua pilihan (berdasarkan kondisi logikanya) maka dalam struktur<br />Case ..of dimungkinkan untuk memilih satu pilihan di antara banyak pilihan yang<br />ada. Bentuk umumnya :<br />Case var_pilih of<br />Pilih1 : aksi1 ;<br />Pilih2 : aksi2 ;<br />……………. ;<br />pilih-n : aksi-n ;<br />end;<br />atau<br />Case var_pilih of<br />pilih1 : aksi1 ;<br />pilih2 : aksi2 ;<br />……………. ;<br />pilih-n : aksi n;<br />else aksi-n+1<br />end;<br />Catatan :<br />Ekspresi yang digunakan dalam statemen Case adalah yang mempunyai tipe<br />ordinal yaitu dengan batas antara (-32768 s/d 32767). Sehingga tipe lain seperti<br /><p>integer yang bertipe longint, tipe string atau real tidak boleh digunakan.</p><p><br /></p>Contoh program 3:<br />Program Konversi nilai 2<br />Uses Crt;<br />Var Nilai : integer;<br /> begin<br /> Clrscr;<br /> write('Baca nilai =');readln(Nilai);<br /> Case Nilai of<br /> 0..25 : writeln('Nilainya = E');<br /> 26..39 : writeln('Nilainya = D');<br /> 40..64 : writeln('Nilainya = C');<br /> 65..79 : writeln('Nilainya = B');<br /> 80..100: writeln('Nilainya = A');<br /> else<br /> writeln('Tidak ada nilai yang dimaksud');<br /><p> end;</p><p> readln;<br /></p><p> end.</p><p><br /></p>Catatan : Program ini akan memberikan nilai yang sama persis dengan yang menggunakan struktur IF.<p></p>Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-2793519257408955382008-10-22T03:42:00.005-07:002008-11-21T00:07:45.525-08:00PercabanganSalah satu dari tiga konstruksi fundamental adalah percabangan/branching. Dalam pascal, percabagan menggunakan syntax if then else dan case of.<br /><br />Syntax:<br /><br />IF kondisi THEN<br />BEGIN<br /> ...<br />END;<br /><br />Dengan ELSE:<br /><br />IF kondisi [and] kondisi [or] kondisi THEN<br />BEGIN<br /> ...<br />END {memang tanpa titik koma di sini; sebelum ELSE tidak perlu titik koma!!!}<br />ELSE<br />BEGIN<br /> ...<br />END;<br /><br />Apabila kondisi terpenuhi, maka program akan menjalankan b\perintah yang ada setelah THEN. Tapi jika kondisi tidaki terpenuhi, maka program akan menjalankan program setelah ELSE.<br /><br />Contoh penggunaan:<br /><br />Var i: integer;<br />Begin<br /> Write('Masukkan bilangan antara 1-100: '); readln(i);<br /> If i<=50 then<br /> Write('bilangan kecil')<br /> Else<br /> Write('bilangan besar');<br />End.<br /><br />Penggunaan CASE … OF:<br />Penggunaan Case OF ini lkebih berguna jika kondisi yang dibandingkan berupa range. Lihat contoh berikut:<br /><br />CASE nilai OF<br /> 80..100 : grade:='A';<br /> 70..79 : grade:='B';<br /> 55..69 : grade:='C';<br /> 45-54 : grade:='D';<br /> ELSE grade:='E';<br />END;Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-28670289041542203662008-10-22T03:42:00.003-07:002008-11-21T01:00:45.657-08:00perulangan (looping)Selain percabangan, konstruksi fundamental pemrograman yang lainnya adalah looping atau perulangan. DI Pascal ada 3 macam looping. Kita akan pelajari satu per satu:<br /><br />1. For … to … do<br /><br />Syntax:<br /><br />FOR variable := nilai_awal TO nilai_akhir DO<br /><br />BEGIN<br /><br /> …apa_yang_diulang….<br /><br />END;<br /> <br /><br />Contoh penggunaan:<br /><br />FOR i:=1 TO 5 DO<br /><br />BEGIN<br /><br /> Writeln(i);<br />END;<br /> <br /><br />Program di atas akan menuliskan angka 1 sampai 5 ke bawah di layar. <br /><br />Jika ingin melakukan perhitungan mundur dari 5 ke 1, gunakan perintah DOWNTO sebagai pengganti TO (FOR i:=5 DOWNTO 1 DO). <br /><br /><br />BONUS!!! Untuk variabel yang bertipe char, bisa juga menggunakan FOR dengan cara berikut:<br /><br />FOR c:='A' TO 'Z' DO write(c,' ');<br /><br />Atau boleh juga menulisnya dengan<br /><br />FOR c:='Z' DOWNTO 'a' DO write(c,' ');<br /><br />Atau untuk tipe boolean, bisa juga seperti ini:<br /><br />FOR b:=false TO true DO writeln(b);<br /> <br /><br />Bagaimana? Keren kan?<br /> <br /><br />2. While … do<br /><br />Syntax:<br /><br />WHILE kondisi DO<br /><br />BEGIN<br /><br /> …apa_yang_dilakukan…<br /><br />END;<br /> <br /><br />Bedanya dengan FOR ... DO, adalah pada WHILE ... DO, sebelum memulai masuk ke blok begin end, ada kondisi yang harus dicek. Jika terpenuhi baru masuk ke blok BEGIN END dan terus-menerus diulang hingga kondisi tidak tercapai. Jadi bisa saja yang di dalam blok BEGIN END tidak dijalankan sama sekali.<br /><br />Contoh penggunaan:<br /><br /><br />i:=1;<br /><br />WHILE i<6>5;<br /> <br /><br />Nah, itu semua adalah dasar dari pemrograman Pascal. Untuk lebih lanjut akan dibahas pada waktu berikutnya (semoga saya sempat membuat tutorial berikutnya). Berikut ini saya berikan bonus program BINTANG BERGERAK MEMANTUL-MANTUL DI LAYAR.<br /><br /> <br /><br /> <br /><br />PROGRAM BintangMantulMantulSampaiDitekanEscape;<br />USES crt;<br />CONST<br /> lebar=80;<br /> tinggi=25;<br /> xawal=1;<br /> yawal=1;<br />VAR<br /> x,y : byte;<br /> dx,dy : shortint;<br /> c : char;<br />BEGIN<br /> {inisialisasi awal}<br /> x:=xawal;<br /> y:=yawal;<br /> dx:=1;<br /> dy:=1;<br /> c:=#0;<br /> REPEAT<br /> clrscr; {bersihkan layar}<br /> gotoxy(x,y);<br /> write('*'); {mencetak bintang pada posisi X,Y}<br /> x:=x+dx; {ubah koordinat x}<br /> y:=y+dy; {ubah koordinat y}<br /> {cek, jika sudah sampai di batas layar,<br /> maka ubah dx & dy untukk ganti arah}<br /> IF (X>=lebar) OR (X<=1) THEN dx:=-dx; IF (Y>=tinggi) OR (Y<=1) THEN dy:=-dy; {jika ada penekanan tombol, maka tombol tersebut dideteksi} IF keypressed THEN c:=readkey; delay(100); {menunda selama 100ms} UNTIL c=#27; <p>END.</p><p>LOOP FOR<br />// file: contohfor.pas<br />program contohfor;<br />uses crt;<br />var<br />i,j :integer;<br />fac :integer;<br />begin<br />clrscr; fac:=1;<br />write('Masukkan bil yang akan dicari nilaifaKtorialnya: ');<br />readln(i);<br />for j:=i downto 1 do<br />fac:=fac*j;<br />writeln('Nilai ',i,' faktorial= ', fac);<br />readln;<br />end.<br />LOOP WHILE<br />// file: contohwhile.pas<br />program contohwhile;<br />uses crt;<br />var<br />i,j :integer;<br />fac :integer;<br />begin<br />clrscr; fac:=1;<br />write('Masukkan bil yang akan dicari nilai faktorialnya: ');<br />readln(i);<br />j:=i; // initial value<br />(* Nilai kondisi pada while harus true untuk bisa mengulang<br />statement dibawahnya *)<br />while (j>=1) do<br />begin<br />fac:=fac*j;<br />j:=j-1;<br />end;<br />writeln('Nilai ',i,' faktorial= ', fac);<br />readln;<br />end.<br />// file: whileascontrol.pas<br />program whileascontrol;<br />uses crt;<br />var<br />i,j :integer;<br />fac :integer;<br />ans :char;<br />begin<br />ans:='Y';<br />while ((ans='Y') or (ans='y')) do<br />begin<br />clrscr;<br />fac:=1;<br />write('Masukkan bil. faktorialnya: ');<br />readln(i);<br />j:=i;<br />while (j>=1) do<br />begin<br />fac:=fac*j;<br />PASCAL – Loop 9<br />j:=j-1;<br />end;<br />writeln('Nilai ',i,' faktorial= ', fac);<br />writeln();<br />writeln();<br />write('Ulangi Program ini (Y/T)?');<br />readln(ans);<br />end;<br />end.<br />LOOP REPEAT<br />// file: contohrepeat.pas<br />program contohrepeat;<br />uses crt;<br />var<br />i,j :integer;<br />fac :integer;<br />begin<br />fac:=1;<br />write('Masukkan bil yang akan dicari nilai factorialnya: ');<br />readln(i);<br />j:=i; // initial value<br />repeat<br />fac:=fac*j;<br />j:=j-1;<br />until (j<=1); (* Nilai kondisi setelah until harus true agar looping berhenti *) writeln('Nilai ',i,' faktorial= ', fac); readln; end. // file: repeatascontrol.pas program repeatascontrol; uses crt; var i,j :integer; fac :integer; begin clrscr; fac:=1; //Masukkan harus lebih dari 0 repeat clrscr; write('Masukkan bil. faktorialnya: '); readln(i); until (i>0);<br />j:=i;<br />repeat<br />fac:=fac*j;<br />j:=j-1;<br />until (j<=1); writeln('Nilai ',i,' faktorial= ', fac); readln; end. Ubah file whileascontrol.pas dalam bentuk perulangan repeat..until! </p>Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com1tag:blogger.com,1999:blog-8810105150088052059.post-23341261076650735852008-10-22T03:40:00.001-07:002008-11-20T23:58:18.736-08:00Procedure dan FunctionProcedure dan Function adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama. <br /> PROCEDURE <br />Prosedur diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan menyebutkan judul prosedurnya. <br />Prosedur banyak digunakan pada program yang terstruktur, karena : <br />1. Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur. <br />2. Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan. <br /><br />Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block. Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja. <br /><br />Bentuk Umum header suatu procedure adalah : <br /><br />PROCEDURE nama; Atau <br /><br />PROCEDURE nama (formal parameter : jenis); <br />Jika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus dituliskan pada bagian deklarasi. <br />Contoh : Misal akan dibuat suatu procedure untuk menentukan bilangan bulat terbesar diantara tiga bilangan bulat, maka procedure tersebut adalah sebagai berikut : <br />PROCEDURE maksimum; <br />VAR max : integer; <br />BEGIN <br /> IF a > b THEN max := a ELSE max := b; <br /> IF c > max THEN max := c; <br />WRITELN(max); <br /><br />END.<br /><br /> <br />Selanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk penulisan sebagai berikut : <br />PROGRAM contoh_1; HEADER program utama <br />VAR a,b,c : integer; <br /> PROCEDURE maksimum; <br /> VAR max : integer; <br />BEGIN <br /> IF a>b THEN max := a ELSE max := b; deklarasi program <br /> IF c>max THEN max := c; utama <br /> WRITELN(max); <br />END; <br />BEGIN <br /> READLN(a,b,c); <br /> Maksimum statement program utama <br /><br />END.<br /><br /> <br />Contoh 2 : <br />PROGRAM CONTOH_2; <br />VAR p,l,t,vol,panj : real; <br />PROCEDURE kotak; <br />VAR v,pl : real; <br />BEGIN <br /> v := p * l * t ; <br /> pl := p + 2.0 * t; <br /> writeln(v,pl); <br />END; <br />BEGIN <br /> writeln(‘panjang’ : 10,’lebar’ : 10,’tinggi’ : 10); <br /> readln(p,l,t); <br /> kotak; <br /><br />END.<br /><br /> <br />JANGKAUAN IDENTIFIER <br />Identifier yang dideklarasikan dalam suatu blok program hanya berlaku pada blok dimana identifier tersebut didefinisikan. <br />Contoh : <br />1. PROGRAM p; <br />VAR x : real; <br />PROCEDURE pl; <br />VAR y : integer; <br />begin <br />………………..; daerah berlakunya y daerah <br />………………..; berlakunya x <br />end; <br />begin <br />………………..; <br />………………..; <br />end. <br />y → variabel global <br />2. Program P ; <br />Var x,y : real; y (real) berlaku disemua blok …………… program P, kecuali di P1 <br />…………… x (real) berlaku disemua <br />blok P, kecuali di P2 <br />Procedure Pl ; <br />Var y : integer; hanya berlaku di P1 saja (lokal) <br />…………….. <br />Begin <br />……… <br />……… <br />End; <br />Procedure P2; <br />Var x : char; hanya berlaku di P2 saja (lokal) <br />…………… <br />Begin <br />……….. <br />……….. <br />End; <br />Begin <br />…………. <br />x := ……. x dan y yang dimaksud adalah x dan y real <br />y := ……. (variabel global) <br />………… <br />End. <br />Halaman : 3Pemrograman PASCAL : Procedure & Function <br />PROCEDURE DENGAN PARAMETER <br />Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya. <br />Contoh : <br />Prosedur Tanya_hitung; <br />Var X,Y :real; <br />Begin <br /> Write (‘Nilai X ?’); <br /> Readln(X); <br /> Y:=X*X; <br /> Writeln(‘Nilai Y = ‘,Y:6:2); <br />End; <br />Begin <br /> Tanya_Hitung; <br /><br />End.<br /><br /> <br />Hasilnya : <br />Nilai X ? 5 <br />Nilai Y = 25.00 <br />Keterangan : <br /><br />Variabel X dan Y sifatnya adalah lokal untuk prosedur Tanya_hitung, artinya hanya dapat digunakan pada modul itu saja, Pada modul yang lain tidak dapat digunakan, contoh : <br /><br /><br />Prosedur Tanya_hitung; <br /><br />Var <br /><br /> X,Y :real; <br />Begin <br /> Write (‘Nilai X ?’); <br /> Readln(X); <br /> Y:=X*X; <br />End; <br />Begin <br /> Tanya_Hitung; <br /> Writeln(‘Nilai Y = ‘,Y:6:2); <br /><br />End.<br /><br /> <br />Hasilnya : <br />Error 31: Unknown identifier <br /><br />Supaya nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara : <br />1. Dibuat bersifat global <br />Harus dideklarasikan di atas modul yang menggunakannya. <br />Procedure kesatu; <br />Begin <br />……. <br />…….. <br />End; (*akhir dari procedure kesatu……*) <br />Var <br />A,B : word; <br />Procedure kedua; <br />Begin <br />…….. <br />…….. <br />End; (*akhir dari procedure kedua*) <br />Procedure ketiga; <br />Begin <br />…….. <br />…….. <br />End; (*akhir dari procedure ketiga*) <br />Begin <br />…….. <br />…….. <br />End. (*akhir dari modul utama*) <br />Pada contoh diatas, variabel A dab B bersifat global untuk prosedur kedua, ketiga dan utama, tetapi tidak bersifat global untuk prosedur kesatu, sehingga prosedur kesatu tidak dapat menggunakan variabel-variabel tersebut. <br />Halaman : 5Pemrograman PASCAL : Procedure & Function <br />Var <br />A,B : real; <br />Procedure kesatu; <br />Begin <br />……. <br />…….. <br />End; (*akhir dari procedure kesatu……*) <br />Procedure kedua; <br />Begin <br />…….. <br />…….. <br />End; (*akhir dari procedure kedua*) <br />Procedure ketiga; <br />Begin <br />…….. <br />…….. <br />End; (*akhir dari procedure ketiga*) <br />Begin <br />…….. <br />…….. <br />End. (*akhir dari modul utama*) <br />Pada contoh ini, variabel A dan B bersifat global untuk semua modul. <br />2. Dikirimkan sebagai parameter ke modul yang membutuhkannya. <br />Parameter yang dikirim dari modul utama ke modul prosedur disebut actual parameter, dan parameter yang ada dan dituliskan pada judul prosedur disebut formal parameter. <br />2.1 Pengiriman parameter secara nilai <br />Parameter yang dikirimkan secara nilai, maka parameter formal yang ada di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur. <br />Perhatikan procedure berikut : <br />Procedure konversi; <br />begin <br />f := (5/9) * c + 32; f dan c variabel global, c sebagai input dan <br />Halaman : 6Pemrograman PASCAL : Procedure & Function <br />writeln(c,f); f sebagai output. <br />end; <br />Procedure di atas dapat dipanggil dengan variabel yang berbeda, tetapi penulisannya harus diubah dengan menggunakan parameter sbb: <br />Procedure konversi (var f : real; c : real); <br />Begin <br />F := (5/9) * c + 32; disebut formal parameter <br />Writeln(c,f); <br />End; <br />Selanjutnya procedure di atas dapat dipanggil dengan parameter lain, misalnya : <br />konversi (x,y) ; <br />actual parameter <br />x dan y disebut sebagai actual parameter. <br />Pada eksekusinya x akan menggantikan c dan y akan menggantikan f. <br />x dan y ini dapat berupa : <br />- konstanta <br />- variabel <br />- procedure, atau <br />- fungsi <br /><br />Contoh : <br />Procedure Hitung(A,B : integer); <br />Var C : integer; <br />Begin <br /> C := A + B; <br /> Writeln(‘Nilai C = ‘,C) <br />End; <br /><br />Var<br /><br /> X,Y : integer; <br />Begin <br /> Write(‘Nilai X ? ‘); <br /> Readln(X); <br /> Write(‘Nilai Y ?’); <br /> Readln(Y); <br /> Hitung(X,Y); <br /><br />End.<br /><br /> <br />Hasilnya : <br />Nilai X ? 2 <br />Nilai Y ? 3 <br />Nilai C = 5 <br /><br />2.2 Pengiriman parameter secara acuan <br />Bila pengiriman parameter secara acuan (by reference), maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai actual parameter . <br />Procedure hitung(Var A,B,C : integer); <br />Menunjukkan pengiriman parameter secara acuan. <br />Contoh : <br />Procedure Hitung(Var A,B,C : integer); <br />Begin <br />C := A + B; <br />End; <br /> Var X,Y,Z : integer; <br />Begin <br /> X := 2; Y:= 3; <br /> Hitung(X,Y,Z); <br /> Writeln(‘X = ‘,X,’ Y = ‘,Y,’ Z = ‘,Z); <br /><br />End.<br /><br /> <br />Hasilnya : <br />X = 2 Y = 3 Z = 5 <br />Acuan Forward <br />Digunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya. <br />Contoh : <br /><br />Procedure pro1(var I : integer); Forward; <br />Procedure pro2(var I : integer); <br />Begin <br /> Writeln(‘prosedur pro’, I); <br />End; <br /> Procedure pro1; <br />Begin <br /> Writeln(‘prosedur pro’,I); <br />End; <br />Var I : integer; <br />Begin <br /> I := 1; pro1(I); <br /> I := 2; pro2(I); <br /><br />End.<br /><br /> <br />Hasilnya : <br />prosedur pro1 <br />prosedur pro2 <br />Prosedur Standar <br />Prosedur yang disediakan oleh Turbo Pascal : <br />1. Prosedur standar EXIT <br />Digunakan untuk keluar dari suatu blok. <br />2. Prosedur standar HALT <br />Digunakan untuk menghentikan proses program baik di program bagian maupun di program utama. <br />3. Prosedur standar MOVE <br />Bentuk umum : MOVE (Var source,dest; count : word); <br />Digunakan untuk menyalin suatu blok sebanyak count byte memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest. <br />4. Prosedur standar FILLCHAR <br />Digunakan untuk mengisi sejumlah byte nilai ke dalam suatu variabel, sebagai berikut <br />FillChar(x;count :word;ch); <br />X adalah variabel yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal Ch sebanyak count byte. <br /><br /> FUNCTION <br />Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya atau jenis hasilnya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. <br />Pada bahasa Pascal dikenal beberapa fungsi, misalkan : abs, pred, sqrt, sqr, succ dan sebagainya. <br />Fungsi-fungsi tersebut biasanya dikenal dengan Built in Function. Sedangkan function yang akan bicarakan disini adalah fungsi yang kita buat sendiri. <br />Berbeda dengan procedure, function merupakan modul program yang menghasilkan suatu kuantitas. <br />Hal ini dapat dilihat dari bentuk header-nya yang menyebutkan jenis data dari kuantitas yang dihasilkan. <br />Secara umum bentuk header suatu function adalah : <br />FUNCTION nama : jenis hasil; <br />Atau FUNCTION nama (formal parameter : jenis ) : jenis_hasil; <br />Contoh : <br />1. Akan dibuat suatu fungsi dengan nama MAX yang dapat menentukan integer terbesar di antara dua integer. <br />Function MAX (x,y : integer) : integer; <br />Begin <br />If x < ab =" POWER" ba =" POWER" s =" POWER" 3 =" 5" faktorial =" ‘,faktorial(N):9:0);" 1 =" 4" 1 =" 24">1 <br />Function fibonacci ( n : integer ) : integer; <br />Begin <br />If n = 0 then fibonacci := 0 <br />Else <br />If n := 1 then fibonacci := 1 <br />Else fibonacci := fibonacci (n-1) + fibonacci (n-2); <br />End; <br />3. Procedure reverse ( num : integer ); <br />Begin <br />If num < 10 then write(num) <br />Else begin <br />Write(num mod 10); <br />Reverse(num div 10); <br />End; <br />End; <br /><br />Fungsi Standar <br />1. Fungsi standar arutmatika <br />• Fungsi standar ABS <br />Bentuk umum : ABS(x); <br />Digunakan untuk memutlakkan suatu nilai yang ditunjukkan oleh argumen x. <br />Contoh : <br />Begin <br />X:=-2.3; <br />Write(‘Nilai X = ‘,X,’ Nilai mutlaknya = ‘,Abs(X):3:1); <br />End. <br />• Fungsi standar EXP <br />Bentuk Umum : EXP(x:):real; <br />Digunakan untuk menghitung nilai pangkat dari bilangan e yaitu sebesar ex. Hasilnya berupa nilai real. <br /><br /><br />• Fungsi standar LN <br />Bentuk umum : LN(x):real; <br />Digunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai x. Hasilnya berupa nilai real. <br /><br />• Fungsi standar INT <br />Bentuk umum : INT(x:real):real; <br />Digunakan untuk menghasilkan nilai integer dari x. hasil dari fungsi adalah tipe real dengan nilai yang berupa pembulatan ke bawah (nilai pecahan dibuang) dari nilai x. <br />Contoh : <br />Begin <br />X:=9.99; <br />Write(‘Nilai yang akan dibulatkan = ‘,X); <br />Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2); <br />End. <br /><br />Hasil : <br />Nilai yang akan dibulatkan = 9.99 <br />Nilai pembulatannya = 9.00 <br />• Fungsi standar FRAC <br />Bentuk umum : FRAC(x:):real; <br />Digunakan untuk mendapatkan nilai pecahan dari argumen x. Argumen x dapat bernilai real maupun integer dan hasil dari fungsi adalah real. <br />Contoh : <br />Begin <br />X:=9.99; <br />Write(‘Nilai X = ‘,X,’ Nilai pecahannya = ‘,Frac(X):4:3); <br />End. <br />Hasilnya : Nilai X = 9.99 Nilai pecahannya = 0.990 <br /><br />• Fungsi standar SQR <br />Bentuk umum : SQR(x); <br />Digunakan untuk menghitung nilai pangkat kuadrat dari argumen x. <br />Contoh : <br />Begin <br />X :=2; <br />Write(‘Nilai X = ‘,X,’ Nilai kuadratnya = ‘,sqr(x)); <br />End. <br />Hasilnya : Nilai X = 2 Nilai kuadratnya = 4 <br /><br />• Fungsi standar SQRT <br />Bentuk umum : SQRT(x) : real; <br />Digunakan untuk menghitung nilai akar dari argumen x, hasilnya berupa real. <br /><br /><br />• Fungsi standar PI, SIN, COS, ARCTAN <br /><br />1. Fungsi Standar Transfer <br />Digunakan untuk merubah suatu nilai ke bentuk nilai lain. <br />• Fungsi standar CHR <br />Bentuk umum : CHR(x:byte):char; <br />Digunakan untuk merubah nilai dari byte x ke bentuk karakter yang sesuai dengan kode ASCII. <br />Contoh : <br />X := 66; <br />Write(‘Nilai X = ‘,x,’ Nilai karakternya = ‘,CHR(X)); <br />Hasilnya : Nilai X = 66 Nilai karakternya = B <br /><br />• Fungsi standar ORD <br />Bentuk umum : ORD(x):longint; <br />Digunakan untuk merubah nilai x ke bentuk nilai longint yang sesuai dengan kode ASCII, merupakan kebalikan dari fungsi CHR. <br /><br />• Fungsi standar ROUND <br />Bentuk umum : ROUND(x:real):longint; <br />Digunakan untuk membulatkan nilai dari real x ke nilai longint yang terdekat. Bila nilai pecahan sama dengan atau lebih besar dari 0.5 akan dibulatkan ke atas, sedang kalau lebih kecil dari 0.5 akan dibulatkan ke bawah. <br />Contoh : <br />Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Round(10/3)); <br />Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Round(20/3); <br />Hasilnya : <br />10 dibagi 3 hasil pembulatan terdekat adalah 3 <br />20 dibagi 3 hasil pembulatan terdekat adalah 7 <br /><br />• Fungsi standar TRUNC <br />Bentuk umum : TRUNC(x:real):longint; <br />Digunakan untuk membulatkan nilai dari real x ke nilai longint terkecil. Atau dengan kata lain membulatkan ke bawah. <br />Contoh : <br />Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Trunc(10/3)); <br />Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah ‘,Trunc(20/3); <br />Hasilnya : <br />10 dibagi 3 hasil pembulatan terdekat adalah 3 <br />20 dibagi 3 hasil pembulatan terdekat adalah 6 <br /><br /><br />1. Fungsi Standar Lainnya <br />Fungsi standar yang tidak termasuk dalam kelompok pembagian di atas : <br />• Fungsi standar Hi, Lo, Swap <br />• Fungsi standar Random <br />Bentuk umum : Random [(range :word)]; <br />Digunakan untuk menghasilkan angka random berkisar dari nilai lebih besar atau sama dengan nol dan lebih kecil dari satu. Bila range tidak disebutkan, hasil dari fungsi ini adalah real, bila range disebutkan, hasilnya adalah word. <br />• Fungsi standar SizeOf <br />Bentuk umum : SizeOf(x):word; <br />Digunakan untuk menunjukkan besarnya byte yang digunakan oleh suatu variabel x, hasilnya berupa nilai word. <br />• Fungsi standar UPCASE <br />Bentuk umum : UpCase(Ch:char):char; <br />Digunakan untuk merubah argumen suatu karakter yang ditunjukkan oleh Ch menjadi bentuk karakter huruf besar (upper case).Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-7939701245267968282008-10-22T03:39:00.001-07:002008-11-21T00:00:54.700-08:00ArrayArray adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char, string dan tipe data scalar atau subrange. Tipe larik mengartikan isi dari larik atau komponen- komponenya mempunyai nilai dengan tipe data tersebut. <br />Contoh: <br />Var <br />jumhitung : array[1..50] of Integer; <br />Pada contoh Array dengan nama jumhitung telah dideklarasikan dengan tipe integer, dengan jumlah elemen maksimum 50 elemen, nilai dari elemen array tersebut diatas harus bertipe integer. <br /><br />Contoh Program : <br />Program Contoh_Array_Input; <br />Uses Crt; <br />Var <br />Bilangan : array[1..50] of Integer; <br />Begin <br />ClrScr; <br />Bilangan[1]:=3; <br />Bilangan[2]:=29; <br />Bilangan[3]:=30; <br />Bilangan[4]:=31; <br />Bilangan[5]:=23; <br />Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]); <br />Readln; <br />End. <br />Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh dibawah ini : <br />Program Contoh_Deklarasi_Array_Beragam; <br />Uses Crt; <br />Var <br />NPM : array[1..20] of string[10]; <br />Nama : array[1..20] of string[25]; <br />Nilai : array[1..20] of real; <br />Umur : array[1..20] of byte; <br />banyak,i : integer; <br />Begin <br />ClrScr; <br />Write('Isi berapa data array yang diperlukan :');Readln(banyak); <br />For i := 1 to banyak Do <br />Begin <br />Write('NPM =');Readln(NPM[i]); <br />Write('Nama =');readln(Nama[i]); <br />Write('Nilai=');readln(Nilai[i]); <br />Write('Umur =');readln(Umur[i]); <br />End; <br />{cetak varibel array} <br />Writeln('NPM NAMA NILAI UMUR '); <br />For i:= 1 to banyak Do <br />Begin <br />Writeln(Npm[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3); <br />End; <br />Readln; <br />End. <br /><br />Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini : <br />Type <br />Angka = String[20]; <br />Var <br />Nama : Array [1..50] of Angka; <br />Begin <br />End. <br /><br />Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar atau subrange, tetapi tidak bisa real. <br />Contoh: <br />Var <br />Nilai : Array[1..10] of Integer; <br />pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array tersebut dapat dideklarasikan dengan type seperti berikut ini : <br /><br />Type <br />Skala = 1..10; <br />Var <br />Nilai : Array [skala] of Integer; <br />atau : <br />Type <br />Skala = 1..10; <br />Y = Array[skala] of Integer; <br />Var <br />Nilai : Y; <br />atau : <br />Type <br />Y = Array[1..10] of Integer; <br />Var <br />Nilai : Y; <br />atau : <br />Const <br />Atas =1; <br />Bawah = 5; <br />type <br />Y = Array[Atas..Bawah] of Integer; <br />Var <br />Nilai : Y; <br />I. Deklarasi Type Indeks Skalar <br />Indeks dari larik dapat berupa tipe skalar. <br />Contoh. : <br />Program Deklarasi_Indeks_Array_Skalar; <br />Uses Crt; <br />Var <br />Jum : Array[(jan,feb,mar,apr,mei)] of Integer; <br />Begin <br />Jum[jan]:=25; <br />Jum[feb]:=45; <br />Jum[mar]:=21; <br />Jum[apr]:=23; <br />Jum[mei]:=50; <br />Writeln('Jumlah nilai bulan maret =',Jum[mar]); <br />Readln; <br />End. <br />dapat juga ditulis : <br />type <br />Bln = (jan,feb,mar,apr,mei); <br />Var <br />Jum : Array[bln] of Integer; <br />atau : <br />type <br />Bln =(jan,feb,mar,apr,mei); <br />Var <br />Jum : Array[jan..mei] of Integer;<br /><br />II. Deklarasi Konstanta Array <br />Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const). <br />Contoh Program : <br />Program Contoh_Deklarasi_Array_Konstan; <br />Uses Crt; <br />Const <br />Tetap : Array[1..4] of Integer=(7,10,21,20); <br />Var <br />i : Integer; <br />Begin <br />For i:= 1 to 4 Do <br />Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]); <br />Readln; <br />End. <br />konstanta array dapat juga berupa ketetapan dalam bentuk karakter seperti berikut. <br />Contoh Program : <br />Program Contoh_Konstan_Array_Char_; <br />Uses Crt; <br />Const <br />Huruf : Array[0..5] of Char=('A','B','C','D','E','F'); <br />Var <br />i : Integer; <br />Begin <br />For i:= 0 to 5 Do <br />Writeln('Nilai konstan array ke',i:2,' = ',Huruf[i]); <br />Readln; <br />End. <br />Konstanta array dapat juga berupa string seperti berikut ini. <br />Contoh Program : <br />Program Constanta_Array_String; <br />Uses Crt; <br />Type <br />A = Array [1..5] of String; <br />Const <br />Nama : A = ('basic','pascal','cobol','paradox','dbase'); <br />Var <br />i : Integer; <br />Begin <br />For i:= 1 to 5 Do <br />Writeln('Nilai Array ke-',i:2,'= ',Nama[i]); <br />readln; <br />end. <br /><br />Dalam pascal string merupakan array dari elemen- elemen karakter seperti berikut : <br />Contoh Program : <br />Program String_Adalah_Array_Tipe_Char; <br />Uses Crt; <br />Var <br />Nama : string; <br />i : Integer; <br />Begin <br />Nama:='Turbo Pascal'; <br />For i:= 1 to Length(nama) Do <br />Writeln('Elemen ',i,' dari ',Nama,'= ',Nama[i]); <br />Readln; <br />End. <br /><br />contoh program bilangan prima dengan menggunakan bantuan array. <br />Contoh program : <br />Program Mencari_Bilangan_Prima_Dengan_Array; <br />Uses Crt; <br />Var <br />Prima : Array[1..100] of Integer; <br />i,j : Integer; <br />bil : Integer; <br />Begin <br />ClrScr; <br />For i := 2 to 100 Do <br />Begin <br />Prima[i]:=i; <br />For j:= 2 to i-1 Do <br />Begin <br />bil := (i mod j); {* i dibagi j dicek apakah 0*} <br />If bil = 0 then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*} <br />End; <br />If Prima[i]<> 0 Then Write(Prima[i],' '); {*cetak array yg prima*} <br />End; <br />Readln; <br />End. <br /><br />Contoh pengurutan data dengan metode buble sort, yaitu dengan cara penukaran, dapat dilihat pada contoh dibawah ini : <br />Contoh Program : <br />Program Penggunaan_Array_Untuk_Sortir_Buble_Sort; <br />Uses Crt; <br />Var <br />nil1 : Array[1..100] of Integer; <br />n,i,j,dum : Integer; <br />Begin <br />ClrScr; <br />Write('mau isi berapa data acak (integer) ='); readln(n); <br />For i := 1 to n Do <br />Begin <br />Write('Data Ke ',i,':');Readln(nil1[i]); <br />End; <br />{* penyapuan proses} <br />for i:= 1 to n-1 do <br />begin <br />for j:= i to n do <br />begin <br />if nil1[j]begin <br />dum:=nil1[j]; <br />nil1[j]:=nil1[i]; <br />nil1[i]:=dum; <br />end; <br />end; <br />end; <br />writeln; <br />writeln('Hasil Sortir'); <br />for i := 1 to n do <br />write(nil1[i]:3); <br />readln; <br />end. <br /><br /><br />III. Array Dua Dimensi <br />Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array), disini akan dibahas array 2 dimensi saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik. <br />Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat pada listing program dibawah ini . <br /><br />Contoh Program: <br />Program Deklarasi_Array_Dua_Dimensi; <br />Uses Crt;<br />Var Tabel : Array[1..3,1..2] of Integer;<br />i,j : Integer;<br />Begin <br />ClrScr; <br />Tabel[1,1]:=1; <br />Tabel[1,2]:=2; <br />Tabel[2,1]:=3; <br />Tabel[2,2]:=4; <br />Tabel[3,1]:=5; <br />Tabel[3,2]:=6; <br />For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]); <br />End; <br />End; <br />Readln; <br />End. <br /><br /><br />IV. Alternatif Deklarasi Array Dua Dimensi. <br />Ada beberapa cara dalam mendeklarasikan array dua dimensi, beberapa cara tersebut dapat dilihat dibawah ini : <br />Contoh : <br />Var <br />Tabel : Array[1..3] of Array[1..2] of Byte; <br />atau : <br />Type <br />Matrik = Array[1..3,1..2] of Byte; <br />Var <br />Tabel : Matrik; <br />atau : <br />Type <br />Baris = 1..3; <br />Kolom = 1..2; <br />Matrik = Array[Baris,Kolom] of Byte; <br />Var <br />Tabel : Matrik; <br />atau : <br />Type <br />Baris = 1..3; <br />Kolom=1..2; <br />Matrik= Array[Baris] of Array[Kolom] of Byte; <br />Var <br />Tabel : Matrik; <br />Dibawah ini akan diberikan listing program penggunaan array dua dimensi dalam aplikasi penjumlahan matrik : <br />Contoh Prorgam: <br />Program Penjumlahan_Matrik; <br />Uses Crt; <br />Var <br />Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer; <br />i,j : Integer; <br />Begin <br />ClrScr; <br />{ input matrik ke satu } <br />Writeln(' Elemen matrik satu'); <br />For i := 1 to 3 Do <br />Begin <br />For j := 1 to 2 Do <br />Begin <br />Write('Elemen baris -',i,' Kolom -',j,'= '); <br />Readln(matrik1[i,j]); <br />End; <br />End; <br />{input matrik ke dua} <br />Writeln('input elemen matrik dua'); <br />For i:= 1 to 3 Do <br />Begin <br />For j:= 1 to 2 Do <br />Begin <br />Write('Elemen baris -',i,' kolom -',j,'= '); <br />Readln(matrik2[i,j]); <br />End; <br />End; <br />{proses penjumlahan tiap elemen} <br />For i := 1 to 3 Do <br />Begin <br />For j:= 1 to 2 Do <br />Begin <br />Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j]; <br />End; <br />End; <br />{proses cetak hasil} <br />For i:= 1 to 3 Do <br />Begin <br />For j:= 1 to 2 Do <br />Begin <br />Write(Hasil[i,j]:6); <br />End; <br />Writeln; <br />End; <br />Readln; <br />End. <br /><br /><br />V. Array Sebagai Parameter <br />Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai (by value) atau secara acuan (by reference) ke procedure atau ke function. Procedure yang menggunakan parameter berupa array harus dideklarasikan di dalam judul procedure yang menyebutkan parameternya bertipe array. <br /><br />Contoh Program : <br />Program Contoh_Pengiriman_Parameter_Array_Di_Procedure; <br />Uses Crt; <br />Const <br />Garis ='---------------------------------------------------'; <br />Type <br />nama = Array[1..10] of String[15]; <br />Bulat = Array[1..10] of Integer; <br />Huruf = Array[1..10] of Char; <br />Var <br />i,Banyak : Integer; <br />Procedure Proses(Nama:Untai;Nilai:Bulat); <br />Var <br />Ket : String; <br />Abjad : Char; <br />Begin <br />Writeln(Garis); <br />Writeln('Nama Nilai Abjad Keterangan'); <br />Writeln(Garis); <br />For i := 1 to Banyak Do <br />Begin <br />If Nilai[i] > 90 Then <br />Begin <br />Abjad:='A'; <br />Ket :='Istimewa'; <br />End; <br />If (Nilai[i]<90)>70) Then <br />Begin <br />Abjad:='B'; <br />Ket :='Memuaskan'; <br />End; <br />If (Nilai[i]<70)>60) Then <br />Begin <br />Abjad:='C'; <br />Ket :='Cukup'; <br />End; <br />If (Nilai[i]<60)>45) Then <br />Begin <br />Abjad:='D'; <br />Ket :='Kurang'; <br />End; <br />If Nilai[i]< data ="');Readln(Banyak);" nama ="');readln(Nama[i]);" nilai ="');readln(Nilai[i]);" mahasiswa ="’" data =" ‘);readln(JumDat);" mahasiswa ="’,nama);" nilai =" ‘," rata =" ‘," mahasiswa ="’" data =" ‘);readln(JumDat);" mahasiswa ="’,nama);" nilai =" ‘," rata =" ‘," ask="’Y')or(ask="’y')">=15 then<br />Begin<br />harkot[j]:=jumbel[j]*harsat[j];<br />pot[j]:=0.1*harkot[j];<br />harsih[j]:=jumbel[j]*harsat[j]-pot[j];<br />End<br />Else if jumbel[j]>=30 then<br />Begin<br />harkot[j]:=jumbel[j]*harsat[j];<br />pot[j]:=0.2*harkot[j];<br />harsih[j]:=jumbel[j]*harsat[j]-pot[j];<br />End<br />Else<br />Begin<br />harkot[j]:=jumbel[j]*harsat[j];<br />pot[j]:=0*harkot[j];<br />harsih[j]:=jumbel[j]*harsat[j]-pot[j];<br />End;<br />End;<br />clrscr;<br />Gotoxy(1,1);Writeln(’===========================================================================’);<br />Gotoxy(2,2);Writeln(’No’);<br />Gotoxy(7,2);Writeln(’Merk’);<br />Gotoxy(16,2);Writeln(’Ukuran’);<br />Gotoxy(24,2);Writeln(’Jumlah’);<br />Gotoxy(32,2);Writeln(’Harga’);<br />Gotoxy(55,2);Writeln(’Potongan’);<br />Gotoxy(70,2);Writeln(’Total’);<br />Gotoxy(1,3);Writeln(’Urut’);<br />Gotoxy(7,3);Writeln(’Susu’);<br />Gotoxy(16,3);Writeln(’Kaleng’);<br />Gotoxy(25,3);Writeln(’Beli’);<br />Gotoxy(32,3);Writeln(’Satuan’);<br />Gotoxy(70,3);Writeln(’Bayar’);<br />Gotoxy(1,4);Writeln(’===========================================================================’);<br />For j:=1 to i do<br />Begin<br />Gotoxy(1,j+4);Writeln(j);<br />Gotoxy(7,j+4);Writeln(merk[j]);<br />Gotoxy(18,j+4);Writeln(ukuran[j]);<br />Gotoxy(26,j+4);Writeln(jumbel[j]);<br />Gotoxy(32,j+4);Writeln(’Rp’,harsat[j]);<br />Gotoxy(55,j+4);Writeln(’Rp ‘,pot[j]:0:2);<br />Gotoxy(67,j+4);Writeln(’Rp ‘,harsih[j]:5:2);<br />End;<br />Writeln(’===========================================================================’);<br />Readln;<br />End.<br /><br /><br />Contoh Array Toko serba ada<br />uses crt;<br />var<br />np:string[20];<br />jd,i:byte;<br />nb:array[1..50]of string;<br />jb,ttl,hrg:array[1..50]of real;<br />tot:real;<br />lagi:char;<br />label awal,akhir;<br />begin<br />awal:<br />clrscr;<br />writeln(’TOKO “SERBA ADA”‘);<br />writeln(’————————-’);<br />write(’masukan nama pembeli :’);readln(np);<br />write(’masukan jumlah data :’);readln(jd);<br />for i:=1 to jd do<br />begin<br />writeln(’data ke- ‘,i);<br />write(’nama barang :’);readln(nb[i]);<br />write(’jumlah beli :’);readln(jb[i]);<br />write(’harga :’);readln(hrg[i]);<br />end;<br />clrscr;<br />writeln(’ TOKO “SERBA ADA”‘);<br />writeln(’ TABEL PENJUALAN BARANG’);<br />writeln(’———————————————————–’);<br />writeln(’No. Nama pembeli Nama barang<br />Jumlah harga total ‘);<br />writeln(’———————————————————–’);<br />tot:=0;<br />for i:=1 to jd do<br />begin<br />ttl[i]:=hrg[i]*jb[i];<br />tot:=tot+ttl[i];<br />end;<br />for i:=1 to jd do<br />begin<br />writeln(i:1,np:10,nb[i]:13,jb[i]:12:0,hrg[i]:8:0,ttl[i]:10:0);<br />end;<br />writeln(’————————————————————-’);<br />writeln(’total bayar= ‘,tot:3:0);<br />writeln(’————————————————————-’);<br />write(’Mau input data<br />lagi[Y/T]=’);readln(lagi);<br />if (lagi=’Y') or (lagi=’y') then<br />goto awal<br />else<br />goto akhir;<br />akhir:<br />readln;<br />end.<br /><br /><br /><br />Contoh Array Bengkel<br /><br />program bengkel;<br />uses crt;<br />var<br />i,b:byte;<br />nm,nmoli,jnsmbl:array [1..50]of string;<br />hrg,bonus,hrgsev,hrgoli,tot:array [1..50]of<br />real;<br />totb:real;<br />begin<br />clrscr;<br />writeln(’BENGKEL MAJU MUNDUR’);<br />writeln(’========================’);<br />write(’Masukan data: ‘);readln(b);<br />for i:=1 to b do<br />begin<br />writeln(’data ke- ‘,i);<br />writeln;<br />write(’nama pengunjung :’);readln(nm[i]);<br />write(’jenis kendaraan [1. mobil| 2.<br />motor]:’);readln(jnsmbl[i]);<br />write(’jenis oli [ 1. castrol| 2. pelumas<br />pertamina]:’);readln(nmoli[i]);<br />end;<br />writeln;<br />writeln(’ PROGRAM SERVIC BENGKEL<br />MAJU MUNDUR’);<br />writeln(’======================================================================’);<br />writeln(’NO NAMA PENGUNJUNG JENIS<br />KENDARAAN JENIS OLI TOTAL ‘);<br />writeln;<br />totb:=0;<br />for i:=1 to b do<br />begin<br />if jnsmbl[i]=’1′ then<br />hrgsev[i]:=30000<br />else<br />hrgsev[i]:=20000;<br />if nmoli[i]=’2′ then<br />hrgoli[i]:= 20000<br />else<br />hrgoli[i]:=30000;<br />tot[i]:=hrgsev[i]+hrgoli[i];<br />totb:=totb+tot[i];<br />end;<br />for i:=1 to b do<br />begin<br />writeln(i:1,nm[i]:9,hrgsev[i]:14:0,hrgoli[i]:18:0,tot[i]:19:0);<br />end;<br />writeln(’=================================================================’);<br />writeln(’total bayar<br />:’,totb:2:0);<br />readln;<br />end.<br /><br /><br />Contoh Array Kereta<br /><br />uses crt;<br />var<br />jp,i:byte;<br />np,nk:array[1..50]of string;<br />fsl:array[1..50]of char;<br />jml,hrg,ttl:array[1..50]of real;<br />tot:real;<br />lagi:char;<br />label awal,akhir;<br />begin<br />awal:<br />clrscr;<br />writeln(’STASIUN “HARUS BERHENTI” ‘);<br />writeln(’================================’);<br />write(’masukan jumlah pemesan :’);readln(jp);<br />for i:=1 to jp do<br />begin<br />writeln(’Data ke- ‘,i);<br />write(’Nama pemesan :’);readln(np[i]);<br />write(’Nama kereta :’);readln(nk[i]);<br />writeln(’fasilitas [ 1.VVIP 3.BISNIS ');<br />write(' 2.VIP 4.EKONOMI ]<br />=’);readln(fsl[i]);<br />write(’jumlah pesan :’);readln(jml[i]);<br />end;<br />writeln(’ STASIUN “HARUS BERHENTI” ‘);<br />writeln(’ PROGRAM PENJUALAN TIKET KERETA API’);<br />writeln(’————————————————————————-’);<br />writeln(’NO. Nama Pemesan Nama Kereta Fasilitas Jumlah Pesan harga total’);<br />tot:=0;<br />for i:=1 to jp do<br />begin<br />if fsl[i]=’1′ then<br />hrg[i]:=200000<br />else<br />if fsl[i]=’2′ then<br />hrg[i]:=180000<br />else<br />if fsl[i]=’3′ then<br />hrg[i]:=140000<br />else<br />hrg[i]:=80000;<br />ttl[i]:=hrg[i]*jml[i];<br />tot:=tot+ttl[i];<br />end;<br />for i:=1 to jp do<br />begin<br />writeln(i:1,np[i]:10,nk[i]:12,fsl[i]:15,jml[i]:14:0,hrg[i]:12:0,ttl[i]:10:0);<br />end;<br />writeln(’————————————————————————–’);<br />writeln(’total pembayaran<br />=’,tot:9:0);<br />writeln(’————————————————————————–’);<br />write(’Mau input data lagi[Y/T]=’);readln(lagi);<br />if (lagi=’Y') or (lagi=’y') then<br />goto awal<br />else<br />goto akhir;<br />akhir:<br />readln;<br />end.<br /><br />Selamat MencoBa Semoga Berhasil Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com2tag:blogger.com,1999:blog-8810105150088052059.post-76211398175550683762008-10-22T03:38:00.002-07:002008-11-21T00:29:36.986-08:00RecordRecord dapat dikatakan sebagai suatu kumpulan data item yang masing-masing mempunyai jenis data berbeda.Data item yang merupakan elemen record biasanya disebut dengan FIELD.CARA MENDEKLARASIKAN RECORDBentuk umum deklarasi suatu variabel berjenis record adalah sbb :TYPE identifier = RECORDNama_field_1 : jenis;Nama_field_2 : jenis;……………………..……………………..nama_field_n : jenis;END;Contoh :1. VAR nilai : RECORDNilai_1 : integer;Nilai_2 : integer;END;2. TYPE date = RECORDTanggal : 1..31;Bulan : 1…12;Tahun : 1900..2000;END;VAR event1,event2 : ARRAY [1..10] OF date;3. TYPE account = RECORDcust_no : integer;cust_type : char;cust_balance : real;END;VAR customer : account;Halaman : 1Pemrograman PASCAL : Record & SetMEMPROSES VARIABEL BERJENIS RECORDPerhatikan deklarasi variabel berikut :TYPE nilai : RECORDNilai1 : real;Nilai2 : real;END;VAR x,y : nilai;Untuk memproses variabel x dan / atau y dilakukan dengan cara menyebutkan field designatornya, yg terdiri dari atas :Nama_record.nama_fieldPada deklarasi diatas yang dimaksud dengan field designator-nya adalah :x.nilai1x.nilai2y.nilai1y.nilai2Jadi jika ingin membaca variabel x atau y atau keduanya, maka bentuk statement-nya adalah :READ (x.nilai1, x.nilai2, y.nilai1, y.nilai2);Selanjutnya, misal ingin dibuat program sederhana untuk menjumlahkan dua bilangan kompleks a dan b yang hasilnya disimpan di c.Secara aljabar penjumlahan dua bilangan kompleks adalah sebagai berikut :a = x1 + iy1b = x2 + iy2 +c = (x1 + x2 ) + I(y1 + y2)Maka bentuk garis besar programnya adalah sebagai berikut :Program contoh ;Type bk = recordBag_nyata : integer;Bag_imajiner : integer;End;Var a,b,c : bk;BeginRead (a.bag_nyata, a.bag_imajiner, b.bag_nyata, b.bag_imajiner);c.bag_nyata := a.bag_nyata + b.bag_imajiner;c.bag_imajiner := a.bag_imajiner + b.bag_imajiner;writeln(c.bag_nyata,’ +’,’i’,c.bag_imajiner);End.STATEMENT “WITH”Selain cara yang telah disebutkan diatas, untuk memproses suatu record dapat digunakan statement WITH.Dengan statement ini penulisannya akan lebih sederhana.Halaman : 2Pemrograman PASCAL : Record & SetBentuk Umum penulisan statement WITH ini adalah :WITH nama_record DO statementPerhatikan deklarasi dibawah ini :TYPE x = RECORDNo : integer;Kode : char;Juml : integer;Harga : real;END;VAR p,q : x;Untuk membaca variabel p dan q di atas dengan memanfaatkan statement WITH bentuknya menjadi :WITH p,q DO read (no, kode, juml, harga);Bandingkan jika digunakan cara sebelumnya :Read(p.no, p.kode, p.juml,p.harga,q.no,q.kode,q.juml,q.harga);CONTOH :Pernyataan seperti :Data.npm :=‘22297566’Data.Nama:=‘Abdul Kadir’Data.Fakultas:=‘Teknik’Dapat diganti dengan :WITH Data DoBeginnpm :=‘22297566’Nama:=‘Abdul Kadir’Fakultas:=‘Teknik’end;Apabila di dalam pernyataan WITH terdapat lebih dari satu record, haruslah pada kedua record tersebut tidak ada field dengan nama yang sama. Sebagai contoh :TypeBarangX=RECORDBatu:integer;Kayu:real;END;BarangY=RECORDHalaman : 3Pemrograman PASCAL : Record & SetBatu:string[10];Kayu:char;END;Varbrg_X:barangX;brg_Y:barangY;Karena kedua variabel record brg_X dan brg_Y memiliki nama field yang sama, Jika misalnya kemudian dikenakan pernyataan :WITH brg_X, brg_Y DoBeginwriteln(batu);writeln(kayu);End;dapat menyebabkan hasil tidak seperti yang diharapkan.Record yang BervariasiYaitu suatu record dengan field yang bisa berubah pada saat program berjalan. Hal yang perlu diperhatikan adalah bahwa beberapa field yang berada dalam record tidak pernah muncul dalam serempak, hanya akan ada satu field yang terpakai dalam satu saat.Record varian akan memberikan fasilitas untuk menentukan field yang diperlukan pada saat program berjalan (RUN-TIME), berdasarkan keperluannya.Bentuk umum Record Varian :TYPE namarecord = RECORDNama_field_1 : jenis;Nama_field_2 : jenis;……………………..nama_field_n : jenis;Case Tagfield:jenis Ofnama_tagfield : (Nama_field:jenis);nama_tagfield : (Nama_field_1, Nama_field_2:jenis);……………………..nama_tagfield : (Nama_field_n:jenis);END;Contoh :Type status=(T,P,J);gaji=RECORDnapeg :string[25];nopeg :string[10];bagian :string[15];CASE stat :status OFT:(gaji:integer);P:(gajiperjam,jmlmax:integer);J:(upahperjam,lembur:integer);end;Halaman : 4Pemrograman PASCAL : Record & SetArray tipe recordtype barang=RECORDnamabrg:string[20];jmlbrg:byte;hargabrg:real;total:real;end;var jual:array [1..10] of barangi,j:integer;tot1:real;BeginI:=1;write(‘Nama barang :’);readln(jual[i].nmbrg);Repeatwrite(‘Jumlah barang :’);readln(jual[i].jmlbrg);write(‘Harga barang :’);readln(jual[i].hrgbrg);jual[i].total:=jual[i].jmlbrg* jual[i]. jual[i].hrg.brg;inc (I);write(‘Nama barang :’);readln(jual[i].nmbrg);until (jual[i].nmbrg=‘0’) or (I=11);dec(i);clrscr;writeln (‘------------------------------------------------------------’);writeln (‘No nama barang jumlah harga total’);writeln (‘------------------------------------------------------------’);for j:=1 to I dobegingotoxy(1,j+3);write (j);gotoxy(5,j+3);write(jual[i].nmbrg);gotoxy(26,j+3);write(jual[i].jmlbrg:10);gotoxy(37,j+3);write(jual[i].hrgbrg:10:2);gotoxy(48,j+3);write(jual[i].total:10:2);tot1:=tot1 + jual[j].total ;end;writeln (‘------------------------------------------------------------’);writeln(‘ Total :’,tot1:10:2’);writeln (‘------------------------------------------------------------’);end.Array dalam recordType barang= RECORDnmbrg:string[20];jmlbrg:array[1..3]of byte;hrgbrg:real;total:real;end;var jual:barang;tbarang, i:integer;Beginclrscr;write(‘Nama Barang :’);readln(jual.nmbrg);for i:=1to 3 dobeginwrite(‘Jumlah barang ’,I,’ : ’);readln(jual.jmlbrg[i]);tbarang:=tbarang+jual.jmlbrg[i];end; Halaman : 5Pemrograman PASCAL : Record & Setwrite(‘Harga barang :’);readln(jual.hrgbrg);jual.total:=tbarang*jual.hrgbrg;writeln(‘Total Harga Barang = ‘, jual.total:10:2);end.Coba lihat sendiri perbedaan antara array tipe record dan array dalam record dari dua contoh program di atas !SET (HIMPUNAN)Set adalah kumpulan dari nilai-nilai yang memiliki kesamaan sifat, yaitu tipe data yang sama dan urutan penulisannya tidak diperhatikan. Setiap obyek dalam himpunan disebut dengan anggota atau elemen himpunan. Contoh :1. Huruf vokal dalam alfabet2. kendaraan bermotor3. binatang menyusui4. bilangan genap 1 sampai 1005. dan sebagainyaSet termasuk ke dalam tipe data terstruktur, terdiri dari sejumlah elemen yang bertipe sama dan harus bertipe data ordinal yang memiliki nilai terletak antara 0 sampai 255.Berbeda dengan tipe data array, tipe data SET tidak mengenal elemen pertama, elemen kedua dan seterusnya. Pada tipe data SET tidak terdapat elemen yang bernilai sama.Mendeklarasikan SET (Himpunan)Dapat dideklarasikan dalam deklarasi tipe data :Type variabel_set = SET OF tipe_data;Dapat pula dideklarasikan dalam deklarasi var data :Var variabel_set = SET OF tipe_data;Contoh :Typekata = set of char; {tipe dasar}huruf besar =‘A’..’Z’; {subrange}Perintah = set of hurufbesar ;Hari = (senin,selasa,rabu,kamis,jumat,sabtu,minggu); {enumerasi}Hari2 = set of Hari;Pilihan = set of 1..7 {subrange dalam bentuk bilangan}; Halaman : 6Pemrograman PASCAL : Record & SetVarhurufkecil : set of ‘a’..’z’;kapital : hurufbesar;hariseminggu : hari2;Kalimat : kata;Dalam keadaan awal, suatu variabel yang bertipe data SET belum terisi. Variabel tersebut merupakan suatu variabel kosong, dinyatakan dengan tanda [ ].Contoh program memberikan nilai untuk tipe data SET :Program SET1;typeHari = (senin,selasa,rabu,kamis,jumat,sabtu,minggu); {enumerasi}Hari2 = set of Hari;varhariseminggu:hari2;beginhariseminggu:=[selasa, kamis,sabtu];end.Operasi SET (Himpunan)1. Operasi PenjumlahanDisebut juga operasi penggabungan (UNION), Operatornya (+).Contoh :A:= [‘B’,’F’,’J’,’L’];A:= A + [‘a’,’B’,’b’,’c’,’d’,’e’,’f’,’j’,’k’,’l’];maka nilai A sekarang adalah [‘B’,’F’,’J’,’L’,‘a’,’b’,’c’,’d’,’e’,’f’,’j’,’k’,’l’]2. Operasi PenguranganDisebut juga operasi selisih SET, operatornya (-).Misal :SET1 - SET2, menghasilkan elemen yang merupakan anggota SET1 yang bukan anggota SET2.Contoh :A:=[1,2,3,4,5];B:=[4,5,6,7];W:=A-B;Maka nilai W adalah [1,2,3]2. Operasi PerkalianDisebut juga operasi Intersection (irisan), operatornya (*).Misal :SET1 - SET2, menghasilkan elemen yang merupakan anggota SET1 dan sekaligus merupakan anggota SET2.Contoh :1. A:=[1,2,3,4,5];2. D:=[1,2,3,4,5];Halaman : 7Pemrograman PASCAL : Record & SetB:=[1,3,5,6,7];C:=A*B;Maka nilai C adalah [1,3,5]E:=[6,7,8,9,10];F:=A*B;Maka nilai F adalah [ ]Perbandingan dalam SET (Himpunan)OPERATORNAMA OPERATORKETERANGAN=Sama denganBernilai TRUE, bila kumpulan anggota variabel SET mempunyai anggota yang sama.< >Tidak samaBernilai TRUE, bila kumpulan anggota variabel SET mempunyai anggota yang tidak sama.< =Anggota dariBernilai TRUE, bila semua elemen dari himpunan 1 terdapat pada himpunan 2.> =Mempunyai anggotaBernilai TRUE, bila semua elemen dari himpunan 2 terdapat pada himpunan 1.INTerdapat di dalamBernilai TRUE, bila elemen merupakan anggota himpunan.Contoh :1. [3,4,5]=[4,5,3] hasil TRUE2. [c,d]=[d,g,c] hasil FALSE3. [2,4]< >[2,3] hasil TRUE4. f in [‘a’..’z’] hasil TRUE5. [2,1] < = [1,2,3] hasil TRUE6. [5,6,7] > = [7,6] hasil TRUE7. 3 in [4,5,3,2] hasil TRUE8. [2,1] > = [1,2] hasil TRUEContoh Program perbandingan SET :Program Set1;Uses crt;Type kbil=set of byte;var kbil1,kabil2:kabil;a,b:byte;beginclrscr;write(‘Tentukan batas bawah :’);readln(a); {Input Himpunan Pertama}write(‘Tentukan batas Atas :’);readln(b);Kbil1:=[a..b];write(‘Tentukan batas bawah :’);readln(a); {Input Himpunan Kedua}write(‘Tentukan batas Atas :’);readln(b);Kbil2:=[a..b];if kbil1= kbil2 then writeln(‘Himpunan 1 sama dengan Himpunan 2’);if kbil1 < > kbil2 then writeln(‘Himpunan 1 tidak sama dengan Himpunan 2’);if kbil1< = kbil2 then writeln(‘Himpunan 1 anggota dari Himpunan 2’);if kbil1> = kbil2 then writeln(‘Himpunan 1 mempunyai anggota Himpunan 2’);end.Contoh Program operator IN :Program set2;uses crt;type karakter= set of char;var kapital : karakter;hidup : karakter;jumlahh,jumlahk : integer;kalimat : string; Halaman : 8Pemrograman PASCAL : Record & Seti:integer;beginclrscr;kapital:=[‘A’..’Z’];hidup:=[‘A’,’E’,’I’,’O’,’U’,’a’,’e’,’i’,’o’,’u’];jumlahh:=0;jumlahk:=0;writeln(‘Masukkan suatu kalimat :’);readlne (kalimat);for I:=1 to length(kalimat) dobeginif kalimat[i] in kapital then inc(jumlahk);if kalimat[i] in hidup then inc(jumlahh);end;writeln(‘Jumlah kapital =‘,jumlahk);writeln(‘Jumlah huruf hidup =‘,jumlahh);end.Aplikasi Penggunaan SET dalam Program :Program bacakarakter;uses crt;type karakter=set of char;var pilihan:char;function bacakar(pesan:string;pilihansah:karakter):char;var ch:char;beginwrite(pesan);repeatch:=upcase(readkey);until(ch in pilihansah);writeln(ch);bacakar:=ch;end;{Program utama}Beginclrscr;repeatPilihan:=bacakar(‘Anda :(T)ulis Halo, (B)el,(S)elesai’,[‘T’,’B’,’S’]);Case pilihan of‘T’:writeln(‘Hallo...’);‘B’:writeln(‘bel’+ #7);‘S’:writeln(‘Terimakasih’);end;Until pilihan =‘S’;end.Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-52068414227309426302008-10-22T03:38:00.001-07:002008-11-21T00:28:28.780-08:00array dan recordPernahkah kamu membayangkan bila kita mau membuat program toko buah-buahan. Jika ada 3 jenis buah-buahan (melon, duku dan mangga) berarti kita harus mempunyai tiga variabel untuk masing-masing jenis buah. Tetapi betapa sulitnya jika toko itu punya 10 atau 20 jenis yang berbeda. Solusinya adalah gunakan array. Array itu adalah tipe data terstuktur yang berguna untuk menyimpan sejumlah data yang bertipe sama. Bagaimana cara kerjanya? yaitu dengan menggunakan index (semacam penanda). Perhatikan contoh: <br /> 1: Program Tutorial5_Array;<br /> 2: var buah: array [1..3] of string;<br /> 3: i: integer;<br /> 4: Begin<br /> 5: For i:=1 to 3 do<br /> 6: begin<br /> 7: write('Masukkan buah-buahan ke ',i , ' : ');<br /> 8: readln(buah[i]);<br /> 9: end;<br />10: writeln;<br />11: writeln('Isi buah-buahan yang dimasukkan tadi<br />adalah : ');<br />12: For i:= 1 to 3 do<br />13: writeln('buah ke', i ,' : ', buah[i]);<br />14: End.Lihat pada baris ke-8. Dengan hanya menggunakan satu nama variabel yaitu buah, kita bisa menyimpan 3 nilai yang berbeda. Misalkan yang kita masukkan adalah melon, duku dan mangga. maka buah[1] bernilai melon, buah[2] bernilai duku dan buah[3] bernilai mangga. Untuk mencetak isi variabel yang sudah disimpan di array tadi caranya bisa dilihat di baris ke 13. Bagaimana, gampangkan? setelah mengetahui cara menggunakan array, sekarang kita belajar menggunakan record. Tidak seperti array, record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-masing dapat berlainan tipe. Perhatikan contoh: <br /><br /> 1: Program Tutorial5_Record;<br /> 2: type buah = record<br /> 3: nama: string;<br /> 4: harga: longint;<br /> 5: end;<br /> 6: var data:buah;<br /> 7: Begin<br /> 8: write('nama buah: ');readln(data.nama);<br /> 9: write('harga buah: ');readln(data.harga);<br />10: write('ditampilkan');<br />11: write('nama');readln(data.nama);<br />12: writeln('harga');readln(data.harga);<br />13: End.Apa yang bisa kamu ambil kesimpulan dari program di atas? Bingung? Jadi gini, dengan menggunakan record (di sini bernama buah) kita bisa membuat tipe data yang berisi beberapa data yang berlainan tipe (nama dengan jenis string, dan harga dengan jenis long integer) yang ini disebut field. Perhatikan baris ke 6, di situ dideklarasikan bahwa variabel data bertipe buah. Otomatis yang dimiliki buah (nama dan harga) dimiliki juga oleh data. Setelah itu lihat baris ke 8 dan 9. Nama buah disimpan dalam field nama dan harga buah disimpan di dalam field harga. Untuk bisa menyimpan data di field, urutannya harus variabel.field (contohnya di sini data.nama atau data.harga). Begitu juga bila kita ingin menampilkan isi field tersebut.<br /><br />Tipe data seperti ini sangat berguna Apalagi jika digabungkan dengan array.Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-1439377389529512242008-10-22T03:36:00.004-07:002008-11-21T00:02:59.013-08:00tumpukan dan antrianPengertian Linked list :<br />• sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian<br />• struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori.<br /><br /><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWlV2yDZZaOBUKyN2kp8g26z6X9QB1kPpuOSOXZ63thOTBQ9z0sZfUfqitxuMM5IVNUWBXs-tEvms96suNhmf3kXPK_UqHpPOhd1CT5AktgXmJzBhRLwM4InYnrZSM5oEr24ddn49npQ0/s320/1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5259977135684688546" />Bentuk Umum :<p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWmtZGAaCvfOZu16gxA4c4tu3R_dVU0szLFsgklJRcltH1bUTT3QEAECnXhj4cuee6FhYqkjyLnCbwfgoCEGtIGym1QsF2hn8kr_67sehzYp3x3Xft5vuKh_Oiq3J7BDh7hQISKpZPl0M/s320/2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5259977705568001682" />Infotype ->sebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list<br /></p>Next ->address dari elemen berikutnya (suksesor)<br /><br /><p>Jika L adalah list, dan P adalah address, maka alamat elemen pertama list L dapat diacu dengan notasi :</p><p>First (L)<br />Sebelum digunakan harus dideklarasikan terlebih dahulu :</p><p># define first (L) (L)<br />Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi :<br /></p><p>Info (P) deklarasi define info (P) (P)-> info</p><p>Next (P) deklarasi define Next(P) (P)->Next<br /></p>Beberapa Definisi :<br />1. List l adalah list kosong, jika First(L) = Nil<br />2. Elemen terakhir dikenali, dengan salah satu cara adalah karena<br />Next(Last) = Nil<br />Nil adalah pengganti Null, perubahan ini dituliskan dengan #define Nil Null<br /><br /><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvKf4ucXuUBc66ZmC6cAELS-lsP72HUoqeIXIuiOYCWRzT_KRfA1wucftqJCTf2AKZ294cV6fIoKpK7g1FyyTqgHfaBRqYdQlhOVRvna6ZUf47h0TCyGP-k-PworJPj0f8wWH4dUoPwI4/s320/3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5259979186478087330" /><br /><br /><br />Pada gambar di atas tampak bahwa sebuah data terletak pada sebuah lokasi memori area. Tempat yang disediakan pada satu area memori tertentu untuk menyimpan data dikenal dengan sebutan node atau simpul. Setiap node memiliki pointer yang menunjuk ke simpul berikutnya sehingga terbentuk satu untaian, dengan demikian hanya diperlukan sebuah variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked List (NULL memilik nilai khusus yang artinya tidak menunjuk ke mana-mana. Biasanya Linked List pada titik akhirnya akan menunjuk ke NULL).<br />Pembuatan Single Linked List dapat menggunakan 2 metode:<br />• LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)<br />• FIFO (First In First Out), aplikasinya : Queue (Antrean)<br />Double Linked List<br />Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat bergerak satu arah saja, maju/mundur, atau kanan/kiri sehingga pencarian data pada single linked list hanya dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan tersebut, dapat menggunakan metode double linked list. Linked list ini dikenal dengan nama Linked list berpointer Ganda atau Double Linked List.<br /><br />Circular Double Linked List<br />Merupakan double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu lingkaran.<br />Operasi-Operasi yang ada pada Linked List<br />• Insert<br />Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.<br />• IsEmpty<br />Fungsi ini menentukan apakah linked list kosong atau tidak.<br />• Find First<br />Fungsi ini mencari elemen pertama dari linked list<br />• Find Next<br />Fungsi ini mencari elemen sesudah elemen yang ditunjuk now<br />• Retrieve<br />Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.<br />• Update<br />Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu<br />• Delete Now<br />Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen pertama dari linked list (head), head akan berpindah ke elemen berikut.<br />• Delete Head<br />Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.<br />• Clear<br />Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.<br /><br />A. STACK DENGAN SINGLE LINKED LIST<br />Selain implementasi stack dengan array seperti telah dijelaskan sebelumnya, stack daat diimplementasikan dengan single linked list. Keunggulannya dibandingkan array adalah penggunaan alokasi memori yang dinamis sehingga menghindari pemborosan memori.<br />Misalnya pada stack dengan array disediakan tempat untuk stack berisi 150 elemen, sementara ketika dipakai oleh user stack hanya diisi 50 elemen, maka telah terjadi pemborosan memori untuk sisa 100 elemen, yang tak terpakai. Dengan penggunaan linked list maka tempat yang disediakan akan sesuai dengan banyaknya elemen yang mengisi stack.<br />Dalam stack dengan linked list tidak ada istilah full, sebab biasanya program tidak menentukan jumlah elemen stack yang mungkin ada (kecuali jika sudah dibatasi oleh pembuatnya). Namun demikian sebenarnya stack ini pun memiliki batas kapasitas, yakni dibatasi oleh jumlah memori yang tersedia.<br /><br />Operasi-operasi untuk Stack dengan Linked List<br />• IsEmpty<br />Fungsi memeriksa apakah stack yang adamasih kosong.<br />• Push<br />Fungsi memasukkan elemen baru ke dalam stack. Push di sini mirip dengan insert dalam single linked list biasa.<br />• Pop<br />Fungsi ini mengeluarkan elemen teratas dari stack.<br />• Clear<br />Fungsi ini akan menghapus stack yang ada.<br /><br /><br />B. QUEUE DENGAN DOUBLE LINKED LIST<br />Selain menggunakan array, queue juga dapat dibuat dengan linked list. Metode linked list yang digunakan adalah double linked list.<br /><br />Operasi-operasi Queue dengan Double Linked List<br />• IsEmpty<br />Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. Hal ini dilakukan dengan mengecek apakah head masih menunjukkan pada Null atau tidak. Jika benar berarti queue masih kosong.<br />• IsFull<br />Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa menampung data dengan cara mengecek apakah Jumlah Queue sudah sama dengan MAX_QUEUE atau belum. Jika benar maka queue sudah penuh.<br />• EnQueue<br />Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue (head dan tail mula-mula meunjukkan ke NULL).<br />• DeQueue<br />Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara menghapus satu simpul yang terletak paling depan (head).<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />II. STACK DAN QUEUE DENGAN ARRAY<br /><br />A. STACK DENGAN MENGGUNAKAN ARRAY<br />Pengertian Stack<br />• Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman<br />• Bersifat LIFO (Last In First Out)<br />• Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack<br /><p>• Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga.</p><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 140px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ5PPE-YB7bCOPQjCTVbTIgwCa2d5E7rWTGMUxnsa1Dz-y6r8tivQ7A1ofoRHoqK8wAlUffqCGTjp14xWJQvZNK7Npc73EgOUi0UqBPvtQ148YgKFSdC8bmbOrYWm1lQgfz8zyvPbOzcw/s320/4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5260238438555941218" /><br /></p><br />Operasi-operasi/fungsi Stack<br />• Push : digunakan untuk menambah item pada stack pada tumpukan paling atas<br />• Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas<br />• Clear : digunakan untuk mengosongkan stack<br />• IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong<br />• IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh<br />Stack with Array of Struct<br />• Definisikan Stack dengan menggunakan struct<br />• Definisikan MAX_STACK untuk maksimum isi stack<br />• Buatlah variabel array data sebagai implementasi stack secara nyata<br />• Deklarasikan operasi-operasi/function di atas dan buat implemetasinya<br /><br />Deklarasi MAX_STACK<br />#define MAX_STACK 10 //hati-hati mulai dari 0 jadi 0-9<br /><br />Deklarasi STACK dengan struct dan array data<br />typedef struct STACK{<br />int top;<br />char data[10][10]; //misalkan : data adalah array of string<br />//berjumlah 10 data, masing-masing string<br />//menampung maksimal 10 karakter<br />};<br /><br />Deklarasi/buat variabel dari struct<br />STACK tumpuk;<br /><br />Inisialisasi Stack<br />• Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0, yang berarti stack adalah KOSONG!<br />• Top adalah suatu variabel penanda dalam STACK yang menunjukkan elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!<br /><p>• Ilustrasi stack pada saat inisialisasi:</p><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 215px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguHOarLXt8I9ARiPxqkyEdGrF1LThLlkhPql0fPC_OWugoHQ743p4qfQMyzs3sk0bj3DeltqKZmRGyNpzffw1Nx42n8JChS-49viJ2_C9ST_65E4s8LYwvC1fHnnpJEqHuN80xLzAvanY/s320/5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5260238574560571762" /></p><br />Fungsi IsFull<br />• Untuk memeriksa apakah stack sudah penuh?<br />• Dengan cara memeriksa top of stack, jika sudah sama dengan<br />MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full<br />• Ilustrasi:<br /><br /><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 194px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihC1me0JLjhiG-QhoJJ1Z2nXZ9hT1AQ42XdX5fdRkChQzIyZwUbgHNyeCrRtiSfXcK7jk518kA0U7OkvRrpItBVZlKMPoLAwtMRg3OjD6jaxslniUbLsrQF0mue60SkxSnC-G-4vxn2FA/s320/6.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5260238669435361874" />Fungsi IsEmpty<br />• Untuk memeriksa apakah stack masih kosong?<br />• Dengan cara memeriksa top of stack, jika masih -1 maka berarti stack masih kosong!<br />• Program:<br /><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 157px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEDKA7lQ9zQtaN9UW6X3AE8473XxysvT8-fXFPEL2d2gtXPqkUVgPsPidYTTRIqu79i_UVuTfuWDmi85Q6-K5b8LsyFlkUUW_X4XXSesdKoAAYnTzpPEgviXqo77dmNVwohQ1koqKPn0I/s320/7.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5260240483860175410" /><br /><br />Fungsi Push<br />• Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack<br />• Tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks top of stack setelah ditambah satu (diincrement)<br />• Ilustrasinya:<br /><br /><br /><br /><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 194px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQCyFVAorsYHNMgbaMozZo1Fkupdvq76Vp9Hq9Kaj9lLPdp7sSjA0c1GLwi6YJvlKH-QAQrt3cZSrs8Co9JUqWnjeq84jnqBHciflkgDRvf2uLl-Xkc6L1HwjxarCMBPhVaIeK0skTdow/s320/8.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5260240859859144770" /><br /><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 128px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD6GCsVsEvShTN55-ZvWghib-Hhd2oI7vllISHixTNOqgwDCR91FrbQanM4GOD3Rdwzebh59ELvwnDTTl0KdZRKEKv1L3S2mgVpdPHyHdntmJWd1Y7LRzHPkHF1dqSXCzQ4RWZmFrjneI/s320/9.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5260241167320158898" />Fungsi Pop<br /></p>• Untuk mengambil elemen teratas dari stack.<br />• Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang<br /><p>• Ilustrasinya:</p><p><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 197px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW_2RoAbiRQxGiRLzPfGlowznE6WSKwqGgHffe16KqyJAwS4StjdTJTCjdfxchVvKDrjBOO3FKFXlEhu8siRaXnqaf7OUBWDHb6j6UJuuRvY413XeW0Cmw_FW86VWa1zG4LztErwkUKIk/s320/10.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5260241963294139586" /><br /></p><br />Programnya:<br /><br />Fungsi Print<br />• Untuk menampilkan semua elemen-elemen stack<br />• Dengan cara looping semua nilai array secara terbalik, karena kita harusmengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang kecil!<br /><br /><br />Program:<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />B. QUEUE DENGAN MENGGUNAKAN ARRAY<br /><br />• Queue = Antrian<br />• Elemen yang pertama kali masuk ke antrian akan keluar pertama kalinya<br /><br /><br /><br />• DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian<br />• Antrian dapat dibuat dengan menggunakan: Liniear Array dan Circular<br />Array<br /><br />QUEUE DENGAN LINIEAR ARRAY<br />• Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar<br />di ujung satunya<br />• Sehingga membutuhkan variabel Head dan Tail<br /><br /><br /><br />DEKLARASI QUEUE<br /><br /><br /><br />OPERASI-OPERASI PADA QUEUE<br /><br />- Create()<br />o Untuk menciptakan dan menginisialisasi Queue<br />o Dengan cara membuat Head dan Tail = -1<br /><br /><br /><br /><br /><br />- IsEmpty()<br />o Untuk memeriksa apakah Antrian sudah penuh atau belum<br />o Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty<br />o Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala<br />antrian (elemen pertama dalam antrian) yang tidak akan berubahubah<br />o Pergerakan pada Antrian terjadi dengan penambahan elemen<br />Antrian kebelakang, yaitu menggunakan nilai Tail<br /><br /><br /><br /><br />- IsFull()<br />o Untuk mengecek apakah Antrian sudah penuh atau belum<br />o Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1<br />adalah batas elemen array pada C) berarti sudah penuh<br /><br /><br />- Enqueue(data)<br />o Untuk menambahkan elemen ke dalam Antrian, penambahan<br />elemen selalu ditambahkan di elemen paling belakang<br />o Penambahan elemen selalu menggerakan variabel Tail dengan cara<br />increment counter Tail<br /><br /><br /><br /><br />- Dequeue()<br />o Digunakan untuk menghapus elemen terdepan/pertama dari Antrian<br />o Dengan cara mengurangi counter Tail dan menggeser semua<br />elemen antrian kedepan.<br />o Penggeseran dilakukan dengan menggunakan looping<br /><br /><br /><br />- Clear()<br />o Untuk menghapus elemen-elemen Antrian dengan cara membuat<br />Tail dan Head = -1<br />o Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus<br />arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai<br />-1 sehingga elemen-elemen Antrian tidak lagi terbaca<br /><br /><br /><br />- Tampil()<br />o Untuk menampilkan nilai-nilai elemen Antrian<br />o Menggunakan looping dari head s/d tail<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />PEMBAHASAN<br />Perbandingan Antara<br />Stack-Queue Dengan Linked List Vs Stack-Queue Dengan Array<br /><br />A. Stack Dengan Linked List VS Stack Dengan Array<br />Berikut ini adalah perbandingan algoritma pada operasi-operasi dasar dari Stack Dengan Linked List dan Stack Dengan Array, dengan menggunakan bahasa pemrograman Pascal<br /><br />Stack Dengan Linked List Stack Dengan Array<br />operasi : create()<br />procedure create;<br />begin<br />top := nil ;<br />end; procedure create;<br />begin<br />top := 0;<br />end;<br />operasi : empty()<br />function empty : boolean;<br />begin<br />empty := false ;<br />if top = nil then empty := true ;<br />end; function empty : boolean;<br />begin<br />empty := false ;<br />if top = 0 then empty := true ;<br />end;<br />operasi : full()<br />tidak ada istilah full pada stack.<br />program tidak menentukan jumlah elemen stack yang mungkin ada. kecuali dibatasi oleh pembuat program dan jumlah memory yang tersedia. tempat akan sesuai dengan banyaknya elemen yang mengisi stack. function full : boolean;<br />begin<br />full := false ;<br />if top = max then full := true ;<br />end;<br />operasi : push()<br />procedure push (elemen : typedata) ;<br />var now:point ;<br />begin<br />now(now) ;<br />now^.isi := elemen ;<br />if empty then<br />now^.next := nil ;<br />else<br />now^.next := top ;<br />top := now ;<br />end; procedure push (elemen : typedata) ;<br />begin<br />if not full then<br />begin<br /> top := top + 1 ;<br /> stack [top] := elemen ;<br />end;<br />end;<br />operasi : pop()<br />procedure pop (var elemen : typedata) ;<br />var now:point ;<br />begin<br />if not empty then<br />begin<br /> elemen := now^.isi ;<br /> now := top ;<br /> top := top^.next ;<br /> dispose(now) ;<br />end;<br />end; procedure pop (elemen : typedata) ;<br />begin<br />if not empty then<br />begin<br /> elemen := stack [top] ;<br /> top := top – 1 ;<br />end;<br />end;<br />operasi : clear<br />procedure clear ;<br />var trash : typedata ;<br />begin<br />while not empty do pop(trash) ;<br />end; procedure clear ;<br />begin<br />top := 0 ;<br />end;<br /><br />PEMBAHASAN<br />Dari perbandingan diatas, dapat dilihat pada linked list tidak dikenal istilah full. Hal ini berkaitan dengan penggunaan alokasi memori pada linked list yang lebih dinamis jika dibandingkan dengan array, sehingga pemborosan memory dapat dihindari. Program tidak menentukan jumlah elemen stack yang mungkin ada. Kecuali dibatasi oleh pembuat program dan jumlah memory yang tersedia. Tempat akan sesuai dengan banyaknya elemen yang mengisi stack.<br /><br /><br />B. Queue Dengan Linked List VS Queue Dengan Array<br /><br />Implementasi queue menggunakan array<br />• Implementasi sederhana<br />• Ukuran memori harus ditentukan ketika sebuah objek queue dideklarasikan<br />• Pemborosan tempat (memori) ketika menggunakan jumlah data yang lebih sedikit dari alokasi memori<br />• Tidak dapat menambahkan data melebihi maksimal ukuran array yang telah dideklarasikan<br />Implementasi queue menggunakan linked list<br />• Pengalokasian memori dinamis<br />• Menggunaka 2 buah pionter, qFront dan qRear, untuk menandai posisi depan dan belakang dari queue<br /><br /><br />Perbandingan implementasi queue, array VS linked list (contoh 1)<br />• Memory requirements<br />– Array-based implementation<br />• Diasumsikan ukuran queue 100 (string @80bytes)<br />• Diasumsikan index membutuhkan 2 bytes<br />• Total memory: (80 bytes x 101 slots) + (2 bytes x 2 indexes) = 8084 bytes<br />– Linked-list-based implementation<br />• Diasumsikan pointers membutuhkan 4 bytes<br />• Total memory per node: 80 bytes + 4 bytes = 84 bytes<br /><br />Gambar :<br /><br /><br /><br /><br />Perbandingan implementasi queue, array VS linked list (contoh 2)<br />• Memory requirements<br />– Array-based implementation<br />• Diasumsikan ukuran queue 100 (string @2bytes)<br />• Diasumsikan index membutuhkan 2 bytes<br />• Total memory: (2 bytes x 101 slots) + (2 bytes x 2 indexes) = 206 bytes<br />– Linked-list-based implementation<br />• Diasumsikan pointers membutuhkan 4 bytes<br />• Total memory per node: 2 bytes + 4 bytes = 6 bytes<br /><br />Gambar :<br /><br /><br /><br /><br /><br /><br />KESIMPULAN<br /><br />Perbandingan Antara Stack-Queue Dengan Linked List Vs Stack-Queue Dengan Array<br />• Untuk stack dan queue yang berukuran besar, terutama jumlah maksimal data tidak diketahui, lebih baik menggunakan linked list.<br />• Untuk perangkat yang memiliki memori terbatas, seperti small handheld devices, linked list memiliki performa yang lebih bagus.Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0tag:blogger.com,1999:blog-8810105150088052059.post-27050929143418940882008-10-22T03:36:00.001-07:002008-11-21T01:00:06.575-08:00pointerPointer merupakan suatu tipe data dalam Pascal yang berfungsi untuk menunjuk dan menyimpan alamat memori. Dalam penulisan pointer biasa digambar dengan panah, sedangkan bagian memori yang ditunjuk digambar dengan kotak, dan isinya ditulis di dalam kotak.<br /> Bentuk umum dari deklarasi tipe pointer:<br /> Untuk pointer bertipe:<br /> <nama_var> : ^<tipe_data>;<br /> Untuk pointer tidak bertipe:<br /> <nama_var> : pointer;<br /><br /> Suatu pointer dapat menunjuk ke data bertipe elementer, terstruktur, pointer yang lain, atau tidak bertipe. Jika suatu pointer tidak menunjuk ke mana-mana, pointer itu dinamakan dangling, sedangkan bagian memori yang tidak dapat diakses karena tidak ada pointer yang menunjuk dinamakan garbage (sampah).<br /> Dalam Pascal, pointer dapat diisi dengan nilai yang berasal dari:\<br />1. NIL<br />2. Fungsi Ptr<br />3. Operator @<br />4. Prosedur New dan GetMem<br />5. Pointer yang lain<br /><br />Reserved word NIL<br /> NIL merupakan reserved word dalam Pascal, di mana pointer yang bernilai NIL dianggap tidak menunjuk alamat memori manapun.NIL biasa digambarkan dengan lambang ground.<br /><br />Fungsi Ptr<br /> Sintaks:<br /> Function Ptr(Seg, Ofs : word) : pointer;<br /> dengan Seg : segmen memori.<br /> Ofs : offset memori.<br />Fungsi Ptr mengembalikan pointer dari segmen dan offset yang dimasukkan. <br /><br />Operator @<br /> Sintaks:<br /> <nama_var>:=@<variabel_yang_alamatnya_diambil>;<br /> Operator ini digunakan untuk mengambil alamat variabel yang akan ditunjuk.<br /><br />Prosedur New dan GetMem<br /> Sintaks:<br /> New(var P : pointer);<br /> GetMem(var P : pointer, size : word);<br /> Dengan P : pointer yang akan diisi.<br /> Size : ukuran yang dipesan.<br /> Prosedur New digunakan untuk memesan memori untuk pointer bertipe, sedangkan prosedur GetMem untuk pointer tidak bertipe. Kedua prosedur ini akan membentuk suatu variabel dinamik yang diletakkan dalam Heap. Heap adalah memori-memori di komputer yang belum dialokasikan, yaitu memori yang tidak digunakan oleh DOS, oleh program-program resident, oleh program Turbo Pascal, internal stack yang digunakan oleh Turbo Pascal dan variabel-variabel di data segmen.<br /> Pointer yang belum digunakan sebaiknya diisi dengan NIL, dan untuk pointer yang telah menunjuk sebuah alamat yang sudah dipesan memorinya, isinya dapat dimanipulasi melalui pointer.<br /><br />Linked List<br /> Linked List (daftar berkait) adalah suatu node (simpul) yang menunjuk ke node (simpul) berikutnya dalam suatu urutan. Suatu node minimal harus mempunyai 2 komponen, yaitu:<br />1. Satu atau lebih field yang berisi data di daftar berkait.<br />2. Satu atau lebih field berupa pointer yang menunjuk ke node lainnya. Field yang berupa pointer ini disebut dengan link.<br /><br /> <br /><br /> Untuk mendefinisikan linked list biasa digunakan record, dengan sintaks:<br /> Type <nama_pointer> = ^<nama_rec>;<br /> <nama_rec> = record<br /> data1 : <tipe_data1>;<br /> data2 : <tipe_data2>;<br /> . . . .<br /> next : <nama_pointer>;<br /> end;<br /> Masing-masing kotak pada linked list disebut node (simpul), node paling depan disebut head, node belakang disebut tail. Untuk mengisi linked list kosong maupun mengakhiri linked list biasanya digunakan nilai NIL.<br /><br /> Operasi-operasi yang terdapat pada linked list antara lain:<br />1. Inisialisasi; yaitu mengisi variabel list dengan NIL.<br />2. Menambah node.<br />3. Menyisipkan node.<br />4. Menghapus node yang berisi data.<br />5. Membaca data dari node.<br />6. Menghapus seluruh isi list.<br /><br /> Deklarasi tipe data pointer:<br /> program deklarasi;<br /> uses crt;<br /> var p : ^integer;<br /> nilai : integer;<br /> begin<br /> clrscr;<br /> nilai:=12;<br /> p:=@nilai;<br /> writeln(p^);<br /> p^:=100;<br /> writeln(p^);<br /> writeln(nilai);<br /> readln;<br /> end.<br /><br /> Output: 12<br /> 100<br /> 100<br /><br /> Pembahasan:<br /> Pada contoh program deklarasi ini, pertama-tama dideklarasikan variabel p sebagai pointer yang bertipe integer. Dibuat sebuah variabel lagi yang diberi nama nilai dan bertipe integer.<br /> Variabel nilai diisi dengan nilai 12. Kemudian variabel p menunjuk alamat dari variabel nilai dengan operator @, sehingga variabel p berisi nilai 12, dan ditampilkan outputnya di layar. Kemudian variabel p diberi nilai 100, dan secara otomatis variabel nilai juga bernilai 100 karena sudah ditunjuk oleh variabel p. Kemudian isi dari variabel p yang baru dan variabel nilai ditampilkan di layar.<br /><br /> Manipulasi memori lewat Pointer bertipe:<br />uses wincrt;<br />var p,q,r,s : ^string;<br /> nilai : string;<br />begin<br /> clrscr;<br /> nilai:='ini string nilai!!!';<br /> p:=@nilai;<br /> new(q);<br /> q^:='ini isi pointer q!!!';<br /> r:=q;<br /> s^:=q^;<br /> writeln('alamat pointer p = ',seg(p^):4,':',ofs(p^):4,'; isi pointer p = ',p^);<br /> writeln('alamat pointer q = ',seg(q^):4,':',ofs(q^):4,'; isi pointer q = ',q^);<br /> writeln('alamat pointer r = ',seg(r^):4,':',ofs(r^):4,'; isi pointer r = ',r^);<br /> writeln('alamat pointer s = ',seg(s^):4,':',ofs(s^):4,'; isi pointer s = ',s^);<br /> readln;<br />end.<br /><br /> Output program: <br />alamat pointer p = 4446: 98; isi pointer p = ini string nilai!!!<br />alamat pointer q = 5559: 0; isi pointer q = ini isi pointer q!!!<br />alamat pointer q = 5559: 0; isi pointer r = ini isi pointer q!!!<br />alamat pointer q = 0: 0; isi pointer s = ini isi pointer q!!!<br /><br /> Pembahasan:<br /> Pada program ini dibuat 4 variabel pointer yang bertipe string, yaitu p, q, r, s. Dan sebuah variabel dengan nama nilai yang bertipe juga string (bukan pointer).<br /> Pertama-tama variabel nilai diisi dengan nilai ‘ini string nilai!!!’. Kemudian variabel p (pointer) menunjuk alamat dari variabel nilai dengan operator @, sehingga variabel p juga berisi ‘ini string nilai!!!’. Kemudian dipesan tempat pada heap dengan prosedur New untuk variabel q. Kemudian variabel q diisi ‘ini isi pointer q!!!’. Setelah itu variabel r menunjuk alamat dari variabel q, sehingga alamat maupun isinya sama. Kemudian variabel s diisi dengan nilai dari variabel q, tapi dalam hal ini hanya nilainya saja, sedangkan alamatnya tidak.Pemrograman Dasarhttp://www.blogger.com/profile/17585183653971534830noreply@blogger.com0