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:
- Baris 1: `#include <iostream>` adalah direktif praprosesor yang menyertakan file header iostream. File header ini diperlukan untuk menggunakan objek cout dan cin.
- Baris 3: `using namespace std;` adalah deklarasi penggunaan namespace std. Ini memungkinkan penggunaan objek dan fungsi dalam namespace std tanpa harus menuliskan std:: sebelumnya.
- Baris 5: `int main() {` adalah deklarasi fungsi utama dari program. Semua pernyataan program utama akan dieksekusi di dalam fungsi ini.
- Baris 7: `float alas, tinggi, luas;` adalah deklarasi variabel lokal yang akan digunakan dalam program. Variabel `alas`, `tinggi`, dan `luas` memiliki tipe data float.
- Baris 9: `cout << "Masukkan nilai alas: ";` menggunakan objek cout untuk mencetak pesan ke layar yang meminta pengguna memasukkan nilai alas.
- Baris 11: `cin >> alas;` menggunakan objek cin untuk membaca input pengguna dan menyimpannya dalam variabel `alas`.
- Baris 13: `cout << "Masukkan nilai tinggi: ";` menggunakan objek cout untuk mencetak pesan ke layar yang meminta pengguna memasukkan nilai tinggi.
- Baris 15: `cin >> tinggi;` menggunakan objek cin untuk membaca input pengguna dan menyimpannya dalam variabel `tinggi`.
- Baris 17: `luas = 0.5 * alas * tinggi;` menghitung luas segitiga dengan menggunakan rumus luas = 0.5 * alas * tinggi dan menyimpan hasilnya dalam variabel `luas`.
- Baris 19: `cout << "Luas segitiga adalah: " << luas << endl;` menggunakan objek cout untuk mencetak pesan ke layar yang menampilkan luas segitiga yang telah dihitung.
- 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:
- Root node dari pohon urai tersebut adalah fungsi main(), yang merupakan fungsi utama dalam program.
- 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.
- 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.
- Pada cabang int, terdapat variabel luas yang merupakan variabel dengan tipe data int. Variabel ini digunakan untuk menyimpan nilai luas segitiga setelah perhitungan dilakukan.
- Node luas = menunjukkan operasi assignment, yang mengassign hasil perhitungan ke variabel luas.
- Pada cabang sebelah kanan dari node luas =, terdapat operasi perkalian (*) yang digunakan untuk menghitung luas segitiga.
- Pada cabang kiri dari operasi perkalian, terdapat literal 0.5 yang merupakan angka 0.5 yang digunakan dalam perhitungan luas segitiga.
- Pada cabang kanan dari operasi perkalian, terdapat dua variabel alas dan tinggi yang digunakan dalam perhitungan luas segitiga.
- Node cout << menunjukkan operasi output, yang digunakan untuk mencetak teks pada layar.
- Pada cabang kiri dari operasi output, terdapat string literal "Luas" yang akan dicetak pada layar.
- 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:
- State q0: State start, State ini adalah state dimana dimulainya program, selanjutnya diteruskan menuju state q1
- State q1: State lanjut ke state q1 untuk perintah ‘Masukkan nilai alas:’ dengan menggunakan cout << "Masukkan nilai alas: ";.
- State q2: State lanjut ke state q2, pada sate ini program akan membaca nilai alas dengan menggunakan sytax cin >> alas;
- State q3: State lanjut ke state q3 untuk perintah ‘Masukkan nilai tinggi:’ dengan menggunakan cout << "Masukkan nilai tinggi: ";.
- State q4: State lanjut ke state q4, pada sate ini program akan membaca nilai tinggi dengan menggunakan sytax cin >> tinggi;
- State q5: State lanjut ke state q5, pada sate ini program akan melakukan perhitungan luas segitiga dengan menggunakan sytax luas = 0.5 * alas * tinggi;
- 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;
- 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:
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
Posting Komentar