Senin, 13 Juli 2009

REKAYASA PERANGKAT LUNAK

REKAYASA PERANGKAT LUNAK
(SOFTWARE ENGINEERING)

I.PENDAHULUAN
Rekayasa perangkat lunak telah berkembang sejak pertama kali ddiciptakan pada tahun 1940-an hingga kini. Focus utama pengembangannya adalah untuk mengembangkan praktek dan teknologi untuk meningkatkan produktivitas para praktisi pengembang perangkat luank dan kualitas aplikasi yang dapat digunakan oleh pemakai.

I.1 Sejarah Software Engineering
Istilah software engineering digunakan pertama kali pada akhir 1950-an dan awal 1960-an. Saat itu, masih terdapat perdebatan tajam mengenai aspek engineering dari pengembangan perangkat lunak. Pada tahun 1968 dan 1969, komite sains NATO mensponsori dua konferensi tentang rekayasa perangkat lunak, yang memberikan dampak kuat terhadap pengembangan rekayasa perangkat lunak. Banyak yang menganggap dua konferensi inilah yang menandai awal resmi profesi rekayasa perangkat lunak.
Pada tahun 1960-an hingga 1980-an, banyak masalah yang ditemukan para praktisi pengembangan perangkat lunak. Banyak project yang gagal, hingga masa ini disebut sebagai krisis perangkat lunak. Kasus kegagalan pengembangan perangkat lunak terjadi mulai dari project yang melebihi anggaran, hingga kasusu yang mengakibatkan kerusakan fisik dan kematian. Salah satu kasus yang terkenal antara lain meledaknya roket Ariane akibat kegagalan perangkat lunak. Selama bertahun-tahun, para peneliti memfokuskan usahanay untuk menemukan teknik jitu untuk memecahkan masalah krisi perangkat lunak. Berbagai teknik, metode, alat, proses diciptakan dan diklaim sebagai senjata pamungkas untuk memecahkan kasus ini. Mulai dari pemrograman terstruktur, pemrograman berorientasi objek, pernagkat pembantu pengembangan perangkat lunak (CASE tools), berbagai standar, UML hingga metode formal diagung-agungkan sebagai senjaat pamungkas untuk menghasilkan software yang benar, sesuai anggaran dan tepat waktu. Pada tahun 1987, Fred Brooks menulis artikel No Silver Bullet, yang berproposisi bahwa tidak ada satu teknologi atau praktek yang sanggup mencapai 10 kali lipat perbaikan dalam produktivitas pengembanan perngkat lunak dalam tempo 10 tahun.
Sebagian berpendapat, no silver bullet berarti profesi rekayasa perangkat lunak dianggap telah gagal. Namun sebagian yang lain justru beranggapan, hal ini menandakan bahwa bidang profesi rekayasa perangkat lunak telah cukup matang, karena dalam bidang profesi lainnya pun, tidak ada teknik pamungkas yang dapat digunakan dalam berbagai kondisi.

I.2 Pengertian Dasar
Istilah Reakayasa Perangkat Lunak (RPL) secara umum disepakati sebagai terjemahan dari istilah Software engineering. Istilah Software Engineering mulai dipopulerkan pada tahun 1968 pada software engineering Conference yang diselenggarakan oleh NATO. Sebagian orang mengartikan RPL hanya sebatas pada bagaimana membuat program komputer. Padahal ada perbedaan yang mendasar antara perangkat lunak (software) dan program komputer.
Perangkat lunak adalah seluruh perintah yang digunakan untuk memproses informasi. Perangkat lunak dapat berupa program atau prosedur. Program adalah kumpulan perintah yang dimengerti oleh komputer sedangkan prosedur adalah perintah yang dibutuhkan oleh pengguna dalam memproses informasi (O’Brien, 1999).
Pengertian RPL sendiri adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan. Dari pengertian ini jelaslah bahwa RPL tidak hanya berhubungan dengan cara pembuatan program komputer. Pernyataan ”semua aspek produksi” pada pengertian di atas, mempunyai arti semnua hal yang berhubungan dengan proses produksi seperti manajemen proyek, penentuan personil, anggaran biaya, metode, jadwal, kualitas sampai dengan pelatihan pengguna merupakan bagian dari RPL.
II.TUJUAN REKAYASA PERANGKAT LUNAK
Secara umunmm tujuan RPL tidak berbeda dengan bidang rekayasa yang lain. Hal ini dapat kita lihat pada Gambar di bawah ini.







Gambar 1. Tujuan RPL

Dari Gambar di atas dapat diartikan bahwa bidang rekayasa akan selalu berusaha menghasilkan output yang kinerjanya tinggi, biaya rendah dan waktu penyelesaian yang tepat. Secara leboih khusus kita dapat menyatakan tujuan RPL adalah:
a.memperoleh biaya produksi perangkat lunak yang rendah
b.menghasilkan pereangkat lunak yang kinerjanya tinggi, andal dan tepat waktu
c.menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis platform
d.menghasilkan perangkat lunak yang biaya perawatannya rendah









III.RUANG LINGKUP
Sesuai dengan definisi yang telah disampaikan sebelumnya, maka ruang lingkup RPL dapat digambarkan sebagai berikut:









Gambar 2. Ruang lingkup RPL (Abran et.al., 2004).

software Requirements berhubungan dengan spesifikasi kebutuhan dan persyaratan perangkat lunak
software desain mencakup proses penampilan arsitektur, komponen, antar muka, dan karakteristik lain dari perangkat lunak
software construction berhubungan dengan detail pengembangan perangkat lunak, termasuk algoritma, pengkodean, pengujian dan pencarian kesalahan
software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak
software maintenance mencakup upaya-upaya perawatan ketika perangkat lunak telah dioperasikan
software configuration management berhubungan dengan usaha perubahan konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu
software engineering management berkaitan dengan pengelolaan dan pengukuran RPL, termasuk perencanaan proyek perangkat lunak
software engineering tools and methods mencakup kajian teoritis tentang alat bantu dan metode RPL
software engineering process berhubungan dengan definisi, implementasi pengukuran, pengelolaan, perubahan dan perbaikan proses RPL
software quality menitik beratkan pada kualitas dan daur hidup perangkat lunak

IV.REKAYASA PERANGKAT LUNAK DAN DISIPLIN ILMU LAIN
Cakupan ruang lingkup yang cukup luas, membuat RPL sangat terkait dengan disiplin dengan bidang ilmu lain. tidak saja sub bidang dalam disiplin ilmu komputer namun dengan beberapa disiplin ilmu lain diluar ilmu komputer.
Hubungan keterkaitan RPL dengan ilmu lain dapat dilihat pada gambar dibawah ini








Gambar 3. Keterkaitan RPL dengan bidang ilmu lain.

bidang ilmu manajemen meliputi akuntansi, finansial, pemasaran, manajemen operasi, ekonomi, analisis kuantitatif, manajemen sumber daya manusia, kebijakan, dan strategi bisnis
bidang ilmu matematika meliputi aljabar linier, kalkulus, peluang, statistik, analisis numerik, dan matematika diskrit
bidang ilmu manajemen proyek meliputi semua hal yang berkaitan dengan proyek, seperti ruang lingkup proyek, anggaran, tenaga kerja, kualitas, manajemen resiko dan keandalan, perbaikan kualitas, dan metode-metode kuantitatif
bidang ilmu ergonomika menyangkut hubungan ( interaksi) antar manusia dengan komponen-komponen lain dalam sistem komputer
bidang ilmu rekayasa sistem meliputi teori sistem, analisis biaya-keuntungan, pemodelan, simulasi, proses, dan operasi bisnis

V.PERKEMBANGAN REKAYASA PERANGKAT LUNAK
Meskipun baru dicetuskan pada tahun 1968, namun RPL telah memiliki sejarah yang cukup yang panjang. Dari sisi disiplin ilmu, RPL masih reklatif muda dan akan terus berkembang.
Arah perkembangan yang saat ini sedang dikembangkan antara lain meliputi :

Tahun
Kejadian
1940an
Komputer pertama yang membolehkan pengguna menulis kode program langsung
1950an
Generasi awal interpreter dan bahasa macro Generasi pertama compiler
1960an
Generasi kedua compiler Komputer mainframe mulai dikomersialkan Pengembangan perangkat lunak pesanan
Konsep Software Engineering mulai digunakan
1970an
Perangkat pengembang perangkat lunak Perangkat minicomputer komersial
1980an
Perangkat Komputer Personal (PC) komersial Peningkatan permintaan perangkat lunak
1990an
Pemrograman berorientasi obyek (OOP) Agile Process dan Extreme Programming Peningkatan drastis kapasitas memori Peningkatan penggunaan internet
2000an
Platform interpreter modern (Java, .Net, PHP, dll) Outsourcing



VI.METODE REKAYASA PERANGKAT LUNAK
Pada rekayasa perangkat lunak, banyak model yang telah dikembangkan untuk membantu proses pengembangan perangkat lunak. Model-model ini pada umumnya mengacu pada model proses pengembangan sistem yang disebut System Development Life Cycle (SDLC) seperti terlihat pada Gambar berikut ini.









Gambar 4. System Development Life Cycle (SDLC).

Kebutuhan terhadap definisi masalah yang jelas. Input utama dari setiap model pengembangan perangkat lunak adalah pendefinisian masalah yang jelas. Semakin jelas akan semakin baik karena akan memudahkan dalam penyelesaian masalah. Oleh karena itu pemahaman masalah seperti dijelaskan pada Bab 1, merupakan bagian penting dari model pengembangan perangkat lunak.
Tahapan-tahapan pengembangan yang teratur. Meskipun model-model pengembangan perangkat lunak memiliki pola yang berbeda-beda, biasanya model-model tersebut mengikuti pola umum analysis – design – coding – testing - maintenance
Stakeholder berperan sangat penting dalam keseluruhan tahapan pengembangan. Stakeholder dalam rekayasa perangkat lunak dapat berupa pengguna, pemilik, pengembang, pemrogram dan orang-orang yang terlibat dalam rekayasa perangkat lunak tersebut.
Dokumentasi merupakan bagian penting dari pengembangan perangkat lunak. Masing-masing tahapan dalam model biasanya menghasilkan sejumlah tulisan, diagram, gambar atau bentuk-bentuk lain yang harus didokumentasi dan merupakan bagian tak terpisahkan dari perangkat lunak yang dihasilkan.
Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis. Nilai dari sebuah perangkat lunak sebenarnya agak susah di-rupiah-kan. Namun efek dari penggunaan perangkat lunak yang telah dikembangkan haruslah memberi nilai tambah bagi organisasi. Hal ini dapat berupa penurunan biaya operasi, efisiensi penggunaan sumberdaya, peningkatan keuntungan organisasi, peningkatan “image” organisasi dan lain-lain.

VII.TAHAPAN REKAYASA PERANGKAT LUNAK
Meskipun dalam pendekatan berbeda-beda, namun model-model pendekatan memiliki kesamaan, yaitu menggunaka pola tahapan analysis – design – coding(construction) – testing – maintenance.

1.Analisis sistem adalah sebuah teknik pemecahan masalah yang menguraikan sebuah sistem menjadi komponen-komponennya dengan tujuan mempelajari seberapa bagus komponen-komponen tersebut bekerja dan berinteraksi untuk meraih tujuan mereka.
Analisis mungkin adalah bagian terpenting dari proses rekayasa perangkat lunak. Karena semua proses lanjutan akan sangat bergantung pada baik tidaknya hasil analisis. Ada satu bagian penting yang biasanya dilakukan dalam tahapan analisis yaitu pemodelan proses bisnis.

2.Model proses adalah model yang memfokuskan pada seluruh proses di dalam sistem yang mentransformasikan data menjadi informasi (Harris, 2003). Model proses juga menunjukkan aliran data yang masuk dan keluar pada suatu proses. Biasanya model ini digambarkan dalam bentuk Diagram Arus Data (Data Flow Diagram / DFD). DFD meyajikan gambaran apa yang manusia, proses dan prosedur lakukan untuk mentransformasi data menjadi informasi.

3.Disain perangkat lunak adalah tugas, tahapan atau aktivitas yang difokuskan pada spesifikasi detil dari solusi berbasis computer (Whitten et al, 2004).
Disain perangkat lunak sering juga disebut sebagai physical design. Jika tahapan analisis sistem menekankan pada masalah bisnis (business rule), maka sebaliknya disain perangkat lunak fokus pada sisi teknis dan implementasi sebuah perangkat lunak (Whitten et al, 2004).
Output utama dari tahapan disain perangkat lunak adalah spesifikasi disain. Spesifikasi ini meliputi spesifikasi disain umum yang akan disampaikan kepada stakeholder sistem dan spesifikasi disain rinci yang akan digunakan pada tahap implementasi. Spesifikasi disain umum hanya berisi gambaran umum agar stakeholder sistem mengerti akan seperti apa perangkat lunak yang akan dibangun. Biasanya diagram USD tentang perangkat lunak yang baru merupakan point penting dibagian ini. Spesifikasi disain rinci atau kadang disebut disain arsitektur rinci perangkat lunak diperlukan untuk merancang sistem sehingga memiliki konstruksi yang baik, proses pengolahan data yang tepat dan akurat, bernilai, memiliki aspek user friendly dan memiliki dasar-dasar untuk pengembangan selanjutnya.
Desain arsitektur ini terdiri dari desain database, desain proses, desain user interface yang mencakup desain input, output form dan report, desain hardware, software dan jaringan. Desain proses merupakan kelanjutan dari pemodelan proses yang dilakukan pada tahapan analisis.

4.Konstruksi adalah tahapan menerjemahkan hasil disain logis dan fisik ke dalam kode-kode program komputer.

5.Pengujian sistem melibatkan semua kelompok pengguna yang telah direncanakan pada tahap sebelumnya. Pengujian tingkat penerimaan terhadap perangkat lunak akan berakhir ketika dirasa semua kelompok pengguna menyatakan bisa menerima perangkat lunak tersebut berdasarkan kriteria-kriteria yang telah ditetapkan.

6.Perawatan dan Konfigurasi. Ketika sebuah perangkat lunak telah dianggap layak untuk dijalankan, maka tahapan baru menjadi muncul yaitu perawatan perangkat lunak. Ada beberapa tipe perawatan yang biasa dikenal dalam dunia perangkat lunak seperti terlihat pada diagram di Gambar di bawah ini :









Gambar 5. Tipe-tipe perawatan.

Tipe perawatan corrective dilakukan jika terjadi kesalahan atau biasa dikenal sebagai bugs. Perawatan bisa dilakukan dengan memperbaiki kode program, menambah bagian yang dirasa perlu atau malah menghilangkan bagian-bagian tertentu.
Tipe perawatan routine biasa juga disebut preventive maintenance dilakukan secara rutin untuk melihat kinerja perangkat lunak ada atau tidak ada kesalahan.
Tipe perawatan sistem upgrade dilakukan jika ada perubahan dari komponen-komponen yang terlibat dalam perangkat lunak tersebut. Sebagai contoh perubahan platform sistem operasi dari versi lama ke versi baru menyebabkan perangkat lunak harus diupgrade.

Sabtu, 11 Juli 2009

ARSITEKTUR AT89C51

ARSITEKTUR AT89C51

Mikrokontroller AT89C51 termasuk dalam keluarga MCS-51TM dari intel. Sebuah mikrokontroller tidak dapat bekerja bila tidak diberi program kepadanya. Program tersebut memberitahu mikrokontroller apa yang harus dilakukan. Salah satu keunggulan dari AT89C51 adalah dapat diisi ulang dengan program lain sebanyak 1000 kali pengisian. Intruksi-intruksi perangkat lunak berbeda untu masing-masing jenis mikrokontroller. Intruksi-intruksi hanya dapat dipahami oleh jenis mikrokontroller yang bersangkutan. Intruksi-intruksi tersebut dikenal sebagai bahasa pemograman system mikrokontroller.
Sebuah mikrokontroller tidak dapat memahimi intruksi-intruk yang berlaku pada mirkrokontroller lain. Sebagai contoh, mikrokontroller buatan intel dengan mikrokontroller buatan Motorola memiliki perangkat intruksi yang berbeda.

 Karakteristik mikrokontroller AT89C51
Mikrokontroller AT89C51 memiliki beberapa fasilitas sebagai berikut :
• Sebuah CPU (Central Prosesing Unit) 8 bit yang termasuk keluarga MCS-51TM
• Osilator Internal dan rangkain timer
• Flash memori 4 Kbyte
• RAM internal 128 byte
• Empat buah programmable port I/O, masing-masing terdiri dari atas 8 buah jalur I/O
• Enam buah Jalur interupsi (3 buah interupsi eksternal dan 3 buah internal)
• Sebuah Port serial dengan control serial full duplex UART
• Kemampuan melaksanakan operasi perkalian, pembagian, penjumlahan dan operasi Boolean (bit)
• Kecepatan pelaksanaan intruksi per siklus 1 mikrodetik pada frekuensi clock 12 Mhz.
• ISP Programming
• Memiliki 2 DPTR
• WatchDog Timer

 Diskripsi Kaki (Pin) AT89S51
Susunan pin-pin mikrokontroler AT89S51 diperlihatkanan pada gambar dibawah ini. Penjelasan dari masing-masing pin adalah sebagai berikut :













Gambar 1 Konfigurasi Pin Mikrokontroller AT89S51

a. pin 1 sampai 8 (port 1) merupakan prot paralel 8 bit dua arah (input-output) yang digunakan sebagai keperluan general purpose. P1.5, P1.6 dan P1.7 selain digunakan sebagai I/O. pin juga digunakan sebagai masukkan untuk pengisian program ke dalam IC AT89S51.
b. Pin 9 (Reset) adalah intrupsi reset (aktif high) perpindahan kondisi rendah ke tinggi akan mereset AT89C51. Pin ini dihubungkan dengan rangkaian power on reset

c. Pin 10 sampai 17 (port 3) adalah port paralel 8 bit dua arah (input-output) yang memiliki fungsi pengganti. Fungsi pengganti meliputi TXD (Transmisi Data), RXD (Receiver Data), INT0 (Interupt 0), INT1 (Interupt 1), T0 (timer 0), T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti tidak dipakai, pin-pin ini dapat digunakan sebagai port paralel 8 bit serbaguna
d. Pin 18 dan 19 (XTAL1 dan XTAL2) adalah pin input osilator kristal, yang merupakan input clock bagi rangkaian osilator internal
e. Pin 20 (ground) dihubungkan ke Vss atau Ground
f. Pin 21 sampai 28 (port 2) adalah port paralel 8 bit dua arah (input-output). Port 2 ini mengirim byte alamat bila dilakukan pengaksesan memori ekternal
g. Pin 29 adalah pin PSEN (Program Strobe Enable) yang merupakan sinyal pengontrol yang membolehkan program memori eksternal masuk ke dalam bus selamat proses pemberian/pengambilan intruksi
h. Pin 30 adalah pin output ALE (Address Latch Enable) yang digunakan untuk menambah alamat memori eksternal selama pelaksanaan intruksi
i. Pin 31 EA bila pin ini diberi logika tinggi, mikrokontroler akan melaksanakan intruksi dari ROM ketika isi program counter kurang dari 4096, bila diberi logika rendah maka mikrokontroler akan melaksanakan seluruh intruksi dari memori program luar
j. Pin 32 sampai 39 (port 0) merupakan port paralel 8 bit open drain dua arah. Bila digunakan untuk mengakses memori luar, port ini akan memultipleks alamat memori dengan data
k. Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt)

Gambar 2 Blok Diagram AT89C51
 Organisasi Memori
Semua mikrokontroler dalam keluarga MCS-51 memiliki pembagian ruang alamat (address space) untuk program dan data. Pemisahan memori program dan memori data membolehkan memori data untuk diakses oleh alamat 8 bit. Meskipun demikian, alamat data 16 bit dapat dihasilkan melalui register DPTR (Data Pointer Register).
 Memori Program
Memori program hanya dapat dibaca tidak bisa ditulisi (karena disimpan dalam Flash Memori). Memori program dapat ditingkatkan sebesar 64 Kbyte dengan menambahkan memori eksternal. Sinyal yang membolehkan pembacaan dari memori program eksternal adalah dari PSEN. Memori data terletak pada ruang alamat terpisah dari memori program. RAM eksternal 64 Kbyte dapat dialamati dalam ruang memori data eksternal. CPU menghasilkan sinyal read dan write selama menghubungkan memori data eksternal.


Gambar 3 Memori Program
 Memori Data
Memori data internal dipetakan seperti pada gambar dibawah ruangan memorinya dibagi dua bagian yaitu RAM 128 Byte serta SFR (Special Fungsi Register). Tiga puluh dua byte RAM paling bawah dikelompokan dalam 4 bank (8 register), yiatu R0 sampai R7. Ruang pengalamatan bit dan stratch pad area. Ruang SFR berisi penahan port, pewaktu (timer), pengontrol peripheral dan lain-lain. Register ini hanya dapat diakses oleh pengalamatan langsung.

Gambar 4 Memori Data

Gambar dibawah menunjukan ruang SFR (Special Function Register) menepati ruang alamat RAM Internal 80H sampai 7FH. SFR berisi penahan port (port latch), pewaktu (timer), control peripheral dan lain-lain. Register-register ini hanya bisa diakses dengan pengalamatan langsung.

Gambar 4 Special Fungsi Register







Tabel Special Fungsi Register

Gambar 5 Special Function Register
 Osilator
Mikrokontroller AT89S51 memiliki osilator internal yang dapat diguakan sebagai sumber clock bagai CPU. Untuk menggunakan osilator internal diperlukan sebuah kristal atau resonator keramik antara pin XTAL1 dan XTAL2 dan sebuah kapasitor ke ground. Untuk kristalnya dapat digunakan frekuensi dari 6 sampai 24 Mhz. sedangkan untuk kapasitor dapat bernilai antara 27 pF sampai 33pF.

Gambar 6 Konfigurasi Pemberian Clock


 Interupt
Apabila CPU pada mikrokontroler AT89S51 sedang melaksanakan tugas suatu program, kita dapat menghentikan pelaksanaan program tersebut secara sementara dengan meminta interupt. Apabila mendapat permintaan interupt, program counter (PC) akan diisi alamat vector interupt, setelah interupt selesai dilaksanakan maka CPU kembali ke program utama yang ditingalkan.
Pada mikrokontroler AT89S51 terdapat beberapa saluran interrupt. Interrupt pada AT89S51 dibedakan dalam dua jenis :
a. Interrupt yang tak dapat dihalangi oleh perangkat lunak (non maskable interrupt), misalnya reset
b. Interrupt yang dapat dihalangi perangkat lunak (maskable interrupt). Contoh interrupt jenis ini adalah INT0, INT1, Timer/Counter 1 serta interrupt serial.
Intruksi RETI harus digunakan untuk kembali dari layanan rutin interrupt. Intruksi ini dipakai agar saluran interrupt kembali dapat dipakai. Alamat layanan rutin interrupt dari setiap sumber diperlihatkan pada table 1
Tabel 1 Alamat Layanan Rutin Interrupt
Nama Lokasi Alat Interupt
Reset 00H Power on Reset
INT 0 03H INT 0
Timer 0 0BH Timer 0
INT 1 13H INT 1
Timer 1 1BH Timer 1
Serial 23H Port I/O serial
Mikorokontroler AT89S51 menyediakan 6 sumber interrupt, 2 interrupt eksternal, 2 interrupt timer dan satu interrupt port serial. Interrupt eksternal INT 0 dan INT 1 masing-masing dapat diaktifkan berdasarkan level atau transisi.
 Interupt Enable
Sumber Interupt dapat diaktifkan dan dimatikan secara individual atau dengan mengatur satu bit di SFR yang bernama IE (Interupt Enable). Bit-bit IE didefinisikan sebagai berikut :


Jika akan mengaktifkan interrupt 0 (INT0), nilai yang harus diberikan ke IE adalah 81H (yaitu memberikan logika 1 ke EA dan EX0).
 Prioritas Interupt
Setiap Sumber interrupt dapat deprogram secara individual menjadi satu atau dua tingkat prioritas dengan mengatur bit SFR yang bernama IP, Interupt dengan prioritas rendah dapat diinterupt oleh interrupt yang memiliki prioritas lebih tinggi, tetapi tidak bisa diinterupt oleh interrupt dengan prioritas lebih rendah. Interrupt prioritas tertinggi tidak dapat diinterupt oleh sumber interrupt lain.
Bila permintaan interrupt dengan tingkat prioritas berbeda diterima pada saat yang sama, interrupt dengan prioritas lebih tinggi yang dilayani. Sedangkan bila prioritasnya sama, maka akan dilakukan poling untuk menentukan mana yang dilayani. Bit-bit pada IP adalah sebagai berikut :


 Timer/Counter
Mikrokontroller AT89C51 mempunyai dua buah timer/counter 16 bit yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1. Bila timer/counter diaktifkan pada frekuensi kerja mikrokontroller 12 Mhz, timer/counter diaktifkan pada perhitungan waku 1 mikro detik secara bebas, tidak tergantung pada pelaksanaan suatu intruksi, satu sklus pencacahan waktu berpadanan dengan satu siklus pelaksanaan intruksi dan satu siklus diselenggarakan waktu 1 mikro detik. Apabila perioda tertentu telah dilampaui, timer/counter akan meng-interupt mikrokontroller untuk memberitahukan bahwa perhitungan perioda waktu telah selesai. Perioda waktu timer/counter secara umum ditentukan oleh persamaan sebagai berikut :
a) sebagai timer/counter 8 bit
T = (255 – Tlx) x 1uS
Dimana Tlx adalah isi register TL0 atau TL1.
b) Sebagai timer/counter 16 bit
T = (65535 – THx TLx) x 1uS
Dimana :
THx = isi register TH0 atau TH1
TLx = isi register TL0 atau TL1
Pengontrol kerja timer/counter adalah register timer/counter (TCON). Definisi bit-bit timer/counter adalah sebagai berikut :

Pengontrolan pemilihan mode operasi timer/counter adalah register timer mode (TMOD) yang definisi bit-bitnya adalah sebagai berikut :


Table 2 Mode Timer/Counter
M1 M0 Mode Operation
0 0 0 Timer 13 bit
0 1 1 Timer/counter 16 bit
1 0 2 Timer auto reload 8 bit (Pengisian otomatis)
1 1 3 TL0 adalah timer/counter 8 bit yang dikontrol oleh control bit standart timer 0
TH0 adalah timer 8 bit dan dikontrol oleh control bit timer 1

a. Mode 0
Pada mode ini register timer disusun sebagai register 13 bit,. Setelah semua perhitungan selesai, mikrokontroller akan menset timer interrupt Flag (TF1) dengan membuat GATE = 1, timer dapat dikontrol oleh masukan luar INT1 untuk fasilitas pengukuran lebar pulsa
b. Mode 1
Mode ini sama dengan mode 0, tetapi register timer berkerja pada 16 bit.
c. Mode 2
Register timer tersusun sebagai 8 bit counter. Limpahan (overflow) dari TL1 menset TF1 dan mengisi TL1 dengan isi TH1 yang diatur secara software. Pengisian ini tidak mengubah TH1.
d. Mode 3
Dalam mode 3. timer 1 semata-mata memegang hitungan yang efeknya sama seperti menset TR1 = 0.sedangkan timer 0 digunakan untuk menetapkan TL0 dan TH0 sebagai data dua counter terpisah, TL0 menggunakan control bit timer 0 yaitu C/T, GATE, TR0 INT0 dan TF0. TH0 ditetapkan sebagai fungsi timer.
Mode 3 diperlukan untuk aplikasi yang memerlukan timer/counter ekstra 8 bit,. Dengan timer 0 pada mode 3 mikrokontroller AT89C51 seperti memiliki 3 timer/counter saat timer 0 pada mode 3, timer 1 dapat dihidupkan atau dimatikan , atau dapat digunakan oleh port serial sebagai pembangkit baud rate. Untuk menjalankan timer 0 dan timer 1 secara bersamaan, dalam beberapa mode nilai TMOD harus di-OR-kan dengan nilai seperti terlihat untuk timer 1, pada control internal, timer dihidup – matikan dengan menset bit TR0 (control software). Pada control eksternal, timer dihidupkan/matikan dengan memberikan logika pada pin INT0.
Beberapa nilai TMOD yang dapat digunakan dalam penyetelan timer pada mode yang berbeda diperlihatkan pada tabel dibawah :
Tabel 3 Timer/Counter 0 sebagai Timer


Tabel 4 Timer/Counter 0 sebagai Counter





Tabel 5 Timer/Counter 1 sebagai timer

Tabel 6 Timer/Counter 1 sebagai Counter


 Program Status Word
Program status word berisi beberapa bit status yang mencerminkan keadaan mikrokontroller. Definisi daribit-bit dalam PSW dijelaskan dibawah ini

RS0 dan RS1 digunakan untuk memilih bank register. Delapan buah register ini merupakan register serbaguna. Lokasinya pada awal 32 byte RAM internal yang memiliki alamat dari 00H sampai 1FH. Register ini dapat diakses melalui symbol assembler (R0, R1, R2, R3, R4, R5, R6, R7). Pemilihan bank register diperlihatkan pada tabel dibawah ini :




Tabel 7 Pemilihan Bank Register

Register R0 dan R1 dapat digunakan untuk pengalamatan tak langsung pada RAM internal. Sisa register lainya tidak dapat digunakan untuk pengalamatan tak langsung.

















SET INTRUKSI DAN PEMOGRAMAN ASSEMBLY MSC51

 Operand an Set Intruksi MCS51
Operan dalam pemrograman mikrokontroller adalah data yang tersimpan dalam memori, register dan input/output (I/O). intruksi yang dikenal secara umum dikelompokan menjadi beberapa kelompok yaitu intruksi untuk pemindahan data, aritmetika, operasi logika, pengaturan aliran program dan beberapa hal khusus, kombinasi dari instruksi dan operan itulah yang membentuk intruksi pengaturan kerja mikrokontroller.
 Mode Pengalamatan dalam MCS51
Data ataupun operan bisa berada ditempat yang berbeda sehingga dikenal beberapa cara untuk mengakses data operan tersebut yang dinamakan sebagai mode pengalamatan (Addressing Mode) antara lain yaitu :
a. Pengalamatan Langsung (Direct Addressing)
Pada mode ini operand ditentukan dari sebuah alamat 8 bit. Hanya berlaku untuk RAM internal dan SFR.
Contoh: MOV A,7FH (isi accumulator dengan isi alamat 7Fh)
b. Pengalamatan Tidak Langsung (Indirect Addressing)
Mode ini menggunakan Register tertentu berisi Data yang menunjukan Alamat. Bisa berlaku untuk internal dan external RAM. Register untuk menunjukkan alamat tersebut adalah R0 atau R1, maupun Stack Pointer untuk operasi 8 bit. Untuk mengakses 16 bit alamat digunakan data pointer DPTR.
Contoh: MOV A,@R0 (isi accumulator dengan alamat yang ditunjukkan oleh isi R0)
c. Pengalamatan Register
Pengalamatan mode ini lebih effisien dan mengeleminasi satu byte alamat
Contoh: MOV A,R7
d. Immediate Constant
Sebuah nilai konstanta dapat mengikuti opcode dalam Program memori
Contoh: MOV A,#20h (Mengisi accumulator dengan data 20h)
e. Pengalamatan Bit
Pengalamatan bit adalah penunjukan alamat lokasi bit baik dalam RAM internal (byte 32 sampai 47) atau bit perangkat keras. Untuk melakukan pengalamatan bit digunakan symbol titik (.), misalnya FLAGS.3, 40.5, 21H.1 dan ACC.7. Tabel dibawah menunjukan pengalamatan bit pada mikrokontroller AT89C51
Tabel 8 Spesial function register (SFR)
Simbol Posisi Bit Alamat Bit Nama
CY PSW.7 D7H Carry Flag
AC PSW.6 D6H Auxilliary carry falg
F0 PSW.5 D5H Flag 0
RS1 PSW.4 D4H Reg. Bank Select Bit 1
RS0 PSW.3 D3H Reg Bank Select Bit 0
OV PSW.2 D2H Overflow Flag
P PSW0 D0H Parity Flag
TF1 TCON.7 8Fh Timer 1 overflow flag
TR1 TCON.6 8EH Timer run control bit
TF0 TCON.5 8DH Timer 0 overflow flag
TR0 TCON.4 8CH Timer 0 run control bit
IE1 TCON.3 8BH Interupt 1 edge flag
IT1 TCON.2 8AH Interupt 1 type control
IE0 TCON.1 89H Interupt 0 edge flag
IT0 TCON.0 88H Interupt 0 type control
SM0 SCON.7 9FH Serial Mode control bit 0
SM1 SCON.6 9EH Serial mode control bit 1
SM2 SCON.5 9DH Serial mode control bit 2
REN SCON.4 9CH Reciever enable
TB8 SCON.3 9BH Transmit bit 8
RB8 SCON.2 9AH Receiver bit 8
TI SCON.1 99H Transmit interrupt flag
RI SCON.0 98H Receive Interupt flag
EA IE.7 AFH Enable all interupr
ES IE.4 ACH Enable serial port interrupt
ET1 IE.3 ABH Enable Timer 1 Interupt
EX1 IE.2 AAH Enable external Interupt 1
ET0 IE.1 A9H Enable Timer 0 interupt
EX0 IE.0 A8H Enable external interrupt 0
PS IP.4 BCH Serial port interrupt priority
PT1 IP.3 BBH Timer 1 interupt priority
PX1 IP.2 BAH External interrupt priority
PT0 IP.1 B9H Timer 0 interupt priority
PX0 IP.0 B8H External interrupt 0 priority

 Perangkat Intruksi
Mikrokontroller AT89C51 memiliki 256 perangkat intruksi. Seluruh intruksi dapat dikelompokan dalam 4 bagian yang meliputi intruksi 1 byte sampai 4 byte. Apabila frekuensi clock mikrokontroller yang digunakan adalah 12 Mhz, kecepatan pelaksanaan intruksi akan bervarias dari 1 hingga mikrodetik. Perangkat intruksi mikrokontroller AT89C51 dapat dibagi menjadi lima kelompok sebagai berikut :
 Intruksi Transfer data
Intruksi ini memindahkan data antara register-register, memori-memori, register-memori, antar muka register dan antar muka memori.
Tabel 9 Intruksi Transfer Data


 Instruksi Aritmatika
Intruksi ini melaksanakan operasi aritmatika yang meluputi penjumlahan, pengurangan, penambahan satu (inkremen), pengurangan satu (dekremen), perkalian dan pembagian.

Tabel 10 Intruksi Aritmatika


 Instruksi Logika dan Manupulasi Bit
Instruksi ini melaksanakan operasi Boolean (AND, OR, XOR), perbandingan, pergeseran dan komplemen data.
Tabel 11 Intruksi Logika dan manupulasi Bit




 Instruksi Percabangan
Instruksi ini mengubah urutan normal pelaksanaan suatu program. Dengan instruksi ini program yang sedang dilaksanakan akan mencabang ke suatu alamat tertentu. Intruksi percabangan dibedakan atas 2 yaitu : percabangan bersyarat dan percabangan tanpa syarat.
Tabel 12 Intruksi Percabangan



 Aturan Pembuatan Program Assebler AT89C51
Program bahasa assembly berisikan :
 Intruksi-intruksi mesin
 Pengarah-pengarah assembler
 Kontrol-kontrol assembler
 Komentar-komentar
Intruksi-intruksi mesin merupakan mnemonic yang menyatakan suatu instruksi yang bisa dijalankan (misalnya MOV). Pengarah assembler (assembler directive) merupakan intruksi ke program assembler yang mendefinisikan struktur program, symbol-simbol, data, konstanta dan lain-lain (misalnya ORG). Kontrol-kontrol assembler mengatur (menentukan) mode-mode assembler dan aliran assembly langsung (misalnya $TITLE). Komentar perlu ditulis agar program mudah dibaca.
Baris-baris program yang mengandung instruksi mesin atau pengarah assembler harus mengikuti aturan program assembler ASM51. masing-masing baris atas beberapa field yang dipisahkan dengan spasi atau tabulasi. Format umumnya :
[label :] mnemonic [operand] [,operand] [……] [; komentar]
contoh pembuatan program assembler
ORG ; INISIALISASI ALAMAT AWAL
0000H
LJMP START ; LOMPAT KE LABEL START

ORG
0100H ; AWAL PROGRAM YANG AKAN DIJALANKAN
START :
ISI PROGRAM ASSEMBLER
.
.
.
END
Catatan :
Setiap pembuatan program tidak boleh di mulai dari alamat 0000H. jika pembuatan program di mulai dari alamat 0000H maka program dipastikan tidak akan berjalan sebab 0000 di isi oleh intrupt reset. Sebaiknya pembuatan program di mulai dari alamat memori 0100h agar tidak terjadi cras dengan interrupt yang lain.







 Software Pendukung
Ada dua software untuk mempelajari mikrokontroller AT89C51 yaitu AVSIM51 dan TS Control berserta Linkernya. Program yang pertama digunakan untuk menghasilkan file-file berekstensi *.HEX, *.BIN, *.OBJ, *.LST adalah menggunakan Linkker, yaitu yang disebut dengan proses kompile.
Untuk mendapatankan file-file seperti diatas, pertama tuliskan program dengan menggunakan teks editor baik berupa teks editor NOTEPAD atau teks editor Q-EDIT, atau yang lainnya. Simpan program yang anda buat dan berilah ekstensi .ASM, setelah itu lakukan proses kompile.
 Simulasi Software AVSIM51
Untuk membuat program assemble pertama, buka teks editor yang anda miliki yaitu dengan cara sebagai barikut :
1. Click Start  Program MsDos
2. Pada Promt C:\ > ketik cd ASM51
3. Pada Promt C:\ASM51> ketik Edit kemudian tekan enter sehinga tampil seperti pada gambar dibawah ini:

Gambar 7 Tampalan Teks Editor Q-BASIC
4. Tekan enter dua kali
5. Ketik Listting Program dibawah ini
Latihan 1
ORG 0000H
AJMP MULAI


ORG 0100H
MULAI :
MOV A,#0F3H
MOV R0,#17H
MOV B,@R0
SWAP A
MOV P1,A
MOV R1,#12H
MOV @R1,A
MOV P0,A
END

Simpan dengan file assembler yang baru anda buat dengan ekstensi file .ASM lakukan proses kompile dengan cara mengetikan perintah pada M nama_file pada C promt
C:\ASM51>m latihan1  enter

Gambar 8 Tampilan Proses Kompile

Jika program yang dibuat tidak ada kesalahan maka Proses kompile akan menghasilkan 5 buah file berekstensi .HEX, .OBJ, .MAP, .BIN, dan .LST. kemudian akan tampil informasi ASSEMBLY COMPLETE , NO ERROR FOUND.
5 ekstensi file tersebut digunakan untuk :
1. Ekstensi file .HEX, .OBJ digunakan untuk keperluan simulasi
2. Ekstensi file .BIN, .HEX digunakan untuk perluan download kedalam EPROM AT89C51
3. Ekstensi file .LST digunakan untuk keperluan memeriksa kesalahan program
Setelah melakukan proses kompile kita akan coba untuk mensimulasikan program yang dibuat tadi yaitu dengan cara :
1. Pada Promt C:\asm51> ketikan a  enter sehinga muncul seperti pada gambar dibawah ini :


Gambar 9 Tampilan Pemilihan CPU Mikrokontroller
2. Pilih A dengan cara menekan tombol A pada keyboard sehingga tampil seperti pada gambar di bawah ini

Gambar 10 Tampilan Simulasi AVSIM51
3. Pilih Load dengan menekan tombol L pada keyboard
4. Pilih Avocet dengan menekan tombol A pada keyboard
5. Masukan nama file yang akan disimulasikan, nama file yang disimulasikan berekstensi .obj atau .hex. contoh latihan1.obj  enter
6. Tekan tombol F10 untuk menjalankan simulasi step by step
7. Amatilah hasil Perubahan dan masukan hasilnya kedalam tabel di bawah ini

Step Instruksi A B R0 R1 12H 17H P0 P1 P










Latihan 2
Ketik program dibawah ini, simpan dengan nama file latihan2.asm
ORG 0000H
LJMP MULAI


ORG 0100H
MULAI:
MOV 19H,#80H
MOV A,#0F8H
ADD A,19H
MOV B,A
INC 19H
DEC B
MOV R7,#29H
SUBB A,R7
MOV 20H,A
MOV R1,#20H
MOV A,R7
ADDC A,@R1
MUL AB
MOV B,#05H
DIV AB

Kompile program tersebut dengan cara mengetikkan m nama_file pada C promt (C:\asm51>m latihan2). Jalankan program AVSIM (C:\asm51>a) piliha Load  Avocet  masukan nama_file.obj  enter. Amati setiap perubahan data lalu isikan pada tabel dibawah ini
Step Instruksi A B R1 R7 19H 20H C AC P OV

















Latihan 4
Buat flowchart (algoritma) dan program untuk persamaan Y = ((A + B) * C) - D dengan ketentuan sebagai berikut :
Y adalah register 16 bit yang terdiri dari Y1 dan Y2. Y1, Y2 adalah alamat memori 22H dan 23H
A adalah bilangan 6AH pada alamat memori 10H
B adalah bilangan 14H
C adalah bilangan 08H pada alamat 32H
D = B + 1
Simulasi program tersebut dengan menggunakan AVSIM51
Latihan 5
Implementasikan persamaan logika berikut menjadi sebuah program

Dengan Ketentuan Sebagai berikut :
A adalah data 77H pada alamat memori 20H
B adalah data E1H pada register R2 bank ke 2
Y disimpan di register R1 bank ke 3
Simulasikan program tersebut dengan menggunakan AVSIM51



























LAMPIRAN

INSTRUKTION SET FOR AT89C51


INTRUKSI KETERANGAN TIME
ACALL ALAMATKODE Memanggil program percabangan 2
ADD A,#data Menambahkan data dengan Akumulator dan hasilnya disimpan dalam akumulator 1
ADD A,@Rr Menambahkan data memori yang lokasinya ditunjukan oleh nilai isi register r dengan akumulator dan hasilnya disimpan dalam akumulator 1
ADD A,Rr Menambahkan isi register r dengan akumulator dan hasilnya disimpan dalam akumulator 1
ADD A,Alamatdata Menambahkan isi alamat data dengan akumulator dan hasilnya disimpan dalam akumulator 1
ADDC A,#data Menambahkan isi carry flag dengan akumulator dan menambahkan data, hasilnya disimpan dalam akumulator 1
ADDC A,@Rr Menambahkan isi carry flag dengan akumulator dan menambahkan isi data memori yang lokasinya ditunjukan oleh isi register r, hasilnya disimpan dalam akumulator 1
ADDC A,Alamatdata Menambahkan isi carry flag dengan akumulator dan menambahkan isi data dari alamat data, hasilnya disimpan dalam akumulator 1
AJMP Alamatkode Intruksi ini adalah untuk melompat ke alamatkode yang dituju, dengan jangkauan lompatan 2 Kbyte 2
ANL A,#data Meng-AND-kan data dengan akumulator 2
ANL A,@Rr Meng-AND-kan isi memori yang lokasinya ditunjukan oleh isi register r dengan akumulator 2
ANL A,Rr Meng-AND-kan isi register r dengan akumulator 2
ANL A,Alamatdata Meng-AND-kan isi alamat data tertentu dengan akumulator 2
ANL C,Alamat bit Meng-AND-kan isi alamat bit tertentu dengan isi carry, jika keduany 1 maka hasilnya 1, selain itu hasilnya 0. hasilnya ditempat pada carry 2
ANL Alamatdata,A Meng-AND-kan isi alamat data dengan akumulator, dan hasilnya disimpan dalam alamatdata yang bersangkutan 2
CALL Intruksi ini akan ditranslasikan ke ACALL atau LCALL 2
CJNE @Rr,#data,alamat kode Membandingkan data langsung dengan lokasi memori yang dialamati oleh register r. Apabila tidak sama, eksekusi akan menuju ke alamatkode. Bila sama intruksi selanjutnya yang akan dijalankan 2
CJNE A,#data,Alamatkode Membandingkan data langsung dengan isi akumulator. Apabila tidak sama maka eksekusi akan menuju ke alamatkode. Bila sama maka intruksi selanjutnya akan dijalankan 2
CJNE A,Alamatdata,Alamatkode Membandingkan isi alamatdata langsung dengan isi akumulator. Apabila tidak sama maka eksekusi akan menuju ke alamatkode. Bila sama maka intruksi selanjutnya akan dijalankan 2
CJNE Rr,#data,alamatkode Membandingkan data langsung dengan isi register r. Apabila tidak sama maka eksekusi akan menuju ke alamatkode. Bila sama maka intruksi selanjutnya akan dijalankan 2
CLR A Intruksi ini makan me-reset akumulator menjadi 00H 1
CLR C Instruksi ini akan me-reset carry flag menjadi 0 1
CLR Alamatbit Instruksi ini akan me-reset alamatbit menjadi 0 1
CPL A Instruksi ini akan mengkomplemen isi akumulator 1
CPL C Instruksi ini akan mengkomplemen isi Carry flag 1
CPL Alamatbit Instruksi ini akan mengkomplemen isi suatu alamatbit 1
DEC @Rr Instruksi ini akan mengurangi 1 isi lokasi memori yang alamatnya ditunjukan oleh isi register r 1
DEC A Instruksi ini akan mengurangi 1 isi akumulator 1
DEC Rr Instruksi ini akan menguranig 1 isi register r 1
DEC Alamatdata Instruksi ini akan mengurangi 1 isi alamatdata 1
DIV AB Instruksi ini akan membagi isi akumulator dengan isi register B. akumulator berisi hasil bagi, sedangkan register B berisi sisa pembagian 4
DJNZ Rr,Alamatkode Instruksi ini akan mengurangi 1 isi register r, jika hasilnya sudah 0 maka instruksi selanjutnya yang akan dijalankan. Jika hasilnya belum 0 eksekusi akan menuju ke alamatkode 2
DJNZ Alamatdata,alamatkode Instruksi ini akan mengurangi 1 isi alamatdata, jika hasilnya sudah 0 maka intruksi selanjutnya yang akan dijalankan. Jika hasilnya belum 0 eksekusi akan menuju ke alamatkode 2
INC @Rr Instruksi ini akan menambah 1 isi memori yang lokasinya ditunjukan oleh register r 1
INC A Instruksi ini akan menambahkan 1 isi akumulator 1
INC DPTR Instruksi ini akan menambah 1 isi data pointer 2
INC Rr Instruksi ini akan menambah 1 isi dari register r 1
JB Alamatbit,Alamatkode Instruksi ini akan menguji suatu alamatbit, jika berisi 1 eksekusi akan menuju ke alamatkode. Jika tidak 1 maka intruksi selanjutnya yang akan di eksekusi 2
JBC Alamatbit,Alamatkode Instruksi ini akan menguji suatu alamatbit. Jika berisi 1, bit tersebut akan diubah menjadi 0 dan eksekusi akan menuju ke alamatkode. Jika berisi 0, intruksi selanjutnya yang akan di eksekusi 2
JC Alamatkode Instruksi ini akan menguji carry flag. Jika berisi 1, eksekusi akan menuju ke alamatkode. Jika berisi 0 intruksi selanjutnya yang akan di eksekusi 2
JMP Alamatkode Instruksi ini akan diubah menjadi SJMP, AJMP atau LJMP 2
JNB Alamatbit,Alamatkode Instruksi ini menguji suatu alamat bit, jika isinya 0, eksekusi akan menuju ke alamat kode. Jika isinya 1 intruksi selanjutnya yang akan dieksekusi 2
JNC Alamatkode Instruksi akan menguji isi carry flag. Jika isinya 0 eksekusi akan menuju ke alamatkode. Jika berisi 1 intuksi selanjutnya yang akan dieksekusi 2
JNZ Alamatkode Instruksi ini akan menguji isi akumulator. Jika tidak sama dengan 0 eksekusi akan menuju ke alamatkode. Jika sama dengan 0 intruksi selanjutnya yang akan dieksekusi 2
JZ Alamatkode Instruksi ini akan menguji isi akumulator. Jika nilainya 0 eksekusi akan menuju ke alamatkode. Jika tidak 0 intruksi selanjutnya yang akan dieksekusi 2
LCALL Alamatkode Instruksi ini akan melompat ke alamat yang ditunjukan oleh alamatkode 2
LJMP Alamatkode Instruksi ini akan menuju ke alamatkode 2
MOV @Rr,#data Instruksi ini akan memindahkan data ke lokasi memori yang alamatnya ditunjukan oleh isi register r 1
MOV @Rr,A Instuksi ini akan memindahkan isi akumulator ke lokasi memori yang alamatnya ditunjukan oleh isi register r 1
MOV @Rr,Alamatdata Instruksi ini akan memindahkan isi suatu alamatdata ke lokasi memori yang alamatnya ditunjukan oleh isi register r 1
MOV A,#data Instruksi ini akan memindahkan data ke akumulator 1
MOV A,@Rr Instruksi ini akan memindahkan isi data memori yang lokasinya ditunjukan oleh isi register r ke akumulator 2
MOV A,Rr Instruksi ini akan memindahkan isi data register r ke akumulator 2
MOV A,Alamatdata Instruksi ini akan memindahkan isi lamatdata ke akumulator 1
MOV C,alamatbit Instruksi ini akan memindahkan isi suatu alamatbit ke carry flag 1
MOV DPTR,#data Instruksi ini akan memindahkan data 16 bit ke data pointer 2
MOV Alamat1,Alamat2 Instruksi ini akan memindahkan isi alamat data sumber (alamat2) ke alamatdata tujuan (alamat1) 1
MOV A,@A+DPTR Instruksi ini akan menjumlahkan isi data pointer dengan isi akumulator. Hasil penjumlahan merupakan alamatkode memori dan isinya akan dipindahkan ke akumulator 3
MUL AB Instruksi ini akan mengalikan isi akumulator dengan isi register B. byte bawah hasil perkalian dimasukan ke akumulator dan byte atas dimasukan ke register B 4
NOP Instruksi ini tidak melakukan apa pun selama satu siklus 1
ORL A,#data Instruksi ini meng-OR-kan data dengan isi akumulator 2
ORL A,@Rr Instruksi ini meng-OR-kan isi lokasi memori yang alamatnya ditunjukkan oleh isi register r dengan akumulator 2
ORL A,Rr Instruksi ini meng-OR-kan isi register r dengan akumulator 2
ORL A,Alamatdata Instruksi ini meng-OR-kan isi suatu alamatdata dengan akumulator 1
ORL C,alamatbit Instruksi ini meng-OR-kan isi suatu alamat bit dengan isi carry flag hasilnya disimpan dalam carry flag 1
ORL Alamatdata,#data Instruksi ini meng-OR-kan data dengan isi suatu alamatdata. Hasilnya disimpan pada alamatdata 1
ORL Alamatdata,A Instruksi ini meng-OR-kan isi akumulator dengan isi suatu alamatdata. Hasilnya disimpan pada alamatdata 2
POP Alamatdata Instruksi ini menempatkan byte yang ditunjukan oleh stack pinter ke suatu alamatdata. Kemudian mengurangi satu isi stack pointer 2
PUSH Alamatdata Instruksi ini menaikkan stack pointer kemudian menyimpan isinya ke suatu alamatdata pada lokasi yang ditunjukkan oleh stack pointer 2
RET Instruksi dipakai untuk kembali dari suatu subrutin ke alamat terakhir saat subrutin dipanggil 2
RETI Instruksi ini dipakai untuk kembali dari suatu rutin interrupt 2
RL A Instruksi ini memutar setiap bit dalam akumulator satu posisi ke kiri 1
RLC A Instruksi ini akan memutar bit-bit dalam akumulator satu posisi ke kiri. Bit ke 7 bergerak ke dalam carry flag, sedangkan isi carry flag bergerak menuju bit ke 0 dalam akumulator 1
RR A Instruksi ini akan memutar setiap bit dalam akumulator satu posisi ke kanan 1
RRC A Instruksi ini akan memutar setiap bit dalam akumulator satu posisi ke kanan. Bit ke 0 menuju ke carry flag, sementara isi carry flag masuk ke bit 7 akumulator 1
SETB C Instruksi ini mengset nilai carry flag menjadi 1 1
SETB Alamatbit Instruksi ini akan mengset isi suatu alamatbit menjadi 1 1
SUBB A,@Rr Instruksi ini akan mengurangi isi akumulator dengan carry flag dan isi lokasi memori yang ditunjukan oleh isi register r. hasilnya disimpan dalam akumulator 1
SUBB A,#data Instruksi ini akan mengurangkan isi carry flag dan data dari isi akumulator. Hasilnya disimpan dalam akumulator 1
SUBB A,Rr Instruksi ini akan mengurangi isi akumulator dengan isi carry flag dan isi register r. hasilnya disimpan dalam akumulator 1
SUBB A,Alamatdata Instruksi ini akan mengurangkan isi akumulator dengan isi carry flag dan isi suatu alamatdata 1
SJMP Alamatkode Instruksi ini akan melompat ke alamatkode 2
SWAP A Instruksi ini akan menukar byte bawah (0-3) dengan bit atas (4-7) 1
XCH A,@Rr Instruksi ini akan menukar isi lokasi memori yang alamatnya ditunjukkan oleh isi register r dengan isi akumulator 1
XCH A,Alamatdata Instruksi ini akan menukar isi suatu alamatdata dengan isi akumulator 1
XCHD A,@Rr Instruksi ini akan menukar isi bagian bawah nibble (bit 0-3) dari lokasi memori yang alamatnya ditunjukkan oleh isi register r dengan isi nibble bawah (bit 0-3) akumulator 1
XRL A,#data Instruksi ini akan meng-XOR-kan data dengan isi akumulator 1
XRL A,@Rr Instruksi ini akan meng-XOR-kan isi memori yang lokasinya ditunjukan oleh isi register r dengan isi akumulator 1
XRL A,Rr Instruksi ini akan meng-XOR-kan isi register r dengan isi akumulator 1
XRL Alamatdata,#data Instruksi ini akan meng-XOR-kan data dengan isi suatu alamatdata. Hasilnya disimpan pada alamatdata 2
XRL A,Alamatdata Instruksi ini akan meng-XOR-kan isi suatu alamatdata dengan isi akumulator 1
XRL Alamatdata,A Instruksi ini akan meng-XOR-kan isi akmulator dengan isi suatu alamatdata dan hasilnya disimpan pada alamatdata tersebut 1

visual basic

Microsoft Visual Basic


(sering disingkat sebagai Visual Basic atau VB saja) merupakan sebuah bahasa pemrograman yang bersifat event driven dan menawarkan Integrated Development Environment (IDE) visual untuk membuat program aplikasi berbasis sistem operasi Microsoft Windows dengan menggunakan model pemrograman Common Object Model (COM). Visual Basic merupakan turunan bahasa BASIC dan menawarkan pengembangan aplikasi komputer berbasis grafik dengan cepat, akses ke basis data menggunakan Data Access Objects (DAO), Remote Data Objects (RDO), atau ActiveX Data Object (ADO), serta menawarkan pembuatan kontrol ActiveX dan objek ActiveX. Beberapa bahasa skrip seperti Visual Basic for Applications (VBA) dan Visual Basic Scripting Edition (VBScript), mirip seperti halnya Visual Basic, tetapi cara kerjanya yang berbeda.


Para programmer dapat membangun aplikasi dengan menggunakan komponen-komponen yang disediakan oleh Microsoft Visual Basic Program-program yang ditulis dengan Visual Basic juga dapat menggunakan Windows API, tapi membutuhkan deklarasi fungsi eksternal tambahan.


Dalam pemrograman untuk bisnis, Visual Basic memiliki pangsa pasar yang sangat luas. Dalam sebuah survey yang dilakukan pada tahun 2005, 62% pengembang perangkat lunak dilaporkan menggunakan berbagai bentuk Visual Basic, yang diikuti oleh C++, JavaScript, C#, dan Java.



Area Kerja atau IDE (Integrated Development Environment) Visual Basic


1. Main Windows(Jendela Utama) terdiri dari :

· Baris judul, berisi nama proyek, mode operasi VB sekarang&form yang akt

· Menu bar,merupakan menu drop down dimana kita dapat mengontrol operasi dari lingkungan VB.

· Toolbar berisi kumpulan gambar yang mewakili perintah yang ada di menu.

2. Form Windows (Jendela Form) adalah pusat dari pengembangan aplikasi VB

3.Project Windows (Jendela Proyek), menampilkan daftar form dan modul dari proyek.

· Proyek adalah kumpulan dari modul form, modul calss, modul standar&file sumber yang membentuk suatu aplikasi.

4. Toolbox merupakan kumpulan dari objek yang digunakan untuk membuat user interface serta control dari program aplikasi.

5. Properties Windows (Jendela Properties) berisi daftar struktur setting properties yang digunakan pada sebuah objek terpilih. Kotak drop down pada bagian atas jendela berisi daftar semua objek pada form yg aktif.

Ada 2 tab tampilan:Alphabetic (urut abjad) dan Categorized (urut berdasar kelompok). Dibagian bawah kotak terdapat property dari objek terpilih.

6. Form Layout Windows (Jendela Layout Form) menampilkan posisi form relative terhadap layer monitor.


Apilkasi Proyek terdiri dari :

1. Form, window atau jendela tempat membuat user interface

2. Object/Kontrol, komponen yang terdapat dalam suatu program

3. Property/Properties, nilai/karakteristik yang dimiliki oleh objek VB

Contoh objek Label propertiesnya=Name, Caption dll.

4.Methods/Metode, serangkaian perintah yang sudah tersedia pada suatu objek yang dapat diminta untuk mengerjakan tugas tertentu.

5. Event/Kejadian, kejadian yang dapat dialami oleh objek

6.Module/Modul, kumpulan dari prosedur umum, deklarasi variable&definisi konstanta yang digunakan oleh aplikasi.

Minggu, 21 Juni 2009

KALKULUS

KALKULUS III


Perkuliahan ini dimaksudkan untuk memberikan pemahaman lebih lanjut mengenai teori dasar kalkulus. Ruang lingkup perkuliahan meliputi : fungsi dua peubah atau lebih, limit dan kekontinuan fungsi dua peubah atau lebih, turunan parsial dan turunan berarah, keterdiferensial, metode Lagrange, integral lipat dua dan integral lipat tiga, luas permukaan, volume benda pejal, masa benda dan momen inersia, teorema Jacobian.

Prasyarat : Kalkulus I dan Kalkulus II

Sumber :
 E.J.Purcell (1989) (terjemahan T.N. Susila, dkk). Kalkulus dan Geometri Analitik jilid 2, Jakarta : Erlangga
 L.Leithold (1989) (terjemahan Hutachaean, dkk) Kalkulus dan Geometri Analitik jilid 2, Jakarta : Erlangga
 S.L. Salas & E.Hille (1982), Calculus of One Variabel and Several Variabel, 4 th edition, New York : John Willey

Outline MAT 535 KALKULUS III

Minggu ke Pertemuan ke Pokok/Sub Pokok Bahasan
I 1 Fungsi dua peubah atau lebih
2 Turunan parsial
II 3 Latihan jawab soal
4 Limit dan Kekontinuan
III 5 Latihan jawab soal
6 Keterdiferensialan
IV 7 Latihan jawab soal
8 Turunan berarah dan gradien
V 9 Aturan rantai
10 Latihan jawab soal
VI 11 Bidang singgung dan Hampiran
12 Latihan jawab soal
VII 13 Nilai Maksimum dan Minimum
14 Metode Lagrange
VIII 15 Latihan jawab soal
16 Ujian Tengah Semester
IX 17 Integral lipat dua atas Persegipanjang
18 Integral lipat dua atas daerah bukan Persegipanjang
X 19 Latihan jawab soal
20 Integral Lipat dua dalam Koordinat Kutub
XI 21 Latihan jawab soal
22 Penerapan integral lipat dua (massa, pusat massa, momen inersia)
XII 23 Luas permukaan
24 Latihan jawab soal
XIII 25 Integral lipat tiga
26 Integral lipat tiga dalam koordinat tabung
XIV 27 Integral lipat tiga dalam koordinat bola
28 Latihan jawab soal
XV 29 Teorema Jacobian
30 Latihan jawab soal
XIV 31 Ujian akhir semester




Silabi KALKULUS III

a. Kemampuan yang Diharapkan
Mahasiswa dapat :
1. mengaitkan teori dan keberlakuan teorema fungsi satu peubah pada fungsi dua peubah atau lebih
2. Mengsketsa grafik fungsi dua peubah pada R3
3. Memahami arti geometrik dan arti fisis dari fungsi dua peubah
4. Memahami pengertian limit dan kekontinuan fungsi dua peubah atau lebih
5. Memahami turunan fungsi dua peubah dan penerapannya
6. Memahami teorema Lagrange dan penerapannya
7. Mengenal dan memahami integral lipat dan penerapannya

b. Cakupan Isi (Topik & Subtopik)
1. Turunan dalam Ruang Dimensi-n : Fungsi Dua Peubah atau Lebih, Turunan Parsial, Limit dan Kekontinuan, Keterdiferensialan, Turunan Berarah dan Grdien, Aturan Rantai, Bidang Singgung dan Hampiran, Nilai Maksimum dan Minimum, Metode Lagrange
2. Integral dalam Ruang Dimensi-n : Integral Lipat Dua atas Persegipanjang, Integral Lipat, Integral Lipat Dua atas Daerah Bukan Persegipanjang, Integral Lipat Dua dalam Koordinat Kutub, Penerapan Integral Lipat Dua, Luas Permukaan, Integral Lipat Tiga dalam Koordinat Cartesius, Integral Lipat Tiga dalam Koordinat Tabung dan Bola

c. Kegiatan (Belajar - mengajar dan evaluasi)
1. Dosen memberikan ceramah pekuliahan pada setiap subpokok bahasan kurang lebih 20 menit, kemudian ditanggapi oleh mahasiswa (dapat berupa pertanyaan, sanggahan, dan diskusi)
2. Mahasiswa diberi tugas untuk membaca dan memahami isi materi yang akan diperkuliahkan (untuk pertemuan minggu pertama dan kedua dapat diberikan tugas berupa rangkuman materi yang akan dibahas)
3. Mahasiswa di beri tugas PR untuk mengerjakan beberapa soal yang ada di buku dan dipersentasikan di kelas (responsi)
4. Mahasiswa berlatih sendiri memahami teori dan teorema yang ada pada subpokok bahasan dengan bimbingan dosen
5. Selama perkuliahan diadakan tes sbpokok bahasan kurang lebih tiga kali atau lebih, tes pokok bahasan, dan tes seluruh pokok bahasan


d. Prasyarat
Telah berhasil mengikuti perkuliahan Kalkulus I dan Kalkulus II

e. Rujukan
 E.J.Purcell (1989) (terjemahan T.N. Susila, dkk). Kalkulus dan Geometri Analitik jilid 2, Jakarta : Erlangga
 L.Leithol (1989) (terjemahan Hutaehaean, dkk) Kalkulus dan Geometri Analitik jilid 2, Jakarta : Erlangga
 S.L.Salas & E.Hille (1982), Calculus of One Variabel and Several Variabel, 4 th edition, New York : John Willey

PEMROGRAMAN AT89C51

MODUL 4
PEMROGRAMAN AT89C51
(Lanjutan)



4.1. Instruksi Lompatan Tanpa Syarat
Pada dasarnya program dijalankan intruksi demi instruksi, artinya selesai menjalankan satu instruksi mikrokontroler langsung menjalankan instruksi berikutnya. Untuk keperluan ini mikrokontroler dilengkapi dengan Program Counter (PC) yang mengatur pengambilan intruksi secara berurutan. Meskipun demikian, program yang kerjanya hanya berurutan saja tidaklah banyak artinya, untuk keperluan ini mikrokontroler dilengkapi dengan instruksi-instruksi untuk mengatur alur program.
Secara umum kelompok instruksi yang dipakai untuk mengatur alur program terdiri atas instruksi-instruksi JUMP, instruksi-instruksi sub-rutin/modul CALL dan instruksi-instruksi JUMP bersyarat Di samping itu ada pula instruksi PUSH dan POP yang bisa mempengaruhi alur program.
Karena PC adalah satu-satunya register dalam mikrokontroler yang mengatur alur program, maka kelompok instruksi pengatur program yang dibicarakan di atas, semuanya merubah nilai PC, sehingga pada saat kelompok instruksi ini dijalankan, nilainya akan tidak akan runtun dari nilai instruksi sebelumnya.
Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi LJMP (Long Jump), instruksi AJMP (Absolute Jump) dan instruksi SJMP (Short Jump). Kerja dari ketiga instruksi ini persis sama, yakni memberi nilai baru pada PC, kecepatan melaksanakan ketiga instruksi ini juga persis sama, yakni memerlukan waktu 2 periode instruksi (jika MCS51 bekerja pada frekuensi 12 MHz, maka instruksi ini dijalankan dalam waktu 2 mikro-detik). Perbedaannya terletak pada jumlah byte pembentuk instruksinya, instruksi LJMP dibentuk dengan 3 byte, sedangkan instuksi AJMP dan SJMP cukup 2 byte.

4.1.1. Instruksi LJMP
Kode untuk instruksi LJMP dinyatakan dengan bilangan biner 16 bit, dengan demikian instruksi ini bisa menjangkau semua memori-program MCS51 yang jumlahnya 64 KiloByte. Instruksi LJMP terdiri atas 3 byte.
Pemakaian instruksi LJMP bisa dipelajari dari potongan program berikut :
LJMP TugasBaru

TugasBaru:
MOV A,P3.1

4.1.2. Instruksi AJMP
Instruksi AJMP terdiri atas 2 byte, byte pertama merupakan kode untuk instruksi AJMP dan byte kedua dipakai untuk menyatakan nomor memori-program yang dituju. Dengan demikian instruksi ini hanya bisa menjangkau satu daerah memori-program MCS51 sejauh 2 KiloByte. Berikut ini adalah potongan program untuk menjelaskan pemakaian instruksi AJMP:
ORG $800
AJMP DaerahIni
AJMP DaerahLain
ORG $900
DaerahIni:
... . .
ORG $1000
DaerahLain:
...

4.1.3. Instruksi SJMP
Berbeda dengan bentuk instruksi JUMP sebelumnya, dalam instruksi SJMP alamat memori-program tidak dinyatakan dengan nomor memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran relatip’ terhadap nilai PC saat instruksi ini dilaksanakan. Pergeseran relatip tersebut dinyatakan dengan 1 byte bilangan 2’s complement, yang bisa dipakai untuk menyakatakan nilai antara –128 sampai dengan +127. Nilai minus dipakai untuk menyatakan bergeser ke instruksi-instruksi sebelumnya, sedangkan nilai positip untuk menyatakan bergeser ke instruksi-instruksi sesudahnya.
Meskipun jangkauan instruksi SJMP hanya –128 sampai +127, tapi instruksi ini tidak dibatasi dengan pengertian daerah memori-program 2 KiloByte yang membatasi instruksi AJMP.
ORG $0F80
SJMP DaerahLain
...
ORG $1000
DaerahLain:
...

4.1.4. Instruksi Sub-rutin
Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan dipisahkan dari program utama. Bagian-bagian di program utama akan ‘memanggil’ (CALL) sub-rutin, artinya mikrokontroler meninggalkan sementara alur program utama untuk mengerjakan instruksi-instruksi dalam sub-rutin. Selesai mengerjakan sub-rutin mikrokontroler kembali ke alur program utama.
Satu-satunya cara membentuk sub-rutin adalah memberi instruksi RET pada akhir potongan program sub-rutin. Program sub-rutin di-’panggil’ dengan instruksi ACALL atau LCALL.

4.2. Instruksi Lompatan Bersyarat
Instruksi JUMP bersyarat merupakan instruksi inti bagi mikrokontroler. Tanpa kelompok instruksi ini program yang ditulis tidak banyak berarti. Instruksi-instruksi ini selain melibatkan PC, melibatkan pula kondisi-kondisi tertentu yang biasanya dicatat dalam bit-bit tertentu yang dihimpun dalam Register tertentu.
Nomor memori-program baru yang harus dituju tidak dinyatakan dengan nomor memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan.

4.2.1. Instruksi JZ / JNZ
Instruksi JZ (Jump if Zero) dan instruksi JNZ (Jump if Not Zero) adalah instruksi JUMP bersyarat yang memantau nilai Akumulator A. Contoh instruksi adalah sebagai berikut:

MOV A,#0
JNZ BukanNol
JZ Nol
...
BukanNol:
...
Nol :
...

4.2.2. Instruksi JC / JNC
Bit Carry merupakan bit yang banyak sekali dipakai untuk keperluan operasi bit. Untuk menghemat pemakaian memori-program disediakan 2 instruksi yang khusus untuk memeriksa keadaan bit Carry. Instruksi tersebut adalah JC (Jump on Carry) dan instruksi JNC (Jump on No Carry), yaitu instruksi JUMP bersyarat yang memantau nilai bit Carry di dalam Program Status Word (PSW).
Karena bit akan diperiksa sudah pasti, yakni bit Carry, maka instruksi ini cukup dibentuk dengan 2 byte saja, dengan demikian bisa lebih menghemat memori program.
JC Periksa
JB PSW.7,Periksa

4.2.3. Instruksi JB / JNB / JBC
Instruksi JB (Jump on Bit Set), instruksi JNB (Jump on Not Bit Set) dan instruksi JBC (Jump on Bit Set Then Clear Bit) merupakan instruksi JJUMP bersyarat yang memantau nilai-nilai bit tertentu. Bit-bit tertentu bisa merupakan bit-bit dalam register status maupun kaki input mikrokontroler MCS51.
Pengujian Nilai Boolean dilakukan dengan instruksi JUMP bersyarat, ada 5 instruksi yang dipakai untuk keperluan ini, yakni instruksi JB (JUMP if bit set), JNB (JUMP if bit Not Set), JC (JUMP if Carry Bit set), JNC (JUMP if Carry Bit Not Set) dan JBC (JUMP if Bit Set and Clear Bit).
Contoh pemakaian instruksi JB dan JNB sebagai berikut :
JB P1.1,$
JNB P1.1,$
Instruksi-instruksi di atas memantau kedaan Port 1 bit 1. Instruksi pertama memantau P1.1, jika P1.1 bernilai ‘1’ maka MCS51 akan mengulang instruksi ini, (tanda $ mempunyai arti jika syarat terpenuhi kerjakan lagi instruksi bersangkutan). Instruksi berikutnya melakukan hal sebaliknya, yakni selama P1.1 bernilai ‘0’ maka MCS51 akan tertahan pada instruksi ini.

4.2.4. Instruksi Proses dan Test
Instruksi-instruksi Jump bersyarat yang dibahas di atas, memantau kondisi yang sudah terjadi. Terdapat dua instruksi yang melakukan dulu suatu proses baru kemudian memantau hasil proses untuk menentukan apakah harus Jump. Kedua instruksi yang dimaksud adalah instruksi DJNZ dan instruksi CJNE.

A. Instruksi DJNZ
Instruksi DJNZ (Decrement and Jump if Not Zero), merupakan instruksi yang akan mengurangi 1 nilai register serbaguna (R0 ... R7) atau memori-data, dan JUMP jika ternyata setelah pengurangan 1 tersebut hasilnya tidak nol.
Contoh berikut merupakan potongan program untuk membentuk waktu tunda secara sederhana:
MOV R0,#23
DJNZ R0,$
Instruksi MOV R0,#$23 memberi nilai $23 pada R0, selanjutnya setiap kali instruksi DJNZ R0,$ dikerjakan, MCS51 akan mengurangi nilai R0 dengan ‘1’, jika R0 belum menjadi nol maka MCS51 akan mengulang instruksi tersebut (tanda $ dalam instruksi ini maksudnya adalah kerjakan kembali instruksi ini). Selama mengerjakan 2 instruksi di atas, semua pekerjaan lain akan tertunda, waktu tundanya ditentukan oleh besarnya nilai yang diisikan ke R0.

B. Instruksi CJNE
Instruksi CJNE (Compare and Jump if Not Equal) membandingkan dua nilai yang disebut dan MCS akan Jump kalau kedua nilai tersebut tidak sama!
MOV A,P1
CJNE A,#0A,TidakSama
...
SJMP EXIT
;
TidakSama:
...


4.3. Bahasa Asembly
Secara fisik, kerja dari sebuah mikrokontroler dapat dijelaskan sebagai siklus pembacaan instruksi yang tersimpan di dalam memori. Mikrokontroler menentukan alamat dari memori program yang akan dibaca, dan melakukan proses baca data di memori. Data yang dibaca diinterprestasikan sebagai instruksi. Alamat instruksi disimpan oleh mikrokontroler di register, yang dikenal sebagai Program Counter. Sarana yang ada dalam program assembly sangat minim, tidak seperti dalam bahasa pemrograman tingkat atas (high level language programming) semuanya sudah siap pakai. Penulis program assembly harus menentukan segalanya, menentukan letak program yang ditulisnya dalam memori-program, membuat data konstan dan tablel konstan dalam memori-program, membuat variabel yang dipakai kerja dalam memori-data dan lain sebagainya.

4.3.1. Program Sumber Assembly
Program-sumber assembly (Assembly Source Program) merupakan kumpulan dari baris-baris perintah yang ditulis dengan program penyunting-teks (text editor) sederhana, misalnya program EDIT.COM dalam DOS, atau program NOTEPAD dalam Windows atau MIDE-51. Kumpulan baris-printah tersebut biasanya disimpan ke dalam file dengan nama ekstensi *.ASM dan lain sebagainya, tergantung pada program Assembler yang akan dipakai untuk mengolah program-sumber assembly tersebut.
Setiap baris-perintah merupakan sebuah perintah yang utuh, artinya sebuah perintah tidak mungkin dipecah menjadi lebih dari satu baris. Satu baris perintah bisa terdiri atas 4 bagian, bagian pertama dikenali sebagai label atau sering juga disebut sebagai simbol, bagian kedua dikenali sebagai kode operasi, bagian ketiga adalah operand dan bagian terakhir adalah komentar. Antara bagian-bagian tersebut dipisahkan dengan sebuah spasi atau tabulator.


Gambar 4.1. Bentuk Program Assembly



A. Bagian Label
Label dipakai untuk memberi nama pada sebuah baris-perintah, agar bisa mudah menyebutnya dalam penulisan program. Label bisa ditulis apa saja asalkan diawali dengan huruf, biasa panjangnya tidak lebih dari 16 huruf. Kalau sebuah baris-perintah tidak memiliki bagian label, maka bagian ini boleh tidak ditulis namun spasi atau tabulator sebagai pemisah antara label dan bagian berikutnya mutlak tetap harus ditulis. Dalam sebuah program sumber bisa terdapat banyak sekali label, tapi tidak boleh ada label yang kembar.
Sering sebuah baris-perintah hanya terdiri dari bagian label saja, baris demikian itu memang tidak bisa dikatakan sebagai baris-perintah yang sesungguhnya, tapi hanya sekedar memberi nama pada baris bersangkutan.

B. Bagian Kode Operasi
Kode operasi (operation code atau sering disingkat sebagai OpCode) merupakan bagian perintah yang harus dikerjakan. Dalam hal ini dikenal dua macam kode operasi, yang pertama adalah kode-operasi untuk mengatur kerja mikroprosesor/ mikrokontroler. Jenis kedua dipakai untuk mengatur kerja program assembler, sering dinamakan sebagai assembler directive.
Kode-operasi ditulis dalam bentuk mnemonic, yakni bentuk singkatan-singkatan yang relatip mudah diingat, misalnya adalah MOV, ACALL, RET dan lain sebagainya. Kode-operasi ini ditentukan oleh pabrik pembuat mikroprosesor/ mikrokontroler, dengan demikian setiap prosesor mempunyai kode-operasi yang berlainan.
Kode-operasi berbentuk mnemonic tidak dikenal mikroprosesor/mikrokontroler. Agar program yang ditulis dengan kode mnemonic bisa dipakai untuk mengendalikan prosesor, program semacam itu diterjemahkan menjadi program yang dibentuk dari kode-operasi kode-biner, yang dikenali oleh mikroprosesor/mikrokontroler.
Tugas penerjemahan tersebut dilakukan oleh program yang dinamakan sebagai Program Assembler.
DI luar kode-operasi yang ditentukan pabrik pembuat mikroprosesor/ mikrokontroler, ada pula kode-operasi untuk mengatur kerja dari program assembler, misalnya dipakai untuk menentukan letak program dalam memori (ORG), dipakai untuk membentuk variabel (DS), membentuk tabel dan data konstan (DB, DW) dan lain sebagainya.


C. Bagian Operand
Operand merupakan pelengkap bagian kode operasi, namun tidak semua kode operasi memerlukan operand, dengan demikian bisa terjadi sebuah baris perintah hanya terdiri dari kode operasi tanpa operand. Sebaliknya ada pula kode operasi yang perlu lebih dari satu operand, dalam hal ini antara operand satu dengan yang lain dipisahkan dengan tanda koma.
Bentuk operand sangat bervariasi, bisa berupa kode-kode yang dipakai untuk menyatakan Register dalam prosesor, bisa berupa nomor-memori (alamat memori) yang dinyatakan dengan bilangan atau pun nama label, bisa berupa data yang siap di-operasi-kan. Semuanya disesuaikan dengan keperluan dari kode-operasi.
Untuk membedakan operand yang berupa nomor-memori atau operand yang berupa data yang siap di-operasi-kan, dipakai tanda-tanda khusus atau cara penulisan yang berlainan.
Di samping itu operand bisa berupa persamaan matematis sederhana atau persamaan Boolean, dalam hal semacam ini program Assembler akan menghitung nilai dari persamaan-persamaan dalam operand, selanjutnya merubah hasil perhitungan tersebut ke kode biner yang dimengerti oleh prosesor. Jadi perhitungan di dalam operand dilakukan oleh program assembler bukan oleh prosesor!

D. Bagian Komentar
Bagian komentar merupakan catatan-catatan penulis program, bagian ini meskipun tidak mutlak diperlukan tapi sangat membantu masalah dokumentasi. Membaca komentar-komentar pada setiap baris-perintah, dengan mudah bisa dimengerti maksud tujuan baris bersangkutan, hal ini sangat membantu orang lain yang membaca program.
Pemisah bagian komentar dengan bagian sebelumnya adalah tanda spasi atau tabulator, meskipun demikian huruf pertama dari komentar sering-sering berupa tanda titik-koma, merupakan tanda pemisah khusus untuk komentar.
Untuk keperluan dokumentasi yang intensip, sering-sering sebuah baris yang merupakan komentar saja, dalam hal ini huruf pertama dari baris bersangkutan adalah tanda titik-koma.

4.3.2. Assembly Listing
Program-sumber assembly di atas, setelah selesai ditulis diserahkan ke program Assembler untuk diterjemahkan. Setiap prosesor mempunyai program assembler tersendiri, bahkan satu macam prosesor bisa memiliki beberapa macam program Assembler buatan pabrik perangkat lunak yang berlainan.
Hasil utama pengolahan program Assembler adalah program-obyek. Program-obyek ini bisa berupa sebuah file tersendiri, berisikan kode-kode yang siap dikirimkan ke memori-program mikroprosesor/mikrokontroler, tapi ada juga program-obyek yang disisipkan pada program-sumber assembly seperti terlihat dalam Assembly Listing di Gambar 5.2.
Bagian kanan Gambar 5.2 merupakan program-sumber Assembly, setelah diterjemahkan oleh program Assembler kode-kode yang dihasilkan berikut dengan nomor-nomor memori tempat penyimpanan kode-kode tadi, disisipkan pada bagian kiri setiap baris perintah, sehingga bentuk program ini tidak lagi dikatakan sebagai program-sumber assembly tapi dikatakan sebagai Assembly Listing.
Membaca Assembly Listing bisa memberikan gambaran yang lebih jelas bagi program yang ditulis. Bagi pemula Assembly Listing memberi pengertian yang lebih mendalam tentang isi memori-program, sehingga bisa lebih dibayangkan bagaimana kerja dari sebuah program.

Line Addr Code Source
1: Org 0H
2: 0000 74 FE Start: Mov A,#11111110b
3: 0002 78 07 Mov R0,#7
4: 0004 F5 80 Kiri: Mov P0,A
5: 0006 12 00 1C Call Delay
6: 0009 23 RL A
7: 000A 18 DEC R0
8: 000B B8 00 F6 CJNE R0,#0,Kiri
9: 000E 78 07 Mov R0,#7
10: 0010 F5 80 Kanan: Mov P0,A
11: 0012 12 00 1C Call Delay
12: 0015 03 RR A
13: 0016 18 DEC R0
14: 0017 B8 00 F6 CJNE R0,#0,Kanan
15: 001A 80 E4 SJMP Start
16:
17: 001C 79 FF Delay: Mov R1,#255
18: 001E 7A FF Del1: Mov R2,#255
19: 0020 DA FE Del2: DJNZ R2,Del2
20: 0022 D9 FA DJNZ R1,Del1
21: 0024 22 RET
22: END

Panduan Praktis Mikrokontroler AT89S51

Panduan Praktis Mikrokontroler AT89S51


Suyono dan Tim Pusdiklat MasterNusa
suyono@MasterNusa.com
http://www.MasterNusa.com



(*) Tutorial ini merupakan ringkasan dari modul Kursus Mikrokontroler Dasar di Pusat Pendidikan dan Pelatihan “MasterNusa” Surabaya. Versi lebih lengkap dengan banyak gambar bisa diperoleh dengan menghubungi penulis.



Pendahuluan
Mikrokontroler sebagai teknologi baru yaitu teknologi semikonduktor kehadiranya sangat membantu perkembangan dunia elektronika. Dengan arsitektur yang praktis tetapi memuat banyak kandungan transistor yang terintegrasi, sehingga mendukung dibuatnya rangkaian elektronika yang lebih portable.

Mikrokontroler dapat diproduksi secara masal sehingga harganya menjadi lebih murah dibandingkan dengan mikroprosessor, tetapi tetap memiliki kelebihan yang bisa diandalkan. Mikrokontroler memiliki perbandingan ROM dan RAM-nya yang besar, artinya program kontrol disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpan sementara, termasuk register-register yang digunakan pada mikrokontroler yang bersangkutan.














Kit Mikrokontroler (Downloader)




















Kit mikrokontroler di atas biasa disebut sebagai downloader. Alat untuk merekam program dari komputer ke IC AT89S51 sebelum digunakan untuk mengontrol sebuah rangkaian elektronika.


Pemrograman dan Perekaman ke IC

1. Pemrograman
 Sebelum membuat program aktifkan dulu lembar kerja yang diperlukan antara lain MSDOS prompt, X51, L51, 89S51 dan Notepad untuk editor program.
 Program dibuat dengan bahasa assembler mikrokontroler yang bersangkutan (AT89S51) diketik menggunakan sembarang editor (Turbo pascal atau notepad) kemudian disimpan dengan ekstensi .asm.
 Pada MSDOS prompt direktorinya diubah sesuai dengan tempat penyimpanan file dan nama file program, bisa di drive C, D atau yang lain.
 Lakukan kompilasi program yang telah diketik dengan perintah D:/mikro>X51 lalu tekan enter dan ketik nama_file.asm pada input filename seperti tampilan di bawah



Kemudian tekan enter sampai muncul tampilan seperti berikut. Di sini X51 digunakan untuk mengubah asm ke obj


 Jika terjadi kesalahan akan ditunjukan seperti pada tampilan di atas ( assembly errors : .. ) dan harus diperbaiki sebelum ketahap berikutnya. Bila tidak terjadi kesalahan akan ditunjukan ( Assembly Errors : 0 )
 Kemudian di link dengan L51 untuk mengubah obj ke data hex dengan cara ketik D:/mikro>L51 tekan Enter lalu ketik nama file pada input filename tanpa .asm cukup nama file kemudian tekan enter. Setelah itu dapat dilanjutkan ke proses perekaman.
 Sebelum perekaman dilakukan setup pada AT89S51 seperti tampilan berikut



2. Perekaman Program ke IC
 Untuk perekaman program ke IC, aktifkan 89S51 dengan cara ketik 89S51 pada D:/mikro>89S51, kemudian tekan a setelah itu ketik nama_file.hex. Selanjutnya tekan E dua kali untuk erase flash dan tekan i dua kali untuk reset low.
 Hasil simulasi program dapat dilihat pada rangkaian LED, Seven Segmen atau motorsteper
 Setelah program berjalan dengan benar lepaskan kabel printer port paraler dari komputer dengan sendirinya kit mikrokontroler akan menjalankan program yang sudah disimpan ke dalam IC hanya dengan catu daya 5 volt
 Lakukan untuk program-program yang lain dengan cara yang sama seperti di atas






Contoh-contoh Program yang Bisa Dicoba

1. Program Menghidupkan Led Sederhana

START
MOV P2,#01H
JMP $

2. Menghidupkan Led dengan Bit

START
MOV P2,#00H
SETB P2.1
JMP $

3. Menghidupkan Led dengan Biner

ORG 0H

MULAI:
MOV P2,#00001111B
CALL TUNDA
SJMP MULAI

TUNDA:
DELAY: MOV R0,#50
DELAY1: MOV R1,#100
DELAY2: MOV R2,#100
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET

4. Lampu Flip-flop

ORG 0H

MULAI :
MOV P1,#01010101B
CALL TUNDA
MOV P1,#10101010B
CALL TUNDA
SJMP MULAI
;subrutin delay
TUNDA:
DELAY: MOV R0,#20
DELAY1: MOV R1,#50
DELAY2: MOV R2,#100
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET


Referensi
Atmel, ”Flash Microcontroller: Architectural Overview”, USA: Atmel Inc. (http://www.atmel.com), 1997.

Agfianto Eko Putra, “Belajar Mikrokontroler AT89C51/52/55 (Teori dan Aplikasi)”, Yogyakarta: Penerbit Gava Media, 2005.

Lukman Bawafi dan Tim WEIP (Workshop Electronics and Instrumentation of Physic) ITS, “Workshop Mikrokontroler”, Surabaya: WEIP ITS, 2003.

MODUL PELATIHAN PHP

1. PENDAHULUAN

PHP adalah salah satu bahasa pemrograman di Internet. PHP bersifat cepat, gratis dan murah ( gratis ), selain itu PHP mendukung penggunaan database seperti MySQL, PostgreSQL, mSQL, Oracle etc.
Untuk dapat menjalankan PHP melalui browser, maka anda diharuskan terlebih dahulu menginstall web server ( misalnya Apache, PWS, IIS ) lalu menginstall PHP, sedangkan untuk menjalankan MySQL anda tidak perlu menginstall web server, hanya saja jika ingin dijalankan melalui browser, maka anda harus menginstall web server. Prosedur penginstallan web server, PHP dan MySQL dapat anda baca pada manual masing – masing. Adapun manual dan instalan Apache, PHP maupun MySQL dapat anda cari di
http://ftpsearch.itb.ac.id .
Jika anda tidak ingin direpotkan dengan prosedur penginstallan PHP, anda dapat menjalankan PHP di direktori public_html anda di s.ee.itb.ac.id. Hal itu dapat dilakukan karena PHP bersifat server side artinya script PHP di jalankan di server, bukan di computer client. Jadi semakin banyak client yang menjalankan script PHP di suatu situs, maka beban yang ditanggung oleh server semakin bertambah.
Sintaks – sintaks dalam PHP banyak yang sama dengan C++, dalam hal ini penulis tidak memberikan penjelasan penggunaan sintaks – sintaks tersebut mengingat para cakru telah memperoleh pengajaran tersebut di dalam kuliah maupun praktikum EL – 207 Komputer dan Pemrograman.


2. DASAR PHP

PHP dijalankan dalam file berekstensi .php, .php3 atau .phtml, itu tergantung dengan settingan PHP anda, tetapi secara umum ekstensi file PHP adalah .php.
Kode PHP menyatu dengan tag – tag HTML dalam satu file. Kode PHP diawali dengan tag .

Contoh :
phpinfo();
?>

Struktur penulisan dalam PHP, sama seperti dalam C++, yaitu setiap pernyataan diakhiri oleh semicolon ( ; ) dan bersifat case sensitive untuk penulisan nama variabel. Cara penulisan komentar dalam PHP juga sama dengan C++.

Contoh :
$nama = “divisi komputer hme itb”; // Huruf kecil semua
$NAMA = “DIVISI KOMPUTER HME ITB”; // Huruf besar semua
print “$nama  variable menggunakan huruf kecil.
”;
print “$NAMA  variable menggunakan huruf besar.”;
?>


3. TIPE DATA

PHP mengenal 5 tipe data yaitu integer, floating point, string, array dan object. Penggunaan tipe data tidak secara ekspilisit di deklarasikan seperti dalam C++.

Contoh :
// Penggunaan tipe data int, float dan string seta type castingnya
$var = 2002 ; // var sebagai integer
print “Sekarang tahun $var.
”;
$var = “dua ribu dua”; // var sebagai string
print “Sekarang tahun $var.
”;
$var = 2002.5; // var sebagai bilangan bulat / float
print “Tahun $var, ada atau nggak ?”;
?>

// Penggunaan tipe data object
class himp
{
var $divisi = "Divkom HME ITB";
function ubah($str)
{
$this->divisi = $str;
}
}

$hme = new himp;
print $hme->divisi;
print "
";
$hme->ubah("Divisi Komputer HME ITB");
print $hme->divisi;
?>

Penggunaan tipe data array akan di bahas di bagian operasi
array.


4. OPERATOR

Dalam PHP terdapat operator artimatika, assignment, bitwise, perbandingan, logika , increment / decrement yang kesemuanya sama dengan C++ dalam cara penggunaannya.

5. PERNYATAAN

Dalam PHP juga terdapat conditional statement yang cara penggunaannya sama seperti dalam C++.


6. FUNGSI

Dalam PHP, tipe data balikan sebuah fungsi tidak di deklarasikan secara eksplisit seperti dalam C++. Dalam PHP, fungsi tidak perlu dideklarasikan, cukup di definisikan saja. Pendefinisian fungsi dapat diletakkan di awal, tengah, akhir maupun di file lain.

Contoh :
print "
";
print "Masukkan Nama Anda : size=25>";
print "
";

if($action==1)
{
greet($nama);
}

function greet($str)
{
$date = date(G);
if($date<11 && $date>=0)print"Selamat Pagi $str";
else if($date>=11 && $date<15)print "Selamat Siang $str";
else if($date>=15 && $date<18)print "Selamat Sore $str";
else print"Selamat Malam $str";
}
?>


7. OPERASI ARRAY

Deklarasi array :
1. $divisi[3] = {“Divkom”,”Elektron”,”WS”};
2. $divisi = array(“Divkom”,”Elektron”,”WS”);

Menghitung jumlah elemen array menggunakan fungsi count($array)  contoh : count($divisi) menghasilkan nilai 3;

Mengambil potongan elemen dari suatu array, menggunakan array_slice()

array_slice(variable_array,parameter_offset, panjang);

variable_array adalah nama variable array yang ingin kita potong. Parameter_offset, jika positif menunjukkan elemen awal pemotongan dihitung dari depan, sedangkan jika negatif di hitung dari belakang ( yaitu urutan ke parameter_offset dari belakang ). Panjang yaitu menentukan panjang elemen yang dipotong. Jika panjang tidak diberikan, maka array dipotong mulai dari nilai elemen yang ditentukan oleh parameter_offset sampai elemen terakhir.


8. OPERASI FILE

Membuka File  fopen(nama_file, mode_akses);
Menutup File  fclose(file_pointer)
Membaca Isi File  fgets(file_pointer, panjang_string)
Tag HTML tidak diabaikan
fgetss(file_pointer, panjang_string)
Mengabaikan tag HTML
Menulis ke File  fputs(file_pointer,string)
Memeriksa apakah pointer telah berada di akhir file  feof(file_pointer)

Ket :  Gunakan fungsi
mode_akes pada PHP sama dengan mode akses pada C++.
$file = fopen(“coba.txt”,”r+w”). $file disebut sebagai file_pointer


9. PHP DAN MYSQL

Bagian ini tidak membahas tentang MySQL, namun bagian ini membahas pengaturan hubungan antara PHP dan MySQL secara general. Mengenai struktur database, table, field mauoun pengertian querinya diberikan pada modul MySQL.
Untuk dapat berhubungan dengan MySQL, PHP harus membuka hubungan ke server MySQL, yaitu dengan

mysql_connect(nama_host, nama_user, password);

Setelah tersambung, maka user memilih database, yaitu dengan

mysql_select_db(nama_database);

Untuk mengeksekusi query – query yang ada pada MySQL namun tidak dimiliki oleh PHP digunakan fungsi

mysql_query(query);

Mengenai query – query yang ada, dapat anda lihat dalam modul MySQL.
Untuk mengambil hasil query yang dilakukan oleh mysql_query() digunakan fungsi

mysql_fetch_row(result_id) atau
mysql_fetch_array(result_id)

Beda antara mysql_fetch_row() dan mysql_fetch_array() adalah pada mysql_fetch_array() hasil yang diperoleh dalam bentuk array assosiatif.

Setelah penggunaan database mysql selesai, maka koneksi diputus dengan menggunakan

mysql_close();









































MODUL PELATIHAN MySQL
oleh : m.irwan.hrp


1. PENDAHULUAN

Untuk dapat mengakses database, maka seorang user harus login terlebih dahulu

# mysql –u nama_user –p
password : **********

Jika berhasil ada

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 3.23.32

Type 'help;' or '\h' for help. Type '\c' to clear the buffer


Adapun nama_user dan password di buat oleh root mysql dengan perintah
mysql > insert into user(host,user,password)
values(“localhost”,”nama_user”,password(“password”);

Secara default, privileges yang diberikan kepada user biasa adalah ‘N’ semua.
Jika anda ingin memberikan privileges ‘Y’ kepada user anda, anda dapat melihat field privileges pada table user.

NB : Setiap query diakhiri dengan tanda (;). Jika tanda ( ; ) tidak diberikan, maka MySQL
Akan menganggap bahwa query anda belum selesai.


2. DATABASE, TABLE DAN FIELD DASAR

Dalam MySQL data disusun dalam suatu database, yang didalamnya terdiri dari beberapa table dan didalam table terdapat beberapa field.

_______________DATABASE_____________
| | |
TABLE1 TABLE2 TABLE3
/ \ | / \
FIELD1 FIELD2 FIELD3 FIELD4 FIELD5

Didalam Field itulah entri data kita disimpan
Untuk melihat semua database:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| chat |
| db_hnawri |
| irwan00 |
| mysql |
| questionnare |
| radio_kampus |
| smun39 |
| test |
| waterbalance |
+------------------- +
9 rows in set (0.00 sec)


Terlihat ada 9 buah database. Secara default, database hanya ada 2, yaitu mysql dan test.
Misalkan saya ingin menambahkan sebuah database baru bernama database divkom, maka

mysql> create database divkom;
Query OK, 1 row affected (0.11 sec)

Untuk melihat apakah database saya sudah ada, gunbakan kembali query show databases;
Setelah database divkom berhasil dibuat, maka kita akan akan membuat table – table.
Sebelum kita membuat table di dalam database divkom maka kita harus memilih database divkom terlebih dahulu dengan query.

mysql> use divkom;
Database changed

Misalkan akan dibuat table - table
1. Table kru yang isinya
nama , nim , ttgl, alamat_bdg, telpon_bdg, alamat_libur, telp_libur, skill
2. Table cakru yang isinya
nama, nim, email, spesialisasi, nilai, absensi

Peintahnya

mysql> create table kru(nama varchar(75),nim int(9),ttgl varchar(30),alamat_bdg
longtext,telp_bdg varchar(15),alamat_libur longtext,telp_libur varchar(15), skill longtext,id int(3) auto_increment primary key);
Query OK, 0 rows affected (0.17 sec)

mysql> create table cakru(nama varchar(75),nim int(9), email varchar(50), spesia
lisasi varchar(15),nilai int(3), absensi int(3), id int(3) auto_increment primary key);
Query OK, 0 rows affected (0.00 sec)

Untuk melihat table yang telah kita buat

mysql> show tables;
+-------------------------------+
| Tables_in_divkom |
+-------------------------------+
| cakru |
| kru |
+-------------------------------+
2 rows in set (0.00 sec)

Terlihat ada dua table, yaitu cakru dan kru. Tapi kemanakah nama, nim dan sebagainya ?
Nama, nim, ttgl, email, dst disebut sebagai field.
Untuk melihat field – fileds di dalam sebuah table digunakan perintah

mysql > show fields from nama_table;

Misalkan kita ingin melihat fields dari table kru, maka
mysql> show fields from kru;
+--------------------+--------------------+---------+---------+---------- +---------------------------- +
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------- +--------- +--------- +----------+---------------------------- +
| nama | varchar(75) | YES | | NULL | |
| nim | int(9) | YES | | NULL | |
| ttgl | varchar(30) | YES | | NULL | |
| alamat_bdg | longtext | YES | | NULL | |
| telp_bdg | varchar(15) | YES | | NULL | |
| alamat_libur | longtext | YES | | NULL | |
| telp_libur | varchar(15) | YES | | NULL | |
| skill | longtext | YES | | NULL | |
| id | int(3) | | PRI | NULL | auto_increment |
+--------------------+------------------- +--------- +--------- +-----------+---------------------------- +
9 rows in set (0.07 sec)

untuk mengisi table kru gunakan
mysql> insert into kru","Jakarta","021 - 8726154","PHP, MySQL, JavaScript, C, C++, FreeBSD, Linux, Ms
Windows 2000 Professional");

Dengan perintah seperti diatas, anda dapat mengisi sebagian fields saja.
Untuk melihat seluruh isi field gunakan

mysql > select * from kru;

Untuk melihat nama dan nim saja gunakan perintah

mysql> select nama,nim from kru;

Untuk melihat nama dan nim dari kru yang bernama Irwan gunakan perintah

mysql> select nama,nim from kru where nama=”Irwan”;

Untuk melihat nama dan nim dari kru yang rumah aslinya di Jakarta, gunakan perintah

mysql> select nama,nim from kru where alamat_libur like “%Jakarta%”;

Query like di gunakan untuk mencari kata yang mirip, sedangkan ( % ) analoginya sama dengan tanda * dalam unix atau windows, yaitu sebagai wildchar character.


3. DATABASE, TABLE DAN FIELD LANJUT

3.1.Menghapus database
mysql> drop database divkom;
3.2 Menghapus table kru
mysql> drop table kru;
3.3 Menghapus field spesialisasi dalam table cakru;
mysql> alter table cakru drop spesialisasi;
3.4 Menambah field spesialisasi dalam table cakru
mysql> alter table cakru drop spesialisasi varchar(5);
3.5 Ternyata ukuran data spesialisasi terlalu kecil dan ingin diubah menjadi varchar(25)
mysql> alter table cakru modify spesialisasi varchar(25);
3.6 Menghapus semua entri dalam field
mysql> delete from kru;
3.7 Menghapus entri dalam field ( misalkan entri yang bernama Irwan saja)
mysql> delete from kru where nama=”Irwan”;

SEJARAH JAVA

Pendahuluan



 Sejarah Java
• Dimulai pada tahun 1991 dibentuknya suatu tim yang diberi nama green
• Tim ini dipimpin oleh Patrick Naughton dan James Gosling (Sekelompok insinyur Sun ).
• Awalnya mereka ingin membuat suatu bahasa komputer yang dapat digunakan oleh TV kabel ( Cable TV Box) yang memiliki memori kecil dan setiap perusahaan memiliki tipe yang berbeda.
• Untuk mengaplikasikan hal tersebut mereka menggunakan hal yang pernah dicoba oleh bahasa pascal.
• Sebelumnya Niclaus Wirth telah membuat sebuah bahasa yang portable yang akan digunakan dalam mesin bayangan selanjutnya ini disebut sebagai Virtual Mesin namun saat itu belum diumumkan.
• Akhirnya tim green mengunakan ide ini akhirnya mereka menciptakan Java Virtual Mesin.
• Vitual mesin inilah yang menbuat java dapat dijalankan diberbagai platform.
• Pada tahun 1992 tim green membuat produknya yang diberi nama *7 (Star Seven )
• Namun produk ini gagal dipasaran.
• Setelah itu dibuat produk yang baru. Inilah java, pada awalnya bahasa pemrograman yang dibuat tersebut diberi nama “oak “ (Kemungkinan nama ini diambil dari nama pohon yang ada didepan jendela James Gosling)
• Namun setelah diperiksa ternyata nama oak sudah pernah digunakan. Maka lahirlah nama “ Java “
• Pada tahun 1993 sampai pertengahan 1994 tim green yang mempunyai nama baru First person. Inc hanya menghabiskan waktu dengan memperhatikan penjualan dari produknya. Ternyata tidak satupun orang ditemukan. Akhirnya pada tahun 1994 First Person dibubarkan.
• Pada tahun itu Web berkembang sangat pesat saat itu browser yang banyak digunakan adalah Mosaic suatu broser yang gratis.
• Dalam suatu wawancara pada pertengahan tahun 94 James Gosling mengatakan “We could build a real cool browser. It was one of the few things in the client/serve mainstream that needed some of the weird things we'd done: architecture neutral, real-time,reliable, secure—issues that weren't terribly important in the workstation world. So we built a browser.”
• Akhirnya dibuatlah suatu browser oleh Patrick Naughton dan Jonathan Payne.
• Browser itu diberi nama Hot Java. Browser ini dibuat dengan menggunakan bahasa java untuk menunjukkan kemapuan dari java.
• Yang tidak kalah hebatnya mereka juga membuat teknologi yang disebut Aplet sehingga browser dapat menjalankan kode program didalam browser.
• Inilah bukti dari teknologi itu yang ditunjukkan java pada tanggal 25 mei 1995
• Sejak saat itu browser java memberikan lisensinya kepada browser lain untuk bisa menjalankan Applet dan pada tahun 1996 diberikan pada Internet Explorer.
• Akhirnya pada tahun 1996 dikeluarkan versi pertama dari java dengan mengeluarkan java 1.02
• Pada tahun 1998 dikeluarkan java 1.2 dan java mulai mengeluarkan slogannya “Write once, Run anywhre “




 Edisi Java
Java adalah bahasa yang dapat dijalankan dimanapun dan di sembarang platform apapun, di beragam lingkngan : internet, intranets,consumer electronic products, dan computer applications.The java 2 platform tersedia dalam 3 edisi untuk keperluan berbeda. Untuk beragam aplikasi yang dibuat dengan bahasa Java, java dipaketkan dalam edis – edisi berikut :
1. Java 2 Standard Edition ( J2SE )
2. Java 2 Enterprise dition ( J2EE )
3. Java 2 Micro Edition ( J2ME )
Masing – masing edisi berisi Java 2 Software Development Kit ( J2SDK ) untuk mengembangkan aplikasi dan Java 2 Runtime Environent ( J2RE ) untuk menjalankan aplikasi.
 Kelebihan Java di bandingkan dengan C++
 Pembuat program java telah merancang java untuk menghilangkan pengalokasian dan dealokasi memori secara manual, karena java memiliki Garbage Collection
 Diperkenalkannya deklarasi array yang sebenarnya dan menghilangkan aritmatika pointer. Hal ini yang sering menyebabkan memori overwrite.
 Dihilangkannya multiple inheritance, mereka menggantinya dengan interface.

Pertemuan 1

 Tujuan
1. Mengetahui dan memahami konsep pemrograman berbasis object
2. Mengetahui dan memahami konsep pemrograman Java
3. Mengetahui tipe-tipe data yang terdapat di Java
4. Mengetahui operator yang terdapat di Java

 Pengenalan Java

Apa itu Java ?
Java adalah salah satu bahasa pemrograman berorientasi objek (OOP-Object Oriented Programming). Paradigma OOP menyelesaikan masalah dengan merepresentasikan masalah ke model objek.

Keutamaan Java dibanding bahasa pemrograman lain:

- Cross platform, dengan adanya Java Virtual Machine(JVM)
- Pengembangannya didukung oleh programmer secara luas
- Automatic Garbage Collection, membebaskan programmer dari tugas manajemen memori

Pemrograman Berorientasi Obyek (OOP)

Pemisalan Objek dalam OOP
Objek-objek dalam dunia nyata, mempunyai 2 karakteristik khusus : Status dan Perilaku. Contohnya, sepeda punya status(jumlah gir, jumlah pedal, dua buah ban) dan perilaku(mengerem, mempercepat, ubah gir).

Bahasa yang berorientasi pada objek pun mempunyai karakteristik yang sama dengan objek-objek di dunia nyata. Yaitu status yang dalam bahasa pemrograman biasanya disimpan sebagai Variabel dan perilaku yang diimplementasikan sebagai Method.

Karakteristik OOP

1. Enkapsulasi(Pembungkusan)
Enkapsulasi adalah pelindung program dan data yang sedang diolah. Enkapsulasi mendefinisikan perilaku dan melindungi program dan data agar tidak diakses secara sembarangan oleh program lain.

Dalam Java, asar enkapsulasi adalah class. Anda membuat suatu class yang menyatakan bahwa variable atau method sebuah class tidak dapat diakses oleh class lain dengan menjadikan class tersebut private, atau menjadikan class tersebut protected – yaitu hanya bisa diakses oleh turunannya, atau menjadikan class tersebut public – yaitu bisa diakses oleh sembarang class.

2. Inheritansi

Objek-objek yang berada di sekitar kita adalah objek-objek yang saling terhubung secara hirarkis. Misalnya :










Lingkaran dan Bujur Sangkar adalah turunan dari bentuk 2D dan Bentuk 2D adalah turunan dari Objek Gambar
Lingkaran dan Bujur Sangkar mewarisi(inherit) sifat-sifat dari bentuk 2D, juga mewarisi sifat-sifat dari objek gambar
Lingkaran dan Bujur Sangkar dapat dikatakan subclass dari bentuk 2D. Bentuk 3D adalah superclass dari Bola dan Piramida, dan seterusnya.

3. Polimorfisme

Walaupun Lingkaran dan Bujur Sangkat sama-sama turunan dari Bentuk 2D, tetapi cara menubah ukuran masing-masing berbeda, untuk lingkaran anda harus merubah besar jari-jarinya, sedang untuk bujur sangkar anda harus mengubah panjang sisinya.
Dalam Java implementasi, method suatu parent-class dapat diubah oleh sub-class, hal ini dikenal dengan overriding method. Deklarasi method sama tetapi implementasi atau definisinya berbeda(Method atau perilaku yang sama tapi implementasinya/caranya yang berbeda-beda inilah yang disebut dengan Polimorfisme).

Menulis Program Java
Aturan penulisan program di Java
- Java adalah turunan dari C, sehingga Java memiliki sifat C yaitu Case sensitive, yaitu membedakan antara huruf besar dan kecil
- Dalam sebuah file program di Java, hanya diijinkan memiliki 1 buah class yang bersifat public
- Dalam sebuah file program Java, hanya ada satu method main(method yang pertama kali dibaca oleh interpreter Java)
- Nama sebuah file program Java harus sama dengan nama class yang memiliki method main() di dalam tubuhnya. Perhatikan bahwa tulisan nama file dengan nama class (huruf besar maupun kecilnya) haruslah persis sama. .

Berikut adalah contoh membuat program dengan menggunakan Java. Pada program akan ditampilkan tulisan “Hello World !“
//Nama File Hello.java
class Hello
{
public static void main(String args[])
{
System.out.println(“Hello World !”);
}
}
Langkah selanjutnya :
1. Simpan dengan nama: Hello.java
2. compile Hello.java : javac Hello.java
3. hasilnya akan menghasilkan : Hello.class
4. jalankan Hello.class: java Hello.class atau java Hello
5. akan keluar hasil :
Hello world!

Programming Tip :
Dalam penulisan bahasa program, disarankan :
1. Huruf depan dari sebuah class atau method menggunakan huruf besar
2. Menulis Komentar pada sebuah class atau method untuk memudahkan debug(pencarian kesalahan). Serta mempermudah orang lain membaca program kita. Ingat !!! Dalam dunia nyata, programmer bekerja secara team, jadi usahakan partner team mengerti apa yang kita buat dengan memberikan komentar(tentang pembuatan komentar akan dibahas dibawah)
3. Membuat indentasi(jarak antara induk perintah dan anak perintah). Identasi sebisa mungkin dibuat standard, semisal pada contoh diatas, jarak antara tulisan “class Hello” sebagai induk perintah dengan tulisan “public…..” sebagai anak perintah adalah 5 spasi. Sekali lagi, ini untuk mempermudah dalam pengertian program
Statement dan Identifier
1. Statement
Bentuk statement atau pernyataan dalam satu program di Java adalah sebagai berikut :
Int i=1;
String teman = “Iman Rochdilianto”;
import java.awt.Font;
System.out.println(“Selamat Datang “ + teman +
“di Praktikum SBP”);
pegawai.tetap=true;
total= a + b + c + d + e;

Setiap statement selalu diakhiri dengan titik koma (;)

Blok adalah 2 tanda kurung kurawal ({}) yang menyatukan statemen
{
x = x + 1;
y = y * 3;
}

Java memperbolehkan spasi dalam jumlah berapa saja (Spasi, tab, baris baru)
class Hello
{
public static void main(String args[])
{
System.out.println(“Hello World”);
}
}


bisa ditulis dalam bentuk sepeerti dibawah ini :
class Hello ( public static void main(String args[]) {
System.out.println(“Hello World!”); } }

Identifier
Dalam Java, identifier adalah nama yang diberikan untuk variable, class, atau method. Identifier boleh dimulai dengan huruf, underscore(_) atau tanda dollat($).
Identifier adalah case sensitive(membedakan huruf besar/kecil) dan tak ada batas maksimum.
Contoh :
username
user_name
_sys_var1
$change
Variabel dan Tipe Data
1. Variabel
Variabel adalah suatu item dari data yang diberi nama identifikasi(identifier), variable dapat diartikan lokasi di dalam memori yang mana suatu nilai(value) dapat disimpan.
2. Tipe Data
Java membagi tipe data menjadi 2 bagian :
(1) Tipe data primitive
Keyword Size Range
Bilangan Integer
Byte 8 bits -128 s/d 127
Short 16 bits -32768 s/d 32767
Int 32 bits -2.147.483.648 s/d 2.147.483.647
Long 64 bits 9223372036854775808 s/d 9223372036854775808
Bilangan Real
Float 32 bits Single Precision
Double 64 bits Double Precision
Tipe Data Lain
Char 16 bits Single Characte
Boolean True / false Nilai Boolean
Contoh cara pendeklarasian dan inisialisasi tipe data primitive sebagai berikut :

char ch; // deklarasi variable
ch = “R’; // inisialisasi variable
char ch1= “S”; // delarasi dan inisialisasi variable
int x,y,z; // deklarasi 3 variabel integer
boolean tetap= true;

(2) Tipe data reference

Reference adalah pointer ke tipe data atau penyimpan alamat data.
Terdapat tiga data reference yaitu : array, class, dan interface (mengenai tipe data reference akan diuraikan dalam bab selanjutnya)

Komentar
Komentar tidak akan menjadi bagian program yang dieksekusi. Kita dapat menambahkan senbanyak mungkin komentar.
Komentar di Java dapat didefinisikan dengan 3 cara berbeda .

Jenis Komentar :

/* komentar */ ===Semua karakter yang berada di antara /* dan */ akan diabaikan.
// komentar ===Semua karakter setelah // sampai akhir baris akan diabaikan.
/** komentar */ ===Serupa dengan /* */, kecuali bahwa komentar akan digunakan tool javadoc untuk menciptakan dokumentasi otomatis.





Berikut cara menyisipkan komentar pada program
class Hello
{
// kalimat ini adalah komentar
// yang tak akan dieksekusi

public static void main(String args[])
{
System.out.println(“Hello World!”);
}
/*
Kalimat ini adalah komentar
Yang tidak akan dieksekusi
*/
}

Literal
Karakter literal adalah karakter yang ditulis diantara kutip tunggal : ‘r’,’#’,’14’ dan sebagainya. Karakter ini disimpan sebagai 16 bit Unicode Characters. Berikut daftar special kode yang merepresentasikan karakter-karakter yang tidak dapat di print(non-printable characters)

Escape Meaning
\n Newline
\t Tab
\b Backspace
\r Carriage Return
\f Formfeed
\\ Backslash
\’ Single Quote
\” Double Quote
\ddd Octal
\xdd Hexadecimal
\udddd Unicode Character

Contoh :
“Trade Mark dari Java \u212”
Hasil output diatas adalah :
Trade Mark dari Java ™
Operator dan Ekspresi

Ekspresi : adalah statement yang mengembalikan suatu nilai
Operator : suatu symbol yang biasanya digunakan dalam ekspresi

1. Operator Aritmatika

Operator Meaning Example
+ Addition 3 + 4
- Substraction 5 – 7
* Multiplication 5 * 5
/ Division 14 / 7
% Modulus 20 % 7

Contoh :

// Nama File Aritmatika.java
class Aritmatika {
public static void main(String args[]) {
short x = 10’
int y = 4;
float a = 12.5f;
float b = 7f;
System.out.println(“X = “ + x + “, Y = “ +y);
System.out.println(“X +Y = “ + (x +y));
System.out.println(“X -Y = “ +(x-y));
System.out.println(“X / Y = “ +(x/y));
System.out.println(“X % Y = “ +(x%y));
System.out.println(“A = “ + a + “, B = “ +b); System.out.println(“A / B = “ + (a / b));
}
}

2. Operator Increment dan Decrement
Operator increment dan Decrement ( ++ dan -- ) menaikkan dan menurunkan variable dengan 1.
Contoh :
Y = ++ x;
Z= --x;


3. Assignment Operator

Ekspression Meaning
x += y x = x + y
x -= y X = x – y
x *= y x = x * y
x /= y x = x / y

Lebih jauh dengan Assignment

Variabel assignment adalah suatu bentuk ekspresi :

x = y = z = 0;

pada contoh diatas variable x,y,z bernilai 0.


4. Operator Relasional ( Perbandingan)

Java mempunyai beberapa ekspresi untuk menguji hasil suatu perbandingan :

Operator Meaning Example
== Equal x== 3
!= Not Equal x != 3
< Less Than x < 3
> Greater Than x > 3
<= Less Than Or Equal To x < = 3
>= Greater Than Or Equal To x > = 3

5. Operator Logika

Operator Meaning Example
&& And 2 && 2
|| Or 2 || 2
!= NOT 2 != 2

6. Operator Bitwise

Operator bitwise complement operator ( ~ ) melakukan negasi bitwise nilai bilangan bulat. Bitwise negation berarti masing – masing bit di angka maka semua bilangan biner 0 menjadi 1 dan semua bilangan biner 1 menjadi 0.

Contoh :
X=8;
Y=~x;
Pada contoh ini x diberi nilai literal 8, kemudian dilakuakn bitwise complement sebelum diberikan ke y.Hal ini bearti semua bit di varioabel x dinegasikan, hasilnya adalah bilangan bulat -9.
Contoh diatas terjadi karena bilangan int disimpan menggunakan metode two’s complement. Semua bilangan int ( kecuali char) direpresentasikan two’s complement yang berarti bilangan negative direpresentasikan dengan inverse semua bit menghasilkan 11110111 adalah angka -9, bila ditambah 1 maka 11111000 adalah -8.
Karena pengunaan two’s complement maka operator bitwise dapat menghasilkan nilai – nilai tidak diharapkan. Mengubah bit paling kiri akan berarti mengubah tanda bilangan dari positif menjadi neatif dan sebaliknya.


Object dan Class

Definisi class dan object :

class

Dalam dunia nyata, kita sering berinteraksi dengan banyak object. Kita tinggal di rumah, rumah adalah suatu object, dalam terminology OOP rumah kita adalah instance dari suatu class rumah.
Misal kita tinggal dalam suatu komplek perumahan, sebelum membangun rumah, developer akan berpanduan pada rancang bangun rumah(blue print) yang telah dibuat seorang arsitek. Blue print dari rumah adalah class, sedang rumah yang kita tinggal(rumah-rumah dalam komplek) disebut instance.
Manusia adalah sebuah class ; anda, saya, kita adalah instance dari class manusia




Object

Object adalah instance dari class. Jika class secara umum merepresentasikan(template) sebuah object, sebuah instance adalah representasi nyata dari class itu sendiri.
Bekerja dengan Object

Ketika anda membuat program dengan Java, anda akan mendefinisikan beberapa class, anda juga akan menggunakan class untuk membuat suatu instance dan tentu saja akan bekerja dengan instance-instance tersebut.

Membuat object

Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class yang akan dibuat sebagai instance dari class tersebut.
String str = new String();
Random r = new Random();
Pegawai p2 = new PEgawai();
Date hari = new Date();

hari adalah object reference dari class Date yang akan digunakan untuk mengakses class Date.
Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai reference ke instance dari class Date().

Contoh :

Kita akan menggunakan class Date untuk membuat suatu object Date.
import java.util.Date;
class CreateDates {
public static void main(String args[]){
Date d1,d2,d3;
d1 = new Date();
System.out.println(“Hari 1 : “ + d1);
d2 = new Date(71,4,14,8,35);
System.out.println(“Hari 2 : “ + d2);
d3 = new Date(“September 3 1976 2:25 PM”);
System.out.println(“Hari 3 : “ + d3);
}
}
Ketika anda memanggil operator new terjadi beberapa hal :
1. Instance baru yang telah diberikan oleh class dicipakan
2. Memori dialokasikan untuk instance tersebut
3. Special Method didefinisikan pada class (Konstruktor)

Konstruktor : Suatu method tertentu untuk membuat dan menginsialisasi sebuah instance baru dari class. Konstruktor menginisialiasasi object-object baru dan variable-variabel. Pemberian nama method Konstruktor harus sama dengan nama classnya. (Penjelasan tentang Konstruktor akan dibahas dalam pertemuan berikutnya)

Akses dan Setting Class dan Variabel Instance

Akses variable Instance

Untuk mengambil value dari suatu variable instance kita gunakan notasi titik(.)
Dengan notasi titik, sebuah instance atau variable class dibagi dua bagian. Object berada disebelah kiri titik, dan variable berada di kanan titik.

Pegawai.tugas;

Pegawai adalah object, tugas adalah variable. Misalkan tugas adalah object yang mempunyai variable instance sendiri yaitu status, penulisan dapat ditulis sebagai berikut

Pegawai.tugas.status;

Memberi Nilai variabel
Untuk memberi nilai variable kita gunakan operator sama dengan(=) disebelah kanan ekspresi.

Pegawai.tugas.status = SELESAI; // SELESAI==true





Contoh :

// Nama File : Testpoint.java
import java.awt.font;
class Testpoint {
public static void main(String args[]) {
Point poin = new Point(10,10);
System.out.println(“X = “ + point.x);
System.out.println(“Y = “ + point.y);

System.out.println(“Setting X = 6 “);
poin.x = 6;
System.out.println(“Setting Y = 14“);
poin.y = 14;

System.out.println(“X = “ + point.x);
System.out.println(“Y = “ + point.y);
}
}

Memanggil method

Untuk memanggil method didalam object, sama seperti memanggil variable instance; yaitu dengan dengan menggunakan notasi titik(.)
Object berada disebelah kiri titik, dan method beserta argumen-argumen berada di kanan titik.

ObjectSatu.methodDua(arg1, arg2, arg3);

Method tanpa argument :

ObjectSatu.methodNoArg();

Jika method yang dipanggil mempunyai object yang mempunyai method tersendiri

ObjectSatu.GetObjectLain().getNama();

Method dengan kombinasi memanggil variable instance

Pegawai.golongan.gaji(arg1, arg2);



Contoh :
//Nama File : TestString.java
classTestString {
public static void main(String args[]) {
String str=”Awalilah segala sesuatu pekerjaan dengan
Bismillah”;

System.out.println(“Kalimat bijak : “ +str);
System.out.println(“Panjang Kalimat : “ +str.length());
System.out.println(“Character pada posisi 4 adalah : “ +str.charAt(4));
}
}

Object Reference
Ketika bekerja dengan object-object, salah satu hal yang penting untuk dimengerti adalah bagaimana menggunakan reference ke suatu object.
Ketika kita meng-assign suatu object ke variable, atau menjadikan object-object sebagai argument pada suatu method, sesungguhnya kita telah membuat reference ke object-object tersebut, bukan object atau duplikasi(copy) dari object yang membuat suatu reference

Contoh berikut akan membuat kita jelas :
// Nama file : ReferencesTest.java
import java.awt.font;

class ReferenceTest {
public static void main(String args[]) {

Point poin1,poin2;
poin1 = new Point(100,100);
poin2 = poin1;

poin1.x = 200;
poin2.y = 200;
System.out.println(“Point 1 : “+poin1.x+”,”+poin1.y);
System.out.println(“Point 1 : “+poin1.x+”,”+poin1.y);
}
}
Dalam program diatas, kita mendeklarasikan dua variable bertipe Point, dan meng-assign suatu Point baru ke poin1. Kemudian meng-assign poin2 dengan nilai dari poin1.

Output yang terjadi adalah :

Point 1 : 200,200
Point 2 : 200,200

Terlihat poin2 juga berubah. Ketika kita meng-assign suatu nilai dari poin1 ke poin2, sesungguhnya kita menciptakan sebuah reference dari point2 menunjuk ke suatu object yang sama dengan poin1.


poin1 Point Object

poin2


Mendeklarasikan Class dan Variabel

Class adalah kumpulan kode atau cetak biru(blue print) dari suatu object. Didalam cetak biru menerangkan sifat dari objek dan identitas suatu variable.

Sintax untuk mendeklarasikan class :

[‘public’] [(‘abstract’ | ‘final’)] class nama_class
{
// sifat dari object dan identitas suatu variable dideklarasikan diantara {}
}

Menggunakan keyword public berarti class tersebut bisa di akses oleh class-class di seluruh package. Perlu diingat jangan menggunakan public jika class dibuat hanya di akses oleh class-class dalam satu package dengan class itu sendiri.

Gunakan keyword abstract untuk mendefinisikan suatu class abstract dimana object tidak bisa diciptakan dari class abstract, kelas abstract dibuat untuk diturunkan(di subclass) bukan untuk diinstansiasi langsung.

Gunakan keyword final untuk mendefinisikan suatu class yang tidak dapat diturunkan.

Penamaan class biasanya menggunakan huruf capital untuk karakter pertamanya.

Contoh :

class Mhs {

}

Jika class adalah sub class dari class lain gunakan keyword extends.

class Mhs extends Mahasiswa {

}

Dapat diartikan Mhs adalah subclass dari Mahasiswa.

Deklarasi Variabel

Sintax Deklarasi variable :

[(public | private | protected)]
[(final | volatile)]
[static][transient]
Tipe_data Nama_variabel [=ekspresi];

Contoh :

class Mahasiswa {
String npm;
int nilai;
}






Akses variable
Untuk akses dan scope variable digunakan keyword : public, private atau protected.
1. Tanpa keyword
Jika tidak digunakan keyword diatas sebagaimana contoh dibawah ini :
class MyClass
{
int nama;
}
Berarti : Hanya kode-kode yang terdapat dalam MyClass dan class-class lain yang dideklarasikan dalam package dimana MyClass dideklarasikan yang dapat mengakses variable nama.
2. private
class Pegawai
{
private double gaji
}
Berarti : Hanya kode-kode yang terdapat dalam class Pegawai yang dapat mengakses variable gaji.
3. public
public class Pegawai
{
public String nama;
}
Berarti : Kode-kode yang terdapat didalam class Pegawai dan class yang terdapat di dalam package lain dapat mengakses variable nama(class Pegawai harus dideklarasikan public juga agar dapat diakses class-class dalam package lain.
4. protected
public class Pegawai
{
protected String nama;
}
Berarti : Hanya kode-kode yang terdapat dalam class Pegawai dan class-class lain dalam satu package yang sama dengan class Pegawai dan seluruh sub class dari class Pegawai(yang dideklarasikan dalam package lain) dapat mengakses variable nama.

PERTEMUAN KE II

INHERITANCE,ARRAY, STRING
DAN
PERULANGAN
• Tujuan Praktikum :

1. Mengetahui pengertian objek,class dan penggunaannya dalam pemrograman java
2. Mengenal penurunan sifat (INHERITANCE) di dalam bahasa java.
3. Mengenal perulangan dengan menggunakan syntax perulangan di java.
4. Mengetahui penggunaan array dan string.


Array merupakan suatu struktur data yang sangat penting dalam suatu bahasa pemrograman . Suatu larik atau array merupakan suatu kumpulan data yang memiliki tipe yang sama. Misal suatu array bertipe string maka tidak boleh ada tipe lain didalamnya.
Ada 2 cara untuk mendeklarasikan array dalam bahasa java yaitu :
a. Dengan menggunakan operator New :
Bentuk Umum : tipe-array nama-array[ ] = new tipe-array[ ukuran array ]
Contoh : int nama [] = new int[10]
b. Dengan memberikan nilai awal array dengan menggunakan “{“ dan “}”
Contoh : String [ ] jurusan = {“ MI ”,” TI “,” TK “,” AKUNTANSI “ }
Untuk bentuk pertama ini array belum memiliki nilai awal sehingga sebelum digunakan kita harus memberikan nilai awal kepada array tersebut.
Contoh Program :
class larik {
String [] nama = {“JATI”,”SANTI”,”NISA”,”RINTO”};
String [] kelas = new String[nama.length];
Void cetakNama() {
Int I = 0;
System.out.println(nama[i] + ” “ + kelas[i];
i++;
System.out.println(nama[i] + ” “ + kelas[i];
i++;
System.out.println(nama[i] + ” “ + kelas[i];
i++;
System.out.println(nama[i] + ” “ + kelas[i];
}
public static void main (String[] args) {
larik a = new larik ();
System.out.println(“ “);
System.out.println(“------------------------“);
a.cetakNama();
System.out.println(-------------------------“);
a.kelas[0] = “3IA03”;
a.kelas[1] = “4IA01”;
a.kelas[2] = “2IA01”;
a.kelas[0] = “3IA07”;
a.cetakNama();
System.out.println(“--------------------“);
}
}
Untuk deklarasi array multi dimensi :
Type array nama array [] [] = new type array[ukuran-array] [ukuran array]
Contoh program :
import java.io.*;

class Array2D
{
public static void main(String[]args)
{
DataInputStream entry = new DataInputStream(System.in);

try
{
int[][]angka = new int[3][3];
for(int i = 0;i {
for(int j = 0;j {
System.out.print("Matrik [ " + (i+1)+ "] [ " + (j+1) + " ] = ");
angka[i][j] = Integer.parseInt(entry.readLine());
}
}
System.out.println("Data array 2 Dimaensi : ");
for(int i = 0; i {
for(int j = 0;j {
System.out.print(angka[i][j]+ " ");
}
System.out.println();
}
}
catch(Exception e)
{
System.out.println("Wah salah input tuh ");
}
}
}


Loop atau sering disebut juga sebagai iterasi adalah pengualangan suatu eksekusi dari suatu kode program. Pengulangan ini akan terus dilakukkan sampai sebuah kondisi dicapai atau perulangan tersebut telah diulang sebanyak n kali .
Didalam bahasa java terdapat beberapa macam perulangan yaitu :
a. while
Statemen while digunakan untuk mengeksekusi sebuah blok secara berulang selama memenuhi kondisi tertentu..
Bentuk Umum : while(ekspresi) {
…………… statemen …………….. }
Contoh Program :
class ulang1 {
public static void main (String []args ) {
System.out.println(“Masukkan angka kamu : “);
char c = (char) System.in.read();
while (c <> ‘7’ ) {
System.out.println(“Please try again ! “);
System.out.println(“Masukkan angka kamu : “);
char c = (char) System.in.read();
}
System.out.println(“Anda Benar !!!!! “);
}
}
b. do….while
Sama halnya dengan while, statemen do-while digunakan untuk mengeksekusi sebuah blok secara berulang sampai tidak memenuhi kondisi tertentu. Pada penggunaan while,ekspresi diperiksa pada saat awaL,jadi kemungkinan blok statemen dalam while tidak pernah dieksekusi. Pada penggunaan do-while, ekspresi tidak diperiksa pada saat awal eksekusi, jadi minimal blok statemen do-while akan di eksekusi sekali.
Bentuk Umum : do {
………….. statemen…………..
}while(ekspresi)
Contoh Program :
class DoWhile{
public static void main (String args[]) {
int n = 10 ;
do {
System.out.println(“tick tick “ + n);
n--;
}while(n > 0);
}
}
c. for
Statemen for digunakan untuk mengeksekusi sebuah blok secara berulang dalam sebuah range tertentu.
Bentuk Umum : for(inisialisai;terminasi;increment){
………………….. statemen ……………… }
Contoh Program :
class ForTick {
public static void main (String []args)
{
int n;
for(n=10;n>0;n--)
System.out.println(“tick tick “ + n);
}
}

INHERITANCE (PENURUNAN SIFAT )

Inheritance adalah pewarisan atribut-atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut.
Contoh Program :
// contoh inheritanace sederhana
// file disimpan dengan nama penurunansederhana.java
class A {
int i;
int j;
void show_ij(){
System.out.println(“I dan j = “ + I + “” + j);
}
}
class B extends A {
int K ;
void show_k () {
System.out.println(“k = “ +k);
}
void sum_all() {
System.out.println(“I + j + k = “ + (i+j+k));
}
}
class penurunansederhana {
public static void main (String args[]){
A objekBapak = new A();
B objekAnak = new B();

objekBapak.i = 13;
objekBapak.j = 17;

System.out.println(“Objek A -> objek superclass dari B : “)
objekBapak.show_ij();
objekAnak.i = 9;
objekAnak.j = 10;
objekAnak.k = 11;

System.out.println(“Objek A -> objek superclass dari B : “)
objekAnak.show_ij();
objekAnak.show_k();
objekAnak.sum_all();
}
}



Java string merupakan salah satu kelas dasar yang disediakan oleh java untuk manipulasi karakter. Kelas string diguinakan untuk mendefinisikan string yang constant(tidak bias berubah).
Contoh Program :
class panjang_string {
public static void main(String [] args) {
String s1 = “Perkenalan “;
String s2 = new String (“ Pertama “ );
Int pjg;
Pjg = s1.length;
System.out.println(“panjang String s1 = \” +s1+”\”= “ + pjg );
Pjg = s2.length();

System.out.println(“panjang String s2 = \” +s2+”\”= “ + pjg );
}
}


PERTEMUAN KE III

METHOD, KONSTRUKTOR
DAN EXCEPTION HANDLING

Tujuan Praktikum :

1. Mengetahui penggunaan Method didalam java.
2. Mengetahui peggunaan konstruktor dalam java.
3. Mengetahui cara menangani kesalahan dalam program di bahasa java.

• METHOD

Metode menentukan perilaku objek,yakni apa yang terjadiketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
Metode memiliki 4 (empat) bagian dasar :
• Nama metode
• Tipe Objek atau tipe primitive yang dikembalikan metode.
• Daftar parameter.
• Badan atau isi metode.
Tiga bagian pertama dari definisi metode membentuk apa yang disebut sebagai penanda (signature) metode dan mengindikasikan informasi penting tentang metode itu sendiri. Dengan kata lain, nama metode tersebut dari metode=-metode lain dalam program. Dalam java kita dapat memiliki metode-metode berbeda yang memiliki nama sama tetapi berbeda tipe kembalian atau daftar argumennya, sehingga bagian-bagian definisi metode ini menjadi penting. Ini disebut overloading metode.
Definisi dasar metode adalah sebagai berikut :
Tipekembalian namametode (type1 arg1, type2 arg2, type3 arg3 ..)
{
…………
}
dalam contoh diatas tipekembalian adalah tipe nilai yang dikembalikan oleh metode. Ini bias berupa salah satu tipe primitive,nama kelas, atau void bila metode tidak mengembalikan nilai sama sekali.

Contoh Program :
class KelasRentang {
int [] buatRentang(int lower, int upper) {
int arr[] = new int [ {upper – lower ) + 1 ];
for (int I = 0 ; i< arr.length;i++) {
arr[i] = lower++;
}
return arr;
}
public static void main(String [] args) {
int inilarik[];
KelasRentang iniRentang = new KelasRentang ();
Inilarik = iniRentang.buatRentang(5,20);
System.out.print(“Lariknya adalah : [ “ );
For (int i = 0; i < inilarik.length;i++) {
System.out.print(inilarik[i] + “ “);
}
System.out.println(“] “);
}
}
Pada bagian definisi metode terkadang kita ingin merujuk objek saat ini (yakni objek dimana metode berada untuk pertama kalinya). Untuk itu digunakanlah kata kunci this. Kata kunci this dapat digunakan dimanapun objek saat ini berada pada notasi titik untuk merujuk variabel instance objek, sebagai argument ke metode, sebagai nilai kembalian untuk metode saat ini, san sebagainya :
t = this.x // x variabel instance objek
return this // mengembalikan objek saat ini.

• KONSTRUKTOR

Metode konstruktor digunakan untuk menginisialisasi objek baru ketika metode-metode itu dibuat. Tidak seperti metode biasa, kita tidak dapat memanggil metode konstruktor dengan memanggilnya langsung. Metode konstruktor dipanggil oleh java secara otamatis ketika kita membauat objek baru.

Jika kita menggunakan new untuk membuat objek baru, java melakukan 3(tiga) hal :
• Mengalokasikan memori untuk objek baru
• Menginisialisasi variabel instance objek tersebut, baik dengan nilai awal maupun dengan nilai default (0 untuk bilangan, null untuk objek, false untuk Boolean, ‘\0’ untuk objek, false untuk Boolean, ‘\0’ untuk karakter).
• Memanggil Metode konstruktor kelas tersebut (mungkin satu dari beberapa metode)
Dengan mendefinisikan metode konstruktor pada kelas yang kita buat, kita dapat mengatur nilai awal variabel instance , memanggil metode berdasar variabel tersebut atau objek lain, atau menghitung property awal objek, kita juga dapat melakukan overloading konstruktor sebagaimana yang biasa kita lakukanh terhadap metode regular, juga membuat objek yang memiliki properti khusus berdarkan argumen yang kita berikan dalam ekspresi new.
Konstruktor mirip dengan metode regular, hanya saja ada dua perbedaan utama yaitu :
• Konstruktor selalu memiliki nama yang sama dengan class.
• Konstruktor tidak memiliki nilai kembalian.

Contoh Program :
class Asisten {
String nama ;
int umur;
Asisten(String n, int u) {
nama = n;
umur = u;
}
void tampilAsisten () {
System.out.print(“Hallo, namaku “ + nama );
System.out.println(“ Umurku “ + umur + “ tahun “);
}
public ststic void main(String [] args) {
Asisten a;
System.out.println(“ “);
a = new Asisten(“Widy Marinto Jati “ ,20);
a.tampilAsisten();
System.out.println(“--------------------“ );
a = new Asisten(“Iman R, ST “ ,22);
a.tampilAsisten();
System.out.println(“-----------------------“);
}
}
• Exception Handling

Exeption dimunculkan pada program saat menemukan keadaan yang dapat menyebabkan program menjadi error. Sebuah Exception akan menyebabkan aliran program keluar dari aliran yang normal .
Sebagai contoh program dimunculkan jika program menggil suatu file yang tida ada . untuk menanganinya dapat digunakan blok try – catch


Contoh Exception :
import java.io.* ;
class exc1 {
public static void main {
int d,a ;
try {
d = 0 ;
a = 42 / d;
System.out.println(“This will not be printed “ );
}
catch (Exception e ){
System.out.println(“Pembagian dengan nol );
}
System.out.println(“Setelah catch statemen “ );
}
}


















PERTEMUAN IV

STREAM DAN FILE

Tujuan Praktikum :

5. Mengetahui dan memahami jenis-jenis operasi file di Java
6. Memberikan penjelasan tentang konsep stream dan file di Java
7. Memberikan penjelasan serta memberikan contoh implementasi operasi stream
8. Memberikan penjelasan disertai contoh tentang operasi file di Java(teks dan biner)

 Stream

Stream adalah representasi abstrak dari input dan output device dimana aliran data bytes akan ditransfer seperti file dalam harddisk, file pada system remote atau printer. Kita dapat membaca data dari input stream, yang dapat berupa file,keyboard, atau computer remote. Sedangkan untuk operasi penulisan berarti kita menulis data pada output stream.
Package java.io mendukung dua tipe stream, yaitu binary dan karakter stream. Binari merupakan data berupa bit atau data binary, sedangkan karakter adalah tipe khusus untuk pembacaan dan penulisan teks/karakter.
Kemampuan untuk memproses output dalam Java dakam bentuk byte atau bytestream diwakili oleh class abstrak OutputStream sedangkan input diwakili class InputStream. Apabila kita memproses data karakter(karakter Unicode) atau disebut character stream seperti string atau bilangan maka Java menyediakan class abstrak Reader dan Writer.

Class Keterangan
File Objek dari class ini mewakili path, direktori atau file yang akan diakses untuk input atau output
OutputStream Class dasar untuk operasi output byte stream, merupakan class abstrak
InputStream Class dasar untuk operasi input byte strean, merupakan class abstrak
Writer Class dasar untuk operasi output karakter stream,merupakan class abstrak
Reader Class dasar untuk operasi input karakter stream,merupakan class abstrak
RandomAccessFile Class yang menyediakan dukungan untuk akses random ke file

 InputStream

Subclass-subclass dari InputStream adalah :
AudioInputStream,ByteArrayInputStream, FileInputStream, FilterInputStream, PipedInputStream, SequenceInputStream, dan StringBufferInputStream.
Dua method utama dari Input Stream adalah :
• read() : digunakan untuk membaca stream
• close() : digunakan untuk menutup koneksi input stream

 OutputStream

Subclass-subclass dari OutputStream adalah :
• ByteArrayOutputStream : untuk menuliskan stream menjadi byte array
• FileOutputStream : digunakan untuk menulis pada file
• FilterOutputStream : merupakan superclass dari subclass-subclass seperti DataOutputStream, BufferOutputStream, PrintStream, CheckedOutputStream.
• ObjectOutputStream : digunakan untuk menuliskan objek pada OutputStream
• PipedOutputStream : digunakan untuk menjadi output PipedOutputStream
Sebagian method-method OutputStream adalah :
• void close() : Menutup output stream yang aktif dan melepaskan sumber daya terkait dengan stream tersebut
• void flush() : Melakukan flush output stream dan memaksa semua byte buffer untuk dituliskan keluar
• void write(byte[] b) : menulis sebanyak b.length dari byte array ke output stream
• void write(byte [] b, int off, int len) : Menuliskan sebanyak len byte dari byte array b dimulai dari index offf

 DataOutputStream
DataOutputStream merupakan class yang menyediakan cara praktis untuk menuliskan tipe data primitive ke output stream, sedangkan DataInputStream berfungsi untuk membaca hasil penulisan DataOutputStream atau mendapatkan data kembali.
Sebagian method DataOutputStream :
• writeDouble : menuliskan data bertipe double ke output stream
• writeInt : menuliskan data Integer ke output stream
• writeBoolean : menuliskan data Boolean ke output stream
• writeUTF : menuliskan data string menggunakan encoding UTF-8 yang tidak tergantung pada mesin
 DataInputStream

DataInputStream berfungsi untuk saling melengkapi dengan DataOutputStream, yaitu untuk mendapatkan data yang ditulis dengan DataOutputStream.

Tipe data primitive yang ditulis oleh DataOutputStream didapatkan kembali dengan DataInputStream dengan tidak bergantung pada mesin computer.

Sebagian method DataInputStrean :
• readDouble()
• readInt()
• readBoolean()
• readUTF()

BufferedInputStream dan BufferedOutputStream

BufferedInputStream maupun BufferedOutputStream menyediakan fungsi buffer dalam proses output dan input untuk mempercepat dan mengefisienkan proses

Kedua class ini biasanya digunakan secara bersamaan dengan implementasi class output dan input stream lain seperti DataOutputStream, DataInputStream, FIleOutputStream dan FileInputStream atau yang lain. Kedua class ini menjadi semacam penengah yang menyediakan proses buffering

FileInputStream dan FIleOutputStream

Seringkali proses input dan output yang kita lakukan menggunakan file sebagai sarana penulisan maupun pembacaan data.
Oleh karena itu kita akan membahas class FileInputStream untuk membaca data dari file dan FIleOutputStream untuk menuliskan data ke file.
Class FileInputStream merupakan turunan langsung dari class InputStream sedangkan FileOutputStream merupakan turunan langsung dari class OutputStream.

Contoh dibawah akan mencoba mendeskripsikan sample penggunaan class DataOutputStream, DataInputStream, FileOutputStream, FileOutputStream, serta BufferedInputStream dan BufferedOutputStream.

//Nama File cobaDataStream.java
import java.io.*;

public class cobaDataStream{
public static void main(String args[])
{
try {

DataOutputStream out2 =
new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("Data.txt")));
out2.writeDouble(3.14159);
out2.writeDouble(1.41413);

out2.writeInt(2002);
out2.writeInt(1003);

out2.writeBoolean(true);
out2.writeBoolean(false);
out2.close();
}
catch(IOException ioe)
{
ioe.printStackTrace();
}

try
{
DataInputStream in5 =
new DataInputStream(
new BufferedInputStream(
new FileInputStream("Data.txt")));


System.out.println(in5.readDouble());
System.out.println(in5.readDouble());
System.out.println(in5.readInt());
System.out.println(in5.readInt());

boolean status = in5.readBoolean();
boolean status1 = in5.readBoolean();

System.out.println(status);
System.out.println(status1);

} catch(EOFException e) {
System.err.println("End of stream");
}
catch(IOException io)
{
io.printStackTrace();
}

}
}

 Class File

Class File merupakan langkah awal dalam mempelajari proses input output dengan Java karena File merupakan objek yang mewakili path, file atau direktori pada harddisk.
Ada 3 cara membuat objek File, yaitu :

1. Menggunakan objek String sebagai argument yang menginformasikan path untuk file atau direktori.
Contoh :
File direktori = new File(“c:/my documents/java/”);
File fileku = new File(“c:/my documents/java/dokumen.txt”);
2. Menggunakan dua langkah dimana yang pertama untuk mrndefinisikan direktori dan yang kedua untuk file
Contoh :
File dirku = new File(“c:/my documents/java”);
File filenya = new File(dirku, “dokumennya.txt”);
3. Menggunakan dua argument dimana yang pertama adalah argument String yang mendefinisikan direktori, dan yang kedua adalah argument String yang mendefinisikan nama file
Contoh :
File filesaya = new File(“c:/my documents/java/”,”dokumennya.txt”);


 Method dalam Class File

Selain mendefinisikan direktori atau file, objek File juga dapat digunakan untuk mendapatkan informasi file melalui method-method yang ada dalam objek File.

Method Keterangan
exists() Mengembalikan nilai true apabila file atau direktori itu ada
isDirectory() Mengecek apakah objek file menunjuk pada direktori atau file
getName() Mendapatkan nama file atau direktori dalam string(tanpa path) dari objek File
getPath() Mendapatkan path dalam String dari objek File,termasuk nama File / direktori
getAbsolutePath() Mendapatkan path absolute dari direktori / file yang direferensi oleh objek file
list() Bila objek File mewakili direktori maka akan mengembalikan array String yang mengandung nama dari isi direktori. Bila objek File merupakan file maka akan mengembalikan nilai null
listFiles() Bila objek file berupa direktori maka akan mengembalikan objek File yang ada dalam direktori
length() Mengembalikan nilai bertipe long yang merupakan panjang bytes dari file yang diwakili oleh objek File, bila berupa direktori akan mengembalikan nilai 0
lastModified() Mengembalikan nilai long yang mewakili waktu terakhir objek File terakhir kali dimodifikasi.
Penggunaan class File dan method-methodnya dapat dilihat pada program cekDirektori.java

//Nama File cekDirektori.java
import java.io.*;
import java.util.Date;

public class cekDirektori{

public static void main(String args[])
{
System.out.println("TESTING DIREKTORI DAN ISI DIREKTORI");

String dirnya="D:\\Lamaran_Kerja\\";

File direktori = new File (dirnya);
System.out.println(direktori+(direktori.isDirectory()?" adalah ": " bukan") + " direktori");
System.out.println("NAMA DIREKTORI: "+direktori.getName());
System.out.println("PATH DIREKTORI: "+direktori.getPath());

File[] isidirektori = direktori.listFiles();

if (isidirektori!=null)
{
System.out.println("Jumlah isi direktori adalah "+isidirektori.length);
System.out.println("ITEM dalam direktori:");

for (int i=0 ; i {
System.out.println(isidirektori[i]+"adalah " + (isidirektori[i].isDirectory( ? " direktori ":" file ")+
"\nterakhir dimodifikasi "+
new Date(isidirektori[i].lastModified()));
}
}
else
{
System.out.println("ISI DIREKTORI KOSONG");
}
String filenya="C:\\My Documents\\JAVA\\cekDirektori.java";
File fileku = new File (filenya);
System.out.println("\nCek eksistensi file :"+filenya);
System.out.println(fileku+(fileku.exists()?"benar":"tidak")+ "ada");

}
}

 Menuliskan String ke File Teks

Seperti telah disinggung diatas, bahwa terdapat dua macam stream, yaitu binary dan karakter stream dan yang akan digunakan untuk menulis karakter ke file teks adalah karakter stream.

Perbedaan utama apabila kita menggunakan karakter stream dan binary stream adalah tidak adanya konversi dari data output yang akan kita tuliskan menjadi karakter sesuai coding karakter yang digunakan oleh komputer kita.

 FileWriter

FileWriter merupakan subclass dari OutputStreamWriter dimana class OutputStreamWriter adalah subclass dari class abstrak Writer.

Class Writer memiliki Konstruktor yang umum seperti berikut :
• FileWriter(File objekfile);
• FilWriter(String pathkefile);
• FileWriter(String pathkefile, Boolean append);
Contoh penggunaan :
File inifile = (pathdirektori, namafile);
FileWriter outputnya = new FileWriter(inifile);



 PrintWriter

PrintWriter merupakan subclass dari class abstrak Writer yang digunakan melakukan output dari berbagai macam tipe data yang kemudian dikonversi ke bentuk karakter.
Penggunaan PrintWriter dengan FileWriter :
PrintWriter fileoutput = new PrintWriter (
New FileWriter(File objekfile);
);

Contoh penggunaan lebih lengkap dapat dilihat pada listing dibawah :

//Nama File : TulisFile.java
import java.io.*;

public class TulisFile{
public static void main(String args[])
{
boolean kondisi=false;
try
{
String direktori="C:\\ C:\My Documents\\JAVA";
String namafile="fileteks.txt";
File fileteks = new File(direktori,namafile);
if (fileteks.exists())
{
kondisi=true;
}
else
{
fileteks.createNewFile();
}

PrintWriter fileoutput = new PrintWriter (
new FileWriter (fileteks.getPath(),kondisi));

String[] identitas={"Iman Rochdilianto\n","Web Developer\n",
"PT Kreasi Riset Informatika Sistem SOlusi\n"};

for (int i=0 ; i {
fileoutput.println(identitas[i]);
}
fileoutput.close();
}
catch (IOException e)
{
System.out.println("ERROR Menulis ke file"+e);
}
}
}

 Membaca File Teks

Kali ini kita akan mempelajari bagaimana membaca karakter dari file teks.
Adapun class dasar yang dipakai adalah class Reader yang memiliki beberapa subclass yang dapat dipakai untuk membaca karakter. Yang akan diberikan contoh adalah penggunaan class FileReader.
- FileReader
Class yang dapat dipakai untuk membaca file teks adalah FileReader.
Konstruktor FileReader adalah :
- FileReader(File objekfile);
- FileReader(String pathkefile);
Method yang digunakan :
- read(char[] array);
- read(char[] array, int offset, int length);
Sebenarnya class ini memiliki method lain, tetapi kali ini kita akan membahas penggunaan method read(char[] array) saja. Lebih jelas lihat listing dibawah.
// Nama File : BacaFile.java
import java.io.*;

public class BacaFile{
public static void main(String args[])
{
System.out.println("Membaca file teks");
try
{
String direktori="C:\\My Documents\\JAVA";
String namafile="fileteks.txt";
File fileteks = new File(direktori,namafile);

BufferedReader baca =
new BufferedReader(new FileReader(fileteks));
int c;

StringBuffer temp=new StringBuffer();
String tempstring="";

While (true)
{
tempstring = baca.readLine();

if (tempstring !=null)
temp.append(tempstring+"\n");
else
break;
}

System.out.print(temp);
}
catch (IOException e)
{
System.out.println("ERROR membaca file"+e);
}

}
}
















1. Sebutkan sifat-sifat OOP serta tuliskan contohnya dalam kehidupan sehari-hari !
2. Tuliskan bentuk umum dari sebuah class di Java !
3. Apa yang dimaksud dengan method serta instance?
4. Sebutkan tipe data yang ada dijelaskan serta panjang(range) dari tipe data tersebut!
5. Sebutkan jenis perulangan yang terdapat dalam bahasa java ?
6. Apakah perbedaan perulangan menggunakan while dengan do-while ?
7. Bagaimana deklarasi array dalam bahasa java ?
8. Buat program untuk membuat matrik 2 dimensi dengan array ?
9. Buat program untuk mengabungkan 2 buah string ?
10. Buat bentuk umum dari while,do-while dan for dan juga berikan masing-masing contohnya.
11. Apa yang kamu ketahui tentang method dalam bahasa java, jelaskan ?
12. Bagaimana cara menangani kesalahan dalam bahasa java, berikan contohnya ?
13. Apa yang dimaksud dengan kostruktur , dan bagaimana cara menggunakannya dalam bahasa java.
14. Jelaskan definisi stream dan file.
15. Sebutkan class-class yang terdapat di stream dan file disertai dengan bentuk umumnya
16. Sebutkan macam-macam operasi file serta apa perbedaan dari operasi file tersebut.
17. Buatlah sebuah superclass yang bernama kendaraan, dimana kendaraan mempunyai : Roda , kemudi (stang), sadel, dan mempunyai action : Jalankan, rem, Buatlah subclass motor yang inherit superclass kendaraan, dengan atribute jumlahroda = 2 dan mempunyai method tambahan jumping. Buatlah subclass mobil yang inherit superclass kendaraan, dengan attribute jumlahroda = 4 dan mempunyai methode tambahan mundur.
18. Bentuklah dalam OOP yang merepresentasikan permasalahan berikut ini : Misal iketahui berbagai jenis pohon. Setiap pohon mempunyai akar, daun, batang. setiap pohon dapat tumbuh, berbunga . Pohon mangga merupakan salah satu jenis pohon yang dapat berbuah mangga. Pohon Jambu merupakan salah satu jenis pohon yang dapat berbuah jambu.




1. Cetak program – program yang dikerjakan pada saat praktikum.
2. Buat logika program untuk masing – masing program.