Berikut ini adalah pertanyaan dari 4dministraktor pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas
Contoh:
Input: 3, 7, 11, 15, 19
Output: Barisan aritmetika
_________________
Mohon bantuannya. Terima kasih.
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
Kode Program (Python)
def info_barisan(barisan: list) -> tuple:
jenis = [
"BARISAN ARITMETIKA",
"BARISAN GEOMETRI",
"BUKAN BARISAN ARITMETIKA ATAU GEOMETRI",
"TIDAK DAPAT DITENTUKAN"
]
# Jika ukuran list barisan kurang dari 3,
# maka jenis barisan tidak dapat ditentukan
if (len(barisan) < 3): return (jenis[3], "")
# Pemeriksaan suku-suku
# Asumsikan barisan adalah barisan aritmetika
aritmetika = True
beda = barisan[1] - barisan[0]
for i in range(1, len(barisan)-1):
if (barisan[i+1] - barisan[i] != beda):
aritmetika = False
break
# Jika bukan barisan aritmetika,
# maka asumsikan barisan adalah barisan geometri.
if (not aritmetika):
geometri = True
rasio = barisan[1] / barisan[0]
for i in range(1, len(barisan)-1):
if (barisan[i+1] / barisan[i] != rasio):
geometri = False
break
# Pengembalian nilai jenis barisan
# beserta informasi suku pertama dan beda/rasio
str_info = f'suku pertama = {barisan[0]} dan '
str_info += f'{"beda" if aritmetika else "rasio"} = '
str_info += f'{str(beda) if aritmetika else str(rasio)}'
return (jenis[0], str_info) if aritmetika else (
(jenis[1], str_info) if geometri else (jenis[2], "")
)
### Program Utama
if __name__ == '__main__':
print("\nMenentukan Jenis Barisan Bilangan")
print("=================================")
barisan = [float(item) for item in input("Input barisan (dipisahkan koma): ").split(",")]
info_barisan_bilangan = info_barisan(barisan)
print(f"=> Jenis barisan bilangan: {info_barisan_bilangan[0]}")
if (info_barisan_bilangan[1] != ""):
print(f" dengan {info_barisan_bilangan[1]}")
### Akhir Program Utama
_________________
Pembahasan
Untuk persoalan ini, secara garis besar algoritmanya adalah:
- Baca input barisan bilangan
- Jika barisan bilangan (dari input) kurang dari 3 suku, maka jenis barisan bilangan tidak dapat ditentukan.
- Jika sebaliknya:
1. Apakah barisan bilangan merupakan barisan aritmetika?
2. Jika bukan, apakah barisan bilangan merupakan barisan geometri? - Output jenis barisan bilangan (beserta informasi).
Pada penentuan jenis barisan, pertama-tama diasumsikan barisan bilangan merupakan barisan aritmetika. Lalu, beda antar suku dibandingkan. Jika terdapat beda/selisih yang tidak sama dengan beda/selisih sebelumnya, maka barisan tersebut bukan barisan aritmetika.
Lanjutkan dengan asumsi bahwa barisan bilangan merupakan barisan geometri. Lalu, rasio antar suku dibandingkan. Jika terdapat rasio yang tidak sama dengan rasio sebelumnya, maka barisan tersebut bukan barisan geometri.
Jika barisan tersebut bukan barisan aritmetika maupun geometri, maka jenis barisan tidak diketahui. Mungkin barisan bilangan berjenis khusus. Hal ini tidak perlu kita selidiki lebih lanjut, karena berada di luar ruang lingkup permasalahan. Yang penting, output-kan saja bahwa barisan bilangan bukan berjenis barisan aritmetika maupun geometri.
Silahkan amati alur program di atas. Saya rasa, komentar-komentar pada program sudah cukup dapat menjelaskannya.
Contoh hasil eksekusi dapat dilihat pada gambar. Pada contoh terakhir, saya inputkan barisan bilangan Fibonacci. Output yang diharapkan adalah barisan bukan berjenis aritmetika atau geometri.
Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Sat, 05 Nov 22