# Bab 1. Elemen-Elemen Pemrograman
**OBJEKTIF:**
1. Mahasiswa Mampu Memahami Bahasa Pemrograman.
2. Mahasiswa Mampu Memulai Pemrograman dengan Python.
3. Mahasiswa Mampu Memahami Python digunakan sebagai Kalkulator.
4. Mahasiswa Mampu Memahami Nilai dan Tipe Data pada Python.
5. Mahasiswa Mampu Memahami Variabel pada Python.
5. Mahasiswa Mampu Memahami Ekspresi pada Python.
5. Mahasiswa Mampu Memahami *Statement Assignment* pada Python.
5. Mahasiswa Mampu Memahami Fungsi *Built-in* pada Python.
---
## 1.1 Bahasa Pemrograman
Program adalah rangkaian instruksi-instruksi yang dieksekusi oleh komputer untuk mengerjakan tugas tertentu. Instruksi ini harus ditulis dalam bahasa yang dimengerti komputer yaitu **bahasa mesin**. Bahasa mesin adalah bahasa yang kosakatanya dalam bilangan biner (bilangan yang terdiri dari angka 0 dan 1). Gambar berikut adalah ilustrasi bahasa mesin.

Untuk menuliskan program dalam bahasa mesin sangatlah sulit. Dahulu di generasi awal komputer, programmer melakukannya. Oleh karena sulitnya menulis sebuah program dalam bahasa mesin, ilmuwan komputer menciptakan bahasa-bahasa pemrograman yang mudah dipahami dan mudah ditulis oleh manusia yang disebut dengan **bahasa pemrograman high-level**. Python adalah salah satu contoh dari bahasa pemrograman high-level. Bahasa pemrograman high-level lainnya antara lain adalah C, C++, Java, JavaSciprt, Ruby, Perl, Scheme, atau BASIC.
Program yang ditulis dalam bahasa pemrograman *high-level* tetap harus diterjemahkan ke bahasa mesin untuk dapat dieksekusi oleh komputer. Masing-masing bahasa pemrograman *high-level* mempunyai program penerjemah yang menerjemahkan program dalam bahasa pemrograman *high-level* ke bahasa mesin.
### 1.1.1 Bahasa Pemrograman *High-Level*
Setiap bahasa pemrograman high-level mempunyai kosakata dan aturan penulisan tersendiri untuk menuliskan instruksi-instruksi. Dalam bahasa pemrograman high-level, instruksi disebut dengan ***statement*** dan aturan penulisan statement disebut sebagai ***syntax***. Aturan syntax ini membuat seolah bahasa pemrograman seperti sebuah kode untuk menuliskan instruksi-instruksi ke komputer. Oleh karena ini, programmer sering mengatakan program yang mereka buat sebagai kode komputer dan proses menulis program sebagai koding (dari bahasa Inggris *coding*).
Seperti yang telah disebutkan sebelumnya, program yang ditulis dalam bahasa pemrograman high-level harus diterjemahkan ke bahasa mesin untuk dapat dimengerti komputer. Terdapat dua cara untuk menerjemahkan bahasa pemrograman high-level ke bahasa mesin: cara pertama adalah melalui kompilasi dan cara kedua adalah melalui interpreterasi. Bahasa pemrograman seperi C, C++, dan Java adalah bahasa-bahasa pemrograman high-level yang diterjemahkan melalui kompilasi yang juga disebut sebagai bahasa terkompilasi, sedangkan Python adalah bahasa pemrograman high-level yang diterjemahkan melalui interpreterasi yang juga disebut sebagai bahasa terinterpretasi.
#### Bahasa Pemrograman Terkompilasi
Bahasa pemrograman terkompilasi adalah bahasa pemrograman *high-level* yang diterjemahkan dengan compiler. Contoh bahasa pemrograman terkompilasi adalah sebagai berikut:
- C
- C++
- Java
Compiler adalah sebuah program komputer kompleks yang digunakan untuk melakukan proses kompilasi. Compiler menerima file berisi program yang ditulis dalam bahasa pemrograman high-level yang disebut sebagai source code lalu memberikan output berupa file yang berisi program hasil terjemahan dalam bahasa mesin. Program dalam bahasa mesin ini disebut juga sebagai machine code (kode mesin). Gambar di bawah mengilustrasikan proses kompilasi ini.
<img src="https://drive.google.com/uc?id=1HrCDKUvMsu5q7Z-5sHBJu66Q7bJQ9JNa" alt="3" style="zoom:50%;" />
<br/>
<br/>
Dalam bahasa pemrograman yang dikompilasi, kita melakukan kompilasi hanya satu kali untuk mendapatkan file program dalam bahasa mesin (disebut dengan file executable) dan kita dapat menjalankan program dalam file executable berkali-kali tanpa perlu menjalankan kompiler kembali.
Dalam bahasa C kita melakukan kompilasi dengan menjalankan perintah berikut:
```shell
C:> gcc program.c
```
Perintah `gcc program.c` menjalankan compiler untuk menerjemahkan source code `program.c` yang ditulis dalam bahasa C ke bahasa mesin. Kompiler akan memberikan sebuah file executable dalam bahasa mesin dengan nama `program.exe` yang dapat kita jalankan berkali-kali. Kita menjalankan program yang telah dikompilasi tersebut dengan mengetikkan nama file executable pada command prompt:
```
C:> program.exe
```
#### Bahasa Pemrograman Terinterpretasi
Bahasa pemrograman terintepretasi adalah bahasa pemrograman *high-level* yang diterjemahkan dengan interpreter. Dalam bahasa pemrograman terintrepetasi, kita tidak melakukan kompilasi untuk menerjemahkan program ke bahasa mesin, namun kita harus menjalankan intepreter setiap kali kita menjalankan program. Interpreter adalah sebuah program yang dapat menerjemahkan setiap statement dalam source code ke bahasa mesin dan mengeksekusinya secara langsung.
Sebagai contoh, dalam Python, jika kita mempunyai program di dalam file source code bernama `program.py`, untuk menjalankannya kita ketikkan perintah berikut di command prompt:
```
C:> python program.py
```
Gambar berikut mengilustrasikan proses interpretasi dari bahasa pemrograman terintepretasi.

Oleh karena dalam bahasa yang diinterpretasi, penerjemahan program ke bahasa mesin dan eksekusi terjadi langsung saat program dijalankan, program dalam bahasa yang diinterprestasi cenderung lebih lambat dibandingkan dengan program dalam bahasa yang dikompilasi. Namun, perbedaan kecepatan ini tidak akan terlalu terlihat untuk program-program yang ringan.
## 1.2 Memulai Python
Hal yang pertama harus kita lakukan untuk memulai menulis program dalam Bahasa Python adalah dengan menginstalasi interpreter Python. Pertama kita harus meng-*download* interpreter Python di situs Python *python.org*. Terdapat sejumlah versi interpreter Python, kita akan menggunakan versi 3.9.1. Berikut adalah langkah-langkah instalasi intrepreter Python.
**Langkah-langkah Instalasi Python**
1. Buka website Python www.python.org.
<img src="https://drive.google.com/uc?id=1f50E9apncsUqj4NDqyW9e6c7f0CNIfe5" alt="image-20220107150834215" style="zoom:67%;" />
2. Klik tab ‘Downloads’ lalu klik ‘All Release’.

3. Pilih Versi 3.9.1 dan klik ‘Download’.

4. Pilih sesuai sistem operasi dan bit pada perangkat anda. Download dan tunggu sampai proses download selesai.

5. Centang pilihan ‘Add Python 3.9 to PATH’ lalu klik ‘Install Now’ . Tunggu sampai proses instalasi selesai dan bisa digunakan.
File instalasi interpreter Python menyertakan aplikasi IDLE (Integrated Development and Learning Environment). **IDLE** adalah teks editor khusus untuk menulis program Python yang menyertakan berbagai *tools* untuk menjalankan dan menguji program.
### 1.2.1 Menjalankan Interpreter Python
Kita dapat menjalankan interpreter Python dalam dua modus: modus interaktif dan modus script. Pada modus interaktif, kita dapat langsung menuliskan statement-statement Python yang langsung dieskekusi oleh komputer. Gambar berikut adalah window modus interaktif:

Pada modus script, kita menuliskan program pada teks editor yang terdapat dalam IDLE dan menyimpan program tersebut ke sebuah file. Program dalam file dieksekusi ketika kita menjalankan file prrogram tersebut dengan interpreter. Gambar berikut adalah window teks editor yang digunakan untuk menuliskan program Python:

#### Modus Interaktif
Modus interaktif adalah modus default pada IDLE. Ketika kita membuka IDLE, kita akan mendapatkan window shell Python untuk penggunaan modus interaktif. Shell Python ini memungkinkan kita untuk menggunakan interpreter Python secara interaktif. Pada window shell Python ini, kita akan melihat >>> yang disebut prompt Python. Jika kita mengetikkan sebuah statement Python pada prompt Python, interpreter akan langsung mengeksekusi statement tersebut.

Ketikkan statement Python `print('hello world!')` pada prompt Python, interpreter akan mengeksekusi statement tersebut dan hasil eksekusi tersebut, yaitu teks "hello world!", ditampilkan pada baris selanjutnya.

#### Modus Script
Pada modus script, kita menuliskan program Python yang berisi statement-statement Python dalam teks editor yang disediakan IDLE dan menyimpannya ke dalam sebuah file dengan ekstensi .py. Lalu, kita dapat menjalan program tersebut pada command prompt dengan perintah `python <nama_program>.py`. Misalkan jika kita menyimpan program dalam file bernama `nama_program.py` kita dapat menjalankannya dengan perintah berikut:
```
C:\>python nama_program.py
```
Selain menjalankan program pada command prompt, kita juga dapat menjalankan langsung file program pada IDLE.

Berikut adalah langkah-langkah yang mencontohkan penggunaan modus script:
- Buka teks editor dengan mengklik **File > New File**:

- Tuliskan statement Python pada teks editor. Sebagai contoh, ketikkan statement `print('hello world!')`:

- Simpan file tersebut ke sebuah file dengan ekstensi .py dengan mengklik **File > Save** pada window teks editor. Window File Explorer akan terbuka. Simpan ke dalam direktori yang diinginkan dan namakan file sesuai yang diinginkan dengan ekstensi .py.


- Buka CMD dan masuk ke direktori file yang sudah disimpan

- Untuk menjalankan file Python yang sudah tersimpan. Ketikkan `python (nama_file).py`. Hasil eksekusi program (jika ada) akan ditampilkan pada baris berikutnya.

Kita juga dapat langsung menjalankan program Python menggunakan IDLE seperti langkah-langkah berikut:
- Ikuti langkah-langkah pada contoh sebelumnya untuk menuliskan program dalam teks editor dan menyimpannya dalam sebuah file.

- Untuk menjalankan program langsung pada IDLE, klik **Run > Run Module (F5)**. Hasil eksekusi dari program akan ditampilkan di window shell Python.

## 1.3 Python sebagai Kalkulator
Dalam modus interaktif, kita dapat menggunakan shell Python sebagai kalkukator. Kita dapat melakukan operasi aritmatika seperti penjumlahan, pengurangan, perkalian, pembagian, dsb. Misalkan, kita dapat mengetikkan `4 + 13` pada prompt Python dan interpreter Python akan menghitung penjumlahan tersebut dan menampilkan hasilnya pada baris berkutnya.

Operasi penjumlahan seperti `4 + 13` disebut sebagai **ekspresi** dan tanda `+` disebut sebagai **operator**. Semua ekspresi akan dievaluasi ke sebuah nilai oleh interpreter Python. Gambar berikut mengilustrasikan contoh-contoh ekspresi-ekspresi yang diketikkan pada prompt Python.

### 1.3.1 Operator Aritmatika
Operator yang digunakan untuk melakukan operasi aritmatika disebut dengan operator aritmatika. Tabel berikut adalah operator-operator aritmatika dalam Python.
| Operator Aritmatika | Arti |
| ------------------- | ------------------------------------------------------------ |
| + | Penjumlahan |
| - | Pengurangan |
| * | Perkalian |
| / | Pembagian |
| % | Modulus (Sisa hasil bagi)<br />Contoh: `20 % 3` menghasilkan `2` |
| // | Pembagian *floor*. Pembagian yang hasilnya dibulatkan ke bilangan bulat terbesar lebih kecil<br />Contoh: `10 // 3` menghasilkan `3`. |
| ** | Pemangkatan<br />Contoh: `2 ** 3` berarti |
Kita dapat melakukan operasi aritmatika terhadap bilangan desimal

Kita menuliskan angka desimal dengan menggunakan titik sebagai pemisah desimal (semua bahasa pemrograman mengikuti standar Amerika Serikat yang menggunakan titik sebagai pemisah desimal)
Kita dapat melakukan operasi aritmatika terhadap bilangan negatif

Angka negatif ditulis dengan menggunakan operator - sebelum angka tanpa spasi
**Operator Precedence**
Kita dapat menuliskan ekspresi dengan dua atau lebih operator.
```>>> 20 + 4 * 10```
Bagaimana ekspresi di atas dievaluasi? Apakah 20 + 4 dievaluasi terlebih dahulu lalu dikalikan 10? Apakah 4 * 10 dievaluasi terlebih dahulu lalu ditambahkan 20? Ekspresi dengan dua atau lebih operator dievaluasi menurut aturan operator precedence (tingkat keutamaan operator).


Pada tabel terdapat operator-operator dengan tingkat keutamaan yang sama. Bagaimana proses evaluasi ekspresi dengan dua atau lebih operator yang mempunyai tingkat keutamaan sama (misalkan + dan -)?Interpreter mengevaluasinya dari kiri ke kanan.

Kita tidak perlu menghafalkan tingkat keutamaan operator. Kita dapat menggunakan tanda kurung jika kita ingin mengutamakan bagian ekspresi dievaluasi terlebih dahulu.

Selalu gunakan tanda kurung untuk ekspresi yang panjang untuk memudahkan membacanya.
#### 1.4 Nilai dan Tipe Data
Tujuan program komputer adalah memproses informasi. Informasi yang diproses dalam komputer disebut dengan **data**. Setiap data mempunyai nilai dan tipe data. Angka-angka yang kita tuliskan, seperti 3 dan 7.25 adalah **nilai**. Nilai 3 mempunyai tipe data `int` (singkatan dari *integer* yang berarti bilangan bulat). Nilai desimal 7.25 mempunyai tipe data float (singkatan dari *floating point* yang berarti titik mengambang). Dinamakan titik mengambang karena pada bilangan desimal titik pemisah decimal dapat berada diantara digit berapapun. Nilai teks seperti “Hello, world!” mempunyai tipe data str (singkatan dari string yang berarti untaian). Dinamakan untaian karena teks menguntai karakter-karakter. Kita menuliskan nilai tipe data str dengan menuliskan teks di dalam tanda kutip tunggal atau tanda kutip ganda.

Tabel berikut mendaftar tipe-tipe data Python yang sering digunakan:
| Kelompok | Tipe Data | Keterangan | Contoh |
| -------- | --------- | ------------------------------------------------------------ | ------------------------ |
| Numerik | `int` | Integer (bilangan bulat) | 29, -34 |
| | `float` | Floating point (bilangan riil)<br />Dituliskan dalam pecahan desimal dengan tanda titik sebagai pemisah desimal | 3.14, -2.75 |
| Boolean | `bool` | Boolean - tipe data yang hanya dapat bernilai `True` (benar) atau `False` (salah) | True, False |
| Teks | `str` | String (untaian karakter-karakter) | 'AB'<br /> "Hello" '1.4' |
Kita dapat menggunakan statement `type()` untuk mencari tahu tipe data dari suatu data.
```python
>>> type(-34)
<class 'int'>
>>> type(3.14)
<class 'float'>
>>> type(-2.75)
<class 'float'>
>>> type(True)
<class 'bool'>
>>> type('Hello')
<class 'str'>
>>> type('1.4')
<class 'str'>
```
**Tipe Data Menentukan Operasi Terhadapnya**
Kita perlu mengetahui tipe data untuk mengetahui operasi-operasi apa yang dapat dilakukan terhadap tipe data tersebut. Misalnya, operator aritmatika hanya dapat dilakukan terhadap tipe data numerik (`int` dan `float`). Jika kita mencoba melakukan operasi arimatika terhadap data string kita akan mendapatkan error, contohnya seperti berikut ini:
``` python
>>> '12' / '3'
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
'12' / '3'
TypeError: unsupported operand type(s) for /: 'str' and 'str'```
```
Beberapa (tidak semua) operator aritmatika mempunyai arti lain ketika digunakan terhadap string. Misalnya, operator + berarti konkatenasi (menyambung) dua string.
``` >>> '12' + '3'
>>> '12' + '3'
'123'
>>> 'Hello' + 'World'
'HelloWorld'
```
Kita akan membahas operasi-operasi apa saja yang dapat dilakukan terhadap tipe data string pada bab lain.
#### 1.5 Variabel
**Variabel** adalah nama yang diasosiasikan ke suatu nilai. Kita menggunakan variabel untuk menyimpan suatu nilai yang nantinya nilai tersebut dapat kita rujuk. Berikut ilustrasi dalam membuat variabel dalam Python:

Contoh:
```python
>>> panjang = 10
>>> radius = 17.5
>>> pengguna = 'Budi Susilo'
>>> status = True
```
Kita dapat menggunakan statement `print()` untuk mencetak nilai yang disimpan variabel:
```python
>>> panjang = 10
>>> print(panjang)
10
```
*Catatan: Nama variabel ditulis dalam tanda kurung tanpa diapit tanda kutip.*
**Penamaan Variabel**
Kita menamakan variabel mengikuti ketentuan penamaan identifier. **Identifier** (pengidentifikasi) adalah nama yang dipilih programmer untuk menamakan bagian-bagian program seperti variabel, fungsi, class, method, dsb.
Ketentuan penamaan identifier:
- Hanya dapat menggunakan kombinasi huruf kecil (a s.d z), huruf besar (A s.d Z), digit (0 s.d 9), atau garis bawah (underscore) _
- Tidak dimulai dengan angka
- Tidak menggunakan **keyword** (kata-kata yang sudah digunakan dan mempunyai arti tertentu dalam bahasa Python)
Terdapat 36 keyword dalam Python (versi 3.9), yaitu:
| Keyword | | | |
| ---------- | -------- | ------ | ------ |
| False | break | for | not |
| None | class | from | or |
| True | continue | global | pass |
| peg_parser | def | if | raise |
| and | del | import | return |
| as | elif | in | try |
| assert | else | is | while |
| async | except | lambda | with |
Berikut ini contoh-contoh penamaan variabel yang salah dan benar:
| Nama Variabel | Keterangan |
| ------------- | ------------------------------------------------------------ |
| `var1` | Valid |
| `my_number` | Valid |
| `9ball` | Tidak valid, karena identifier tidak boleh dimulai dengan angka |
| `try` | Tidak valid, karena `try` merupakan keyword Python |
| `$_nilai` | Tidak valid, karena identifier tidak boleh menggunakan karakter lain selain huruf, angka, dan _ |
Biasakan untuk menggunakan nama variabel yang menjelaskan nilai yang disimpan. Nama variabel `jumlah_kelulusan_2020` lebih baik daripada hanya menamakan sebuah variabel dengan `x`. Berikut ini adalah konvensi programmer untuk nama variabel:
- Gunakan huruf kecil
- Untuk nama variabel dengan lebih dari satu suku kata, pisahkan masing-masing suku kata dengan garis bawah (_) . Contoh: `nilai_ujian`, `harga_per_unit`
#### 1.6 Ekspresi
**Ekspresi** adalah kombinasi variabel, nilai, dan operator yang dievaluasi ke suatu nilai. Berikut contoh dari sebuah ekspresi:
<img src="https://drive.google.com/uc?id=1xZL9GUMfpaJ4PzzbX5e6GGSfmnhs5O3L" alt="// Gambar 8" style="zoom:50%;" />
**Operator** adalah simbol yang digunakan untuk melakukan operasi tertentu. **Operand** adalah data (variabel / nilai) yang terhadapnya dilakukan operasi tertentu. Ekspresi dievaluasi menghasilkan sebuah nilai.
Contoh lain dari ekspresi (dalam modus interaktif):
```python
>>> y = 5
>>> 2 * y + 5
15
```
Interpreter mengevaluasi ekspresi ini dengan mensubstitusi variabel `y` dengan nilai yang disimpan lalu melakukan kalkulasi.
*Catatan: Pada modus interaktif, ketika kita menuliskan ekspresi pada prompt Python dan menekan ENTER, nilai hasil evaluasi ditampilkan pada baris selanjutnya.*
Variabel yang berdiri sendiri termasuk sebagai sebuah ekspresi, berikut contohnya:
```python
>>> y = 5
>>> y
5
```
Nilai yang berdiri sendiri juga termasuk sebagai sebuah ekspresi, berikut contohnya:
```python
>>> 'Hello'
'Hello'
```
**Ekspresi vs Statement**
Ekspresi berbeda dengan statement; ekspresi dievaluasi ke suatu nilai sedangkan statement dieksekusi untuk melakukan sesuatu. Dalam program, ekspresi tidak ditulis berdiri sendiri namun sebagai bagian dari statement. Misal, kita menuliskan ekspresi pada ruas kanan statement assignment untuk menugaskan sebuah variabel dengan nilai hasil evaluasi ekspresi tersebut:
<img src="https://drive.google.com/uc?id=1eM5gcIIV0bSFbZFKGZj28959DuX6LLwR" alt="// Gambar 9" style="zoom:50%;" />
Misal, kita menuliskan ekspresi pada statement print untuk menampilkan nilainya:
<img src="https://drive.google.com/uc?id=1cF7TSLYgBpiV_Ku7CGRyMJZ4edtGIzqD" alt="// Gambar 10" style="zoom:50%;" />
#### 1.7 Statement Assignment
Statement assignment (penugasan) digunakan untuk membuat variabel dan menugaskannya dengan suatu nilai.
`umur = 25`
Ketika statement assignment di atas dieksekusi, komputer menyimpan nilai 25 ke suatu tempat dalam memori, membuat variabel umur, dan mereferensikan variabel tersebut ke lokasi memori tempat nilai 25 disimpan.

Berikut ini merupakan bentuk umum penulisan statement assignment:

Contoh:

Pada penulisan statement assignment ruas kiri harus berupa variabel:
```python
>>> 25 = umur
SyntaxError: cannot assign to literal
```
**Menugaskan Ulang Variabel dengan Nilai Baru**
Variabel dapat diubah nilainya, oleh karena itu disebut dengan variabel yang berarti peubah. Kita mengubah nilai variabel dengan menugaskannya dengan nilai baru
```python
>>> panjang = 10
>>> panjang = 25
```

**Operator = Bukan Sama Dengan**
Operator assignment (=) dalam pemrograman bukan berarti sama dengan.

**Assignment dengan Variabel yang Sama pada Kedua Ruas**
Kita dapat mempunyai statement assignment yang kedua ruasnya terdapat variabel yang sama:

**Operator Assignment Teraugmentasi**
Kita dapat menyingkat penulisan statement assignment yang kedua ruasnya terdapat variabel yang sama dengan menggunakan operator assignment teraugmentasi.

Semua operator aritmatika mempunyai operator assignment teraugmentasi terkait.
| Operator Assignment Teraugmentasi | Contoh Statement | Statement Ekuivalen |
| --------------------------------- | ---------------- | ------------------- |
| `+=` | `c += 7` | `c = c + 7` |
| `-=` | `d -= 4` | `d = d - 4` |
| `*=` | `e *= 5` | `e = e * 5` |
| `**=` | `f **= 3` | `f = f ** 3` |
| `/= ` | `g /= 2` | `g = g / 2` |
| `//=` | `h //= 2` | `h = h // 2` |
| `%= ` | `i %= 9` | `i = i % 9` |
Dalam Python, variabel dapat ditugaskan ulang dengan tipe data berbeda:
```python
>>> y = 30
>>> print(y)
30
>>> y = 'Hello'
>>> print(y)
Hello
```

**Menugaskan Lebih dari Satu Variabel dengan Nilai Sama**
Kita dapat menugaskan lebih dari satu variabel dengan nilai yang sama dalam satu statement assignment seperti berikut:

Berikut ini bentuk umum statement assignment yang menugaskan lebih dari satu variabel dengan nilai sama:
`<var1> = <var2> = ... = <varn> = <ekspresi>`
**Statement Assignment Simultan**
Kita dapat menuliskan statement assignment simultan yang menugaskan beberapa variabel sekaligus:
`<var1>, <var2>, ..., <varn> = <ekspr1>, <ekspr2>, ..., <eksprn>`
Contoh:
<img src="https://drive.google.com/uc?id=15rVVoNCEAiKRnW12uS1mFl1I07AJW_xb" alt="// Gambar 20" style="zoom:50%;" />
```python
>>> x = 2
>>> y = 4
>>> x, y = y, x
>>> print(x)
4
>>> print(y)
2
```
#### 1.8 Fungsi Built-in
**Fungsi** adalah sekumpulan statement yang melakukan tugas tertentu. Python menyediakan berbagai fungsi yang sudah ditulis sebelumnya, disebut dengan fungsi built-in (fungsi bawaan).

Fungsi mempunyai nama, menerima **argumen**, dan memberikan **nilai** **kembali**
Sebuah fungsi dapat juga menerima lebih dari satu argumen

Untuk menjalankan suatu fungsi, kita **memanggil** fungsi tersebut dengan namanya
<img src="https://drive.google.com/uc?id=1_IPrMlnu5qzoBF646N8ptp-KCvPkQcXV" alt="// Gambar23" style="zoom:50%;" />
**Fungsi Built-in: `abs()`**
Salah satu fungsi built-in Python adalah fungsi `abs()` yang menerima sebuah argumen berupa tipe numerik dan mengembalikan nilai absolut (mutlak) dari argumen. Contoh pemanggilan fungsi `abs()`:
```python
>>> abs(-9)
9
```
Kita dapat juga menuliskan argumen ke fungsi berupa ekspresi:
```python
>>> suhu_siang = 38
>>> suhu_malam = 31
>>> abs(suhu_malam - suhu_siang)
7
```
Dalam menulis program, umumnya kita ingin memanfaatkan nilai kembali dari pemanggilan fungsi, sehingga kita menugaskan nilai kembali ke suatu variabel.
<img src="https://drive.google.com/uc?id=1X1q3mh6PUJfot5gMZbbBCjW2KXJ_7Iy-" alt="// Gambar 24" style="zoom:50%;" />
Karena pemanggilan fungsi mengembalikan suatu nilai, kita dapat menggunakan pemanggilan fungsi dalam ekspresi.
```python
>>> jarak = abs(-9) + abs(25)
>>> print(jarak)
34
```
**Fungsi Built-in: `round()`**
Fungsi built-in Python lainnya adalah fungsi `round()` yang membulatkan nilai floating point ke integer terdekat:
```python
>>> round(3.8)
4
>>> round(3.3)
3
>>> round(3.5)
4
>>> round(-3.3)
-3
>>> round(-3.5)
-4
```
Fungsi `round()` dapat menerima dua argumen, dimana argumen kedua berupa integer yang menentukan presisi pembulatan:
<img src="https://drive.google.com/uc?id=1Pci6onIs52SftK4uMLLEvceA9TMlR7Dc" alt="// Gambar 25" style="zoom:50%;" />
**Fungsi Konversi Data**
Fungsi `int()` digunakan untuk mengkonversi tipe data lain ke tipe data integer. Fungsi `float()` diguankan untuk mengkonversi tipe data lain ke tipe data floating point.
```python
>>> num = int(34.6)
>>> print(num)
34
>>> desimal = float(21)
>>> print(desimal)
21.0
>>> lebar = int('20')
>>> print(lebar)
20
```
**Dokumentasi Fungsi Built-in**
Kita dapat melihat argumen dan nilai kembali suatu fungsi built-in dengan melihat dokumentasinya menggunakan fungsi `help()`.
```python
>>> help(abs)
Help on built-in function abs in module builtins:
abs(x, /)
Return the absolute value of the argument.
```
**Fungsi dengan Side-Effect**
Aksi yang dilakukan oleh fungsi selain mengembalikan nilai disebut dengan **side-effect**.

Salah satu contoh fungsi dengan side-effect adalah fungsi print() yang menampilkan teks ke layar. Contoh lain adalah fungsi `input()` yang digunakan untuk membaca input dari keyboard