0% menganggap dokumen ini bermanfaat (0 suara)
27 tayangan71 halaman

Modul Dasar-Dasar Pemrograman

Diunggah oleh

Marsel Ferry
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
27 tayangan71 halaman

Modul Dasar-Dasar Pemrograman

Diunggah oleh

Marsel Ferry
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 71

Modul Dasar-Dasar Pemrograman

(MA1106)

Rifky Fauzi

19 Nopember 2022
KATA PENGANTAR

Bismillahirrohmanirrohim. Puji Syukur Alhamdulillah kepada Allah yang


telah memberikan nikmat sempat sehingga naskah Diktat Kuliah Dasar-
Dasar Pemrograman ini telah disusun dengan baik. Diktat kuliah ini di-
susun dalam rangka melengkapi proses belajar mahasiswa untuk mempe-
lajari mata kuliah Dasar-Dasar Pemrograman (MA1106) di Program Studi
Matematika. Harapannya, diktat kuliah ini dapat menjadi kesempatan bagi
mahasiswa untuk meningkatkan keterampilan dalam menyelesaikan masa-
lah pemrograman.

Lampung Selatan, 19 November 2022


Penulis
D A F TA R I S I

1 pendahuluan 1
1.1 Pengertian Pemrograman dan Bahasa Pemrograman 1
1.2 Bahasa Pemrograman Python 1
1.2.1 Beberapa Kelebihan 1
1.2.2 Penggunaan Python 2
1.2.3 Perbedaan dengan bahasa pemrograman lain 2
1.3 Instalasi Python 3
1.4 Interaksi dengan Python 6
1.4.1 IDLE: Python Shell 6
1.4.2 IDLE: Text Editor 7
1.4.3 Spyder 8
1.4.4 Jupyter Notebook 9
1.4.5 Google Colaboratory 10
1.5 Beberapa perintah dasar 12
1.5.1 Komentar 12
1.5.2 Operasi Aritmatika 13
1.5.3 Operasi Perbandingan 13
1.5.4 String 14
1.5.5 Variabel 14
2 tipe-tipe data 17
2.1 Tipe Numerik 17
2.2 Komputer Dalam Merepresentasikan Bilangan 18
2.2.1 Int 18
2.2.2 Floating Point 19
2.3 String str 20
2.3.1 Operasi-operasi yang berlaku 20
2.3.2 String slicing 21
2.4 Boolean 22
2.4.1 Operator Boolean 23
2.4.2 Boolean dan int 23
3 struktur pemrograman 25
3.1 Struktur Sekuensial (Urutan) 25
3.1.1 Penukaran Data (Swapping) 26
3.2 Flowchart dan Pseudocode 26
3.2.1 Flowchart 27
3.2.2 Pseudocode 28
3.3 Struktur Pencabangan 28
3.3.1 if 28
3.3.2 if-else 29
3.3.3 if-elif-else 30
3.4 Error Handling 31
4 pengulangan 35
4.1 While 35
4.2 For 39
4.3 Penghentian Pengulangan 40
4.3.1 Break 40
4.3.2 Continue 41
4.4 Pengulangan Bersarang 42
5 tipe-tipe container 45
5.1 List 45
5.1.1 range() 46
5.1.2 list() 47
5.1.3 Manipulasi Anggota List 47
5.1.4 Penggunaan list dalam loop 48
5.1.5 Pengisian list dengan menggunakan loop 49
5.2 Tuple 49
5.3 Dictionary 51
5.4 Numpy Array 51
6 subprogram 55
6.1 Fungsi yang Didefinisikan 56
6.1.1 Fungsi tanpa argumen 56
6.1.2 Fungsi dengan argumen 56
6.1.3 Fungsi yang mengembalikan nilai 57
6.1.4 Fungsi yang mengembalikan nilai lebih dari satu 57
6.1.5 Fungsi dengan argument baku 58
6.2 Fungsi lambda 58
6.2.1 Penggunaan Fungsi Lambda dengan map() 59
6.2.2 Fungsi Lambda dengan Banyak Argumen 59
6.3 Rekursi 59
7 modul 61
7.1 Math 61
7.2 Numpy 61
7.2.1 Numpy array 61
7.2.2 s 63
Appendix Chapter 65
.1 A Section 65
1
PENDAHULUAN

1.1 pengertian pemrograman dan bahasa pemrograman

Program adalah suatu file atau software yang dibuat oleh seorang pro-
grammer, dibuat untuk mengoperasikan sebuah komputer menjadi lebih
berguna.

1. Suatu program akan jalan dengan baik apabila programmer sudah


merancang program tersebut secara benar, detail dan diberikan listing
yang sesuai.

2. Listing mempunyai standar bahasa yang sudah ditentukan oleh baha-


sa pemrograman. Maka dari itu listing yang diberikan tidak boleh
asal-asalan.

Pemrograman adalah langkah-langkah ataupun cara- cara yang dapat digu-


nakan untuk membuat sebuah program.

1. Programmer atau orang yang melakukan pemrograman harus meng-


etahui tahap-tahap dari pemrograman, agar program yang dihasilkan
bisa sesuai dengan keinginan.

2. Seorang programmer dapat menggunakan berbagai macam bahasa


pemrograman yang ada sesuai dengan kemampuan.

Bahasa-bahasa Pemrograman yang dapat digunakan seperti bahasa pa-


scal, java, C, C++, BASIC, Visual Basic, Visual FoxPro, Jomlah dll.
Bahasa-bahasa pemrograman dapat dikelompokkan menjadi:

1. Bahasa beraras tinggi (high level language): Java, C++, C#, Python

2. Bahasa beraras sedang (medium level language) C, Pascal, Fortran

3. Bahasa beraras rendah (low level language) Assembly.

1.2 bahasa pemrograman python

1.2.1 Beberapa Kelebihan

Python adalah bahasa pemrograman

1. gratis dan open source


2. sebuah bahasa scripting, artinya itu diinterpretasikan

3. bahasa modern (berorientasi objek, penanganan pengecualian, penge-


tikan dinamis, dll.) yang ringkas, mudah dibaca dan cepat dipelajari

4. penuh dengan library yang tersedia secara gratis, khususnya yang il-
miah (aljabar linier, alat visualisasi, plotting, analisis gambar, penyele-
saian persamaan diferensial, perhitungan simbolik, statistik, dll.)

5. Penggunaan yang luas: komputasi ilmiah, skrip, situs web, pengurai-


an teks, dll.

6. banyak digunakan dalam aplikasi industri

Sumber : C. Fuuhrer, J. E. Solem, & O. Verdier, Scientific Computation with


Python 3, 2016, Packt Publishing.

1.2.2 Penggunaan Python

Sebagai bahasa pemrograman Python banyak sekali penerapannya. Ber-


ikut adalah beberapa penerapan bahasa pemrograman Python beserta tools
yang digunakan

1. Web Development : Django, Flask

2. Machine Learning: Tensorflow, Sk-learn

3. Visualisasi Data: Matplotlib, Seaborn

4. Aplikasi Desktop: Tkinter, Qt

5. Scripting : Program sederhana Automatisasi

1.2.3 Perbedaan dengan bahasa pemrograman lain

1. Java, C ++: Berorientasi objek, bahasa yang dikompilasi. Lebih bertele-


tele dan level rendah dibandingkan dengan Python. Library ilmiah
sedikit.

2. C, FORTRAN: Bahasa terkompilasi tingkat rendah. Kedua bahasa ter-


sebut digunakan secara ekstensif dalam komputasi ilmiah, di mana
waktu komputasi penting. Saat ini bahasa-bahasa ini sering diga-
bungkan dengan pembungkus Python.

3. PHP, Ruby, bahasa interpretasi lainnya. PHP berorientasi web. Ruby


sefleksibel Python tetapi memiliki sedikit library ilmiah.

4. MATLAB, Scilab, Octave: MATLAB adalah alat untuk komputasi ma-


triks yang berkembang untuk komputasi ilmiah. Perpustakaan ilmiah
sangat besar. Fitur bahasa tidak berkembang seperti Python. Tidak
gratis atau open source. SciLab dan Octave adalah alat open source
yang secara sintaksis mirip dengan MATLAB.
5. Haskell: Haskell adalah bahasa fungsional modern dan mengikuti pa-
radigma pemrograman yang berbeda dari Python. Ada beberapa kon-
struksi umum seperti pemahaman daftar. Haskell jarang digunakan
dalam komputasi ilmiah.

Sumber : C. Fuuhrer, J. E. Solem, & O. Verdier, Scientific Computation with


Python 3, 2016, Packt Publishing.

1.3 instalasi python

Sebelum menggunakan Python kita perlu melakukan instalasi program


tersebut terlebih dahulu, terutama apabila menggunakan sistem operasi
Windows. Beberapa sistem operasi seperti Linux dan macOS sudah terinstal
Python. Meski begitu biasanya kita akan membutuhkan beberapa library
yang tidak secara standar dimuat oleh Python bawaan. Untuk kemudahan,
kita akan menggunakan platform khusus data sains yaitu Anaconda. Seca-
ra default, Anaconda, sudah termasuk Python di dalamnya, menyediakan
banyak paket aplikasi untuk data sains dan komputasi saintifik termasuk
library-library yang berguna.

1. Download Anaconda pada tautan https://www.anaconda.com/distribution/


#download- section

2. Kemudian pilih Sistem Operasi yang anda gunakan. Kemudian pilih


Python 3.7 version. Catatan: Jika anda menggunakan Sistem Operasi
32 Bit, maka pilih 32 Bit Graphical Installer (410 MB).

3. Setelah didownload, kemudian double click file yang telah didownlo-


ad
4. Kemudian pilih Next

5. Kemudian pilih Next lagi

6. Beri tanda centang pada Add Anaconda to my PATH environment


variable
7. Kemudian tunggu hingga proses selesai

8. Untuk memeriksa apakah Python telah terinstal dengan baik. Tekan


tombol Windows + R pada keyboard sehingga muncul antar muka
berikut

9. kemudian ketik cmd lalu tekan enter. Pada antar muka cmd ketikkan
python
10. Apabila Python terinstal dengan baik maka akan muncul baris >>>
pada cmd

Untuk melihat program apa saja yang tersedia jalankan program Anaconda
Navigator. Berikut adalah antarmuka dari Anaconda Navigator

1.4 interaksi dengan python

Untuk berinteraksi dengan Python kita dapat menggunakan Python In-


terpreter, yaitu program yang dibuat untuk menerjemahkan baris perintah
ke bahasa mesin sehingga dapat dipahami dan dikelola oleh processor. Da-
lam penggunaannya ada banyak cara menjalankan Python diantaranya ya-
itu Command Line (Windows) atau Terminal (Linux, macOS), IDLE dan
Jupyter Notebook. Secara umum, ada dua mode Python Interpreter yaitu
Interactive dan Script mode. Dalam modul ini, disajikan beberapa aplikasi
untuk berinteraksi dengan python yakni IDLE, Spyder, dan Jupyter Notebo-
ok. Untuk menjalankannya, IDLE dapat dicari dari menu Windows.

1.4.1 IDLE: Python Shell

IDLE
Python dalam interactive mode biasa disebut sebagai Python shell. Berikut
adalah tampilan antarmukanya

Shell ini menunggu pengguna memberikan perintah. Penggunaan shell bia-


sanya hanya untuk melakukan hal-hal sederhana karena shell menjalankan
program dalam satu baris perintah saja. Perintah akan dijalankan segera
setelah pengguna menekan tombol enter/return.
Kita dapat memberikan beberapa perintah sederhana seperti menam-
pilkan kalimat

>>> print('Halo Dunia') #kalimat


Halo Dunia

atau memberi komentar dan perhitungan aritmatik

>>> #baris ini adalah komentar yang tidak akan diproses


>>> x = 987.27
>>> x = x**2 # x pangkat 2
>>> print(x) #baris ini menampilkan variabel x
974702.0529
>>> 2 + 2
4
>>> 3 / 2
1.5
>>> 3-10
-7

1.4.2 IDLE: Text Editor

Text editor bawaan Python dapat dibuka dari IDLE dengan langkah File
→ New File.
Dalam text editor, perintah-perintah yang ditulis perlu disimpan terlebih
dahulu yang disimpan ke dalam ekstensi .py. Program ini dapat dijalankan
dengan langkah Run → Run Module.

Sebagai contoh, mari kita coba tuliskan beberapa perintah lalu menyim-
pannya sebagai coba_python.py kemudian menjalankan program tersebut

Baris-baris program bila dijalankan (run) di atas akan menampilkan

Dapat dilihat bahwa program hanya menampilkan Halo Dunia dan hasil
operasi x2 . Sementara operasi penjumlahan 2 + 2, 3 / 2 dan 3 - 10 tetap
diproses namun tidak ditampilkan, begitu pula komentar.

1.4.3 Spyder

Spyder merupakan perangkat lunak yang dibangun menggunakan Python


dan digunakan sebagai antar muka pemrograman Python yang dirancang
oleh para ilmuwan dan untuk para ilmuwan. Perangkat lunak ini menyedi-
akan banyak kebutuhan mendasar bagi para ilmuwan yang hendak meng-
gunakan Python untuk membantu mereka dalam menyelesaikan masalah-
masalah sains dan rekayasa.

Spyder dapat dijalankan melalui Anaconda Navigator. Berikut adalah


antarmukanya

Bagian kiri Spyder merupakan teks editor yang berguna untuk menulis
perintah-perintah dalam bahasa pemrograman Python. Pada bagian kan-
an nampak ada Object dan Console. Bagian Object biasanya menampilkan
grafik, variabel, ataupun file-file data yang digunakan/dihasilkan oleh pro-
gram. Sedangkan bagian kiri bawah merupakan Python shell. Python shell
ini mirip dengan shell interaktif IDLE, demikian juga penggunaannya.

1.4.4 Jupyter Notebook

Jupyter Notebook merupakan aplikasi berbasis web yang dapat digu-


nakan untuk pemrograman Python. Dengan kata lain, jupyter notebook
membutuhkan browser agar bisa digunakan. Jupyter Notebook dapat di-
jalankan langsung dengan memilih aplikasi ini pada Anaconda Navigator.
Beriku adalah tampilan awal dari Jupyter Notebook.
Untuk menggunakannya sebagai antarmuka pemrograman Python klik New
→ Python 3. Kemudian akan muncul tab baru pada browser sebagai berikut

1.4.5 Google Colaboratory

Colaboratory atau biasa disingkat Colab adalah perangkat lunak buat-


an google yang memperkenankan pengguna untuk menjalankan perintah-
perintah pada bahasa pemrograman Python untuk dijalankan pada server
Google melalui sebuah browser. Dengan kata lain, perintah Python sebenar-
nya tidak dijalankan pada komputer/perangkat pengguna melainkan pada
komputer (server) Google.
Colab dapat diakses melalui browser dengan mengunjungi

https://colab.research.google.com

Berikut adalah tampilan dari Google Colab


Untuk memulai sesi baru, klik New Notebook. Kemudian pengguna akan
masuk ke laman baru yang mirip dengan tampilan Jupyter Notebook.

Google Colab juga dapat dijalankan melalui perangkat smartphone. Tidak


terbatas merk tertentu, asalkan memiliki browser dan dapat mengakses go-
ogle melalui internet.
1.5 beberapa perintah dasar

1.5.1 Komentar

Program yang baik biasanya disertai dengan penjelasan yang berkaitan


dengan penggunaan atau peruntukan dari prosedur atau perintah terten-
tu. Penjelasan ini biasa disebut sebagai dokumentasi program. Salah satu
contoh dokumentasi program yang sederhana adalah komentar. Komentar
adalah baris program yang tidak dieksekusi oleh bahasa pemrograman.
Komentar sangat penting untuk memudahkan pengguna atau mungkin
programer lain yang berkolaborasi dapat memahami suatu atau blok per-
intah. Bahkan sangat dimungkinkan seorang programer lupa dengan pro-
gram yang pernah ditulisnya. Dengan demikian sangatlah penting untuk
membuat dokumentasi program dalam bentuk komentar pada program.
Dalam Python, memberikan komentar diawali dengan memberikan tan-
da pagar yakni # pada suatu baris program. Sebagai contoh

>>> #menampilkan kalimat Halo Dunia


>>> print('Halo Dunia')
Halo Dunia

Dapat dilihat bahwa hanya baris program yang kedua yang dijalankan. Ba-
ris program pertama tidak menampilkan apapun. Penggunaan tanda pagar
hanya untuk kalimat yang ditulis dalam satu baris.
1.5.2 Operasi Aritmatika

Operator Aritmatika
Operator ini disajikan dalam tabel-tabel berikut

Operator Nama Operator Contoh


+ Penjumlahan x+y
- Pengurangan x-y
* Perkalian x*y
/ Pembagian x/y
% Modulus x%y
** Eksponen x ** y
// Floor division x // y

Berikut adalah contoh penggunaan operasi aritmatika

>>> 2 + 2 + 3 #pejumlahan
7
>>> 2*2 #perkalian
4
>>> 1/5 #pembagian
0.2
>>> 10%3#sisa pembagian
1
>>> 2**2 #pangkat
4
>>> 10//3 #pembagian dengan pembulatan
3

Operasi bilangan dalam Python dilakukan dengan mendahulukan operasi-


operasi tertentu yang dirangkum dalam aturan PEMDAS, yakni:

1. P : Parentheses ( ),

2. E : Exponents ab ,

3. MD : Multiplication and division, left to right,

4. AS : Addition and subtraction, left to right

Sebagai ilustrasi

>>> #perintah di bawah akan menghasilkan 10


>>> 2 + 2**3
10

1.5.3 Operasi Perbandingan

Operasi perbandingan digunakan untuk membandingkan dua jenis ob-


jek. Hasil operasinya hanya ada dua kemungkinan hasil yakni Benar (True)
jika kesebandingannya benar atau Salah (False) jika kesebandingannya sa-
lah. Berikut adalah contoh operasi kesebandingan

Operator Nama Cara Kerja


== Sama Dengan x == y
!= Tidak Sama Dengan x != y
> Lebih Besar Dari x>y
< Lebih Kecil Dari x<y
>= Lebih Besar Sama Dengan x >= y
<= Lebih Kecil Sama Dengan x <= y

Perhatikan contoh program berikut


>>> 3 == 3.0
True
>>> 2 != 3
True
>>> 2 > 4
False
>>> 5 >= 5
True

1.5.4 String

String, dalam Python, merupakan tipe data berupa barisan karakter


yang diapit oleh tanda petik satu atau tanda petik dua. Sebagai contoh
>>> 'Hari yang menyenangkan'
'Hari yang menyenangkan'
>>> "It's a sunny day"
"It's a sunny day"

Dari contoh terakhir di atas, nampak perbedaan penggunaan dari kedua


tanda tersebut.

1.5.5 Variabel

Variabel adalah penyebutan referensi ke sebuah objek. Dalam hal ini


makna objek dalam pemrograman Python sangatlah luas misalnya berupa
bilangan, operasi bilangan, atau string.
>>> x = 3
>>> y = x
>>> y
3
>>> y= y + 3
>>> x
3
>>> print(y)
6
>>> print( 0.3*(y**2 + y + x) )
13.5
>>> z = (x**2 + 7 )**(1/2)/ 4
>>> z
1.0
Suatu objek dapat memiliki lebih dari satu referensi. Hal ini dapat dilihat
pada contoh terakhir di atas. Objek berupa bilangan bulat tiga tersimpan
dalam variabel x dan variabel y.

Pada perintah operasi pangkat tadi, dapat dilihat x menyimpan nilai 3 x


disebut sebagai variabel. Ada ketentuan untuk penamaan variabel salah sa-
tunya adalah variabel tidak boleh memiliki nama yang sama dengan daftar
reserved word dalam Python. Daftar ini dapat dilihat pada tabel berikut

False class finally is return


None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except in raise

Tabel 1: Daftar reserved word dalam Python

Lebih lanjut, untuk penamaan variabel hendaknya memperhatikan bebe-


rapa aturan berikut
1. tidak boleh diawali oleh angka,
>>> 1hati = 2
File "<stdin>", line 1
1hati = 2
^
SyntaxError: invalid syntax

2. tidak boleh memuat spasi,


>>> satu hati = 2
File "<stdin>", line 1
satu hati = 2
^
SyntaxError: invalid syntax

3. sebagai ganti spasi kita dapat menggunakan underscore misalnya sa-


tu_hati,
>>> satu_hati = 2
>>> print(satu_hati)
2

4. tidak boleh menggunakan operator matematika,

>>> satu-hati = 2
File "<stdin>", line 1
SyntaxError: cannot assign to operator

5. case sensitive,

>>> satu_hati = 2
>>> print(Satu_hati)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Satu_hati' is not defined

latihan

Pada latihan ini, dibebaskan untuk menggunakan aplikasi apapun.

1. Buatlah program Python untuk menghitung akar dari suatu persama-


an kuadrat berikut
ax2 + bx + c = 0

Silahkan pilih a, b, dan c yang disukai.

2. Buatlah program Python untuk menghitung jarak dua titik ( x1 , y1 ) =


( a, b) ke ( x2 , y2 ) = (c, d)
2
T I P E - T I P E D ATA

Bab ini membahas mengenai tipe-tipe data dasar dalam pemrograman


Python. Tipe yang dimaksud adalah himpunan yang memuat isi (data),
representasinya, dan semua jenis operasi yang mungkin digunakan.

2.1 tipe numerik

Dalam pemrograman terkadang pemrogram (programer) akan dihadapk-


an pada pekerjaan yang melibatkan bilangan. Dalam Matematika, bilang-
an terbagi menjadi beberapa jenis yakni bilangan asli N, bilangan bulat Z,
bilangan rasional Q, bilangan real R dan bilangan kompleks C. Masing-
masing himpunan tersebut memiliki anggota yang takhingga banyaknya.

Pada kenyataannya, komputer tidak bisa memiliki kemampuan untuk


mengatasi bilangan-bilangan di Matematika. Hal ini dikarenakan komputer
memiliki keterbatasan dalam penyimpanan. Berapapun penyimpanan yang
tersedia di dunia, pastilah tidak bisa memuat, sebagai contoh, bilangan asli
N. Karena hal tersebut, komputer merepresentasikan bilangan-bilangan
tersebut dengan aturan tertentu.
Python sebagai bahasa pemrograman Beberapa tipe bilangan dalam Python

1. int merupakan himpunan bagian berhingga bilangan bulat Z.

>>> x = 2
>>> type(x)
<class 'int'>

2. float merupakan representasi berhingga dari bilangan real R.

>>> y = 2.0
>>> type(y)
<class 'float'>

3. complex merupakan representasi berhingga dari bilangan kompleks


C.

>>> z = 1 + 1j
>>> type(z)
<class 'complex'>
Sebelum melangkah lebih lanjut, mari perhatikan perintah-perintah ber-
ikut
>>> x = 0.4
>>> y = 0.1
>>> x - y
0.30000000000000004

Operasi 0.4 − 0.1 harusnya secara mudah menghasilkan 0.3. Namun, kom-
puter memberikan hasil yang berbeda. Hal ini disebabkan karena keterba-
tasan komputer yang sebelumnya telah disebutkan.

2.2 komputer dalam merepresentasikan bilangan

Representasi bilangan desimal atau bilangan berbasis 10 menggunakan


angka 0,1,2,3,4,5,6,7,8, dan 9 untuk merepresentasikan bilangan. Semua bi-
langan yang ditulis, apapun, pastilah menggunakan angka-angka tersebut.
Hal ini bisa jadi dikarenakan manusia secara umum memiliki sepuluh jari
tangan dan jari kaki.
Untuk bilangan yang besar, sistem bilangan desimal menggunakan kom-
binasi angka-angka tersebut. Berikut adalah contoh representasi menggu-
nakan bilangan desimal

86409 = (8 × 104 ) + (6 × 103 ) + (4 × 102 ) + (0 × 101 ) + (9 × 100 ) (1)

Digit kedua dari kanan mewakili kelipatan 10 (puluhan). Digit ketiga dari
kanan mewakili kelipatan 100 (ratusan) dan seterusnya. Representasi se-
perti ini biasa disebut sistem bilangan berbasis posisi (positional numbering
system).
Terdapat representasi bilangan lain yakni representasi bilangan biner
atau bilangan berbasis 2. Dengan kata lain, sistem bilangan ini akan meng-
gunakan angka 0 dan 1. Komputer merepresentasikan bilangan menggu-
nakan sistem bilangan ini. Angka 0 merepresentasikan off, dan. angka 1
merepresentasikan in. Sebagai contoh, bilangan 11 dapat disajikan sebagai

11 = (1 × 21 ) + (1 × 20 ) = 2 + 1 = 3 (2)

dalam sistem bilangan desimal.

2.2.1 Int

Bilagan biner yang sebelumnya telah dibahas dapat merepresentasikan


bilangan asli N. Meski begitu tidak semua bilangan asli dapat direpresen-
tasikan dalam komputer. Hal ini bergantung pada jenis komputer yang
digunakan. Misalnya komputer 8-bit, artinya bilangan paling besar adalah
11111111. Dengan kata lain, bilangan paling besar yang bisa ditangani ada-
lah

11111111 = (1 × 27 ) + (1 × 26 ) + (1 × 25 ) + · · · + (1 × 20 ) = 255 (3)


dalam bilangan desimal.

Untuk merepresentasikan bilangan bulat Z biasanya digunakan sistem


tanda yakni bilangan pertama merupakan tanda. Bilangan 0 di posisi awal
menyatakan tanda positif, sedangkan bilangan 1 di posisi awal menyatakan
tanda negatif. Sebagai contoh, komputer 8-bit tadi hanya bisa merepresen-
tasikan 7-bit bilangan bulat. Hal ini dikarenakan posisi pertama digunakan
untuk merepresentasikan tanda. Perhatikan contoh berikut
h i
10000011 → −1 × (0 × 27 ) + (0 × 26 ) + (0 × 25 ) + · · · + (1 × 21 ) + (1 × 20 )

= −3

Contoh lain,
h i
00000010 → +1 × (0 × 27 ) + (0 × 26 ) + (0 × 25 ) + · · · + (1 × 21 ) + (1 × 20 )

= +2

2.2.2 Floating Point

Misalkan bilangan desimal dapat dituliskan sebagai

R = (±1) × m × be (4)

dengan m merupakan mantissa, b merupakan basis bilangan yang digu-


nakan, e merupakan bilangan eksponen (bertanda). Sebagai contoh 156.78
dapat dituliskan sebagai 0.15678 × 103 . Dalam hal ini, m = 15678, b = 10
dan e = 3.
Gambar berikut merupakan ilustrasi dari representasi floating point

Tanda bilangan eksponen (bertanda) bagian mantisa

Format dari penulisan representasi tergantung dari standar format yang


digunakan. Biasanya format akan merujuk ke format IEEE, sebagai contoh
format IEEE 754 untuk 16-bit untuk bilangan (−0.625)10

1 01110 0000011001
Tanda besaran eksponen bagian mantisa

Untuk keperluan ilustrasi, akan digunakan komputer 7-bit. Misalkan


juga representasi floating pointnya dengan format sebagai berikut

0 1 11 101
Tanda tanda eksponen besaran eksponen bagian mantisa

Bilangan biner (0111101)2 akan dinyatakan dalam sistem bilangan desimal.


Perhatikan bahwa pada tabel terakhir di atas bilangan pertama adalah 0
berarti merupakan bilangan positif. Kemudian, bilangan kedua adalah 1
berarti eksponennya memiliki tanda negatif. Kemudian bilangan ketiga dan
keempat menghasikan
1 × 21 + 1 × 20 = 3

Dengan kata lain, eksponennya adalah −3. Terakhir, mantisanya adalah 101
berarti
1 × 2−1 + 0 × 2−2 + 1 × 2−3 = 0.5 + 0.125 = 0.625

sehingga

R = (0111101)2 = (−1)0 × (101)2 × 2111 = (1) × (0.625) × 2−3 = (0.078125)10

2.3 string str

Dalam Python, objek berupa kumpulan karakter teks direpresentasikan


sebagai tipe data str. Penulisannya dapat dilakukan dengan dua cara yakni
menggunakan petik tunggal atau petik ganda yakni ’qwerty’ atau ”qwerty”.
Perlu diperhatikan juga bahwa ”123” juga merupakan string meskipun ber-
isikan angka, sehingga operasi-operasi bilangan tidak berlaku. Perhatikan
contoh berikut

>>> type('2')
<class 'str'>
>>> '2' + 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

Pada bagian ini akan dibahas lebih lanjut mengenai tipe data ini.

2.3.1 Operasi-operasi yang berlaku

1. Penugasan (assignment) Tipe data string juga dapat disimpan dalam


variabel. Hal ini dilakukan dengan menggunakan simbol ”=”. Biasa-
nya simbol tersebut disebut sebagai operator penugasan.

>>> x = 'halo'
>>> print(x)
halo

2. Penjumlahan str
Operasi penjumlahan string hanya berlaku dengan tipe data string
saja. Operasi penjumlahan dengan tipe data lain akan menghasilkan
eror.
>>> x = 'halo'
>>> y = 'semua'
>>> x + y
'halosemua'

3. Perkalian bilangan bulat


Operasi perkalian bilangan bulat pada string akan menghasilkan keli-
patan dari string tersebut

>>> x = 'halo'
>>> x * 3
'halohalohalo'

4. Operasi escape sequence ”\”


Operator ini digunakan untuk melibatkan karakter-karakter khusus
seperti tanda petik ”. Hal ini dikarenakan tanda petik sendiri sudah
digunakan untuk mendefinisikan karakter string.

>>> x = 'kamu tahu masalah \"itu\"'


>>> print(x)
kamu tahu masalah "itu"

2.3.2 String slicing

Karakter dari indeks tertentu dari string dapat diakses dengan bantuan
kurung siku string[index]. Indeks merupakan sebagai urutan yang dimulai
dari 0 dari sisi kiri dan indeks negatif dimulai dari -1 dari sisi kanan.

String h a l o
Indeks positif 0 1 2 3
Indeks negatif -4 -3 -2 -1

1. string[i]: Memberikan karakter dari indeks positif i dari string dari


sisi kiri seperti yang ditampilkan dalam grafik indeks di atas.

>>> x = 'MA1106 Dasar-Dasar Pemrograman'


>>> print(x[2])
1

2. string[-i]: Memberikan karakter dari indeks negatif i dari string dari


sisi kanan.
>>> x = 'MA1106 Dasar-Dasar Pemrograman'
>>> print(x[-4])
a

3. string[i:j]: Memberikan karakter dari indeks positif i ke indeks positif


j.
>>> x = 'MA1106 Dasar-Dasar Pemrograman'
>>> print(x[2])
1

4. string[i:-j]: Memberikan karakter dari indeks positif i ke indeks negatif


j dari string

>>> x = 'MA1106 Dasar-Dasar Pemrograman'


>>> print(x[7:-12])
Dasar-Dasar

5. string[i:]: Memberikan karakter dari indeks positif i ke akhir string.

>>> x = 'MA1106 Dasar-Dasar Pemrograman'


>>> print(x[7:])
Dasar-Dasar Pemrograman

6. string[:j] Memberikan karakter dari awal string ke indeks positif j.

>>> x = 'MA1106 Dasar-Dasar Pemrograman'


>>> print(x[:6])
MA1106

7. string[-i:]: Memberikan karakter dari indeks negatif i ke akhir string.

>>> x = 'MA1106 Dasar-Dasar Pemrograman'


>>> print(x[-11:])
Pemrograman

8. string[:-j]: Memberikan karakter dari awal string ke indeks negatif j.

>>> x = 'MA1106 Dasar-Dasar Pemrograman'


>>> print(x[:-12])
MA1106 Dasar-Dasar

9. string[::-1]: Memberikan string dengan urutan terbalik.

>>> x = 'MA1106 Dasar-Dasar Pemrograman'


>>> print(x[::-1])
namargormeP rasaD-rasaD 6011AM

2.4 boolean

Tipe data Booelan merupakan tipe data yang hanya memiliki satu da-
ri dua kemungkinan nilai yakni True atau False. Boolean diambil dari
nama matematikawan George Boole, yang pertama kali mendefinisikan sis-
tem aljabar logika atau yang biasa dikenal sebagai aljabar Boole. Pada mo-
dul sebelumnya contoh tipe data ini telah dibahas pada bagian hasil operasi
perbandingan. Lebih lanjut, mari simak contoh berikut
>>> x = True
>>> y = 1 > 4
>>> print(x)
True
>>> print(y)
False

2.4.1 Operator Boolean

Di Matematika, terkadang suatu bilangan diekspresikan dalam sebuah


interval, misalnya I = [1, 2]. Untuk mengatakan bahwa 1.5 merupakan ang-
gota I dapat ditulis 1.5 ∈ I atau 1 < 1.5 < 2. Ekspresi kedua tersebut juga
dapat disajikan dalam bahasa pemrograman Python. Perhatikan contoh ber-
ikut
>>> 1 < 1.5 < 2
True

Diperlukan bantuan operator untuk bisa mengekspresikan jika intervalnya


1.5 ∈ [1, 2] ∪ [3, 4].
Dalam Python, ada bentuk lain yang ekuivalen dari contoh terakhir di
atas yakni dengan menggunakan bantuan operator Boolean. Terdapat tiga
operator yang termasuk operator Boolean yakni and, or, and not. Masing-
masing penggunaannya dapat dilihat pada contoh berikut
>>> 1 < 1.5 and 1.5 < 2
True
>>> 3 < 1.5 and 1.5 < 5
False
>>> x = (1 < 1.5 and 1.5 < 2) or (3 < 1.5 and 1.5 < 5)
>>> print(x)
True

Perhatikan baris kedua perintah terakhir di atas, dapat dilihat bahwa karena
1.5 ∈
/ [3, 4] (1.5 bukan anggota [3, 4]) maka program memberikan keluaran
False. Meski begitu perhatikan bahwa pada dua baris terakhir programnya
memberikan hasil benar karena untuk operator Boole, jika salah satunya
benar maka pernyataan tersebut benar.

2.4.2 Boolean dan int

Tipe data Boolean juga dapat diekspresikan dalam bilangan bulat yakni
1 untuk True dan 0 untuk False. Untuk lebih jelasnya, perhatikan contoh
berikut
>>> x = 1
>>> type(x)
<class 'int'>
>>> y = True
>>> type(y)
<class 'bool'>
>>> y + 1
2
>>> x + y
2
>>> y + y
2
>>> y*10
10
>>> type(y)
<class 'bool'>

Meski tipe variabel x dan y berbeda tetapi jika dilakukan operasi perban-
dingan maka akan menghasilkan keluaran bernilai benar atau True. Nam-
pak terlihat bahwa jika variabel Boolean dioperasikan dengan operasi ari-
tmatika, maka akan dianggap sebagai bilangan asli 1.

latihan

1. Nyatakan bilangan biner (10100011)2 dalam bilangan desimal

2. Berdasarkan format representasi floating point sebelumnya, ubahkan


bilangan-bilangan berikut ke bilangan desimal

(a) (0111110)2
(b) (0111111)2
(c) (1111111)2

3. Buatlah sebuah program yang menerima input berupa email mahasis-


wa itera, kemudian memberikan output berupa nim mahasiswa terse-
but.

4. Buatlah sebuah program yang menerima input berupa email maha-


siswa itera, kemudian memberikan output berupa nama mahasiswa
tersebut.

5. Buatlah program email generator baru untuk mahasiswa 2022. Pro-


gram ini dapat menerima input nama depan, nama belakang serta
NIM mahasiswa, kemudian memberikan output berupa email maha-
siswa dengan format:
[email protected]
3
STRUKTUR PEMROGRAMAN

Program komputer adalah kumpulan dari perintah-perintah yang meng-


arahkan komputer untuk mengerjakan tugas tertentu. Kurang lebih sebuah
komputer bergantung pada bagaimana seorang pembuat program (progra-
mer) mengarahkannya. Brian Ian Mills, penulis buku Theoretical Introdu-
ction to Programing, menyatakan bahwa ”Pemrograman merupakan kegi-
atan memindahkan sebagian operasi dalam pikiran programer ke medium
lain”. Dalam hal ini, salah satu medium lainnya adalah komputer.

Mari perhatikan tata cara memasak mie instan berikut

1. Tahap 1: Mulai

2. Tahap 2: Rebus air hingga mendidih

3. Tahap 3: Masukan mie instan ke dalam air mendidih tersebut

4. Tahap 4: Tunggu beberapa menit hingga mie terlihat matang

5. Tahap 5: Jika mie sudah dirasa matang, angkat dan tiriskan

6. Tahap 6: Campurkan bumbu – bumbu, dan aduk hingga rata

7. Tahap 7: Selesai

Proses-proses tersebut merupakan operasi-operasi yang ada dalam pikiran


penjual produk mie instan yang dipindahkan ke bungkus mie instan.

3.1 struktur sekuensial (urutan)

Pada sturktur sekuensial instruksi dikerjakan secara berurutan baris per


baris mulai dari baris pertama hingga baris terakhir, tanpa ada loncatan
atau perulangan.

1. Tiap instruksi dikerjakan satu per satu

2. Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diu-
lang

3. Urutan instruksi yang dilaksanakan pemroses sama dengan instruksi


sebagai tertulis di dalam teks algoritma

4. Akhir dari instruksi terakhir merupakan akhir algoritma.


3.1.1 Penukaran Data (Swapping)

Proses pertukaran data antara 2 buah variabel bertipe data sama dapat
dilakukan dengan menggunakan sebuah variabel bantu yang tentunya tipe
datanya juga harus sama dengan kedua variabel yang datanya akan diper-
tukarkan.
Dengan menggunakan sebuah variabel bantu, maka proses pertukaran
data dilakukan dengan cara yang sederhana.
Contoh:
Terdapat dua buah gelas, gelas A dan gelas B. Gelas A berisi air berwarna
biru. Gelas B berisi air berwarna merah. Bagaimana cara menukarkan isi
kedua gelas tersebut, sehingga gelas A berisi warna merah dan gelas B ber-
isi warna biru?

Proses penukaran isi gelas:


1. Tahap 1: Mulai

2. Tahap 2: Tuang air dari gelas A ke gelas B

3. Tahap 3: Tuang air dari gelas B ke gelas A

4. Tahap 4: Selesai
Algoritma di atas tidak menghasilkan pertukaran yang benar, tahap-
tahapnya tidak logis, karena yang terjadi bukan pertukaran tetapi percam-
puran antara air di gelas A dengan air di gelas B. Sehingga algoritma di atas
salah.

3.2 flowchart dan pseudocode

Penulisan program yang rapih dan baik memudahkan pengguna dalam


mengembangkan, menguji dan memperbarui program. Tiga aspek funda-
mental program (program numerik) yang baik: Urutan, Pemilihan, dan Re-
petisi. Biasanya, meski tidak selalu, pemrogram (programer) menyusun
diagram alir (flowchart) program sebelum beranjak ke tahap membuat pro-
gram.
Algoritma umumnya dapat dibuat dalam 3 cara, yaitu:
1. Kalimat deskriptif

2. Flowchart

3. Pseudocode
Notasi yang umum digunakan adalah Flowchart dan Pseudocode Menulis
algoritma dengan Flowchart dan Pseudocode biasanya dilakukan oleh pro-
grammer pemula (tahap belajar). Programmer yang mahir umumnya lang-
sung menuangkan algoritma dengan bahasa pemrograman tertentu. Na-
mun programmer mahir terkadang menggunakan Flowchart dan Pseudo-
code untuk dokumentasi. Digunakan untuk komunikasi dengan tim jika
dilakukan Bersama.
3.2.1 Flowchart

Flowchart diperkenalkan oleh Frank Gilberth tahun 1921. Flowchart di-


gunakan untuk menggambarkan (proses bisnis) aliran input, proses , dan
output dari sebuah sistem.

Simbol Nama Penggunaan

Teminal Untuk merepresentasikan permulaan


atau akhir dari sebuah program

Garis alir Untuk merepresentasikan aliran dari


proses

Declare Untuk mendeklarasikan variabel be-


serta tipenya

Proses Untuk merepresentasikan sebuah pro-


ses

Input/Output Untuk merepresentasikan penginput-


an atau penampilan (output) sebuah
data. Misalnya mencetak ”halo Du-
nia”.

Decision Untuk merepresentasikan pertanyaan


(ya/tidak) atau keputusan yang memi-
liki alternatif.
Junction Penggabungan/pertemuan alir proses

Loop Untuk merepresentasikan perulangan.

Berikut adalah contoh algoritma menghitung luas persegi panjang

1. Tahap 1: Mulai

2. Tahap 2: Deklarasi Panjang, Lebar, Luas

3. Tahap 3: Masukkan Panjang, Lebar

4. Tahap 4: Hitung Luas = Panjang x Lebar

5. Tahap 5: Cetak Luas

6. Tahap 6: Selesai

Dalam flowchart, algoritma tersebut disajikan pada gambar di bawah


3.2.2 Pseudocode

Pseudocode merupakan ekspresi-ekspresi yang menyerupai perintah-perintah


pada bahasa pemrograman. Selain itu biasanya pseudocode menggunakan
bahasa yang mudah dipahami secara universal, misalnya bahasa inggris,
dan juga lebih ringkas daripada algoritma.
Semua bahasa pemrograman, pasti mempunyai komponen-komponen
sebagai berikut:

1. Input

2. Percabangan (if, else, elif)

3. Perulangan (while, for)

4. Output (print)

Simbol flowchart

3.3 struktur pencabangan

3.3.1 if

Perintah if digunakan untuk memeriksa sebuah kondisi. Jika kondisi


tersebut benar, maka kerjakan perintah di bawah perintah if. Jika kondisi
bernilai salah, maka lanjutkan proses lainnya setelah end. Perintah end
menyatakan bagian akhir perintah if.

if kondisi:
blok program
Contoh: Memeriksa apakah input bilangan lebih kecil dari angka 5. Berikut
adalah algoritmanya dalam sebuah diagram alir

Mulai

Deklarasi n

Masukkan n

Salah
n<=5

Benar
n lebih kecil atau
sama dengan 5

Selesai

Berikut adalah implementasi dalam bahasa Python

n = float(input(‘masukkan nilai n='));


if n<=5:
print('n lebih kecil atau sama dgn 5')

3.3.2 if-else

Perintah if-else digunakan untuk memeriksa sebuah kondisi. Jika kon-


disi tersebut benar, maka kerjakan perintah satu di bahwa perintah if. Jika
kondisi bernilai salah, maka kerjakan perintah dua dibahwa else.

if kondisi:
blok program 1
else:
blok program 2

Contoh: Memeriksa apakah input bilangan lebih kecil dari angka 5, lalu
memberikan respon jika tidak memenuhi. Berikut adalah algoritmanya da-
lam sebuah diagram alir
Mulai

Deklarasi n

Masukkan n

Salah
n<=5

n lebih
Benar besar dari 5

n lebihkecil atau
sama dengan 5

Selesai

Berikut adalah implementasi dalam bahasa Python

n = float(input(‘masukkan nilai n='));


if n<=5:
print('n lebih kecil atau sama dgn 5')
else:
print('n lebih besar dari 5')

3.3.3 if-elif-else

Perintah if-else digunakan untuk memeriksa dua buah kondisi atau le-
bih. Jika kondisi-1 benar, maka kerjakan perintah di bahwa perintah kondisi-
1. Jika kondisi-1 bernilai salah, maka periksa kondisi-2. Jika kondisi-2 benar,
maka kerjakan perintah di bahwa perintah kondiisi-2. Jika kondisi-2 berni-
lai salah, maka periksa kondisi-3. Jika kondisi-3 benar, maka kerjakan perin-
tah di bahwa perintah kondiisi-3. Jika kondisi bernilai salah, maka periksa
kondisi selanjutnya hingga kondisi ke-n. Jika semua kondisi bernilai salah,
maka kerjakan perintah dibawah else.

if kondisi 1:
blok program 1
elif kondisi 2:
blok program 2
else:
blok program 3

Gambar berikut mengilustrasikan jika program memiliki lebih dari 2 kondi-


si
Benar
Kondisi 1 Perintah 1

Salah

Benar
Kondisi 2 Perintah 2

Salah

Perintah 3

Contoh: Sifat trikotomi: memeriksa apakah input bilangan lalu memban-


dingkannya dengan bilangan 5. Berikut adalah implementasi dalam bahasa
Python

n = float(input(‘masukkan nilai n='));


if n<5:
print('n lebih kecil dari 5')
elif n>5:
print('n lebih besar dari 5')
else:
print('n sama dengan 5')

3.4 error handling

Kontrol if bergantung pada kebenaran kondisi. Terkadang diperlukan


sebuah kontrol yang dapat mengatasi kesalahan/error. Python menyediak-
an kontrol try-except

try:
blok program 1
except:
blok program 3

Jika perintah 1 memunculkan error maka perintah 2 akan dijalankan. Beri-


kut adalah contoh program yang dapat mengantisipasi kesalahan input dari
pengguna, sehingga program akan tetap berjalan (tidak error) ketika terda-
pat kesalahan input pengguna.

print('Contoh Program IF-elseif- else-end’)


print(' ') # buat baris kosong
try:
n = float(input('masukkan nilai n= '))
if n<5:
print('n lebih kecil dari 5')
elif n>5:
print('n lebih besar dari 5')
else:
print('n sama dengan 5')
except:
print('n bukan bilangan')

Dapat dilihat bahwa program masih memuat struktur pencabangan yang


sebelumnya telah digunakan. Bedanya, program ini dapat mengantisipas
apabila pengguna memberikan masukan selain bilangan.

latihan

Buatlah algoritma, flowchart, dan pseudocode untuk

1. Menghitung nilai y dari persamaan y=2a+3b

2. Menghitung luas segitiga.

3. Menghitung luas trapesium

4. Menghitung keliling lingkaran

5. Menghitung keliling persegi yang diketahui luas

6. Konversi suhu dengan Input : suhu dalam Celcius, Proses: R=4/5 * C


dan F=9/5*C +32, Output: suhu dalam Reamur dan Farenheit

7. Proses kedatangan Mahasiswa ITERA dari luar Lampung

8. Jika usia mahasiswa lebih besar atau sama dengan 17 maka orang
tersebut boleh masuk ruangan dosen. Jika tidak, selesai.

9. Jika usia mahasiswa lebih besar atau sama dengan 17 maka orang
tersebut boleh masuk ruangan dosen, selain itu dilarang masuk.

10. Buatlah algoritma, flowchart, dan pseudocode untuk menentukan se-


sorang berjenis kelamin laki-laki atau perempuan, input yang dima-
sukkan yaitu karakter “L” atau “P”.

11. Buatlah algortima, flowchart, dan pseudocode untuk menentukan apa-


kah sebuah huruf adalah huruf vocal atau konsonan dengan input
yang dimasukkan yaitu huruf (karakter).

12. Buatlah flowchart dan program Python untuk mengkonversi bilangan


dari input pengguna berupa Nilai Akhir menjadi Nilai Huruf dengan
ketentuan

• Nilai Akhir ≥ 80 adalah A


• 73 ≤ Nilai Akhir < 80 adalah AB
• 65 ≤ Nilai Akhir < 73 adalah B
• 57 ≤ Nilai Akhir < 65 adalah BC
• 50 ≤ Nilai Akhir < 57 adalah C
• 35 ≤ Nilai Akhir < 50 adalah D
• Nilai Akhir < 35 adalah E

13. Menghitung flowchart dan program luas segitiga yang mempertim-


bangkan apakah segitiganya merupakan segitiga siku-siku atau segiti-
ga sembarang. Formula segitiga sembarang adalah
q
L = s(s − a)(s − b)(s − c)

dengan s = 12 ( a + b + c).

14. Buatlah flowchart dan program untuk menghitung luas dan keliling
bangun datar, dengan ketentuan:

• Program dapat menerima input dari pengguna


• Program memutuskan (kondisional) apakah bangun datar beru-
pa segitiga, trapesium, persegi panjang atau lingkaran
• Program akan menampilkan jenis bangun ruang
• Program akan menghitung luas bangun ruang berdasarkan jenis-
nya.

15. Buatlah flowchart dan program untuk konversi suhu dengan ketentu-
an:

• Program dapat menerima input dari pengguna terkait jenis kon-


versi. Misalnya F → C, C → R, dan seterusnya.
• Program memutuskan (kondisional) jenis konversi yang diharapk-
an pengguna
• Program akan mencetak jenis konversi
• Program akan konversi suhu berdasarkan sesuai dengan harapan
pengguna.
4
PENGULANGAN

Pada modul sebelumnya telah dibahas mengenai program yang dijalank-


an berdasarkan suatu kondisi. Apabila kondisi terpenuh, suatu baris pro-
gram akan dijalankan. Pada suatu kondisi, mungkin saja terdapat sebuah
keadaan di mana suatu program dijalankan berulang kali apabila suatu kon-
disi terpenuhi.

4.1 while

Pengulangan while akan melakukan pemeriksaan kondisi terlebih dahu-


lu. Jika kondisi tidak terpenuhi, pengulangan tidak dikerjakan sama sekali.
Selama kondisinya terpenuhi/benar, maka pengulangan akan dikerjakan.
Pengulangan while biasanya digunakan untuk kasus saat banyaknya pe-
ngulangan yang akan dilakukan tidak diketahui secara pasti.
Pengulangan while digunakan untuk melakukan proses perulangan se-
lama kondisi ekspresi terpenuhi (kondisi bernilai benar). Begitu kondisi
sudah tidak terpenuhi lagi, maka proses perulangan akan langsung dihen-
tikan. Sintaksis (syntax), aturan penulisan dalam suatu bahasa, pengulang-
an while dalam bahasa Pemrograman Python adalah sebagai berikut

inisialisasi/Deklarasi (jika diperlukan)


while kondisi:
blok program
pengaturan iterasi (jika diperlukan)

Kondisi sebagai mana dimaksud sintaksis terakhir di atas merupakan per-


nyataan yang nilainya benar. Dalam hal ini, kondisi dapat dipandang seba-
gai variabel dengan tipe data Bool True atau 1. Sebagai contoh 1 < 2, True,
dan lain sebagainya. Apabila kondisi bernilai benar, maka blok perintah di
bawahnya (dalam indentasi) akan dijalankan berulang kali sebanyak yang
diperlukan. Pengulangan akan berjalan terus menerus, kecuali jika nilai
kondisi bernilai salah (False).
Diagram alir (flowchart) pengulangan while dapat dilihat pada gambar
berikut
Gambar terakhir di atas merupakan diagram alir dengan dua perintah as-
sign dalam pengulangan. Kedua perintah tersebut akan dijalankan selama
kondisi bernilai benar atau True. Apabila kondisi bernilai salah atau False
maka pengulangan akan diakhir dan berlanjut ke perintah lain di luar pe-
ngulangan.
Contoh 1: Menampilkan angka dari angka 1 sampai 5.

1. Mulai

2. Deklarasi i sebagai integer

3. Definisikan nilai awal i=1

4. while i <=5

(a) Cetak (i)

(b) Hitung nilai iterasi i= i+1

(c) Ulangi tahap 4

5. Selesai

Diagram alir untuk menampilkan angkar 1 sampai 5 ini adalah sebagai ber-
ikut
Berikut adalah contoh program dalam bahasa Python

>>> i = 1
>>> while i <=5:
... print(i)
... i = i + 1
...
1
2
3
4
5

Pada program terakhir di atas, awalnya variabel i menyimpan integer


1. Kemudian masuk ke perulangan dengan kondisi apabila i <= 5 maka
program perulangan akan dijalankan yaitu mencetak variabel i kemudian
memperbaharui variabel i dengan menambah 1 atau i = i+ 1 sehingga di-
peroleh i = 2. Kemudian karena masih memenuhi i <= 5 maka perulang-
an masih dijalankan. Perulangan ini berakhir saat diperoleh nilai variabel i
= 5.

Contoh 2: Menghitung 4! (4 faktorial)


Nilai 4 faktorial adalah

4! = 4 × 3 × 2 × 1 = 24

Berikut adalah algoritma sederhana untuk menghitung faktorial:

1. Tahap 1: Mulai

2. Tahap 2: Deklarasi i, fak sebagai integer


3. Tahap 3: Definisikan nilai awal fak=1

4. Tahap 4: Definisikan nilai awal i=1

5. Tahap 5: while i <5

6. Tahap 6: Hitung nilai fak = fak*i

7. Tahap 7: Hitung nilai iterasi i= i+1

8. Tahap 8: Ulangi tahap 5

9. Tahap 9: Cetak (4!)

10. Tahap 10: Selesai

Dalam diagram alir, algoritmanya dapat disusun menjadi

Berikut adalah implementasinya dalam bahasa Python

>>> fak = 1
>>> i = 1
>>> while i < 5:
... fak = fak * i
... i = i + 1
...
>>> print(fak)
24

Perulangan while seringkali disebut sebagai perulangan indefinite sebab per-


ulangan ini akan terus berjalan asalkan pernyataannya bernilai benar. Beri-
kut adalah contohnya
while True:
print('a')

Contoh perintah di atas akan mencetak karakter a tanpa henti karena krite-
rianya selalu benar yaitu True.

4.2 for

Berbeda dengan while yang membutuhkan kebenaran dari statement,


perulangan for akan melakukan tugasnya pada suatu barisan atau iterabel.
Berikut adalah struktur pengulangan dengan for

for variabel in iterable:


pernyataan 1
pernyataan 2

Iterable merupakan objek berupa koleksi (berhingga). Suatu objek yang


yang iterable disebut iterator. Salah satu contoh iterator adalah range(start,stop,step).
Dalam hal ini start merupakan nilai awal pengulangan, stop merupakan
nilai akhir pengulangan, dan step merupakan langkah antar bilangan. De-
ngan iterator ini, maka struktur pengulangannya menjadi

for variabel in range(start, stop, step):


pernyataan 1
pernyataan 2

Pernyataan 1 akan dikerjakan mulai dari start hingga stop dengan


langkah step. Setelah selesai, maka akan mengerjakan pernyataan 2 dan
seterusnya. Berikut adalah ilustrasi pengulangan for dalam diagram alir

Contoh 3: Mencetak angka berurutan

>>> for i in range(1,4,1):


... print(i)
...
1
2
3
Contoh 4: Mencetak angka dengan urutan terbalik

>>> for i in range(4,1,-1):


... print(i)
...
4
3
2

Terdapat iterator-iterator lain selain range salah satu di antaranya ada-


lah string. String sebagaimana yang telah dibahas pada modul sebelumnya
merupakan tipe data berupa kumpulan karakter. Sebagai iterator, suatu
objek string dianggap sebagai koleksi karakter yang berurutan. Untuk me-
mahaminya, mari perhatikan contoh berikut.
>>> email = 'nama.nim'
>>> for var in email:
... print(var)
...
n
a
m
a
.
n
i
m

Dalam program terakhir di atas, variabel email dicetak berurutan dari awal
hingga yakni karakter n hingga karakter terakhir yakni karakter m.

4.3 penghentian pengulangan

4.3.1 Break

Break hanya dapat digunakan dalam loop untuk menghentikan proses


pengulangan. Kata kunci ini biasanya digunakan untuk memutus loop yang
disengaja (dengan kriteria tertentu). Untuk memahaminya, mari perhatikan
contoh implementasinya pada pengulangan for berikut

>>> for i in range(10): #range(0,10,1):0,1,2,3,4,5,6,7,8,9


... if i == 7:
... break
... print(i)
...
0
1
2
3
4
5
6

Pada program terakhir di atas, angka 7 tidak dicetak karena program di-
hentikan saat i==5. Meskipun program menyediakan loop hingga 10 kali
pengulangan, lihat range(10).

Implementasi pada pengulangan while dilakukan secara berbeda. Hal


ini dikarenakan, pengulangan while membutuhkan memeriksa kebenaran
pernyataan. Berikut adalah contoh implementasi break pada pengulangan
while .
>>> i = 0
>>> while True:
... if i == 5.0:
... break
... print(i)
... i = i + 1
...
0
1
2
3
4

Pada program terakhir di atas, harusnya akan berjalan tanpa henti karena
kondisi bernilai selalu benar. Program dihentikan karena saat i==5.

4.3.2 Continue

Berbeda dengan break yang menghentikan pengulangan, Continue ak-


an melanjutkan iterasi tanpa menjalankan blok-blok perintah di bawah Continue.
Untuk memahaminya, mari perhatikan contoh berikut

>>> for i in range(7):


... if i == 3:
... continue
... print(i)
...
0
1
2
4
5
6

Dapat dilihat bahwa angka 3 tidak dicetak karena perintah Continue mele-
wati (skip) perintah print(i) saat i==3. Continue juga dapat diterapkan
pada pengulangan while, berikut adalah contohnya.

>>> i = 0
>>> while i < 7:
... i = i + 1
... if i == 3:
... continue
... print(i)
...
1
2
4
5
6
7

4.4 pengulangan bersarang

Pengulangan bersarang pada dasarnya merupakan pengulangan yang


memuat pengulangan lain. Hal ini kadang dilakukan apabila diinginkan
adanya pengulangan dalam sebuah proses berulang. Struktur pengulangan
bersarang adalah sebagai berikut

for variabel1 in range(start, stop, step):


for variabel2 in range(start, stop, step):
for variabel3 in range(start, stop, step):

Dari struktur program terakhir di atas, for untuk variabel1 memuat perintah
berupa pengulangan for untuk variabel2, dan demikian juga dengan for
untuk variabel2 yang memuat program pengulangan for untuk variabel3.
Program ini tentu akan sangat berbeda hasilnya apabila for untuk variabel2
dan for untuk variabel3 berada pada satu indentation yang sama dengan for
untuk variabel1. Untuk lebih jelasnya, mari perhatikan diagram alir berikut
Loop
Nested
Loop

Contoh 5: Mencetak pasangan bilangan bulat

H = {(i, j) | 1 ≤ i ≤ 3, 1 ≤ j ≤ 4}

Berikut adalah algoritma program tersebut


1. Tahap 1: Mulai

2. Tahap 2: Deklarasi i,j, sebagai integer

3. Tahap 3: for i in range(1,3,1)

4. Tahap 4: for j in range(1,4,1)

5. Tahap 5: cetak(i,j)

6. Tahap 6: Ulang Tahap 6

7. Tahap 7: Ulang Tahap 5

8. Tahap 8: Selesai
Diagram alir untuk algoritma ini adalah sebagai berikut
Implementasi dalam bahasa Python adalah sebagai berikut

>>> for i in range(1,3,1):


... for j in range(1,4,1):
... print(i,j)
...
1 1
1 2
1 3
2 1
2 2
2 3

latihan

1. Buatlah flowchart dan Program Python yang menampilkan bentuk se-


gitiga sebanyak n baris seperti sebagai berikut

*
* *
* * *
* * * *

2. Buatlah flowchart dan Program Python untuk menghitung Kombinasi


dengan input n dan r. Berikan juga cara membaca iterasi dan output-
nya.
n!
Cnr = C (n, r ) =
(n − r )!r!

3. Buatlah flowchart dan Program Python dari contoh 5 apabila pengu-


langan yang digunakan adalah pengulanan while.
5
T I P E - T I P E C O N TA I N E R

5.1 list

List merupakan tipe data berupa koleksi objek-objek yang terurut (sequence).
List dapat berisikan berbagai tipe data. Sintaksis untuk membuat sebuah list
adalah dengan menggunakan kurung siku ‘[ ... ]‘ dan jika anggotanya le-
bih dari satu masing-masing anggotanya dipisahkan oleh koma ‘,’. Berikut
adalah contoh list
>>> listAngka = [12,-2,0,100, 1,1, -3,-5]
>>> print(type(listAngka))
<class 'list'>
>>> print(listAngka)
[12, -2, 0, 100, 1, 1, -3, -5]

Karena list merupakan koleksi yang terurut, anggotanya dapat diakses/ di-
panggil dengan menggunakan indeks. Misalnya dari listAngka ingin diak-
ses anggota ke dua yakni -2, caranya adalah dengan menuliskan listAng-
ka[1]. Sistem indeks Python dimulai dari angka nol.

>>> listAngka[1]
-2
>>> print(listAngka[1])
-2

Selain mengakses posisi tertentu, list Python juga bisa diakses untuk indeks-
indeks tertentu. Berikut adalah contohnya
>>> #mengambil anggota dari indeks pertama hingga kelima
>>> listAngka[:5]
[12, -2, 0, 100, 1]
>>> #mengambil anggota dari indeks ketiga hingga kelima
>>> listAngka[3:5]
[100, 1]
>>> #mengambil anggota dari indeks kelipatan dua
>>> listAngka[::2]
[12, 0, 1, -3]

Tidak hanya numerik saja atau satu buah tipe data saja, list dapat berisikan
tipe data yang berbeda-beda
>>> listBedaTipe = [12,1j,'hai',True,]
>>> print(type(listBedaTipe))
<class 'list'>
>>> print(listBedaTipe)
[12, 1j, 'hai', True]

List biasa dikenal sebagai mutable object yakni objek, dalam hal ini elemen-
elemen di dalamnya, yang dapat diganti. Sebagai contoh dari list listBeda-
Tipe akan diganti elemen kedua dengan sebuah list lain yakni [1,2,3]

>>> listBedaTipe = [12,1j,'hai',True]


>>> print(listBedaTipe)
[12, 1j, 'hai', True]
>>> listBedaTipe[1] = [1,2,3]
>>> print(listBedaTipe)
[12, [1, 2, 3], 'hai', True]

Karena dapat berisi tipe data lain, list juga dapat berisi list lain (list
bersarang). Dalam hal ini, cara ini biasanya digunakan untuk membuat
sebuah matriks. Misal ingin dibuat matriks dengan ukuran 3x3, berikut
adalah contohnya

>>> listMatriks = [[11,12,13],[21,22,23],[31,32,33]]


>>> print(type(listMatriks))
<class 'list'>
>>> print(listMatriks)
[[11, 12, 13], [21, 22, 23], [31, 32, 33]]
>>> #memangggil indeks dari list bersarang
>>> #akan menghasilkan list juga
>>> listMatriks[1]
[21, 22, 23]
>>> #Misal ingin dipanggil angka 23 yang dalam matriks
>>> #berada di baris 2 kolom 3
>>> listMatriks[1][2]
23

5.1.1 range()

List banyak digunakan untuk menyimpan data sequence. Kadang diper-


lukan untuk membuat sequence bilangan bulat pada rentang tertentu. Hal
ini sulit apabisa dibuat dalam List. Ada cara lain untuk membuat sequence
bilangan bulat yakni dengan range()

>>> start = 2
>>> stop = 15
>>> step = 3
>>> contohRange = range(start, stop, step)
>>> print(type(contohRange))
<class 'range'>
>>> print(contohRange)
range(2, 15, 3)
>>> print(contohRange[2])
8
>>> print(contohRange[-1])
14
>>> print(contohRange[1:4])
range(5, 14, 3)

Dapat dilihat pada tipe sequence range bahwa meski bisa diakses untuk
indeks-indeks tertentu, pemanggilan untuk suatu rentang indeks tertentu
memberikan range juga. Meski berbeda list, range dan juga string memi-
liki kesamaan yakni sama-sama objek iterabel yakni objek yang mampu
mendaftarkan anggota satu per satu (anggotanya dapat dipanggil).

5.1.2 list()

Jelas bahwa range berbeda tipe dengan list, namun range dapat diubah
menjadi list yakni dengan list(). Berikut adalah contohnya

>>> print(type(contohRange))
<class 'range'>
>>> print(contohRange)
range(2, 15, 3)
>>> listDariRange = list(contohRange)
>>> print(listDariRange)
[2, 5, 8, 11, 14]
>>> print(listDariRange[1:4])
[5, 8, 11]

Konsep seperti ini biasanya dikenal sebagai fungsi. Dalam hal ini list(objek)
merupakan fungsi yang menerima input berupa objek iterabel dan meng-
embalikannya menjadi list. Misalkan ingin diubah sebuah string (objek ite-
rabel) menjadi list, berikut adalah contohnya

>>> alfabet = 'abcdefghijkl'


>>> list(alfabet)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']

5.1.3 Manipulasi Anggota List

Karena list merupakan tipe data yang mutabel yakni tiap anggotanya
dapat dimodifikasi termasuk dihapus. Terdapat beberapa metode (metho-
ds) yang bersesuaian dengan manfaatnya masing-masing. Misalkan untuk
menambahkan anggota dari list dapat menggunakan metode append. Cara
menerapkan metode pada list adalah dengan memberi titik pada nama list
kemudian nama metode misalnya listSaya.append(2).

Metode append

>>> #membuat list kosong


>>> listSaya = []
>>> #menambahkan anggota baru bilangan 2
>>> listSaya.append(2)
>>> #menambahkan anggota baru bilangan 3
>>> listSaya.append(3)
>>> #menambahkan anggota baru sebuah string
>>> listSaya.append('pulau terlampaui')
>>> print(listSaya)
[2, 3, 'pulau terlampaui']

Metode remove untuk menghapus elemen dalam list

>>> print(listSaya)
[2, 3, 'pulau terlampaui']
>>> listSaya.remove('pulau terlampaui')
>>> print(listSaya)
[2, 3]

5.1.4 Penggunaan list dalam loop

>>> print('mengabsen mahasiswa')


mengabsen mahasiswa
>>> daftarMahasiswa = ['setia', 'desi', 'serta', 'restu',
... 'andrian', 'mutiara']
>>> for nama in daftarMahasiswa:
... print("Apakah " + nama + " hadir?")
...
...
Apakah setia hadir?
Apakah desi hadir?
Apakah serta hadir?
Apakah restu hadir?
Apakah andrian hadir?
Apakah mutiara hadir?

>>> print('mengabsen mahasiswa dengan nomor (enumerate)')


mengabsen mahasiswa dengan nomor (enumerate)
>>> daftarMahasiswa = ['setia', 'desi', 'serta', 'restu',
... 'andrian', 'mutiara']
>>> for no, nama in enumerate(daftarMahasiswa):
... print("nomor absen " + str(no))
... print("Apakah " + nama + " hadir?")
...
...
nomor absen 0
Apakah setia hadir?
nomor absen 1
Apakah desi hadir?
nomor absen 2
Apakah serta hadir?
nomor absen 3
Apakah restu hadir?
nomor absen 4
Apakah andrian hadir?
nomor absen 5
Apakah mutiara hadir?

5.1.5 Pengisian list dengan menggunakan loop

>>> print("menambahkan anggota list dengan loop")


menambahkan anggota list dengan loop
>>> print("Barisan Fibonaci 1,1,2,3,5,8,13")
Barisan Fibonaci 1,1,2,3,5,8,13
>>> lisFib = [1, 1, 2, 3, 5, 8, 13]
>>> print(lisFib)
[1, 1, 2, 3, 5, 8, 13]
>>> num = 15
>>> fib1 = 1
>>> fib2 = 1
>>> listFibonaci = [fib1, fib2]
>>> print(listFibonaci)
[1, 1]
>>> for i in range(num - 3): #karena pertama dan kedua sudah diisi
... fib3 = fib1 + fib2
... listFibonaci.append(fib3)
... fib1 = fib2
... fib2 = fib3
...
>>> print(listFibonaci)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]

5.2 tuple

Tuple merupakan salah satu objek iterabel yang dapat dibuat dengan
menggunakan tanda kurung dan tiap elemennya dipisahkan oleh tanda ko-
ma ( , ) atau tanpa kurung dengan pemisah berupa tanda koma saja. Sebagai
contoh

>>> tupleSaya = (1,22)


>>> type(tupleSaya)
<class 'tuple'>
>>> print(tupleSaya)
(1, 22)

Penulisan tupel dengan tanpa menggunakan tanda kurung

>>> tupleSaya = 1,22


>>> type(tupleSaya)
<class 'tuple'>

Dalam hal ini, perlu diperhatikan bahwa penulisan angka desimal menurut
KBBI adalah dengan menggunakan tanda koma.
Tuple memiliki kemiripan dengan list, khususnya dalam sistem pengin-
deksan serta dapat berisikan tipe data yang beragam. Sebagai contoh

>>> tupleBeragam = 1, 'halo', [12]


>>> print(tupleBeragam)
(1, 'halo', [12])
>>> tupleBeragam[0]
1
>>> tupleBeragam[-1]
[12]

Meski begitu tuple tidak mengizinkan adanya perubahan anggota.

>>> try:
... tupleBeragam[0] = 1
... except:
... print("tuple tidak mengizinkan penggantian anggota")
... print(tupleBeragam)
...
tuple tidak mengizinkan penggantian anggota
(1, 'halo', [12])

Karena tuple merupakan objek iterabel, maka tuple dapat dibuat menjadi
sebuah list dengan fungsi list()

>>> tupleBeragam = 1, 'halo', [12]


>>> listTuple = list(tupleBeragam)
>>> type(listTuple)
<class 'list'>
>>> print(listTuple)
[1, 'halo', [12]]
5.3 dictionary

Berbeda dengan list dan tuple, dictionary atau dict merupakan tipe data
yang menggunakan sistem kunci (key) dan nilai (value). Penulisan dict
adalah dengan menggunakan tanda kurung kurawal dan dengan terlebih
dahulu memberikan key lalu valuenya yakni {key : value}.

>>> asal = {1:"saya",


... 2.0:"bernama",
... 'tiga':2,
... 'lis saya':[1,2,3],
... 'panel':tupleBeragam}
>>> type(asal)
<class 'dict'>
>>> asal[1]
'saya'
>>> asal['tiga']
2

Dictionary juga merupakan objek iterable, namun tidak bisa diakses dengan
menggunakan indeks

>>> try:
... asal[-1]#error
... except:
... print('dict tidak menggunakan indeks, melainkan value')
...
...
dict tidak menggunakan indeks, melainkan value

5.4 numpy array

Numpy array pada dasarnya adalah sequence seperti list yang berisikan
tipe data yang sama. Artinya numpy array hanya bisa menangani satu buat
tipe saja misal numerik atau string. Ada beberapa cara untuk membuat
numpy array baru, misalnya dari

1. list atau tuple

2. menggunakan fungsi bawaan numpyseperti arange, linspace, dll.

3. membaca data dari file

Numpy sebelum digunakan perlu diimport terlebih dahulu karena bukan


merupakan fungsi bawaan Python. Berikut adalah beberapa cara untuk
mengimport numpy atau modul-modul bawaan numpy
>>> import numpy as np
>>> from numpy import *
>>> from numpy import array

Membuat numpy array dari list atau tuple yakni dengan perintah np.array()

>>> listSaya = [2,23,1.3,3,4,-1,2]


>>> print(listSaya)
[2, 23, 1.3, 3, 4, -1, 2]
>>> arraySaya = np.array(listSaya)
>>> type(arraySaya)
<class 'numpy.ndarray'>
>>> print(arraySaya)
[ 2. 23. 1.3 3. 4. -1. 2. ]

>>> tupleSaya = -100,20,34


>>> arrayDariTuple = np.array(tupleSaya)
>>> print(arrayDariTuple)
[-100 20 34]

Membuat matriks dari list bersarang

>>> listBersarang = [[1,2],[3,4]]


>>> print(listBersarang)
[[1, 2], [3, 4]]
>>> matriksSaya = np.array(listBersarang)
>>> print(matriksSaya)
[[1 2]
[3 4]]

Matriks dan array dipandang sebagai tipe yang sama

>>> type(arraySaya)
<class 'numpy.ndarray'>
>>> type(matriksSaya)
<class 'numpy.ndarray'>

Membuat array dengan fungsi bawaan numpy arange

>>> start = 0
>>> stop = 1
>>> step = 0.1
>>> np.arange(start, stop, step)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

Membuat array dengan fungsi bawaan numpy linspace


>>> start = 0
>>> stop = 1
>>> num = 11
>>> np.linspace(start, stop, num)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

Membangkitkan bilangan acak dengan fungsi dalam numpy

>>> # bilangan acak berdistribusi seragam pada interval [0,1]


>>> #3 baris, 4 kolom
>>> np.random.rand(3,4)
array([[0.65800262, 0.88908423, 0.10274396, 0.84238768],
[0.99076822, 0.00121227, 0.50601336, 0.86928593],
[0.30585267, 0.31468865, 0.51912956, 0.46615278]])
>>> # bilangan acak berdistribusi normal standar
>>> #4 baris, 3 kolom
>>> np.random.randn(4,3)
array([[ 0.32255401, -0.05512011, -0.25729875],
[-0.48845758, 1.40511175, -0.30961008],
[-0.07942373, -0.65570731, -0.32809549],
[ 0.58905476, -1.05215062, 0.30199799]])

Matriks/array khusus

>>> # matriks/array berisikan bilangan nol


>>> np.zeros((3,2))
array([[0., 0.],
[0., 0.],
[0., 0.]])
>>> # matriks/array berisikan bilangan satu
>>> np.ones((4,7))
array([[1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1.]])
>>> #matriks identitas
>>> np.eye(4)
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
>>> #matriks diagonal
>>> np.diag([1,2,3,4])
array([[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]])
latihan

1. Buatlah program untuk menghasilkan list berupa barisan (barisan bi-


langan real) spesial yang berbeda dengan teman sekelas. Kemudian
buatlah barisan tersebut dengan menggunakan pengulangan. Sajikan
barisan tersebut dalam sebuah list.

2. Diketahui barisan
xn = xn−1 − 0.2xn−1

untuk n = 1, 2, 3, · · · , 20. Apabila diberikan x0 = 10, buatlah program


yang menghasilkan sebuah list yang memuat hasil perhitungan untuk
seluruh n, yakni
[ x0 , x1 , x2 , x3 , · · · , x19 , x20 ]

3. Ulangilah latihan nomor 2 dengan input berupa integer n dari peng-


guna

4. Barisan Collatz adalah barisan yang dibangun secara iteratif (berulang


menggunakan informasi langkah sebelumnya). Berikut adalah algori-
tmanya
Deklarasi x0 = c (suatu bilangan bulat/int)
Untuk n = 0, 1, 2, · · · , 9
Jika xn genap maka xn+1 = x2n
Jika xn ganjil maka xn+1 = 3xn + 1
Buatlah sebuah list yang berisikan barisan Collatz yakni

[ x0 , x1 , x2 , x3 , · · · , x9 , x10 ]

Referensi: Youtube Veritasium - The Simplest Math Problem No One


Can Solve - Collatz Conjecture
6
SUBPROGRAM

Pada modul-modul sebelumnya telah dibahas subprogram-subprogram


program bawaan Python. Subprogram seperti namanya berarti merupakan
bagian dari program yang lebih besar yang dapat digunakan berulang ka-
li. Beberapa subprogram yang telah dikenal dan sering digunakan adalah
print(), list(), type(), dan lain sebagainya. Masing-masing subprogram
tersebut menjalankan perintah-perintah khusus sesuai dengan kegunaan-
nya. Kesamaan dari semuanya adalah membutuhkan input atau masukan
agar menghasilkan/memberikan yang diharapkan oleh pemrogram.

Secara umum terdapat dua jenis subprogram yakni subroutine dan fun-
ction. Terkadang keduanya sering digunakan untuk menyatakan hal yang
sama. Subprogram yang melakukan perintah tanpa mengembalikan nilai
disebut subroutine. Contoh dari subroutine adalah print(). Subprogram
ini akan menjalankan perintah untuk menampilkan nilai dari input yang
diberikan oleh pengguna. Perhatikan baris perintah berikut

>>> x = print('Halo dunia')


Halo dunia
>>> print(x)
None

Pada perintah di atas sebagaimana yang diharapkan, fungsi print mencetak


string ’Halo dunia’. Kemudian, dengan sengaja variabel x diminta untuk
menyimpan nilai print(’Halo dunia’). Tetapi saat variabel x dicetak de-
ngan fungsi print diperoleh hasil None. Hal ini dikarenakan fungsi print
merupakan subprogram yang tidak mengembalikan nilai.

Subprogram yang mengembalikan nilai biasa dikenal sebagai function.


Dalam beberapa literatur istilah subroutine sudah mulai jarang digunakan.
Untuk selanjutnya dalam modul ini akan digunakan istilah fungsi untuk
menyebut subprogram. Contoh dari fungsi bawaan Python adalah list().
Perhatikan baris perintah berikut

>>> y = list('Halo dunia')


>>> print(y)
['H', 'a', 'l', 'o', ' ', 'd', 'u', 'n', 'i', 'a']
Hasil luaran fungsi list() sengaja disimpan dalam variabel y. Perhatikan
bahwa pada baris tersebut tidak terjadi apa-apa kecuali menyimpan nilai
saja. Kemudian saat variabel y dicetak dengan fungsi print diperoleh ha-
sil berupa list dari string ’Halo dunia’. Hal ini dikarenakan fungsi print
merupakan subprogram yang mengembalikan nilai.

6.1 fungsi yang didefinisikan

Bahasa pemrograman Python menyediakan cara agar pemrogram da-


pat membuat sendiri sebuah fungsi sesuai dengan yang dikehendaki atau
biasa dikenal sebagai user-defined function. Fungsi dapat dibuat dengan me-
nuliskan def pada awal perintah lalu diikuti dengan nama fungsi tersebut
dan argumennya. Argumen ini dapat diisi atau juga dikosongkan, sekali
lagi bergantung kebutuhan dari pemrogram. Seperti biasa, Python mengha-
ruskan pemrogram untuk membuat blok program dalam indentation yang
sama (menjorok ke kanan). Beikut adalah ilustrasi untuk membuat sebuah
fungsi dalam Python

def namaFungsi(argumenJikaPerlu):
blok program

Program di atas adalah tata cara untuk mendefinisikan sebuah program


yang bernama namaFungsi. Untuk penamaan fungsi, pemrograman diper-
kenankan untuk membuat nama sesuai dengan yang dikehendaki dan de-
ngan aturan yang berlaku sama seperti penamaan variabel. Fungsi tersebut
akan menerima sebuah argumen yakni argumenJikaPerlu. Argumen ini
opsional, karena sebuah fungsi bisa saja tanpa argumen. Kemudian fungsi
tersebut akan menjalankan perintah-perintah pada blok program.

6.1.1 Fungsi tanpa argumen

>>> def sayHello():


... print('Halo dunia')
...
>>> type(sayHello)
<class 'function'>
>>> sayHello
<function sayHello at 0x7fda2eb27ee0>
>>> sayHello()
Halo dunia

6.1.2 Fungsi dengan argumen


>>> def karakter(teks):
... L = len(teks)
... print(L)
...
>>> type(karakter)
<class 'function'>
>>> karakter
<function karakter at 0x7fda2eb27e50>
>>> karakter('Halo dunia')
10

6.1.3 Fungsi yang mengembalikan nilai

>>> def kuadrat(x):


... K = x**2
... return K
...
>>> type(kuadrat)
<class 'function'>
>>> kuadrat
<function kuadrat at 0x7fda2eb27dc0>
>>> hasil = kuadrat(4)
>>> print(hasil)
16

Simbol x dalam fungsi kuadrat() disebut argumen.

6.1.4 Fungsi yang mengembalikan nilai lebih dari satu

>>> def nextNum(nilai):


... return nilai+1, nilai+2, nilai+3
...
>>> type(nextNum)
<class 'function'>
>>> nextNum
<function nextNum at 0x7fda2ea06d30>
>>> hasil2 = nextNum(4)
>>> type(hasil2)
<class 'tuple'>
>>> print(hasil2)
(5, 6, 7)
6.1.5 Fungsi dengan argument baku

Dalam pendefinisian fungsi, dapat dibuat sebuah argumen yang baku


(bawaan). Maksudnya jika pengguna tidak memberikan argumen maka ak-
an digunakan argumen bawaan. Misalnya

>>> def say(word, name='user'):


... print(word + name)
...
>>> say('hai ')
hai user
>>> say('hai ', 'kamu')
hai kamu
>>> say('tabik ', 'puuun')
tabik puuun

6.2 fungsi lambda

Dalam pendefinisian fungsi terkadang diperlukan setidaknya satu baris


tambahan untuk aksi/isi dari fungsi tersebut. Terdapat cara lain yang lebih
ringkas untuk mendefinisikan fungsi yakni dengan fungsi lambda. Dengan
fungsi lambda, penulisan sebuah fungsi sederhana menjadi lebih ringkas.
Berikut adalah contoh format penulisan

lambda argumentBolehLebihDariSatu: ekspresi

Karena formatnya yang sederhana ini, biasanya fungsi lambda dikenal se-
bagai fungsi anonim. Dalam pendefinisian fungsi lambda tidak diperlukan
penamaan. Fungsi lambda cukup cocok apabila digunakan untuk sesekali
saja. Sebagai contoh

>>> print('Masukkan bilangan bulat')


Masukkan bilangan bulat
>>> bilangan = 6
>>> (lambda x : x**2)(bilangan)
36
>>> #Fungsi lambda dapat diassign ke sebuah variabel agar mudah
>>> fKuadrat = lambda x : x**2
>>> fKuadrat(bilangan)
36

Program di atas menjadikan bilangan sebagai input dari fungsi yang meng-
hitung nilai kuadrat. Karena fungsi tersebut tidak bernama sehingga pengo-
perasiannya harus melibatkan tanda kurung () agar menjadi satu kesatuan
perintah. Kemudian untuk memudahkan penulisan, pada baris lima fungsi
lambda diassign ke sebuah variabel bernama fKuadrat. Dapat diamati bah-
wa penerapannya jadi lebih mudah karena fungsi lambda tersebut dapat
dipandang selayaknya fungsi def.
6.2.1 Penggunaan Fungsi Lambda dengan map()

Kadang fungsi lambda digunakan untuk perintah-perintah sederhana


yang ringkas, sebagai contoh untuk membuat list berisikan 2 kali list semula.
Perhatikan contoh berikut
>>> listBilangan = [1,2,3,4,5,6,7,8,9]
>>> kaliDua = map(lambda x: 2*x, listBilangan)
>>> list(kaliDua)
[2, 4, 6, 8, 10, 12, 14, 16, 18]

Amati bahwa dapat diperoleh list hasil perkalian elemen list dengan bilang-
an bulat. Pada modul sebelumnya, telah diperlihatkan bahwa fungsi list
apabila dikalikan dengan bilangan bulat akan memberikan list baru dengan
isi duplikasi dari list sebelumnya.

6.2.2 Fungsi Lambda dengan Banyak Argumen

Perhatikan fungsi anonim berikut

>>> lambda x, y: x + y
<function <lambda> at 0x7fda2eb35160>
>>> _(4,18)
22

Dapat dilihat bahwa karena fungsi lambda yang anonim, cukup unik bahwa
dapat dipanggil dengan menggunakan karakter underscore. Perlu diperha-
tikan bahwa hal tersebut hanya bisa diimplementasikan sekali saja. Apabila
dilakukan lagi maka akan menghasilkan error.

6.3 rekursi

Rekursi adalah pendefinisian dengan terminologi dirinya sendiri. Se-


bagai ilustrasi, misalkan terdapat dua cermin yang diletakkan saling ber-
hadapan. Cermin tersebut akan saling merefleksinya satu sama lain, dan
begitu seterusnya. Berikut adalah struktur rekursi dalam Python

def fungsiRekursi(argumenJikaPerlu):
fungsiRekursi(argumenJikaPerlu)

Pada modul sebelumnya telah dibahas mengenai barisan Fibonacci yang


dibentuk dari pengulangan. Barisan ini dapat dibuat dengan memanfaatkan
rekursi.
>>> def fib(num):
... if num <= 1:
... return num
... else:
... return fib(num-1) + fib(num-2)
...
>>> fib(4)
3
7
MODUL

7.1 math

Berikut adalah contoh menghitung ln 2

>>> import math


>>> print(math.log(2))
0.6931471805599453

7.2 numpy

NumPy adalah modul Python (paket yang berisikan sekumpulan pro-


gram) yang banyak digunakan dalam komputasi ilmiah. Isinya antara lain:

1. array numerik N-dimensi

2. fungsi terkait perhitungan matematika seperti aljabar linier, transfor-


masi Fourier, dan bilangan acak

3. fungsi-fungsi atau perangkat-perangkat yang dirancang dengan opti-


mal dan efisien.

Modul numpy tidak secara bawaan terinstall dalam Python.

>>> import numpy as np


>>> print(np.log(2))
0.6931471805599453

7.2.1 Numpy array

Numpy array pada dasarnya adalah sequence seperti list yang berisikan
tipe data yang sama. Artinya numpy array hanya bisa menangani satu buat
tipe saja misal numerik atau string. Ada beberapa cara untuk membuat
numpy array baru, misalnya dari

1. list atau tuple

2. menggunakan fungsi bawaan numpyseperti arange, linspace, dll.

3. membaca data dari file


Membuat numpy array dari list atau tuple yakni dengan perintah np.array()

>>> listSaya = [2,23,1.3,3,4,-1,2]


>>> print(listSaya)
[2, 23, 1.3, 3, 4, -1, 2]
>>> arraySaya = np.array(listSaya)
>>> type(arraySaya)
<class 'numpy.ndarray'>
>>> print(arraySaya)
[ 2. 23. 1.3 3. 4. -1. 2. ]

>>> tupleSaya = -100,20,34


>>> arrayDariTuple = np.array(tupleSaya)
>>> print(arrayDariTuple)
[-100 20 34]

Membuat matriks dari list bersarang

>>> listBersarang = [[1,2],[3,4]]


>>> print(listBersarang)
[[1, 2], [3, 4]]
>>> matriksSaya = np.array(listBersarang)
>>> print(matriksSaya)
[[1 2]
[3 4]]

Matriks dan array dipandang sebagai tipe yang sama

>>> type(arraySaya)
<class 'numpy.ndarray'>
>>> type(matriksSaya)
<class 'numpy.ndarray'>

Membuat array dengan fungsi bawaan numpy arange

>>> start = 0
>>> stop = 1
>>> step = 0.1
>>> np.arange(start, stop, step)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

Membuat array dengan fungsi bawaan numpy linspace

>>> start = 0
>>> stop = 1
>>> num = 11
>>> np.linspace(start, stop, num)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

Membangkitkan bilangan acak dengan fungsi dalam numpy

>>> # bilangan acak berdistribusi seragam pada interval [0,1]


>>> #3 baris, 4 kolom
>>> np.random.rand(3,4)
array([[0.99879495, 0.61396198, 0.17837352, 0.15356466],
[0.19727558, 0.22846412, 0.0082348 , 0.58494476],
[0.51541418, 0.17498255, 0.74187538, 0.47811056]])
>>> # bilangan acak berdistribusi normal standar
>>> #4 baris, 3 kolom
>>> np.random.randn(4,3)
array([[-1.67895004, -0.7118014 , -1.33581906],
[-0.71926241, 0.95339428, 0.48373511],
[ 0.0201415 , -0.41568522, 1.55967 ],
[-2.12319956, -0.56388579, 2.76106878]])

Matriks/array khusus

>>> # matriks/array berisikan bilangan nol


>>> np.zeros((2,3))
array([[0., 0., 0.],
[0., 0., 0.]])
>>> # matriks/array berisikan bilangan satu
>>> np.ones((3,7))
array([[1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1.]])
>>> #matriks identitas
>>> np.eye(4)
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
>>> #matriks diagonal
>>> np.diag([1,2,3,4])
array([[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]])

7.2.2 s
APPENDIX CHAPTER

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida
mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, mag-
na. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique
senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras
viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultri-
ces. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est,
iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget
risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis
eget orci sit amet orci dignissim rutrum.

.1 a section

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida
mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, mag-
na. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique
senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras
viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultri-
ces. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est,
iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget
risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis
eget orci sit amet orci dignissim rutrum.

Anda mungkin juga menyukai