sinau-c/content/for_loops.md

269 lines
5.9 KiB
Markdown

---LESSON_INFO---
**Learning Objectives:**
- Memahami konsep perulangan for dalam bahasa C
- Belajar menggunakan perulangan for untuk iterasi
- Mengenal struktur perulangan for
- Memahami cara menggunakan perulangan untuk memproses array
- Mengenal perulangan bersarang (nested loops)
**Prerequisites:**
- Pemahaman tentang variabel dan tipe data
- Pemahaman dasar tentang program C
---END_LESSON_INFO---
# Perulangan For dalam C
**Perulangan for** dalam bahasa C digunakan untuk mengulang blok kode sejumlah kali yang telah ditentukan. Perulangan for sangat berguna ketika Anda tahu berapa kali Anda ingin mengulang kode tersebut.
## Sintaks Perulangan For
```c
for (inisialisasi; kondisi; peningkatan) {
// blok kode yang akan diulang
}
```
### Bagian-bagian Perulangan For:
- **Inisialisasi**: Menetapkan nilai awal pada variabel iterator (dijalankan sekali di awal)
- **Kondisi**: Kondisi yang diperiksa sebelum setiap iterasi (jika benar, perulangan dilanjutkan)
- **Peningkatan**: Operasi yang dilakukan setelah setiap iterasi (meningkatkan/mengurangi iterator)
## Contoh Dasar Perulangan For
Berikut adalah contoh sederhana dari perulangan for:
```c
#include <stdio.h>
int main() {
for (int i = 1; i <= 5; i++) {
printf("%d ", i);
}
return 0;
}
```
**Output:**
```
1 2 3 4 5
```
## Perulangan For dengan Array
Perulangan for sangat berguna untuk mengakses elemen-elemen array:
```c
#include <stdio.h>
int main() {
int numbers[] = {10, 20, 30, 40, 50};
int n = sizeof(numbers) / sizeof(numbers[0]); // menghitung jumlah elemen
for (int i = 0; i < n; i++) {
printf("Elemen ke-%d: %d\\n", i, numbers[i]);
}
return 0;
}
```
**Output:**
```
Elemen ke-0: 10
Elemen ke-1: 20
Elemen ke-2: 30
Elemen ke-3: 40
Elemen ke-4: 50
```
## Perulangan For Bersarang (Nested For Loops)
Anda bisa menggunakan **perulangan for di dalam perulangan for lainnya** untuk membuat nested loops. Ini sangat berguna untuk bekerja dengan struktur data dua dimensi seperti matriks.
```c
#include <stdio.h>
int main() {
// Mencetak pola segitiga
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= i; j++) {
printf("* ");
}
printf("\\n");
}
return 0;
}
```
**Output:**
```
*
* *
* * *
* * * *
* * * * *
```
## Jenis-Jenis Peningkatan dalam For Loop
Anda bisa menggunakan berbagai jenis peningkatan dalam perulangan for:
### Menaikkan dengan nilai tertentu
```c
for (int i = 0; i <= 10; i += 2) {
printf("%d ", i); // Output: 0 2 4 6 8 10
}
```
### Menurunkan nilai
```c
for (int i = 10; i >= 0; i--) {
printf("%d ", i); // Output: 10 9 8 7 6 5 4 3 2 1 0
}
```
### Peningkatan dengan nilai selain 1
```c
for (int i = 0; i < 20; i += 3) {
printf("%d ", i); // Output: 0 3 6 9 12 15 18
}
```
## Contoh Nyata Penggunaan For Loop
Berikut adalah contoh penggunaan perulangan for dalam situasi nyata:
```c
#include <stdio.h>
int main() {
// Menghitung rata-rata nilai siswa
int scores[] = {85, 92, 78, 96, 88, 76, 94, 89, 91, 87};
int n = sizeof(scores) / sizeof(scores[0]);
int total = 0;
printf("Daftar nilai siswa:\\n");
for (int i = 0; i < n; i++) {
printf("Siswa %d: %d\\n", i+1, scores[i]);
total += scores[i];
}
float average = (float)total / n;
printf("\\nTotal nilai: %d\\n", total);
printf("Rata-rata nilai: %.2f\\n", average);
return 0;
}
```
**Output:**
```
Daftar nilai siswa:
Siswa 1: 85
Siswa 2: 92
Siswa 3: 78
Siswa 4: 96
Siswa 5: 88
Siswa 6: 76
Siswa 7: 94
Siswa 8: 89
Siswa 9: 91
Siswa 10: 87
Total nilai: 876
Rata-rata nilai: 87.60
```
## Perbandingan For dan While Loop
Meskipun for dan while loop bisa digunakan untuk hal yang sama, for loop lebih cocok ketika jumlah iterasi diketahui sebelumnya:
```c
// Menggunakan for loop
for (int i = 0; i < 5; i++) {
printf("%d ", i);
}
// Setara dengan while loop
int i = 0;
while (i < 5) {
printf("%d ", i);
i++;
}
```
**Tips:**
- Gunakan **for loop** ketika Anda tahu berapa kali perulangan akan dijalankan
- Gunakan **while loop** ketika jumlah iterasi tergantung pada kondisi yang dinamis
- Pastikan kondisi perulangan akan berubah sehingga perulangan tidak menjadi infinite loop
- Gunakan variabel iterator yang sesuai untuk mengakses elemen array atau menghitung iterasi
**Referensi:**
- [https://www.w3schools.com/c/c_for_loop.php](https://www.w3schools.com/c/c_for_loop.php)
- [https://www.w3schools.com/c/c_for_loop_nested.php](https://www.w3schools.com/c/c_for_loop_nested.php)
- [https://www.w3schools.com/c/c_for_loop_reallife.php](https://www.w3schools.com/c/c_for_loop_reallife.php)
---EXERCISE---
# Latihan: Matriks Perkalian
Dalam latihan ini, Anda akan membuat program yang mencetak tabel perkalian 5x5 menggunakan nested for loops.
**Requirements:**
- Gunakan nested for loops untuk membuat tabel perkalian
- Baris dan kolom harus dari 1 hingga 5
- Tampilkan hasil perkalian dari baris dan kolom
- Format output harus rapi dan mudah dibaca
**Expected Output:**
```
Tabel Perkalian 5x5:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
```
Try writing your solution in the code editor below!
---EXPECTED_OUTPUT---
Tabel Perkalian 5x5:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
---END_EXPECTED_OUTPUT---
---INITIAL_CODE---
#include <stdio.h>
int main() {
printf("Tabel Perkalian 5x5:\\n");
// TODO: Gunakan nested for loops untuk mencetak tabel perkalian
// Baris dan kolom dari 1 hingga 5
return 0;
}
---END_INITIAL_CODE---
---SOLUTION_CODE---
#include <stdio.h>
int main() {
printf("Tabel Perkalian 5x5:\\n");
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
printf("%-3d", i * j); // %-3d untuk format rata kiri dengan lebar 3 karakter
}
printf("\\n");
}
return 0;
}
---END_SOLUTION_CODE---