MT BAB 2. Input Dan Output
MT BAB 2. Input Dan Output
OBJEKTIF:
1. Mendesain program
Ketika programmer membuat sebuah program, mereka tidak langsung menulis kode namun
memulainya dengan mendesain program. Mendesain program melibatkan tiga tahap:
menganalisa persoalan yang ingin diselesaikan, menentukan spesifikasi (input dan output
program), dan membuat langkah-langkah detil dari program.
2. Menulis kode
Setelah mendapatkan desain program, programmer memulai menulis kode dalam bahasa
pemrograman high-level seperti Python.
4. Test Program
Setelah kode program dapat berjalan, program tersebut harus diuji untuk mencari apakah
terdapat error logika. Error logika adalah kesalahan yang tidak mencegah program berjalan,
namun menghasilkan hasil yang tidak sesuai. Error logika sering disebut dengan bug.
Menganalisa persoalan. Kita harus memahami persoalan yang ingin diselesaikan oleh
program kita.
Menentukan spesifikasi. Kita harus menentukan apa yang akan dicapai oleh program kita.
Misalkan untuk program sederhana, kita menentukan input dan output dari program dan
bagaimana kaitan input dan output tersebut
Menentukan langkah-langkah penyelesaian. Dari spesifikasi program, kita membuat
langkah-langkah yang harus dilakukan oleh program untuk menyelesaikan persoalan
tersebut
Kita mendesain program dengan menjabarkan langkah-langkah detil terurut yang harus
dilakukan program tersebut untuk menyelesaikan tugasnya. Langkah-langkah detil terurut ini
disebut dengan algoritma. Kita dapat membayangkan algoritma seperti sebuah resep.
Terdapat dua alat bantu yang digunakan untuk menuliskan algoritma, yaitu pseudocode dan
flowchart:
Pseudocode
Pseudo berarti semu atau tidak nyata. Pseudocode (kode yang tidak nyata) adalah
penjelasan langkah-langkah dari suatu algoritma yang menggunakan bahasa informal dan
tidak mengikuti aturan syntax dari bahasa pemrograman tertentu. Misalkan kita diminta
untuk membuat sebuah program yang mengkonversi temperatur dalam fahrenheit ke
temperatur dalam celsius, kita dapat menuliskan algoritma program dalam pseudocode
seperti berikut:
Flowchart
Flowchart adalah diagram yang menjelaskan langkah-langkah dari algoritma. Berikut
komponen-komponen dari flowchart:
Gambar di bawah adalah contoh flowchart dari algoritma konversi temperatur
fahrenheit ke celsius:
Menerima Input
Memroses input
Menghasilkan Output
Input adalah data yang program terima saat berjalan. Satu bentuk input yang paling umum
adalah data yang diketikkan pada keyboard. Setelah input diterima, program melakukan
pemrosesan input seperti melakukan kalkulasi matematika terhadap input. Hasil dari
pemrosesan kemudian dikeluarkan sebagai output. Satu bentuk output yang paling umum
adalah menampilkan teks ke layar.
Gambar berikut mengilustrasikan Input, Proses, dan Output dari sebuah program yang
mengkonversi fahrenheit dan celcius:
2.2 Input
Python menyediakan fungsi built-in input() yang digunakan untuk membaca input dari
keyboard. Fungsi input() adalah fungsi yang mempunyai side-effect dan mengembalikan
sebuah nilai. Fungsi input() menerima satu argumen berupa sebuah string untuk ditampilkan
ke layar sebagai prompt (pesan ke pengguna bahwa program siap menerima input) dan
mengembalikan semua yang diketikkan pengguna sebagai string. Kita umumnya menggunakan
fungsi input() dalam statement assignment seperti berikut:
<variabel> = input(<prompt>)
Berikut adalah sebuah contoh statement yang menerima input dari keyboard:
Kita dapat langsung mengkonversi nilai kembali input ke tipe numerik dalam satu statement. Dua
statement berikut:
Untuk mendapatkan input pengguna berupa tipe floating point kita menggunakan fungsi
float() . Sesi interaktif berikut mencontohkan cara mendapatkan input tipe floating point:
Fungsi int() dan float() hanya bekerja jika string yang dikonversi hanya terdiri dari karakter-
karakter angka. Jika argumen dari fungsi int() dan float() tidak dapat dikonversi, sebuah
error eksepsi akan muncul:
Eksepsi adalah error yang terjadi saat program berjalan yang menyebabkan program crash
(berhenti).
2.3 Output
Kita menampilkan output ke layar menggunakan fungsi print() . Sebelumnya kita telah melihat
cara menggunakan fungsi print() dengan satu argumen, sebenarnya fungsi print() dapat
digunakan dengan argumen lebih dari satu:
>>> nama_depan = 'Budi'
>>> nama_belakang = 'Susilo'
>>> print('Nama Lengkap:', nama_depan, nama_belakang)
Nama Lengkap: Budi Susilo
Dengan argumen lebih dari satu, fungsi print() menampilkan masing-masing nilai argumen
dengan dipisahkan spasi.
>>> x = 34
>>> print('Nilai x = ', x)
Nilai x = 34
>>> print('Nilai x * 10 =', (x*10))
Nilai x * 10 = 340
Nilai dari argumen keyword sep dapat berupa string apapun. Berikut adalah contoh mengganti
pemisah antara tampilan teks-teks argument print() dengan string 'Pemisah' :
Fungsi print() juga mempunyai argumen keyword end yang digunakan untuk menentukan
pengakhir dari tampilan:
Sama seperti argument keyword sep , nilai dari argumen keyword end dapat berupa string
apapun:
>>> print('satu\tdua\ntiga\tempat')
satu dua
tiga empat
>>> print('Simpan file Anda ke C:\\temp\\data')
Simpan file Anda ke C:\temp\data
Kita menggunakan f-string dengan menuliskan awalan f pada suatu string dan menuliskan
variabel atau ekspresi di dalam tanda kurung kurawal. Berikut adalah contoh penggunaan f-string
untuk menampilkan nilai dari variabel nama dan nilai dari ekspresi age + 5 :
Ketika kita menggunakan fungsi print() untuk menampilkan nilai floating point, banyak digit
setelah pemisah desimal yang tampil bisa sampai dengan 12 digit:
Kita dapat menentukan berapa digit setelah pemisah desimal yang ditampilkan dengan
menggunakan format specifier. Sesi interaktif berikut mencontohkan penggunaan format
specifier:
Menambahkan tanda koma sebelum titik pada format specifier menyebabkan digit sebelum
pemisah desimal ditampilkan dengan pemisah ribuan:
Kita juga dapat menentukan lebar jumlah digit tampilan:
Hanya pemisah ribuan dan lebar minimum yang dapat dituliskan pada format specifier integer
(kita tidak bisa menuliskan presisi):
Untuk menjalankan program di atas, kita pertama-tama harus mengetikkannya pada modus
script IDLE, lalu menyimpannya dalam sebuah file dengan nama konversi_suhu.py (sesuai
konvensi program Python disimpan dalam sebuah file dengan ekstensi .py ).
Jalankan program konversi_suhu.py dan uji dengan memasukkan angka 89, Anda akan
mendapatkan output seperti berikut:
2.4.1 Comment
Comment adalah catatan pendek yang dituliskan di berbagai bagian program untuk menjelaskan
cara kerja bagian tersebut. Kita menuliskan comment untuk menjelaskan cara kerja program kita
ke programmer lain atau sebagai pengingat ke diri kita.
Baris pertama program di atas adalah comment. Semua teks setelah # sampai dengan akhir
baris diabaikan oleh interpreter sehingga tidak mempunyai efek apapun ke program.
Reusability (Penggunaan Ulang) - bagian kode-kode dari program yang umumnya digunakan
berulang dapat dituliskan dalam sebuah fungsi, sehingga dapat mengurangi penulisan kode
yang berulang
Modularity (Modularitas) – memecah logika-logika program menjadi bagian-bagian kecil
sehingga program mudah dibaca dan dikelola
def <nama_fungsi>():
<statement>
<statement>
...
<statement>
def pesan():
print('Selamat Datang!')
print('Kita akan mempelajari Bahasa Python.')
Jika kita menyimpan kode definisi fungsi di atas ke dalam sebuah file cetak_pesan.py dan
mencoba menjalankan file tersebut, kita tidak akan mendapatkan output apapun. Ini karena
ketika interpreter membaca definisi fungsi, interpreter tidak mengeksekusi statement-statement
pada body fungsi, namun menyimpannya dalam memori.
Untuk mengeksekusi statement-statement pada body fungsi, kita harus memanggil fungsi
tersebut. Kita memanggil fungsi pesan , dengan menuliskan statement pesan() . Sesi interaktif
berikut mencontohkan pemanggilan fungsi pesan setelah file cetak_pesan.py dijalankan:
>>> pesan()
Selamat Datang!
Kita akan mempelajari Bahasa Python.
Ketika kita memanggil sebuah fungsi, interpreter akan mengeksekusi statement-statement dalam
body fungsi tersebut dari statement pertama (paling atas) sampai dengan statement terakhir
(paling bawah).
Kode yang kita tuliskan pada file cetak_pesan.py sebelumnya hanyalah sebuah definisi fungsi
dan bukanlah program lengkap. Untuk menjadikannya sebuah program lengkap, kita harus
menambahkan pemanggilan fungsi pesan pada baris terakhir dari file cetak_pesan.py :
# cetak_pesan.py
# Program ini mendemonstrasikan sebuah fungsi
def pesan():
print('Selamat Datang!')
print('Kita akan mempelajari Bahasa Python.')
Jika kita menjalankan file cetak_pesan.py yang berisi kode di atas, kita akan mendapatkan
output berikut:
Selamat Datang!
Kita akan mempelajari Bahasa Python.
Kita membuat fungsi dengan menuliskan definisi fungsi dan untuk menggunakannya kita harus
melakukan memanggil fungsi tersebut. Gambar berikut mengilustrasikan definisi fungsi dan
pemanggilan fungsi:
2.5.2 Fungsi main()
Kita dapat menuliskan lebih dari satu definisi fungsi dalam sebuah program. Sebuah program
umumnya mempunyai sebuah fungsi yang berisi logika utama dari program. Fungsi ini umumnya
dinamakan sebagai fungsi main . Fungsi main ini yang dijalankan ketika program dimulai dan
memanggil fungsi-fungsi lain ketika diperlukan. Sebuah program lengkap umumnya dimulai
dengan kerangka seperti berikut:
def main():
# Statement-statement logika utama program
#...
Contoh program yang mendemonstrasikan fungsi main yang memanggil fungsi pesan :
# cetak_pesan2.py
# Program yang mendemonstrasikan fungsi main
# dan fungsi pesan
def pesan():
print('Selamat Datang!')
print('Kita akan mempelajari Bahasa Python.')
def main():
print('Saya mempunyai pesan untuk Anda.')
pesan() # memanggil fungsi pesan
main()
def sapa(tamu):
print(f'Selamat datang, {tamu}')
Pada definisi fungsi sapa di atas kita mendefinisikan parameter tamu untuk menyimpan nilai
argumen yang diberikan. Gambar berikut mengilustrasikan ini:
Untuk memanggil fungsi yang menerima argumen, kita menuliskan nilai argumen di dalam tanda
kurung setelah nama fungsi. Sebagai contoh, kita dapat memanggil fungsi sapa dengan
statement seperti berikut:
sapa('Budi')
Ketika statement pemanggilan fungsi sapa di atas dieksekusi, parameter tamu dibuat dalam
memori, lalu argumen string 'Budi' disalin ke parameter tamu tersebut, kemudian statement-
statement di dalam body fungsi sapa dieksekusi. Setelah selesai mengeksekusi semua statement
dalam fungsi sapa , parameter tamu dihapus dari memori. Gambar berikut mengilustrasikan
proses pemanggilan fungsi sapa :
Kita dapat juga menuliskan definisi fungsi yang menerima lebih dari satu argumen. Program
berikut mendefinisikan sebuah fungsi cetak_jumlah yang menerima dua argumen bertipe
numerik dan menampilkan jumlah kedua argumen tersebut:
# multi_argument.py
# Program ini mendemonstrasikan sebuah fungsi yang menerima dua argumen
def cetak_jumlah(num1, num2):
result = num1 + num2
print(result)
def main():
print('Jumlah dari 12 dan 45 adalah')
cetak_jumlah(12, 45)
main()
Syntax umum penulisan definisi fungsi yang mengembalikan nilai adalah sebagai berikut:
Fungsi sum di atas menerima dua buah argumen, menjumlahkan kedua argumen tersebut, lalu
mengembalikan hasilnya ke pemanggil fungsi.
Umumnya ketika kita memanggil fungsi yang mengembalikan nilai, kita ingin mengolah lebih
lanjut nilai yang dikembalikan tersebut. Sehingga, umumnya kita menugaskan nilai kembali
tersebut ke suatu variabel. Sebagai contoh, berikut adalah contoh statement yang memanggil
fungsi sum dan menyimpan nilai kembali dari pemanggilan fungsi tersebut ke variabel bernama
total :
Kita juga dapat menuliskan nama variabel sebagai argumen ke pemanggilan fungsi. Sebagai
contoh:
umur1 = 22
umur2 = 24
total = sum(umur1, umur2)
Ketika statement terakhir: total = sum(umur1, umur2) dieksekusi, nilai yang disimpan oleh
variabel umur1 disalin ke parameter num1 dan nilai yang disimpan oleh variabel umur2 disalin ke
parameter num2 . Lalu, nilai kedua parameter tersebut dijumlahkan dan hasilnya ditugaskan ke
variabel total . Gambar berikut mengilustrasikan proses pengeksekusian statement total =
sum(umur1, umur2) pada kode di atas:
# total_umur.py
# Program ini menggunakan nilai kembali dari sebuah fungsi.
# Fungsi main
def main():
umur1 = int(input('Masukkan umur Anda: '))
umur2 = int(input('Masukkan umur teman baik Anda: '))
# Jumlahkan keduanya dengan memanggil fungsi sum
total = sum(umur1, umur2)
print('Umur Anda dan teman Anda: ', total, 'tahun.')
Pada statement return , kita tidak hanya dapat menuliskan variabel setelah keyword return ,
namun kita juga dapat menuliskan sebuah ekspresi. Sebagai contoh, fungsi sum sebelumnya
dapat kita tulis ulang menjadi seperti berikut:
Perhatikan pada definisi fungsi di atas kita menuliskan langsung ekspresi yang menjumlahkan
parameter num1 dan num2 pada statement return . Penulisan ekspresi pada statement return
ini lebih efisien karena hasil perhitungan tidak perlu disimpan ke sebuah variabel terlebih dahulu.
Berikut adalah contoh lain fungsi yang mengembalikan nilai dengan penulisan ekspresi pada
statement return :
def luas_lingkaran(radius):
pi = 3.14159265358979
return pi * radius * radius
# hitung_luas_lingkaran.py
# Program ini menghitung luas lingkaran
# dari radius yang diberikan pengguna
def luas_lingkaran(radius):
pi = 3.14159265358979
return pi * radius * radius
def main():
rad = float(input('Masukkan radius lingkaran (cm): '))
luas = luas_lingkaran(rad)
print(f'Luas lingkaran = {luas:.2f} cm2')
main()
Sejauh ini kita hanya melihat contoh-contoh fungsi yang mengembalikan nilai numerik. Kita dapat
menuliskan fungsi untuk mengembalikan nilai tipe apapun, termasuk nilai string:
def ambil_nama():
# Minta nama dari pengguna
nama = input('Masukkan nama Anda: ')
# Kembalikan nama
return nama
Fungsi ambil_nama di atas meminta pengguna memasukkan sebuah string lalu mengembalikan
string yang dimasukkan pengguna tersebut ke pemanggil fungsi.
def luas_lingkaran(radius):
pi = 3.14159265358979
return pi * radius * radius
Variabel pi yang didefinisikan pada baris kedua adalah variabel lokal dari fungsi
luas_lingkaran . Variabel pi ini dibuat dalam memori oleh interpreter hanya ketika fungsi
luas_lingkaran dipanggil dan setelah selesai mengeksekusi statement-statement dalam fungsi
luas_lingkaran , variabel pi tersebut dihapus dalam memori. Ini berarti, variabel pi hanya
dapat diakses (digunakan) oleh statement-statement yang berada di dalam body fungsi
luas_lingkaran .
Program di bawah memperlihatkan error ketika kita mencoba mengakses variabel lokal di luar
fungsi dimana variabel tersebut didefinisikan:
# luas_lingkaran_error.py
# Program ini menghasilkan ERROR
def luas_lingkaran(radius):
pi = 3.14159265358979
return pi * radius * radius
def main():
luas = luas_lingkaran(15)
print(luas)
print(pi) # ERROR! pi hanya dapat diakses dari fungsi luas_lingkaran
main()
Ketika kita mencoba menjalankan program di atas, kita akan mendapatkan pesan error seperti
berikut:
Traceback (most recent call last):
File "luas_lingkaran_error.py", line 12, in <module>
main()
File "luas_lingkaran_error.py", line 10, in main
print(pi) # ERROR!! pi hanya dapat diakses dari fungsi luas_lingkaran
NameError: name 'pi' is not defined
Pesan error ini mengatakan bahwa variabel pi tidak didefinisikan di dalam fungsi main . Hal ini
terjadi karena di dalam fungsi main pada statement terakhir: print(pi) , kita mencoba
mengakses variabel pi yang merupakan variabel lokal pada fungsi luas_lingkaran .
# global_variabel.py
pi = 3.14159265358979
def luas_lingkaran(radius):
return pi * radius * radius
def main():
luas = luas_lingkaran(15)
print(luas)
print(pi)
main()
Variabel pi yang didefinisikan pada baris 3 adalah variabel global. Variabel pi ini dapat diakses
di bagian manapun dalam program termasuk dalam body fungsi luas_lingkaran maupun
dalam body fungsi main .
Dalam praktik pemrograman yang baik, kita harus menghindari penggunaan variabel global,
karena akan sulit melacak perubahan-perubahan nilai yang terjadi pada variable global ini.
Umumnya kita memanfaatkan variabel global ini sebagai konstan global (variabel yang tidak
dapat diubah nilainya dan dapat diakses secara global). Python tidak mempunyai fitur untuk
membuat variabel konstan, sehingga umumnya programmer mengikuti konvensi dengan
menggunakan huruf besar dalam penamaan konstan global dan tidak mengubah nilainya di
dalam program. Sebagai contoh, dalam praktik pemrograman yang baik, variabel pi pada
program global_variabel.py sebaiknya dinamakan dengan PI untuk menandakan bahwa
variabel tersebut adalah konstan global:
# lingkaran.py
# Program ini menghitung luas lingkaran dan
# keliling lingkaran dari radius yang diberikan pengguna
def luas_lingkaran(radius):
return PI * radius * radius # menggunakan konstan global PI
def keliling_lingkaran(radius):
return 2 * PI * radius # menggunakan konstan global PI
def main():
radius = float(input('Masukkan radius lingkaran (cm): '))
luas = luas_lingkaran(radius)
keliling = keliling_lingkaran(radius)
print(f'Luas lingkaran dengan radius {radius:.2f} = {luas:.2f} cm2')
print(f'Keliling lingkaran dengan radius {radius:.2f} = {keliling:.2f} cm')
main()
import <nama_module>
Misalkan untuk mengimport module math kita menuliskan statement import berikut:
import math
Untuk menggunakan suatu fungsi dalam suatu module, kita menuliskan statement pemanggilan
fungsi dengan notasi dot:
<nama_module>.<nama_fungsi>()
Sebagai contoh, di dalam module math terdapat fungsi dengan nama sqrt yang menghitung
akar kuadrat dari argumen. Kita memanggil fungsi sqrt tersebut menggunakan notasi dot
seperti berikut:
math.sqrt(<argumen>)
Dan misalkan kita ingin menghitung akar kuadrat dari 64, maka kita dapat menggunakan fungsi
sqrt seperti berikut:
math.sqrt(45)
Kita dapat melihat fungsi-fungsi dan variabel-variabel apa saja yang terdapat dalam suatu module
dengan menggunakan fungsi help() pada modus interaktif:
>>> help(math)
Help on built-in module math:
NAME
math
DESCRIPTION
This module provides access to the mathematical functions
defined by the C standard.
FUNCTIONS
acos(x, /)
Return the arc cosine (measured in radians) of x.
acosh(x, /)
Return the inverse hyperbolic cosine of x.
# akar_kuadrat.py
# Program ini mendemonstrasikan fungsi sqrt dalam module math
def main():
# Minta angka dari pengguna
num = float(input('Masukkan sebuah angka: '))
# Hitung akar kuadrat dari num menggunakan
# fungsi sqrt dalam module math
akar = math.sqrt(num)
# Tampilkan akar dari num
print(f'Akar kuadrat dari {num} adalah {akar}.')
Selain fungsi, di dalam module math juga terdapat variabel-variabel konstan yang dapat
digunakan (seperti pi). Program berikut mendemonstrasikan penggunaan variabel konstan pi
dalam module math :
# lingkaran2.py
# Program ini menghitung luas dan kel
import math
def luas_lingkaran(radius):
return math.pi * radius * radius
def keliling_lingkaran(radius):
return 2 * math.pi * radius
def main():
radius = float(input('Masukkan radius lingkaran (cm): '))
luas = luas_lingkaran(radius)
keliling = keliling_lingkaran(radius)
print(f'Luas lingkaran dengan radius {radius:.2f} = {luas:.2f} cm2')
print(f'Keliling lingkaran dengan radius {radius:.2f} = {keliling:.2f} cm')
main()
Tabel berikut mendaftar fungsi-fungsi dan variabel-variabel yang sering digunakan dalam module
math :
2.6.2 Module random
Module random berisi fungsi-fungsi yang dapat digunakan untuk menggenerasi angka acak. Salah
satu fungsi dalam module random adalah fungsi randint yang menggenerasi sebuah integer
acak dalam suatu interval. Pemanggilan fungsi randint dituliskan dengan format seperti berikut:
random.randint(<bawah>, <atas>)
Pemanggilan fungsi randint akan mengembalikan integer acak di antara nilai <bawah> dan nilai
<atas> . Sebagai contoh,
random.randint(0, 10)
menggenerasi integer antara 0 s.d 10 (termasuk 0 dan 10). Sehingga, nilai integer yang
dikembalikan dapat berupa nilai 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, atau 10.
import random
def main():
print('Integer acak: ', random.randint(0, 10))
main()
Integer acak: 7
Selain fungsi randint , terdapat fungsi-fungsi lain dalam module random , dua diantaranya
adalah:
[1] Gaddis, Tony. 2012. Starting Out With Python Second Edition. United States of America:
Addison-Wesley.