metode numerik stepest descent dengan rerata aritmatika dipresentasikan pada seminar nasional matematika universitas negeri malang pada tanggal 13 agustus 2016
Ceria Farela Mada Tantrika, ARIF RAHMAN & Ihwan Hamdala, (2014), Pengembangan Algoritma Penjadwalan Hybrid Flowshop Berbasis Tabu Search Untuk Meminimasi Makespan, Majalah Teknik Industri Vol 21 No 2, Makassar, pp. 7-18
ARIF RAHMAN, (2015), Perencanaan Tenaga Kerja pada Sistem Jobshop dengan Pendekatan Shojinka dan Rank Order Clustering, Prosiding Seminar Nasional Terpadu Keilmuan Teknik Industri, Malang, pp. C10.1-C10-8
3. DomainPemrograman
Aplikasi ilmiah
Komputasi perhitungan banyak bilangan real atau
floating
Fortran
Aplikasi Bisnis
Menghasilkan laporan dengan angka desimal dan
karakter
COBOL
Kecerdasan buatan (artificial intelligence)
Lebih banyak manipulasi simbol daripada angka
LISP
Pemrograman sistem
Membutuhkan efisiensi untuk penggunaan
berkelanjutan
C
Web Software
markup (e.g., XHTML), scripting (e.g., PHP),
general-purpose (e.g., Java), database (e.g.,
MySQL)
3
5. EvolusiBahasaPemrograman
Everything for Everybody: PL/I
Two Early Dynamic Languages:
APL and SNOBOL
The Beginnings of Data
Abstraction: SIMULA 67
Orthogonal Design: ALGOL 68
Some Early Descendants of the
ALGOLs
Programming Based on Logic:
Prolog
History's Largest Design Effort:
Ada
Teaching Programming : Pascal
5
8. MetodologiPemrograman
1950 dan awal 1960: aplikasi sederhana;
memperhatikan efisiensi mesin
Akhir 1960: efisiensi orang menjadi
perhatian; kemudahan dibaca, struktur
kontrol lebih baik
structured (sequential) programming
top-down design and step-wise refinement
Akhir 1970: Process-oriented ke data-
oriented
data abstraction
Pertengahan 1980: Object-oriented
programming
Data abstraction + inheritance + polymorphism
Akhir 1980: Visual programming
Data abstraction + visual object
Event-driven programming
8
9. KategoriBahasaPemrograman
Imperative
Central features are variables, assignment
statements, and iteration. Examples: C,
Pascal
Functional
Main means of making computations is by
applying functions to given parameters.
Examples: LISP, Scheme
Logic
Rule-based (rules are specified in no
particular order). Example: Prolog
Object-oriented
Data abstraction, inheritance, late binding.
Examples: Java, C++
Markup
New; not a programming per se, but used
to specify the layout of information in Web
documents. Examples: XHTML, XML
9
12. Compilation
Menerjemahkan high-level program (source
language) menjadi machine code (machine
language)
Slow translation, fast execution
Proses compilation mempunyai beberapa tahap:
lexical analysis: mengkonversi characters
dalam source program menjadi lexical
units
syntax analysis: mentransformasi lexical
units menjadi parse trees yang
merepresentasikan syntactic structure dari
program
Semantics analysis: membangkitkan
intermediate code
code generation: membangkitkan machine
code
12
15. PureInterpretation
Tanpa penerjemahan
Implementasi program yang lebih
mudah (run-time errors dapat
ditampilkan dengan mudah dan
segera)
Slower execution (10 hingga 100 kali
lebih lambat dibandingkan compiled
programs)
Seringkali membutuhkan lebih banyak
space
Jarang digunakan di high-level
languages
Mulai digunakan pada Web scripting
languages (e.g., JavaScript)
15
19. ImplementasiJust-in-Time
Pertama menerjemahkan
program menjadi intermediate
language
Kemudian meng-compile
intermediate language menjadi
machine code
Machine code tersimpan untuk
subsequent calls
JIT system digunakan Java
programs dan .NET languages
19
21. SyntaxdanSemantics
Syntax: bentuk (format) atau
struktur dari expression,
statement, dan unit program
Semantic: pengartian dari
expression, statement, dan unit
program
Syntax and semantic memberikan
language’s definition
21
22. Terminologi
sentence : string atau rangkaian
karakter yang tersusun dari
alphabet, angka atau simbol
language : sekumpulan sentence
lexeme : level terendah syntactic
unit dari language (e.g., *, sum,
begin)
token : Kategori dari lexemes
(e.g., identifier)
22
23. PerangkatPenerjemahanBahasa
Recognizers
Perangkat yang membaca input
string dari language dan
menentukan apakah input strings
dikenali oleh language
Generators
Perangkat yang membangkitkan
sentence dari language
Menentukan apakah syntax dari
sentence tersusun benar dengan
membandingkan pada struktur
generator
23
25. SyntaxAnalysis
Syntax analysis terdiri dari:
low-level part yang disebut lexical
analyzer (mathematically, a finite
automaton based on a regular grammar)
high-level part yang disebut syntax
analyzer atau parser
(mathematically, a push-down
automaton based on a context-free
grammar, or BNF)
25
26. LexicalAnalyzer
Lexical analyzer merupakan
pattern matcher dari character
strings
Lexical analyzer menjadi “front-
end” dari parser
Mengidentifikasikan substring dari
source program - lexemes
Lexemes sesuai dengan pola
karakter yang berkaitan dengan
lexical category yang disebut token
26
27. LexicalAnalyzer
Lexical analyzer berupa function yang
dipanggil parser saat membutuhkan
token berikutnya
Tiga pendekatan untuk membangun
lexical analyzer:
Menulis deskripsi formal token dan
menggunakan software tool yang
membangun table-driven lexical analyzers
Merancang state diagram yang
menggambarkan token dan menulis
program yang menerapkan state diagram
Merancang state diagram yang
menggambarkan token dan membangun
table-driven implementation dari state
diagram
27
28. LexicalAnalyzer
Transisi dapat dikombinasikan untuk
menyederhanakanstate diagram
Saat mengenali identifier, semua huruf
kapital ataupun kecil adalah equivalent
Saat mengenali integer literal, semua digit
adalah equivalent
Reserved word dan identifier dapat
dikenali bersamaan (tanpa perlu
diagram untuk setiap reserved word)
Menggunakan table lookup untuk
menentukan identifier yang mungkin
menjadi reserved word
Lebih baik menggunakan subprogram
28
29. Parser
Tujuan parser, dengan input
program:
Mencari semua syntax errors;
memberikan pesan diagnosa, dan
recover secara cepat
Menghasilkan parse tree, atau
penelusuran parse tree
29
30. Parser
Dua kategori parser
Top down - Menghasilkan parse
tree, mulai dari root
Bottom up - Menghasilkan parse
tree, mulai dari leaves
Parser hanya melihat satu token
berikutnya dari input
30
31. Parser
Top-down Parser
Berdasarkan sentential form, xAα ,
parser memilih A-rule yang tepat
untuk mengambil sentential form
berikutnya di leftmost derivation,
hanya menggunakan token pertama
yang dihasilkan A
Algoritma top-down parsing :
Recursive descent - a coded
implementation
LL parsers - table driven
implementation
31
32. Parser
Bottom-up parsers
Berdasarkan sentential form, α,
menentukan substring dari α
sebagai right-hand side dari rule
pada grammar yang direduksi untuk
menghasilkan sentential form
sebelumnya di right derivation
Algoritma bottom-up parsing
algorithms :
LR family
32
33. Parser
Kompleksitas Parsing
Parser yang bekerja pada beberapa
unambiguous grammar menjadi
kompleks dan tidak efisien ( O(n3
), di
mana n merupakan panjang input )
Compiler menggunakan parser yang
hanya bekerja untuk sebagian
unambiguous grammar, tetapi
melakukannya dalam waktu linier
(O(n), di mana n merupakan panjang
input )
33
37. OperationalSemantics
Untuk menggunakan operational
semantics pada high-level
language, sebuah virtual machine
diperlukan
Perangkat keras dari pure
interpreter akan sangat mahal
Perangkat lunak pure interpreter
juga mempunyai permasalahan
Karakteristik detail particular computer akan
memberikan tindakan yang sulit dipahami
Semantic definition akan tergantung pada mesin
37
38. OperationalSemantics
Alternatif yang lebih baik:
Simulasi komputer lengkap
Proses:
Membangun translator (menerjemahkan
source code menjadi machine code pada
komputer ideal)
Membangun simulator untuk komputer
ideal
Evaluasi operational semantic:
Baik jika digunakan secara informal
(language manuals, etc.)
Extrem kompleks jika digunakan secara
formal (e.g., VDL), digunakan untuk
menggambarkan semantic PL/I.
38
39. AxiomaticSemantics
Berbasis pada formal logic
(predicate calculus)
Tujuan awal: formal program
verification
Axioms / inference rules
didefinisikan untuk setiap
statement type dalam language
(untuk memungkinkan
transformasi expression menjadi
expression lainnya)
Expression disebut assertions
39
40. AxiomaticSemantics
Assertion sebelum statement (a
precondition) menunjukkan
hubungan dan kendala pada
variable yang benar pada saat
eksekusi
Assertion mengikuti statement
merupakan postcondition
Weakest precondition adalah
least restrictive precondition yang
menjamin postcondition
40
42. DenotationalSemantics
Proses membangun spesifikasi
denotational dari language
mendefinisikan mathematical object
untuk setiap language entity
mendefinisikan function yang
memetakan instance dari language
entity pada instance dari
mathematical objects yang terkait
Pengertian language didefinisikan
dengan nilai dari variable
42
45. Variables
Variable merupakan abstraction dari
memory cell
Variable terkarakterisasi atribut
Ukuran memori
Inisialisasi
Lingkup dan lama pemakaian
Type checking
Type compatibility
Pemberian nama variable:
Panjang maksimum?
Karakter yang diperkenankan?
Nama menunjukkan konten?
Berbenturan dengan kode sistem?
45
46. VariablesAttributes
Name
Address –menunjukkan alamat
memory
Variable dapat menempati address
berbeda di waktu berbeda saat eksekusi
Variable dapat menempati address
berbeda di tempat berbeda dalam program
Dua nama variable dapat menggunakan
lokasi memory yang sama, biasanya
disebut alias
Alias dibuat melalui pointers, reference
variables
Aliases berresiko pada readability
(pengguna program perlu mengingat
semuanya)
46
47. VariablesAttributes
Type – menentukan rentang nilai
variables dan sekumpulan
operation terkait; misalnya floating
point type juga menentukan
tingkat presisi
Value - nilai variable
Abstract memory cell - physical
cell atau sekumpulan cell yang
berhubungan dengan variable
47
50. VariablesTypes:Boolean
Hanya bernilai dua elemen pilihan
“true” or “false”
“yes” or “no”
“on” or “off”
“accept” or “reject”
1 or 0
Terkadang terdeklarasi dalam
type: boolean
Dapat berukuran bit, tetapi
seringkali berukuran byte
50
53. VariablesTypeChecking
Generalisasi konsep deklarasi/assignment,
penulisan formula/format, penggunaan
operand/operator, dan subprogram
Type checking merupakan aktivitas
memastikan penggunaan operand/operator
secara compatible type
Compatible type adalah penggunaan operator
secara legal atau mematuhi aturan language
untuk dikonversikan dengan compiler-
generated code menjadi legal type
This automatic conversion is called a coercion.
Type error adalah diagnosa penggunaan
operand/operator secara inappropriate type
53
54. VariablesArrayTypes
Array merupakan sekumpulan atau
larik elemen data homogen di mana
elemen individual teridentifikasi
berdasarkan posisinya dalam aggregat
secara relatif pada elemen pertama.
Design issues :
What types are legal for subscripts?
Are subscripting expressions in element references
range checked?
When are subscript ranges bound?
When does allocation take place?
What is the maximum number of subscripts?
Can array objects be initialized?
Are any kind of slices allowed?
54
56. VariablesRecordTypes
record merupakan sekumpulan
elemen data heterogen di mana
elemen individual teridentifikasi
oleh name atau field
Design issues:
What is the syntactic form of
references to the field?
Are elliptical references allowed
56
58. Statement
Assignment Statements
..... = .....
Control Statements
If Then Goto .....
Selection Statements
If Then ..... Else .....
Case .....
Iterative Statements
For .....
Repeat ..... Until .....
While.....
58
59. Subprogram
Subprogram definition
mendeskripsikan interface dan
action dari subprogram
abstraction
Subprogram call merupakan
permintaan eksplisit agar
subprogram dieksekusi
Subprogram header bagian
pertama pada definition, termasuk
name, jenis subprogram, dan
deklarasi parameter
Subprogram, subroutine, procedure
Function
59
60. SubprogramsFundamental
Setiap subprogram memiliki entry
point tunggal
Caller atau program yang
melakukan calling akan terhenti
selama eksekusi called
subprogram
Control biasanya kembali ke
caller saat eksekusi called
subprogram berhenti atau
terminate/exit
60
61. Akhir Perkuliahan . . .
. . . Ada yang ditanyakan. . . Ada yang ditanyakan
61