Tugas 3 Bahasa Pemrograman

Tugas 3 Bahasa Pemrograman

Yayay…tugas 3 udah muncul nih…

Kali ini bukan resume lagi, tapi kita disuruh buat bikin fungsi-fungsi dalam bahasa Scheme.

Lha, mungkin pada heran, kenapa langsung  tugas 3 ajah, tugas 2 nya mana??

Berhubung aku ragu sama jawaban yang kuberikan saat tugas 2 kemaren, jadinya aku nggak post.

Tugas 3 basprog kali ini berisi 6 permasalahan yang harus dituliskan dalam bahasa scheme, aku udah coba semua coding di bawah ini, dan jalan. Semoga, berguna ya!

Memeriksa apakah bilangan ketiga merupakan hasil kali bilangan pertama dan kedua. Contoh:

> (hasilkali? 2 5 8  )

TIDAK

> (hasilkali? 2 5 10)

YA

(define (hasilkali? a b c)

(if (= c (* a b))

“YA”

“TIDAK”

)

)


Menghitung banyaknya huruf dari suatu string. Contoh:

> (hitung “t” “toko itu sabtu tidak tutup”)

6

(define (hitung x str)

(if (equal? str “”)

0

(if (equal? x (substring str 0 1))

(+ 1 (hitung x (substring str 1)))

(hitung x (substring str 1))

)

)

)


Menentukan digit paling depan dari suatu bilangan bulat

> (depan 123 )

1

> (depan 5021)

5

(define (depan i)

(if (< i 10)

i

(depan (floor (/ i  10)))

)

)


Membuat sebuah list sederhana yang berisi elemen 1 2 3 … n. Jika n=0,

maka list yang dihasilkan adalah list kosong. Contoh:

> (buatlist 5)

(1 2 3 4 5)

>  (buatlist 0)

()

(define (buatlist n)

(if (= n 0)

‘()

(if (= n 1)

(cons 1 empty )

(append (buatlist (- n 1)) (cons n empty))

)

)

)


Mengambil beberapa elemen dari sebuah list x dimulai pada posisi ke-a

sampai dengan posisi ke-b. Contoh:

> (ambil (list 3 5 7 2 6 5 8 ) 3 5) ; a=3, b=5

(7 2 6)

> (ambil (list 3 5 7 2 6 5 8  ) 3 3) ;a=3, n=3

(7)

(define (ambil1 x a b)

(list-tail (take x b) (- a 1))

)

(define (ambil x a b)

(if (= a  b)

(list-ref x (- a 1))

(ambil1 x a b)

)

)


Membuat sebuah list baru yang berisi dua elemen, yaitu elemen paling depan

dan paling belakang dari suatu list lainnya. Contoh:

> (anaklist (list 3 5 9))

(3 9)

> (anaklist (list 1 2 4 3 5 9 7 8 ))

(1 8 )

(define (anaklist x)

(if (empty? x) ‘()

(cons (first x) (cons (first(reverse x)) empty))

)

)