SlideShare a Scribd company logo
1 of 19
Latihan
Referensi
• Soal-soal Pemrograman Deklaratif tahun
2012/2013
• Soal-soal Pemrograman Deklaratif oleh Pak
Alfan F. Wicaksono
a. Buatlah datatype dengan nama TreeJalur yang cocok untuk
struktur data dengan contoh visualisasi seperti gambar di atas.
type TreeJalur=
| Lf of bool
| Br of int * TreeJalur * TreeJalur;;
b. Tuliskan representasi internal (concrete syntax) dari representasi
visual contoh diatas sesuai dengan datatype yang telah dibuat tadi.
Br(1, Br(2,
Br(4, Lf false, Lf false),
Lf false),
Br(3,
Br(5, Lf false, Lf false),
Br(6, Lf true, Lf true)));;
c. Buatlah fungsi listLeaves yang menerima sebuah TreeJalur dan menghasilkan
list yang merupakan kumpulan isi dari setiap leaf-nya dari kiri ke kanan. Untuk
contoh TreeJalur seperti diatas, list yang dihasilkan adalah: [false; false; false;
false; false; true; true]
let rec listLeaves = function
| Lf x -> [x]
| Br(v, t1, t2) -> listLeaves(t1) @ listLeaves(t2);;
Dapatkah anda menebak polanya? Kapan sebuah elemen pada leaf adalah true
dan kapan adalah false? Bila sudah dikenali pola-nya, buatlah fungsi isValid,
yang menerima sebuah TreeJalur dan menghasilkan nilai Boolean true jika
TreeJalur tersebut valid mengikuti pola dan false bila tidak.
let rec isValid = function
| (Lf x, acc) -> if ((acc%2=0 && x=true) || (acc%2=1 && x=false)) then true
else false
| (Br(v, t1, t2), acc) -> isValid(t1, acc+v) && isValid(t2, acc+v);;
Untuk tipe data Tree berikut:
type tree<‘a>=
| Lf
| Br of ‘a * tree<‘a> * tree<‘a>
Buatlah sebuah fungsi bernama “oddTree” yang menerima sebuah Tree
dan mengembalikan sebuah list yang berisi elemen-elemen ganjil pada
Tree (urutan bebas);
contoh:
oddTree (Br(1, Br(2, Br(4,Lf,Lf), Br(5,Lf,Lf)), Br(3,Lf,Lf))) hasilnya [1;3;5]
let rec oddTree = function
| Lf -> []
| Br(v, t1, t2) -> if v%2=1 then [v] @ oddTree(t1) @ oddTree(t2)
else oddTree(t1) @ oddTree(t2);;
Untuk tipe data Tree berikut:
type tree=
| Lf of int
| Br of int * tree * tree
Buatlah sebuah fungsi bernama “oddTree” yang menerima sebuah
Tree dan mengembalikan sebuah list yang berisi elemen-elemen
ganjil pada Tree (urutan bebas);
contoh:
oddTree (Br(1, Br(2, Lf 4, Lf 5), Lf 3)) hasilnya [1;3;5]
let rec oddTree = function
| Lf v -> if v%2=1 then [v] else []
| Br(v, t1, t2) -> if v%2=1 then [v] @ oddTree(t1) @ oddTree(t2)
else oddTree(t1) @ oddTree(t2);;
Buatlah fungsi bernama “isFactor” yang menerima dua buah
bilangan bulat dan memberikan nilai true bila bilangan
pertama merupakan faktor dari bilangan kedua.
contoh:
isFactor 3 9 hasilnya true
let isFactor a b = if (b%a=0) then true
else false;;
Buatlah fungsi (rekursif) bernama “casting” yang menerima
sebuah bilangan bulat (integer) dan menghasilkan bilangan
bulat tersebut dalam tipe float.
contoh:
casting 4 hasilnya 4.0
let rec casting a = function
| 0 -> 0.0
| x -> 1.0 + casting(x-1);;
Buatlah fungsi bernama “throwFirstElement” yang
mengembalikan list tanpa elemen pertamanya. Asumsi list
yang dimasukkan bukan list kosong.
contoh:
throwFirstElement [1;2;3] hasilnya [2;3]
let throwFirstElement (x::xs)= xs;;
Buatlah fungsi bernama “throwLastElement” yang
mengembalikan list tanpa elemen terakhirnya. Asumsi: list
masukan bukan merupakan [].
contoh:
throwLastElement [1;2;3] hasilnya [1;2]
let rec throwLastElement = function
| (x::[]) -> []
| (x::xs) -> x::throwLastElement(xs);;
Buatlah fungsi bernama “compareList” yang menerima dua buah
list bilangan bulat dan mengembalikan list baru yang berisi
nilai boolean perbandingan nilai elemen-elemen pada kedua
buah list pada posisi yang sama. Bila ukuran list tidak sama,
hanya bandingkan sejumlah ukuran yang sama.
contoh:
compareList ([1;2;3],[1;3]) hasilnya [true;false]
compareList ([1],[]) hasilnya []
let rec compareList = function
| ([] , []) -> []
| (_ , []) -> []
| ([] , _) -> []
| (x::xs , y::ys) -> if(x=y) then [true] @ compareList(xs, ys)
else [false] @ compareList(xs, ys);;
Buatlah fungsi bernama “hasOddLength” yang menerima
sebuah list dan mengembalikan nilai true bila panjang list
adalah ganjil dan mengembalikan nilai false bila panjang list
adalah genap. Hint: Anda dapat menggunakan akumulator.
contoh:
hasOddElement [] hasilnya false
hasOddElement [1;2;3] hasilnya true
let rec hasOddLength = function
| ([], acc) -> if (acc%2=1) then true
else false
| (x::xs, acc) -> hasOddLength(xs, acc+1);;
Buatlah fungsi bernama “hasOddLength” pada soal
slide sebelumnya tanpa menggunakan akumulator.
Hint: dapat menggunakan operator not.
let rec hasOddLength = function
| [] -> false
| x::xs -> not(hasOddLength(xs));;
Buatlah fungsi bernama “oddList” yang menerima list bilangan
bulat dan memberikan output list yang hanya berisi bilangan
ganjil saja. Duplikasi diperkenankan.
contoh:
oddList [1;2;3;4;5] hasilnya [1;3;5]
let rec oddList= function
| [] -> []
| x::xs -> if(x%2=1) then x::oddList(xs)
else oddList(xs);;
Buatlah fungsi dengan nama “terurutTurun” yang menerima
sebuah list dari bilangan bulat dan memberikan output
boolean yang menyatakan apakah list bilangan bulat yang
diberikan sudah terurut mengecil atau tidak.
contoh:
terurutTurun [3;2;1] hasilnya true
let rec terurutTurun= function
| [] -> true
| x::[] -> true
| x1::x2::xs -> if(x1>x2) then terurutTurun(x2::xs)
else false;;
Buatlah fungsi dengan nama “persisSama” yang menerima input
dua buah list dan melakukan pengecekan apakah kedua buah
list tersebut sama persis.
contoh:
sama ([1;2;3],[1;2]) hasilnya false
let rec persisSama= function
| ([],[]) -> true
| (_,[]) -> false
| ([],_) -> false
| (x::xs, y::ys) -> if(x=y) then persisSama(xs::ys)
else false;;
Matriks dapat dinyatakan sebagai list dalam list namun dengan ukuran
list yang ada didalam sama semua. Bila salah satu ukuran list tidak
sama maka dianggap bukan matriks. Buatlah fungsi dengan nama
“ujiMatriks” yang memeriksa hal tsb.
contoh :
ujiMatriks [[1;2;3];[1;2;3]] hasilnya “true”.
ujiMatriks [[1;2];[1;2;3] hasilnya “false”
let rec samaUkuran=function
| ([] , []) -> true
| ([] , _) -> false
| (_ , []) -> false
| (x::xs, y::ys) -> samaUkuran(xs,ys);;
let rec ujiMatriks = function
| [] -> false
| x::[] -> true
| x1::x2::xs -> if samaUkuran(x1,x2)=true then ujiMatriks(x2::xs)
else false;;

More Related Content

What's hot

What's hot (16)

Materi : Struktur Data (2 Array)
Materi : Struktur Data (2 Array)Materi : Struktur Data (2 Array)
Materi : Struktur Data (2 Array)
 
Pertemuan 1 revisijan2013-mhs
Pertemuan 1 revisijan2013-mhsPertemuan 1 revisijan2013-mhs
Pertemuan 1 revisijan2013-mhs
 
2 Array
2 Array2 Array
2 Array
 
2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)
 
Tipe data abstract
Tipe data abstractTipe data abstract
Tipe data abstract
 
6 adp array (larik)
6   adp array (larik)6   adp array (larik)
6 adp array (larik)
 
Queue
QueueQueue
Queue
 
Array
ArrayArray
Array
 
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
 
Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrian
 
3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly
 
Tugas1
Tugas1Tugas1
Tugas1
 
Array dan Contoh
Array dan ContohArray dan Contoh
Array dan Contoh
 
Algorithms and Data Structures
 Algorithms and Data Structures Algorithms and Data Structures
Algorithms and Data Structures
 
Struktur data
Struktur dataStruktur data
Struktur data
 
Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)
 

Similar to Latihan

Dts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinDts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinAhmad Arif Faizin
 
Manfaat Aplikasi Program Komputer dalam Pembelajaran Fisika
Manfaat Aplikasi Program Komputer dalam Pembelajaran FisikaManfaat Aplikasi Program Komputer dalam Pembelajaran Fisika
Manfaat Aplikasi Program Komputer dalam Pembelajaran Fisikahabno
 
C programming language notes (4)
C programming language notes (4)C programming language notes (4)
C programming language notes (4)nakomuri
 
mengenal fungsi-fungsi diSQL Server
mengenal fungsi-fungsi diSQL Servermengenal fungsi-fungsi diSQL Server
mengenal fungsi-fungsi diSQL Serversyahrul ramadan
 
Function
FunctionFunction
Functionwindi1
 
Belajar mudah microsoft office excel 2007
Belajar mudah microsoft office excel 2007Belajar mudah microsoft office excel 2007
Belajar mudah microsoft office excel 2007rina_nurjanah96
 
Algotitma dan Struktur Algoritma - Collection
Algotitma dan Struktur Algoritma - CollectionAlgotitma dan Struktur Algoritma - Collection
Algotitma dan Struktur Algoritma - CollectionSiska Amelia
 
6 adp array (larik)
6   adp array (larik)6   adp array (larik)
6 adp array (larik)Fisma Ananda
 
6 adp array (larik)
6   adp array (larik)6   adp array (larik)
6 adp array (larik)Faisal Amir
 
6 adp array (larik)
6   adp array (larik)6   adp array (larik)
6 adp array (larik)Avenzz Venzz
 
6.adp array (larik)
6.adp array (larik)6.adp array (larik)
6.adp array (larik)Hardini_HD
 

Similar to Latihan (20)

Dts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinDts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlin
 
Manfaat Aplikasi Program Komputer dalam Pembelajaran Fisika
Manfaat Aplikasi Program Komputer dalam Pembelajaran FisikaManfaat Aplikasi Program Komputer dalam Pembelajaran Fisika
Manfaat Aplikasi Program Komputer dalam Pembelajaran Fisika
 
Pengantar R
Pengantar RPengantar R
Pengantar R
 
C programming language notes (4)
C programming language notes (4)C programming language notes (4)
C programming language notes (4)
 
mengenal fungsi-fungsi diSQL Server
mengenal fungsi-fungsi diSQL Servermengenal fungsi-fungsi diSQL Server
mengenal fungsi-fungsi diSQL Server
 
Praktikum p-fisika
Praktikum p-fisikaPraktikum p-fisika
Praktikum p-fisika
 
Pertemuan V
Pertemuan VPertemuan V
Pertemuan V
 
Pertemuan II Function
Pertemuan II FunctionPertemuan II Function
Pertemuan II Function
 
Function
FunctionFunction
Function
 
Function
FunctionFunction
Function
 
Belajar mudah microsoft office excel 2007
Belajar mudah microsoft office excel 2007Belajar mudah microsoft office excel 2007
Belajar mudah microsoft office excel 2007
 
Algotitma dan Struktur Algoritma - Collection
Algotitma dan Struktur Algoritma - CollectionAlgotitma dan Struktur Algoritma - Collection
Algotitma dan Struktur Algoritma - Collection
 
Function c++
Function c++Function c++
Function c++
 
Praktikum p-fisika
Praktikum p-fisikaPraktikum p-fisika
Praktikum p-fisika
 
P1 2-tipe data
P1 2-tipe dataP1 2-tipe data
P1 2-tipe data
 
6 adp array (larik)
6   adp array (larik)6   adp array (larik)
6 adp array (larik)
 
6 adp array (larik)
6   adp array (larik)6   adp array (larik)
6 adp array (larik)
 
6 adp array (larik)
6   adp array (larik)6   adp array (larik)
6 adp array (larik)
 
6.adp array (larik)
6.adp array (larik)6.adp array (larik)
6.adp array (larik)
 
1. PENDAHULUAN.pdf
1. PENDAHULUAN.pdf1. PENDAHULUAN.pdf
1. PENDAHULUAN.pdf
 

Recently uploaded

PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...Kanaidi ken
 
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 
Aksi Nyata Menyebarkan (Pemahaman Mengapa Kurikulum Perlu Berubah) Oleh Nur A...
Aksi Nyata Menyebarkan (Pemahaman Mengapa Kurikulum Perlu Berubah) Oleh Nur A...Aksi Nyata Menyebarkan (Pemahaman Mengapa Kurikulum Perlu Berubah) Oleh Nur A...
Aksi Nyata Menyebarkan (Pemahaman Mengapa Kurikulum Perlu Berubah) Oleh Nur A...nuraji51
 
.....................Swamedikasi 2-2.pptx
.....................Swamedikasi 2-2.pptx.....................Swamedikasi 2-2.pptx
.....................Swamedikasi 2-2.pptxfurqanridha
 
PPT SOSIALISASI PENGELOLAAN KINERJA GURU DAN KS 2024.pptx
PPT SOSIALISASI PENGELOLAAN KINERJA GURU DAN KS 2024.pptxPPT SOSIALISASI PENGELOLAAN KINERJA GURU DAN KS 2024.pptx
PPT SOSIALISASI PENGELOLAAN KINERJA GURU DAN KS 2024.pptxMaskuratulMunawaroh
 
Penyebaran Pemahaman Merdeka Belajar Aksi Nyata PMM
Penyebaran Pemahaman Merdeka Belajar Aksi Nyata PMMPenyebaran Pemahaman Merdeka Belajar Aksi Nyata PMM
Penyebaran Pemahaman Merdeka Belajar Aksi Nyata PMMRiniGela
 
Program Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanProgram Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanAdePutraTunggali
 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"baimmuhammad71
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfAndiCoc
 
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docxKisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docxFitriaSarmida1
 
Contoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptxContoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptxIvvatulAini
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAppgauliananda03
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxDEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxwawan479953
 
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptx
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptxPPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptx
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptxJawahirIhsan
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxsyahrulutama16
 
Panduan Memahami Data Rapor Pendidikan 2024
Panduan Memahami Data Rapor Pendidikan 2024Panduan Memahami Data Rapor Pendidikan 2024
Panduan Memahami Data Rapor Pendidikan 2024RahmadLalu1
 
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptnovibernadina
 
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]Abdiera
 
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 

Recently uploaded (20)

PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
PELAKSANAAN + Link2 Materi BimTek _PTK 007 Rev-5 Thn 2023 (PENGADAAN) & Perhi...
 
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI RUPA KELAS 6 KURIKULUM MERDEKA.pdf
 
Aksi Nyata Menyebarkan (Pemahaman Mengapa Kurikulum Perlu Berubah) Oleh Nur A...
Aksi Nyata Menyebarkan (Pemahaman Mengapa Kurikulum Perlu Berubah) Oleh Nur A...Aksi Nyata Menyebarkan (Pemahaman Mengapa Kurikulum Perlu Berubah) Oleh Nur A...
Aksi Nyata Menyebarkan (Pemahaman Mengapa Kurikulum Perlu Berubah) Oleh Nur A...
 
.....................Swamedikasi 2-2.pptx
.....................Swamedikasi 2-2.pptx.....................Swamedikasi 2-2.pptx
.....................Swamedikasi 2-2.pptx
 
PPT SOSIALISASI PENGELOLAAN KINERJA GURU DAN KS 2024.pptx
PPT SOSIALISASI PENGELOLAAN KINERJA GURU DAN KS 2024.pptxPPT SOSIALISASI PENGELOLAAN KINERJA GURU DAN KS 2024.pptx
PPT SOSIALISASI PENGELOLAAN KINERJA GURU DAN KS 2024.pptx
 
Penyebaran Pemahaman Merdeka Belajar Aksi Nyata PMM
Penyebaran Pemahaman Merdeka Belajar Aksi Nyata PMMPenyebaran Pemahaman Merdeka Belajar Aksi Nyata PMM
Penyebaran Pemahaman Merdeka Belajar Aksi Nyata PMM
 
Program Kerja Public Relations - Perencanaan
Program Kerja Public Relations - PerencanaanProgram Kerja Public Relations - Perencanaan
Program Kerja Public Relations - Perencanaan
 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
 
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docxKisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
 
Contoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptxContoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptx
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxDEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
 
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptx
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptxPPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptx
PPT PENDIDIKAN KELAS RANGKAP MODUL 3 KELOMPOK 3.pptx
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsx
 
Panduan Memahami Data Rapor Pendidikan 2024
Panduan Memahami Data Rapor Pendidikan 2024Panduan Memahami Data Rapor Pendidikan 2024
Panduan Memahami Data Rapor Pendidikan 2024
 
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).ppt
 
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
Modul Ajar IPAS Kelas 4 Fase B Kurikulum Merdeka [abdiera.com]
 
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
 

Latihan

  • 2. Referensi • Soal-soal Pemrograman Deklaratif tahun 2012/2013 • Soal-soal Pemrograman Deklaratif oleh Pak Alfan F. Wicaksono
  • 3. a. Buatlah datatype dengan nama TreeJalur yang cocok untuk struktur data dengan contoh visualisasi seperti gambar di atas. type TreeJalur= | Lf of bool | Br of int * TreeJalur * TreeJalur;;
  • 4. b. Tuliskan representasi internal (concrete syntax) dari representasi visual contoh diatas sesuai dengan datatype yang telah dibuat tadi. Br(1, Br(2, Br(4, Lf false, Lf false), Lf false), Br(3, Br(5, Lf false, Lf false), Br(6, Lf true, Lf true)));;
  • 5. c. Buatlah fungsi listLeaves yang menerima sebuah TreeJalur dan menghasilkan list yang merupakan kumpulan isi dari setiap leaf-nya dari kiri ke kanan. Untuk contoh TreeJalur seperti diatas, list yang dihasilkan adalah: [false; false; false; false; false; true; true] let rec listLeaves = function | Lf x -> [x] | Br(v, t1, t2) -> listLeaves(t1) @ listLeaves(t2);;
  • 6. Dapatkah anda menebak polanya? Kapan sebuah elemen pada leaf adalah true dan kapan adalah false? Bila sudah dikenali pola-nya, buatlah fungsi isValid, yang menerima sebuah TreeJalur dan menghasilkan nilai Boolean true jika TreeJalur tersebut valid mengikuti pola dan false bila tidak. let rec isValid = function | (Lf x, acc) -> if ((acc%2=0 && x=true) || (acc%2=1 && x=false)) then true else false | (Br(v, t1, t2), acc) -> isValid(t1, acc+v) && isValid(t2, acc+v);;
  • 7. Untuk tipe data Tree berikut: type tree<‘a>= | Lf | Br of ‘a * tree<‘a> * tree<‘a> Buatlah sebuah fungsi bernama “oddTree” yang menerima sebuah Tree dan mengembalikan sebuah list yang berisi elemen-elemen ganjil pada Tree (urutan bebas); contoh: oddTree (Br(1, Br(2, Br(4,Lf,Lf), Br(5,Lf,Lf)), Br(3,Lf,Lf))) hasilnya [1;3;5] let rec oddTree = function | Lf -> [] | Br(v, t1, t2) -> if v%2=1 then [v] @ oddTree(t1) @ oddTree(t2) else oddTree(t1) @ oddTree(t2);;
  • 8. Untuk tipe data Tree berikut: type tree= | Lf of int | Br of int * tree * tree Buatlah sebuah fungsi bernama “oddTree” yang menerima sebuah Tree dan mengembalikan sebuah list yang berisi elemen-elemen ganjil pada Tree (urutan bebas); contoh: oddTree (Br(1, Br(2, Lf 4, Lf 5), Lf 3)) hasilnya [1;3;5] let rec oddTree = function | Lf v -> if v%2=1 then [v] else [] | Br(v, t1, t2) -> if v%2=1 then [v] @ oddTree(t1) @ oddTree(t2) else oddTree(t1) @ oddTree(t2);;
  • 9. Buatlah fungsi bernama “isFactor” yang menerima dua buah bilangan bulat dan memberikan nilai true bila bilangan pertama merupakan faktor dari bilangan kedua. contoh: isFactor 3 9 hasilnya true let isFactor a b = if (b%a=0) then true else false;;
  • 10. Buatlah fungsi (rekursif) bernama “casting” yang menerima sebuah bilangan bulat (integer) dan menghasilkan bilangan bulat tersebut dalam tipe float. contoh: casting 4 hasilnya 4.0 let rec casting a = function | 0 -> 0.0 | x -> 1.0 + casting(x-1);;
  • 11. Buatlah fungsi bernama “throwFirstElement” yang mengembalikan list tanpa elemen pertamanya. Asumsi list yang dimasukkan bukan list kosong. contoh: throwFirstElement [1;2;3] hasilnya [2;3] let throwFirstElement (x::xs)= xs;;
  • 12. Buatlah fungsi bernama “throwLastElement” yang mengembalikan list tanpa elemen terakhirnya. Asumsi: list masukan bukan merupakan []. contoh: throwLastElement [1;2;3] hasilnya [1;2] let rec throwLastElement = function | (x::[]) -> [] | (x::xs) -> x::throwLastElement(xs);;
  • 13. Buatlah fungsi bernama “compareList” yang menerima dua buah list bilangan bulat dan mengembalikan list baru yang berisi nilai boolean perbandingan nilai elemen-elemen pada kedua buah list pada posisi yang sama. Bila ukuran list tidak sama, hanya bandingkan sejumlah ukuran yang sama. contoh: compareList ([1;2;3],[1;3]) hasilnya [true;false] compareList ([1],[]) hasilnya [] let rec compareList = function | ([] , []) -> [] | (_ , []) -> [] | ([] , _) -> [] | (x::xs , y::ys) -> if(x=y) then [true] @ compareList(xs, ys) else [false] @ compareList(xs, ys);;
  • 14. Buatlah fungsi bernama “hasOddLength” yang menerima sebuah list dan mengembalikan nilai true bila panjang list adalah ganjil dan mengembalikan nilai false bila panjang list adalah genap. Hint: Anda dapat menggunakan akumulator. contoh: hasOddElement [] hasilnya false hasOddElement [1;2;3] hasilnya true let rec hasOddLength = function | ([], acc) -> if (acc%2=1) then true else false | (x::xs, acc) -> hasOddLength(xs, acc+1);;
  • 15. Buatlah fungsi bernama “hasOddLength” pada soal slide sebelumnya tanpa menggunakan akumulator. Hint: dapat menggunakan operator not. let rec hasOddLength = function | [] -> false | x::xs -> not(hasOddLength(xs));;
  • 16. Buatlah fungsi bernama “oddList” yang menerima list bilangan bulat dan memberikan output list yang hanya berisi bilangan ganjil saja. Duplikasi diperkenankan. contoh: oddList [1;2;3;4;5] hasilnya [1;3;5] let rec oddList= function | [] -> [] | x::xs -> if(x%2=1) then x::oddList(xs) else oddList(xs);;
  • 17. Buatlah fungsi dengan nama “terurutTurun” yang menerima sebuah list dari bilangan bulat dan memberikan output boolean yang menyatakan apakah list bilangan bulat yang diberikan sudah terurut mengecil atau tidak. contoh: terurutTurun [3;2;1] hasilnya true let rec terurutTurun= function | [] -> true | x::[] -> true | x1::x2::xs -> if(x1>x2) then terurutTurun(x2::xs) else false;;
  • 18. Buatlah fungsi dengan nama “persisSama” yang menerima input dua buah list dan melakukan pengecekan apakah kedua buah list tersebut sama persis. contoh: sama ([1;2;3],[1;2]) hasilnya false let rec persisSama= function | ([],[]) -> true | (_,[]) -> false | ([],_) -> false | (x::xs, y::ys) -> if(x=y) then persisSama(xs::ys) else false;;
  • 19. Matriks dapat dinyatakan sebagai list dalam list namun dengan ukuran list yang ada didalam sama semua. Bila salah satu ukuran list tidak sama maka dianggap bukan matriks. Buatlah fungsi dengan nama “ujiMatriks” yang memeriksa hal tsb. contoh : ujiMatriks [[1;2;3];[1;2;3]] hasilnya “true”. ujiMatriks [[1;2];[1;2;3] hasilnya “false” let rec samaUkuran=function | ([] , []) -> true | ([] , _) -> false | (_ , []) -> false | (x::xs, y::ys) -> samaUkuran(xs,ys);; let rec ujiMatriks = function | [] -> false | x::[] -> true | x1::x2::xs -> if samaUkuran(x1,x2)=true then ujiMatriks(x2::xs) else false;;