Pilihan Menu

Saturday, March 14, 2015

Kang Emil Bakal Kembali Kasih Hadiah Untuk Persib


Gapura Persib Juara ,- Walikota Bandung Ridwan Kamil yang biasa akrab dipanggil Kang Emil berharap Persib Bandung dapat terus mempertahankan prestasinya, baik sebagai Juara ISL maupun prestasi-prestasi yang lainnya.
Demikian disampaikan Kang Emil,  tepat dihari ini, dimana Persib Bandung merayakan hari jadinya ke 82 tahun.
“Saya hanya berharap Persib Bandung tetap juara dan tetap membanggakan bagi warga Bandung,” kata Emil di Balai Kota Bandung, Sabtu (14/3/2015).
Jika Persib berhasil terus mempertahankan Juara Indonesia Super League, Emil berjanji akan kembali memberikan bonus kepada pasukan maung Bandung tersebut.
“Pasti akan kembali memberikan hadiah tentunya hadiahnya sama kaya kemarin, minimal jumlahnya sama besarlah. jadi nanti saya kasih duit lagi, udunan dari warga Bandung,” Tegasnya.
Sumber: http://gapuraindonesia.com/persib-juara/2015/03/14/asyiiik-kang-emil-bakal-kembali-kasih-hadiah-persib/#sthash.Rvu8WwUY.dpuf

Monday, February 9, 2015

Penjadwalan Proses Sistem Operasi ( Operating Sistem )


Sistem Operasi (Operating Sistem) adalah seperangkat program yang mengelola sumber daya perangkat keras komputer atau hardware, dan menyediakan layanan umum untuk aplikasi perangkat lunak. 
Sistem operasi adalah jenis yang paling penting dari perangkat lunak sistem dalam sistem komputer. Tanpa sistem operasi, pengguna tidak dapat menjalankan program aplikasi pada komputer mereka, kecuali program aplikasi booting.
Sistem operasi mempunyai penjadwalan yang sistematis mencakup perhitungan penggunaan memori, pemrosesan data, penyimpanan data, dan sumber daya lainnya.
Berikut adalah beberapa jenis teknik penjadwalan sistem operasi :

1. First Come First Served (FCFS)
konsep dari FCFS yaitu data yang pertama datang maka pertama diproses, begitu juga sebaliknya. FCFS hanya dipengaruhi oleh waktu kedatangan data tersebut.
2. Shortest Job First (SJF)
konsepnya adalah data yang paling sedikit nilai/besarannya maka akan pertama di proses. SJF tidak dipengaruhi waktu kedatangan tapi dipengaruhi oleh besar nilai data tersebut.
3. Short Remaining Time (SRT)
Jenis penjadwalan ini sama dengan SJF namun dipengaruhi oleh waktu dan data dapat dipotong dan ditunda di waktu lain. 
4. Priority (PR)
Yaitu dengan memberi perioritas pada setiap data, dan data akan diproses sesuai dengan prioritasnya. tidak dipengaruhi waktu maupun besar nilai data tersebut.
5. Round Robin (RR)
Merupakan modifikasi dari jenis penjadwalan FCFS, namun jenis penjadwalan ini ditambahkan clock dan datanya dapat dipotong.

Algorima Teknik Pelacakan (Seaching)


Algoritma Teknik Pelacakan dapat diartikan sebagai sebuah algoritma yang menerima inputan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut. 
Teknik pelacakan yang paling baik adalah pelacakan yang paling cepat dan paling optimal. Contohnya pada kasus pencarian rute. Teknik pelacakan dengan hasil rute terpendek dan cepat, bisa dikatakan teknik tersebut merupakan teknik pelacakan yang baik.

Pada umumnya teknik pelacakan terbagi kedalam 2 kategori yaitu :
1. Unformed Seaching (Pencarian Tanpa Informasi)

  • Depth First Seach
  • Breadth First Seach

2. Informed Seaching (Pencarian Dengan Informasi)

  • Uniform Cost Seach
  • Greedy Seach
  • A*

Mengubah sinyal anaog ke sinyal digital

1. Pengenalan sinyal Analog dan Sinyal Digital

a. Sinyal Analog
Sinyal analog dan sinyal digital Sinyal analog adalah sinyal data dalam bentuk gelombang yang kontinyu, yang membawa informasi dengan mengubah karakteristik gelombang.

b. Sinyal Digital
Sinyal digital merupakan sinyal data dalam bentuk pulsa yang dapat mengalami perubahan yang tiba-tiba dan mempunyai besaran 0 dan 1. Sinyal digital hanya memiliki dua keadaan, yaitu 0 dan 1, sehingga tidak mudah terpengaruh oleh derau/noise. Kedua sinyal diatas merambat dalam waktu kontinyu mulai dari 0 sampai tak hingga.


Untuk mengubah sinyal analog ke sinyal digital diperlukan 5 Tahapan :
1. Sampling
2. Kuantisasi
3. Encoding

1. Sampling
Pada proses sampling sinyal masukan berupa sinyal analog kontinyu dan keluaranya berupa sinyal diskrit. Digunakan teorema nyquis pada proses ini, yaitu (fs >= 2fi), artinya Frekuensi Sampling (Fs) harus dua kali lebih besar dari Frekuensi Inputannya(Fi).

Misalnya jika fs=22000Hz, maka fi=44000Hz.

2. Kuntisasi
Keluaran hasil sampling kemudian masuk ke proses kuantisasi. Diproses ini sinyal tersebut akan di bedakan dengan beberapa level kuantisasi, Level kuantisasi disesuaikan dengan jumlah bit yang akan digunakan pada sinyal digital. rumusnya yaitu :

M=2^n (dua pangkat n)
n = jumlah bit

contohnya : n= 3bit, makan level kuantisasi (M)=2^3=8.

3. Encoding
Merupakan proses mengubah dari sinyal diskrit yang telah dinyatakan dalam level tertentu kedalam angka biner 0 dan 1.

contohnya :
level amplitudo 0<=25 = [ 000 ]
level amplitudo 25<=50 = [ 001 ]
level amplitudo 50<=75 = [ 010 ]
level amplitudo 75<=100 = [ 011 ]
....

Saturday, January 10, 2015

Register-Register USART Pada Mikrokontroler ATMega8535



















Kali ini saya akan share sedikit tentang register pada microprocessor ATMEGA 8535 yang terlibat ketika menjalankan USART. Materi ini saya pelajari di Matakuliah microprocessor dengan dosen Bapak Agus Virgono (AGV) di Telkom University.

USART (Universal Syschronous Asynchronous Received Transmitter) merupakan salah satu mode komunikasi yang dimiliki oleh Mikrokontroler ATMega8535. USART memiliki 2 pin (RxD dan TxD) untuk Asynchronous dan 3 bit TxD, RxD, xCK untuk Synchronous. Untuk mengatur komunikasi USART dilakukan melalui beberapa register yaitu :

UDR (USART Data Register) adalah register yang paling penting dalam komunikasi serial ini. Sebab data yang dikirim keluar harus ditempatkan pada register ini, sedang data yang diterima dari luar dapat dibaca pada register ini pula. Pada intinya register UDR digunakan sebagai buffer untuk menyimpan data, baik yang akan dikirim maupun yang akan diterima.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNlgKTCUfgmAJctowGqN9ZGatWW-jfWwfTm835rZ2p6PPw6bcyW7-1TLJ9F7YdyXCL5uieMg4yZAByTIYEB1F0RKCz-AzU_6GJPVywWXxGKW89nCWmL_WzPl0I7vItWJ4-lLXQKnMj8bw/s400/UDR.JPG

Seperti yang dapat dilihat pada gambar, sejatinya UDR adalah terdiri dari 2 buah register terpisah, dengan alamat dan nama yang sama, yakni UDR. Saat kita menulis data pada UDR ini, maka  sebenarnya kita menulis data pada UDR (Write) yang kemudian USART mem-frame dengan bit-bit frame dan segera akan segera mengirimkan data tersebut secara serial. Saat kita membaca UDR, sebenarnya adalah membaca UDR (Read). Data yang diterima secara serial akan disimpan dalam register tersebut, setelah hadirnya stop bit, maka USART akan membuang frame dan menyiapkan data pada UDR (Read ) sehingga dapat segera di ambil. Kita dapat menggunakan instruksi OUT dan IN untuk menulis dan membaca register UDR ini.

UCSRA (USART Control dan Status Register A)
adalah register yang penting. Sebegian besar adalah berisi status dari dari proses transfer komunikasi serial itu sendiri. Adapun penjelasan dari bit-bit tersebut adalah:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1b8WiTWdUNKg-VFw5lKzc_oiG3FZwdyIWWw5WZQWnryCPukM2UXvUxYcMnMQ7aDtdGf_1YYtLu5fKOIRrm69rroojXuZUMWEu0ujJbhN0h8Ablbzvmj6bGKElLiUyKms1QNy5cS5eGvw/s1600/UCSRA.JPG
 Keterangan Per-bit:

Bit 7 – RxC: USART Receive Complete 
Bit ini menjadi tinggi jika ada data yang masih belum diambil atau dibaca di dalam buffer penerima ( UDR-read ). Bit ini akan otomatis rendah setelah buffer penerima telah dibaca. Jika Unit Penerima tiba-tiba dimatikan setelah diaktifkan, maka isi dalam buffer penerima akan langsung dibuang (flushed) dan bit RxC ini akan langsung dibuat rendah. Bit ini juga bisa mengaktifkan instrupsi “Receive Complete interrupt ”. Lihat penjelasan tentang bit RxCIE. Untuk mengetahui penerimaan data jika high (1) ada data baru dan jika low (0) tidak ada data baru.

Bit 6 – TxC: USART Transmit Complete
Bit ini akan otomatis tinggi saat semua frame dalam shift-register pengiriman telah digeser semuanya keluar dan jika tidak ada data baru yang berarada dalam buffer pengiriman (UDR-write). Bit TxC ini akan otomatis rendah setelah “Transmit Complete interrupt ” dijalankan, atau dengan meng-clearkan secara manual dengan cara menulis bit ini dengan nilai 1’s (tinggi). Bit TxC ini pula dapat membangkitan “Transmit Complete interrupt ”. Lihat penjelasan tentang bit TxCIE. Untuk mengetahui pengiriman data, jika high (1) ada data baru dan jika low (0) tidak ada data baru.

Bit 5 – UDRE: USART Data Register Empty
Bit UDRE ini adalah untuk menjadikan tanda jika buffer pengiriman (UDR-write) telah siap untuk diberikan data baru. Bit ini akan bernilai 1 (tinggi) , berarti kita saat itu boleh menulis UDR. Bit ini dapat membangkitkan UDRIE atau “Data Register Empty interrupt ”. Lihat penjelasan tentang bit UDRIE. Bit ini setelah reset langsung bernilai 1, yang berarti siap untuk melakukan pengiriman.

Bit 4 – FE: Frame Error
Bit ini otomatis menjadi tinggi jika saat menerima data, ternyata ada kesalahan dari frame yang diterima. Misalnya saat Unit penerima seharusnya menunggu sebuah bit Stop, ternyata data yang ada adalah 0 (rendah). Bit ini valid setelah kita membaca UDR. Harap selalu menulis bit ini dengan 0 (rendah ) saat kita sedang menulis UCSRA.

Bit 3 – DOR: Data OverRun
Bit ini akan menjadi tinggi saat kondisi overrun terjadi. Kondisi ini terjadi saat buffer penerima sudah penuh dan berisi 2 data karakter, dimana data karakter terakhir tidak bisa dipindahkan ke UDR-read, karena tidak kunjung dibaca oleh user. Bit ini valid setelah kita membaca UDR. Harap selalu menulis bit ini dengan 0 (rendah ) saat kita sedang menulis UCSRA.

Bit 2 – PE: Parity Error
Bit ini akan menjadi tinggi saat karakter yang sedang diterima ternyata memiliki format parity yang salah. Tentu saja hal ini terjadi jika bit parity checking diaktifkan (UPM1 = 1). Bit ini valid setelah kita membaca UDR. Harap selalu menulis bit ini dengan 0 (rendah ) saat kita sedang menulis UCSRA.

Bit 1 – U2X: Double the USART Transmission Speed
Bit ini hanya berlaku untuk operasi tak sinkron (asynchronous). Jika bit ini kita tulis dengan 1’s (tinggi) maka baud rate akan menjadi lebih cepat 2 kali. Hal itu terjadi karena pembagi baud rate yang biasanya membagi 16 kemudian menbagi menjadi dengan 8 saja. Tulis bit ini dengan 0’s (rendah) untuk oprasi sinkron (synchronous).

Bit 0 – MPCM: Multi-processor Communication Mode Bit ini digunakan untuk mode komunikasi Multi-Prosesor. Saat bit PMCM ini dibuat menjadi tinggi maka setiap data yang diterima oleh unit penerima, namun tidak dilengkapi dengan informasi alamat, data yang benar, maka akan diabaikan. Bit ini hanya berguna untuk penerima, dan bukan untuk pengirim.


UCSRB (USART Control dan Status Register B) 
adalah register yang penting. Sebagian besar adalah berisi status dari dari proses transfer komunikasi serial itu sendiri. Adapun penjelasan dari bit-bit tersebut adalah:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2zOiuG8uIk__5SXMXHJLWniDwnNa7mqR6KGuzIrFa4mucT2Dry-awhRZjHx7S4zwfiYSaj5kuwS7WXKw0i24lphdoy_Kz7oN3pTub7XpY6rHfxptJfAAZVZXeTLp3J2peU5-mGQV22CY/s400/UCSRB.JPG
 Keterangan Per-bit:

Bit 7 – RxCIE: RX Complete Interrupt Enable
Menulis bit ini menjadi tinggi akan mengaktifkan instrupsi yang berkaitan dengan bit RxC. "USART Receive Complete interrupt" akan terjadi hanya jika bit RxCIE ini dan bit I (Global Inteurpt) milik register SREG adalah 1's (Tinggi), dan ada tingginya bit RxC milik UCSRA.

Bit 6 – TxCIE: Tx Complete Interrupt Enable
Menulis bit ini menjadi tinggi maka akan mengaktifkan interupsi pada bit TxC, yakni "USART Transmit Complete interrupt" yang akan menjalankan interupsi setiap frame dari data pengiriman selasai dikirim atau dengan kata lain terjadi interupsi setiap bit TxC menjadi tinggi. Interupsi hanya bisa terjadi jika sebelumnya bit TxCIE ini di-set tinggi dan bit Global Interupt (I) milik register UCSRA juga di-set tinggi.

Bit 5 – UDRIE: USART Data Register Empty Interrupt Enable
Menulis bit ini menjadi tinggi maka akan mengaktifkan interupsi pada bit UDRE, yakni "Data Register Empty interrupt" yang akan menjalankan interupsi saat data pada buffer pengiriman sudah kosong atau dengan kata lain setiap bit UDRE menjadi tinggi. Interupsi hanya bisa terjadi jika sebelumnya bit UDRIE ini di-set tinggi dan bit Global Interupt (I) milik register UCSRA juga di-set tinggi.

Bit 4 – RxEN: Receiver Enable
Agar unit penerima dari USART dapat bekerja, maka bit RxEN ini harus dibuat tinggi sebelumnya. Begitu dibuat tinggi, pin RxD akan diputus sebagai standar I/O dan dihubungkan dengan unit penerima USART ini. Namun jika tiba-tiba bit RxEN ini dibuat rendah kembali setelah tadinya tinggi, maka unit penerima USART akan segera menghentikan kerjanya dan membatalkan proses penerimaan data, serta membersihkan buffer penerimaan, termasuk juga bit FE, DOR, dan PE.

Bit 3 – TxEN: Transmitter Enable
Agar unit pengirim USART dapat bekerja, maka bit TxEN ini harus dibuat tinggi sebelumnya. Begitu dibuat tinggi, pin TxD akan diputus dari standar I/O dan dihubungkan dengan unit pengirim USART ini. Namun jika tiba-tiba bit TxEN ini dibuat rendah kembali setelah tadinya tinggi, maka unit pengirim USART masih harus menyelesaikan tugasnya yang terakhir, yakni mengirim data yang tersisa. Baru kemudian iUnit pengiriman USART akan berhenti dan mengembalikan port TxD menjadi standar I/O kembali.

Bit 2 – UCSZ2: Character Size
Bit ini adalah pasangan dari Bit UCSZ1 dan bit UCSZ0 milik register UCSRC, untuk menentukan jumlah data yang hendak ditransfer.

Bit 1 – RxB8: Receive Data Bit 8
Jika kita menggunakan format penerimaan data 9-bit maka bit yang terakhir yang diterima akan ditempatkan pada bit RxB8 ini. Pabrik menyarankan untuk membaca bit ini terlebih dahulu sebelum membaca 8-bit data lainnya di UDR. 

Bit 0 – TxB8: Transmit Data Bit 8 
Jika kita menggunakan format pengiriman data 9-bit maka bit yang terakhir yang hendak dikirim ditempatkan pada bit TxB8 ini. Pabrik menyarankan untuk menulis bit ini terlebih dahulu sebelum menulis 8-bit data lainnya di UDR.

UCSRC (USART Control dan Status Register C) 
regsiter ini adalah register penting, untuk melakukan kontrol pada peralatan USART. Namuin jika tidak menggunakan fungsi USART, maka boleh mengabaikan register ini seperti dalam keadaan resetnya. dengan nilai $96, yang berarti bahwa sedang meggunakannya sebagai UART, Parity-none, 1 stop bit, ukuran data 8-bit (UCSZ2 = 0).
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvo5WhtyNM-wgxh0PRSmeQNKDQmjSjE353PosDbZWnIY15oAz6JM5m7Xz0i6Z9Y8YJI632zGYLG8Nc4p9zl5gZepdjNFBKK9L_D5N3DfcKsZ0I95hIf84KUPyL6oXr1vGVosP0imTdpkE/s400/UCSRC.JPG
Catatan       :  Register UCSRC adalah berbagi alamat I/O yang sama dengan register UBBRH. Lihat bagaimana mengakses UBBRH dan UCSRC pada “Accessing UBRRH/UCSRC Registers” untuk mendapatkan penjelasan lebih lengkap.

Bit 7 – URSEL: Register Select
Saat akan menulis port $20 maka ada dua register yang akan akan diakses, yang ditentukan dari D7 dari data yang dituliskan. Jika D7 (MSB) adalah 1 atau datanya diatas $80 maka sedang menuliskan  data pada UCSRC. Sedang jika data yang hendak dituliskan adalah dibawah $80, maka kita sedang menulis UBRRH. Bagaimana saat membaca UCSRC, pastikan sebelumnya bit ini dalam keadaan tinggi sebelumnya membaca lokasi $20 ini.

Bit 6 – UMSEL: USART Mode Select
Bit ini untuk memilih USART dijadikan mode Taksinkron (Asynchronous)  atau Sinkron (Synchronous). 




Bit 5:4 – UPM1:0: Parity Mode 
Bit-bit ini adalah untuk menghidupkan pembangkit dan pemeriksa  parity. Jika diaktifkan maka akan otomatis membangkitkan parity pada setiap data yang dikirimkan dan akan memeriksa validitas parity dari setiap data yang diterima. Pada Unit penerima kita akan mendapatkan parity yang diterima, kemudian parity tersebut akan dibandingkan dengan status dari UMP0. Jika ternyata tidak cocok, maka bendera bit PE (Parity Error) pada UCSRA akan diaktifkan. 
Tabel Pengaturan Parity

Bit 3 – USBS: Stop Bit Select 
Dengan membiarkan bit in menjadi 0 maka frame akan dilengkapi dengan Stop-bit selebar 1-bit. Sedang jika bit ini ditulis tinggi, maka bit stop menjadi 2-bit. Stop bit sepanjang 2-bit ini biasanya diperlukan bagi system lain yang terhubung dengan AVR akan memiliki waktu yang cukup untuk memproses data yang baru saja diterimanya, dan sudah berar-benar siap untuk menerima data berikutnya. Unit penerima USART tidak menggunakan bit ini. 
Tabel Jumlah Bit Sebagai Bit Stop 


Bit 2:1 – UCSZ1:0: Character Size 
Menentukan karakter dari data yang hendak dikirimkan dan diterima haruslah merujuk pada bit-bit ini. Yakni bit UCSZ1 dan bit UCSZ0 milik register ini. Ditambah dengan bit UCSZ2 pada register UCSRB.
Tabel Jumlah Data Yang Di Transfer 


Bit 0 – UCPOL: Clock Polarity 
Bit ini hanya digunakan pada mode Synchronous. Dalam mode ini akan direlasikan antara daya yang diterima dan data yang dikirm dan disinkronkan dengan status dari XCX (synchronous clock). Perhatikan tabel 5 untuk mendalami bagaimana singkronikasi terjadi untuk ujung XCX (edge) yang berbeda dengan mengatur bit UCPOL ini.
Tabel Pengaturan Polaritas Dalam Mode Synchronous
 


UBRR (USART Baud Rate Register)
akhirnya kita mendapati register yang menentukan baud rate dari peralatan USART yang kita gunakan. Sebagaimana biasanya, baud rate antara AVR (sumber) dan device target haruslah sama. Hal ini menjadi sangat penting agar tidak ada transfer data palsu yang isinya diluar kemauan.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiHH8Y00FU7QTdPMGoinBQDWkRO5fgQVSdRhFXrbmQRZflJsL2UZfYa8rT5P1SPFwt_eFzCQLvXwnLlJH3TAkaHOQf7djRHrhMStewfQ47J9CWrnuUAjSX-48YIOx4fpPeKnYtd-SP5Aw/s400/UBRR.JPG

Catatan:
Register UBRRH adalah berbagi alamat I/O yang sama dengan register UBBRH. Lihat bagaimana mengakses UBBRH dan UCSRC pada “Accessing UBRRH/UCSRC Registers” untuk mendapatkan penjelasan lebih lengkap.

Bit 15 – URSEL: Register Select
Bit ini untuk memilih dalam mengakses alamat port $20. Seperti yang kita tahu bahwa alamat port ini dimiliki oleh 2 buah regsiter yang berbeda, yakni UBRRH dan UCSRC. Saat kita hendak menulis UBBRH maka pastikan data bit MSB atau D7 harus rendah.

Bit 14:12 – Reserved Bits
Bit ini tidak digunakan saat ini. Mungkin akan digunakan pada produksi berikutnya. Oleh karena itu kita disarankan untuk tidak menulisnya dengan nilai 1 pada bit-bit yang tidak digunakan. 

Bit 11:0 – UBRR11:0: USART Baud Rate Register 
Ini adalah merupakan register 12-bit yang mana berisi dengan pengatur baud rate USART. Register ini adalah pasangan dari register UBBRH dan UBRRL, dimana UBBRL berisi 8-bit LSB (bit-bit terbawah) dan sisanya dimiliki oleh UBRRH. Mengubah nilai dari register ini saat transmisi berlangsung, akan menyebabkan kesalahan transmisi, karena baud rate akan langsung berubah seiring dengan berubahnya nilai dari register ini.
Tabel UBRRH (USART Baud Rate Register High)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWvKahhoDBln7Duhn9dy0p0yv2baezzQV19Cww8z6eH_z4gIF589r88nS-xoOCUG_CrXr2sVa3dEBWSlJ5G32n1Kl_VJs06pP3nHc01SN3uqZbkmPy5tS_GV4nof2Naf1ZxzG8_PVYLKI/s400/UBRRH+Tabel.JPG
Keterangan:
Baud     = Baud Rate (bps)
fosc        = Frekuensi Kristal
UBRR   = Nilai UBRR

Jika ada kekeliruan pada materi ini tolong direvisi ya, terimakasih.

Prosedur dan Fungsi Pada Pascal


Prosedur dan afungsi adalah suatu bagian program ( sub program ) yang memiliki tugas untuk mengerjakan deretan perintah tertentu. Dengan prosedur memungkinkan untuk melakukan suatu pekerjaan yang berulang – ulang tanpa harus menuliskan kembali instruksi – intruksi yang dilakukan. Pekerjaan yang dilakukan berulang –ulang . Prosedur dan fungsi bedanya kalau prosedur hasilnya tidak ditipedatakan sedangkan fungis hasilnya harus ditipedatakan. Syntak penulisannya :
           

Procedure NamaPRogram;
            Begin
                                Statement
            End;
            Begin
            Pemanggilan Program;
            End;

Dan &&&
Function NamaProgram:Tipedata;
Begin
                    Statement
End;
Begin
    PemanggilanProgram;
End;

Latihan – Latihan
Program Menghitung _Berbagai_Luas;
Uses Crt;
Var
            S,SE,PP,LL,LJ                                                                          : Real;
            P,Alas,Tinggi,Panjang,Lebar,Jari,Sudut,Pil                         : Integer;
            Pilihan                                                                                        : Char;

Procedure Matematika;
Begin
            Writeln;
            Writeln(‘Ketikan angka pilihan dibawah ini dan tekan < Enter > ‘);
Writeln(‘1. Luas Segitiga’);
Writeln(‘2. Luas SegiEmpat’);
Writeln(‘3. Luas Persegi Panjang’);
Writeln(‘4. Luas Lingkaran’);
Writeln(‘5. Luas Juring’);
Writeln(‘6. Selesai’);
End;
Procedure Luas_Segitiga;
Begin
            Writeln;
Write(‘Alas                                               : ‘);Readln(Alas);
Write(‘Tinggi                                            : ‘);Readln(Tinggi);
S:=alas * (Tinggi / 2);
Writeln(‘Luas Segitiga                           : ‘,S);
End;
Procedure Luas_SegiEmpat;
Begin
            Writeln;
Write(‘Panjang                                        : ‘);Readln(Panjang);
Write(‘Lebar                                            : ‘);Readln(Lebar);
SE:=Panjang * Lebar
Writeln(‘Luas SegiEmpat                      : ‘,SE);
End;
Procedure Luas_Persegi_Panjang;
Begin
            Writeln;
Write(‘Panjang                                        : ‘);Readln(Panjang);
Write(‘Lebar                                            : ‘);Readln(Lebar);
PP:=Panjang * Lebar
Writeln(‘Luas Persegi Panjang               : ‘,PP);
End;
Procedure Luas_Lingkaran;
Begin
            Writeln;
Write(‘Jari - Jari                                       : ‘);Readln(Jari);
LL:=Pi * Sqr(Jari);
Writeln(‘Luas Lingkaran                       : ‘,LL);
End;
Procedure Luas_Juring;
Begin
            Writeln;
Write(‘Sudut Juring                 : ‘);Readln(Juring);
Write(‘Jari - Jari                                       : ‘);Readln(JAri);
LJ:=Sudut / 360 * Pi * Sqr(Jari);
Writeln(‘Luas Juring                               : ‘,LJ);
End;
Procedure Laksanakan_Matematika;
Begin
    P:= Ord(Pilihan) – 48
    Case P Of
                    1 : Luas_Segitiga;
                    2 : Luas_SegiEmpat;
                    3 : Luas_Persegi_Panjang;
                    4 : Luas_Lingkaran;
                    5 : Luas_Juring;
                    6 : Begin
                                    Writeln;
                                    Writeln(‘ &&&& Selesai &&&&’);
                                    End;
End;
End;

Begin
                Write(‘Pilihan                                       : );Readln(Pil);
                Write p <> 6 Do
                Begin
                Repeat
                Matematika;
                Write(‘Pilihan angka yang dipilih : ‘);read(Pilihan);
                Writeln(Pilihan);
                Laksanakan_Matematika;
                Until (pilihan = 6);
            End;
End.
Program Perpustakaan;
Uses Crt;
Var    
                Kode_Buku                                                                          : Char;
                Harga_Sewa, Denda_Hari, Sewa_Hari, Bayar             : Real;

Procedure Masukan(Var Tr_Kode ; Var Tr_hari:Real);
Begin
            Gotoxy(15,12);Write(‘Kode Buku Pinjaman                    :’);Readln(Tr_Kode);
            Gotoxy(15,13);Write(‘Lama Hari Pinjam                          :’);Readln(Tr_Hari);
End;
Funtion HargaSewa(Tr_Kode2 : Char);Real;
Begin
            If Upcase(Tr_Kode2) = ‘A’ Then
            HargaSewa := 300
            Else If Upcase (Tr_Kode2) = ‘B’ Then
            HargaSewa := 250
            Else If Upcase (Tr_Kode2) = ‘L’ Then
            HargaSewa := 350;
End;
Funtion Denda(Tr_Kode3 : Char; Tr_Kode2 : Real);Real;
Var
            A                 : Real;
Begin
            If Upcase(Tr_Kode3) = ‘A’ Then
            A:= 50
                                Else If Upcase (Tr_Kode3) = ‘B’ Then
                                A := 25
                                                Else If Upcase (Tr_Kode3) = ‘L’ Then
                                                A:= 100;
            If Tr_Hari2 > 7 Then
            Denda := (Tr_Hari2 – 7) * A
            Else Denda := 0;
End;
Procedure Cetak(Tr_Sewa, Tr_Denda, Tr_Total : real);
Begin
            Gotoxy(15,15);Write(‘Harga Sewa 7 Hari         : Rp.’,Tr_Sewa:5:0);
            Gotoxy(15,16);Write(‘Denda Harus Bayar       : Rp.’,Tr_Denda:5:0);
            Gotoxy(15,17);Write(‘================================);
            Gotoxy(15,18);Write(‘Total Pembayaran          : Rp.’,Tr_Total:5:0);
End;
            Clrscr; { Membersihkan Layar }
            Masukan(Kode_Buku, Sewa_Hari);
            Harga_Sewa := HargaSewa(Kode_Buku);
            Denda_Hari := Denda(Kode_Buku,Sewa_Hari);
            Bayar := Harga_Sewa + Denda_Hari;
            Cetak(Harga_sewa, Denda_Hari,Bayar);

End.