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 SOAL-SOAL

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 SOAL-SOAL (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

ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptArkhaRega1
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxawaldarmawan3
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxWirionSembiring2
 
Lembar Catatan Percakapan Pasca observasidocx
Lembar Catatan Percakapan Pasca observasidocxLembar Catatan Percakapan Pasca observasidocx
Lembar Catatan Percakapan Pasca observasidocxbkandrisaputra
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdftsaniasalftn18
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKirwan461475
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggeraksupriadi611
 
Perumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxPerumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxadimulianta1
 
Kelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfKelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfCloverash1
 
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdfsdn3jatiblora
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDmawan5982
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxmawan5982
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxnerow98
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...Kanaidi ken
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxFuzaAnggriana
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASreskosatrio1
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxJamhuriIshak
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAAndiCoc
 
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfbibizaenab
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 

Recently uploaded (20)

ppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 pptppt-modul-6-pend-seni-di sd kelompok 2 ppt
ppt-modul-6-pend-seni-di sd kelompok 2 ppt
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
 
Lembar Catatan Percakapan Pasca observasidocx
Lembar Catatan Percakapan Pasca observasidocxLembar Catatan Percakapan Pasca observasidocx
Lembar Catatan Percakapan Pasca observasidocx
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdf
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAKDEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
DEMONSTRASI KONTEKSTUAL MODUL 1.3 PENDIDIKAN GURU PENGGERAK
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggerak
 
Perumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptxPerumusan Visi dan Prakarsa Perubahan.pptx
Perumusan Visi dan Prakarsa Perubahan.pptx
 
Kelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdfKelompok 1_Karakteristik negara jepang.pdf
Kelompok 1_Karakteristik negara jepang.pdf
 
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf2 KISI-KISI Ujian Sekolah Dasar  mata pelajaranPPKn 2024.pdf
2 KISI-KISI Ujian Sekolah Dasar mata pelajaranPPKn 2024.pdf
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SD
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
 
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptxBAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
 
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKAMODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
MODUL AJAR MATEMATIKA KELAS 6 KURIKULUM MERDEKA
 
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 

SOAL-SOAL

  • 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;;