Friday, October 28, 2005

PASCAL, PROGRAPH, HASKEL

2 minggu belakangan ini gw dihadapin oleh 2 bahasa pemrograman yang beda-beda semua.
pertama pascal, masak gw disuruh ngerjain (alias diminta untuk buatin) program jaman behulak, yaitu implementasi queue dengan double linked list yah untung ada ada di buku, jadi gw belajar dl.
salah satu procedure yang paling gw inget adalah (klo gak salah jg nih) :


procedure Insialisasi(var Kepala : List, Elemen : Char);
begin
new(kepala)
with kepala do
begin
Info := Elemen;
Next := Nil;
end;
end;


nah yang kedua, untuk kedua kalinya ngulang mata kuliah Pemrograman Visual (damn....!!!!), itu mata kuliah nyuruh gw belajar yang namanya bahasa pemrograman prograph, benar-benar bahasa pemrograman yang aneh, tanpa coding, cuma gambar-gambar aja, lo bisa bikin sebuah program bahkan sebuah game (kata bapaknya sich, gw jg blm coba:D)

nah yang ketiga, untuk kesekian kalinya gw diminta buatin program, kali ini pake bahasa yang bener-bener gw blm pnh coba sama sekali, yaitu bahasa pemrograman non prosedural, nah salah satu compilernya adalah haskel, nah gw disuruh bikin program dengan tuples dan linked list, wah menarik nih, pikiran gw pertama kali waktu dimintain tolong, alasan gw sih pengen nyoba apa sich itu non procedural...
nah ini program yang gw buat (mbuh program opo, aku wae ra dong...

--Program Rerata
module Rerata where
rata :: [Int] -> Float
rata xs = fromInt(sum[x|x<-xs]) /. fromInt(length(xs))


--Program Hitung Titik Tengah
module Tuple where

type X = Float
type Y = Float
type Titik = (X,Y)

t1x :: Titik -> X
t1x(x1,y1) = x1

t1y :: Titik -> Y
t1y(x1,y1) = y1

t2x :: Titik -> X
t2x(x2,y2) = x2

t2y :: Titik -> Y
t2y(x2,y2) = y2

t3 :: Titik
t3 = (((t1x(2.0,2.0)+.t1x(2.0,2.0))/.2.0),((t1y(2.0,2.0)+.t2y(2.0,2.0))/.2.0))