• Tidak ada hasil yang ditemukan

Rangkuman Konsep Bahasa Pemrograman UAS

N/A
N/A
Protected

Academic year: 2018

Membagikan "Rangkuman Konsep Bahasa Pemrograman UAS"

Copied!
20
0
0

Teks penuh

(1)

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

(2)

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

(3)

3 Vincentius Kurniawan / 13110110028

PEMBAHASAN SOAL2

Implementing Subprogram

Jawaban

:

(4)
(5)

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

(6)

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{

(7)
(8)

8 Vincentius Kurniawan / 13110110028

Data *curr;

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

curr = curr->next);

int returnValue = curr->value;

curr->next = NULL;

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.

(9)

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:

(10)

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

(11)

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

(12)

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.

(13)

13 Vincentius Kurniawan / 13110110028

(14)

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

(15)
(16)
(17)
(18)
(19)
(20)

Referensi

Dokumen terkait

Dalam makalah ini akan dibuat suatu sistem yang mampu memberikan rekomendasi jawaban-jawaban atas pertanyaan yang ada dengan melakukan implementasi algoritma text similarity

Pekerjaan dalam laboratorium sering menggunakan alat-alat, contoh alat-alat tersebut antara lain: gelas beker, gelas ukur, pipet tetes, pipet ukur, pipet volume,

Hal inilah yang mendorong penulis dalam upaya pembangunan sistem pakar untuk mendeteksi penyebab hilangnya pasokan listrik yang seharusnya dapat dinikmati oleh para

Interrupt berfungsi untuk mengaktifkan program mikrokontroler selanjutnya yaitu mengaktifkan pemancar ultrasonik, mengaktifkan counter penghitung, mengaktifkan buzzer, mengirim data

Penelitian ini menghasilkan data mengenai hambatan belajar siswa pada materi jaring-jaring kubus dan balok, desain didaktis yang dapat mengatasi hambatan belajar siswa

Jika kondisi bernilai benar, maka statement yang akan dijalankan adalah statement setelah if tetapi jika kondisi bernilai salah, maka statement yang akan dijalankan adalah

Dia bertanya kepada ibunya, mengapa dia tidak menyukai Miriam tapi ibunya tidak bisa menjelaskan alasannya karena ibunya mempunyai cinta yang besar kepada Paul

Model regresi cox kegagalan proporsional digunakan untuk mengetahui seberapa besar pengaruh variabel independen terhadap variabel dependen, pada penelitian ini yakni