Rangkuman Konsep Bahasa Pemrograman UAS

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

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
1

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

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

2


Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

PEMBAHASAN SOAL2
Implementing Subprogram

Jawaban

3

:

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman


January 9, 2015

Jawab:

4

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

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:
5

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

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;
}
6

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015


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{
7

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

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



8

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.

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman








January 9, 2015

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)

9

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

 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.

10

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

 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
11

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

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 :

12

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

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.
13

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

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.

14

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

January 9, 2015

PEMBAHASAN SOAL KUIS

15

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

16

January 9, 2015

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

17

January 9, 2015

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

18

January 9, 2015

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

19

January 9, 2015

Vincentius Kurniawan / 13110110028

Key Word UAS Konsep Dasar Pemrograman

20

January 9, 2015

Vincentius Kurniawan / 13110110028