279 lines
6.2 KiB
Markdown
279 lines
6.2 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
|
|
- **Format specifier pada printf**: Dalam solusi, `%d` digunakan untuk mencetak bilangan bulat, dan `%-3d` berarti mencetak bilangan bulat dengan lebar minimum 3 karakter dan rata kiri. Anda bisa menggunakan format seperti `%3d` untuk rata kanan, atau `%.2f` untuk bilangan desimal dengan 2 angka di belakang koma.
|
|
|
|
**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!
|
|
|
|
---KEY_TEXT---
|
|
for
|
|
i <= 5
|
|
j <= 5
|
|
i * j
|
|
printf
|
|
---END_KEY_TEXT---
|
|
|
|
---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---
|