Langsung ke konten utama

Ravika Azizah 202031277

Salah satu peran pengurai dalam teknik kompilasi adalah mengatasi kesalahan sintak. jelaskan 4 startegi dalam pemulihan kesalahan tersebut!    

        Dalam pengembangan perangkat lunak, teknik kompilasi adalah proses menerjemahkan kode sumber yang ditulis dalam bahasa pemrograman ke dalam bentuk yang dapat dieksekusi oleh komputer. Salah satu tahap penting dalam proses ini adalah penguraian (parsing), di mana pengurai menganalisis sintaksis kode sumber dan memeriksa apakah struktur sintaksisnya sesuai dengan tata bahasa (grammar) yang ditentukan oleh bahasa pemrograman tersebut.

        Pada saat pengurai menemui kesalahan sintaksis dalam kode sumber, strategi pemulihan kesalahan dapat diterapkan untuk memperbaiki atau mengatasi kesalahan tersebut. Berikut ini adalah empat strategi pemulihan kesalahan sintaksis yang sering digunakan:

1. Strategi Injeksi Token (Token Injection):

   Strategi ini melibatkan upaya pengurai untuk memasukkan atau mengganti token yang hilang atau salah dengan token yang memungkinkan pemrosesan sintaksis berlanjut. Misalnya, jika pengurai menemui kurung kurawal '}' yang hilang, strategi ini akan mencoba memasukkan kurung kurawal tersebut ke dalam kode sumber pada posisi yang tepat untuk memulihkan struktur blok yang benar.

2. Strategi Pengabaian Token (Token Skipping):

   Strategi ini memungkinkan pengurai untuk melanjutkan pemrosesan meskipun menemui token yang tidak dikenali atau tidak sesuai dengan sintaksis yang diharapkan. Dalam situasi ini, pengurai dapat melewati token yang salah tersebut dan melanjutkan analisis ke token berikutnya dengan harapan bahwa kesalahan tersebut hanya minor dan tidak akan mempengaruhi keseluruhan struktur sintaksis yang benar.

3. Strategi Sinkronisasi (Synchronization):

   Strategi sinkronisasi digunakan ketika pengurai menemui kesalahan sintaksis dan mencoba menemukan posisi di mana pemrosesan dapat dilanjutkan dengan membuang atau menambahkan token tertentu. Misalnya, pengurai dapat mencari "token sinkronisasi" seperti tanda titik koma (;) untuk mencoba menyinkronkan kembali pemrosesan sintaksis. Dengan menemukan titik sinkronisasi yang tepat, pengurai dapat memulai kembali pemrosesan dari sana dan melanjutkan analisis struktur sintaksis yang benar.

4. Strategi Pemulihan Berbasis Produksi (Production-Based Recovery):

   Strategi ini melibatkan analisis produksi atau aturan gramatikal yang didefinisikan dalam tata bahasa yang digunakan oleh pengurai. Ketika kesalahan terdeteksi, pengurai mencoba mengidentifikasi produksi mana yang mungkin dimaksudkan oleh pengguna dan melakukan penyesuaian dalam pemrosesan sintaksis berdasarkan produksi yang mungkin valid. Dengan memodifikasi produksi atau aturan yang digunakan, pengurai dapat memulihkan struktur sintaksis yang benar.


Penting untuk dicatat

    Bahwa strategi pemulihan kesalahan sintaksis yang digunakan dapat bervariasi tergantung pada desain pengurai dan bahasa pemrograman yang sedang dikompilasi. Selain itu, strategi yang tepat juga tergantung pada tingkat kesalahan dan tujuan dari proses kompilasi yang sedang dilakukan.

    

Apa saja metode yang dipakai untuk mengirimkan parameter? jelaskan masing masing metode tersebut dalam suatu study kasus!

    Dalam pemrograman, seringkali kita perlu mengirimkan parameter atau argumen ke dalam fungsi atau metode. Pengiriman parameter ini memungkinkan kita untuk memberikan data yang diperlukan untuk menjalankan tugas tertentu. Namun, terdapat berbagai metode yang dapat digunakan untuk mengirimkan parameter, dan pemilihan metode yang tepat sangat penting untuk mencapai fungsionalitas yang diinginkan. Dalam blog ini, kita akan menjelajahi beberapa metode yang umum digunakan dalam pengiriman parameter, dan akan mengilustrasikan setiap metode melalui studi kasus yang relevan.


Metode 1: Pengiriman Parameter melalui Nilai (Pass by Value)

Metode pertama yang akan kita bahas adalah pengiriman parameter melalui nilai, juga dikenal sebagai "pass by value". Dalam metode ini, nilai parameter dikopi dan kemudian dikirimkan ke fungsi atau metode yang membutuhkannya. Perubahan yang terjadi pada nilai parameter di dalam fungsi tidak akan mempengaruhi nilai asli dari parameter tersebut.

Studi Kasus:

Misalkan kita memiliki fungsi "tambahDua(angka)" yang bertujuan untuk menambahkan angka input dengan dua. Contoh implementasi dengan metode pengiriman parameter melalui nilai dapat ditunjukkan sebagai berikut:



Pada contoh di atas, nilai parameter x (5) disalin ke variabel lokal angka di dalam fungsi tambahDua. Selanjutnya, variabel angka ditingkatkan dengan dua dan dikembalikan sebagai hasil. Meskipun variabel x dikirimkan sebagai parameter, nilai x tetap tidak berubah.


Metode 2: Pengiriman Parameter melalui Referensi (Pass by Reference)

Metode selanjutnya adalah pengiriman parameter melalui referensi atau "pass by reference". Dalam metode ini, alamat memori atau referensi dari parameter dikirimkan ke fungsi atau metode yang membutuhkannya. Perubahan yang terjadi pada parameter di dalam fungsi akan mempengaruhi nilai asli dari parameter tersebut.

Studi Kasus:
Mari kita lihat sebuah contoh implementasi menggunakan metode pass by reference dalam bahasa pemrograman C++:


Pada contoh di atas, fungsi tambahDua menerima parameter angka sebagai referensi (dinyatakan dengan tanda & di depan tipe data). Perubahan yang terjadi pada variabel angka di dalam fungsi akan mempengaruhi nilai asli dari parameter x di dalam fungsi main. Oleh karena itu, setelah memanggil fungsi tambahDua, nilai x berubah menjadi 7.


Metode 3: Pengiriman Parameter melalui Pointer

Metode berikutnya adalah pengiriman parameter melalui pointer. Dalam metode ini, alamat memori dari parameter dikirimkan ke fungsi atau metode dengan menggunakan pointer. Dengan menggunakan pointer, kita dapat mengakses dan memanipulasi nilai yang disimpan di alamat memori tersebut.

Studi Kasus:
Berikut adalah contoh implementasi menggunakan metode pengiriman parameter melalui pointer dalam bahasa pemrograman C:



Pada contoh di atas, kita mendefinisikan sebuah fungsi tambahDua yang menerima parameter angka sebagai pointer ke int (dinyatakan dengan tipe data int*). Dalam fungsi tersebut, kita mengakses nilai yang disimpan di alamat memori yang ditunjuk oleh pointer dan menambahkannya dengan dua. Dengan meneruskan alamat memori dari variabel x menggunakan operator &, kita memungkinkan fungsi untuk mengubah nilai asli dari x. Sehingga, setelah memanggil fungsi tambahDua, nilai x berubah menjadi 7.


Metode 4: Pengiriman Parameter melalui Nilai Konsantan (Pass by Constant Value)

Metode terakhir yang akan kita bahas adalah pengiriman parameter melalui nilai konsantan atau "pass by constant value". Dalam metode ini, nilai parameter dikirimkan sebagai nilai konsantan, yang berarti fungsi tidak dapat mengubah nilai parameter tersebut.

Studi Kasus:
Sebagai contoh, kita dapat menggunakan bahasa pemrograman Python untuk mengilustrasikan metode ini:






Pada contoh di atas, kita memiliki fungsi tampilkanPesan yang menerima parameter pesan. Namun, karena parameter pesan dikirimkan sebagai nilai konsantan, fungsi tidak dapat mengubah nilai pesan tersebut. Fungsi hanya menampilkan pesan ke layar.

Kesimpulan

Dalam pemrograman, pengiriman parameter memainkan peran penting dalam mentransfer data ke fungsi atau metode. Dalam blog ini, kita telah menjelajahi beberapa metode yang umum digunakan untuk pengiriman parameter, termasuk pengiriman melalui nilai, referensi, pointer, dan nilai konsantan. Masing-masing metode memiliki karakteristik dan kegunaannya sendiri, tergantung pada kebutuhan program yang sedang dikembangkan. Dengan pemahaman yang baik tentang metode pengiriman parameter, kita dapat memilih metode yang tepat untuk mencapai tujuan yang diinginkan dalam pemrograman kita.

Komentar

Postingan populer dari blog ini

Studi Kasus Pemanfaatan Teknik Kompilasi pada Perusahaan Nestlé

  Peningkatan Efisiensi Perangkat Lunak melalui Teknik Kompilasi di Perusahaan Nestlé      Studi kasus yang melibatkan Teknik Kompilasi di perusahaan Nestlé mungkin akan fokus pada penggunaan kompilasi otomatis dan optimasi kode untuk meningkatkan efisiensi dan kinerja perangkat lunak yang digunakan oleh perusahaan. Berikut adalah contoh deskripsi studi kasus potensial: A. Latar Belakang      Perusahaan Nestlé, sebagai salah satu perusahaan makanan dan minuman terbesar di dunia, mengoperasikan berbagai sistem perangkat lunak yang mencakup aspek penting bisnis mereka, termasuk manajemen rantai pasok, manufaktur, logistik, dan analisis data. Perangkat lunak ini mendukung berbagai proses operasional seperti pemantauan persediaan, pengelolaan produksi, analisis penjualan, dan keputusan bisnis strategis.     Seiring dengan skala global dan kompleksitas operasi Nestlé, sistem perangkat lunak yang digunakan oleh perusahaan ini terus berkembang dan s...