You are on page 1of 92

Teknik Pemrograman (TEKPRO)

Oleh: Achmad Zakki Falani, S.Kom.

Fakultas Ilmu Komputer Universitas Narotama

Teknik Pemrograman

Materi
Pertemuan keI Materi - Pengenalan Algorithma - Dasar-dasar pemrograman - Sequence - Selection - Iteration QUIZ I (Materi pertemuan ke-I,II,III) - Array & Random - Procedure & Function QUIZ II (Materi pertemuan ke V, VI) UAS (Semua Materi)
BACK NEXT

II III IV V VI VII

Teknik Pemrograman

Kriteria Penilaian:
Kehadiran

Tugas
Keaktifan NIlai

UTS Nilai UAS


Nilai

: 10 % : 15 % : 15 % : 30 % (Reg./Kelas A&B) : 30 % (Reg./Kelas A&B) : 60 % (Ins./Kelas C)

UAS

BACK

NEXT

Teknik Pemrograman

Back to ALPRO (Algoritma & Pemrograman)


Algoritma

BACK

NEXT

Teknik Pemrograman

Back to ALPRO (Algoritma & Pemrograman)


Pemrograman

BACK

NEXT

Teknik Pemrograman

Level Bahasa Pemrograman


High

Level Language Low Level Language

BACK

NEXT

Teknik Pemrograman

Klasifikasi
Desktop

Programming Web Programming Mobile Programming Machine Programming

BACK

NEXT

Teknik Pemrograman

Tools
Flowchart

BACK

NEXT

Teknik Pemrograman

Symbol Flowchart
Symbol 1. Keterangan Start & Finish Begin & End Mulai & Selesai Inisialisasi

2.

3.

Input & Output

BACK

NEXT

Teknik Pemrograman

Symbol Flowchart
Symbol 4. Keterangan Proses

5.

Pengecekan (If , While, Until, dll)

6.

Perulangan / Loop (For, Do, Loop, dll)


Perputaran Lanjutan Loop (Next Construction)
BACK NEXT

7.

Teknik Pemrograman

Symbol Flowchart
Symbol 8. Keterangan Garis Penghubung

9.

Sambungan / Lanjutan

10.

Prosedur / Fungsi

BACK

NEXT

Teknik Pemrograman

Back to ALPRO (Algoritma & Pemrograman)


Macam Operator: Operator Aritmatika Operator Assignment Operator Perbandingan Operator Logika

BACK

NEXT

Teknik Pemrograman

Operator Aritmatika
Digunakan

untuk melakukan Perhitungan

BACK

NEXT

Teknik Pemrograman

Operator Aritmatika
Simbol + * / atau div MOD atau % Fungsi Penjumlahan Pengurangan Perkalian Pembagian Sisa Hasil Pembagian Contoh jumlah=2+4 kurang=4-2 perkalian=4*2 Pembagian=6/3 Sisa=6/3 Sisa=0

BACK

NEXT

Teknik Pemrograman

Operator Assignment
Digunakan

untuk mengisi variable yang terletak di sebelah kiri operator dengan nilai yang ada disebelah kanan operator

BACK

NEXT

Teknik Pemrograman

Operator Assignment
Simbol = Fungsi Mengisikan nilai yang disebelah kanan operator ke variabel yang terletak di sebelah kiri operator. Menambahkan nilai yang di sebelah kanan operator ke variabel yang disebelah kiri dan hasilnya akan disimpan di variabel tersebut juga. Mengurangkan nilai yang di sebelah kanan operator ke variabel yang disebelah kiri dan hasilnya akan disimpan di variabel tersebut juga. Mengalikan nilai yang di sebelah kiri operator dengan variabel yang disebelah kanan dan hasilnya akan disimpan di variabel tersebut juga. Contoh 12=10+2

+=

i=2 i+=4 i=6 i=4 i-=2 i=2 i=2 i*=5 i=10


BACK NEXT

-=

*/

Teknik Pemrograman

Operator Assignment
Simbol /= Fungsi Membagi nilai yang di sebelah kiri operator dengan variabel yang disebelah kanan dan hasilnya akan disimpan di variabel tersebut juga. Membagi nilai yang di sebelah kiri operator dengan variabel yang disebelah kanan kemudian sisa pembagian disimpan di variabel tersebut juga. Contoh i=6 i/=3 i=2 i=6 i%=3 i=0

%=

BACK

NEXT

Teknik Pemrograman

Operator Perbandingan
Digunakan

untuk membandingkan dua kondisi atau lebih

BACK

NEXT

Teknik Pemrograman

Operator Perbandingan
Simbol = Fungsi Akan bernilai TRUE atau 1 bila dua kondisi yang dibandingkan memiliki nilai yang sama, selain itu bernilai FALSE atau 0. Akan bernilai TRUE atau 1 hanya jika dua kondisi yang dibandingkan memiliki nilai yang tidak sama (selain ini bernilai FALSE atau 0). Akan bernilai TRUE atau 1 hanya jika nilai yang disebelah kiri lebih besar dari yang disebelah kanan (selain ini akan bernilai FALSE atau 0). Contoh jumlah=6

<>

2<>4

>

4>2

BACK

NEXT

Teknik Pemrograman

Operator Perbandingan
Simbol < Fungsi Contoh Akan bernilai TRUE atau 1 hanya jika 2<4 nilai yang disebelah kiri lebih kecil dari yang di sebelah kanan (selain ini akan bernilai FALSE atau 0). Akan bernilai TRUE atau 1 hanya jika nilai yang disebelah kiri lebih besar atau sama dengan dari yang disebelah kanan (selain ini akan bernilai FALSE atau 0). Akan bernilai TRUE atau 1 hanya jika nilai yang disebelah kiri lebih kecil atau sama dengan dari yang disebelah kanan (selain ini akan bernilai FALSE atau 0). 4>=2, 4>=4

>=

<=

2<4, 2<=2

BACK

NEXT

Teknik Pemrograman

Operator Logika
Digunakan

untuk menggabungkan 2 (dua) kondisi atau lebih

BACK

NEXT

Teknik Pemrograman

Operator Logika
Simbol AND Fungsi simbol dari operator AND. Hasilnya akan bernilai 1 atau TRUE jika kedua kondisi memiliki nilai 1., selain ini hasil akan bernilai 0 atau FALSE. simbol dari operator OR. Hasilnya akan bernilai 0 jika kedua kondisi memiliki nilai 0, selain ini hasil akan bernilai 1 atau TRUE.

OR

XOR

operator xor akan menghasilkan nilai 1 atau TRUE jika kedua kondisi sama dan 0 atau FALSE bila keduanya tidak sama.

BACK

NEXT

Teknik Pemrograman

Back to ALPRO (Algoritma & Pemrograman)


Variable

?
Statis (Constanta)

Variable

?
BACK NEXT

Variable

Dinamis

Teknik Pemrograman

Tipe Data
Teks:

String, Char

Number:

Integer, Long Integer, Double Boolean (TRUE & FALSE / 1 & 0)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental
Sequence

Selection
Iteration

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Symbol 1. Keterangan Start & Finish Begin & End Mulai & Selesai Inisialisasi

2.

3.

Input & Output

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Symbol 4. Keterangan Proses

5.

Penghubung

6.

Sambungan / Lanjutan

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Studi

Kasus (1) Tulis Flowchart & Program untuk memasukkan Bilangan N, dan kalikan bilangan tersebut dengan TAHUN KELAHIRAN Anda, dimana TAHUN KELAHIRAN di inputkan dari keyboard. Kemudian Cetak Hasilnya pada layar

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Studi

Kasus (2) Tulislah Flowchart dan Program untuk menghitung dan mencetak: - keliling (k) (4*s) - luas (l) (s*s) Bujur Sangkar, dimana (s) adalah bilangan sisi yang di inputkan dari keyboard

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Studi

Kasus (3) Tulislah Flowchart & Program untuk Mengisikan nilai jari-jari sebuah lingkaran, dan kemudian mencetak keliling (2* *r) dan luas ( * 2 ) tersebut.
Catatan:

kuadrat bisa diwakili dengan tanda caping (^) atau dikalikan dengan dirinya sendiri
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Soal (1) Tulislah flowchart dan program untuk menghitung dan mencetak keliling (k) dan luas (l) dari sebuah segitiga siku-siku. *) k=a + t + s *) s= ( ) + ( ) *) l=(a*t)/2

Catatan: Untuk akar bisa menggunakan fungsi sqr / sqrt.

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Soal

(2) Masukkan dari keyboard nilai dari 2 buah variabel, A and B, kemudian tukarlah pasangan nilainya. Sebelum dan sesudah proses pertukaran, cetaklah isi kedua variabel tersebut ke layar. (Tulis Flowchart & Program)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Soal

(3) Masukkan sebuah bilangan dan kemudian cetaklah nilai RATUSAN, PULUHAN, dan SATUAN dari bilangan tersebut. (Tulis Flowchart & Program)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Sequence)


Soal

(4) Dari soal no.3, kembangkan menjadi dalam bentuk RIBUAN, RATUSAN, PULUHAN dan SATUAN.

BACK

NEXT

Teknik Pemrograman

Tugas1 (Sequence)
Buatlah

3 Soal lagi tentang Sequence (tidak termasuk dalam modul). Jawab soal tersebut dengan menulis: Flowchart & Programnya. Jika Copy-Paste, maka tugas akan dikembalikan keduanya (baik yg.Copy, maupun yg Paste) Waktu 1 minggu dari sekarang Kumpulkan dalam bentuk print Jilid A4.
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Symbol 1. Keterangan Start & Finish Begin & End Mulai & Selesai Inisialisasi

2.

3.

Input & Output

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Symbol 4. Keterangan Proses

5. 6.

Penghubung Pengecekan

7.

Sambungan / Lanjutan

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Pengecekan

if

.(kondisi). then .(aksi).... end if

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Pengecekan

If .(kondisi). then (aksi TRUE) else .(aksi FALSE).... end if

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)

Pengecekan If .(kondisi-TRUE-1). then (aksi-TRUE-1) elseif (kondisi-TRUE-2) then .(aksi-TRUE-2).... elseif (kondisi-3) then .(aksi-TRUE-3).... else .(aksi-FALSE). end if
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)

Pengecekan If .(kondisi-TRUE-1). then (aksi-TRUE-1) elseif (kondisi-TRUE-2) then .(aksi-TRUE-2).... elseif (kondisi-3) then .(aksi-TRUE-3).... else .(aksi-FALSE). end if
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)

Pengecekan If .(kondisi-TRUE-1). then (aksi-TRUE-1) else if .(kondisi-TRUE-2). then .(aksi-TRUE-2). else .(aksi-FALSE). end if end if
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)

Pengecekan If .(kondisi-TRUE-1). then (aksi-TRUE-1) else if .(kondisi-TRUE-2). then .(aksi-TRUE-2). elseif .(kondisi-TRUE-3). Then .(aksi-TRUE-3). else .(aksi-FALSE). end if end if
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Pengecekan

If .(kondisi-TRUE-1). then if (kondisi-TRUE-2) then if (kondisi-TRUE-3) then dst.. end if end if end if
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)

Pengecekan Select Case Case (kondisi-1) .(aksi-TRUE-1) . Case (kondisi-2) .(aksi-TRUE-2) . Case (kondisi-2) .(aksi-TRUE-3) . Case Else (aksi-FALSE) End Select
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Studi

Kasus (1) Masukkan sebuah bilangan melalui keyboard, kemudian tampilkan keterangan pada layar komputer, apakah bilangan tersebut adalah gasal atau genap. (Tulis Flowchart & Program)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Studi

Kasus (2) Masukkan 2 (dua) buah bilangan A & B, kemudian cetak keterangan apakah A>B, B>A atau A=B. (Tulis Flowchart & Program)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Studi

Kasus (3) Buatlah Kalkulator Sederhana, untuk melakukan Penjumlahan (+), Pengurangan (-), Perkalian (*), Pembagian (/) serta Pangkat (^) dari 2 (dua) buah bilangan A & B. (Tulis Flowchart & Program)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Soal

(1) Masukkan sebuah bilangan melalui keyboard, kemudian tampilkan keterangan pada layar komputer, apakah bilangan tersebut adalah Positif, Negatif, atau Nol. (Tulis Flowchart & Program)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Soal (2) Gambarlah flowchart unuk membantu seorang kasir menentukan jumlah uang yang harus dibayar pembeli pada suatu penjualan berdiscount. - Pembelian di bawah Rp. 100.000,-- tidak diberikan discount. - Discount 7,5% akan diberikan untuk pembelian Rp. 100.000,-- s.d. 200.000,--. - Discount 10% akan diberikan untuk pembelian Rp. 200.000,-- s.d. 350.000,--. - Discount 15% akan diberikan untuk pembelian di atas Rp. 350.000,Sebagai data input adalah total nilai penjualan, sedangkan output adalah uang yang harus dibayar pembeli setelah discount (jika ada) diberikan.

BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Selection)


Soal

(3) Masukkan N, dimana N adalah deteksi warna yang sesuai pada table berikut:
Nilai N Merah Warna

Kuning Hijau

Tulis Flowchart & Program

BACK

NEXT

Teknik Pemrograman

Tugas2 (Selection)
Buatlah

3 Soal lagi tentang Selection (tidak termasuk dalam modul). Jawab soal tersebut dengan menulis: Flowchart & Programnya. Jika Copy-Paste, maka tugas akan dikembalikan keduanya (baik yg.Copy, maupun yg Paste) Waktu 1 minggu dari sekarang Kumpulkan dalam bentuk print Jilid A4.
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


FOR

..nilai awal.. TO ..nilai loop.. STEP ..counter.. .aksi. Next

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)

DO WHILE (kondisi) aksi LOOP

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)

DO UNTIL(kondisi) aksi LOOP

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)

DO

aksi LOOP UNTIL (kondisi)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)

DO

aksi LOOP WHILE (kondisi)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


Kesimpulan
TOP WHILE TOP UNTIL

BOTTOM WHILE

BOTTOM UNTIL

Until

= sampai -> cirinya, jika Y berhenti While = selama -> cirinya, jika Y perulangan
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


Kesimpulan

Until

= sampai -> cirinya, jika Y berhenti While = selama -> cirinya, jika Y perulangan
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)

Catatan: = > < AND

vs vs vs vs

<> <= >= OR

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


Studi

Kasus (1) Gambarlah flowchart dan tulislah program melalui VBScript untuk mencetak deret angka 1sampai n, dimana n adalah input dari keyboard. 1,2,3,4,5,6,7..n

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)

Studi Kasus (2) Dari studi kasus 1, kembangkan menjadi soal berikut. Deteksi apakah angka tersebut adalah ganjil / genap. 1 (Ganjil) 2 (Genap) 3 (Ganjil) 4 (Genap) 5 (Ganjil) : : n BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


Studi

Kasus (3) Gambarlah flowchart dan tulislah program melalui VBScript untuk mencetak deret 0,1,3,6,10,15,21,28,... Dimana jumlah deret angka diwakili dengan inputan n, kecuali 0 tidak dihitung

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration) Tugas


Studi

Kasus (4) Gambarlah flowchart dan tulislah program melalui VBScript untuk mencetak deret Fibonacci yang secara logika tidak akan pernah berhenti atau infinite loop seperti berikut ini: 0,1,1,2,3,5,8,13,21,34,55,... Perhatikan bahwa sebuah bilangan pada deret Fibonacci adalah hasil penjumlahan dua bilangan sebelumnya
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration) Tugas

Studi Kasus (5)

Tulislah algoritma atau Flowchart untuk mencetak deret Fibonnacci dalam range 1 s.d. 1000 dengan format: 0 (GENAP) 1 (GASAL) 1 (GASAL) 2 (GENAP) 3 (GASAL) 5 (GASAL) 8 (GENAP) : : : 987 (GASAL)

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


Soal

(i) Buatlah Flowchartnya dan tulis Programnya untuk membuat validasi pengisian n, apabila n bilangan ganjil maka input ulang sampai nilai n benar-benar adalah sebuah bilangan genap. Cetak hasil n Kerjakan dengan menggunakan: - Top Tested - Bottom Tested

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


Soal

(ii) Buatlah Flowchartnya dan tulis Programnya untuk membuat validasi pengisian n, apabila n bukan bilangan positif maka input ulang sampai nilai n benar-benar adalah sebuah bilangan positif. Cetak hasil n Kerjakan dengan menggunakan: - Top Tested - Bottom Tested
BACK NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration) Tugas


Soal

(iii) Buatlah sebuah Flowchart & program input validator dimana inputan antara range 0..100

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


Soal (iv) Tulislah algoritma atau Flowchart untuk mencetak karakter bintang dengan model berikut: n=5 n=3 ***** ***** ***** ***** ***** *** *** ***

BACK

NEXT

Teknik Pemrograman

Konstruksi Fundamental (Iteration)


Soal (v) Tulislah algoritma atau Flowchart untuk mencetak karakter bintang dengan model berikut: n=5 n=3 * ** *** **** ***** * ** ***

BACK

NEXT

Teknik Pemrograman

Tugas3 (Iteration)
Buatlah

3 Soal lagi tentang Iteration (tidak termasuk dalam modul). Jawab soal tersebut dengan menulis: Flowchart & Programnya. Jika Copy-Paste, maka tugas akan dikembalikan keduanya (baik yg.Copy, maupun yg Paste) Waktu 1 minggu dari sekarang Kumpulkan dalam bentuk print Jilid A4.
BACK NEXT

Teknik Pemrograman

Array

(= subscrefield variable, = indexed variable)


Array adalah sebuah variable jamak Syntax: namavar(indeks1, indeks2, indeks3,.,n)

BACK

NEXT

Teknik Pemrograman

Jenis Array
Array

1 Dimensi Array 2 Dimensi Array 3 Dimensi Array 4 Dimensi

BACK

NEXT

Teknik Pemrograman

Array 1 Dimensi (Vektor)

V(3)

BACK

NEXT

Teknik Pemrograman

Array 2 Dimensi (Matriks)


0 1 2 3 4 1 2 3 4 5

M(2,4)

BACK

NEXT

Teknik Pemrograman

Array 3 & 4 Dimensi


Kubik

/ Cube

BACK

NEXT

Teknik Pemrograman

Keistimewaan Array
Indeks

dapat di interpresentasikan dalam bentuk value (varibel dinamis, konstanta, expressive).

BACK

NEXT

Teknik Pemrograman

Array
//deklarasi variabel Dim x(3)
x(1)=17 x(2)=8 x(3)=1945 document.write x(1) //hasil 17 A=2 B=3 document.write x(A) //hasil 8

BACK

NEXT

Teknik Pemrograman

Array
Studi

Kasus (1) Isi elemen array dari sebuah inputan keyboard, dimana jumlah elemennya adalah 3, kemudian cetak elemen elemen array tersebut pada layar.

BACK

NEXT

Teknik Pemrograman

Array
Studi

Kasus (2) Dari soal no.1 dapat dikembangkan menjadi soal berikut. Isi elemen array dari sebuah inputan keyboard, dimana jumlah elemennya ditentukan dari inputan pada keyboard, kemudian cetak elemen elemen array tersebut.
BACK NEXT

Teknik Pemrograman

Array
Soal

(1) Tulis Flowchart & Program untuk memasukkan data berikut ke dalam elemen array. 1. Noval Riswandha 2. Hariyadi Yutanto 3. Nilam Ramadhani 4. Roni Pambudi Cetak data tersebut ke dalam layar.
BACK NEXT

Teknik Pemrograman

Random Number (Randomize)


randomize for i=1 to 5 document.write rnd & <br> next

BACK

NEXT

Teknik Pemrograman

Random Number (Randomize)


Acak

angka 0-99

randomize for i=1 to 5 document.write int(rnd*100) & <br> next

BACK

NEXT

Teknik Pemrograman

Random Number (Randomize)


Jika

nilai random hanya ingin menghendaki nilai range 10 89, maka data nilai range terakhir ditambahi 1, jadi rumusnya: 10 + int(RND*90)

dimana nilai 90 diperoleh dari 89+1

BACK

NEXT

Teknik Pemrograman

Random Number (Randomize)


Jika

nilai random hanya ingin menghendaki nilai range 100 989, maka data nilai range terakhir ditambahi 10, jadi rumusnya: 100 + int(RND*999)

dimana nilai 999 diperoleh dari 989+10

BACK

NEXT

Teknik Pemrograman

Random Number (Randomize)


Studi

Kasus (1) Tulis Flowchart & Program untuk merandom atau mengacak permainan dadu.
Rumus:

1 + int(RND * 6)

BACK

NEXT

Teknik Pemrograman

Random Number (Randomize)


Studi

Kasus (2) Tulis Flowchart & Program untuk merandom atau mengacak permainan dadu, jika terdapat 2 (dua) buah dadu yang digunakan secara bersamaan.

BACK

NEXT

Teknik Pemrograman

Referensi: (Teknik Pemrograman)


http://www.hansmichael.com

http://www.tizag.com/vbscriptTutorial

BACK

NEXT

You might also like