Daftar Isi
UTS
● 2024:start di slide 4
● 2023: start di slide 27
● 2022: start di slide 35
UAS
● 2024: start di slide 37
● 2023: start di slide 45
● 2022: start di slide 50
Alangkah baiknya jika kalian lihat jawabannya dulu lalu berpikir dan searching2 sendiri (bisa
pake AI tapi tidak dengan minta disuapin) untuk paham kenapa jawabannya seperti itu
sebelum melihat pembahasan. Lebih bagus lagi kalau setelah paham, soal serupa di paket
lainnya dicoba sendiri dulu.
3.
Sebelumnya…
sekilas tentang
FOR LOOP:artinya lakukan sebanyak 3 kali
WHILE LOOP:
artinya selama bernilai benar,
lakukan
IF STATEMENT: artinya 1. Kalo kondisi_A benar,
lakukan
2. Kalo kondisi_A salah tapi
kondisi_B benar, lakukan
3. Kalo ga ada kondisi yg
benar, lakukan
1. Menggambar Persegi
Maka,
Outputline 1 – 5:
Output line 1 – 7:
menggerakkan pena ke depan sejauh
panjang_sisi_persegi
mengarahkan pena ke kanan sebesar 90
derajat
(pena maju sejauh panjang yg ditentukan, lalu
mengarah ke kanan)
(maju lagi, lalu
mengarah ke
kanan lagi)
6.
1. Menggambar Persegi
Outputline 1 – 9:
Output line 1 – 11:
(maju lagi, lalu
mengarah ke
kanan lagi)
(maju lagi, lalu
mengarah ke
kanan lagi)
7.
1. Menggambar Persegi(dengan looping)
Contoh:
outputnya ← Sebuah persegi dengan
panjang sisi 50
Artinya: lakukan sebanyak 4x
(diringkas
menjadi)
8.
2. Menggambar LingkaranKonsentris
menggambar lingkaran dengan radius sebesar radius_lingkaran_dalam
mengangkat pena agar kalau pena bergerak, pena tidak menggambar apapun
menurunkan pena agar kalau pena bergerak, pena dapat menggambar sesuatu
memosisikan pena ke koordinat (0, -10)
9.
2. Menggambar LingkaranKonsentris
Output line 1 – 9:
Maka,
Output line 1 – 5:
Output line 1 – 8:
(pena menggambar
lingkaran dengan radius
tertentu…)
(...lalu pena diangkat,
dipindahkan 10 unit
ke bawah, dan
diturunkan lagi…)
(...lalu pena menggambar
lingkaran dengan radius
yg lebih besar 10 unit dari
radius sebelumnya)
10.
2. Menggambar LingkaranKonsentris (dgn looping)
Contoh:
outputnya
Line 5 – 9 diubah menjadi:
● 3 buah lingkaran
● R lingkaran terdalam = 25
● R lingkaran tengah = 35
● R lingkaran terluar = 45
Artinya: lakukan
sebanyak jumlah_lingkaran kali
1. Buat lingkaran dengan radius tertentu
2. Update radius berikutnya menjadi radius sekarang + nilai tertentu
3. Pindahkan pena ke bawah tanpa meninggalkan jejak tinta
11.
2. Menggambar LingkaranKonsentris (dgn looping)
Bagian dapat diringkas lagi menjadi:
Sehingga fungsi lingkaran konsentris menjadi:
Contoh:
Dari atas ke bawah berarti:
1. Pena bergerak sejauh 5 ke
kanan dan 10 ke atas
2. Pena bergerak sejauh 5 ke
kiri dan 10 ke atas
3. Pena bergerak sejauh 5 ke
kanan dan 10 ke bawah
(untuk mengubah gerakan absolut
menjadi gerakan inkremental dan untuk
meningkatkan code readability)
12.
3. Menggambar SesuaiPermintaan Soal
• Panjang sisi persegi (l) = NIU/5000
• Jarak 90° lingkaran terluar ke persegi (d) = 80
• Inkremen radius (e) = 10
• Radius lingkaran kedua terdalam = l/2
• Radius lingkaran terdalam (r) = l/2 - e
*ada hal-hal yang diasumsikan.
l
d
r
e
13.
3. Menggambar SesuaiPermintaan Soal
Urutan pembuatan bentuk (misal):
1. Lingkaran-lingkaran konsentris
2. Persegi di bawah lingkaran
3. Persegi di atas lingkaran
4. Persegi di kanan lingkaran
5. Persegi di kiri lingkaran
1
3
2
4
5
14.
3. Menggambar SesuaiPermintaan Soal
1. Membuat lingkaran konsentris
Line 28: membuat lingkaran konsentris dengan:
Jumlah lingkaran: 4
Radius lingkaran pertama: r
Inkremen radius: e
*posisi awal kursor
*posisi akhir kursor
r
e
*
e
*
15.
3. Menggambar SesuaiPermintaan Soal
2. Membuat persegi di bawah lingkaran
Line 29: memindahkan pena dari posisi *ke sudut kiri atas persegi yang akan dibuat
• Perpindahan x = ke kiri, sejauh setengah dari panjang sisi persegi
= -l/2
• Perpindahan y = ke bawah, sejauh d - e
= - (d - e)
= -d + e
Line 30: membuat persegi 2 (panjang sisi = l) secara clockwise dari sudut kiri atas persegi
*posisi awal kursor
*posisi akhir kursor
d
e
l
*
*
2
16.
3. Menggambar SesuaiPermintaan Soal
3. Membuat persegi 3
Line 31: memindahkan pena dari posisi *ke sudut kiri atas persegi yang akan dibuat
• Perpindahan x = tidak ada
= 0
• Perpindahan y = ke atas, dengan jarak d + 3e + 2r (diameter lingkaran pertama) + 3e + d + l
= 2d + 6e + 2r + l
Line 32: membuat persegi 3 (panjang sisi = l) secara clockwise dari sudut kiri atas persegi
*posisi awal kursor
*posisi akhir kursor
r
e
d
l
*
d
*
3
2
17.
3. Menggambar SesuaiPermintaan Soal
4. Membuat persegi 4
Line 33: memindahkan pena dari posisi *ke sudut kiri atas persegi yang akan dibuat
• Perpindahan x = ke kanan, sejauh l + 2e + d
= l + 2e + d
• Perpindahan y = ke bawah, dengan jarak l + d +2e
= -(l + d + 2e)
Line 34: membuat persegi 4 (panjang sisi = l) secara clockwise dari sudut kiri atas persegi
*posisi awal kursor
*posisi akhir kursor
r
e
d
l
*
*
3
2
4
18.
3. Menggambar SesuaiPermintaan Soal
5. Membuat persegi 5
Line 35: memindahkan pena dari posisi *ke sudut kiri atas persegi yang akan dibuat
• Perpindahan x = ke kiri, sejauh d + 3e + 2r + 3e + d + l
= -(d + 6e + 2r + d + l)
• Perpindahan y = tidak ada
= 0
Line 36: membuat persegi 5 (panjang sisi = l) secara clockwise dari sudut kiri atas persegi
*posisi awal kursor
*posisi akhir kursor
r
e
d
*
3
2
4
5
d
l
*
Di sini dibutuhkanpenjelasan lebih teknis tentang for loop.
artinya i akan berubah-ubah nilainya sebagai berikut.
1. i = 3 → i < 10, maka
2. i = 4 → i < 10, maka
3. i = 5 → i < 10, maka
4. i = 6 → i < 10, maka
5. i = 7 → i < 10, maka
6. i = 8 → i < 10, maka
7. i = 9 → i < 10, maka
8. i = 10 → i /< 10, maka program keluar dari for loop
Maka, akan mengeprint
“meong-meong” sebanyak 7 kali.
24.
Sehingga:
1. n =10001 → n < 50000, maka lakukan
2. n = 10002 → n < 50000, maka lakukan
3. …
….
….
…
n = 49999→ n < 50000, maka lakukan
n = 50000 → n /< 50000, maka program keluar dari for loop
kalau (n genap & n habis dibagi 13 & n habis dibagi 15)...
tambahkan n ke list total
print(n) di monitor
26.
Index dalam Pythonmengacu pada posisi suatu elemen di dalam suatu list. Elemen pertama
di sebuah list memiliki index 0, elemen kedua index-nya 1, dan seterusnya.
Contoh, jika terdapat list hal:
Maka, untuk menghitung kecepatan rata-rata pada interval waktu ke-3 (misal)
1. Masukkan i = 3 pada rumus
2. Cari y3 (elemen ke-3 di list_y)
3. Cari y2 (elemen ke-2 di list_y)
4. Cari t3 (elemen ke-3 di list_t)
5. Cari t2 (elemen ke-2 di list_t)
6. Masukkan angka-angkanya ke rumus
Elemen ke-3 = index ke-2 di mana 2 = i - 1 = 3 -1
Elemen ke-2 = index ke-1 di mana 1 = i - 2 = 3 -2
Python Indexing
1
6
2
3
4
5
l
d
r
Dengan mengimpor librarymath serta menggunakan fungsi pindahkan_pena_sejauh dan
buat_persegi seperti pada UAS 2024 no. 1:
Keterangan:
Sudut-sudut persegi diasumsikan bersinggungan dengan lingkaran sehingga
diperoleh r = l*(akar 2)/2
Merah = l
Biru = diameter lingkaran = l akar 2
Urutan bangun yg dibuat (misal):
1. Persegi di tengah
2. Lingkaran di bawah persegi
3. Lingkaran di atas persegi
4. Lingkaran di kanan persegi
5. Lingkaran di kiri persegi
(pelajari sendiri perpindahan dari satu bangun
ke bangun lain. konsepnya sama dengan pada
UTS 2024 no. 1)
Jika program di-runseperti ini saja, akan muncul
type error
score3 (tipe data: str) tidak bisa dibagi dengan 3
(tipe data: int). Jadi, score3 harus diubah dulu tipe
datanya.
(float bisa dioperasikan secara aritmatik seperti int karena mereka sama2
angka)
Jika di-run, masih error karena typo
34.
Setelah typo diperbaiki,program berjalan tetapi tidak sesuai keinginan karena
tidak dipatuhinya order of operations
Sehingga program yang benar adalah:
seharusnya
35.
UTS 2022
Kemarin adasoalnya tapi lupa nyimpennya di mana 😅 Saya kasih jawabannya aja ya 😁
No. 1
(mirip UTS 2024 no. 1)
MAIN PROGRAM
Yang munculdi terminal
adalah K, yaitu jumlah
elemen di list Z
Nilai K sebelum Z masuk fungsi apa: 0
Di fungsi apa, list Z diperpanjang (append
tiap kali kondisi M > 5 terpenuhi. Berarti:
• i = 0 → M = 7 + 0*8 > 5
• i = 1 → M = 7 + 1*8 > 5
• i = 2 → M = 7 + 2*8 > 5
• i = 3 → M = 7 + 3*8 > 5
• i = 4 → M = 7 + 4*8 > 5
• i = 5 → M = 7 + 5*8 > 5
• i = 6 → M = 7 + 6*8 > 5
• i = 7 → M = 7 + 7*8 > 5
List Z diperpanjang sebanyak 8 kali
sehingga:
Nilai K sesudah Z masuk fungsi apa: 8
Prinsipnya gini:
Kita butuhmaterial yg:
• Bisa menahan shear force (P) sebesar 25 N pada luasan (As) 0.25 m^2 →
• Bisa menahan tensile force (P) sebesar 25 N pada luasan (At) 0.2 m^2 →
Shear stress = P/As = 100 N/m^2
Tensile stress = P/At = 125 N/m^2
Nah, tiap material ini punya spek kekuatan tarik
maksimal & kekuatan geser maksimal. Di antara
semua material ini, dibutuhkan material yang
bisa menahan shear stress 100 N/m^2/lebih
sekaligus tensile stress 125 N/m^2/lebih
Jadi…
1. Kita akses nama & spek tiap material…
2. …terus cek ketahanannya terhadap tensile stress & shear stress…
3. …dan masukkan nama material itu ke list akhir kalau dia memenuhi syarat
(pelajari sendiri maksud dari for … in …:)
44.
a. Modul adalahfile berisi definition dan statement yang bisa diimpor ke file
Python lain untuk menjalankan tugas tertentu.
b. Pada file yang membutuhkan modul, tulis salah satu dari 2 pilihan berikut.
c. Bisa. Buat saja file Python yang berisi definition dan statement sesuai
kebutuhan. Cara memprogram di modul tidak berbeda dengan cara
memprogram di file Python biasa. Cara menggunakan definition/statement di
suatu modul adalah dengan import (poin b)
• Intinya, padafungsi apa_ini, d bertambah 1 untuk tiap bilangan genap di
array oi
Karena mengandung 5 bilangan genap, berarti
output dari apa_ini(Z) adalah 5.
• Pada fungsi ini, array a dimasukkan ke fungsi apa_ini dan hasilnya disimpan
dalam variabel m. m kemudian dibandingkan dengan b untuk menentukan
output dari fungsi ini.
- Z dimasukkan ke fungsi apa_ini → outputnya 5
- 5 = 5 (m = b) → langsung return 5*5 (b*m)
Maka, Q = 5*5 = 25
Untuk memanggil function,cukup tulis
nama function dilengkapi dengan ()
• dtmi_keren()
• mana_terbesar()
• hitung_rerata()
Note: function mana_terbesar dan hitung_rerata berakhir dengan return, bukan
print. Berarti kalau fungsi hanya dipanggil (hanya ditulis mana_terbesar() atau
hitung_rerata ()) fungsi akan tereksekusi tetapi monitor tidak menampilkan
apapun. Untuk menampilkan output fungsi, simpan dulu outputnya dalam suatu
variabel, lalu print variabel tersebut (atau langsung print(mana_terbesar()) ))
52.
Mirip no. 4UAS 2023. Bedanya, N di
sini tidak dibatasi harus ada di
rentang berapa.
53.
Mirip no. 2UAS 2023. Bedanya terletak pada
isi list dan tambahan variabel yang harus
diinterpolasi.