Perbandingan HyperTalk dengan Pascal

29 October 2010 at 7:10 AM (SoftSkill, Tulisan)


HyperTalk

HyperTalk adalah tingkat-tinggi, bahasa pemrograman prosedural yang diciptakan pada tahun 1987 oleh Dan Winkler dan digunakan bersama dengan program hypermedia HyperCard Apple Computer oleh Bill Atkinson. Target audiens utama HyperTalk mulai programmer, maka programmer HyperTalk biasanya disebut penulis, dan proses menulis program disebut “scripting”. script HyperTalk cukup mirip dengan bahasa Inggris tertulis, dan menggunakan struktur logika yang mirip dengan bahasa pemrograman Pascal.

Bahasa case-insensitive diinterpretasikan pada awalnya, tetapi menjadi ‘hampir dikompilasi’ sejak HyperCard 2.x. Mendukung struktur kontrol dasar bahasa prosedural: repeat for/while/until, if/then/else, serta fungsi dan panggilan pesan “handler” (handler adalah sebuah sub rutin, penangan pesan prosedur). Tipe data yang transparan kepada pengguna, konversi terjadi transparan di latar belakang antara string dan angka. Tidak ada kelas atau struktur data dalam pengertian tradisional, tempat mereka diambil oleh literal string khusus, atau lebih tepatnya “lists” of “items” dipisahkan dengan tanda koma (dalam versi kemudian “itemDelimiter” properti diperbolehkan memilih karakter yang sewenang-wenang).

 

Object-Oriented HyperTalk

HyperTalk bukan bahasa ketat prosedural. Script dikaitkan dengan benda-benda dalam file HyperCard (apa yang disebut ” stacks “), dan HyperTalk diperbolehkan memanipulasi objek objek dalam berbagai cara, mengubah sifat mereka menggunakan “set” perintah, misalnya. Objek itu ditujukan menggunakan sintaks dekat dengan bahasa alami, dimana objek yang ditentukan relatif ke card ini, atau operator digunakan untuk menentukan posisi absolut dari objek: send "mouseUp" to card button "OK" of card "Veracity". Sejak tombol dan bidang juga bisa ada pada lapisan latar belakang, namun isinya akan berbeda antara card, card fields, background fields dll dapat diatasi dengan nama mereka, z-memesan nomor, atau dengan nomor ID unik yang biasanya tidak berubah sepanjang masa obyek. Untuk beralih di atas benda (joinedly disebut sebagai bagian dalam HyperCard 2.2 dan kemudian), satu jumlah mereka hanya digunakan setelah query misalnya jumlah bagian card.

HyperTalk juga menyediakan script kontrol penuh tumbang built-in alat gambar, hanya dengan script perubahan yang dibutuhkan dalam alat cat dan gerakan mouse simulasi menggunakan drag dari awal sampai akhir dan klik pada posisi perintah.

HyperTalk pesan juga digunakan (yaitu peristiwa) dikirim ke objek untuk menangani interaksi pengguna. Misalnya mouseDown pesan dikirim ke sebuah tombol ketika user mengklik, dan mouseUp dikirim ketika pengguna dirilis mouse di dalamnya untuk memicu aksinya. Demikian pula, itu pesan idle periodik, mouseEnter, mouseLeave, … dan pesan lain yang berhubungan dengan navigasi antara kartu berbeda dalam HyperCard stack, serta masukan dari pengguna (keydown, functionKey, …), dan sistem acara. Sejauh scripters khawatir, tidak ada loop acara utama seperti di lain bahasa pemrograman prosedural.

 

Perluasan HyperTalk

Meskipun bahasa HyperTalk merana seperti HyperCard sendiri, ia menerima sewa kedua hidup melalui plugin protokol, disebut Perintah Eksternal (XCMDs) dan Eksternal Fungsi (XFCNs), yang wadah kode asli yang melekat pada tumpukan (sebagai Macintosh-spesifik sumber daya) dengan entry point tunggal dan nilai kembali. XCMDs dan XFCNs bisa disebut seperti pesan reguler dan menangani fungsi dari script HyperTalk, dan juga dapat mengirim pesan kembali ke aplikasi HyperCard. Beberapa XCMD giat penulis menambahkan fitur-fitur canggih seperti dukungan penuh warna (ColorizeHC, HyperTint, AddColor), jendela khusus beberapa tujuan (Prompt, Tabloid, Textoid, Listoid, ShowDialog, MegaWindows), dukungan drag and drop dan antarmuka perangkat keras berbagai bahasa.

 

Turunan HyperTalk

bahasa scripting Berbagai telah mengambil isyarat dari HyperTalk. Mereka umumnya dikelompokkan dalam sebuah keluarga yang didefinisikan secara longgar bernama xTalk.

CompileIt-Talk -! A HyperCard stack dan XCMD oleh Tom Pittman yang memungkinkan kompilasi asli 68000 kode mesin (misalnya untuk XCMDs dan XFCNs) dari kode HyperTalk, dan memanggil Macintosh rutinitas asli toolbox. CompileIt telah dinyalakan, yaitu versi yang lebih baru telah dikompilasi menggunakan versi sebelumnya dari dirinya sendiri.

* Double-XX-Talk (?) – Double-XX adalah klon HyperCard ringan yang dikirimkan sebagai penambahan CompileIt! dan memungkinkan berjalan XCMDs dan XFCNs tanpa HyperCard, dan bahkan termasuk penerjemah HyperTalk kecil.

* MediaTalk – Bahasa Oracle Obyek Media, keturunan Plus, dan klon yang cross-platform pertama HyperCard. Selain satu-satunya yang benar-benar modular.

* PlusTalk (?) – Spinnaker Plus (awalnya oleh Verlag Format Jerman), yang digunakan sebagai dasar untuk OPT.

* SenseTalk – Bahasa dari HyperSense NeXT-berasal dan pengujian VNC berbasis alat Terong.

* SuperTalk – Bahasa SuperCard, klon HyperCard pertama, oleh Bill Appleton. Appleton juga menulis Dunia populer Builder kit petualangan konstruksi.

* RevTalk – Bahasa diimplementasikan dalam lingkungan pengembangan Revolusi itu sendiri berasal dari klon-Unix berasal HyperCard MetaCard, yang sekarang berjalan pada Classic Mac OS, Mac OS X, Windows, Linux dan Solaris.

Selain tingkat kedua klon seperti

* AppleScript – bahasa scripting utama Apple Mac OS.

* Lingo – bahasa pemrograman Macromedia Director dimulai dengan sebuah sintaks xTalk seperti, meskipun versi saat ini pergi ke arah yang lebih seperti JavaScript.

* Bahasa (tanpa nama) scripting plug data-publishing Em Software Xdata dan InData,-in untuk QuarkXPress dan Adobe InDesign.

Banyak nama metode pertama kali dipopulerkan oleh HyperTalk berhasil masuk ke bahasa kemudian, seperti onmouseup event handler dalam JavaScript. Meskipun Asymetrix ToolBook sering juga dianggap sebagai klon HyperCard, bahasa scripting yang tampaknya sedikit beruang kemiripan kepada HyperTalk.

Ini klon dan dialek (biasa disebut di bawah moniker dari xTalk-bahasa) ditambahkan berbagai fitur dengan bahasa yang diharapkan dari sebuah bahasa pemrograman modern, seperti exception handling, properti obyek ditetapkan pengguna, timer, multi-threading dan bahkan pengguna didefinisikan objek.

Beberapa Sample Script

on mouseUp

put “100,100” into pos

repeat with x = 1 to the number of card buttons

set the location of card button x to pos

add 15 to item 1 of pos

end repeat

end mouseUp

 

on mouseDown

put “Disk:Folder:MyFile” into filePath — no need to declare variables

if there is a file filePath then

open file filePath

read from file filePath until return

put it into cd fld “some field”

close file filePath

set the textStyle of character 1 to 10 of card field “some field” to bold

end if

end mouseDown

 

function replaceStr pattern,newStr,inStr

repeat while pattern is in inStr

put offset(pattern,inStr) into pos

put newStr into character pos to (pos +the length of pattern)-1 of inStr

end repeat

return inStr

end replaceStr

 

 

 

 

Pascal dan HyperTalk: Perbandingan

 

Struktur program

Tidak seperti Pascal, HyperTalk tidak dapat digunakan untuk membuat program yang berdiri sendiri. Hal ini hanya dapat digunakan dalam HyperCard untuk mengontrol aktivitas objek HyperCard (stacks, backgrounds, cards, fields and buttons). HyperTalk tidak digunakan untuk menciptakan sebuah “program” yang dieksekusi dari awal sampai akhir. Sebaliknya setiap obyek HyperCard mungkin terkait dengan itu HyperTalk perintah disebut “script”. Setiap script mungkin berisi beberapa Pascal seperti prosedur disebut Perintah dalam penangan pesan ini dijalankan ketika objek menerima pesan yang cocok pawang ” message handlers.” HyperCard mengirim pesan ke objek yang tepat apabila terdapat kejadian tertentu terjadi. Sebagai contoh, sebuah script tombol mungkin memiliki penangan pesan yang akan menginstruksikan HyperCard untuk pergi ke kartu berikutnya, dengan menggunakan efek visual larut, ketika mouse diklik pada tombol dan “mouseUp” pesan diterima. Script yang terkait dengan kartu berikutnya mungkin mengandung penangan pesan yang akan dijalankan saat kartu dibuka dan sesuai “openCard” pesan diterima oleh kartu. Contoh dari program Pascal sederhana dan penjamah HyperTalk dua pesan yang ditunjukkan di bawah ini. Program Pascal disebut sebagai prosedur “getName” yang meminta nama pengguna dan kemudian menampilkan “Thank You” di layar. Pengendali HyperTalk pesan pertama pada dasarnya melakukan fungsi yang sama. Hal ini dijalankan saat kartu tertentu dibuka. Penangan Pesan kedua dijalankan saat mouse diklik pada tombol. HyperTalk penangan pesan dimulai dengan kata “on” diikuti dengan nama dari pesan tertentu. Mereka selalu mengakhiri dengan “end” kata diikuti dengan nama pesan yang sama. Dalam contoh ini dan selanjutnya, Anda akan menemukan bahwa perintah HyperTalk sebagian besar dekat dengan perintah bahasa Inggris standar daripada Pascal.

Contoh Program :
 procedure getname;
 var
 name: string;
 begin
 writeln(‘What is your name?’);
 readln(name);
 writeln(‘Thank you’)
 end;
 begin
 getname
 end.

pada openCard
 ask “What is your name?”
 put “Thank you” into field 1
end openCard
on mouseUp
 visual effect dissolve
 go to next card
end mouseUp

variabel & Statement

Dalam Pascal, programmer harus menyatakan apa jenis nilai-nilai akan disimpan dalam variabel sebelum dapat digunakan. variabel lokal tidak perlu dideklarasikan dalam HyperTalk. Global variabel dinyatakan dalam setiap penangan yang menggunakan mereka. Semua variabel HyperTalk adalah dari jenis teks. karakter numerik secara otomatis dikonversi ke angka sebelum dilakukan operasi matematika. Di samping variabel, informasi dapat disimpan dan diambil dari yang lain “Contain” seperti field, the Message Box, dan teks apapun yang dipilih oleh user. Berikut menunjukkan contoh-contoh deklarasi Pascal dari beberapa jenis variabel diikuti oleh tiga laporan penugasan di mana ekspresi matematika dievaluasi dan variabel diberi nilai. Perintah HyperTalk  “put” juga mengevaluasi ekspresi dan menyimpan nilai-nilai ke dalam variabel atau contain lainnya. Perhatikan perintah HyperTalk aritmatika tambahan.

var
 x, y, sum,counter: integer;
 name: string;
 r: real;

name:=”Paul”; 
sum:= (x+y)*r/2;
counter:=counter +1;

put “Paul” into name
put (x+y)*r/2 into sum 
add 1 to counter
subtract  field 1 from sum
multiply salary by selection
divide field “total” by  num

 

Input / output

Pascal Macintosh menyediakan teks dan jendela gambar untuk tampilan teks atau grafis. Beberapa jendela dapat ditampilkan pada layar dengan menggunakan tool box routines di LightSpeed Pascal. Versi sekarang HyperCard hanya memungkinkan satu jendela atau kartu yang akan ditampilkan di layar pada waktu [Pada versi HC 1.2. Dan kemudian Anda selektif dapat menyembunyikan dan menunjukkan Kartu dan Latar Belakang Picts memberikan Anda kontrol lebih grafis. HyperEd] Namun, HyperCard membedakan antara bidang teks dan lapisan grafis. Dalam contoh berikut Pascal “write” Perintah ini digunakan untuk menampilkan sebuah string sederhana di jendela teks, sedangkan perintah HyperTalk “put” digunakan untuk menampilkan informasi dalam kolom teks.

write (‘Display on the text screen’);
put “Display in field” into field 2

Contoh-contoh ini menunjukkan bagaimana nilai-nilai dari variabel dan string literal digabungkan untuk ditampilkan di layar teks atau di field. Dalam HyperTalk, yang ampersand ganda (& &) menambahkan spasi.

write (str1 ,’ literal string ‘, str2,’ ‘, str3);
put str1 & “ text “ & str2 && str3 into field  “Hello”

Hasil evaluasi ekspresi matematika juga dapat dicampur dengan string literal “7:2” setelah ekspresi digunakan untuk memformat bilangan real yang dihasilkan dalam bidang kolom tujuh dengan dua angka setelah desimal. HyperTalk memerlukan perintah tambahan, “set numberFormat,” untuk format bilangan real.

write (‘Your salary is ‘, rate*hours:7:2);

set numberFormat to “0.00”   
put “Your salary is “ & rate*hours into field “salary”

Pascal “writeln” perintah adalah persis sama dengan perintah “write”, yang ditunjukkan di atas, kecuali hal itu membutuhkan “carriage return” karakter pada akhir baris. Untuk melakukan hal yang sama di HyperTalk, karakter “return” harus diberikan secara eksplisit seperti yang ditunjukkan dalam contoh berikut. Namun, dalam HyperTalk umumnya tidak perlu menetapkan karakter “return” karena teks secara otomatis akan ” word wrapped” dalam dimensi lapangan. Kemampuan ini memungkinkan untuk menggunakan satu HyperTalk “put” dimana beberapa perintah Pascal “writeln” perintah akan diperlukan.

writeln (‘Text followed by return’);

put “Text” & return after field “display”

Pascal Macintosh menyediakan tiga perintah, “drawChar,” “drawString,” dan “writeDraw” untuk menampilkan teks pada layar gambar. Masing-masing harus didahului dengan perintah “moveto” yang menentukan koordinat dimana teks yang akan ditampilkan. Dalam HyperCard, Perintah “type” ini digunakan untuk menempatkan teks dalam lapisan grafis dari kartu. Perintah ini harus didahului dengan perintah lain yang memilih alat teks dan tentukan lokasi di mana teks harus ditempatkan. Untuk banyak aplikasi, teks dapat ditempatkan dalam bidang dan pada lapisan grafis dari kartu menggunakan MacPaint seperti alat dibangun ke HyperCard daripada menggunakan perintah HyperTalk. Teks yang ditempatkan pada bidang dapat disunting oleh pengguna, sedangkan teks dicat lapisan grafis tidak dapat diedit. Namun, teks dicat dapat terhapus dengan menggunakan alat penghapusan atau dipindahkan menggunakan lasso tool.

moveto (40,100);
writeDraw (‘Display in drawing window’); 
choose text tool
click at 40,100 
type “This is painted text”

Dalam Pascal, pengguna input dari keyboard dapat diperoleh dengan menggunakan perintah

“Read” atau “Readln”. Biasanya ini didahului oleh prompt dan ditampilkan oleh perintah “write” atau “writeln”. HyperTalk menyediakan beberapa teknis untuk memperoleh input keyboard dari user. Perintah “ask”menampilkan kotak dialog dengan argumen string pertama sebagai prompt dan string kedua sebagai respon default yang dipilih. Tanggapan pengguna disimpan dalam variabel sistem HyperTalk disebut “it.” Perintah “answer” menampilkan kotak dialog dengan argumen string pertama sebagai promptdan dua atau tiga pushbuttons masing-masing diberi label oleh senar berikutnya.

Ketika pengguna mengklik tombol, tombol label ditempatkan di variable “It.” Sayangnya, lokasi kotak dialog ini tidak dapat dikendalikan oleh HyperTalk. Perintah “put” dapat digunakan untuk menempatkan salinan dari apa punjenis pengguna ke sebuah bidang yang dapat diedit ke dalam variabel ditetapkan, sedangkan perintah “get” menempatkan isi field dalam variabel sistem”It.”

write (‘Please enter your name ‘);
readln(name);
ask “Please enter your name” with “Paul”    
answer “Are you happy” with “yes” or “no” or
 “maybe” 
put field 1 into address
get field name

 

Operator dan fungsi

Matematika dan operator boolean adalah sama dalam kedua bahasa. Namun, HyperTalk menambahkan operator tambahan: “is” dan “ is not”

+ – * / div mod = <> < <= >= and or not

Fungsi “random” pada pascal, mengembalikan nomor acak antara -32767 dan 32767, sementara fungsi “random” dalam HyperTalk, mengembalikan nomor acak antara 1 dan nilai tertentu.

x:=random;
put the random of upper into x

Fungsi matematika berikut sama dalam kedua bahasa. HyperTalk juga menyediakan beberapa fungsi tambahan seperti “annuity” and “average”.

round, trunc, abs ln, sqrt, cos, sin, exp

 

Struktur Kontrol Sequence

Baik Pascal dan HyperTalk memberikan struktur yang kuat kontrol if-then-else dengan sintaks yang sangat mirip. Contoh berikut menampilkan pesan yang berbeda pada layar teks (Pascal) atau di field (HyperTalk) dan variabel kenaikan berbeda (count or ave) tergantung pada nilai-nilai dari “case” variabel dan “gpa.” Tidak sama HyperTalk dari Pascal “case” pernyataan lain selain perintah “if-then-else”

if (status = ‘undergrad’) and (gpa > 3.7) then
 writeln(‘Deans list’)
 else if gpa < 2.0 then
 begin
 writeln(‘Probation’);
 count := count + 1
 end
 else
 begin
 writeln(‘Average’);
 ave := ave + 1
 end;

if stat = “undergrad” and gpa > 3.7 then   
 put “Deans List” into field 1
 else if gpa < 2.0 then
 put “Probation” into field 1
 add 1 to count 
 else  
 put “Average” into field 1
 put ave + 1 into ave
 end if

Baik Pascal dan HyperTalk menyediakan beberapa struktur kontrol yang sangat kuat dengan sintaks yang sama berulang-ulang. Namun, HyperTalk menyediakan struktur tambahan yang tidak ditemukan dalam Pascal dan juga menambahkan beberapa fitur yang abnormal keluar tidak ditampilkan pada contoh: “next repeat,” “exit repeat,” “exit if,” dan “exit <handler name>. Loop akan terus meminta nomor dari pengguna dan menampilkan nilai angka dikalikan dengan 10 sampai pengguna memasukkan angka “0.”

repeat    
 Writeln(‘Enter a number’);
 readln (it);
 writeln(it*10);
until it = 0;
repeat until it = 0
 ask “Enter a number”
 put it *10 & return after field 1
end repeat

Perulangan “while” akan terus meminta pengguna untuk memasukkan nomor dan menampilkan dividen yang dihasilkan dengan membagi nomor ke 50 sampai pengguna memasukkan angka “0.”

writeln (‘Enter a number’);
readln (it);
while it<>0 do
 begin
 writeln (50/it);
 writeln(‘Enter a number’);
 readln(it);
 end;

ask “Enter a number”
repeat while it is not 0 
 put 50/it  & return after field “answer”   
 ask “Enter a number”
end repeat

Perulangan “for do” akan menampilkan produk dari bilangan bulat 5 sampai 20 masing-masing dikalikan dengan 5. Pascal “for do” juga dapat menggunakan “20 downto 5″ sedangkan HyperTalk ” repeat with” dapat menggunakan “20 ke 5.”

for i:= 5 to 20 do
 writeln(i*5);

repeat with i = 5 to 20
 put i*5 & return after field “product”
end repeat

Perulangan HyperTalk ini akan mengulang 20 kali. Setiap kali itu akan menempatkan string “I love you” ke dalam bidang 3 dan suara bunyi bip.

 repeat 20 times 
 put “I love you “ after field  3 
 beep 1
end repeat

 

QuickDraw Graphics

Pascal dan HyperTalk baik memberikan perintah untuk mengakses Macintosh QuickDraw Graphics routines. Dalam tumpukan HyperCard kebanyakan, penggunaan perintah HyperTalk grafis dalam script tidak akan diperlukan karena gambar grafis dapat dilakukan dengan MacPaint seperti alat-alat termasuk dalam HyperCard. Bahkan, Perintah HyperTalk grafis, yang digunakan dalam script, benar-benar memberikan akses ke alat-alat yang sama ditemukan pada menu tools HyperCard. Oleh karena itu, setara dengan yang paling grafis perintah Pascal diimplementasikan dalam HyperTalk dengan memilih alat grafis tertentu menggunakan perintah “choose” dan kemudian mensimulasikan menyeret mouse di layar dengan menggunakan perintah “drag”. Perhatikan bahwa argumen untuk perintah “drag” berada dalam urutan yang berbeda dibandingkan dengan perintah Pascal “frameRect”. Oval dan persegi panjang bulat juga dapat ditarik dengan HyperTalk dengan terlebih dahulu memilih alat yang sesuai. Tiga atau empat perintah HyperTalk yang diperlukan untuk melaksanakan setara dengan beberapa grafis Pascal perintah seperti “paintCircle” dan “invertRect.”

drawLine (x1,y1,x2,y2);
choose line tool
drag from x1,y1 to x2,y2 
frameRect (top,left,bottom,right);
choose rectangle tool
drag from left,top,right,bottom 
paintRect (r);
set filled to true
choose rectangle tool
drag from x1,y1 to x2,y2 
 paintCircle (x1,y1,r);
set filled to true
set centered to true
choose oval tool
drag from x1,y1 to x1,y2 
invertRect(r);
choose select tool
drag from x1,y1 to x2,y2 
doMenu “invert” 
eraseRect (r);
choose select tool
drag from x1,y1 to x2,y2 
doMenu “clear picture” 
penSize (4,4);
set lineSize to 4
penPat (gray);
set pattern to 10
penMode (patXor);

Pascal menyediakan beberapa perintah untuk mengendalikan sifat-sifat teks yang ditampilkan pada layar menggambar dengan perintah writeDraw berikutnya. Dalam HyperTalk, banyak properti teks dicat, tombol, dan bidang dapat diubah dengan menggunakan “set” perintah.

textFont (3);
set textFont to Chicago 
textFace ([bold,underline]); 
set textStyle of button ok to bold, underline   
textSize(18); 
set textSize of field 2 to 18   
textMode (srcXor);

Mouse Control

Macintosh tool-box ROM berisi beberapa rutinitas, yang dapat diakses oleh perintah Pascal, untuk melacak peristiwa mouse seperti mengklik tombol mouse dan menggerakkan mouse. Fungsi “button” mengembalikan nilai “true” jika tombol mouse ditekan pada saat fungsi ini dipanggil, selain itu mengembalikan nilai prosedur “getMouse” ke koordinat posisi pointer mouse pada “false.” waktu prosedur ini dipanggil. Meskipun ada perintah langsung HyperTalk, seperti ditunjukkan di bawah, terutama mouse events dilacak oleh perangkap message handler untuk pesan mouse terkait: “mouseDown,” “mouseUp,” “mouseEnter,” “mouseLeave,” “mouseWithin,” dan ” mouseStillDown “. Sebuah Message handler “mouseUp” umumnya digunakan untuk menanggapi klik mouse normal dalam tombol, bidang dan kartu. Dalam contoh di bawah, ” the mouseLoc ” fungsi mengembalikan posisi saat ini pointer mouse, sementara fungsi “the clickLoc ” kembali ke posisi mouse di klik terakhir.

tf:=button;
put theMouseClick into tf
getmouse(x,y);
put the mouseLoc into xy   
put the clickloc into xy

String prosedur dan fungsi

Macintosh Pascal menyediakan beberapa perintah yang kuat untuk memanipulasi string. HyperTalk memberikan kekuatan lebih besar dengan memungkinkan untuk memanipulasi karakter, kata, garis dan item dalam wadah apapun.

it:=length (str);
get the length of word 3 of field “input”   
it:=concat(str1,’ literal ‘, str2,’ ‘, str3);
put str1 & “ literal string “ & str2 && str3 into it          
 {&& adds a space}
it:=copy(source, firstchar, numofchar);
get char 3 to 8 of line 3 of field “source” 
delete (source, firstchar, numofchar);
delete item 3 to 8 of field 3 insert(source, dest, 5);
put selection before  fifth word of field 2

Perintah Pascal “pos” digunakan untuk mencari lokasi dari sebuah pola dalam string sumber. Ia mengembalikan angka yang menunjukkan lokasi kejadian pertama pola. Zero dikembalikan jika pola tidak ditemukan. Perintah Hypertalk “offset” melakukan fungsi yang sama persis. Dua perintah HyperTalk lain, “contains” dan “is in”mengembalikan nilai “true” jika pola ditemukan di source.

if pos (pattern, source) <> 0 then
 writeln (‘Correct’);

if offset (pattern, source) <> 0 then 
 put “correct” into field “feedback”         

if source contains pattern then 
 put “correct” into field “feedback” 

if  pattern is in source then
 put “correct” into field “feedback”

Perintah suara

Sebuah catatan suara tunggal dapat diputar dengan menggunakan perintah “note” dalam Pascal. Perintah ini memerlukan argumen integer tiga yang menentukan pitch, loudness dan durasi satu nada. Perintah “play” lebih fleksibel dengan argumen untuk menunjukkan instrumen atau gelombang, tempo secara keseluruhan, dan serangkaian catatan yang ditentukan oleh simbol-simbol musik normal. Sebagai contoh, notasi “c # 4e.” Akan menunjukkan catatan c-tajam bertitik-kedelapan dalam 4 oktaf (oktaf tengah). Perintah “play” juga dapat digunakan untuk memproduksi berbagai efek suara mandiri digital. suara tersebut dapat dicatat dengan menggunakan digitizer dan dikonversi ke file sumber daya Mac.

note (440, 75, 48) 
play “harpsichord” tempo 380 “b3 c#4 d e f# g a#3”
play “breaking glass”

 

Ditentukan pengguna jenis: array dan record

Pada pandangan pertama, HyperTalk tampaknya tidak mendukung jenis ditentukan pengguna seperti array dan record. Namun, kartu analog dengan rekor yang dapat berisi banyak bidang nama yang berbeda. Setiap bidang dapat berisi hingga 32K field. data dapat diakses oleh baris, item, kata atau karakter. Lines dipisahkan oleh enter, item dengan koma, dan kata-kata dengan spasi. bidang data mungkin tersembunyi dari pandangan jika diinginkan. Script HyperTalk berikut ini akan menghitung rata-rata dari suatu himpunan bilangan yang ditemukan di lapangan berlabel “scores” untuk setiap kartu di tumpukan. Setiap angka dipisahkan oleh spasi dan dianggap sebuah kata.

Type  scorearray = array [1..25] of integer;
 student = record of
 name: string[35];
 data: scorearray;
 end;
 class = array [1..100] of student;

repeat with n = 1 to number of cards
 go to card n 
 put 0 into sum 
 put the number of words in field “scores” into
 num   
 repeat with i = 1 to num
 add word i of field “scores” to sum
 end repeat
 put sum/num into field average 
end repeat

 

Disk file input / output

Pascal memiliki tiga perintah yang berbeda untuk membuka file. “Rewrite” digunakan untuk membuka file sekuensial baru, “reset” digunakan untuk membuka file berurutan yang telah dibuat sebelumnya, dan “open” digunakan untuk membuka file akses baru atau sebelumnya dibuat acak. Perintah-perintah ini dapat digunakan untuk membuka file teks sederhana atau file terstruktur atau diketik. Sebaliknya, HyperTalk hanya menangani file teks sederhana dan hanya memiliki satu perintah terbuka:

rewrite (f,’filename’);  
open file “filename”
reset (f,’filename’); 
open (f,’filename’);

Dalam HyperTalk, jika beberapa bidang ditulis ke file mereka harus dipisahkan dengan menulis sebuah “tab” karakter ke disk (tab menulis ke file “filename”). Catatan atau kartu harus dipisahkan dengan menulis karakter Kembali ke file (menulis kembali ke file “filename”).

write (f, class[i].data);
write field “data” of card i to file “filename”

Perintah Hypertalk “write” hanya membaca karakter dari file tersebut sampai menemukan pembatas seperti “tab” atau “return.” Teks yang ditempatkan dalam variabel “it”. Karakter pemisah harus dihapus sebelum menempatkan teks di lapangan.

read (f, class[i].data);
read from file “filename” until tab
close (f);
close file “filename”

 

Ditentukan pengguna fungsi dan subrutin atau prosedur

Spesifikasi dan panggilan didefinisikan pengguna fungsi dalam Pascal dan HyperTalk hampir identik. Fungsi Contoh berikut memerlukan dua parameter integer dan mengembalikan nilai dari parameter pertama pangkat ditentukan oleh parameter kedua.

function power (num, exp: integer): integer;
 var i, answ: integer;
 begin
 answ:=1;
 for i:=1 to exp do
 answ:=answ*num;
 power:=answ;
 end;

function power num,exp 
 put 1 into answ
 repeat with i = 1 to exp
 multiply answ by num
 end repeat
 return answ
end power

Perintah berikut menunjukkan bagaimana fungsi-fungsi yang didefinisikan di atas dapat disebut.

writeln(power(5,3));
put power (5,3) into field 1

Serupa dengan Pascal, HyperTalk memberikan subrutin didefinisikan pengguna, prosedur atau penangan dengan parameter nilai. HyperTalk juga menyediakan untuk kedua variabel lokal dan global. variabel lokal tidak harus dideklarasikan dalam HyperTalk. variabel global harus dideklarasikan dalam semua subrutin atau penangan yang mengaksesnya. Berbeda dengan Pascal, penangan HyperTalk harus mengembalikan nilai melalui variabel global karena tidak ada ketentuan untuk parameter variabel. Prosedur Contoh berikut dan pawang menghitung kekuatan nomor mirip dengan fungsi yang ditampilkan di atas.

procedure power (num, exp: integer; var answ:
   integer);
 var i:integer;
 begin
 answ:=1;
 for i:=1 to exp do
 answ:=answ*num;
 end;

on power num,exp
 global answ
 put 1 into answ
 repeat with i = 1 to exp
 multiply answ by num
 end repeat
end power

Prosedur atau handler yang didefinisikan di atas akan disebut dengan menggunakan perintah berikut. Pada contoh HyperTalk, variable global “answ” harus dinyatakan dalam setiap pawang yang memanggil subrutin “power.”

power (5,3,result);
writeln (result);

global answ
power 5,3
put answ into field “output”

 

Ringkasan dan Kesimpulan

Berdasarkan perbandingan yang disajikan di atas antara Pascal dan HyperTalk, Jelas bahwa HyperTalk memang bahasa yang kuat dengan banyak kesamaan Pascal. Ini menyediakan struktur kontrol urutan canggih, subrutin ditentukan pengguna dan fungsi dengan melewati parameter, berbagai struktur data, operasi matematika yang kuat dan fungsi, fungsi string manipulasi, menampilkan teks, grafis dan perintah suara, dan disk file input / output rutinitas. Tidak ditampilkan dalam perbandingan HyperTalk adalah kemampuan untuk memanggil subrutin dan fungsi secara rekursif. Kesamaan ini harus memungkinkan bagi Pascal programmer untuk menjadi mahir dalam HyperTalk tanpa membatalkan usaha.

 

Selain kesamaan dengan Pascal, HyperTalk juga memiliki beberapa fitur pemrograman berorientasi objek yang mirip dengan bahasa seperti Smalltalk dan proses daftar fitur serupa dengan bahasa seperti Logo dan Lisp. HyperTalk berisi beberapa perintah lain yang tidak setara Pascal, dan oleh karena itu tidak termasuk dalam perbandingan ini. Dua di antaranya yang layak disebutkan secara khusus adalah perintah “edit script” dan “do”. “Edit script” dapat digunakan untuk membuat dan memodifikasi script dari dalam naskah HyperTalk, sedangkan perintah “do” dapat digunakan untuk menjalankan perintah yang disimpan dalam sebuah wadah seperti variabel atau field.

 

Lingkungan HyperCard juga menyediakan text editor dan MacPaint type graphics tools. Alat-alat ini berkemampuan untuk mengimpor teks dan gambar, memungkinkan untuk dengan mudah membuat layar tanpa harus bergantung pada perintah pemrograman yang rumit.

 

HyperCard dengan HyperTalk memang menyediakan lingkungan pemrograman yang kuat dan menarik. Ada keterbatasan seperti ukuran layar, kurang warna, tidak ada perintah untuk menciptakan menu dan kotak dialog, dan keterbatasan kecepatan dari bahasa ditafsirkan. Namun, banyak keterbatasan ini dapat diperbaiki dalam versi mendatang HyperCard, atau melalui penggunaan perintah eksternal ditulis dalam bahasa lain.

 

referensi : wikipedia.com dan mactech.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: