kka-smk/content/data_types.md

336 lines
9.1 KiB
Markdown
Raw Permalink Normal View History

2026-01-17 11:52:53 +07:00
---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 <stdio.h>
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 <stdio.h>
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 <stdio.h>
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---
2026-01-18 22:44:13 +07:00
---KEY_TEXT---
int
float
double
%s
%d
%.2f
sizeof
---END_KEY_TEXT---
2026-01-17 11:52:53 +07:00
---SOLUTION_CODE---
#include <stdio.h>
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;
}
2026-01-18 22:44:13 +07:00
---END_SOLUTION_CODE---