Tampilkan postingan dengan label pemrograman. Tampilkan semua postingan
Tampilkan postingan dengan label pemrograman. Tampilkan semua postingan
Belajar assembler

Belajar assembler

 Register
Untuk mempelajari bahasa assembler, anda harus menghafalkan semua register dan mengerti apa kegunaannya, karena anda akan selalu berhubungan dengan register – register tersebut. Register adalah sebagian kecil memory komputer yang dipakai untuk tempat penampungan data dengan ketentuan bahwa data yang terdapat dalam register dapat diproses dalam berbagai operasi dengan melihat berapa besar kemampuan menampung register tersebut.
Secara umum register dapat dibagi dalam lima golongan yaitu :
1. General Purpose Register
1.1 Register AX
Register AX merupakan register aritmatika karena register ini selalu dipakai dalam operasi pertambahan,pengurangan,perkalian dan pembagian
1.2 Register BX
Register BX merupakan salah satu dari dua register base addressing mode, yang dapat mengambil atau menulis langsung dari/ke memory
1.3 Register CX
Register CX merupakan suatu counter untuk meletakan jumlah lompatan pada loop-loop yang anda lakukan
1.4 Register DX
Register DX merupakan register yang mempunyai tugas:
• Membantu AX dalamoperasi perkalian pembagian
• DX meruapakan register offset dari DS
• Menunjukkan no. port pada operasi port.
2. Segment Register
2.1 Register CS : Code Segment Register
2.2 Register DS : Data Segment Register
2.3 Register SS : Stack Segment Register
2.4 Register ES : Extra Segment Register
3. Pointer Register
3.1 IP : Instruction Pointer Register
Instruction Pointer berfungsi sebagai tempat menyimpan alamat dari kode yang akan dieksekusi selanjutnya oleh mikroprosesor. Dalam kerjanya IP bekerja dengan code segmen (CS) untuk menghasilkan alamat relative dari suatu instruksi.
3.2 SP : Stack Pointer Register
3.3 BP: Base Pointer Register
4. Index Register
4.1 SI : Source Index Register
4.2 DI : Destination Index Register
5. Flag Register

 Program Debug
Untuk menjalankan utility DEBUG, anda cukup mengetik DEBUG dari prompt. Sedang bila ingin membuka sebuah file langsung untuk dioperasikan DEBUG, anda cukup menambahkan nama file itu sebagai command tail. Contohnya :
A> DEBUG AGUS.COM
1. Perintah Debug
a. Q (Quit)
Bila anda mengetikan huruf Q dan menekan enter, maka akan segera kembali ke dos prompt.
b. H (Hexa)
Perintah Hexa adalah perintah yang melaksanakan penjumlahan dan pengurangan terhadap dua bilangan Hexa. Bentuk umum instruksi adalah H operand1,operand2
c. R (Register)
Perintah R digunakan untuk mengetahui isi masing-masing register pada saat mengetik R dan menekan enter
d. A (Assembler)
Perintah Assembler berguna untuk tempat menulis program Assembler.
-A100
0FD8:100
e. N (Name)

Perintah ini digunakan untuk memberi nama suatu program assembler
f. RCX (Register CX)
Perintah ini digunakan untuk mengetahui dan memperbaruhi isi register CX yang merupakan tempat penampungan panjang program yang sedan aktif
g. RIP (Register IP)
Perintah ini digunakan untuk memberitahu komputer untuk memulai memproses program dari titik tertentu.
h. W (Write)
Perintah ini digunakan untuk menulis/ menyimpan program
i. G (Go)
Perintah ini digunakan untuk menjalankan suatu program
j. T (Trace)
Perintah ini digunakan untuk memproses sebaris program saja.
k. U (Unassemble)
Perintah ini digunakan untuk melihat listing program yang sedang aktif.

2. Perintah Dasar Assembler
a. MOV
Perintah MOV adalah perintah untuk mengisi, memindahkan, memperbaruhi isi suatu register, variable ataupun lokasi memory
Adapun tata penulisan perintah MOV adalah :
MOV [operand A], [Operand B]
Contoh :
MOV AH,02
Operand A adalah Register AH
Operand B adalah bilangan 02
Hal yang dilakukan oleh komputer untuk perintah diatas adalah memasukan 02 ke register AH.
b. INT (Interrupt)
Bila anda pernah belajar BASIC, maka pasti anda tidak asing lagi dengan perintah GOSUB. Perintah INT juga mempunyai cara kerja yang sama dengan GOSUB, hanya saja subroutine yang dipanggil telah disediakan oleh memory komputer yang terdiri 2 jenis yaitu :

- Bios Interrupt ( interput yang disediakan oleh BIOS (INT 0 – INT 1F))
- Dos Interrupt ( Interrupt yang disediakan oleh DOS (INT 1F – keatas))
 Contoh Program Sederhana
- A100
0FD8:0100 MOV AH,02
0FD8:0102 MOV DL,41
0FD8:0104 INT 21
0FD8:0106 INT 20
0FD8:0108
- Jika sudah Ketikan perintah G ( Go ) maka akan tampil huruf A
- Cara menyimpan program :
- RIP
IP 102
: 100 - diisi
- RCX
CX 0000
: 8 --> diisi ( panjangnya program)
- N Coba.Com memberi nama program
- W Menulis program

LOOPING DAN STACK
 Looping
Dalam Assembler perintah untuk melakukan perulangan digunakan perintah LOOP. Yang mempunyai tata penulisan sebagai berikut :
Loop [lokasi memory]
Adapun syarat lain untuk operasi Loop adalah harus mengisi register CX untuk setiap kali pengulangan. Coba anda lihat contoh program looping dibawah ini :

MOV CX,05
:0103 MOV AH,02
MOV DL,41
INT 21
LOOP 0103
INT 20

Jika program diatas dijalankan maka akan terjadi perulangan sebanyak lima kali. Hal ini karena isi dari register CX adalah 5 dan program akan looping ke memory segment 0103 yaitu tempat yang berisikan perintah MOV AH,02

Untuk setiap kali looping komputer akan mengurangi isi register CX satu sampai dengan CX menunjukan nol dan komputer akan melanjutkan ke baris berikutnya dibawah loop. Jika anda meletakan Loop ke tempat MOV CX,05 maka hasil running program tidak akan berhenti.
 Stack
Secara umum stack adalah tempat peletakan sementara isi register. Stack pada file.COM terdapat di akhir segment dan ketika pertama kali dijalankan program penunjuk stack (SP) akan langsung ke byte terakhir dari segment.
Operasi Stack mempunyai dua fungsi yaitu fungsi untuk memasukan isi suatu register/variable ke dalam stack dan mengeluarkan isi register / variable dari Stack. Adapun perintah untuk memasukan isi register pada stack adalah perintah PUSH dengan tata penulisannya adalah :
PUSH [operand 16 bit]
Perintah lain untuk operasi stack adalah perintah yang berguna untuk mengeluarkan isi dari register/variable dari stack digunakan perintah POP dengan tata penulisannya adalah :
POP [operand 16 bit]
Untuk lebih jelasnya bisa anda perhatika program dibawah ini :
MOV CX,009 ;9 baris
MOV DL,31 ;angka 1
MOV AH,02
INT 21
PUSH DX
PUSH CX
MOV CX,001A ;26 kolom
MOV DL,61 ;cetak huruf a
INT 21
INC DL ; a jadi b
LOOP 0110
MOV DL,0D ;
INT 21
MOV DL,0A
INT 21
POP CX
POP DX
INC DL
LOOP 0107
INT 20

Pada baris kelima dan keenam terlihat bahwa anda melakukan operasi penyimpanan register ke stack dan pada baris keenambelas anda mengambil isi stack menggunakan perintah POP. Bila anda menggambarkan stack pada akhir segment. Anda dapat menunjukan bahwa ketika anda melakukan push terhadap register DX yang seandainya berisikan bilanagan 0021 H maka pada stack akan terlihat :
0000
0100

Penunjuk(SP)
FFFD
FFFF

Pada saat perintah PUSH CX dengan register CX berisikan angka 0009, maka akan terlihat di Stack :

0000
0100

Penunjuk(SP) FFFB
FFFD
FFFF

Pada saat perintah POP CX, keadaan stack akan kembali lagi pada saat tampilan stack yang pertama. Dari pembayangan diatas dapat disimpulkan bahwa pada operasi stack yang pertama masuk ke stack adalah yang terakhir keluar dari stack dan yang terakhir masuk ke stack, maka pertama yang keluar dari stack ( LIFO).
PENGENALAN TASM DAN OPERASI ARITMATIKA

 Program Tanpa Debug
Selain kita bisa menggunakan DEBUG.COM dalam membuat program assembler kita juga bisa membuat program assembler tanpa menggunakan DEBUG.COM, dimana untuk keperluan itu diperlukan beberapa program yaitu :
- Text Editor
Text editor ini digunakan untuk membuat/menulis program assembler. Adapun contoh dari editor ini adalah SideKick , Notepad, Norton Editor, dll.
- Compiler
Yang dimaksud dengan Compiler adalah suatu program yang menterjemahkan program assembler dalam ASCII file ke bentuk file object, dalam assembler kita gunakan TASM. Contohnya :
TASM CETAK.ASM CETAK.OBJ
- Linker
Yang dimaksud dengan Linker adalah suatu program yang menterjemahkan program object ke bentuk file eksekusi (berextension .COM atau . EXE), dalam assembler kita gunakan TLINK. Contohnya :
TLINK /T CETAK
 Struktur Program Dalam TASM

Secara umum struktur penulisan suatu segment dapat dilukiskan sebagai berikut :
[nama segment] segment
ASSUME CS:[segment] DS:[segment] SS:[segment] ES:[segment]
Org 100H
[label] :
-
Program Assemblernya
-
[nama segment] ends
End [label]
Contohnya :
.MODEL SMALL
.CODE
ORG 100H
Start : Mov CX,05
Mov DL,41H
Label1 : Mov Ah,02H
Int 21H
Inc DL
Loop label1
Int 20H
End Start
Setelah program diatas dicompile dengan menggunakan TASM dan dilinker menggunkan TLINK /T , kemudian untuk menjalankan programnya kita tinggal mengetikan nama filenya saja. Contohnya : CETAK
 Operasi Aritmatika
Dalam Assembler operasi aritmatika yang dibahas adalah operasi pertambahan , pengurangan, perkalian dan pembagian.
- Operasi Pertambahan
• Pertambahan dengan 1
Adapun perintah untuk pertambahan dengan 1 dalam assemblera adalah INC, dengan tata penulisan perintah INC adalah :
INC [Register/Variable]
Contoh programnya :
MOV CX,05
MOV DL,41
# MOV AH,02
INT 21
INC DL
LOOP #
INT 20
• Pertambahan Selain 1
Perintah yang digunakan untk pertambahan selain 1 dalam assembler yaitu ADD, dengan tata penulisan perintah ADD adalah:
ADD [operand1],[operand2]


- Operasi Pengurangan
• Pengurangan Dengan Satu
Perintah yang digunakan untuk penguarangan satu ini adalah perintah DEC, jika kita tulis biasa sama dengan A = A – 1. Tata penulisan dari perintah DEC adalah :
DEC [Variable/Register]
Contoh Program :
MOV CX,05
MOV DL,5A
# MOV AH,02
INT 21
DEC DL
LOOP #
INT 20
• Pengurangan Selain Satu
Bila dalam pertambahan kita gunakan ADD maka dalam pengurangan selain satu digunakan SUB dengan tata penulisannya adalah :
SUB [operand1],[operand2]
- Perkalian
Operasi perkalian dalam assembler dapat menggunakan perintah MUL yang berarti perkalian. Adapun tata penulisannya adalah :
MUL [Register]
Bila memerintahkan dengan perintah MUL, maka yang dilakukan komputer adalah :
• Mengambil nilai register terlampir pada perintah MUL. Contoh MUL BL, maka isi register BL yang diambil
• Kemudian komputer mengambil isi register AL dan dikalikan dengan isi register BL
• Hasilnya dapat dilihat pada register AX. Langkah diatas adalah oprasi 8 bit, sedang untuk operasi 16 bit yang dilakukan komputer adalah :
• Mengambil nilai register terlampir yang besarnya 16 bit. Contohnya : MUL BX
• Kemudian komputer mengambil isi register AX dan dikalikan dengan isi register BX
• Hasilnya dapat dilihat pada register OX
Contoh programnya :
MOV AH,02
MOV BH,32
MOV AL,01
MUL BH
MOV DL,AL
INT 21
INY 20
- Pembagian
Seperti juga perkalian, pembagian pun membedakan cara kerja pembagian dengan 8 bit dan 16 bit. Adapun cara kerja operasi pembagian adalah :
- Pembagian 8 Bit - Pembagian 16 Bit
Tata penulisan : Tata Penulisan:
DIV [Register 8 bit] DIV [Register 16 Bit]

Contoh : Contoh:
DIV BL DIV BX
Dibagi dengan AX Dibagi dengan
DX:AX
Hasil dilihat di AL Hasil dilihat di DX
Sisa dilihat di AH Sisa dilihat di AX

Contoh Programnya :
MOV BL,0A
MOV AX,0101
DIV BL
MOV AH,02
MOV DL,AL
INT 21
INT 20

MENCETAK STRING DAN MENGINPUT STRING
 Mencetak String
Sebelum kita mencetak sebuah string terlebih dahulu kita harus mendefinisikan variablenya. Variabel dalam bahasa assembler dapat dibagi menjadi 2 jenis variabel, yaitu :
- Variabel yang dapat dimodifikasi isinya.
Variabel ini adalah variabel yang memakan tempat pada memory, besar memory yang dipakai variabel ini ditentukan oleh besarnya variabel tersebut. Adapun besaran-besaran variabel tersebut adalah :
• DB (Define Byte), mendefinisikan variabel per byte
• DW (Define Word), mendefinisikan variabel per wprd
• DD (Define Double Word), mendefinisikan variabel per 2 word

Tata penulisan variabel jenis ini adalah dengan :
Label [DB/DW/DD] [Isi Variabel]
Contohnya :
Satu db ‘Ini Adalah Sebuah Variabel $’
- Variabel yang tidak dapat dimodifikasi isinya.
Jenis variabel ini tidak akan memakan memory pada komputer, jenis variabel ini hanya dapat dipakai dalam assembler menggunakan compiler. Untuk mendefinisikan jenis variabel ini anda cukup menggantikan besaran pada variabel yang dapat dimodifikasikan isinya menjadi kata equ.
Pada bagian ini akan dibahas bagaimana cara mencetak sebuah kalimat ke layar menggunakan Int 21 Hexa service number 09h. Adapun syarat-syarat untuk menggunakan Int 21 H service 09H ini adalah :
- Masukan Service number Interupt ke register AH.
- Masukan segment dari variabel tempat menampung kata yang akan dicetak ke DS dan offset-nya ke DX dan kata-kata yang dicetak tersebut harus diakhiri dengan tanda dollar ‘$’.
Contoh Programnya :
.MODEL SMALL
.CODE
ORG 100H
START : JMP MULAI
;Disini data dimulai
KATA DB ‘TEST KATA-KATA’,13,10
DB ‘SATU $’
MULAI : MOV AH,09H
MOV DX,OFFSET KATA ; ATAU LEA DX,KATA
INT 21H
INT 20H
END START
 Input Satu Karakter
Untuk input 1 karakter dengan ECHO kita akan menggunakan Interrupt 21H dengan service number 01H. Adapun syarat-syarat menggunakan Interupt 21H service number 01H ini adalah :
- Pada saat sebelum dilakukan proses, register AH harus berisi service number dari interupt 21H yaitu 01H
- Selama proses, proses dapat dihentikan dengan menekan tombol control dan tombol break atau C secara bersamaan.
- Hasil input dari keyboard akan diletakan di register AL
Contoh Programnya :
.MODEL SMALL
.CODE
ORG 100H
START :JMP MULAI
TANYA DB ‘JAWAB SAJA PERTANYAAN INI : ‘,13,10
DB ‘MASUKAN SATU KARAKTER : $’,13,10
HASIL DB ‘KARAKTER ITU : $’
MULAI : MOV AH,09H
LEA DX,TANYA ;MENCETAK TANYA
INT 21H
MOV AH,01H ;SERVICE UNTUK INPUT 1 CHAR
INT 21H
MOV AH,09H
LEA DX,HASIL ;MENCETAK HASIL
INT 21H
MOV AH,02H
MOV DL,AL ;CETAK HASIL INPUT
INT 21H
INT 20H
END START

 Input Lebih Dari Satu Karakter (String)
Untuk melakukan input lebih dari satu karakter, digunakan Int 21H dengan service number 0AH yang mempunyai syarat proses sebagai berikut :
- Register Ah harus berisikan service number dari interupt 21H tersebut 0AH
- Harus mendefinisikan sebuah variabel tempat menampung masukan dengan tata penulisan variabel sebagai berikut :
[label] db nn,mm,nn dup(?)
dengan aturan tata penulisan tersebut adalah :
 nn adalah jumlah terbanyak karakter yang dapat dimasukan + 1, guna + 1 adalah untuk tempat 0D Hexa
 mm adalah indikator dari beberapa banyak karakter yang dimasukan . mm ini secara otomatis oleh komputer setiap kali kita melakukan input, sehingga pada saat kita mendefinisikan variabel tempat menampung mm ini dapat dikosongkan dengan menggunakan tanda tanya (?) yang artinya satu byte memory yang tidak diisi. Jumlah maksimum mm adalah nn – 1.
- DS:DX harus berisi segment dan offset awal variabel diatas.
Contoh Programnya :
.MODEL SMALL
.CODE
ORG 100H


START : JMP MULAI
TANYA DB ‘MASUKAN STRING : $’,13,10
TAMPUNG DB 11,?,11 DUP(?)
JAWAB DB ‘STRING TADI ADALAH : $’
MULAI : MOV AH,09H
MOV DX,OFFSET TANYA ;CETAK TANYA
INT 21H
MOV AH,0AH ;INPUT STRING
MOV DX,OFFSET TAMPUNG
PUSH DX ; ISI DX KE STACK
INT 21H
MOV BX,OFFSET TAMPUNG
INC BX ; BX = BX + 1
MOV DL,[BX] ; ISI DX DENGAN [BX]
XOR DH,DH ;DH = 0
INC BX
ADD BX,DX
MOV DL,’$’
MOV [BX],DL ;MASUKAN DL KE [BX]
MOV DX,OFFSET JAWAB ;CETAK JAWAB
MOV AH,09H
INT 21H
POP DX ;AMBIL DX DARI STACK
INC DX
INC DX
MOV AH,09H
INT 21H
INT 20H
END START

String yang kita input tadi dengan nama variable TAMPUNG akan dimasukan kedalam register BX, kemudian BX = BX + 1. Kemudian setelah mendapat indikator tersebut, taruh di register DL dan mengosongkan register DH (XOR DH,DH). Gunakan tampilan dibawah ini untuk memperjelas posisi BX terhadap variable tampung.

TAMPUNG db 11,I,?,?,?,?,?,?,?,?,?,?,?
Catatan : I = Indikator

Tambahkan satu supaya menunjuk kepada awal kata yang anda masukan dengan perintah INC BX.

TAMPUNG db 11,I,?,?,?,?,?,?,?,?,?,?,?
Catatan : I = Indikator

Setelah itu tambahkan BX dengan DX supaya menunjuk kepada huruf terakhir masukan. Ganti )D H dengan ‘$’ supaya bisa dicetak menggunakan Int 21H dengan 09 H. Kemudian string input yang kita masukan bisa dicetak.
KONDISI / LOMPAT
 Lompatan Tak Bersyarat
Secara fisik anda hanya dapat melihat bahwa lompatan tak bersyarat terdiri dari satu macam, tapi bila dianalisis jumlah byte yang dipakai untuk lompatan tak bersyarat dapat dikelompokan menjadi 2 macam yaitu :
- Lompatan Dekat (Near Jump)
- Lompatan Jauh (Far Jump)
Adapun secara fisik perintah lompat dapat ditulis sebagai berikut :
JMP [lokasi memory]
Contoh :
JMP 200
Perintah ini adalah untuk melakukan lompatan kearah lokasi memory segment:0200
 Perbandingan Lompatan Bersyarat
Untuk lompatan bersyarat, terdapat beberapa jenis lompatan yang kegunaanya dapat disesuaikan dengan keperluan yang dibutuhkan. Untuk perbandingan Operand dengan menggunakan perintah perbandingan (Compare). Adapun tata penulisan perintah perbandingan adalah :
CMP [operand1],[operand2]
Contohnya :
CMP AX,0102
Perintah ini digunakan untuk membandingkan AX dengan 0102
 Lompatan Bersyarat
- JE (Jump If Equal)
Perintah ini berlaku bila pada saat pembandingan kedua opearnd sama. Contohnya :
CMP AX,0102
JE 0102
- JNE (Jump If Not Equal)
Perintah ini berlaku bila pada saat perbandingan kedua operand tidak sama. Contohnya :
CMP AX,0102
JNE 0102
- JG (Jump If Greater Than)
Perintah ini berlaku bila pada saat perbandingan operand pertama menunjukan lebih besar dari operand pertama. Kebalikannya adalah JNG (Jump If Not Greater)
- JGE (Jump If Greater Or Equal)
Perintah ini berlaku bila pada saat perbandingan operand pertama menunjukan lebih besar atau sama dengan dari operand pertama. Kebalikannya adalah JNGE (Jump If Not Greater)

• Masih banyak lagi perintah-perintah lompat bersyarat ini, perintah-perintah diatas hanya sebagian kecil dari perintah-perintah lompat bersyarat.

PROCEDURE DAN MACRO

 Subroutine/Procedure
Bila anda mempunyai masalah anda harus menulis suatu perintah berulang-ulang, maka dengan operasi subroutine anda dapat menyingkat kerja yang ada diprogram tersebut hingga setelah program. Struktur dari subroutine/procedure bisa anda lihat dibawah ini :
[nama subroutine] PROC [NEAR/FAR]
Disini Letak Program Anda
RET
[nama subroutine] ENDP
Adapun maksud dari NEAR dan FAR adalah :
- NEAR
Berarti subroutine tersebut bersifat dekat atau subroutine itu hanya akan dipanggil paling jauh satu segment.
- FAR
Berarti subroutine ini dapat dioperasikan antar segment karena untuk memanggil subroutine dapat dilakukan lebih jauh dai 1 segment.
Untuk memanggil subroutine, digunakan perintah CALL yang dapat didefinisikan dengan :
CALL [nama subroutine]
Adapun yang dilakukan komputer ketika memproses CALL adalah :
- Memasukan alamat pemanggil ke Stack dengan besar 2 byte bila subroutine tersebut NEAR dan 4 byte bila subroutine tersebut FAR.
- Mencari alamat subrotine yang dipanggil dan siap melakukan perintah yang diperintahkan oleh subroutine.
Perintah RET berarti komputer akan mengembalikan penunjuk program (IP) ke program pemanggil. Adapun yang dilakukan komputer ketika menerima instruksi RET adalah :
- Mengambil alamat pemanggil dari STACK dengan besar 2 byte bila subroutine NEAR dan 4 byte bila subroutine FAR.
- Meloncat ke arah alamat tersebut.
Contoh Programnya :
.MODEL SMALL
.CODE
ORG 100H
START : JMP MULAI
KOLOM DB 00
BARIS DB 00
MULAI : CALL BERSIH
CALL POSISI
INT 20H
HAPUS PROC NEAR
MOV AH,06H
MOV CX,0000H
MOV AL,00H
MOV BH,07H
MOV DH,24
MOV DL,79
INT 10H
RET
CLS ENDP
POSISI PROC NEAR
MOV DH,BARIS
MOV DL,KOLOM
MOV AH,02H
MOV BH,00
INT 10H
RET
POSISI ENDP
END START



http://www.scribd.com/doc/43531427/Modul-Bahasa-Assembler

Sejarah Singkat Java

             Bahasa pemrograman Java pertama lahir dari The Green Project, yang berjalan selama 18 bulan, dari awal tahun 1991 hingga musim panas 1992. Proyek tersebut belum menggunakan versi yang dinamakan Oak. Proyek ini dimotori oleh Patrick Naughton, Mike Sheridan, James Gosling dan Bill Joy, beserta sembilan pemrogram lainnya dari Sun Microsystems. Salah satu hasil proyek ini adalah maskot Duke yang dibuat oleh Joe Palrang.
             Mereka ingin merancang bahasa komputer untuk perangkat consumer seperti cable TV box. Karena perangkat itu tidak mempunyai banyak memori, bahasa harus berukuran kecil dan menghasilkan kode yang liat, maka bahasa harus bebas dari arsitektur manapun. Proyek ini diberi nama kode ”Green”.
              Kebutuhan untuk fleksibilitas, kecil, sulit, dan kode yang netral terhadap platform mengantar tim mempelajari implementasi Pascal yang pernah dicoba. Niklaus Wirth, pencipta bahasa Pascal telah merancang bahasa portable yang menghasilkan kode antara untuk mesin hipotesis.
Karena orang-orang di proyek Green berbasis C++ bukan pascal maka kebanyakan sintaks di ambil dari C++, serta mengadopsi orientasi objek bukan procedural. Produk pertama proyek Green adalah “*7” (star seven), sebuah kendali jauh yang sangat cerdas.
            Awalnya bahasa yang diciptakan ini diberi nama oak, namun nama Oak ini tidak dipakai untuk versi release Java karena sebuah perangkat lunak sudah terdaftar dengan merek dagang tersebut, sehingga diambil nama penggantinya menjadi “Java”, nama Oak diambil dari pohon oak yang tumbuh di depan jendela ruangan kerja "bapak java", James Gosling. Sedangkan nama java diambil dari kopi murni yang digiling langsung dari biji (kopi tubruk) kesukaan Gosling, dan konon kopi ini berasal dari pulau jawa (java).

  • Java 2 Standar Edition (J2SE),
  • Java 2 Enterpise Edition (J2EE),
  • Java 2 Micro Edition (J2ME),

Python vs Ruby


PYTHON

Kelebihan dan Kekurangan Python

Kelebihan :

1.       Tidak ada tahapan kompilasi dan penyambungan (link) sehingga kecepatan perubahan pada masa pembuatan system aplikasi meningkat.
2.       Tidak ada deklarasi tipe sehingga program menjadi lebih sederhana, singkat, dan fleksible
3.       Manajemen memori otomatis yaitu kumpulan sampah memori sehingga dapat menghindari pencatatan kode
4.       Tipe data dan operasi tingkat tinggi yaitu kecepatan pembuatan system aplikasi menggunakan tipe objek yang telah ada
5.       Pemrograman berorientasi objek
6.       Pelekatan dan perluasan dalam C



 Aturan penulisan Python

Program-program yang ditulis dalam Python secara khas jauh lebih pendek dibandingkan
dengan program-program C atau C++, karena beberapa pertimbangan:
• tipe data tingkat tinggi digunakan untuk menyatakan operasi kompleks dalam suatu statemen
tunggal;
• pengelompokan statemen telah selesai dengan indentasi sebagai pengganti dari pengurungan
mulai dan akhiran;
• tidak ada deklarasi-deklarasi argumentasi atau variabel yang diperlukan

Perulangan Pada Python

Perintah perulangan di gunakan untuk mengulang pengeksekusian statemen-statemen hingga
berkali-kali sesuai dengan iterasi yang diinginkan. Dalam python, perintah untuk perulangan (loop)
adalah while dan for.

1. Perintah While
Perintah while pada python merupakan perintah yang paling umum digunakan untuk proses
iterasi. Konsep sederhana dari perintah while adalah ia akan mengulang mengeksekusi statemen dalam blok while selama nilai kondisinya benar. Dan ia akan keluar atau tidak melakukan eksekusi blok statemen jika nilai kondisinya salah.

Bentuk umum statemen while,
while (kondisi) :
statemen

Contoh penggunaan while :
contoh 1 : >>> while True :
... print "Tekan CTRL + C untuk Stop"
...

2. Perintah For
Perintah for dalam python mempunyai ciri khas tersendiri dibandingkan dengan bahasa
pemrograman lain. Tidak hanya mengulang bilangan-bilangan sebuah ekspresi aritmatik, atau
memberikan keleluasaan dalam mendefinisikan iterasi perulangan dan menghentikan perulangan pada saat kondisi tertentu. Dalam python, statemen for bekerja mengulang berbagai macam tipe data sekuensial seperti List, String, dan Tuple.

Bentuk umum perintah for,
for (variabel) in (objek) :
statemen
else:
statemen

Contoh penggunaan for :
Contoh 1 : >>> for i in [5, 4, 3, 2, 1]:
... print i,
...
5 4 3 2 1

3. Perintah Break, Continue dan Pass

Perintah Break
Perintah break digunakan untuk menghentikan jalannya proses iterasi pada statemen for
atau while. Statemen yang berada di bawah break tidak akan di eksekusi dan program akan keluar dari proses looping.

Contoh break : >>> x = 1
>>> while x < 5:
... if x == 3:
... break
... print x
... x = x+1
... else:
print "Loop sdh selesai dikrjkn"
...
1
2

Perintah Continue

Statemen continue menyebabkan alur program kembali ke perintah looping. Jadi jika
dalam sebuah perulangan terdapat statemen continue, maka program akan kembali ke perintah looping untuk iterasi selanjutnya.

Contoh continue : >>> n = 10
>>> while n:
... n = n - 1
... if n % 2 != 0:
... continue
... print n
...
8
6
4
2

Perintah Pass

Statemen pass mengakibatkan program tidak melakukan tindakan apa-apa. Perintah pass
biasanya digunakan untuk mengabaikan suatu blok statemen perulangan, pengkondisian, class, dan fungsi yang belum didefinisikan badan programnya agar tidak terjadi error ketika proses compilasi.

Contoh program pass : #program tidak akan melakukan
#proses looping
while True : pass

Perintah Percabangan pada Python

1. Percabangan

Pada umumnya dalam membuat program, selalu ada seleksi dimana diperlukan
pengecekan suatu kondisi untuk mengarahkan program agar berjalan sesuai keinginan. Pada
Python untuk melakukan suatu pengecekan kondisi, terdapat tiga macam statemen. Antara lain :
1. Perintah if
2. Perintah if – else
3. Perintah if – elif– else
4. Perintah If bersarang

1. Perintah If
Bentuk umum perintah if :
if (kondisi) :
statemen
Statemen if digunakan untuk melakukan penyeleksian dimana jika kondisi bernilai benar
maka progam akan mengeksekusi statemen dibawahnya. Dalam python, untuk penulisan
pengkondisian dan statemen di pisahkan oleh tanda titik dua ( : ).

Contohnya,
>>> nama = "python"
>>> if nama == "python" :
... print "Hello " + nama
...
Hello python

Untuk setiap penulisan perintah if setelah penentuan kondisi maka dilanjutkan dengan
penulisan tanda titik dua ( : ). Tanda titik dua ini berarti jika kondisi bernilai benar maka
statemen-statemen setelah tanda titik dua akan di jalankan.

2. Perintah If – Else

Statemen if – else digunakan untuk melakukan penyeleksian kondisi dimana jika kondisi
bernilai benar maka program akan mengeksekusi statemen 1. Namun, jika nilai kondisi bernilai salah maka statemen 2 yang akan dieksekusi.

Bentuk umum perintah if – else :
if ( kondisi ) :
statemen 1
else :
statemen 2

Contoh Program :
>>> kunci = "python"
>>> password = raw_input("Masukkan Password : ")
Masukkan Password : saya
>>> if password == kunci:
... print "Password Benar"
... else:
... print "Password Salah"
...
Password Salah

3. Perintah If – Elif –Else

Statemen if – else - elif digunakan untuk melakukan penyeleksian kondisi dimana kondisi
yang diberikan lebih dari 1 kondisi atau memiliki beberapa kondisi. Jika kondisi pertama bernilai benar maka lakukan seleksi kondisi ke-dua dan seterusnya.

Bentuk umum perntah if – else – elif :
if ( kondisi 1 ) :
statemen
elif ( kondisi 2 ) :
statemen
else:
statemen


OOP Pada Python
Evolusi pemrograman telah beralih dari pengeksekusian instruksi langkah-demi-langkah menuju kepada pendekatan blok program yang lebih terorganisir, di mana blok kode tersebut dapat dibungkus menjadi subrutin dan fungsi yang  telah ditetapkan.

Fungsi pada pyhon
Fungsi (Function) adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai
sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian
dari pekerjaan program utama.
Scope variabel atau cakupan variabel merupakan suatu keadaan dimana pendeklarasian
sebuah variabel di tentukan. Dalam scope variabel dikenal dua istilah yaitu local dan global .
Variabel disebut local ketika variabel tersebut didefinisikan didalam sebuah fungsi (def). Artinya,
variabel tersebut hanya dapat di gunakan dalam cakupan fungsi tersebut saja. Dan jika sebuah
variabel didefinisikan diluar fungsi maka variabel tersebut bersifat global. Artinya, variabel tersebut
dapat digunakan oleh fungsi lain atau pun program utamanya.

Selain statemen def, Python juga menyediakan suatu bentuk ekspresi yang menghasilkan
objek fungsi. Karena kesamaannya dengan tools dalam bahasa Lisp, ini disebut lambda .Seperti def,
ekspresi ini menciptakan sebuah fungsi yang akan dipanggil nanti, tapi mengembalikan fungsi dan
bukan untuk menetapkan nama. Inilah sebabnya mengapa kadang-kadang lambda dikenal sebagai
anonim (yakni, tidak disebutkan namanya) fungsi. Dalam prakteknya, mereka sering digunakan
sebagai cara untuk inline definisi fungsi, atau untuk menunda pelaksanaan sepotong kode.

Fungsi Rekursif merupakan suatu fungsi yang memanggil dirinya sendiri. Artinya, fungsi
tersebut dipanggil di dalam tubuh fungsi itu sendiri. Tujuan di lakukan rekursif adalah untuk
menyederhanakan penulisan program dan menggantikan bentuk iterasi. Dengan rekursi, program
akan lebih mudah dilihat.
RUBY

Percabangan dan Perulangan

Percabangan

Dalam pemrograman, kita tentunya mengenal istilah seleksi dan perulangan. Pada umumnya dalam membuat program, selalu ada seleksi dimana diperlukan pengecekan suatu kondisi untuk mengarahkan program agar berjalan sesuai keinginan. Pada Ruby untuk melakukan suatu pengecekan kondisi, terdapat tiga macam statemen. Antara lain :
- Perintah if
- Perintah if – else
- Perintah if – else – elsif

  1. Perintah if
                Statemen if  digunakan untuk melakukan penyeleksian dimana jika kondisi bernilai benar maka progam akan mengeksekusi statemen dibawahnya. Dalam ruby, setelah penulisan statement di akhiri dengan end.
               
                Bentuk umum perintah if :
                                                                if kondisi
                                                                                statemen
                                                                end

B.      Perintah if-else
                Statemen if – else digunakan untuk melakukan penyeleksian kondisi dimana jika kondisi bernilai benar maka program akan mengeksekusi statemen 1. Namun, jika nilai kondisi bernilai salah maka statemen 2 yang akan dieksekusi.               
                Bentuk umum perintah if :
                                                                if kondisi
                                                                                statemen1
                                                                else
                                                                                statemen2
                                                                end
Perulangan

Perintah perulangan di gunakan untuk mengulang pengeksekusian statemen-statemen hingga berkali-kali sesuai dengan iterasi yang diinginkan. Dalam Ruby, perintah untuk perulangan (loop) adalah times, while dan for.

A.      Times

Perintah times digunakan untuk perulangan yang sangat sederhana. Hanya dengan bentuk umum seperti di bawah ini kita bisa langsung mendapatkan output berulang.
                Bentuk umumnya adalah :
                                                                Jumlah_Perulangan.times do
                                                                                statemen                                           
                                                                end
B.      While
C.       
                Perintah while pada Ruby merupakan perintah yang paling umum digunakan untuk proses perulangan. Konsep sederhana dari perintah while adalah statement yang terdapat di dalam while akan diulang pengeksekusiannya selama nilai kondisinya benar. Dan ia akan keluar atau tidak melakukan eksekusi blok statemen jika nilai kondisinya salah.

Bentuk umum statemen while,
                                                                while kondisi
                                                                                statemen
                                                                end

D.      Perintah For
                Perintah for dalam Ruby sama seperti bahasa pemrograman lainnya. Pada perulangan for ini
lebih spesifik dari pada perintah while. Kita dapat menentukan range (batasan) pada perulangan ini.
               
Bentuk umum statemen for,
                                                                For variable in range
                                                                                statemen
                                                                end


persamaan Ruby dan Python

·         Ada Ruby Interaktif (dinamakan irb).
·         Anda bisa membaca dokumentasi di command line (dengan ri, setara dengan pydoc di Python).
·         Tidak ada karakter khusus untuk akhir baris (newline biasa atau biasa kita sebut “enter”).
·         Isi string bisa dipisah ke banyak baris seperti string triple-quoted di Python. Di Ruby hal ini tidak membutuhkan sintaks khusus, cukup menggunakan petik tunggal atau petik ganda seperti biasanya, tapi Anda juga bisa menggunakan heredocdan sintaks lain (misalnya %q{ halo }) jika Anda suka.
·         Buka kurung dan tutup kurung siku ([]) untuk list, buka kurung dan tutup kurung kurawal ({}) untuk hash (istilah Ruby untuk dict.)
·         Array mempunyai fungsionalitas yang sama. Menambahkan array menghasilkan array gabungan. Memasukkan array ke dalam array lain menghasilkan array bersarang atau nested array: a3 = [ a1, a2 ]
·         Obyek bersifat dinamis dan strongly typed.
·         Semua adalah obyek, dan variabel hanya merupakan referenceke obyek.
·         Meskipun keyword  yang digunakan berbeda (Ruby menggunakan raise dan rescue), fitur exception setara dengan Python.
Perbedaan Ruby dan Python

  • String dapat diubah isinya (mutable.)
  • Anda dapat membuat konstanta (variabel yang nilainya tidak akan diubah).
  • Ada aturan penamaan (misalnya: nama kelas diawali dengan huruf kapital, nama variabel lokal diawali dengan huruf kecil).
  • Hanya ada satu jenis tipe kontainer yang berisi daftar data, yaitu Array. Array bersifat mutable yaitu dapat diubah-ubah.
  • Interpolasi string didukung menggunakan sintaks petik ganda. Interpolasi yang didukung adalah escape sequence (misalnya \tuntuk tab) dan substitusi ekspresi: "Selamat Datang, #{nama}!"akan menghasilkan string yang juga disisipkan isi variabel nama. Di Ruby, string berpetik tunggal (misalnya: 'halo semua') berfungsi persis seperti raw string di Python (tanpa interpolasi.)
  • Tidak ada kelas “new style” dan “old style”. Cuma ada satu macam kelas.
  • Anda tidak akan pernah langsung mengakses atribut. Di Ruby, semua menggunakan pemanggilan metode. Cara praktisnya adalah dengan menggunakan attr_reader, attr_writer, maupunattr_accessor.
  • Buka dan tutup kurung untuk pemanggilan metode biasanya dihilangkan (opsional / boleh dipakai boleh juga tidak).
  • Ada public, private, dan protected untuk mengatur akses keinstance member, yang biasanya di Python diakali menggunakan aturan penamaan _seperti_ __ini__.
  • Menggunakan “mixin”, bukan multiple inheritance.
  • Anda bisa “membuka” sebuah kelas kapan saja untuk mengubah atau menambahkan metode-metode ke kelas tersebut.
  • Ruby menggunakan true, false, dan nil, sedangkan Python menggunakan True dan False, dan None.
  • Kalau dites logika untuk true, hanya false dan nil yang dianggap bernilai false. Semua nilai lain dianggap true (termasuk 0, 0.0, "", dan []).
  • Menggunakan elsif sebagai ganti elif.
  • Menggunakan require sebagai ganti import. Cara penggunaannya sama.
  • Penggunaan komentar biasanya di atas yang ingin didokumentasikan (jadi bukan di bawahnya.) Biasa digunakan untuk menghasilkan dokumentasi secara otomatis dari source code.


Contoh Program Sederhana

Berikut ini adalah contoh program untuk menjumlahkan dua angka (diinputkan dari keyboard) di Python:

import sys
a = sys.stdin.readline()
b = sys.stdin.readline()
c = int(a) + int(b)
print c

Sedangkan jika menggunakan Ruby, kita dapat menuliskan sintaks-nya seperti ini :

a = gets.to_i
b = gets.to_i
c = a + b
puts c
▲
Top