(Pertemuan 04) Logika Perulangan: FOR, WHILE

Looping Logic: FOR, WHILE

Offline di Departemen Matematika
Author

Tim Dosen Praktikum Algoritma dan Pemrograman

Published

September 17, 2024

Kembali ke Mata Kuliah Praktikum Algoritma dan Pemrograman

17 September 2024 - Pertemuan 4

Materi Pembahasan:

  1. FOR Loop

  2. FOR Loop dengan suatu input

  3. Nested FOR Loop

  4. Penggunaan break dalam FOR Loop

  5. Penggunaan break pada Nested Loop

  6. Penggunaan continue dalam FOR Loop

  7. Penggunaan continue dalam Nested Loop

  8. While Loop

  9. Break dalam WHILE Loop

  10. Continue dalam WHILE Loop

Praktikum Algoritma dan Pemrograman PTA 2024-2025
Departemen Matematika FMIPA Universitas Indonesia

FOR Loop

For loop dapat mengiterasi suatu barisan tertentu dengan menggunakan fungsi range pada python.

# iterasi dari 0 sampai n-1

for x in range(5):
  print(x)
0
1
2
3
4
# iterasi dari 3 sampai 9

for x in range(3, 10):
    print(x)
3
4
5
6
7
8
9
# iterasi dengan kelipatan 3

for x in range(0, 9, 3):
    print(x)
0
3
6
# iterasi tinggi ke rendah

for x in range(10,0,-1):
  print(x)
10
9
8
7
6
5
4
3
2
1
for x in range(10,0):
  print(x)

# kenapa sintaks di atas tidak mencetak output?
# iterasi suatu string

for i in "algoritma dan pemrograman":
  print(i)
a
l
g
o
r
i
t
m
a
 
d
a
n
 
p
e
m
r
o
g
r
a
m
a
n

FOR Loop dengan suatu input

n = int(input("Masukan bilangan bulat positif : "))
for x in range(n):
  print(x)
Masukan bilangan bulat positif : 5
0
1
2
3
4

Nested FOR Loop

# Pada iterasi pertama, i = 0, kemudian for loop di dalamnya (j in range(5)) akan menghasilkan nilai j dari 0 hingga 4.
# Setelah semua nilai j dicetak untuk i = 0, iterasi i akan berlanjut ke 1 dan begitu seterusnya hingga i = 2.
# Proses berlanjut hingga seluruh kombinasi i dan j tercetak.

for i in range(3):
    for j in range(5):
        print(i, j)
0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4
2 0
2 1
2 2
2 3
2 4

Penggunaan break dalam For Loop

Penggunaan break untuk keluar dari for loop lebih cepat.

# Program akan mencetak karakter dari string "algoritma dan pemrograman".
# Saat karakter 'e' ditemukan, pernyataan break dijalankan, sehingga loop berhenti sebelum mencetak karakter 'k'.
# break hanya keluar dari loop yang sedang dijalankan, tidak memengaruhi nested loop yang lain

for i in "algoritma dan pemrograman":
    if i == "e":
        break
    print(i)
a
l
g
o
r
i
t
m
a
 
d
a
n
 
p

Penggunaan break pada Nested Loop

for i in range(3):
    for j in "algoritma":
        if j == "r":
            break
        print(i, j)
0 a
0 l
0 g
0 o
1 a
1 l
1 g
1 o
2 a
2 l
2 g
2 o

Penggunaan continue dalam For Loop

Pernyataan continue digunakan untuk menskip sisa dari program didalam loop untuk interasi tertentu saja. Loop tidak berhenti tetapi lanjut ke iterasi selanjutnya.

Pernyataan continue dalam for loop digunakan untuk melewatkan sisa kode dalam iterasi saat ini dan melanjutkan ke iterasi berikutnya, tanpa keluar dari loop. Dengan kata lain, ketika continue ditemukan dalam sebuah loop, Python akan melewati semua perintah di bawah continue untuk iterasi tersebut dan langsung melanjutkan ke iterasi berikutnya.

#contoh program yang menghiraukan bilangan genap

n = int(input("Masukan bilangan bulat positif: "))
for i in range(1, n+1):
    if i % 2 == 0:
        continue
    print(i)
Masukan bilangan bulat positif: 10
1
3
5
7
9

Penggunaan continue dalam Nested Loop

Continue hanya menskip satu iterasi dari for loop yang sedang dijalankan (tidak menskip semua loop pada nested loop)

for i in range(4):
    for j in "algoritma":
        if j == "r":
            continue
        print(i, j)
0 a
0 l
0 g
0 o
0 i
0 t
0 m
0 a
1 a
1 l
1 g
1 o
1 i
1 t
1 m
1 a
2 a
2 l
2 g
2 o
2 i
2 t
2 m
2 a
3 a
3 l
3 g
3 o
3 i
3 t
3 m
3 a

WHILE Loop

While loop akan terus menjalankan suatu perintah berulang kali selama kondisinya terpenuhi (benar). Namun, perlu berhati-hati karena loop dapat berjalan tanpa henti jika kondisinya tidak pernah menjadi salah. Jika hal ini terjadi, Anda mungkin perlu menghentikan atau me-restart kernel untuk mengakhiri eksekusi program.

i = 1
while i < 6:
    print(i)
    i += 1
1
2
3
4
5
for i in range (1, 6):
  print (i)
1
2
3
4
5
# Iterasi dengan membagi bilangan dengan dua sampai |i| < 1
i = 200
while abs(i) > 1:
    print(i)
    i = i / 2
200
100.0
50.0
25.0
12.5
6.25
3.125
1.5625
# Input dua bilangan bulat i, j
# i akan dijumlahkan dengan 1 dan j akan dikurangi dengan 1 sampai i positif dan j negatif

i = int(input("Masukkan bilangan bulat pertama: "))
j = int(input("Masukkan bilangan bulat kedua: "))
while i <= 0 or j >= 0:
    print(i, j)
    i += 1
    j -= 1
Masukkan bilangan bulat pertama: 8
Masukkan bilangan bulat kedua: 5
8 5
9 4
10 3
11 2
12 1
13 0

Break dalam WHILE Loop

n = int(input("Masukkan bilangan bulat: "))
while n > 1:
    n = n / 2
    if n == 2:
        break
    print(n)
Masukkan bilangan bulat: 8
4.0

Continue dalam WHILE Loop

n = int(input("Masukkan bilangan bulat positif: "))
i = 0
while i < n:
    i += 1
    if i % 2 == 0:
        continue  # Lewati bilangan genap
    print(i)
Masukkan bilangan bulat positif: 10
1
3
5
7
9

Diskusi

Program berikut seharusnya menghitung nilai dari $ s=_{k=1}^{M} $.

Perbaiki kodenya agar program berjalan dengan baik.

(s, k, M) = (0, 1, 100)
while k <= M:
  s += 1/k
  k += 1
print (s)
5.187377517639621
(s, k, M) = (0, 1, 100)
for k in range (1,M+1):
  s += 1/k
  k += 1
print (s)
5.187377517639621