(Pertemuan 07.2) Sesi Review untuk UTS

Review Session for Midterm Exam

Offline di Departemen Matematika
Author

Aslab Mata Kuliah Praktikum Algoritma dan Pemrograman

Published

October 10, 2024

Kembali ke Mata Kuliah Praktikum Algoritma dan Pemrograman

Atas kesepakatan dengan dosen, asisten lab mengadakan pertemuan praktikum berisi review materi UTS untuk mata kuliah Prak Alprog (Praktikum Algoritma dan Pemrograman). Konsep review di sini adalah sekaligus latihan, yaitu mengerjakan soal sembari mengingat materi Prak Alprog.

Soal-soal berikut, serta solusinya, telah disiapkan sepenuhnya oleh aslab, berdasarkan materi Prak Alprog yang sebelumnya telah diajarkan oleh dosen. Kami harap sesi review ini bermanfaat :)

SOAL 1

Buat program yang mencetak 10 angka pertama dalam barisan Fibonacci

Barisan Fibonacci:

0, 1, 1, 2, 3, 5, 8, 13, 21, …

a = 0
b = 1
for i in range(10):
    print(a)
    c = a + b
    a = b
    b = c
0
1
1
2
3
5
8
13
21
34
a = 0
b = 1
for i in range(10):
    print(a, end = ' ')
    c = a + b
    a = b
    b = c
0 1 1 2 3 5 8 13 21 34 

SOAL 2

Buat program untuk menentukan kuadran titik berdasarkan koordinat (x, y) yang dimasukkan

x = float(input("Masukkan nilai x = "))
y = float(input("Masukkan nilai y = "))

if x > 0 and y > 0:
    print("Kuadran I")
elif x < 0 and y > 0:
    print("Kuadran II")
elif x < 0 and y < 0:
    print("Kuadran III")
elif x > 0 and y < 0:
    print("Kuadran IV")
else:
    print("Titik berada di sumbu")
Masukkan nilai x = 1
Masukkan nilai y = 2
Kuadran I

SOAL 3

Buatlah program yang dapat menghitung banyaknya setiap huruf vokal yang ada dalam suatu string.

mystring = 'halo gais'

a = 0
i = 0
u = 0
e = 0
o = 0
for character in mystring:
  if character == 'a':
    a = a + 1
  elif character == 'i':
    i = i + 1
  elif character == 'u':
    u = u + 1
  elif character == 'e':
    e = e + 1
  elif character == 'o':
    o = o + 1

print('a =', a)
print('i =', i)
print('u =', u)
print('e =', e)
print('o =', o)
a = 2
i = 1
u = 0
e = 0
o = 1

SOAL 4

Buat program yang menerima n angka dari pengguna dan menghitung rata-ratanya.

n = int(input("Masukkan banyak angka = "))
jumlah = 0
for i in range(n):
    num = float(input("Masukkan angka ke-" + str(i + 1) + " = "))
    jumlah += num

rata_rata = jumlah / n
print("Rata-rata adalah:", round(rata_rata, 2))
Masukkan banyak angka = 5
Masukkan angka ke-1 = 1
Masukkan angka ke-2 = 9
Masukkan angka ke-3 = 4
Masukkan angka ke-4 = 8
Masukkan angka ke-5 = 3
Rata-rata adalah: 5.0

SOAL 5

Buat program yang meminta pengguna untuk memasukkan 5 angka, menyimpannya dalam list, dan menghitung faktorial dari setiap angka dalam list.

list_angka = []
for i in range(5):
    n = int(input("Masukkan angka ke-" + str(i + 1) + " = "))
    faktorial = 1
    for j in range(1, n + 1):
        faktorial *= j
    list_angka.append(faktorial)

print("Faktorial dari angka dalam list adalah:", list_angka)
Masukkan angka ke-1 = 1
Masukkan angka ke-2 = 2
Masukkan angka ke-3 = 3
Masukkan angka ke-4 = 4
Masukkan angka ke-5 = 5
Faktorial dari angka dalam list adalah: [1, 2, 6, 24, 120]

SOAL 6

Buatlah program dengan while loop yang dapat menghitung faktorial dari bilangan bulat yang diinput oleh user.

n = 5
# n = input
if n >= 0:
  faktorial = 1
  while n >= 1:
    faktorial = faktorial * n
    n = n - 1
  print(faktorial)
else:
  print()
120

SOAL 7

Buatlah program yang dapat menampilkan list yang berisi elemen-elemen unik dari suatu list yang diberikan.

mylist = [1,1,2,4,5,3,3,3,10,3,4,12,12,7,8]

uniquelist = []
for elemen in mylist:
  if elemen not in uniquelist:
    uniquelist.append(elemen)

print(uniquelist)
[1, 2, 4, 5, 3, 10, 12, 7, 8]

SOAL 8

Diberikan 2 list dengan panjang yang sama. Hitunglah dot product dari kedua list tersebut.

list1 = [1,2,3]
list2 = [4,5,6]
n = len(list1)

dotproduct = 0
for i in range(n):
  dotproduct = dotproduct + list1[i]*list2[i]

print(dotproduct)
32

SOAL 9

Diberikan 3 titik yang masing-masing dalam bentuk array 1 dimensi dengan 2 elemen. Hitunglah keliling dari segitiga yang dibentuk dari 3 titik tersebut.

import numpy as np

titik1 = np.array([1,2])
titik2 = np.array([2,3])
titik3 = np.array([-1,4])

sisi1 = np.sqrt((titik1[0]-titik2[0])**2 + (titik1[1]-titik2[1])**2)
sisi2 = np.sqrt((titik1[0]-titik3[0])**2 + (titik1[1]-titik3[1])**2)
sisi3 = np.sqrt((titik2[0]-titik3[0])**2 + (titik2[1]-titik3[1])**2)

keliling = sisi1 + sisi2 + sisi3
print(keliling)

SOAL 10

Diberikan suatu matriks berukuran nxn dalam bentuk array 2 dimensi. Buatlah matriks baru dari matriks yang diberikan dengan ketentuan:

  • Jika n genap, maka tukar baris pertama matrik dengan baris terakhir matriks

  • Jika n ganjil, maka tukar naris pertama matriks dengan baris tengah matriks

Kemudian, hitung hasil perkalian dari kedua matriks tersebut.

import numpy as np
A = np.array([[1,2,3],[4,5,6],[7,8,9]])

print('A =', A)
B = A.copy()
n = len(A)

if n % 2 == 0:
  temp = B[0].copy()
  B[0] = B[n-1]
  B[n-1] = temp
  print('B =', B)
else:
  tengah = n//2
  temp = B[0].copy()
  B[0] = B[tengah]
  B[tengah] = temp
  print('B =', B)

hasilkali = np.matmul(A, B)
print('AxB =', hasilkali)
A = [[1 2 3]
 [4 5 6]
 [7 8 9]]
B = [[4 5 6]
 [1 2 3]
 [7 8 9]]
AxB = [[ 27  33  39]
 [ 63  78  93]
 [ 99 123 147]]

SOAL 11

Buat program yang menerima input berupa 5 bilangan bulat, simpan dalam array, lalu tentukan berapa banyak bilangan prima di dalam array tersebut.

# Meminta input dari pengguna untuk 5 bilangan bulat
list_angka = []
for i in range(5):
    n = int(input("Masukkan bilangan bulat ke-" + str(i + 1) + " = "))
    list_angka.append(n)

# Menghitung jumlah bilangan prima
jumlah_prima = 0
for n in list_angka:
    if n < 2:
        continue
    else:
      for i in range(2, n):
          if n % i == 0:
            break
          else:  # Jika angka adalah prima
            jumlah_prima += 1  # Tambah jumlah bilangan prima
            break


print("Jumlah bilangan prima dalam array adalah:", jumlah_prima)
Masukkan bilangan bulat ke-1 = 3
Masukkan bilangan bulat ke-2 = 4
Masukkan bilangan bulat ke-3 = 4
Masukkan bilangan bulat ke-4 = 5
Masukkan bilangan bulat ke-5 = 6
Jumlah bilangan prima dalam array adalah: 2
# Meminta input dari pengguna untuk 5 bilangan bulat
list_angka = []
for i in range(5):
    n = int(input("Masukkan bilangan bulat ke-" + str(i + 1) + " = "))
    list_angka.append(n)

# Menghitung jumlah bilangan prima
jumlah_prima = 0
for n in list_angka:
    if n < 2:
        continue  # Angka kurang dari 2 tidak dianggap prima

    prima = True  # Anggap angka adalah prima
    for i in range(2, n):
        if n % i == 0:  # Jika angka dapat dibagi habis oleh i
            prima = False  # Angka bukan prima
            break  # Keluar dari loop jika bukan prima

    if prima:  # Jika angka adalah prima
        jumlah_prima += 1  # Tambah jumlah bilangan prima

print("Jumlah bilangan prima dalam array adalah:", jumlah_prima)
Masukkan bilangan bulat ke-1 = 1
Masukkan bilangan bulat ke-2 = 2
Masukkan bilangan bulat ke-3 = 3
Masukkan bilangan bulat ke-4 = 4
Masukkan bilangan bulat ke-5 = 5
Jumlah bilangan prima dalam array adalah: 3

SOAL 12

Buatlah program yang meminta pengguna untuk memasukkan harga dan diskon untuk n produk. Diskon dihitung dalam persen. Program harus menghitung harga akhir setelah diskon.

# Inisialisasi list untuk harga dan diskon
harga_produk = []
diskon_produk = []

# Input harga dan diskon
n = int(input("Masukkan banyak produk = "))
for i in range(n):
    harga = float(input("Masukkan harga produk ke-" + str(i + 1) + " = "))
    diskon = float(input("Masukkan diskon produk ke-" + str(i + 1) + " = "))
    harga_produk.append(harga)
    diskon_produk.append(diskon)

# Hitung harga akhir dan harga akhir total
harga_akhir_total = 0
for i in range(n):
    harga_akhir = harga_produk[i] * (1 - (diskon_produk[i] / 100))
    harga_akhir_total += harga_akhir
    print("Harga akhir produk ke-" + str(i + 1) + " adalah = " + str(harga_akhir))

print("Harga total semua produk adalah = ", harga_akhir_total)
Masukkan banyak produk = 3
Masukkan harga produk ke-1 = 300000
Masukkan diskon produk ke-1 = 25
Masukkan harga produk ke-2 = 150000
Masukkan diskon produk ke-2 = 10
Masukkan harga produk ke-3 = 175000
Masukkan diskon produk ke-3 = 15
Harga akhir produk ke-1 adalah = 225000.0
Harga akhir produk ke-2 adalah = 135000.0
Harga akhir produk ke-3 adalah = 148750.0
Harga total semua produk adalah =  508750.0