Anda di halaman 1dari 15

1.

Proses Terhadap Data Koreksi


Data diperlakukan berbeda oleh komputer dan dibedakan tergantung jenis data, atau lebih
sering dikenal dengan istilah tipe data.

Tipe data dibedakan menjadi:

 Tipe data primitif. Data bertipe primitif disimpan berbentuk tunggal.


 Tipe data non-primitif. Tipe data non-primitif diberi istilah berbeda-beda di bahasa
pemrograman yang berbeda. Tipe selain primitif dapat disebut tipe koleksi. Ini karena
semua data selain primitif merupakan kumpulan data.

Sejauh ini kita mengenal 3 tipe data koleksi yaitu: list, tuple, dan string. Ketiganya memiliki
keunikan dan fitur berbeda. List bersifat fleksibel dapat menyimpan banyak data dari semua
tipe. Tuple kurang fleksibel namun lebih cepat ketika diakses. String menghimpun karakter,
huruf dan digit alfanumerik sehingga cocok untuk data berupa teks dan kalimat.

Indexing
Untuk mengakses item dari sebuah koleksi, dilakukan proses indexing. Indeks adalah nomor
urut data pada koleksi. Nomor urut dihitung dari nol dan bergerak ke kanan. Cara menulis
indexing adalah seperti ini.

var[indeks]

Pada penulisan di atas, var adalah nama variabel koleksi (atau ekpresi yang menghasilkan
koleksi). Misal jika pada program ditulis a[2] artinya sedang merujuk ke item nomor 2 dari
koleksi a. Contoh jika terdapat koleksi berikut ini.

1. ls = [4, 9, -5, "test"]


2. tp = (3, 2, 8, 7, "Yes")
3. st = "Percobaan"

Maka ekspresi berikut ini mengandung proses indexing.

1. x = ls[0] # menyalin item ke-0 dari list ls dan disimpan di x, item


yang dimaksud adalah 4
2. print(st[3]) # menampilkan huruf ke-3 dari string st, yaitu huruf c
3. ls[2] = 6 # menjadikan item ke-2 dari ls sebagai tempat menyimpan,
untuk menyimpan angka 6
4. y = tp[4] # menyalin data keempat dari tuple tp dan disimpan di y, item
yang dimaksud adalah Yes

Perhatikan bahwa Python mengenal indeks negatif. Artinya nomor urut dihitung dari kanan
dimulai dari nomor -1, dan seterusnya bergerak ke kiri. Perhatikan contoh berikut.

1. g = ls[-1] # menyalin item ke-(-1) yaitu "test" dan disimpan di g


2. print(st[-3]) # menampilkan huruf ketiga dari kanan
Yang ditulis di sebelah kiri tanda kurung siku pada saat melakukan indexing tidak hanya
variabel koleksi. Semua ekspresi yang menghasilkan koleksi dapat dikenai indexing. Perhatikan
bahwa tp[4] dan ls[-1] menghasilkan string, dan string merupakan koleksi. Jadi kedua ekspresi
itu dapat dikenai indexing. Perhatikan contoh di bawah ini.

1. a = tp[4][0] # a digunakan menyimpan huruf "t"


2. b = ls[-1][2] # b digunakan menyimpan huruf "s"

Slicing
Slicing adalah proses menyalin sebagian item dari koleksi. Jumlah yang tersalin tergantung
proses slicingnya. Cara menuliskan proses slicing adalah sebagai berikut:

var[awal:akhir]
var[awal:akhir:langkah]

Pada ekspresi tersebut, var adalah variabel koleksi yaitu list, tuple atau string. Awal adalah
nomor urut dari data pertama yang akan disalin. Akhir adalah nomor urut sebelum data terakhir
yang disalin. Langkah adalah lompatan nomor data jika proses menyalin dilakukan melompat-
lompat (tidak berturutan).

Misalkan terdapat data koleksi berikut ini:

1. ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, "test"]
2. tp = (3, 2, 8, 7, "Yes")
3. st = "Percobaan"

Ekspresi slicing  ls[2:5]  artinya menyalin dari list ls item ke-2, ke-3, dan ke-4. Item ke-5 tidak
ikut disalin. Sehingga terbentuklah list dengan konten  [3, 4, 5] .

Ekspresi slicing  tp[1:3]  artinya menyalin dari tuple tp item ke-1, ke-2. Item ke-3 tidak ikut
disalin. Sehingga terbentuklah tuple  (2, 8) .

Ekspresi slicing  st[4:-1]  artinya menyalin dari string st item ke-4, ke-5, dan seterusnya
sampai sebelum item ke-(-1). Sehingga terbentuklah string  "obaa" .

Ekspresi slicing  ls[1:9:2]  artinya menyalin dari list ls item ke-1, ke-3, ke-5 dan ke-7. Item ke-9
tidak ikut disalin. Perhatikan item yang disalin melompat-lompat, tidak urut. Sehingga
terbentuklah list  [2, 4, 6, 8] .

Catatan. Pada proses slicing, jika nilai awal tidak ditulis, diartikan slicing dimulai dari indeks 0.
Jika akhir tidak ditulis, diartikan slicing sampai semua data terakhir. Jika langkah tidak ditulis,
diartikan lompatannya 1 langkah.

Ekspresi slicing  ls[::2]  artinya menyalin dari item ke-0, ke-2, ke-4 dan seterusnya sampai
terakhir, tapi melompat dua. Sehingga terbentuk list  [1, 3, 5, 7, 9] .
Operator * terhadap list, tuple dan str
Operator * dapat digunakan untuk membantu membuat variabel koleksi. Salah satu operand
harus bilangan, dan operand yang lain adalah variabel koleksi. Artinya adalah menggabungkan
koleksi secara berulang untuk membentuk koleksi baru. Contoh:

1. L = 3 * [1, 2] # menghasilkan [1, 2, 1, 2, 1, 2]


2. T = 4 * (2, 0) # menghasilkan (2, 0, 2, 0, 2, 0, 2, 0)
3. S = 10 * "--" # menghasilkan "--------------------"

Perhatikan jika kita ingin membuat list berisi 10 item dengan nilai nol, maka dapat dilakukan
dengan perintah berikut.

1. L2 = 10 * [0] # menghasilkan [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

2.Perulangan Koreksi
Perulangan koleksi, biasa disebut dengan perulangan for, adalah cara yang digunakan oleh
computer untuk menjalankan perintah secara berulang-ulang pada suatu koleksi (bisa berupa
list, tuple, dictionary, set, atau string). Perulangan dilakukan sampai looping mencapai elemen
terakhir dari koleksi. Apabila perulangan sudah mencapai elemen terakhir dari koleksi, maka
program akan keluar dari perulangan. For tidak hanya untuk perulangan dengan jumlah
terbatas, melainkan adalah teknik yang dapat melakukan perulangan pada setiap jenis variabel
berupa koleksi atau sequence.

Perhatikan kode di bawah ini

1. kota = ["Solo", "Jogja", "Jakarta"]
2. for k in kota:
3. print(k)

Output

Solo
Jogja
Jakarta

Pada kode diatas, terdapat sebuah list kota yang memiliki panjang 3 dan berisikan “Solo”,
“Jogja”, dan “Jakarta”. Dengan menggunakan perulangan for, item pertama pada list kota akan
dimasukkan sebagai variabel k. Setelah itu, blok statement akan dieksekusi. Blok statement
berisikan perintah untuk mencetak variable k yang berupakan item pertama pada list kota --
“Solo”. Setelah perintah yang ada di blok for selesai, proses ini berlanjut ke item list berikutnya,
dilakukan secara berulang, hingga seluruh urutan habis.

Sebagai contoh lain, kita dapat implementasikan perulangan for loop pada String. Perhatikan
kode di bawah ini.

1. for huruf in 'Informatika':


2. print(huruf)

Output

I
n
f
o
r
m
a
t
i
k
a

Pada kode di atas, perulangan for diimplementasikan pada String “Informatika”. Dengan
menggunakan perulangan for, kemudian karakter “I” akan tersimpan di variable huruf. Setelah
itu, program akan mencetak variable huruf yang berisikan nilai “I”. Kemudian, pada perulangan
selanjutnya, karakter kedua - “n” akan diassign di variable huruf.  Setelah itu, program akan
mencetak variable huruf yang berisikan nilai “n”. Perulangan for akan dilakukan sampai karakter
terakhir pada String “Informatika”.

3.Range
Fungsi  range  memberikan urutan bilangan dengan pola tertentu. Range biasanya
diimplementasikan pada perulangan for dalam mengakses elemen list.
Fungsi  range  digunakan untuk menghasilkan serangkaian angka dalam rentang tertentu.
Angka yang dihasilkan dari fungsi  range  bergantung pada argumen yang dimasukkan kedalam
fungsi tersebut.  range   dapat memiliki 1-3 tiga paremeter, yaitu start, stop, dan step.
start: bilangan integer yang merupakan bilangan awal dari urutan angka
stop: bilangan integer yang merupakan bilangan akhir + 1 dari urutan angka; urutan angka
yang dihasilkan berakhir di stop - 1.
step: bilangan integer yang menentukan besarnya kenaikan antara setiap bilangan dalam
urutan angka

contoh:

1. a = range(2)
2. b = range(2,8)
3. c = range(2,8,2)

Pada Python 3, ketika nilai a, b, dan c dicetak, maka tidak akan tampil suatu nilai. Untuk
menampilkan nilai yang ada pada range, kita perlu konversikan tipe data range menjadi list.

Contoh.

1. print(list(a))
2. print(list(b))
3. print(list(c))

Output:

[0, 1]
[2, 3, 4, 5, 6, 7]
[2, 4, 6]

Pada variabel a, kita membuat range yang memiliki 1 argumen (2). Argument tersebut akan
dimasukkan ke parameter stop sehingga urutan bilangan akan berhenti di nilai 1.  Sedangkan
untuk nilai start bernilai default 0, dan step bernilai default 1.

Pada variabel b, kita membuat range yang memiliki 2 argumen (2, 8). Argument pertama (2)
akan dimasukkan ke parameter start dan argument kedua (8) akan dimasukkan ke
parameter stop. Sehingga urutan bilangan akan dimulai dari 2 berhenti di nilai 7. Sedangkan
untuk step bernilai default 1.

Pada variabel c, kita membuat range yang memiliki 3 argumen (2, 8, 2). Argument pertama (2)
akan dimasukkan ke parameter start, argument kedua (8) akan dimasukkan ke
parameter stop, dan argument ketiga (2) untuk step. Sehingga urutan bilangan akan dimulai
dari 2, berhenti di angka sebelum 8 nilai, dengan kenaikan antar elemen sebesar 2. 

Sekarang kita coba implementasikan range ke dalam perulangan for.


Pada contoh kode di bawah ini, kita akan mencetak nilai secara berurutan pada dari range
tertentu dengan menggunakan perulangan for.

Perhatikan kode di bawah ini.

1. for i in range(10):
2. print(i)

Kode diatas mencetak angka secara berurutan dari 0 sampai 9. Pada setiap perulangan for,
setiap nilai dari range (0 sampai 9) secara berurutan dimasukkan ke dalam variable i. Kemudian
nilai i dicetak pada setiap perulangannya.

Sebagai contoh lain, kita akan mencoba untuk membuat suatu list dari range tertentu dengan
menggunakan perulangan for.

Perhatikan kode di bawah ini.

1. angka = [i for i in range(10)]


2. print(angka)

Output:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Kode diatas mencetak list angka dari 0 sampai 9. Pada saat eksekusi perulangan for,setiap nilai
dari range (0 sampai 9) secara berurutan dimasukkan ke dalam variable i. Kemudian nilai dari i
pada setiap perulangan akan disimpan pada suatu list angka. Sehingga program mencetak list
angka [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].

Fungsi range juga dapat digunakan pada kasus yang penting, seperti pengaksesan list secara
terbalik. 

Perhatikan kode di bawah ini.

1. ls = [36,21,89,14,55]
2.
3. for i in range(len(ls)-1, -1, -1) :
4. print(ls[i])
 

Output:

55

14

89

21

36

Kode diatas bertujuan untuk mencetak elemen dari list secara terbalik, dimulai dari elemen
terakhir hingga elemen pertama. Disini, kita menggunakan fungsi range yang menerima 3
argument.

Pertama, start = len(ls)-1 yang berarti range dimulai dari indeks terakhir. Indeks terakhir dari
suatu list adalah len(ls)-1.

Kedua, stop= -1 yang berarti range berhenti sampai indeks sebelum -1. Jika pembacaan list
berjalan mundur, maka indeks sebelum -1 adalah indeks 0.

Terakhir, step= -1 yang berarti langkah dilakukan mundur sebesar 1 langkah.

4. Perulangan Kondisional
Perulangan kondisional, disebut juga perulangan while, adalah cara yang digunakan oleh
komputer untuk menjalankan perintah secara berulang-ulang selama kondisi masih terpenuhi.
Suatu perintah akan dilakukan apabila kondisinya terpenuhi (bernilai True), berdasarkan
keputusan yang telah ditentukan. Sama dengan pengambilan keputusan, perulangan while juga
akan mengevaluasi kondisi atau ekspresi yang hasilnya benar atau salah.  Apabila kondisi
benar, maka perintah yang ada di blok perulangan while akan diseksekusi. Apabila salah, maka
perintah di dalam blok perulangan while tidak akan dieksekusi.

Perhatikan kode di bawah ini

1. angka = input("Masukkan angka: ")


2. angka = int(angka)
3. while (angka < 5):
4. print("Angka yang ditampilkan:", angka)
5.   angka += 1
6. print("Program selesai")
 

Output ketika angka adalah 0.

Angka yang ditampilkan: 0

Angka yang ditampilkan: 1

Angka yang ditampilkan: 2

Angka yang ditampilkan: 3

Angka yang ditampilkan: 4

Program selesai

Perhatikan program diatas.

Pada program di atas, jika langkah-langkah nya diikuti, maka akan menyelesaikan tugas untuk
melakukan mencetak angka selama bernilai kurang dari 5. Pada langkah pertama, pengguna
memasukkan nilai awal dari angka yang bernilai 0. Pada langkah kedua, kita menentukan suatu
kondisi untuk mengecek apakah angka tersebut kurang dari 5 ataukah tidak. Jika kondisi benar,
maka program akan mengeksekusi perintah yang ada di blok iterasi while. Di dalam blok iterasi
while, program akan mencetak “Angka yang ditampilkan : ”, angka. Kemudian, nilai dari
angka ditambahkan dengan 1.

Setelah semua perintah yang ada di dalam blok iterasi while dilakukan, program akan
melakukan pengecekan kembali pada kondisi while apakah angka bernilai kurang dari 5. Jika
bernilai benar, maka blok iterasi while akan dieksekusi kembali. Jika salah, maka blok iterasi
while akan dilompati, dan program langsung mengeksekusi kode diluar blok iterasi while.
Terakhir, program mencetak “Program Selesai” - dan program akan selesai.

 
Adapun flowchart dari program di atas adalah

Perlu anda perhatikan pada penentuan operator dan kondisi dari perulangan while. Kesalahan
penentuan operator atau kondisi dapat menyebabkan program mengeksekusi perulangan yang
tak terhingga. Sehingga tidak dapat ditentukan kapan program akan berhenti. Hal ini biasa
disebut infinite loop.

Perhatikan kode di bawah ini.


1. nilai = 5
2. while (nilai > 0):
3. nilai += 1
4. print("Angka :",nilai)

Pada program di atas, program mengalami infinite loop. Pada program ini, nilai 5 bernilai True,
sehingga perintah dalam blok perulangan while akan diproses. Salah satu perintah dalam blok
adalah menambahkan nilai dengan 1, sehingga pada iterasi selanjutnya nilai 6 juga bernilai
True. Variabel nilai akan terus bertambah 1 setiap iterasi, sehingga menyebabkan nilai akan
selalu benar.

5.Kontrol Perulangan
1. break
Perintah  break  menghentikan perulangan kemudian keluar dari perulangan tersebut,
dilanjutkan dengan mengeksekusi statement setelah blok perulangan. Untuk menjalankan
perintah break, perulangan memerlukan sebuah pengecekan keputusan (if-else) di dalam
perulangan tersebut.  

Perhatikan kode di bawah ini:

1. angka = 0
2.
3. for angka in range(0,7):
4. if angka == 5:
5.    break
6.
7.   print('Angka adalah ', angka)
8.
9. print('Perulangan selesai')

Output

Angka adalah  0

Angka adalah  1

Angka adalah  2

Angka adalah  3
Angka adalah  4

Perulangan selesai

Program diatas mengimplementasikan perulangan for untuk mencetak angka dari 0 sampai 6.
Di dalam perulangan for, terdapat suatu kondisi jika  angka == 5 , maka perulangan akan
berhenti dan program akan mengeksekusi perintah selanjutnya yang ada di luar perulangan
tersebut.

Catatan: Perlu anda perhatikan pada kasus perulangan bertingkat, break akan menghentikan
perulangan sesuai dengan tingkatan perulangan tersebut berada. Jika break diletakkan di
perulangan tingkat pertama, maka perulangan tingkat pertama dan perulangan yang ada di
dalamnya juga akan berhenti. Namun, jika break berada pada tingkat kedua, hanya perulangan
tersebut saja yang berhenti, tidak dengan perulangan pertama. Begitu juga dengan perulangan
pada tingkat selanjutnya.

2. continue
 

Perintah  continue  digunakan di dalam perulangan untuk melewati perintah di dalam blok
perulangan saat ini, kemudian kembali lagi ke awal blok perulangan sebagai perulangan
berikutnya.

Perintah break dan continue digunakan untuk mengontrol jalannya perulangan. Perbadaan
dengan break adalah break menghentikan perulangan ketika suatu kondisi terpenuhi,
sedangkan continue akan membuat perulangan saat ini berhenti, kemudian melanjutkan ke
perulangan berikutnya, mengabaikan pernyataan (statement) yang berada antara continue
hingga akhir blok perulangan.

Perhatikan kode di bawah ini.

1. skor = 3
2. while (skor < 7):
3. skor += 1
4.   if skor == 5:
5.    continue
6.   print('Skor:', skor)
 

Output:

Skor: 4

Skor: 6

Skor: 7

Program tersebut akan mencetak skor yang bernilai kurang dari 7. Nilai awal skor adalah 3.
Blok perulangan memiliki perintah untuk menambahkan nilai 1 ke dalam skor. Apabila skor
bernilai 5, maka perintah selanjutnya pada perulangan saat ini --  print(skor)  - akan dilewati.

3. pass
Perintah pass digunakan jika kita menginginkan sebuah pernyataan atau blok pernyataan
(statement), namun tidak melakukan apapun - melanjutkan eksekusi sesuai dengan urutannya.
Perintah pass biasanya digunakan sebelum melakukan implementasi (atau menyiapkan tempat
untuk implementasi), serta membiarkan program tetap berjalan tanpa adanya error. Perintah
pass adalah operasi bersifat null (kosong), tidak ada yang terjadi saat ia dipanggil.

Perhatikan kode di bawah ini.

1. for angka in range(0, 4):


2. if angka==2:
3.    pass
4.   else:
5.    print(angka)
6.   print("Perulangan tereksekusi") 

Output:

Perulangan tereksekusi

1
Perulangan tereksekusi

Perulangan tereksekusi

Perulangan tereksekusi

Program diatas mengimplementasikan perulangan for untuk mencetak angka dari 0 sampai 3,
dan di akhir perulangan, program mencetak "Perulangan tereksekusi"

Pada kode tersebut, di dalam perulangan for, terdapat suatu kondisi jika angka == 2, maka
program tidak akan melakukan statement apapun. Program akan melanjutkan ke statement
berikutnya – di luar blok if – untuk mencetak "Perulangan tereksekusi".

6.simulasi kasus perulangan


Kasus 1
Ibu memiliki 20 mangga, 8 apel, 32 anggur, 56 kelengkeng, 36 manggis dan 24 tomat. Ia ingin
membagi semuanya itu secara merata untuk 4 anaknya. Berapakah yang didapat setiap anak?
Jika persoalan ingin diselesaikan dengan komputer, bagaimana algoritma dan bagaimana
programnya?

Algoritma Membagi buah


* membagi buah sama banyak

1. Buat daftar berisi jumlah dan nama buah --> lst


2. Ulangi untuk tiap item pada daftar,
a. bagi jumlah dengan 4 --> it
b. Tampilkan it dan nama buah
3. Selesai

Berikut adalah program yang sesuai dengan algoritma tersebut.

1. lst = [(20, "mangga"), (8, "apel"), (32, "anggur"), (56, "kelengkeng"),


(36, "manggis"), (24, "tomat")]
2. for buah in lst:
3. it = buah[0] / 4
4. print(it, buah[1])

Pada baris pertama program di atas, dibuat list berisi 6 tuple. Setiap tuple berisi jumlah buah
dan nama buah.
Pada baris kedua program, dilakukan perulangan terhadap seluruh item pada list. Perhatikan
bahwa di setiap perulangan, buah berisi tuple, di mana buah[0] adalah banyaknya buah dan
buah[1] adalah nama buah. Untuk menentukan buah yang diterima seitap anak, banyaknya
buah dibagi dengan jumlah anak (ini dilakukan di baris 3 program).

Kasus 2
Pak Guru meminta murid-murid kerja bakti di halaman sekolah. Tugasnya adalah mengangkut
batu bata dari halaman sekolah ke samping. Untuk sejumlah batu bata yang diangkut, pak Guru
menyediakan hadiah. Jika murid membawa sampai 10 bata, diberi permen. Jika membawa
sampai 20 bata, diberi biskuit. Jika membawa sampai 30 bata di beri roti. Dan jika membawa
lebih dari atau sama dengan 31 bata diberi es krim.

Ada 20 murid di sekolah. Setelah didata, setiap murid (sesuai urutan absen) mengangkut bata
sejumlah: 12, 8, 20, 25, 16, 38, 27, 21, 15, 9, 22, 18, 10, 15, 36, 31, 17, 26, 12, 19.

Tampilkan sesuai urut absen, apa saja yang didapat oleh murid. Buat algoritmanya terlebih
dahulu, kemudian buat programnya.

Algoritma Gotong royong


* mengangkut bata dan mendapat hadiah

1. Buat daftar berisi jumlah bata yang dibawa --> bata


2. Ulangi untuk tiap item pada daftar,
a. jika item <= 10, permen --> hdh
jika 10 < item <= 20, biskuit --> hdh
jika 20 < item <= 30, roti --> hdh
selain itu es krim --> hdh
b. tampilkan hdh
3. Selesai

Berikut adalah program yang sesuai dengan algoritma tersebut.

1. bata = (2, 8, 20, 25, 16, 38, 27, 21, 15, 9, 22, 18, 10, 15, 36, 31, 17,
26, 12, 19)
2. for bt in bata:
3. if bt < 10:
4. hdh = "permen"
5. elif 10 < bt <= 20:
6. hdh = "biskuit"
7. elif 20 < bt <= 30:
8. hdh = "roti"
9. else:
10. hdh = "es krim"
11. print("Hadiah:", hdh)

Done
Kasus 3
Perhatikan ekspresi matematika ini.

y=n+12ny=n+12n

Jika n semakin besar, maka nilai y semakin kecil. Pertanyaannya, pada nilai n terkecil
berapakah y kurang dari 0.1 ?

Pertanyaan ini dapat dijawab dengan merubah bentuk formula menjadi n = ... . Tentunya
persoalan tersebut kemudian selesai secara matematis. Jika persoalan ingin diselesaikan
dengan komputer, dapat dilakukan pendekatan yang berbeda. Salah satu caranya adalah
dengan menggunakan perulangan. Kita mencoba nilai n satu per satu dari 1, 2, 3, dan
seterusnya. Untuk setiap nilai n, kemudian dihitung nilai y. Setiap nilai y dibandingkan dengan
0.1. Selama nilai y lebih dari 0.1, kita coba nilai n yang lebih besar.

Algoritma Nilai suku
* menentukan nilai n terkecil yang menghasilkan suku y < 0.1 untuk y=n+12ny=n+12n

1. n <-- 1
2. hitung y
3. Selama y > 0.1,
1. n <-- n + 1
2. hitung y
4. Tampilkan n
5. Selesai

Perhatikan langkah 3 algoritma. Langkah ini mewujudkan pernyataan "Selama nilai y lebih dari
0.1, kita coba nilai n yang lebih besar". Yakinkan apakah algoritma sudah benar. Jika sudah,
tinggal diterjemahkan menjadi program.

1. n = 1
2. y = (n + 1) / (2 ** n)
3. while y > 0.1:
4. n = n + 1
5. y = (n + 1) / (2 ** n)
6. print("Nilai n terkecil yang menyebabkan suku < 0.1 adalah", n)

Anda mungkin juga menyukai