Top Banner
Bahasa Pemrograman (IKP213.v.2) Pertemuan 2: Pendahuluan bagian ke-2, 17 September 2012
26
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ikp213-02-pendahuluan

Bahasa Pemrograman (IKP213.v.2)

Pertemuan 2: Pendahuluan bagian ke-2, 17 September 2012

Page 2: ikp213-02-pendahuluan

Bahasa Pemrograman

• Menyalakan tombol switch on dan off

• Hasil komputasi?

– Tape

– Printer

• Bahasa Mesin (Machine Language)

• Assembly Language (Bahasa Rakitan)

– Mnemonic dari bahasa mesin

– ADD, SUB, MULT, DIV, BRANCH, JUMP

Bahasa Pemrograman – IKP213 2

Page 3: ikp213-02-pendahuluan

Bahasa Pemrograman

• Bahasa pemrograman generasi 1 – Fortran

– COBOL

• Bahasa pemrograman lain – ADA, B, C, C++, BASIC, Pascal

– Visual Basic, Delphi, Qt, Tcl/Tk, Python, Ruby

– PHP

– Android

– Prolog, Haskell, LISP

Bahasa Pemrograman – IKP213 3

Page 4: ikp213-02-pendahuluan

Bahasa Pemrograman

• Kebutuhan untuk

– Bahasa yang lebih mudah

– Lebih bebas dari kesalahan

– Mendukung multitasking

– Berorientasi objek

– Dapat berjalan dalam lingkungan terdistribusi / web

– Dapat berjalan dalam lingkungan terbatas (mobile devices)

Bahasa Pemrograman – IKP213 4

Page 5: ikp213-02-pendahuluan

Kompilasi dan Interpretasi

• Program dan Proses

– Untuk bisa dieksekusi di CPU

– Program dimuat ke memori utama

– Program mendeskripsikan proses dinamis yang dijalankan CPU

• Bahasa sumber

– Ditulis dalam bahasa tingkat tinggi (Java, C, dkk)

– Syntax

Bahasa Pemrograman – IKP213 5

Page 6: ikp213-02-pendahuluan

Kompilasi dan Interpretasi

• Bahasa mesin

– Diterjemahkan dari bahasa sumber

– Rangkaian aksi yang dijalankan CPU

• Problem: Perbedaan arsitektur dan set instruksi

• Penerjemahan ke bahasa mesin

– Kompilasi atau Interpretasi

– Syntax analysis

– Syntax tree

– Object generation

Bahasa Pemrograman – IKP213 6

Page 7: ikp213-02-pendahuluan

Kompilasi dan Interpretasi

– Target machine language (tergantung arsitektur)

• Kompilasi

– Sebelum dieksekusi

– Tidak tergantung kepada kompilator

• Interpretasi

– Penerjemahan dan Eksekusi dilakukan bersamaan

– Selalu tergantung kepada interpreter

Bahasa Pemrograman – IKP213 7

Page 8: ikp213-02-pendahuluan

Kompilasi dan Interpretasi

• Tahapan

– Analisis leksikal

– Analisis sintaks

• Backus-Naur Form (John Backus)

– Analisis semantik

– Pembangkitan kode antara

– Optimasi kode

– Pembangkitan kode target

Bahasa Pemrograman – IKP213 8

Page 9: ikp213-02-pendahuluan

Kompilasi dan Interpretasi

• Write once, Run eveywhere

• Bytecode

• Virtual machines

– JVM

– Python interpreter

Bahasa Pemrograman – IKP213 9

Page 10: ikp213-02-pendahuluan

Komputabilitas

• Computer

– to Compute

• Apa bedanya dengan Calculator?

– to Calculate

• Compute F to C

• Compute reverse of "Hello"

• Compute gene transcription

Bahasa Pemrograman – IKP213 10

Page 11: ikp213-02-pendahuluan

Komputabilitas

• Definite Procedure

– Precise set of steps

– Finite

• Turing Machine

– Tape, infinitely long to the left and right

– Head, read from or write to the tape

– States

– Transitions

Bahasa Pemrograman – IKP213 11

Page 12: ikp213-02-pendahuluan

Turing Machine

• Determine whether there is an odd or even number of 1s in "011..11110"

– Write a single 0 on the tape if even,

– write a single 1 otherwise

• States: {start, even, odd}

• Transitions:

– If in start state, and read 0, Change to Even state, replace 0 with blank, move right

Bahasa Pemrograman – IKP213 12

Page 13: ikp213-02-pendahuluan

Komputabilitas

• Input Process Output

• Tabel basis data SQL Hasil kueri

• Dokumen Google Dokumen relevan hasil kueri

• Bilangan bulat Konversi Suhu Bilangan dalam satuan Celsius

• Komputasi: Langkah-langkah mendapatkan hasil fungsi dari input yang diberikan

Bahasa Pemrograman – IKP213 13

Page 14: ikp213-02-pendahuluan

Komputabilitas

• Komputasi; Program; Algoritma

• Contoh 1

– f: x x^2 + 2x

– Nilai masukan x diterapkan langkah-langkah

– t1 = x * x

– t2 = 2 * x

– t3 = t1 + t2

– f(x) = t3

Bahasa Pemrograman – IKP213 14

Page 15: ikp213-02-pendahuluan

Komputabilitas

• Contoh 2

– g: (x, y) i = 0; for j=0; j<y; j++: i = i+x; g(x,y) = i

– Menghitung perkalian x dan y

Bahasa Pemrograman – IKP213 15

Page 16: ikp213-02-pendahuluan

Komputabilitas

• Himpunan

– Kumpulan objek

– Objek matematika: A = {1, 2, 3}; B = {a, b, c}

• Relasi

– Pemetaan antara objek-objek dalam himpunan berbeda

– f: A B = { (1, b), (2, a), (3, c) }

– f(1) = ?

Bahasa Pemrograman – IKP213 16

Page 17: ikp213-02-pendahuluan

Komputabilitas

• Fungsi

– Bentuk khusus dari relasi

– Aturan (rule) yang memetakan elemen unik y di himpunan B dengan setiap elemen x di himpunan A

– f:A B

– f(x) = y

– Domain: Himpunan A

– Range (Codomain): Himpunan B

Bahasa Pemrograman – IKP213 17

Page 18: ikp213-02-pendahuluan

Komputabilitas

• f(x) = x^2 + 2x + 3

• f(x) = if x = 0 then 0 else x + f(x-2)

• Partial Functions – Tidak selalu terdefinisi untuk semua input

• Sebuah fungsi bisa dikomputasikan (computable) jika ada sebuah program yang mengkomputasikannya – Fungsi f:A B computable jika ada algoritma untuk

menghitungnya

– Diberikan x, algoritma tsb berhenti dengan hasil y

Bahasa Pemrograman – IKP213 18

Page 19: ikp213-02-pendahuluan

Komputabilitas

• Noncomputable Functions

– Ada fungsi yang tidak bisa dibuat algoritmanya

– Tidak ada output yang mungkin dihasilkan

– Running forever

Bahasa Pemrograman – IKP213 19

Page 20: ikp213-02-pendahuluan

Halting Problem

– Sebuah program P yang menerima masukan sebuah string x

– Luaran dari program P ditulis sebagai P(x)

– Tentukan apakah program P berhenti untuk masukan x

– Fungsi fHalt(P, x) = "stop" jika P berhenti; fHalt(P, x) = "tidak stop" jika P tidak berhenti

Bahasa Pemrograman – IKP213 20

Page 21: ikp213-02-pendahuluan

Universal Turing Machine

• Universal Turing Machine (U)

• Turing Machine dengan input mesin Turing yang lain (M)

• Mensimulasikan cara kerja mesin Turing yang menjadi input

– U(M)

Bahasa Pemrograman – IKP213 21

Page 22: ikp213-02-pendahuluan

Komputabilitas

• Fungsi fHalt tidak computable

• Definisikan sebuah fungsi U(M, x)

– U(M, x) = "stop" jika M(x) = "stop"

– U(M, x) = "tidak stop" jika M(x) = "tidak stop"

Bahasa Pemrograman – IKP213 22

Page 23: ikp213-02-pendahuluan

Komputabilitas

• Definisikan sebuah fungsi D(P)

– D(P) = "run forever" jika Q(P, P) = "stop"

– D(P) = "stop" jika Q(P, P) = "tidak stop"

– D(P) = "run forever" jika P(P) = "stop"

– D(P) = "stop" jika P(P) = "tidak stop"

Bahasa Pemrograman – IKP213 23

Page 24: ikp213-02-pendahuluan

Komputabilitas

• Contoh program akan dikompilasi i = 0;

while (i != f(i))

i = g(i);

print(i);

• Bagaimana menentukan bahwa program ini berfungsi sebagaimana yang diinginkan?

Bahasa Pemrograman – IKP213 24

Page 25: ikp213-02-pendahuluan

Pustaka

• John Mitchell, "Concepts in Programming Languages"

• http://tjerdastangkas.blogspot.com/search/label/ikp213

Bahasa Pemrograman – IKP213 25

Page 26: ikp213-02-pendahuluan

Akhir Pertemuan 2

Senin, 17 September 2012