HyperTalk adalah bahasa scripting untuk AppleComputer ‘s HyperCard sistem. HyperCard adalah alat untuk membuat aplikasi kecil (dikenal sebagai “tumpukan”) yang mampu kompleksitas mengejutkan.
HyperTalk dan HyperCard diperbolehkan untuk berorientasi objek pembangunan yang kuat, dan membuatnya sangat mudah untuk membuat database kecil (sangat mudah).
Dalam beberapa hal, HyperTalk sangat mirip dengan ObjectiveC :
Mereka berdua Berorientasi Objek
Mereka berdua memungkinkan untuk mengetik dinamis (walaupun saya tidak ingat ada yang pernah menyebut HyperTalk variabel dinamis diketik)
Mereka berdua dapat digunakan untuk RapidApplicationDevelopment
HyperTalk tidak dapat digunakan untuk membuat program yang berdiri sendiri. Hal ini hanya dapat digunakan dalam HyperCard untuk mengontrol aktivitas objek HyperCard (tumpukan, latar belakang, kartu, bidang dan tombol).. 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”.
Banyak kemudahan menggunakan HyperTalk berasal dari alam yang berorientasi objek dan kopling ketat dengan antarmuka HyperCard. objek Screen mungkin diletakkan dalam posisi, ukuran, warna, dan sebaliknya dirancang dengan mouse. Script maka dapat ditulis untuk menangani tindakan objek perlu bereaksi, seperti yang disorot atau menerima klik mouse. Setiap tindakan yang tidak ditentukan menerima perilaku default. Sejak HyperCard menyediakan elemen antarmuka, tindakan standar, dan kerangka event-driven, mayoritas apa yang biasanya harus dikodekan datang siap pakai.
HyperTalk dapat diperpanjang melalui perintah eksternal (XCMDs) ditulis dalam Pascal atau C oleh pengembang pihak ketiga. Untuk pengguna HyperCard, mereka muncul sebagai perintah lain. Add-on pasar XCMD telah berkembang, menyediakan sumber daya yang kaya untuk pengembang HyperCard.
HyperCard telah menghasilkan banyak kegembiraan dan diskusi dalam komunitas Macintosh. Ini telah menghasilkan banyak pengikut dan tidak ada sejumlah kecil kritikus. Banyak pendukung berpendapat bahwa HyperCard memungkinkan programmer akhir pekan untuk membuat aplikasi canggih yang tekan kekuatan dari antarmuka pengguna Macintosh tanpa harus mencerna kotak alat yang tangguh dan “Inside Macintosh.” John Sculley telah memprediksikan bahwa hal ini akan berdampak di Macintosh mirip dengan dampak Applesoft Dasar di dunia Apple II dunia.

berikut ini merupakan perbandingan antara pascal dengan Hypertalk yang akan dilakukan dengan contoh anotasi bukan oleh diagram sintaks rumit. Karena satu atau dua contoh tidak bisa menunjukkan berbagai kemungkinan untuk suatu perintah yang diberikan, referensi nomor halaman yang disediakan untuk diskusi lengkap dari perintah yang ditemukan di buku yang sangat bagus Danny Goodman, “The HyperCard Complete Handbook.” Contoh Pascal akan ditampilkan dalam huruf tebal sementara contoh HyperTalk ditampilkan dalam tipe huruf miring. Penjelasan atau komentar yang akan ditampilkan dalam tanda kurung kurawal. Single jarak akan digunakan untuk menunjukkan perintah yang pergi bersama-sama sebagai satu set, sedangkan jarak ganda akan digunakan untuk memisahkan contoh independen.

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 (tumpukan, latar belakang, kartu, bidang dan tombol). 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 skrip mungkin berisi beberapa Pascal seperti prosedur disebut Perintah dalam penangan pesan ini dijalankan ketika objek menerima pesan yang cocok pawang “penangan pesan”. 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 “Terima kasih” 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 “di” diikuti dengan nama dari pesan tertentu. Mereka selalu mengakhiri dengan “akhir” 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 rekan-rekan mereka Pascal.
program example; Contoh program;
procedure getname; prosedur getName;
var var
name: string; nama: string;
begin mulai
writeln(‘What is your name?’); writeln (‘Siapa nama Anda?’);
readln(name); Readln (nama);
writeln(‘Thank you’) writeln (‘Terima kasih’)
end; akhir;
begin mulai
getname getName
end. akhir.

on openCard pada openCard
ask “What is your name?” bertanya “Siapa nama Anda?”
put “Thank you” into field 1 menempatkan “Terima kasih” ke lapangan 1
end openCard openCard akhir
on mouseUp pada mouseUp
visual effect dissolve efek visual larut
go to next card pergi ke kartu berikutnya
end mouseUp mouseUp akhir
variabel & laporan tugas
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 tekskarakter numerik secara otomatis dikonversi ke angka sebelum dilakukan operasi matematika (Goodman, hal 362). Di samping variabel, informasi dapat disimpan dan diambil dari yang lain “wadah” seperti ladang, Message Box, dan teks apapun yang dipilih oleh user (p.400). Pascal berikut menunjukkan contoh-contoh deklarasi dari beberapa jenis variabel diikuti oleh tiga laporan penugasan di mana ekspresi matematika dievaluasi dan variabel diberi nilai. HyperTalk “meletakkan” perintah juga mengevaluasi ekspresi dan menyimpan nilai-nilai ke dalam variabel atau wadah lainnya. Perhatikan perintah HyperTalk aritmatika tambahan.
var var
x, y, sum,counter: integer; x, y, jumlah, counter: integer;
name: string; nama: string;
r: real; r: real;

name:=”Paul”; name: = “Paulus”;

sum:= (x+y)*r/2; sum: = (x + y) * r / 2;

counter:=counter +1; counter: = counter +1;

put “Paul” into name {p. menempatkan “Paulus” ke nama {p. 415} 415}

put (x+y)*r/2 into sum {p. meletakkan (x + y) * r / 2 ke dalam sum {p. 415} 415}

add 1 to counter {p. tambahkan 1 ke counter {p. 441} 441}

subtract field 1 from sum{p. lapangan kurangi 1 dari jumlah {p. 442} 442}

multiply salary by selection{p. kalikan gaji melalui seleksi {p. 444} 444}

divide field “total” by num{p. membagi bidang “total” oleh num {p. 445} 445}

input / output
Macintosh Pascal menyediakan teks dan jendela gambar untuk tampilan teks atau grafis. Beberapa jendela dapat ditampilkan pada layar dengan menggunakan alat rutinitas kotak di LightSpeed Pascal. Versi sekarang HyperCard hanya memungkinkan satu jendela atau kartu yang akan ditampilkan di layar pada waktu 1,2. [HC Dalam versi dan kemudian Anda selektif dapat menyembunyikan dan menunjukkan Kartu dan Latar Belakang Picts memberikan kontrol yang lebih grafis. Namun, HyperCard membedakan antara bidang teks dan lapisan grafis. Dalam contoh berikut Pascal “menulis” Perintah ini digunakan untuk menampilkan sebuah string sederhana di jendela teks, sedangkan HyperTalk yang “meletakkan” Perintah ini digunakan untuk menampilkan informasi dalam kolom teks.
write (‘Display on the text screen’); write (‘Tampilkan pada layar teks’);

put “Display in field” into field 2{p. menempatkan “Tampilkan dalam bidang” ke dalam bidang 2 {p. 415} 415}
Contoh-contoh ini menunjukkan bagaimana nilai-nilai dari variabel dan string literal digabungkan untuk ditampilkan di layar teks atau di lapangan. Dalam HyperTalk, yang ampersand ganda (& &) menambahkan spasi.
write (str1 ,’ literal string ‘, str2,’ ‘, str3); menulis (str1, ‘string literal’, str2, ”, str3);

put str1 & “ text “ & str2 && str3 into field “Hello” menempatkan str1 & “teks” & str2 & & str3 ke lapangan “Halo”
Hasil evaluasi ekspresi matematika juga dapat dicampur dengan string literal. 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); write (‘gaji Anda’, jam * rate: 7:2);

set numberFormat to “0.00” {p. numberFormat set ke “0.00” {hal 489} 489}
put “Your salary is “ & rate*hours into field “salary” menempatkan “gaji Anda adalah” & jam * tingkat ke lapangan “gaji”
Pascal “writeln” perintah adalah persis sama dengan perintah “menulis”, yang ditunjukkan di atas, kecuali hal itu membutuhkan “carriage return” karakter pada akhir baris. Untuk melakukan hal yang sama di HyperTalk, “kembali” karakter harus diberikan secara eksplisit seperti yang ditunjukkan dalam contoh berikut. Namun, dalam HyperTalk umumnya tidak perlu menetapkan “kembali” karakter karena teks secara otomatis akan “kata dibungkus” dalam dimensi lapangan. Kemampuan ini memungkinkan untuk menggunakan satu HyperTalk “meletakkan” dimana beberapa perintah Pascal “writeln” perintah akan diperlukan.
writeln (‘Text followed by return’); writeln (‘Teks diikuti oleh kembali’);

put “Text” & return after field “display” {p.415} menempatkan “Teks” & kembali setelah kolom “menampilkan” {p.415}
Macintosh Pascal menyediakan tiga perintah, “drawChar,” “Kolor,” 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, yang “ketik” Perintah 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 alat laso.
moveto (40,100); moveto (40100);
writeDraw (‘Display in drawing window’); writeDraw (‘Tampilkan dalam menggambar jendela’);

choose text tool {p. memilih alat teks {p. 429} 429}
click at 40,100 {p. klik di 40.100 {p. 430} 430}
type “This is painted text” {p. ketik “Ini dicat teks” {hal 433} 433}

In Pascal, user input from the keyboard can be obtained by using the Dalam Pascal, pengguna input dari keyboard dapat diperoleh dengan menggunakan
“read” or “readln” commands. “Membaca” atau “Readln” perintah. These are generally preceded by a prompt Biasanya ini didahului oleh prompt
displayed by the “write” or “writeln” commands. ditampilkan oleh “tulis” atau perintah “writeln”. HyperTalk provides several HyperTalk menyediakan beberapa
techniques for obtaining keyboard input from the user. teknis untuk memperoleh input keyboard dari user. The “ask” command The “bertanya” perintah
displays a dialog box with the first string argument as a prompt and menampilkan kotak dialog dengan argumen string pertama sebagai prompt dan
the second string as the default selected response. string kedua sebagai respon default yang dipilih. The user’s response Tanggapan pengguna
is stored in the HyperTalk system variable called “it.” The “answer” disimpan dalam variabel sistem HyperTalk disebut “itu.” The “jawaban”
command displays a dialog box with the first string argument as a prompt perintah menampilkan kotak dialog dengan argumen string pertama sebagai prompt
and two or three pushbuttons each labeled by the succeeding strings. dan dua atau tiga pushbuttons masing-masing diberi label oleh senar berikutnya.
When the user clicks a button, the button label is placed in the variable Ketika pengguna mengklik tombol, tombol label ditempatkan di variabel
“it.” Unfortunately, the location of these dialog boxes cannot be controlled “Itu.” Sayangnya, lokasi kotak dialog ini tidak dapat dikendalikan
by HyperTalk. oleh HyperTalk. The “put” command may be used to place a copy of whatever The “meletakkan” perintah dapat digunakan untuk menempatkan salinan dari apa pun
the user types into an editable field into a specified variable, while jenis pengguna ke sebuah bidang yang dapat diedit ke dalam variabel ditetapkan, sedangkan
the “get” command places the contents of a field in the system variable yang “mendapatkan” perintah tempat isi field dalam variabel sistem
“it.” “Itu.”
write (‘Please enter your name ‘); write (‘Silakan masukkan nama anda’);
readln(name); Readln (nama);

ask “Please enter your name” with “Paul” {p. bertanya “Silakan masukkan nama anda” dengan “Paulus” {hal 465} 465}

answer “Are you happy” with “yes” or “no” or menjawab “Apakah Anda senang” dengan “ya” atau “tidak” atau
“maybe” {p. “Mungkin” {hal 463} 463}

put field 1 into address {p. menempatkan field 1 ke alamat {p. 415} 415}

get field name {p. mendapatkan nama field {p. 419} 419}
Operator dan fungsi
Matematika berikut dan operator boolean adalah sama dalam kedua bahasa. Namun, HyperTalk termasuk operator tambahan: “adalah” dan “tidak” (hal. 563-576).
+ – * / div mod = < = and or not + – * / Mod div = < = dan atau tidak
Pascal “acak” fungsi mengembalikan nomor acak antara -32767 dan 32767, sementara “acak” fungsi dalam HyperTalk kembali nomor acak antara 1 dan nilai tertentu.
x:=random; x: = acak;

put the random of upper into x {p. menempatkan acak dari atas ke x {p. 545} 545}
Fungsi matematika berikut adalah sama dalam kedua bahasa. HyperTalk juga menyediakan beberapa fungsi tambahan seperti “anuitas” dan “rata-rata” (hal. 546-551).
round, trunc, abs ln, sqrt, cos, sin, exp bulat, trunc, abs ln, sqrt, cos, dosa, exp

Sequence kontrol struktur
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 lapangan (HyperTalk) dan variabel kenaikan berbeda (menghitung atau ave) tergantung pada nilai-nilai dari “status” variabel dan “gpa.” Tidak ada setara HyperTalk dari Pascal “kasus” pernyataan lain selain nested “if-then-else” perintah (hal. 589).
if (status = ‘undergrad’) and (gpa > 3.7) then if (status ‘undergrad’ =) dan (gpa> 3.7) maka
writeln(‘Deans list’) writeln (‘daftar Dekan’)
else if gpa < 2.0 then lain jika gpa 3.7 then {p. jika stat = gpa “undergrad” dan> 3,7 kemudian {p. 584} 584}
put “Deans List” into field 1{p. menempatkan “Daftar Dekan” ke lapangan 1 {p. 415} 415}
else if gpa < 2.0 then {p. lain jika gpa <2.0 maka {p. 587} 587}
put “Probation” into field 1 {p. menempatkan "Percobaan" ke lapangan 1 {p. 415} 415}
add 1 to count {p. tambahkan 1 untuk menghitung {p. 441} 441}
else {p. else {p. 587} 587}
put “Average” into field 1 {p. menempatkan "Rata-rata" ke lapangan 1 {p. 415} 415}
put ave + 1 into ave{p. menempatkan ave + 1 ke ave {p. 415} 415}
end if {p. berakhir jika {p. 587} 587}
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: "ulangi depan," "ulangi keluar," "keluar jika," dan "<nama keluar <handler (p. 594 ). Loop ulangi berikut akan terus meminta nomor dari pengguna dan menampilkan nilai angka dikalikan dengan 10 sampai pengguna memasukkan angka "0."
repeat ulangi
Writeln('Enter a number'); Writeln ('Masukkan nomor');
readln (it); Readln (itu);
writeln(it*10); writeln (itu * 10);
until it = 0; sampai = 0;

repeat until it = 0{p. ulangi sampai 0 = {p. 591} 591}
ask “Enter a number”{p. bertanya "Masukkan angka" {hal 465} 465}
put it *10 & return after field 1 {p. meletakkannya * 10 & kembali setelah lapangan 1 {p. 415} 415}
end repeat ulangi akhir
Berikut "sementara" loop akan terus meminta pengguna untuk memasukkan nomor dan menampilkan dividen yang dihasilkan dengan membagi jumlah ke 50 sampai pengguna memasukkan angka "0."
writeln ('Enter a number'); writeln ('Masukkan nomor');
readln (it); Readln (itu);
while it0 do sementara itu 0 melakukannya
begin mulai
writeln (50/it); writeln (50/it);
writeln(‘Enter a number’); writeln (‘Masukkan nomor’);
readln(it); Readln (itu);
end; akhir;

ask “Enter a number” {p. bertanya “Masukkan angka” {hal 465} 465}
repeat while it is not 0 {p. ulangi sementara itu tidak 0 {p. 592} 592}
put 50/it & return after field “answer” {p. menempatkan 50/it & kembali setelah kolom “jawaban” {hal 415} 415}
ask “Enter a number”{p. bertanya “Masukkan angka” {hal 465} 465}
end repeat ulangi akhir
Ini “untuk melakukan” loop akan menampilkan produk dari bilangan bulat 5 sampai 20 masing-masing dikalikan dengan 5. Pascal “untuk melakukan” juga dapat menggunakan “20 downto 5” sedangkan HyperTalk “ulangi dengan” dapat menggunakan “20 ke 5.”
for i:= 5 to 20 do untuk i: = 5 sampai 20 melakukan
writeln(i*5); writeln (i * 5);

repeat with i = 5 to 20 {p. ulangi dengan i = 5 sampai 20 {p. 593).} 593).}
put i*5 & return after field “product” menaruh * i 5 & kembali setelah lapangan “produk”
end repeat ulangi akhir
\ HyperTalk loop ini akan mengulang 20 kali. Setiap kali itu akan menempatkan string “I love you” ke dalam bidang 3 dan suara bunyi bip.
{No Pascal equivalent} {Tidak setara Pascal}

repeat 20 times {p. ulangi 20 kali {p. 590} 590}
put “I love you “ after field 3 {p. menempatkan “Aku mencintaimu” setelah bidang 3 {p. 415} 415}
beep 1 {p. 1 bip {p. 469} 469}
end repeat ulangi akhir

Quick Draw Graphics
Pascal dan HyperTalk baik memberikan perintah untuk mengakses Macintosh QuickDraw rutinitas Graphics 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, HyperTalk grafis perintah, 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 “pilih” perintah dan kemudian mensimulasikan menyeret mouse di layar dengan menggunakan “drag” perintah. 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 HyperTalk perintah yang diperlukan untuk melaksanakan setara dengan beberapa grafis Pascal perintah seperti “paintCircle” dan “invertRect.”
drawLine (x1,y1,x2,y2); drawLine (x1, y1, x2, y2);

choose line tool {p. memilih piranti baris {p. 429} 429}
drag from x1,y1 to x2,y2 {p. tarik dari x1, y1 ke x2, y2 {hal 431} 431}

frameRect (top,left,bottom,right); frameRect (atas, kiri, bawah, kanan);

choose rectangle tool{p. pilih rectangle tool {p. 429} 429}
drag from left,top,right,bottom {p. drag dari kiri, atas, bawah kanan, {p. 431} 431}

paintRect (r); paintRect (r);

set filled to true {p. mengatur diisi true {p. 495} 495}
choose rectangle tool{p. pilih rectangle tool {p. 429} 429}
drag from x1,y1 to x2,y2 {p. tarik dari x1, y1 ke x2, y2 {hal 431} 431}

paintCircle (x1,y1,r); paintCircle (x1, y1, r);

set filled to true {p. mengatur diisi true {p. 495} 495}
set centered to true {p. set ke true {berpusat p. 495} 495}
choose oval tool {p. memilih alat oval {p. 429} 429}
drag from x1,y1 to x1,y2 {p. tarik dari x1, y1 ke x1, y2 {hal 431} 431}

invertRect(r); invertRect (r);

choose select tool {p. memilih alat pilih {p. 429} 429}
drag from x1,y1 to x2,y2 {p. tarik dari x1, y1 ke x2, y2 {hal 431} 431}
doMenu “invert” {p. doMenu “invert” {hal 421 & 247} 421 & 247}

eraseRect (r); eraseRect (r);

choose select tool {p. memilih alat pilih {p. 429} 429}
drag from x1,y1 to x2,y2 {p. tarik dari x1, y1 ke x2, y2 {hal 431} 431}
doMenu “clear picture” {p. doMenu “gambaran yang jelas” {hal 421} 421}

penSize (4,4); penSize (4,4);

set lineSize to 4{p. set lineSize untuk 4 {p. 497} 497}

penPat (gray); penPat (abu-abu);

set pattern to 10{p. mengatur pola ke 10 {p. 498} 498}

penMode (patXor); penMode (patXor);

{No Hypertalk equivalent.} {No setara Hypertalk.}
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); textFont (3);

set textFont to Chicago {painted text (p. 499)} set {text dicat (hal. 499)} textFont ke Chicago

textFace ([bold,underline]); textFace ([bold, underline]);

set textStyle of button ok to bold, underline {p. textStyle set tombol ok untuk bold, underline {hal 499} 499}

textSize(18); textSize (18);

set textSize of field 2 to 18 {p. set textSize lapangan 2 sampai 18 {p. 499} 499}

textMode (srcXor); textmode (srcXor);

{No HyperTalk equivalent .} {No setara HyperTalk.}

Mouse Control
Macintosh alat-kotak ROM berisi beberapa rutinitas, yang dapat diakses oleh perintah Pascal, untuk melacak peristiwa mouse seperti mengklik tombol mouse dan menggerakkan mouse. “Tombol” fungsi mengembalikan nilai “true” jika tombol mouse ditekan pada saat fungsi ini dipanggil, selain itu mengembalikan kembalian The “getMouse” prosedur koordinat posisi pointer mouse pada “palsu.” waktu prosedur ini disebut. Meskipun ada perintah langsung HyperTalk setara, seperti ditunjukkan di bawah, acara mouse terutama dilacak oleh penangan pesan yang perangkap untuk pesan mouse terkait: “mouseDown,” “mouseUp,” “mouseEnter,” “mouseLeave,” “mouseWithin,” dan ” mouseStillDown “(hal. 383-386). Sebuah “mouseUp” handler pesan umumnya digunakan untuk menanggapi klik mouse normal dalam tombol, bidang dan kartu. Dalam contoh di bawah, “yang mouseLoc” fungsi mengembalikan posisi saat ini pointer mouse, sementara “yang clickLoc” fungsi kembali posisi mouse di klik terakhir.
tf:=button; tf: Tombol =;

put theMouseClick into tf {p. menempatkan theMouseClick ke tf {p. 534} 534}

getmouse(x,y); getmouse (x, y);

put the mouseLoc into xy {p. menempatkan mouseLoc ke xy {p. 529} 529}

put the clickloc into xy {p. menempatkan clickloc ke xy {p. 535} 535}
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); itu: = panjang (str);

get the length of word 3 of field “input” {p. mendapatkan panjang kata 3 lapangan “masukan” {hal 537} 537}

it:=concat(str1,’ literal ‘, str2,’ ‘, str3); itu: = concat (str1, ‘harfiah’, str2, ”, str3);

put str1 & “ literal string “ & str2 && str3 into it menempatkan str1 & “string literal” & str2 & & str3 ke dalamnya
{&& adds a space (p. 415)} {& & Menambahkan spasi (hal. 415)}

it:=copy(source, firstchar, numofchar); itu: = copy (sumber, firstchar, numofchar);

get char 3 to 8 of line 3 of field “source” {p. mendapatkan char 3 sampai 8 dari baris 3 lapangan “sumber” {hal 419} 419}

delete (source, firstchar, numofchar); delete (sumber, firstchar, numofchar);

delete item 3 to 8 of field 3 {p. menghapus angka 3 sampai 8 dari lapangan 3 {p. 420} 420}

insert(source, dest, 5); insert (source, dest, 5);

put selection before fifth word of field 2 {p. menempatkan seleksi sebelum kata kelima dari lapangan 2 {p. 415} 415}
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. Dua perintah HyperTalk lain, “berisi” dan “dalam” mengembalikan nilai “true” jika pola ditemukan di source.
if pos (pattern, source) 0 then jika memungkinkan (pola, sumber) 0 maka
writeln (‘Correct’); writeln (‘Correct’);

if offset (pattern, source) 0 then {p. jika offset (pola, sumber) 0 maka {p. 538} 538}
put “correct” into field “feedback” {p. menempatkan “benar” ke dalam kolom “Komentar” {hal 415} 415}

if source contains pattern then {p. jika sumber berisi pola kemudian {p. 573} 573}
put “correct” into field “feedback” {p. menempatkan “benar” ke dalam kolom “Komentar” {hal 415} 415}

if pattern is in source then {p. jika pola dalam sumber kemudian {p. 573} 573}
put “correct” into field “feedback” {p. menempatkan “benar” ke dalam kolom “Komentar” {hal 415} 415}
Perintah suara
Sebuah catatan suara tunggal dapat diputar dengan menggunakan “catatan” perintah dalam Pascal. Perintah ini memerlukan argumen integer tiga yang menentukan pitch, loudness dan durasi satu nada. The HyperTalk “memainkan” perintah ini 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). The “memainkan” perintah 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) catatan (440, 75, 48)

play “harpsichord” tempo 380 “b3 c#4 def# ga#3” bermain “piano” tempo 380 “b3 c # 4 def # ga # 3”

play “breaking glass” {p. bermain “kaca pecah” {hal 470} 470}

pengguna jenis: array dan catatan
Pada pandangan pertama, HyperTalk tampaknya tidak mendukung jenis ditentukan pengguna seperti array dan catatan. Namun, kartu analog dengan rekor yang dapat berisi banyak bidang nama yang berbeda. Setiap bidang dapat berisi hingga 32 Lapangan K. 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 “skor” untuk setiap kartu di tumpukan. Setiap angka dipisahkan oleh spasi dan dianggap sebuah kata.
Type scorearray = array [1..25] of integer; Jenis scorearray = array [1 .. 25] of integer;
student = record of mahasiswa = catatan
name: string[35]; nama: string [35];
data: scorearray; data: scorearray;
end; akhir;
class = array [1..100] of student; class = array [1 .. 100] mahasiswa;

repeat with n = 1 to number of cards {p. ulangi dengan n = 1 ke nomor kartu {p. 593} 593}
go to card n {p. pergi ke n kartu {hal 407} 407}
put 0 into sum {p. dimasukkan ke dalam jumlah {0 hal 415} 415}
put the number of words in field “scores” into menempatkan jumlah kata dalam kolom “skor” ke
num {p. num {p. 415} 415}
repeat with i = 1 to num {p. ulangi dengan i = 1 sampai num {p. 593} 593}
add word i of field “scores” to sum {p. i menambahkan kata lapangan “skor” untuk jumlah {p. 441} 441}
end repeat ulangi akhir
put sum/num into field average {p. menaruh jumlah / num ke lapangan rata-rata {p. 415} 415}
end repeat ulangi akhir
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 “terbuka” 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’); rewrite (f, ‘nama file’);

open file “filename” {p. buka file “filename” {hal 475} 475}
reset (f,’filename’); reset (f, ‘nama file’);

open (f,’filename’); terbuka (f, ‘nama file’);
Dalam HyperTalk, jika beberapa bidang ditulis ke file mereka harus dipisahkan dengan menulis sebuah “tab” karakter ke disk (tab menulis ke file “nama file”). Catatan atau kartu harus dipisahkan dengan menulis karakter Kembali ke file (menulis kembali ke file “nama file”).
write (f, class[i].data); menulis (f, kelas [i] data.);

write field “data” of card i to file “filename” {p. menulis kolom “data” i kartu ke file “nama file” {hal 478} 478}
HyperTalk The “membaca” perintah hanya membaca karakter dari file tersebut sampai menemukan pembatas seperti “tab” atau “kembali.” Teks yang ditempatkan dalam variabel “itu”. Karakter pemisah harus dihapus sebelum menempatkan teks di lapangan.
read (f, class[i].data); read (f, kelas [i] data.);

read from file “filename” until tab {p. membaca dari file “nama file” sampai tab {p. 476} 476}

close (f); close (f);

close file “filename”{p. menutup file “filename” {hal 475} 475}
Menententukan 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; fungsi daya (num, exp: integer): integer;
var i, answ: integer; var i, answ: integer;
begin mulai
answ:=1; answ: = 1;
for i:=1 to exp do untuk i: = 1 sampai exp melakukan
answ:=answ*num; answ: = answ num *;
power:=answ; daya: answ =;
end; akhir;

function power num,exp {p. fungsi daya num, exp {hal 561} 561}
put 1 into answ {p. menempatkan 1 ke answ {p. 415} 415}
repeat with i = 1 to exp {p. ulangi dengan i = 1 sampai exp {p. 593} 593}
multiply answ by num{p. kalikan answ oleh num {p. 444} 444}
end repeat ulangi akhir
return answ{p. kembali answ {p. 561} 561}
end power akhir kekuasaan
Perintah berikut menunjukkan bagaimana fungsi-fungsi yang didefinisikan di atas dapat disebut.
writeln(power(5,3)); writeln (daya (5,3));

put power (5,3) into field 1{p. meletakkan kekuasaan (5,3) ke lapangan 1 {p. 561} 561}
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: Prosedur daya (num, exp: integer; answ var:
integer); integer);
var i:integer; var i: integer;
begin mulai
answ:=1; answ: = 1;
for i:=1 to exp do untuk i: = 1 sampai exp melakukan
answ:=answ*num; answ: = answ num *;
end; akhir;

on power num,exp pada daya num, exp
global answ{p. global answ {p. 457} 457}
put 1 into answ {p. menempatkan 1 ke answ {p. 415} 415}
repeat with i = 1 to exp {p. ulangi dengan i = 1 sampai exp {p. 593} 593}
multiply answ by num{p. kalikan answ oleh num {p. 444} 444}
end repeat ulangi akhir
end power akhir kekuasaan
Prosedur atau handler yang didefinisikan di atas akan disebut dengan menggunakan perintah berikut. Pada contoh HyperTalk, variabel “answ” global harus dinyatakan dalam setiap pawang yang memanggil subrutin “kekuasaan.”
power (5,3,result); daya (5,3, hasil);
writeln (result); writeln (hasil);

global answ global answ
power 5,3 daya 5,3
put answ into field “output” menempatkan answ ke lapangan “output”
Ringkasan dan Kesimpulan
Berdasarkan perbandingan yang disajikan di atas antara Pascal dan HyperTalk, harus 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 “edit script” dan “melakukan” perintah. “Edit script” dapat digunakan untuk membuat dan memodifikasi script dari dalam naskah HyperTalk, sedangkan “melakukan” perintah dapat digunakan untuk menjalankan perintah yang disimpan dalam sebuah wadah seperti variabel atau lapangan.
Lingkungan HyperCard juga menyediakan editor teks dan jenis alat MacPaint grafis. Alat-alat ini, bersama dengan kemampuan 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.