Modul 2: Perulangan, List, dan String - Algoritma-dan-Pemrograman-ITS/DasarPemrograman GitHub Wiki

Daftar Isi

Perulangan

Perulangan atau looping digunakan untuk menjalankan suatu blok kode secara berulang kali. Python mendukung dua jenis loop utama, yaitu for dan while

Perulangan For

Perulangan for digunakan untuk mengulang melalui elemen-elemen dari suatu urutan (iterable sequences), seperti list, tuple, string, dictionary, atau range(). Perulangan for memiliki sintaks sebagai berikut

for <val> in <sequence>:
    # blok kode yang akan dijalankan
    .
    .

Contoh: loop melalui String

language = 'Python'

for i in language:
    print(i)
  • Pada setiap iterasi (putaran perulangan), i merupakan variabel yang digunakan untuk mewakili setiap elemen dari language.
  • in language berarti Python akan mengambil setiap karakter dari string language secara berurutan (dimulai dari P, lalu y, dan seterusnya sampai n) dan disimpan pada variable i.

Contoh: loop melalui range()

Pada python fungsi range() digunakan untuk menghasilkan deret angka sesuai dengan pola tertentu (sequence). Sintkas dari range():

range(start, stop, step)
  • start: (opsional) menentukan angka awal dari deret. Jika tidak diatur, nilai default-nya adalah 0.
  • stop: menentukan angka akhir deret, tetapi tidak termasuk angka tersebut.
  • step: (opsional) Menentukan kenaikan atau langkah antara setiap angka dalam deret. Jika tidak diatur, nilai default-nya adalah 1.

Fungsi range() biasanya dimanfaatkan oleh loop-for sebagai batasan atau kontrol iterasi. Contoh program:

for i in range(1,4):
    print(i)

Output:

1
2
3

Perulangan While

Perulangan while memungkinkan kita menjalankan blok kode berulang kali selama kondisi yang ditentukan masih memenuhi. Sintaks perulangan while:

# initial value misal, i = 0
while <Ekspresi/Kondisi>:
    # blok kode yang akan dijalankan
    .
    .
    .
    # increment/decrement misalnya, i+=1

Cara kerja perulangan while mirip dengan if. Jika pada if potongan kode akan dieksekusi sekali saja apabila ekspresi/kondisi bernilai TRUE, pada while potongan kode akan terus dieksekusi hingga ekspresi/kondisi menghasilkan FALSE.

Contoh

i = 0
while i < 10:
    print(f"Hello World! ke-{i}")
    i += 1

Sehingga pada contoh di atas:

  • Pada awalnya, variabel i bernilai 0.
  • Sequence selanjutnya adalah while, dan i bernilai kurang dari 10 (TRUE), maka kode didalam while akan dijalankan, yakni print Hello world ke-i.
  • Setelah melakukan print hello world, variabel i akan di increment, dan kembali ke statement while untuk memeriksa apakah i masih kurang dari 10 setelah di-increment
  • Karena setelah i di-increment nilainya masih 1 dan kurang dari 10, maka while akan dijalankan lagi hingga i bernilai 10 yang berarti tidak memenuhi kondisi while.

Perulangan/Percabangan Bersarang (Nested)

Percabangan dan perulangan juga dapat dibuat secara bersarang (membuat percabangan/perulangan di dalam percabangan/perulangan), tentu saja menyesuaikan kebutuhan. Contoh berikut adalah perulangan for bersarang.

for i in range(1, 11):  # Perulangan luar (dari 1 sampai 10)
    # Statement yang ingin dijalankan pada level terluar
    for j in range(1, 11):  # Perulangan dalam (dari 1 sampai 10)
        # Statement yang ingin dijalankan pada level terdalam

        # Percabangan di dalam perulangan
        if i == 10:
            # Lakukan sesuatu
            pass  # Ganti dengan tindakan yang diinginkan

    # Statement yang ingin dijalankan pada level terluar

Break dan Continue

Keyword break dan continue digunakan untuk mengendalikan (kontrol) alur pada perulangan. Berikut penjelasannya.

Break

Perintah break digunakan untuk menghentikan perulangan (secara paksa). Apabila perintah break pada suatu perulangan dijalankan, maka perulangan tersebut akan dihentikan (secara paksa) dari titik dimana perintah break muncul.

Contoh

for i in range(1, 7):  # Perulangan dari 1 hingga 6 (range(1, 7))
    print(i)
    # Jika i adalah 4, maka keluar dari perulangan
    if i == 4:
        break

Continue

Perintah continue dalam Python digunakan untuk melewati sisa kode dalam iterasi saat ini dari sebuah loop (baik for atau while) dan langsung melanjutkan ke iterasi berikutnya.

Contoh

for i in range(1, 6):
    if i == 4:
        continue  # Melewati sisa kode dalam iterasi ini jika i adalah 4
    print(i)

Infinite Loop

Infinite loop adalah kasus di mana perulangan tidak akan pernah berhenti. Hal ini terjadi karena perulangan tidak akan pernah menemui kondisi yang membuatnya berhenti. Contoh di bawah akan menghasilkan infinite loop.

i = 0
while i < 10:
    print(f"Hello World! ke-{i}")
    # perulangan tidak akan berhenti

Pada kasus di atas, perulangan tidak akan berhenti karena kondisi pada while akan selalu benar jika variabel i tidak mengalami perubahan. Oleh karena itu, penting untuk memastikan bahwa variabel dalam kondisi loop diubah (diberi increment atau decrement) agar loop tidak menjadi infinite (tak berujung).

List

Pengenalan List

List adalah struktur data dalam Python yang memungkinkan kita untuk mengelompokkan dan menyimpan beberapa item sekaligus. List merupakan salah satu tipe data collection built-in dari python. Berbeda dengan array di beberapa bahasa pemrograman lain, list di Python:

  • Dapat menampung berbagai tipe data (tidak harus homogen). Misalnya, dalam satu list bisa terdapat elemen dengan tipe int, string, bahkan objek atau tipe data lainnya.
  • Ukuran list dinamis. Kalian dapat menambah atau menghapus elemen dari list, dan ukuran list akan menyesuaikan secara otomatis.

Karakteristik List

Ada lebih dari satu tipe data collection yang memungkinkan kita untuk mengelompokkan dan menyimpan beberapa item sekaligus(seperti tuples, set, dictionary, etc), namun list memiliki karakter tersendiri. Karakteristik dari list:

  • Ordered - List dapat mempertahankan urutan elemen.
  • Mutable - Item dapat diubah setelah dibuat.
  • Allow duplicates - List dapat berisi nilai yang sama atau duplikat.

Inisialisasi List

Seperti halnya tipe data lain pada python, list dapat di-inisialisasi langsung tanpa perlu deklarasi. Sintaksnya adalah seperti berikut.

identifier_list = [elem1, elem2, elem3, ....]

Contoh:

angka = [1, 2, 3, 4, 5]

Python mengidentifikasi list dengan menggunakan kurung siku []. Selain itu, list di Python tidak memerlukan penentuan ukuran (size) terlebih dahulu karena bersifat dinamis.

Mengakses List

Seperti yang sudah dijelaskan pada karakteristik list, list disimpan secara terurut/ordered. Untuk mengakses elemen di dalam list, Python menggunakan zero-based index, yang berarti indeks pertama adalah 0 dan elemen terakhir adalah N-1, di mana N adalah panjang list.

Pengaksesan Satu Elemen

Pengaksesan elemen dalam list dilakukan dengan menuliskan nama list diikuti oleh indeks elemen yang ingin diakses di dalam kurung siku [].

# Deklarasi list
angka = [10, 20, 30, 40, 50]

# Mengakses elemen pertama (indeks 0)
print(angka[0])  # Output: 10

# Mengakses elemen terakhir
print(angka[-1])  # Output: 50

Mengubah Nilai Elemen

List bersifat mutable, artinya kita bisa mengubah nilai elemen tertentu setelah list inisialisasi.

Contoh:

angka[2] = 35  # Mengubah nilai elemen indeks 2 menjadi 35
print(angka)   # Output: [10, 20, 35, 40, 50]

Mengakses Beberapa Elemen (Slicing)

Slicing adalah cara untuk mengakses sekelompok elemen dalam list. Format slicing menggunakan start:end, di mana elemen mulai dari indeks start hingga indeks end-1. Nilai default dari start adalah 0 (indeks awal) sedangkan nilai default dari end adalah end - 1 (indeks akhir). Contoh:

angka = [10, 20, 30, 40, 50]

# Mengambil elemen dari indeks 1 hingga 3
print(angka[1:4])  # Output: [20, 30, 40]

# Mengambil elemen dari awal hingga indeks 2
print(angka[:3])   # Output: [10, 20, 30]

# Mengambil elemen dari indeks 2 hingga akhir
print(angka[2:])   # Output: [30, 40, 50]

Slicing dengan Langkah (Step)

Selain start dan end, slicing juga dapat menggunakan step, yang menentukan seberapa besar langkah untuk mengambil elemen. Nilai default dari step adalah 1.

Contoh:

# Mengambil setiap elemen kedua dari indeks 1 hingga akhir
print(angka[1::2])  # Output: [20, 40]

# Mengambil elemen dari belakang
print(angka[::-1])  # Output: [50, 40, 30, 20, 10]

Dimensi List

List Satu Dimensi

List satu dimensi di Python adalah list biasa yang hanya berisi elemen-elemen dengan satu tingkat kedalaman. Contoh-contoh pada penjelasan sebelumnya merupakan List satu dimensi.

List Multidimensi

Karena list Dapat menampung berbagai tipe data, maka list juga dapat menyimpan list(atau tipe data collection lain) didalamnya. Apabila list satu dimensi hanya memiliki sebuah index, list multidimensi memiliki dua atau lebih index untuk mengakses elemen dalam list tersebut. Contoh list dua dimensi (matriks):

# Deklarasi list dua dimensi
matriks = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]

# Mengubah nilai elemen
matriks[1][2] = 200

# Mengakses elemen
print(matriks[2][3])  # Output: 11
print(matriks[1][2])  # Output: 200

Comprehension List

list comprehension merupakan cara penulisan kode dalam satu baris dengan fungsionalitas yang sangat tinggi. List comprehension digunakan untuk membuat list baru dari iterable lain seperti tuple, string, array, list, dan lain-lain. Alih-alih menggunakan loop untuk menambahkan elemen ke list, Anda bisa menggunakan list comprehension untuk mencapainya dalam satu baris kode.

My_list = [<expression> <for loop> <condition if any>]

Contoh penggunaan:

angka = [1, 2, 3, 4, 5]
kuadrat_genap = [x**2 for x in angka if x % 2 == 0]
print(kuadrat_genap)  # Output: [4, 16]

Method Method pada List

Beberapa method yang dapat dimanfaatkan pada list:

Method Deskripsi
append() Menambahkan item ke akhir list
extend() Menambahkan item dari list dan iterable lainnya ke akhir list
insert() Menyisipkan item pada indeks yang ditentukan
remove() Menghapus nilai yang ditentukan dari list
pop() Mengembalikan dan menghapus item pada indeks yang diberikan
clear() Menghapus semua item dari list
index() Mengembalikan indeks dari item yang pertama kali cocok
count() Mengembalikan jumlah dari item yang ditentukan dalam list
sort() Mengurutkan list dalam urutan menaik/mendekik
reverse() Membalikkan urutan item dalam list
copy() Mengembalikan salinan dangkal dari list

Untuk penggunaan dan informasi lebih detail bisa explorasi di Referensi method pada list.

String

Pengenalan String Kembali

string adalah kumpulan karakter yang dikelilingi oleh tanda kutip. String dapat ditulis menggunakan tanda kutip tunggal, ganda, atau triple (untuk multi-baris).

Karakteristik String

  • Ordered - String dapat mempertahankan urutan elemen.
  • Immutable - Karakter didalam string tidak dapat diubah setelah dibuat.
  • Allow duplicates - String dapat berisi nilai yang sama atau duplikat.

Mengakses Karakter pada String

Pada String dapat dilakukan pengaksesan menggunakan indeks ataupun menggunakan slicing seperti halnya list. Pengaksesan List

Method Method pada String

Method Deskripsi
upper() Mengubah string menjadi huruf kapital
lower() Mengubah string menjadi huruf kecil
partition() Mengembalikan tuple yang membagi string berdasarkan separator
replace() Mengganti substring di dalam string
find() Mengembalikan indeks kemunculan pertama substring
rstrip() Menghapus karakter di akhir string
split() Membagi string dari kiri berdasarkan delimiter
startswith() Memeriksa apakah string diawali dengan substring yang ditentukan
isnumeric() Memeriksa apakah string hanya terdiri dari karakter numerik
index() Mengembalikan indeks dari substring (menghasilkan error jika tidak ditemukan)

Untuk penggunaan dan informasi lebih detail bisa explorasi di Referensi method pada string.

Tipe Data Collection Lain

ComingSoon

Latihan Soal

Soal 1

Buat program yang mencetak kata Ganjil untuk bilangan ganjil, dan kata Genap untuk bilangan genap dari sebuah input.

Sample Input

1

Sample Output

Ganjil

Soal 2

Buat program untuk mencetak asterisk, *, untuk bilangan genap, dan bilangan aslinya untuk bilangan ganjil, dari n buah bilangan mulai 1 s.d n.

Sample Input

6

Sample Output

1 * 3 * 5 *

Soal 3

Buat program untuk mencetak asterisk, *, untuk bilangan prima, dan angka asli untuk bilangan non-prima dari n buah bilangan mulai 2 s.d n.

Sample Input

10

Sample Output

* * 4 * 6 * 8 9 10

Soal 4

Buatlah program untuk mencetak N buah angka yang diinput secara terbalik. Input baris pertama adalah N yang merupakan banyaknya angka yang akan diinput. Baris berikutnya terdapat N buah angka (dipisahkan spasi).

Sample Input

5
1 4 3 2 9

Sample Output

9
2
3
4
1

Soal 5

Buatlah sebuah program untuk menghitung jumlah huruf vokal yang terdapat pada sebuah string S. Panjang string S tidak melebihi 100 karakter dan terdiri dari huruf lowercase, uppercase dan spasi.

Sample Input

Dasar Pemograman Keren

Sample Output

A/a : 4
I/i : 0
U/u : 0
E/e : 3
O/o : 1

Soal 6

Diberikan sebuah nama variabel dalam bentuk snake_case. Buatlah program untuk mengubah nama variabel tersebut menjadi bentuk camelCase. Nama variabel hanya terdiri dari huruf lowercase, uppercase, dan simbol underscore.

Sample Input 1

skor_pemain

Sample Output 1

skorPemain

Sample Input 2

VariabEl_Satu

Sample Output 2

variabelSatu

Referensi

⚠️ **GitHub.com Fallback** ⚠️