Algoritma Pemrograman Python | 91 perulangan akan diberhentikan secara paksa. Adapun contoh sintaks perulangan while dengan menggunkan break sebagai berikut : Sintaks diatas akan menghentikan proses perulangan berdasarkan bunga yang dicari, pada contoh ini bunga dicari adalah sakura yang berada pada index ke – 5 (perhitungan index dimulai dari angka 0). Adapun hasil eksekusi sintaks tersebut dapat dilihat pada Gambar 5. Gambar 5. Eksekusi while menggunakan break # Contoh perulangan while dengan break NamaBunga = [ 'Mawar', 'Tulip', 'Anggrek', 'Melur', 'Melati','Sakura', 'Kamboja', 'Teratai' ] Bunga_Yang_Dicari = input('Input Nama Bunga Yang Dicari: ') p = 0 while p < len(NamaBunga): if NamaBunga[p].lower() == Bunga_Yang_Dicari.lower(): print('Ketemu di index', p) break print('Bukan Bunga', NamaBunga[p]) p += 1
92 | Algoritma Pemrograman Python Pada perulangan break ini kita dapat menambahkan blok kode else yang bertujuan untuk menghentikan perulangan tanpa secara paksa. Adapun contoh sintaks perulangan tersebut sebagai berikut : Adapun hasil dari eksekusi sintaks diatas dapat dilihat pada Gambar 6. Gambar 6. while menggunakan break dengan else NamaBunga = [ 'Mawar', 'Tulip', 'Anggrek', 'Melur', 'Melati','Sakura', 'Kamboja', 'Teratai' ] Bunga_Yang_Dicari = input('Input Nama Bunga Yang Dicari: ') p = 0 while p < len(NamaBunga): if NamaBunga[p].lower() == Bunga_Yang_Dicari.lower(): print('Ketemu di index', p) break print('Bukan Bunga', NamaBunga[p]) p += 1 else : print('Mohon Maaf, Bunga yang anda cari tidak ada didalam List.')
Algoritma Pemrograman Python | 93 B. Perulangan For Perulangan for merupakan perintah iterasi pada suatu nilai sequence seperti list, tuple, string dan lain-lain. Perulangan for pada bahasa pemrograman Python sedikit berbeda dengan perulangan mayoritas bahasa pemrograman lainnya, dikarenakan perulangan for pada Python lebih dikenal sebagai foreach pada bahasa pemrograman lainnya seperti PHP. Penggunaan perulangan for pada pemrograman Python biasanya untuk memproses array atau himpunan. Berikut ini adalah struktur perulangan for bahasa pemrograman pada Python(Kuhlman, 2013). Adapun penjelasan struktur diatas sebagai berikut : 1. TR merupakan variabel suatu himpunan / Array (bias berupa tipe data seperti data list, tuple, string, dictionary atau set). 2. for p in TR: merupakan perulangan for yang dilakukan berdasarkan banyaknya jumlah elemen yang ada pada variabel TR tersebut. Untuk lebih jelasnya dapat dilihat pada contoh sebagai berikut : TR = [a, b, ...] for p in TR: # Coding Program yang akan diulang Buah = ['Mangga','Nangka','Jeruk','Apel','Jambu'] for p in Buah: print(p)
94 | Algoritma Pemrograman Python Adapun hasil output dari sintaks tersebut, dapat dilihat pada Gambar 7. Gambar 7. Perulangan menggunakan For 1. Perulangan For Menggunakan List Perulangan for menggunakan list hampir sama dengan penggunaan while, yaitu perulangan dilakukan untuk iterasi pada elemen didalam list. Adapun contoh sintaks perulangan for menggunakan list pada Bahasa pemrograman Python sebagai berikut: Adapun hasil dari eksekusi sintaks diatas dapat dilihat pada Gambar 8. listProvinsi = [ 'Aceh', 'Sumatera Utara', 'Sumatera Barat', 'Riau', 'Jambi', 'Bengkulu', 'Lampung', 'Banten', 'Jawa Barat' ] for Provinsi in listProvinsi: print(Provinsi)
Algoritma Pemrograman Python | 95 Gambar 8. Perulangan For menggunakan list 2. Perulangan For Menggunakan Range Selain perulangan for menggunakan list, for juga dapat digunakan pada fungsi range. Adapun contoh sintaks perulangan for menggunakan renge sebagai berikut : Adapun hasil dari eksekusi sintaks diatas dapat dilihat pada Gambar 9. Gambar 9. Perulangan For menggunakan range Selain sintaks diatas, contoh lainnya sebagai berikut : # Perulangan For pada Range untuk Angka 0 sampai 7 for p in range(7): print("Perulangan Angka ke -", p) # Bilangan Genap Kelipatan 4 for bilangan_genap in range(2, 24, 4): print(bilangan_genap)
96 | Algoritma Pemrograman Python 3. Perulangan For Menggunakan Tuple Perulangan for menggunakan tuple, untuk mengulang elemen didalam suatu tuple. Adapun contoh sintaks perulangan for menggunakan tuple sebagai berikut : Adapun hasil dari eksekusi sintaks diatas dapat dilihat pada Gambar 10 Gambar 10. Perulangan For menggunakan tuple Selain sintaks diatas, contoh lainnya sebagai berikut : # Bilangan Ganjil Kelipatan 2 for bilangan_ganjil in range(1, 24, 2): print(bilangan_ganjil) TupleMakanan = ('Rendang', 'Bakso', 'Soto', 'Batagor') for Makanan in TupleMakanan: print("Saya suka Makan " + Makanan) Deret_tuple = (15, 25, 35, 45, 55) for p in range(len(Deret_tuple)): print(f"Elemen Tuple ke-{p}: {Deret_tuple[p]}")
Algoritma Pemrograman Python | 97 4. Perulangan For Menggunakan String Perulangan for menggunakan string, digunakan untuk mengulang karakter didalam suatu string (Herho, 2017). Adapun contoh sintaks perulangan for menggunakan string sebagai berikut : Adapun hasil dari eksekusi sintaks diatas dapat dilihat pada Gambar 11 Gambar 11. Perulangan For menggunakan string Selain sintaks diatas, contoh lainnya sebagai berikut : 5. Perulangan For Menggunakan Break Perulangan for menggunakan break, digunakan untuk menghentikan perulangan secara paksa for karakter_string in "PenaMudaMedia": print(karakter_string) # Menghitung berapa kali karakter tertentu tampil dalam suatu string Data_string = "Pena Muda Media!" count = 0 for char in Data_string: if char == 'M': count += 1 print("Jumlah karakter 'M' dalam string:", count)
98 | Algoritma Pemrograman Python (interupsi)(Sugiana, 2002). Adapun contoh sintaks perulangan for menggunakan break sebagai berikut : Adapun hasil dari eksekusi sintaks diatas dapat dilihat pada Gambar 12 Gambar 12. Perulangan For menggunakan break 6. Perulangan For Menggunakan Continue Perulangan for menggunakan continue, digunakan untuk melewati iterasi dalam proses perulangan, dan melanjutkan ke iterasi selanjutnya. Adapun contoh sintaks perulangan for menggunakan continue sebagai berikut : for p in range(5, 25): # hentikan jika p == 20 if (p == 20): break print(p) for p in range(5, 15): # lewati (Skip) jika p == 9 if (p == 9): continue print(p)
Algoritma Pemrograman Python | 99 Adapun hasil dari eksekusi sintaks diatas dapat dilihat pada Gambar 13 Gambar 13. Perulangan For menggunakan continue Dari hasil output pada Gambar 13 tersebut, dapat dilihat bahwa deretan angka dimulai dari range 5, dan pada deret angka ke - 8 untuk angka ke - 9 dilewati dan dilanjutkan langsung ke angka ke – 10, dan proses perulangan berhenti sebelum samapi angka ke deretan angka ke -15.
100 | Algoritma Pemrograman Python 10 Fungsi ungsi adalah sekumpulan perintah kode program yang dijadikan satu dan dapat digunakan kembali atau reusable, cukup sekali mendefinisikannya dan dapat menggunakannya berulang-ulang (Ramalho 2022). Fungsi di Python ditandai dengan kata def. A. Sintak fungsi Ada beberapa aturan dasar sintak penulisan fungsi selalu diawali dengan kata kunci def spasi nama fungsi dalam kurung parameter jika ada dan diakhiri titik dua. Untuk format penulisan dapat dilihat di bawah ini: def <namaFungsi> (parameter): statements Sama dengan penggunaan perulangan dan kondisi, blok kode fungsi diawali setelah penulisan titik dua. Semua perintah dalam blok kode fungsi akan menjorok ke dalam dari pendefinisian fungsi. Contoh dari penulisan sebuah fungsi sederhana dengan nama helloworld(): def helloworld(): F
Algoritma Pemrograman Python | 101 print('Hello world!!!') Dari contoh di atas, diketahui nama fungsinya adalah helloworld dan dimana parameter di dalam kurung tidak ada. Jika kode fungsi ini dijalankan maka akan mencetak Hello world!!! B. Memanggil Fungsi Kode fungsi tidak akan dieksekusi jika nama fungsi tidak pernah dipanggil. Maka dari itu, untuk menjalankan fungsi cukup dengan menuliskan namafungsi atau dengan format namaFungsi() Dengan memanggil nama fungsi maka kemudian perintah di dalam fungsi akan dieksekusi. Cara memanggil fungsi cukup dengan mengetik nama fungsi dan diikuti tanda kurung () seperti di bawah ini: #contoh fungsi def helloworld(): print('Hello world!!!') #panggil fungsi helloworld()
102 | Algoritma Pemrograman Python Output yang akan dihasilkan Hello world!!! Jika nama fungsi dipanggil berkali-kali maka perintah dalam fungsi tersebut akan di eksekusi berkali kali. helloworld() helloworld() helloworld() Output Hello world!!! Hello world!!! Hello world!!! Untuk lebih jelasnya, perhatikan contoh berikut: def luasPersegi(): luas=sisi*sisi print('Luas:',luas) #pemanggilan ke-1 sisi=4 luasPersegi() #pemanggilan ke-2 sisi=7 luasPersegi()
Algoritma Pemrograman Python | 103 Dengan adanya fungsi luasPersegi() perhitungan luas persegi dengan variasi nilai sisi yang beragam dapat dilakukan berkali-kali. Cukup dengan sekali mendefinisikan fungsi, fungsi dapat dipanggil berkali-kali. Hal inilah yang menjadi keunggulan dari penggunaan fungsi. C. Jenis-jenis Fungsi Fungsi dapat dibedakan menjadi 2 jenis jika dikategorikan berdasarkan nilai balik(Mattes 2015), yaitu: 1. Fungsi tanpa nilai balik 2. Fungsi dengan nilai balik Pada beberapa contoh sebelumnya sudah banyak contoh fungsi yang tidak mengembalikan nilai. Karena dari contoh sebelumnya belum ada fungsi yang menggunakan return yang berfungsi untuk mengembalikan nilai. Nilai yang dikembalikan fungsi dapat digunakan untuk dimanipulasi lagi. Adapun format penulisan fungsi dengan nilai balik adalah sebagai berikut: def <namaFungsi> (parameter): statements return nilai Berikut contoh fungsi dengan nilai balik: def tarifparkir(): tarif=5000 if(jam>=1):
104 | Algoritma Pemrograman Python tarif=tarif+(jam*3000) return tarif Struktur penulisan fungsi dengan nilai balik hanya memiliki perbedaan pada statement return di akhir fungsi. Dimana return bermakna mengembalikan sebuah nilai ketika fungsi tersebut dipanggil. Jika statement return dieksekusi maka kode program setelah return dalam fungsi tersebut tidak akan dieksekusi. Maka dari itu, return biasanya diurutan terakhir dalam fungsi. Karena ada nilai yang akan dikembalikan, maka cara pemanggilan fungsi dengan nilai balik agak berbeda, yaitu dengan menyiapkan variabel untuk menampung nilai balik dari fungsi. variabel=namaFungsi() Contoh #cara 1 menyimpan pada variabel jam=5 biaya=tarifparkir() print('Biaya parkir: ',biaya) Atau langsung digunakan tanpa variabel jam=5 #cara 2 print('Biaya parkir: ',tarifparkir()) Dari contoh pemanggilan fungsi dengan menggunakan variabel di atas, variabel biaya akan menyimpan nilai tarif yang diperoleh dari fungsi tarifparkir(). Nilai yang
Algoritma Pemrograman Python | 105 dikembalikan oleh fungsi dengan nilai balik dapat di olah kembali seperti melanjutkan operasi selanjutnya atau hanya sekedar menyimpannya dalam sebuah variabel. Sebuah fungsi dapat memiliki return lebih dari 1. Dengan ketentuan, jika satu return sudah dieksekusi maka kode program di bawah return tersebut tidak akan dieksekusi. Melihat cara kerja return maka ini akan mengingatkan dengan perintah break pada perulangan. Perhatikan contoh fungsi di bawah ini yang memiliki return lebih dari satu: def cariMax(): if(bil1>bil2): return bil1 #return pertama return bil2 #return kedua bil1=30 bil2=15 maks=cariMax() print('Bilangan terbesar dari ', bil1,'dan ',bil2,':',maks) Fungsi cariMax() berfungsi untuk membandingkan bil1 dan bil2, jika bil1 lebih besar dari bil2 maka return pertama yang akan dieksekusi dan return kedua akan dilewati atau diabaikan. Namun, jika bil1 tidak lebih besar dari bil2, maka return kedua yang akan dieksekusi. Sehingga keluaran yang dihasilkan oleh kode program di atas adalah:
106 | Algoritma Pemrograman Python Bilangan terbesar dari 30 dan 15 : 30 Apabila nilai bil1=20 dan bil2=45 maka akan menghasilkan keluaran Bilangan terbesar dari 20 dan 45 : 45 D. Parameter Sebuah nilai/variabel dapat dilemparkan atau dikirimkan ke dalam sebuah fungsi melalui parameter. Sehingga, akan menghasilkan fungsi yang dinamis yang tergantung dengan nilai parameter yang diberikan. Misal ketika ingin membuat sebuah fungsi tambahLima() dimana setiap bilangan yang dikirimkan ke fungsi akan menambahkannya dengan 5 sehingga kode programnya adalah sebagai berikut: def tambahLima(bilangan): print(bilangan+5) Agar fungsi ini dieksekusi, fungsi ini perlu dipanggil terlebih dahulu. Cara memanggil fungsinya cukup dengan nama fungsi diikuti dengan nilai/variabel yang akan dikirimkan ke parameter. #passing by value tambahLima(10) #passing by variabel nilai=10 tambahLima(nilai) Mengirimkan nilai langsung ke parameter dikenal dengan istilah passing by value dan mengirimkan nilai ke
Algoritma Pemrograman Python | 107 parameter melalui sebuah variabel dikenal dengan istilah passing by variable. Kedua metode pengiriman nilai ini akan menghasilkan keluaran yang sama yaitu sama-sama mengembalikan nilai 15. Contoh lain dari fungsi yang memiliki parameter adalah kode penentuan predikat kelulusan seperti di bawah ini: def predikat(ipk): if ipk>3.5: return 'dengan pujian' elif ipk>3: return 'sangat memuaskan' else: return 'memuaskan' #passing by value print(predikat(3.7)) #passing by variable nilai=3.2 print(predikat(nilai)) Terdapat satu parameter pada fungsi predikat(), yaitu: ipk. Nilai ipk dapat dikirimkan dengan menggunakan value atau variable.
108 | Algoritma Pemrograman Python E. Parameter Wajib Fungsi dengan parameter seperti contoh sebelumnya fungsi tambahLima() sudah menggunakan parameter wajib. Dimana setiap pemanggilan tambahLima() harus memberikan nilai untuk parameter bilangan. Karena jika tidak, maka akan terdapat pesan error seperti ini: def tambahLima(bilangan): print(bilangan+5) #passing by value tambahLima() --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[8], line 4 2 print(bilangan+5) 3 #passing by value ----> 4 tambahLima() TypeError: tambahLima() missing 1 required positional argument: 'bilangan' Hal ini disebabkan parameter bilangan adalah contoh dari parameter wajib, dimana setiap pemanggilan fungsi wajib mengirimkan nilai ke parameter tersebut. Sebagai contoh: def hitung(nilai1,nilai2):
Algoritma Pemrograman Python | 109 return nilai1+nilai2 print('hasil:',hitung(15,20)) Jika dijalankan akan menghasilkan keluaran seperti ini: hasil: 35 Pada kode pemanggilan fungsi hitung nilai yang dikirimkan adalah 15 dan 20. Bilangan 15 akan disimpan ke dalam parameter nilai1 dan bilangan 20 akan disimpan ke nilai2. Hal ini karenakan, pengiriman nilai akan dilakukan secara terurut. Misal, kode pemanggilan fungsi hitung diubah menjadi: print('hasil:',hitung(20,15)) akan tetap menghasilkan output yang sama yaitu 35 hanya saja berbeda dinilai parameter nilai1 menjadi 20 dan nilai2 menjadi 15. F. Parameter Opsional Pada Python juga terdapat parameter opsional atau dikenal juga dengan default. Parameter ini tidak wajib diisi dikarenakan dia sudah memiliki nilai default jika tidak diisi. Perhatikan contoh fungsi yang memiliki parameter wajib: def datadiri(nama, tinggi, satuan): print('Nama:',nama,' tinggi badan:',tinggi,satuan)
110 | Algoritma Pemrograman Python datadiri('Sari',168,'cm') Dari kode program di atas didapatkan keluaran: Nama: Sari tinggi badan: 168 cm Dimana dari ketiga parameter semuanya adalah parameter wajib, sehingga nilai semua parameter harus dikirimkan setiap fungsi dipanggil. Sekarang parameter dari fungsi datadiri() akan dirubah menjadi seperti di bawah ini: def datadiri(nama, tinggi, satuan='cm'): print('Nama:',nama,', tinggi badan:',tinggi,satuan) Pada fungsi di atas, sudah didefinisikan tiga parameter yaitu: 1. nama: parameter wajib 2. tinggi: parameter wajib 3. satuan: parameter opsional Dari ketiga parameter tersebut, hanya parameter satuan yang boleh tidak diisi atau tidak diberikan nilai pada saat fungsi dipanggil. Jika parameter satuan tidak diisi maka secara default isi dari parameter satuan adalah ‘cm’. Dengan demikian cara memanggil fungsi datadiri() terdapat dua cara, yaitu dengan memberikan nilai satuan atau tidak seperti yang dapat dilihat pada kode di bawah ini:
Algoritma Pemrograman Python | 111 #mengirimkan nilai satuan datadiri('Sari',1.68,'m') #menggunakan nilai default datadiri('Sari',168) Jika di run, keluaran yang akan diperoleh adalah: Nama: Sari, tinggi badan: 1.68 m Nama: Sari, tinggi badan: 168 cm G. Parameter Tidak Berurutan Sebelum membahas materi mari perhatikan kode program di bawah ini: def hitunggaji(gapok, tunjangan=0, lembur=0): print('Gaji Pokok:',gapok) print('Tunjangan:', tunjangan) print('Lembur:', lembur) return gapok+tunjangan+lembur Pada hitunggaji(), terdapat 2 parameter opsional yaitu tunjangan dan lembur dengan nilai default sama dengan 0. Mari coba panggil fungsi hitunggaji(). total=hitunggaji(1000000, 200000) print('Total gaji:',total)
112 | Algoritma Pemrograman Python Keluaran yang dihasilkan dari kode pemanggilan di atas adalah sebagai berikut: Gaji Pokok: 1000000 Tunjangan: 200000 Lembur: 0 Total gaji: 1200000 Dari kode pemanggilan fungsi hanya ada dua nilai yang dikirimkan yaitu 1.000.000 ke parameter gapok dan 200.000 ke parameter tunjangan. Hal ini disebabkan, pengiriman nilai secara default dilakukan sesuai dengan urutan penulisan parameter pada definisi fungsi. Lalu bagaimana jika ingin mengirimkan nilai hanya ke parameter gapok dan lembur saja? Apakah bisa? Jawabannya bisa, dengan cara pada saat pemanggilan nama fungsi harus menulisan nama parameter dan diikuti nilai pada parameter tersebut. Sebagai contoh: total=hitunggaji(gapok=1000000, lembur=200000) print('Total gaji:',total) Dengan cara memanggil fungsi yang diikuti nama parameter maka urutan pengiriman nilai tidak sesuai dengan urutan nama parameter pada saat pendefinisian fungsi, tetapi tergantung dengan urutan pemanggilan nama parameter pada saat pemanggilan fungsi. Menggunakan cara ini passing parameter dapat dilakukan secara acak atau tidak harus terurut lagi. Sehingga, output yang akan dihasilkan dari kode di atas adalah sebagai berikut:
Algoritma Pemrograman Python | 113 Gaji Pokok: 1000000 Tunjangan: 0 Lembur: 200000 Total gaji: 1200000 Dapat dilihat bahwa, parameter tunjangan tidak diberikan nilai pada saat pemanggilan sehingga nilai yang digunakannya adalah nilai default yaitu 0. Sedangkan untuk parameter menggunakan nilai yang dikirimkan pada saat pemanggilan fungsi. H. Parameter *args Terkadang parameter yang dibutuhkan pada fungsi adalah parameter yang memiliki jumlah nilai yang tidak menentu layaknya array. Hal ini dapat dilakukan dengan cara menggunakan tanda asterik atau bintang pada nama parameter. Sebagai contoh: def total(*bilangan): print(bilangan) total(1, 2, 3, 4, 5,6, 'kadang') Dari contoh di atas memiliki output: (1, 2, 3, 4, 5, 6, 'kadang') I. Parameter **kwargs Fungsi parameter keyword arguments atau sering disingkat dengan kwargs adalah parameter yang memiliki jumlah parameter tidak terbatas. Cukup dengan memangil
114 | Algoritma Pemrograman Python fungsi dengan diikuti dengan pendefenisian nama parameter. Seperti contoh di bawah ini, hanya ada satu parameter dengan nama keywords pada fungsi terbesar(). Namun pada pemangilan, terdapat 3 parameter yang dikirimkan. def terbesar(**keywords): max = 0; for key in keywords: max = keywords[key] return max print (terbesar(bil1=3, bil2=4, bil5=10))
Algoritma Pemrograman Python | 115 11 Array rray adalah sebuah struktur data yang digunakan dalam pemrograman untuk menyimpan sekumpulan nilai atau elemen yang serupa atau sejenis. Elemenelemen ini disimpan dalam urutan tertentu dan dapat diakses menggunakan indeks. Indeks adalah bilangan bulat yang digunakan untuk mengidentifikasi lokasi atau posisi elemen dalam array. Analogi array dalam kehidupan sehari-hari dapat membantu Anda memahami konsep ini dengan lebih baik. Berikut beberapa analogi array dalam kehidupan sehari-hari: 1. Kotak Barang Bayangkan Anda memiliki kotak penyimpanan di rumah Anda. Kotak ini memiliki beberapa laci, dan setiap laci berisi jenis barang yang berbeda. Setiap laci dapat dianggap sebagai elemen dalam array, dan setiap jenis barang adalah nilai dalam elemen tersebut. Anda dapat dengan mudah mengakses barang tertentu dengan merujuk ke laci yang tepat. 2. Lemari Pakaian Lemari pakaian Anda mungkin berisi beberapa rak atau bagian yang berisi pakaian Anda. Setiap rak dapat dianggap sebagai elemen dalam array, dan pakaian di setiap rak adalah nilai-nilai dalam elemen tersebut. Anda A
116 | Algoritma Pemrograman Python dapat dengan cepat mencari pakaian tertentu dengan mengetahui rak yang sesuai. 3. Playlist Musik Saat Anda membuat playlist musik di perangkat Anda, setiap lagu dalam playlist adalah elemen dalam array musik. Anda dapat mengatur lagu-lagu ini dalam urutan tertentu, dan Anda dapat dengan mudah memutar lagulagu sesuai urutan yang telah Anda tentukan. Analogi-analogi ini membantu menjelaskan bagaimana array digunakan untuk mengatur dan mengelola data dalam kehidupan sehari-hari. Seperti dalam pemrograman, penggunaan array memungkinkan kita untuk menyimpan dan mengakses data dengan lebih efisien. A. Array didalam Bahasa Python Pengertian array didalam bahasa Python sama halnya dengan array pada bahasa pemrograman yang lain. Dimana array merupakan variable tunggal yang digunakan untuk menyimpan beberapa nilai yang bisa diakses atau dimodifikasi dengan menggunakan indeks (Kurniawan, 2022). Array didalam bahasa Python hampir sama dengan List yang ada didalam bahasa pemrograman tetapi juga mempunyai perbedaan. Dalam bahasa Python, "Array" dan "List" adalah dua konsep yang sering membingungkan, terutama karena dalam Python, "List" adalah struktur data yang digunakan untuk menyimpan koleksi elemen, sementara "Array" sendiri bukanlah struktur data bawaan seperti di beberapa bahasa pemrograman lainnya. Namun, list dapat digunakan untuk membuat struktur data yang
Algoritma Pemrograman Python | 117 mirip dengan array. Berikut adalah tabel perbedaan antara List dan Array dalam bahasa Python. Array List Terdiri dari elemen yang mempunyai tipe data yang sama Untuk elemen pendirinya bisa berbeda-beda untuk tipe datanya Untuk proses deklarasi perlu mengimpor sebuah modul Untuk proses deklarasi tidak butuh untuk mengimpor modul eksplisit Operasi aritmatika bisa langsung ditangani Operasi aritmatika tidak bisa langsung ditangani Lebih hemat memori karena hanya terdiri dari satu tipe data yang sama Lebih boros memori karena terdiri dari banyak tipe data Fleksibilitasnya masih kurang Fleksibilitas besar Jadi, dalam bahasa Python, List adalah struktur data yang lebih umum digunakan untuk menyimpan koleksi elemen dengan tipe data yang beragam, sementara NumPy array adalah struktur data yang lebih spesifik untuk operasi numerik dan biasanya memiliki tipe data yang seragam. Modul yang bisa kita pakai untuk membuat array didalam bahasa python adalah ‚arrays‛ dan ‚NumPy‛. Untuk NumPy (Numerical Python) merupakan modul yang lebih disarankan didalam pembuatan array dikarenakan lebih fleksibel, memungkinkan operasi matematika, dan bisa untuk multidimensi.
118 | Algoritma Pemrograman Python B. Fungsi Array didalam Bahasa Python Dalam bahasa Python, meskipun tidak ada tipe data array bawaan, tetapi dapat menggunakan array numerik menggunakan pustaka NumPy. Array NumPy sangat berguna dalam berbagai konteks, terutama ketika Anda perlu melakukan pemrosesan data numerik (Swastika, 2019). Berikut adalah beberapa kegunaan utama array NumPy dalam Python: 1. Komputasi Numerik: NumPy menyediakan array multidimensi yang efisien dan alat pemrosesan data numerik. Ini membuatnya sangat cocok untuk tugastugas komputasi numerik seperti aljabar linear, statistik, analisis data, dan perhitungan ilmiah. 2. Pemrosesan Data: NumPy memungkinkan Anda untuk dengan mudah melakukan operasi matematika pada seluruh array atau elemen-elemen array. Ini sangat berguna saat bekerja dengan dataset besar atau matriks numerik. 3. Ilmu Data (Data Science): NumPy adalah salah satu pustaka dasar dalam ekosistem ilmu data Python. Banyak pustaka ilmu data lainnya seperti pandas, scikit-learn, dan TensorFlow, menggunakan NumPy arrays sebagai dasar untuk pemrosesan data mereka. 4. Visualisasi Data: NumPy arrays sering digunakan sebagai input untuk pustaka visualisasi data seperti Matplotlib atau Seaborn. Anda dapat dengan mudah mengambil data dari array NumPy dan membuat grafik atau plot yang informatif. 5. Pemodelan Statistik: NumPy menyediakan banyak fungsi statistik yang berguna untuk menganalisis data,
Algoritma Pemrograman Python | 119 seperti perhitungan rata-rata, median, deviasi standar, korelasi, dan lain-lain. Secara keseluruhan NumPy array adalah alat yang cocok untuk pemrosesan data numerik dalam Python dan digunakan luas dalam berbagai bidang seperti ilmu pengetahuan data, ilmu pengetahuan komputer, rekayasa, ilmu fisika, dan banyak lagi. C. Bagaimana cara menginisialisai Array dalam Python Karena didalam Python tidak ada tipe data Array bawaan seperti di beberapa bahasa pemrograman lainnya (seperti C atau Java). Maka jika ingin bekerja dengan array numerik dan melakukan operasi matematika, dapat menggunakan pustaka NumPy, yang memungkinkan Anda membuat dan mengelola array numerik. Berikut adalah langkah-langkah untuk bekerja dengan NumPy arrays di Python: 1. Menginstal NumPy (jika belum terinstal): Jika belum menginstal NumPy, maka dapat diinstalasi terlebih dahulu melalui terminal atau bash dengan menggunakan pip, perintah berikut: pip install numpy Gambar 1. Proses install numpy. 2. Impor NumPy: Selanjutnya adalah mengimpor NumPy ke dalam program Python sebelum dapat menggunakannya:
120 | Algoritma Pemrograman Python import numpy as np Gambar 2. Proses import numpy kedalam Python. 3. Membuat Array NumPy: Setelah itu bisa dimulai untuk membuat array NumPy dengan berbagai cara. Beberapa contoh dasar adalah: Membuat array dari daftar Python: my_array = np.array([1, 2, 3, 4, 5]) Gambar 3. Contoh pembuatan array dari daftar python. Membuat array dengan nilai nol: zeros_array = np.zeros(5) # Membuat array dengan lima elemen bernilai nol Gambar 4. Contoh pembuatan array dengan nilai nol.
Algoritma Pemrograman Python | 121 Membuat array dengan nilai satu: ones_array = np.ones(3) # Membuat array dengan tiga elemen bernilai satu Gambar 5. Contoh pembuatan array dengan nilai satu. 4. Melakukan Operasi pada Array NumPy: Selain membuat operasi dasar array, dapat dilakukan juga untuk berbagai operasi matematika pada array NumPy seperti penambahan, pengurangan, perkalian, dan lainnya. Contoh: a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) # Penambahan elemen-elemen array result = a + b # [5, 7, 9] # Perkalian elemen-elemen array result = a * b # [4, 10, 18] Gambar 6. Contoh operasi array pada numpy.
122 | Algoritma Pemrograman Python 5. Mengakses Elemen dalam Array NumPy: Dapat juga dilakukan untuk mengakses elemenelemen dalam array NumPy menggunakan indeks, slicing, atau dengan menggunakan berbagai metode yang disediakan oleh NumPy. my_array = np.array([1, 2, 3, 4, 5]) # Mengakses elemen dengan indeks elemen_pertama = my_array[0] # 1 # Slicing subset_array = my_array[1:4] # [2, 3, 4] Gambar 7. Contoh akses elemen array pada numpy. 6. Mengubah Ukuran Array: Berikut contoh untuk mengubah ukuran (shape) array NumPy dengan berbagai metode yang disediakan oleh NumPy. Ini termasuk reshape, resize, dan lain-lain. my_array = np.array([1, 2, 3, 4, 5])
Algoritma Pemrograman Python | 123 # Mengubah ukuran array reshaped_array = my_array.reshape((1, 5)) # Mengubah menjadi matriks baris 1x5 Gambar 8. Contoh mengubah ukuran array pada numpy. Diatas merupakan langkah-langkah dasar untuk bekerja dengan NumPy arrays di Python. NumPy adalah pustaka yang sangat kuat untuk pengolahan data numerik dan ilmu data dalam Python. 7. Jenis-jenis array dalam bahasa python Pada umumnya untuk bekerja dengan kumpulan beberapa elemen didalam bahasa Python adalah dengan menggunakan list dan NumPy arrays. Berikut ini akan dijelaskan beberapa jenis array yang umum digunakan dalam Python: a. List: List adalah tipe data bawaan Python yang digunakan untuk menyimpan koleksi elemen. Ini adalah array dinamis yang dapat berisi elemen dengan tipe data yang berbeda. Misalnya: my_list = [1, 2, 3, 4, 5]
124 | Algoritma Pemrograman Python Gambar 9. Contoh tipe data list. b. NumPy Array: NumPy adalah pustaka yang digunakan untuk bekerja dengan array numerik. NumPy array adalah jenis array yang sangat efisien dan digunakan luas dalam pemrosesan data numerik, ilmu data, dan komputasi ilmiah. import numpy as np my_array = np.array([1, 2, 3, 4, 5]) Gambar 10. Contoh numpy array. c. Array NumPy multi dimensi: Ini adalah array NumPy dengan dua dimensi atau lebih. Mereka digunakan untuk mewakili data dalam bentuk tabel, seperti dataset ilmu data atau gambar berwarna. import numpy as np my_3d_array = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) Gambar 11. Contoh array multi dimensi.
Algoritma Pemrograman Python | 125 d. Array Karakter (String): membuat array yang berisi karakter atau string dalam Python. Ini berguna untuk pemrosesan teks. char_array = np.array(['a', 'b', 'c', 'd']) Gambar 12. Contoh array karakter. e. Array Bilangan Kompleks: NumPy juga mendukung array yang berisi bilangan kompleks. complex_array = np.array([1 + 2j, 3 - 4j, 5 + 6j]) Gambar 13. Contoh array bilangan array. f. Array Ragged: Ini adalah jenis array yang elemennya bisa memiliki panjang yang berbeda. Mereka sering digunakan dalam pemrosesan teks dan data berstruktur. ragged_array = [[1, 2], [3, 4, 5], [6]] Gambar 14. Contoh array ragged. Pilihan jenis array yang tepat tergantung pada kebutuhan Anda dalam pengembangan perangkat lunak. Python sangat fleksibel dan dapat menangani berbagai jenis array sesuai dengan kebutuhan aplikasi yang diinginkan.
126 | Algoritma Pemrograman Python 12 Algoritma Rekursi ateri paling menarik dalam algoritma pemrograman di bahasa pemrograman apapun adalah pembahasan mengenai rekursif. Biasanya materi ini diberikan di chapter terakhir dalam buku pemrograman, dengan kata lain rekursif ini adalah materi puncak dalam algoritma pemrograman. Rekursif itu sendiri adalah teknik menyelesaikan persoalan dimana di dalamnya mengandung definisi persoalan itu sendiri. Di dalam dunia pemrograman, fungsi rekursif merupakan sebuah metode perulangan yang bersifat noniterasi. Sebenarnya fungsi rekursif hanyalah sebuah fungsi biasa seperti fungsi def pada umumnya. Dia bisa dipanggil, bisa menerima parameter, bisa mengembalikan nilai, dan lain sebagainya. Hanya saja, sesuai namanya, fungsi rekursif itu bersifat rekursi. Karena ia memanggil dirinya sendiri sehingga menimbulkan efek perulangan. Perulangan ini bisa berhenti ketika kondisi tertentu tercapai, atau bisa juga bersifat tak terbatas, atau mungkin bahkan bisa menimbulkan error karena pemanggilan fungsi yang tak ada habisnya. M
Algoritma Pemrograman Python | 127 Dalam keseharian, rekursif ini dianalogikan dengan 2 cermin yang sedang berhadapan. Cermin-cermin tersebut saling memantulkan satu sama lain, sehingga hasil pantulan satu cermin akan dipantulkan lagi dan lagi secara terus menerus. Akhirnya hal tersebut menimbulkan efek cermin di dalam cermin di dalam cermin di dalam cermin di dalam cermin dan seterusnya seperti yang terlihat pada Gambar berikut. Gambar 1. Analogi Rekursi dengan cermin A. Kelebihan Rekursi Algoritma rekursi memiliki beberapa kelebihan dibandingkan dengan menggunakan looping biasa, diantaranya adalah: 1. Efisiensi kode: Dalam beberapa kasus, penggunaan fungsi rekursif dapat menghasilkan kode yang lebih
128 | Algoritma Pemrograman Python efisien dan lebih mudah dibaca dibandingkan dengan penggunaan loop. 2. Fleksibilitas: Fungsi rekursif memungkinkan pengguna untuk menghasilkan program yang lebih fleksibel dan dapat menangani masalah yang kompleks. 3. Kebutuhan memori rendah: Fungsi rekursif membutuhkan memori yang lebih sedikit dibandingkan dengan loop yang mengulang tugas yang sama. B. Mendefinisikan Rekursi Fungsi rekursif terdiri dari dua bagian penting yaitu: 1. Basis Basis adalah bagian yang berisi nilai fungsi yang terdefinisi secara eksplisit. Bagian ini juga sekaligus menghentikan rekursif dan memberikan sebuah nilai yang terdefinisi pada fungsi rekursif. 2. Rekurens Bagian ini mendefinisikan fungsi dalam terminologi dirinya sendiri. Berisi kaidah untuk menemukan nilai fungsi pada suatu input dari nilainilai lainnya pada input yang lebih kecil. Misalkan kita ingin mendefinisikan rekursi untuk penyelesaian faktorial. Penyelesaian faktorial harus dilakukan secara iteratif, dimana: n! = (n)(n-1)(n-2) …. (1) 1! = 1 0! = 1
Algoritma Pemrograman Python | 129 Dengan menggunakan rekursi, faktorial dapat didefinisikan dengan rumus sebagai berikut: ( ) { ( ) C. Fase pada Rekursi Proses penyelesaian masalah menggunakan rekursi mengalami dua fase yaitu fase awal dan fase balik. 1. Fase Awal Pada fase ini, masing-masing proses memanggil dirinya sendiri. Fase akan berhenti Ketika sudah mencapai kondisi basis. Contoh dalam penyelesaian faktorial dari n, kondisi basisnya adalah n=0, dan n=1. Pada kondisi tersebut fungsi sudah tidak memanggil dirinya sendiri dan kembali pada sebuah nilai (dalam kasus ini nilai =1). 2. Fase Balik Pada fase ini, fungsi sebelumnya akan dikunjungi lagi. Fase ini berlanjut sampai pemanggilan awal, hingga secara lengkap proses telah berjalan. Berikut adalah gambaran fase rekursi untuk penyelesaian faktorial:
130 | Algoritma Pemrograman Python F(4) = 4 x F(3) F(3) = 3 x F(2) F(2) = 2 x F(1) F(1) = 1 (kondisi basis) Fase Awal F(2) = (2) x (1) F(3) = (3) x (2) F(4) = (4) x (6) 24 rekursi lengkap Fase Balik D. Membuat Fungsi Rekursi dengan Phyton Cara membuat fungsi rekursi sama dengan membuat fungsi biasa, hanya saja di dalamnya terdapat pemanggilan fungsi itu sendiri. Contoh sederhananya bisa dilihat dalam potongan program berikut: def halo_dunia(): print('Halo dunia!') # panggil dirinya sendiri halo_dunia() # <-- rekursifitas # memanggil fungsi helo_dunia untuk pertama kali halo_dunia() Dalam program tersebut terdapat fungsi halo_dunia yang di dalamnya terdapat pemanggilan fungsi halo_dunia itu sendiri. Ketika fungsi halo_dunia dilakukan pemanggilan untuk pertama kali, maka fungsi tersebut
Algoritma Pemrograman Python | 131 akan memanggil ulang dirinya sendiri secara terus menerus sampai memenuhi kondisi untuk berhenti. Hasil yang didapatkan setelah program di atas dijalankan adalah sebagai berikut: ... Halo dunia! Halo dunia! Halo dunia! Fatal Python error: _Py_CheckRecursiveCall: Cannot recover from stack overflow. Python runtime state: initialized Program akan mencetak kalimat ‚Halo dunia!‛ secara terus menerus selama fungsi tersebut dipanggil. Namun perlu diperhatikan, dalam tampilan keluaran tersebut terdapat error sebagai berikut: Fatal Python error: _Py_CheckRecursiveCall: Cannot recover from stack overflow. Python runtime state: initialized Error tersebut disebabkan karena perulangan rekursif sudah dipanggil terlalu banyak dan tidak ada kondisi untuk menghentikan prosesnya. Oleh karena itu, sistem menghentikannya secara paksa. Perlu diketahui kode program di atas berpotensi bisa membuat PC kita menjadi tidak berjalan sebagaimana mestinya karena efek perulangan rekursif tak terbatas (meskipun sebenarnya
132 | Algoritma Pemrograman Python interpreter python telah membatasi jumlah kedalaman rekursif sebelum PC kehilangan kendali). E. Studi Kasus 1 (Menampilkan Faktorial) Faktorial dari bilangan n adalah perkalian bilangan positif dari angka 1 sampai bilangan itu sendiri. Bilangan faktorial sendiri biasa disimbolkan dengan tanda seru (!). Sebagai contoh nilai faktorial dari 5 yaitu 5! = 5 * 4 * 3 * 2 * 1 5! = 120 Seperti yang telah dibahas sebelumnya rumus untuk faktorial adalah sebagai berikut: ( ) { ( ) Maka untuk perhitungan 5! langkahnya adalah 5! = 5 * 4! -> 4! = 4 * 3! -> 3! = 3 * 2! -> 2! = 2 Sebelum membuat program dengan rekursif, mari kita coba membuatnya dengan looping for terlebih dahulu. Logikanya sangat sederhana, kita buat satu variabel untuk menyimpan hasil faktorial, dan kita isi dengan nilai awal 1. Setelah itu kita akan kalikan terus menerus dengan angka berikutnya sampai mencapai angka n itu sendiri, seperti berikut: n = int(input('Masukkan nilai n: ')) faktorial = 1
Algoritma Pemrograman Python | 133 for i in range(1, n + 1): faktorial *= i print(f'{n}! = {faktorial}') Atau, kita juga bisa memulai perulangannya dari angka 2 dari pada angka 1, karena angka 1 sudah kita set sebagai nilai awal variabel faktorial. for i in range(2, n + 1): faktorial *= i Program di atas akan menghasilkan keluaran sebagai berikut: Masukkan nilai n: 5 5! = 120 Dari logika looping di atas, kita bisa mengubah langkah-langkah tersebut dalam rekursif seperti ini: n = int(input('Masukkan nilai n: ')) def hitung_faktorial (n): if n > 2: return n * hitung_faktorial(n - 1) return 2 faktorial = hitung_faktorial(n) print(f'{n}! = {faktorial}') maka output yang akan kita dapat adalah sebagai berikut: Masukkan nilai n: 5
134 | Algoritma Pemrograman Python 5! = 120 Masukkan nilai n: 10 10! = 3628800 Selain solusi di atas, ada pilihan solusi yang jauh lebih sederhana yaitu menggunakan fungsi yang sudah disediakan dalam python berupa fungsi factorial() yang berada pada modul math. Untuk menggunakan fungsi tersebut kita bisa melakukannya dengan cara berikut: import math n = int(input('Masukkan nilai n: ')) faktorial = math.factorial(n) print(f'{n}! = {faktorial}') Adapun output yang dihasilkan adalah seperti berikut: Masukkan nilai n: 5 5! = 120 Masukkan nilai n: 10 10! = 3628800 F. Studi Kasus 2 (Menghitung Fibonacci) Fibonacci adalah suatu deret bilangan yang mana tiap angkanya adalah hasil penjumlahan dari dua angka sebelumnya dan dua anggota pertama dari deret fibonacci selalu 0 dan 1. Berikut adalah contoh deret fibonacci: 0 1 1 2 3 5 8 13 21 34 Dari pola deret di atas dapat kita ambil rumus sebagai berikut:
Algoritma Pemrograman Python | 135 ( ) { ( ) ( ) Sebelum membuat program dengan rekursi, mari kita simulasikan terlebih dahulu, setiap iterasi pemanggilan fungsi harus mengembalikan setidaknya satu list dengan satu anggota dengan program sebagai berikut: def fibonacci(n): return [n] kemudian, lakukan pemanggilan dan cetak secara berurutan seperti ini: print(fibonacci(1)) print(fibonacci(2)) print(fibonacci(3)) print(fibonacci(4)) maka, output yang kita dapat adalah [1] [2] [3] [4] Sedangkan output yang kita inginkan adalah [1, 2, 3, 4] Kita bisa menggabungkan dua buah list menjadi satu dengan operator +. Sehingga kode program kita akan terlihat seperti ini: def fibonacci (n):
136 | Algoritma Pemrograman Python if n < 1: return [n] return fibonacci(n - 1) + [n] print(fibonacci(5)) Output yang didapat adalah: [0, 1, 2, 3, 4, 5] Secara singkat, fungsi rekursif di atas akan mengembalikan list sebelum n ditambah dengan list yang berisi n itu sendiri. Kalau dibongkar, ia melakukan penjumlahan list sebanyak n + 1: [0] + [1] + [2] + [3] + [4] + [5] # hasil [0, 1, 2, 3, 4, 5] Kita menginputkan n dengan nilai 5, dan yang kita dapatkan adalah 6 item (karena perulangannya kita buat dari 0). Kita berhasil membuat fungsi rekursif yang mengembalikan sebuah list. Ini adalah pondasi alur kita. Langkah berikutnya agar alur program menjadi lebih mudah untuk dipahami, mari kita buat beberapa variabel. def fibonacci (n): if n < 1: return [n] listSebelumN = fibonacci(n - 1) angka1 = listSebelumN[-2] if len(listSebelumN) > 2 else 0
Algoritma Pemrograman Python | 137 angka2 = listSebelumN[-1] if len(listSebelumN) > 2 else 1 print('listSebelumN', listSebelumN) print(f'angka1: {angka1}, angka2: {angka2}') return listSebelumN + [n] Jika dijalankan, program di atas akan menghasilkan output: listSebelumN [0] angka1: 0, angka2: 1 listSebelumN [0, 1] angka1: 0, angka2: 1 listSebelumN [0, 1, 2] angka1: 1, angka2: 2 listSebelumN [0, 1, 2, 3] angka1: 2, angka2: 3 listSebelumN [0, 1, 2, 3, 4] angka1: 3, angka2: 4 [0, 1, 2, 3, 4, 5] Langkah kita selanjutnya yaitu menentukan nilai n berdasarkan hasil penjumlahan 2 angka sebelumnya. Sehingga, kita hanya perlu mengubah return menjadi: return listSebelumN + [angka1 + angka2] maka keluarannya akan berubah menjadi seperti ini: listSebelumN [0] angka1: 0, angka2: 1
138 | Algoritma Pemrograman Python listSebelumN [0, 1] angka1: 0, angka2: 1 listSebelumN [0, 1, 1] angka1: 1, angka2: 1 listSebelumN [0, 1, 1, 2] angka1: 1, angka2: 2 listSebelumN [0, 1, 1, 2, 3] angka1: 2, angka2: 3 [0, 1, 1, 2, 3, 5] G. Studi Kasus 3 (Menghitung Bilangan Berpangkat) def pangkat(x,y): if y == 0: return 1 else: return x * pangkat(x,y-1) x = int(input("Masukan Nilai X : ")) y = int(input("Masukan Nilai Y : ")) print("%d dipangkatkan %d = %d" % (x,y,pangkat(x,y))) Fungsi pangkat() di atas berfungsi untuk menghitung bilangan x yang di pangkatkan y. Dalam fungsi tersebut terdapat pemanggilan dirinya sendiri. Untuk setiap nilai x dan y yang di masukan pengguna akan dikirim ke fungsi pangkat() melalui parameter variabel x dan y. Selama nilai y bukan 0 maka fungsi pangkat() akan terus memangil dirinya sendiri, dan nilai y akan terus di kurangi 1 (y-1) sampai kondisi bisa terpenuhi dan perulangan dihentikan.
Algoritma Pemrograman Python | 139 Masukkan Nilai X : 5 Masukkan Nilai Y : 2 5 dipangkatkan 2= 25 Nilai x yang dimasukan adalah 5 dan y=2 ketika 5 di pangkatkan 2 maka hasilnya 25.
140 | Algoritma Pemrograman Python Addition, D. and Floating, M. (no date) ‘Arithmetic Operators in Python Exercises : • Type the following at the prompt and then execute the command , observe what you get’, pp. 14–21. Beazley, David M. (2009). "Python Essential Reference." Addison-Wesley Professional. Downey, B. Allan (2015) Think Python, 2 nd Edition. O-Rilley Media, Inc. Drake, Fred L. (2016). "Python 101." CreateSpace Independent Publishing Platform. Dr. Joseph Teguh Santoso, S.Kom, M. K. (2022) Proyek Coding dengan Python. Semarang: Yayasan Prima Agus Teknik. Herho, S. H. S. (2017) ‘Tutorial Pemrograman Python 2 Untuk Pemula’, WCPL Press, pp. 1–140. Jubilee Enterprise (2019) Python untuk programmer pemula. Javatpoint.com (2023) javatpoint.com. Available at: https://www.javatpoint.com/python-data-types (Accessed: 20 September 2023). Kuhlman, D. (2013) ‘A Python Book’, A Python Book, pp. 1–227. Kurniawan, D., 2022. Pengenalan Machine Learning dengan Python. Elex Media Komputindo. Langtangen, Hans Petter. (2016). "A Primer on Scientific Programming with Python." Springer.