Tugas Kelompok Analisis sintaks, Pohon urai dan Automata dari source code codingan c++ luas segitiga

MENGHITUNG LUAS SEGITIGA


Berikut Ini Adalah Contoh Program Sederhana Dalam Bahasa C++ Untuk Menghitung Luas Segitiga:


#include <iostream>

using namespace std;


int main() {

   float alas, tinggi, luas;

   cout << "Masukkan nilai alas: ";

   cin >> alas;

   cout << "Masukkan nilai tinggi: ";

   cin >> tinggi;

   luas = 0.5 * alas * tinggi;

   cout << "Luas segitiga adalah: " << luas << endl;

   return 0;

}


ANALISIS SOURCE CODE

1. Library yang digunakan:

  • iostream`: Digunakan untuk input dan output dari program.


2. Fungsi `main()`:

  • Program dimulai dari fungsi `main()`, yang merupakan entry point dari program C++.
  • Variabel-variabel yang digunakan dalam program dideklarasikan di awal, yaitu alas, tinggi dan luas dengan tipe data float.

 

3. Masukkan nilai alas

  • Pengguna diminta untuk memasukkan  nilai alas yang akan dihitung.
  • Setelah itu terdapat perintah cin, yaitu untuk membaca input pengguna dan menyimpannya dalam variabel alas.

 

4.  Memasukkan nilai tinggi

  • Pengguna diminta untuk memasukkan  nilai tinggi yang akan dihitung.
  • Setelah itu terdapat perintah cin, yaitu untuk membaca input pengguna dan menyimpannya dalam variabel tinggi.

 

5. Menghitung luas segitiga

  • Hasil dari menghitung luas akan terhitung dengan menggunakan rumus  luas = 0.5 * alas * tinggi;
  • Kemudian hasil akan keluar Hasil akan keluar. 


ANALISIS SINTAX

Berikut adalah analisis syntax pada source code hitung luas segitiga:

  1. Baris 1: `#include <iostream>` adalah direktif praprosesor yang menyertakan file header iostream. File header ini diperlukan untuk menggunakan objek cout dan cin.
  2. Baris 3: `using namespace std;` adalah deklarasi penggunaan namespace std. Ini memungkinkan penggunaan objek dan fungsi dalam namespace std tanpa harus menuliskan std:: sebelumnya.
  3. Baris 5: `int main() {` adalah deklarasi fungsi utama dari program. Semua pernyataan program utama akan dieksekusi di dalam fungsi ini.
  4. Baris 7: `float alas, tinggi, luas;` adalah deklarasi variabel lokal yang akan digunakan dalam program. Variabel `alas`, `tinggi`, dan `luas` memiliki tipe data float.
  5. Baris 9: `cout << "Masukkan nilai alas: ";` menggunakan objek cout untuk mencetak pesan ke layar yang meminta pengguna memasukkan nilai alas.
  6. Baris 11: `cin >> alas;` menggunakan objek cin untuk membaca input pengguna dan menyimpannya dalam variabel `alas`.
  7. Baris 13: `cout << "Masukkan nilai tinggi: ";` menggunakan objek cout untuk mencetak pesan ke layar yang meminta pengguna memasukkan nilai tinggi.
  8. Baris 15: `cin >> tinggi;` menggunakan objek cin untuk membaca input pengguna dan menyimpannya dalam variabel `tinggi`.
  9. Baris 17: `luas = 0.5 * alas * tinggi;` menghitung luas segitiga dengan menggunakan rumus luas = 0.5 * alas * tinggi dan menyimpan hasilnya dalam variabel `luas`.
  10. Baris 19: `cout << "Luas segitiga adalah: " << luas << endl;` menggunakan objek cout untuk mencetak pesan ke layar yang menampilkan luas segitiga yang telah dihitung.
  11. Baris 21: `return 0;` mengembalikan nilai 0 kepada sistem operasi sebagai indikasi bahwa program selesai dieksekusi dengan sukses.

Setelah analisis syntax, source code tersebut terlihat tidak ada kesalahan dalam penulisan syntax. Namun, penting untuk diingat bahwa analisis syntax hanya memeriksa kevalidan sintaksis program, bukan logika program.


POHON URAI

Pohon urai adalah representasi hierarkis dari struktur program yang menggambarkan setiap pernyataan, ekspresi, dan struktur kontrol dalam bentuk hirarki. Setiap pernyataan dan ekspresi dalam program direpresentasikan sebagai node dalam pohon urai, di mana node yang lebih tinggi mewakili blok atau struktur kontrol yang mengandung node yang lebih rendah.

      main()

            |

        /      \

    float     int

             |

       /           \

  alas         tinggi

     |

   luas =

         |

     /       \

 0.5          *

              /     \

         alas     tinggi

            |

        cout <<

            |

       /         \

 "Luas     " luas


Pemaparan

Pohon urai tersebut menggambarkan struktur ekspresi yang terkait dengan perhitungan luas segitiga. Berikut penjelasan dari pohon urai tersebut:

  1. Root node dari pohon urai tersebut adalah fungsi main(), yang merupakan fungsi utama dalam program.
  2. Terdapat dua cabang yang berasal dari root node, yaitu float dan int. Hal ini menunjukkan bahwa program memiliki deklarasi variabel dengan tipe data float dan int.
  3. Pada cabang float, terdapat variabel alas dan tinggi yang merupakan variabel dengan tipe data float. Variabel ini digunakan untuk menyimpan nilai alas dan tinggi segitiga.
  4. Pada cabang int, terdapat variabel luas yang merupakan variabel dengan tipe data int. Variabel ini digunakan untuk menyimpan nilai luas segitiga setelah perhitungan dilakukan.
  5. Node luas = menunjukkan operasi assignment, yang mengassign hasil perhitungan ke variabel luas.
  6. Pada cabang sebelah kanan dari node luas =, terdapat operasi perkalian (*) yang digunakan untuk menghitung luas segitiga.
  7. Pada cabang kiri dari operasi perkalian, terdapat literal 0.5 yang merupakan angka 0.5 yang digunakan dalam perhitungan luas segitiga.
  8. Pada cabang kanan dari operasi perkalian, terdapat dua variabel alas dan tinggi yang digunakan dalam perhitungan luas segitiga.
  9. Node cout << menunjukkan operasi output, yang digunakan untuk mencetak teks pada layar.
  10. Pada cabang kiri dari operasi output, terdapat string literal "Luas" yang akan dicetak pada layar.
  11. Pada cabang kanan dari operasi output, terdapat variabel luas yang nilainya akan dicetak pada layar.

Secara keseluruhan, pohon urai tersebut menggambarkan ekspresi untuk menghitung luas segitiga dan mencetak hasilnya pada layar.


AUTOMATA

Istilah "automata" mengacu pada konsep teori otomata yang berhubungan dengan pemrosesan bahasa formal. Automata seperti finite state machine (FSM) atau pushdown automaton (PDA) digunakan untuk memodelkan bahasa dan tata bahasa yang diterima oleh mesin tersebut.

Automata Dalam Bentuk State

Berikut ini ada automata dalam bentuk state



Pemaparan

Berikut ini adalah pemaparan dari state diatas:

  1. State q0: State start, State ini adalah state dimana dimulainya program, selanjutnya diteruskan menuju state q1
  2. State q1: State lanjut ke state q1 untuk perintah ‘Masukkan nilai alas:’ dengan menggunakan cout << "Masukkan nilai alas: ";.
  3. State q2: State lanjut ke state q2, pada sate ini program akan membaca nilai alas dengan menggunakan sytax cin >> alas;
  4. State q3: State lanjut ke state q3 untuk perintah ‘Masukkan nilai tinggi:’ dengan menggunakan cout << "Masukkan nilai tinggi: ";.
  5. State q4: State lanjut ke state q4, pada sate ini program akan membaca nilai tinggi dengan menggunakan sytax cin >> tinggi;
  6. State q5: State lanjut ke state q5, pada sate ini program akan melakukan perhitungan luas segitiga dengan menggunakan sytax luas = 0.5 * alas * tinggi;
  7. State q6: State lanjut ke state q6, pada sate ini program akan menampilkan hasil luas segitiga dengan menggunakan syntax cout << "Luas segitiga adalah: " << luas << endl;
  8. State q7: State selanjutnya adalah state q7, state ini adalah state terakhir pertanda program sudah selesai.


ANALISIS LEKSIKAL

Analisis leksikal adalah proses dalam kompilasi atau pemrosesan bahasa pemrograman di mana teks program dipecah menjadi unit-unit yang lebih kecil yang disebut token. Token-token ini mewakili elemen-elemen dasar dari bahasa pemrograman, seperti keyword, identifier, operator, tanda baca, dan literal.

Proses analisis leksikal melibatkan pemindaian teks program dari kiri ke kanan, mengidentifikasi pola-pola yang sesuai dengan aturan leksikal bahasa pemrograman yang digunakan. Setiap pola yang cocok diubah menjadi token yang sesuai dengan jenisnya. Misalnya, kata kunci "using" akan dikenali sebagai token keyword, sedangkan identifier seperti "std" akan dikenali sebagai token identifier.

Berikut Analisis Leksikal dari source menghitung luas segitiga:


Token               | Keterangan
------------------- | --------------------------------------------
#include             | Preprocessor directive untuk mengimpor file header
<iostream>          | Header file yang berisi definisi untuk input/output stream
using               | Keyword yang mendeklarasikan namespace yang akan digunakan
namespace           | Keyword yang mendeklarasikan namespace
std                 | Namespace dari standard library C++
;                   | Tanda akhir dari statement
int                 | Tipe data integer
main                | Nama fungsi utama
()                  | Tanda kurung untuk parameter fungsi
{                   | Tanda awal dari blok kode
float               | Tipe data float
alas, tinggi, luas  | Nama variabel bertipe float
;                   | Tanda akhir dari statement
cout                | Objek output stream yang digunakan untuk menampilkan data ke konsol
<<                  | Operator output stream
"Masukkan nilai alas: " | String literal yang akan ditampilkan ke konsol
;                   | Tanda akhir dari statement
cin                 | Objek input stream yang digunakan untuk membaca input dari konsol
>>                  | Operator input stream
alas                | Variabel tempat nilai input akan disimpan
;                   | Tanda akhir dari statement
cout                | Objek output stream yang digunakan untuk menampilkan data ke konsol
<<                  | Operator output stream
"Masukkan nilai tinggi: " | String literal yang akan ditampilkan ke konsol
;                   | Tanda akhir dari statement
cin                 | Objek input stream yang digunakan untuk membaca input dari konsol
>>                  | Operator input stream
tinggi              | Variabel tempat nilai input akan disimpan
;                   | Tanda akhir dari statement
luas                | Variabel tempat hasil perhitungan luas segitiga akan disimpan
=                   | Operator assignment
0.5                 | Literal yang digunakan untuk menghitung luas segitiga
*                   | Operator perkalian
alas                | Variabel yang akan dikalikan dengan tinggi
*                   | Operator perkalian
tinggi              | Variabel yang akan dikalikan dengan alas
;                   | Tanda akhir dari statement
cout                | Objek output stream yang digunakan untuk menampilkan data ke konsol
<<                  | Operator output stream
"Luas segitiga adalah: " | String literal yang akan ditampilkan ke konsol
<<                  | Operator output stream
luas                | Variabel yang berisi hasil perhitungan luas segitiga
<<                  | Operator output stream
endl                | Manipulator stream yang digunakan untuk membuat newline di konsol
;                   | Tanda akhir dari statement
return              | Keyword untuk mengembalikan nilai
0                   | Nilai yang akan dikembalikan
;                   | Tanda akhir dari statement




Teknik Kompilasi G (Kelompok 3)

1. 202031038    Nadila Danti Lestari

2. 202031055    Ridho Ferdiansyah

3. 202031056    Jakfar Ahmad

4. 202031068    Ufie Rahma

5. 202031069    Puput Amaliyah

6. 202031075    Andi Alfiah Amal





Komentar