• Tidak ada hasil yang ditemukan

11/18/2009. Julio Adisantoso 1. Bahasa Pemrograman Kuliah #1 18 November Tucker & Noonan Chapter 1

N/A
N/A
Protected

Academic year: 2021

Membagikan "11/18/2009. Julio Adisantoso 1. Bahasa Pemrograman Kuliah #1 18 November Tucker & Noonan Chapter 1"

Copied!
5
0
0

Teks penuh

(1)

PENDAHULUAN

PENDAHULUAN

Bahasa Pemrograman

Kuliah #1

18 November 2009

Silabus

Silabus

Konsep bahasa pemrograman (functional programming,  logic programming, concurent programming, imperative  programming, object oriented programming), jenis dan ciri;  aturan‐aturan dalam struktur pemrograman; elemen‐ elemen bahasa pemrograman: notasi, deklarasi, scope. 

Functional programming: ciri‐ciri sintaks list dan beberapa Functional programming: ciri ciri, sintaks, list, dan beberapa  aplikasi lainnya. Logic programming : ciri‐ciri, relasi, aturan,  fakta, goal, prolog search tree, place holder, cut, list,  database. Object oriented programming: pengertian obyek,  kelas dan data, operator overloading, inheritance, fungsi  virtual, polymorphism, stream.  JULIO ‐ ILMU KOMPUTER IPB 2

Pokok

Pokok Bahasan

Bahasan

1. Functional Programming   ` LISP SchemeLISP Scheme, Haskell

2. Programming in Logic  ` PROLOGPROLOG

3. Imperative Programming ` C, Ada, PerlPerl

4. Object Oriented Programming ` C++C++, , JavaJava

• Situs materi, tugas, dan lainnya di http://web.ipb.ac.id/~julio/basprog0910/

JULIO ‐ ILMU KOMPUTER IPB 3

Buku

Buku Acuan

Acuan

Programming Languages: Principles and Paradigms. 2nd Ed.  Allen B. Tucker & Robert E. Noonan. • C: How to Program. 3rdEd. Deitel, H. M. & P. J. Deitel.  Pearson Education Prentice Hall. Prentice‐Hall, New Jersey. • Java: How to Program. 3rdEd. Deitel, H. M. & P. J. Deitel.  P Ed ti P ti H ll P ti H ll N J Pearson Education Prentice Hall. Prentice‐Hall, New Jersey. JULIO ‐ ILMU KOMPUTER IPB 4

Penilaian

Penilaian

• Ujian tulis (70 – 80%) • Tugas/Proyek (20 ‐ 30%) • Tidak ada ujian perbaikan • Tugas/Proyek diberikan saat kuliah JULIO ‐ ILMU KOMPUTER IPB 5

OVERVIEW

OVERVIEW

Tucker & Noonan

Chapter 1

(2)

Prinsip Bahasa Pemrograman

Prinsip Bahasa Pemrograman

• Bahasa pemrograman vs bahasa alami 9 Memfasilitasi komunikasi antar manusia 9 Bahasa pemrograman juga memfasilitasi komunikasi  manusia dengan mesin 9 Bahasa pemrograman hanya pada domain  komputasional • Perancang bahasa memiliki vocabulary dasar  tentang: 9 Struktur bahasa 9 Arti JULIO ‐ ILMU KOMPUTER IPB 7

Prinsip Bahasa Pemrograman

Prinsip Bahasa Pemrograman

• Prinsip perancangan bahasa : (1) Sintaks, (2) Nama dan Tipe,  (3) Semantik. • Sintaks menjelaskan bagaimana struktur program yang  benar. Struktur bahasa pemrograman modern didefinisikan  menggunakan bahasa formal yang disebut context‐free‐ grammar. • Nama dan Tipe menunjukkan bagaimana aturan penamaan  entitas (variabel, fungsi, class, parameter, dsb). • Semantik, arti dari program. Ketika program dijalankan, efek  tiap instruksi didefinisikan oleh semantik dari bahasa. JULIO ‐ ILMU KOMPUTER IPB 8

Paradigma

Paradigma

• Paradigma pemrograman adalah bentuk pemecahan  masalah mengikuti aliran atau “genre” tertentu dari program  dan bahasa. • Empat paradigma pemrograman pada tiga dekade terakhir: 9 Imperative programmingp p g g 9 Object‐oriented programming 9 Functional programming 9 Logic programming • Beberapa bahasa dirancang mendukung lebih dari satu  paradigma. Contoh: C++ (imperative dan OOP), Leda  (imperative, OOP, functional, logic). JULIO ‐ ILMU KOMPUTER IPB 9

Imperative Programming

Imperative Programming

• Paradigma paling tua, didasari oleh model komputasi klasik  “von Neumann‐Eckert”. • Program dan variabel disimpan bersama. • Program terdiri dari instruksi yang membentuk perhitungan,  asignment, input, output, dan kontrol.g p p • Contoh: Cobol, Fortran, C, Ada, Perl JULIO ‐ ILMU KOMPUTER IPB input output control arithmetic/logic program variables 10

Object

Object‐‐oriented Programming

oriented Programming

• Program adalah kumpulan dari obyek yang saling  berinteraksi satu sama lain. • Program membungkus (encapsulate) data dan fungsi atau  prosedur menjadi suatu obyek (class). • Meliputi mekanisme obyek, pewarisan, dan passing p y p p g parameter. • Contoh: Smalltalk, C++, Java, C# JULIO ‐ ILMU KOMPUTER IPB 11

Functional Programming

Functional Programming

• Memodelkan masalah komputasi sebagai suatu fungsi  matematika, yang mempunyai input (domain) dan hasil atau  output (range). • Tidak menggunakan mekanisme assignment, karena tidak  dapat diterima secara matematika, misalnya: x = x + 1 • Fungsi mengkombinasikan kondisi dan rekursif. • Contoh: Lisp (List Programming), Scheme, Haskell. JULIO ‐ ILMU KOMPUTER IPB 12

(3)

Logic Programming

Logic Programming

• Disebut juga Declarative Programming • Memodelkan masalah menggunakan bahasa deklaratif, yang  terdiri dari fakta dan aturan. • Kadang disebut juga sebagai rule‐based languages. • Contoh: Prolog (Programming in Logic)

• Contoh: Prolog (Programming in Logic). JULIO ‐ ILMU KOMPUTER IPB 13

PL History

PL History

JULIO ‐ ILMU KOMPUTER IPB 14

Disain Bahasa Pemrograman

Disain Bahasa Pemrograman

• Menciptakan bahasa sehingga pemrogram dapat  memecahkan persoalan yang kompleks. • Kendala yang harus diperhatikan: 9 Architecture 9 Technical Setting 9 Technical Setting 9 Standards JULIO ‐ ILMU KOMPUTER IPB 15

Disain Bahasa Pemrograman

Disain Bahasa Pemrograman

• Architecture. Bahasa pemrograman dirancang untuk  komputer: well‐match atau tidak dengan arsitektur  komputer yang ada. • Technical Setting, memperhatikan sistem operasi, IDE  (Integrated Development Environment), network, dan  f i li k l i referensi lingkungan lainnya. • Standards: ANSI (American National Standards Institute),  atau ISO (International Standards Organization). Contoh: ISO  Pascal (1990), ANSI/ISO C++ (2003), dsb. JULIO ‐ ILMU KOMPUTER IPB 16

Disain Bahasa Pemrograman

Disain Bahasa Pemrograman

Goals: • Simplicity and Readability, program harus mudah ditulis, dan  mudah dibaca oleh programmer umumnya. • Clarity about Binding, memiliki batasan definisi dan waktu  yang jelas, misalnya reserved words, ukuran memori suatu  y g j y tipe data, run time, dsb. • Reliability, program akan melakukan hal yang sama ketika  memperoleh input data yang sama. • Support, mudah diakses, dipelajari, dan di‐install oleh siapa  saja. • Efficient. JULIO ‐ ILMU KOMPUTER IPB 17

Compilers & Virtual Machines

Compilers & Virtual Machines

Bahasa program dianalisis dan selanjutnya diterjemahkan ke  dalam bentuk yang dapat dipahami mesin:

• Dijalankan oleh komputer – “real machine” Æ compiling • Dijalankan oleh interpreter – software yang mensimulasikan 

“virtual machine” dan menjalankan dalam “real machine” Æj interpreting

(4)

Compilers

Compilers

Lexical  analyzer Syntactic  analyzer Type checker Code  optimizer Code  generator Source  program JULIO ‐ ILMU KOMPUTER IPB Computer Input Output Machine  code 19

Virtual Machines & Interpreters

Virtual Machines & Interpreters

Lexical  analyzer Syntactic  analyzer Type checker Interpreter Source  program Abstract  syntax JULIO ‐ ILMU KOMPUTER IPB Computer Input Output 20

FUNCTIONAL PROGRAMMING

FUNCTIONAL PROGRAMMING

Tucker & Noonan

Chapter 14

Functional Programming

Functional Programming

• Program serba fungsi, artinya setiap persoalan diselesaikan  dengan menggunakan fungsi. • Mulai dikembangkan  tahun 1960an, dimotivasi oleh peneliti  bidang artificial intelligence, symbolic computation, theorem  proving, rule‐based system, dan NLP. • Bahasa fungsional pertama adalah Lisp (McCarthy, 1960). • Memodelkan masalah komputasi sebagai suatu fungsi  matematika, yang mempunyai input (domain) dan hasil atau  output (range). JULIO ‐ ILMU KOMPUTER IPB 22

Function & Lambda Calculus

Function & Lambda Calculus

• Contoh fungsi matematika: Kuadrat(n) = n * n • Kuadrat adalah fungsi yang memetakan suatu himpunan  bilangan real R (domain) ke bilangan real R (range). Atau  secara formal didefinisikan:

secara formal didefinisikan: Kuadrat: R Æ R • Suatu fungsi disebut total jika terdefinisi untuk semua elemen  dalam domain, dan disebut parsial untuk selainnya. • Fungsi Kuadrat adalah total karena domainnya seluruh  himpunan bilangan real. JULIO ‐ ILMU KOMPUTER IPB 23

Function & Lambda Calculus

Function & Lambda Calculus

• Dasar dari pemrograman fungsional adalah lambda calculus. • Ekspresi lambda menunjukkan parameter dan definisi dari  fungsi, BUKAN nama fungsi. • Contoh, ekspresi lambda yang mendefinisikan fungsi Kuadrat  adalah: adalah: (λx . x * x) • Identifier x adalah parameter yang digunakan dalam fungsi  (tanpa nama) x * x. • Contoh aplikasinya: ((λx . x * x)2) menjadi 4. JULIO ‐ ILMU KOMPUTER IPB 24

(5)

Lambda Calculus

Lambda Calculus

• Setiap identifier adalah ekspresi lambda. • Jika M dan N adalah ekspresi lambda, maka aplikasi dari M  dan N, ditulis sebagai (M N), adalah ekspresi lambda. • Abstraksi, ditulis sebagai (λx . M), dimana x adalah identifier 

dan M adalah ekspresi lambda juga merupakan ekspresi dan M adalah ekspresi lambda, juga merupakan ekspresi  lambda.

• BNF grammar:

LambdaExpression Æ variable | (M N) | (λ variable . M)

M Æ LambdaExpression N Æ LambdaExpression JULIO ‐ ILMU KOMPUTER IPB 25

Lambda Calculus

Lambda Calculus

• Contoh ekspresi lambda: x (λx . x) ((λx . x) (λy . y)) • Aplikasi fungsi: ((λx . * x x)5) = (* 5 5) JULIO ‐ ILMU KOMPUTER IPB 26

Scheme

Scheme

• Lisp (List Programming) adalah bahasa pemrograman  fungsional yang asli. Saat ini mempunyai dua varian, yaitu: 9 Common Lisp (Steele, 1990) 9 Scheme (Kelsey, 1998) – http://www.drscheme.org/ Tid k iliki i • Tidak memiliki pernyataan assignment. • Program ditulis sebagai fungsi rekursif. JULIO ‐ ILMU KOMPUTER IPB 27

Scheme

Scheme

Ekspresi • Ekspresi disusun dalam notasi Cambridge‐prefix. • Contoh:  (+ 2 2) • Operasi aritmatika: • Operasi aritmatika: (+) 0 (+ 5) 5 (+ 5 4 3 2 1) 15 (*) 1 (* 5) 5 (* 1 2 3 4 5) 120 • Contoh lain:  (+ (* 5 4) (‐ 6 2) JULIO ‐ ILMU KOMPUTER IPB 28

Scheme

Scheme

Variabel global • Didefinisikan dengan menggunakan fungsi define. • Contoh:  (define f 120) Evaluasi ekspresi Evaluasi ekspresi f 120 (+ f 5) 125 (f) error, kenapa? 5 5 #f false #t true JULIO ‐ ILMU KOMPUTER IPB 29

Scheme

Scheme

Evaluasi ekspresi (define warna (quote (merah kuning hijau))) (define warna '(merah kuning hijau)) (define x f) 120 (define x ' f) x berisi simbol f (define warna ' merah) (define warna merah) error, kenapa? JULIO ‐ ILMU KOMPUTER IPB 30

Referensi

Dokumen terkait