---LESSON_INFO--- **Learning Objectives:** - Memahami konsep struktur (struct) dalam bahasa C - Belajar mendeklarasikan dan menggunakan struktur - Mengenal typedef untuk membuat alias tipe data - Memahami aplikasi struktur dalam program **Prerequisites:** - Pemahaman tentang variabel dan tipe data - Pemahaman dasar tentang pointer ---END_LESSON_INFO--- # Struktur dalam C Struktur dalam C adalah variabel khusus yang besar yang berisi beberapa variabel bernama di dalamnya. Struktur adalah dasar utama untuk objek dan kelas dalam C. Struktur digunakan untuk: * Serialisasi data * Melewatkan beberapa argumen masuk dan keluar dari fungsi melalui satu argumen * Struktur data seperti daftar tertaut, pohon biner, dan lainnya Contoh paling dasar dari struktur adalah **titik**, yang merupakan entitas tunggal yang berisi dua variabel - `x` dan `y`. Mari kita definisikan sebuah titik: ```c struct point { int x; int y; }; ``` Sekarang, mari kita definisikan titik baru, dan gunakan. Asumsikan fungsi `draw` menerima titik dan menggambarnya di layar. Tanpa struct, penggunaannya akan memerlukan dua argumen - masing-masing untuk setiap koordinat: ```c /* menggambar titik di 10, 5 */ int x = 10; int y = 5; draw(x, y); ``` Menggunakan struct, kita bisa melewatkan argumen titik: ```c /* menggambar titik di 10, 5 */ struct point p; p.x = 10; p.y = 5; draw(p); ``` Untuk mengakses variabel titik, kita menggunakan operator titik `.`. ## Typedef Typedef memungkinkan kita untuk mendefinisikan tipe dengan nama yang berbeda - yang bisa sangat berguna ketika berurusan dengan struct dan pointer. Dalam kasus ini, kita ingin menghilangkan definisi panjang dari struktur titik. Kita bisa menggunakan sintaks berikut untuk menghapus kata kunci `struct` dari setiap kali kita ingin mendefinisikan titik baru: ```c typedef struct { int x; int y; } point; ``` Ini akan memungkinkan kita untuk mendefinisikan titik baru seperti ini: ```c point p; ``` Struktur juga bisa menyimpan pointer - yang memungkinkan mereka menyimpan string, atau pointer ke struktur lain juga - yang merupakan kekuatan sejati mereka. Sebagai contoh, kita bisa mendefinisikan struktur kendaraan dengan cara berikut: ```c typedef struct { char * brand; int model; } vehicle; ``` Karena brand adalah pointer char, tipe vehicle bisa berisi string (dalam hal ini, menunjukkan merek kendaraan). ```c vehicle mycar; mycar.brand = "Ford"; mycar.model = 2007; ``` --- ## Tabel Komponen Struktur dalam C | Komponen | Deskripsi | Contoh | |----------|-----------|--------| | struct | Mendeklarasikan struktur | `struct name { ... };` | | typedef | Membuat alias untuk tipe data | `typedef struct { ... } name;` | | Akses anggota | Mengakses elemen struktur | `struct_var.member` | | Pointer ke anggota | Mengakses elemen lewat pointer | `ptr->member` | ---EXERCISE--- # Latihan: Membuat Struktur Orang Definisikan struktur data baru, bernama "person", yang berisi string (pointer ke char) bernama `name`, dan integer bernama `age`. **Requirements:** - Buat struktur person dengan dua anggota - Gunakan pointer char untuk name - Gunakan integer untuk age - Gunakan typedef untuk membuat alias **Expected Output:** ``` John is 27 years old. ``` Try writing your solution in the code editor below! ---KEY_TEXT--- typedef struct char * name int age person ---END_KEY_TEXT--- ---EXPECTED_OUTPUT--- John is 27 years old. ---END_EXPECTED_OUTPUT--- ---INITIAL_CODE--- #include /* definisikan struct person di sini menggunakan sintaks typedef */ int main() { person john; /* kode pengujian */ john.name = "John"; john.age = 27; printf("%s is %d years old.", john.name, john.age); } ---END_INITIAL_CODE--- ---SOLUTION_CODE--- #include typedef struct { char * name; int age; } person; int main() { person john; /* kode pengujian */ john.name = "John"; john.age = 27; printf("%s is %d years old.", john.name, john.age); } ---END_SOLUTION_CODE---