---LESSON_INFO--- **Learning Objectives:** - Memahami berbagai tipe data dalam bahasa C - Mengenal tipe data karakter, angka bulat, dan angka desimal - Belajar menggunakan operator sizeof() untuk mengetahui ukuran tipe data - Memahami penggunaan tipe data dalam konteks nyata - Mengenal tipe data extended (lebih lanjut) **Prerequisites:** - Dasar-dasar pemrograman - Pemahaman tentang program Halo Dunia - Pemahaman tentang variabel ---END_LESSON_INFO--- # Tipe Data dalam C **Tipe data dalam bahasa C** menentukan jenis nilai yang bisa disimpan dalam variabel, serta ukuran dan rentang nilai yang bisa ditampung. Setiap variabel dalam C harus memiliki tipe data yang dideklarasikan. ## Mengapa Tipe Data Penting? **Tipe data** penting karena: - Menentukan **jumlah memori** yang dialokasikan untuk variabel - Menentukan **jenis nilai** yang bisa disimpan (angka, karakter, dll.) - Menentukan **operasi** yang bisa dilakukan pada variabel tersebut ## Tipe Data Karakter **Tipe data `char`** digunakan untuk menyimpan **satu karakter**. Karakter harus ditempatkan di dalam tanda petik tunggal `' '`. ```c char myGrade = 'A'; char letter = 'x'; char symbol = '@'; ``` **Format specifier** untuk `char` adalah `%c`: ```c char myGrade = 'A'; printf("My grade is: %c\n", myGrade); // Output: My grade is: A ``` ## Tipe Data Angka Bulat **Tipe data `int`** digunakan untuk menyimpan **bilangan bulat** (angka tanpa desimal). ```c int myNum = 5; // Bilangan positif int myNegativeNum = -5; // Bilangan negatif int zero = 0; // Nol ``` **Format specifier** untuk `int` adalah `%d` atau `%i`: ```c int myNum = 5; printf("My number is: %d\n", myNum); // Output: My number is: 5 ``` ### Tipe Data Integer Lainnya C juga menyediakan tipe data integer lainnya: - `short` - versi pendek dari int (biasanya 2 byte) - `long` - versi panjang dari int (biasanya 8 byte) - `unsigned int` - versi int tanpa tanda (hanya nilai positif dan nol) ## Tipe Data Desimal **Tipe data `float`** digunakan untuk menyimpan **bilangan desimal** dengan presisi tunggal. ```c float myFloat = 9.99; float scientific = 3e5; // 300000 float negative = -3.99; ``` **Format specifier** untuk `float` adalah `%f`: ```c float myFloat = 9.99; printf("My float is: %f\n", myFloat); // Output: My float is: 9.990000 ``` **Tipe data `double`** digunakan untuk menyimpan **bilangan desimal** dengan presisi ganda (lebih akurat dari float). ```c double myDouble = 19.99; double precise = 3.141592653589793; ``` **Format specifier** untuk `double` adalah `%lf`: ```c double myDouble = 19.99; printf("My double is: %lf\n", myDouble); // Output: My double is: 19.990000 ``` ## Mengetahui Ukuran Tipe Data Anda bisa menggunakan **operator `sizeof()`** untuk mengetahui ukuran tipe data dalam byte: ```c #include int main() { printf("Size of char: %zu byte(s)\n", sizeof(char)); printf("Size of int: %zu byte(s)\n", sizeof(int)); printf("Size of float: %zu byte(s)\n", sizeof(float)); printf("Size of double: %zu byte(s)\n", sizeof(double)); return 0; } ``` **Output (dapat bervariasi tergantung sistem):** ``` Size of char: 1 byte(s) Size of int: 4 byte(s) Size of float: 4 byte(s) Size of double: 8 byte(s) ``` ## Tipe Data Extended C juga menyediakan tipe data extended untuk kebutuhan spesifik: ### Tipe Data Unsigned - `unsigned char` - karakter tanpa tanda (0 hingga 255) - `unsigned int` - integer tanpa tanda (0 hingga 4,294,967,295) - `unsigned short` - short integer tanpa tanda - `unsigned long` - long integer tanpa tanda ### Tipe Data Signed - `signed char` - karakter dengan tanda (-128 hingga 127) - `signed int` - integer dengan tanda (sama seperti int biasa) ## Contoh Nyata Penggunaan Tipe Data Berikut adalah contoh penggunaan berbagai tipe data dalam situasi nyata: ```c #include int main() { // Tipe data karakter char initial = 'J'; // Tipe data angka bulat int age = 25; unsigned int population = 1000000; // Tipe data desimal float temperature = 36.6; double preciseValue = 3.141592653589793238; // Menampilkan informasi printf("Initial: %c\n", initial); printf("Age: %d years old\n", age); printf("Population: %u people\n", population); printf("Temperature: %.1f°C\n", temperature); printf("Pi: %.10lf\n", preciseValue); // Menampilkan ukuran tipe data printf("\nSize of age variable: %zu bytes\n", sizeof(age)); printf("Size of temperature variable: %zu bytes\n", sizeof(temperature)); return 0; } ``` **Output:** ``` Initial: J Age: 25 years old Population: 1000000 people Temperature: 36.6°C Pi: 3.1415926535 Size of age variable: 4 bytes Size of temperature variable: 4 bytes ``` ## Konstanta dalam C **Konstanta** dalam bahasa C adalah nilai tetap yang tidak dapat diubah selama eksekusi program. Konstanta juga dikenal sebagai **literal** karena nilainya langsung ditulis dalam kode program. ### Jenis-Jenis Konstanta Ada beberapa jenis konstanta dalam bahasa C: #### 1. Konstanta Integer Nilai bilangan bulat yang tidak memiliki bagian desimal: ```c const int MAX_STUDENTS = 100; int count = 50; ``` #### 2. Konstanta Floating-Point Nilai bilangan desimal: ```c const double PI = 3.14159; float tax_rate = 0.08; ``` #### 3. Konstanta Karakter Satu karakter yang diapit oleh tanda petik tunggal: ```c const char NEWLINE = '\n'; char grade = 'A'; ``` #### 4. Konstanta String Rangkaian karakter yang diapit oleh tanda petik ganda: ```c const char *GREETING = "Hello, World!"; char message[] = "Welcome to C programming"; ``` ### Keyword `const` Anda bisa membuat variabel menjadi konstan dengan menggunakan **keyword `const`**. Setelah dideklarasikan sebagai konstan, nilai variabel tersebut tidak bisa diubah: ```c const int AGE = 25; // AGE = 30; // Ini akan menyebabkan error karena AGE adalah konstan ``` ### Preprocessor `#define` Alternatif lain untuk membuat konstanta adalah dengan menggunakan **preprocessor directive `#define`**: ```c #define PI 3.14159 #define MAX_SIZE 100 #define NAME "John Doe" int main() { double area = PI * 5 * 5; // Menghitung luas lingkaran dengan jari-jari 5 printf("Area of circle: %.2f\n", area); return 0; } ``` **Tips:** - Gunakan tipe data yang **tepat** untuk kebutuhan Anda - Perhatikan **rentang nilai** yang bisa ditampung oleh masing-masing tipe data - Gunakan `unsigned` jika Anda yakin nilai tidak akan negatif - Gunakan `double` jika Anda membutuhkan presisi tinggi **Referensi:** - [https://www.w3schools.com/c/c_data_types.php](https://www.w3schools.com/c/c_data_types.php) - [https://www.w3schools.com/c/c_data_types_characters.php](https://www.w3schools.com/c/c_data_types_characters.php) - [https://www.w3schools.com/c/c_data_types_numbers.php](https://www.w3schools.com/c/data_types_numbers.php) - [https://www.w3schools.com/c/c_data_types_dec.php](https://www.w3schools.com/c/c_data_types_dec.php) - [https://www.w3schools.com/c/c_data_types_sizeof.php](https://www.w3schools.com/c/c_data_types_sizeof.php) - [https://www.w3schools.com/c/c_data_types_reallife.php](https://www.w3schools.com/c/c_data_types_reallife.php) - [https://www.w3schools.com/c/c_data_types_extended.php](https://www.w3schools.com/c/c_data_types_extended.php) - [Hello, World!](lesson/hello_world.md) - [Variables in C](lesson/variables.md) ---EXERCISE--- # Latihan: Menggunakan Tipe Data Dalam latihan ini, Anda akan membuat program sederhana yang menggunakan berbagai tipe data untuk menyimpan informasi buku dan menampilkannya. **Requirements:** - Buat variabel `title` untuk menyimpan judul buku (gunakan tipe data char array) - Buat variabel `pages` untuk menyimpan jumlah halaman (gunakan tipe data int) - Buat variabel `price` untuk menyimpan harga buku (gunakan tipe data float) - Buat variabel `rating` untuk menyimpan rating buku (gunakan tipe data double) - Tampilkan informasi buku menggunakan printf dengan format specifier yang sesuai - Tampilkan ukuran dari variabel pages menggunakan sizeof() **Expected Output:** ``` Book Title: The Art of Programming Pages: 450 Price: $49.99 Rating: 4.75 Size of pages variable: 4 byte(s) ``` Try writing your solution in the code editor below! ---EXPECTED_OUTPUT--- Book Title: The Art of Programming Pages: 450 Price: $49.99 Rating: 4.75 Size of pages variable: 4 byte(s) ---END_EXPECTED_OUTPUT--- ---INITIAL_CODE--- #include int main() { // Deklarasi variabel di sini // Tampilkan informasi buku di sini printf("Book Title: \n"); printf("Pages: \n"); printf("Price: $\n"); printf("Rating: \n"); printf("Size of pages variable: byte(s)\n"); return 0; } ---END_INITIAL_CODE--- ---KEY_TEXT--- int float double %s %d %.2f sizeof ---END_KEY_TEXT--- ---SOLUTION_CODE--- #include int main() { // Deklarasi variabel char title[] = "The Art of Programming"; int pages = 450; float price = 49.99; double rating = 4.75; // Tampilkan informasi buku printf("Book Title: %s\n", title); printf("Pages: %d\n", pages); printf("Price: $%.2f\n", price); printf("Rating: %.2lf\n", rating); printf("Size of pages variable: %zu byte(s)\n", sizeof(pages)); return 0; } ---END_SOLUTION_CODE---