20
Key Word UAS Konsep Dasar Pemrograman January 9, 2015 1 Vincentius Kurniawan / 13110110028 Chapter 10: Implementing Subprograms 1. Semantik (Makna Bahasa) Umum Calls and Return Subprogram linkage adalah subprogram dari operasi call dan return Subprogram call memiliki beberapa asosiasi yakni : i. Parameter passing methods ii. Static local variables iii. Execution status of calling program iv. Transfer of control v. Subprogram nesting 2. Implementasi “Simple” Subprogram Activation Record adalah format dari bagian nonkode sebuah subprogram sederhana yang dieksekusi Activation Record Instance (ARI) adalah contoh kongkrit dari activation record (koleksi data untuk aktivasi subprogram tertentu) Linker penghubung antar activation record pada sebuah subprogram 3. Implementasi Subprogram dengan Stack-Dynamic Local Variables Dynamic Link sebuah pointer yang menunjuk pada pemanggil subprogram tersebut dalam ARI tertentu Run-time stack adalah sebuah stack urutan eksekusi / proses subprogram (subprogram yang terakhir dipanggil adaah yang pertama selesai) Dynamic chain / Call Chain adalah koleksi / kumpulan dari dynamic link yang ada pada stack ketika stack tersebut dijalankan/ dipanggil (representasi urutan dynamic di eksekusi) Local Offset penunjuk ke local variable yang direpresentasikan didalam kode sebagai offsets (starting ime/ waktu mulai) di awal ARI dari scope local. DItentukan oleh kompilator pada saat kompilasi 4. Nested Subprograms Static Link sebuah pointer yang menunjuk pada subprogram parentnya Static Chain adalah kumpulan rantai dari static link yang saling terhubung pada sebuah ARI Static Depth adalah bilangan integer yang menunjukan seberapa dalam subprogram pada ruang lingkup nested Nesting Depth / Chain offset perbedaan / selisih antar static depth pada 2 nested subprogram 5. Blocks Blocks lingkup variabel lokal (lifetime) yang dispesifikasi oleh user 6. Implementasi Dynamic Scooping Deep access adalah metode implementasi dynamic scoping dengan referensi non local yang dapat ditemukan dengan pencarian ARI dalam dynamic chain i. Disebut deep access karena membutuhkan pencarian yang mendalam pada stack Shallow access adalah metode implementasi dynamic scoping dengan meletakan local variabel di central place, satu stack ditujukan untuk 1 variabel. Dan central table adalah entri masuk untuk setiap nama variable

Rangkuman Konsep Bahasa Pemrograman (UAS)

Embed Size (px)

Citation preview

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

1 Vincentius Kurniawan / 13110110028

Chapter 10: Implementing Subprograms

1. Semantik (Makna Bahasa) Umum Calls and Return

Subprogram linkage adalah subprogram dari operasi call dan return

Subprogram call memiliki beberapa asosiasi yakni :

i. Parameter passing methods

ii. Static local variables

iii. Execution status of calling program

iv. Transfer of control

v. Subprogram nesting

2. Implementasi “Simple” Subprogram

Activation Record adalah format dari bagian nonkode sebuah subprogram sederhana

yang dieksekusi

Activation Record Instance (ARI) adalah contoh kongkrit dari activation record (koleksi

data untuk aktivasi subprogram tertentu)

Linker penghubung antar activation record pada sebuah subprogram

3. Implementasi Subprogram dengan Stack-Dynamic Local Variables

Dynamic Link sebuah pointer yang menunjuk pada pemanggil subprogram tersebut

dalam ARI tertentu

Run-time stack adalah sebuah stack urutan eksekusi / proses subprogram (subprogram

yang terakhir dipanggil adaah yang pertama selesai)

Dynamic chain / Call Chain adalah koleksi / kumpulan dari dynamic link yang ada pada

stack ketika stack tersebut dijalankan/ dipanggil (representasi urutan dynamic di eksekusi)

Local Offset penunjuk ke local variable yang direpresentasikan didalam kode sebagai

offsets (starting ime/ waktu mulai) di awal ARI dari scope local. DItentukan oleh kompilator

pada saat kompilasi

4. Nested Subprograms

Static Link sebuah pointer yang menunjuk pada subprogram parentnya

Static Chain adalah kumpulan rantai dari static link yang saling terhubung pada sebuah

ARI

Static Depth adalah bilangan integer yang menunjukan seberapa dalam subprogram

pada ruang lingkup nested

Nesting Depth / Chain offset perbedaan / selisih antar static depth pada 2 nested

subprogram

5. Blocks

Blocks lingkup variabel lokal (lifetime) yang dispesifikasi oleh user

6. Implementasi Dynamic Scooping

Deep access adalah metode implementasi dynamic scoping dengan referensi non local

yang dapat ditemukan dengan pencarian ARI dalam dynamic chain

i. Disebut deep access karena membutuhkan pencarian yang mendalam pada stack

Shallow access adalah metode implementasi dynamic scoping dengan meletakan local

variabel di central place, satu stack ditujukan untuk 1 variabel. Dan central table adalah entri

masuk untuk setiap nama variable

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

2 Vincentius Kurniawan / 13110110028

Chapter 11: Abstract Data Types And Encapsulation Constructs

1. Konsep Abstraksi

Abstraction view atau representasi entitas yang hanya meliputi atribut yang paling

siginifikan; atribut-atribut umum dapat diabaikan

Proses Abstraksi

2. Pendahuluan Data Abstraksi

Object

Abstract Data Type

Clients

Getter – setter

3. Abstract Data Type di Ada

Packages

Packages Specification

Body Package

Private

Limited Private

4. Abstract Data Type di C++

Data Member

Member Function

Constructor, Destructor

5. Abstract Data Type di C OOP

Initializers

Interface

Properties

Synthesized

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

3 Vincentius Kurniawan / 13110110028

PEMBAHASAN SOAL2

Implementing Subprogram

Jawaban :

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

4 Vincentius Kurniawan / 13110110028

Jawab:

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

5 Vincentius Kurniawan / 13110110028

3. Show the stack with all activation record instances, including static and dynamic chains, when

exexution reaches position 1 in the following skelental program. Assume Bigsub is at level 1

The calling sequence for this program for execution to reach D is :

Bigsub calls A

A calls B

B calls A

A calls C

C calls D

Jawab:

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

6 Vincentius Kurniawan / 13110110028

Support for Object-Oriented Programming

3. Desain stack abstract data type untuk real number dengan standard stak operation standard : push

(int N), pop(), isEmpty(), & makeEmpty() !

class Data{

public :

int value;

Data *next;

}

class Stack{

private:

Data *head;

public:

Stack(){

head = NULL;

}

int push(int N){

Data *node = new Data();

node->value = N;

node->next = NULL;

if(head == NULL)

{

head = node;

}

else

{

node->next = head;

head = node;

}

return 1;

}

int pop(){

Data *curr;

if(head != NULL)

{

int r = head->value;

curr = head;

head = head->next;

delete curr;

return r

}

return -1;

}

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

7 Vincentius Kurniawan / 13110110028

int isEmpty(){

if(head == NULL)

return 1

return 0;

}

void makeEmpty(){

Data *curr;

for(curr = head; curr != NULL;

curr =head){

head = head->next;

delete curr;

}

}

}

4. Desain queue abstract data type untuk int number dengan queue operation standard : isEmpty,

enqueue(), dequeue() !

class Data{

public :

int value;

Data *next;

}

class Queue{

private:

Data *head;

public:

Queue(){

head = NULL;

}

int isEmpty(){

if(head == NULL)

return 1;

return 0;

}

void enqueue(int N){

Data *node = new Data();

data->value = N;

data->next = NULL;

if(isEmpty()){

head = node;

}

else{

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

8 Vincentius Kurniawan / 13110110028

Data *curr;

for(curr = head; curr->next != NULL;

curr = curr->next);

curr->next = node;

}

}

int dequeue(){

if(!isEmpty()){

Data *curr;

curr = head;

head = head->next;

int returnValue = curr->value;

curr->next = NULL;

delete curr;

return returnValue;

}

return -1;

}

}

Concurrency

13. Definisi:

Task → Unit dari program, yang mirip dengan subprogram, yang dapat dieksekusi secara bersamaan

dengan unit lain dalam program yang sama. Tasks biasanya dipanggil proses. Task terdapat dua kategori

umum : heavyweight dan lightweight.

heavyweight → mengeksekusi di address spacenya masing-masing

lightweight → menjalankan seluruhnya di address space yang sama

Task dapat saling berkomunikasi dengan task lain melalui shared nonlocal variable, melalui message

passing atau melalui parameter.

Synchronization → Mekanisme yang mengontrol perintah untuk eksekusi task. Terdapat dua jenis yang

dibutuhkan ketika task saling berbagi/share data : cooperation dan competition. Mekanisme

sinkronisasi harus dapat menunda eksekusi suatu task.

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

9 Vincentius Kurniawan / 13110110028

Competition Synchronization → Sinkronisasi yang dibutuhkan antara task A dan task B ketika task A

harus menunggu task B untuk menyelesaikan beberapa aktivitas spesifik sebelum task A dapat memulai

atau melanjutkan eksekusinya

Contohnya : Dua task mengakses satu variable bernama TOTAL dan saling mengubah satu sama lain.

Sama seperti prinsip dalam update data di database waktu SBD, yang dijelasin ama Pak Bekti,

permasalahan reader-writer (mungkin)

Cooperation Synchronization → Sinkronisasi yang dibutuhkan antara dua task ketika keduanya

membutuhkan penggunaan beberapa resources yang tidak dapat digunakan secara bersamaan

Contohnya : Producer-Consumer problem (Kalau lupa baca OS lagi)

Liveness → Suatu task terus melanjutkan eksekusinya, sampai akhirnya mengarah pada penyelesaian

task tersebut.

Race Condition → Situasi dimana dua atau lebih task saling berbalap untuk menggunakan resources dan

bergantung kepada siapa task yang lebih dahulu sampai. Race condition merupakan permasalahan dari

Competition

Deadlock → Suatu task yang kehilangan karakteristik suatu task, yaitu liveness yang merupakan

permasalahan yang serius. Peristiwa deadlock terjadi karena task A butuh resource X yang sedang

dipakai oleh task B (menunggu tanda release) sedangkan task B butuh resource Y yang sedang dipakai

oleh task A dan menunggu tanda release dari task A. Hal ini menyebabkan saling menunggu tanda

release. Sehingga task A dan task B ga bisa menyelesaikan tugasnya dan gentayangan.

23. Keuntungan Monitor pada semaphore:

Merupakan penjaga buffer/resources, dimana Monitor menjaga buffer dan menjamin bahwa

hanya satu task yang dapat mengakses buffer (sebagai pengontrol task-task yang masuk).

Berbeda dengan konsep semaphore dimana tiap-tiap task tersebut yang

mengurangi/menambah counter sendiri sebagai tanda bahwa resource sedang digunakan atau

sudah digunakan.

Monitor butuh lock untuk mengeksekusi satu thread saja, sedangkan semaphore butuh lock

untuk mengakses resource

Menyediakan cara yang lebih baik dalam masalah competition synchronization dalam

menghandle buffer overflow dan underflow

24. Tiga bahasa yang dapat mengimplementasikan monitor:

Java (dapat diimplementasikan dalam class yang didesain sebagai abstract data type).

Pengaksesan object class dicontrol dengan menambahkan Synchronized modifier pada

method akses (wait and notify :: sumber wikipedia)

Ada (memiliki dua cara dalam mengimplementasikan. Ada 83 memasukkan model tasking

secara umum yang dapat digunakan untuk mendukung implementasi monitor. Ada 95

menambah cleaner dan lebih efisien dalam membuat monitor, yang disebut sebagai protected

object)

C# (soalnya ada .Net Framework)

25. Definisi:

Rendezvous → Pada Message Passing secara sinkron, dimana terdapat situasi yang terjadi saat

penerima menerima pesan yang dikirim oleh pengirim sehingga penerima menangguhkan/menunda

eksekusi pada suatu point. (biar nanti bisa lanjutin lagi eksekusi yang ditunda)

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

10 Vincentius Kurniawan / 13110110028

Accept Clause → didefiniskan sebagai cakupan dari statement yang dimulai dengan 'accept' dan diakhiri

dengan 'end'.

Entry Clause → Bentuk semantic dari spesifikasi task yang akan dijalankan

Actor Task → task yang tanpa accept clauses (tidak butuh accept clauses)

Server Task → Task yang memiliki accept clause, tetapi tidak memunyai kode lain selain accept clause

tersebut

Extended Accept Clause → Sebuah kode (jika ada) yang berada antara accept clause dan or selanjutnya

(atau end select, jika accept clause adalah bagian akhir dari select). Extended accept clause dieksekusi

hanya sekali setelah accept clause yang berasosiasi dieksekusi.

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

11 Vincentius Kurniawan / 13110110028

Open accept clause → Sebuah accept clause saat when clause bernilai benar. Kalau accept clause yang

tidak memiliki penjaga selalu terbuka. Open accept clause tersedia untuk rendezous

Close Accept clause → Sebuah accept clause saat when clause bernilai salah. Closed accept clause tidak

dapat rendezous

Completed Task → Situasi yang terjadi saat kontrol dari eksekusi sebuah task telah mencapai akhir dari

kode (code body). Hal ini dapat terjadi karena exception ditimbulkan ketika tidak ada handler. Jika task

tidak dibuat task lain, yang disebut dependents, akan menghentikan ketika eksekusi selesai. Task yang

sudah dibuat dependent task (task tersebut dibuat oleh task lain) dihentikan ketika eksekusi dari kode

sudah komplit dari seluruh dependant dihentikan. Task dapat menhentikan dengan menunggu open

terminal clause. Dalam kasus dimana terminasi hanya ketika master (the block, subprogram atau task

yang membuatnya) dan seluruh task lain yang bergantung dengan master tersebut sudah

menyelesaikan atau menunggu di open terminate clause

Exception Handling

14. Catch( . . . ) adalah nama dari seluruh exception handler yang berada di C++ karena catch function

dengan ellipsis formal parameter ( . . . ) adalah exception handler yang berlaku untuk exception yang

apapun jika tidak ada handler yang sesuai untuk exception yang ditemukan. Catch(formal parameter)

dapat diisi dengan memasukkan type seperti float, dimana catch tersebut seperti prototype dari sebuah

function. Tujuan dari formal parameter adalah untuk membuat handler diidentifikasikan unik satu sama lain

(karena pada C++, catch tersebut bisa lebih dari satu) dan ketika informasimengenai exception diberikan ke

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

12 Vincentius Kurniawan / 13110110028

handler, formal parameter termasuk nama variable yang digunakan untuk tujuan tersebut. Formal parameter

juga dapat berupa user-define class yang memiliki banyak member data yang penting.

15. Exception dapat secara eksplisit diraise dengan menggunakan statement throw[expression] (expression

didalam throw bersifat optional). Throw tanpa operand hanya dapat muncul di handler. Ketika muncul, akan

membangkitkan exception, dimana dihandle di suatu tempat.

16. Exception terikat dengan handler melalui try construct dan memberikan statement throw dengan tipe

expressionnya untuk melemparkan exception ke handler yang formal parameternya sesuai dengan tipe

expression pada throw tersebut.

17. Exception handler dapat ditulis di C++ dimana dapat menghandle exception :

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

13 Vincentius Kurniawan / 13110110028

18. Setelah exception handler dieksekusi, control flow pada continuation akan dilempar ke statement awal yang

berada di try construct dan akan melakukan proses pencocokan handler-handler yang ada di try construct.

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

14 Vincentius Kurniawan / 13110110028

Functional Programming Language

8. Terdapat function bernama y dengan memiliki parameter berupa s yang berupa atom dan lis yang berupa list.

Scheme function tersebut melakukan proses pemberian nilai berdasarkan hasil dari conditional statement. Pada

conditional pertama, jika lis adalah null, mengembalikan nilai list yang kosong. Pada conditional kedua, jika s

sama dengan dengan nilai pertama dari parameter lis, akan mengembalikan nilai berupa seluruh nilai lis. Pada

conditional statement terakhir adalah jika tidak memenuhi kedua kondisi diatas, maka akan melakukan

recursion dimana menjalankan fungsi y kembali dengan parameter s dan seluruh nilai dari lis kecuali nilai yang

pertama

9. Terdapat function bernama x dengan parameter lis yang berupa list. Didalam fungsi tersebut terdapat berbagai

proses dari setiap kondisi-kondisi. Pada kondisi pertama, jika lis adalah null, maka akan mengembalikan nilai 0.

Para kondisi kedua, jika nilai pertama dari lis bukan berupa list, terdapat kondisi lagi. Nested kondisi pertama

akan mengecek apakah nilai pertama dari lis sama dengan nil, dan jika memenuhi kondisinya, akan melakukan

proses recursion dengan menjalankan kembali fungsi x dengan parameter seluruh lis kecuali nilai pertama dari

lis tersebut. Kemudian jika nested kondisi pertama tidak memenuhi, akan memberikan proses recursion dimana

akan menjalankan fungsi x dengan parameter seluruh nilai lis kecuali nilai pertama dan hasil dari fungsi tersebut

akan ditambah satu. Kemudian kembali pada kondisi di parentnya, dimana jika tidak memenuhi kedua-duanya

dari statement conditional diatasnya, akan melakukan proses recursion berupa proses penambahan dari hasil

rekursi fungsi x dengan parameter hanya nilai pertama dari lis dan dari hasil rekursi fungsi x dengan parameter

seluruh nilai dari lis kecuali nilai pertama.

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

15 Vincentius Kurniawan / 13110110028

PEMBAHASAN SOAL KUIS

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

16 Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

17 Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

18 Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

19 Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman January 9, 2015

20 Vincentius Kurniawan / 13110110028