UNCHDIPSS/ praktikum Daspro
Praktikumpython dasar Programming Universitas Diponegoro Semester 1
- Published On
← back to me blog
NAMA FILE : Praktikum 1.py
Deskropsi : Menghitung nilai pangkat
Taggal : 27 Agustus 2024
Pemuat : myudakk - NIM
buku/pdf/link etc
- DIKTAT KULIAH_DASAR PEMROGRAMAN_Bagian : Pemrograman Fungsional
- Prakikum 1 -_Ekspresi_Fungsional_Dasar
- https://github.com/myudak/praktikum_undip_daspro/tree/main
btw kalo ada salah dm ae
CONTOH =>
komen
LATIHAN ==>>
day1 github https://github.com/myudak/praktikum_undip_daspro/tree/main/day1
Terjemakanlah contoh notasi fungsional pada Diktat berikut ke dalam bahasa pemrograman Python (perhatikan aturan standar penulisan program):
1. Contoh-4 Ekspresi numeric: Mean Olympique (MO)
Definisikan sebuah fungsi yang menerima 4 bilangan bulat positif, menghasilkan harga rata-rata dari dua di antara empat buah bilangan tersebut, dengan mengabaikan nilai terbesar dan nilai terkecil.
Contoh :
- Input: 10, 8, 12, 14 → Output: 11
- Input: 12, 12, 12, 12 → Output: 12
ATAU
2. Contoh-5 Ekspresi Boolean: POSITIF
Buatlah definisi, spesifikasi dan realisasi dari sebuah predikat yang menerima sebuah bilangan bulat dan bernilai benar jika bilangan tersebut positif. Lebih spesifik : menghasilkan sebuah nilai boolean yang bernilai true jika bilangan tersebut positif, atau false jika bilangan tersebut negatif.
3. Contoh-6 Ekspresi Boolean: APAKAH HURUF A
Buatlah definisi, spesifikasi dan realisasi dari sebuah predikat yang menerima sebuah karakter dan bernilai benar jika karakter tersebut adalah huruf ‘A’.
4. Contoh-7 Ekspresi Boolean: APAKAH VALID
Buatlah definisi, spesifikasi dan realisasi dari sebuah predikat yang menerima sebuah besaran integer, dan menentukan apakah bilangan tersebut valid. Bilangan disebut valid jika nilainya lebih kecil dari 5 atau lebih besar dari 500. Jadi bilangan di antara 5 dan 500 tidak valid.
5. Ekspresi numeric: Least Square (Jarak 2 Titik)
Buatlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menrima empat buah bilangan riil yang pengertiannya adalah dua pasang titik pada koordinat kartesian, dan menghasilkan sebuah bilangan riil yang merupakan jarak dari kedua titik tersebut (atau panjang garis yang dibentuk oleh kedua titik tersebut), dengan melakukan aplikasi terhadap dua buah fungsi antara yang harus didefinisikan terlebih dulu sebagai berikut :
dif2 adalah sebuah fungsi yang menerima dua buah bilangan riil dan menghasilkan pangkat dua dari selisih kedua bilangan riil tersebut. Pangkat dua dilakukan oleh fungsi quad yang menerima sebuah bilangan riil dan menghasilkan pangkat dua dari bilangan riil tersebu
EKSPRESI KONDISIONAL
IL/Diktat IF1281 Dasar Pemrograman/Bagian I - Notasi Fungsional.doc – Page 29 of 127
1. Contoh-1 Ekspresi kondisional : MAKSIMUM 2 NILAI
Buatlah definisi, spesifikasi dan realisasi dari fungsi yang menghasilkan nilai maksimum dari dua buah nilai integer yang diberikan
2. Contoh-2 Ekspresi kondisional : MAKSIMUM 3 NILAI
Buatlah definisi, spesifikasi dan realisasi dari fungsi yang menghasilkan nilai maksimum dari tiga buah nilai integer yang berlainan.
ATAU
3. Contoh3 Ekspresi kondisional : PENANGGALAN
Tanggal, bulan dan tahun pada perioda tahun 1900 s/d 1999 dapat dituliskan dalam "tuple" dari tiga buah bilangan integer < d,m,y > sebagai berikut :
- < 3,4,93 > : hari ke 3, pada bulan ke 4 (April), pada tahun 1993
Hitunglah hari ke... pada suatu tahun 1900+y mula-mula tanpa memperhitungkan adanya tahun kabisat, kemudian dengan memperhitungkan tahun kabisat.
Contoh :
- < 1,1,82 > → 1
- < 31,12,72 > → 366
- < 3,4,93 > → 93
TYPE BENTUKAN
(Produk, Type Komposisi, Type Terstruktur)
IL/Diktat IF1281 Dasar Pemrograman/Bagian I - Notasi Fungsional.doc – Page 37 of 127
Kasus 1 : Type POINT
Didefinisikan suatu type bernama Point, yang mewakili suatu titik dalam koordinat kartesian, terdiri dari absis dan ordinat. Berikut ini adalah teks dalam notasi fungsional untuk type Point tersebut, dengan selektor yang hanya dituliskan dalam bentuk fungsi.
Kasus-2: Type PECAHAN
Didefinisikan suatu type bernama Pecahan, yang terdiri dari pembilang dan penyebut. Berikut ini adalah teks dalam notasi fungsional untuk type pecahan tersebut. Perhatikanlah bahwa realisasi fungsi hanya dilakukan untuk operator aritmatika dan relasional terhadap pecahan. Realisasi selektor hanya diberikan secara konseptual, karena nantinya akan diserahkan implementasinya ke bahasa pemrograman
KASUS-3 : PENANGGALAN
Didefinisikan suatu type Date yang terdiri dari thari, bulan dan tahun dan membentuk komposisi < Hr,Bln,Thn >. Dalam contoh ini, sebuah nama type bukan merupakan nama type bentukan, melainkan sebuah subdomain (sebagian dari nilai domain). Penamaan semacam ini akan mempermudah pembacaan teks
Fungsi dengan range type bentukan tanpa nama
Pada contoh yang diberikan di atas, semua type bentukan diberi nama. Pemberian nama type akan berguna jika type tersebut dipakai berkali-kali dan memang membutuhkan operator untuk mengoperasikan nilai-nilainya. Bahkan seringkali, diperlukan fungsi yang menghasilkan suatu nilai bertype komposisi, tanpa perlu mendefinisikan nama tsb (jika kita mendefinisikan nama, maka kita wajib membuat konstruktor, selektor, dsb yang pernah dijelaskan). Nama type tidak perlu didefinisikan misalnya karena kita harus merancang suatu fungsi yang hanya di-aplikasi sekali untuk menghasilkan beberapa nilai yang komposisinya mengandung arti.
Kasus : Ekivalensi detik de jam, menit, detik
Diberikan sebuah besaran integer positif yang mewakili nilai detik, tuliskanlah sebuah fungsi HHMMDD yang memberikan nilai hari, jam, m, detik dari besaran detik tersebut.
- Contoh: Diberikan 309639, menghasilkan < 3,14,0,39 >
Range dari HHMMDD tipe bentukan yang kebetulan terdiri 4 buah integer. Pada kasus lain, mungkin sebenarnya dapat juga berbeda-beda, misalnya kalau terdefinisi type Hr, Bln, Th seperti pada contoh DATE.
Realisasi fungsi ini membutuhkan sebuah fungsi yang mampu untuk menghitung hasil dan sekaligus sisa pembagian bulat dari dua buah bilangan integer yang dinamakan QR Range dari QR adalah sebuah pasangan nilai integer (type terkomposisi) namun tidak diberi nama
TABEL
Contoh 1: Pemakaian tabel : Persoalan : Harike dari suatu tanggal
Tuliskanlah sebuah fungsi yang menerima sebuah tanggal < d,m,y > dan menghasilkan Harike pada tanggal tersebut, terhitung mulai 1 Januari tahun yang bersangkutan. Contoh masukan dan hasil :
- < 1,1,1993 > → 1
- < 4,2,1979 > → 35
- < 31,12,1935 > → 365
EKSPRESI REKURSIF
IL/Diktat IF1281 Dasar Pemrograman/Bagian I - Notasi Fungsional.doc – Page 53 of 127
Definisi entitas (type, fungsi) disebut rekursif jika definisi tersebut mengandung terminologi dirinya sendiri.
Ekspresi rekursif dalam pemrograman fungsional didasari oleh Analisa rekurens, yaitu penalaran berdasarkan definisi fungsi rekursif, yang biasanya juga berdasarkan “type” yang juga terdefinisi secara rekursif-induktif.
Contoh-1 Ekspresi rekursif : FACTORIAL
Tuliskanlah sebuah fungsi yang menghitung factorial dari n sesuai dengan definisi rekursif faktorial.
Contoh-3 Ekspresi rekursif : FIBONACCI
Tuliskanlah sebuah fungsi yang menghitung Fibonacci dari n , dengan definisi rekursif fungsi Fibonacci.:
Ekspresi Rekursif terhadap Bilangan bulat
Pada bagian ini akan diberkan contoh, bagaimana menuliskan ekspresi rekursif yang dibangun berdasarkan analisa rekurens, terhadap bilangan integer, untuk merealisasi penjumlahan, perkalian dan pemangkatan bilangan integer.
Contoh yang dibahas dalam sub bab ini hanyalah memberikan pola berpikir rekursif terhadap type sederhana (integer). Dalam kenyataannya, memang pemrogram tidak menuliskan lagi fungsi rekursif untuk penjumlahan, pengurangan, pembagian karena sudah dianggap operator dasar.
Contoh-1 Penjumlahan bilangan bulat dengan ekspresi rekursif
Tuliskanlah sebuah fungsi yang menjumlahkan dua buah integer, dan menghasilkan sebuah integer, dengan membuat definisi rekursif dari penjumlahan
Contoh-2 Perkalian bilangan bulat dengan ekspresi rekursif
Tuliskanlah definisi, spesifikasi dan realisasi sebuah fungsi yang mengalikan dua buah integer, dan menghasilkan sebuah integer, dengan membuat definisi rekursif dari perkalian.
Contoh-2 Pemangkatan bilangan bulat dengan ekspresi rekursif
Tuliskanlah definisi, spesifikasi dan realisasi sebuah fungsi yang memangkatkan sebuah integer dengan sebuah integer, dan menghasilkan sebuah integer, dengan membuat definisi rekursif dari pemangkatan.
LIST
IL/Diktat IF1281 Dasar Pemrograman/Bagian I - Notasi Fungsional.doc – Page 63 of 127
Definisi
LIST adalah sekumpulan elemen list yang bertype sama. Jadi list adalah koleksi objek. Elemen list mempunyai keterurutan tertentu (elemen-ke…, ada pengertian suksesor, predesesor), nilai satu elemen boleh muncul lebih dari satu kali.
Contoh1 : Banyaknya elemen sebuah list
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menghasilkan banyaknya elemen sebuah list. Contoh aplikasi dan hasilnya:
- NbElmt ([ ]) = 0 ; NBElmt ([ a, b, c]) = 3
Contoh 2: keanggotaan elemen
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah predikat yang memeriksa apakah sebuah elemen x merupakan anggota dari list. Contoh aplikasi dan hasilnya:
- IsMember (x, [ ]) = false; IsMember (x, [a, b, c] ) = false
- IsMember (b, [a, b, c] ) = true
Contoh 3 : menyalin sebuah list
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menghasilkan salinan (copy) dari sebuah list, yaitu semua elemennya sama. Contoh aplikasi dan hasilnya adalah :
- Copy ( [ ]) = [ ]; Copy ([a, b, c] ) = [a, b, c]
Contoh 4: Membalik sebuah list
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menerima sebuah list, dan menghasiilkan list yang urutan elemennya terbalik dibandingkan urutan elemen pada list masukan. Contoh aplikasi dan hasilnya:
- Inverse ( [ ] ) = [ ] ; Inverse ([a, b, c] ) = [c, b, a]
Contoh 5: Kesamaan dua buah list
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah predikat yang memeriksa apakahdua buah elemen list sama. Dua buah list sama jika semua elemennya sama, dan urutan kemunculannya sama.. Contoh aplikasi dan hasilnya:
- IsEqual ([], [ ]) = true ; IsEqual ([], [a ]) = false;
- IsEqual([a,b,c], [a, b, c] ) = true
Contoh 6: Elemen ke N sebuah list
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menghasilkan elemen ke N dari sebuah list. N lebih besar dari Nol, dan list tidak boleh kosong dan N ≤ banyaknya elemen list. . Contoh aplikasi dan hasilnya:
- ElmtKeN (0, [] ) = tidak terdefinisi karena list kosong tidak dapat menghasilkan elemen;
- maka analisa rekurens harus berbasis satu dan list tidak kosong
- ElmtKeN (1, [a,b,c] ) = a; Rekurens dilakukan terhadap N, dan juga terhadap list:
Contoh 7: Konkatenasi dua buah list
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menerima dua buah list, dan menghasilkan konkatenasi dari kedua list tersebut. Contoh aplikasi dan hasilnya:
- Concat ([ ], [ ]) = [ ]; Concat ([a], [b,c]) = [a,b,c]
Contoh 8: Apakah banyaknya elemen sebuah list adalah N
Tuliskanlah definisi, spesifikasi dan relaisasi sebuah predikat yang memeriksa apakah banyaknya elemen sebuah list = N, dengan N>=0. Contoh aplikasi dan hasilnya:
- IsNBElmtN (0,[]) = true ; IsNBElmtN (3,[a,b,c]) = true;
- IsNBElmtN (0,[a]) = false
Contoh 9: Apakah X adalah Elemen ke N sebuah list
Tuliskanlah sebuah predikat yang memeriksa apakah X adalah elemen ke N dari sebuah list. N lebih besar dari Nol, dan list tidak boleh kosong. N positif, dan bernilai 1 s/d banyaknya elemen list
Contoh 10: Apakah inverse
Tuliskanlah definisi, spesifikasi dan realisasi dari dari sebuah predikat yang memeriksa apakah sebuah list adalah inverse dari list lain
List of Character (Teks)
Teks adalah list yang elemennya terdiri dari karakter. Karakter adalah himpunan terhingga dari ‘a’..’z’, ‘A..’Z’, ‘0..9’
Contoh-1 Teks : Hitung A
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menghitung kemunculan huruf ‘a’ pada suatu teks.
Contoh-2 Teks : Banyaknya kemunculan suatu karakter pada teks T
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang menghitung banyaknya kemunculan sebuah karakter dalam teks.
Himpunan (Set)
Definisi: Himpunan (set) adalah sebuah list yang setiap elemennya hanya muncul sekali (unik). List "kosong" adalah himpunan kosong. Contoh :
[apel, jeruk, pisang]
adalah himpunan
[apel, jeruk, mangga, jeruk]
bukan himpunan
Contoh 1: Menghapus SEBUAH elemen sebagai anggota list
Predikat ini dibutuhkan untuk membentuk himpunan
Contoh 2: Menghapus SEMUA elemen e sebagai anggota list :
Contoh 3: Mentest apakah sebuah list adalah himpunan
Contoh 4: Membuat sebuah set dari sebuah list
Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah fungsi yang akan membentuk sebuah Himpunan dari elemen-elemennya, yaitu dengan meniadakan duplikasi elemen
Contoh 5: Mentest apakah sebuah set merupakan subset dari set yang lain
sisanya liat di github aj
List of List (List List [[]])
Definisi Rekursif List of List
List of list adalah sebuah list yang:
- Mungkin kosong,
- Mungkin terdiri dari sebuah elemen yang disebut atom dan sisanya adalah list of list,
- Mungkin terdiri dari sebuah elemen berupa list dan sisanya adalah list of list.
Jadi, List of List adalah sebuah list S
yang elemennya adalah list. Dalam bahasa LISP, tipe ini disebut sebagai S-expression.
Membedakan Antara List dan Atom
- List dituliskan di antara tanda kurung
()
. - Atom dituliskan tanpa tanda kurung.
Contoh List
[]
adalah list kosong.[ad, a, b]
adalah list dengan elemen berupa 3 atom.[[], [a, b, c], [d, e], f]
adalah list yang berisi:- sebuah list kosong,
L1
(sebuah list dengan 3 atom yaitua
,b
, danc
),L2
(sebuah list dengan 2 atom yaitud
dane
),- dan sebuah atom
f
.
Konstruktor dan Selektor
Untuk list khusus ini, nama konstruktor dan selektor tidak dibedakan dengan list yang hanya mengandung elemen dasar. Namun, diperlukan predikat tambahan untuk menentukan apakah sebuah ekspresi adalah Atom atau List.
Jenis Atom
Atom dapat berupa:
- Atom numerik (dapat digunakan sebagai operan dalam ekspresi aritmatika),
- Atom simbolik.
TYPE LIST-OF-LIST
DEFINISI DAN SPESIFIKASI PREDIKAT KHUSUS UNTUK LIST OF LIST
DEFINISI DAN SPESIFIKASI KONSTRUKTOR
DEFINISI DAN SPESIFIKASI SELEKTOR
Contoh-1 : Mencek kesamaan dua buah list of list:
Persoalan: Tuliskanlah definisi, spesifikasi dan realisasi dari sebuah predikat yang mencek kesamaan dua buah list of list
Contoh-2 : Contoh-2 : Mencek apakah sebuah atom merupakan elemen sebuah list yang elemennya list:
IsMemberS(A,S)