• Nem Talált Eredményt

Tcl/TK és a Prolog

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Tcl/TK és a Prolog"

Copied!
35
0
0

Teljes szövegt

(1)

Tcl/TK és a Prolog

Hegyi P´eter

hegyi@tmit.bme.hu

(2)

????????? ????? ??

????????? ??????? ??

??? ?? ??

??? ?? ??

??? ??????? ??????

??? ????? ??????

????????? ?? ??

????????? ?? ??

??? ????

??? ????

??? ?? ??

(3)

Tool Command Language

ToolKit

(4)

Mit kell tudni róla?

gép és platform független

interpreter alapú (script nyelv)

GUI készítésre való

egyebekkel b˝ovíthet˝o (pl. TCP/IP)

http://www.tcl.tk

(5)

TCL

„csak” egy script nyelv

testvérei

Perl

UNIX C-shell

DE b˝ovíthet˝o!

TCL futtatás

tclsh

interaktív

interinaktív

(6)

Speciális karakterek

$ változók

; következ˝o parancs

# megjegyzés

\

speciális karaktereknek

sorfolytatás

[] azonnal végrehajtandó

{}

nincs helyettesítés (kiv. újsor)

kés˝obb értékeli ki

(7)

TCL szintaxis

szepar´atorok: szóköz, soremelés, TAB form´atum: parancs [argumentumok]

Fordítás

1. szavakra bontás

2. elemzés, helyettesítések (ahol kell!)

balról jobbra

1x olvas, 1x helyettesít!

3. végrehajtás

sorban els˝o szót

a többi argumentum

(8)

Helyettesítés

set x 1 set a x

set b $$a

b = ?

(9)

Helyettesítés

set x 1 set a x

set b $$a

b = $x

(10)

Változók

dinamikus

set/unset

asszociatív tömb: uid(zoli) uid(peter)

m˝uveletek: incr, append...

Kifejezések – expr

set uid(root) 1000 set uid(guest) 200 set login guest

set a [expr $uid($login)+1]

a=201

(11)

Listák

elemek közt szóköz

{}-k között

lista is lehet elem:

lindex { a b { c d e } f } 2 ⇒ c d e

lindex, concat, llength, lappend, linsert, lreplace, lrange,

lappend, split, join ...

Stringek

string parancs és alparancsai:

index, range ...

egyebek: format, scan

(12)

Vezérlési szerkezetek

szokásosak

if–then–elseif

switch

while

for, foreach

break, continue

DE ∀ {} között van:

for { set a 0 } { a < 5 } { incr a } { puts a }

(13)

Eljárások

proc eljárásnév { változók } { függvénytörzs }

return

global

Hibakezelés

catch parancs változó

error üzenet errorInfo hibakód

Állománykezelés

szokásos parancsok:

open, gets, puts, seek, cd, pwd

állományleíró nélkül stdin/stdout a cél

(14)

TK

(ToolKit)

TCL b˝ovítése

GUI készítéshez

script nyelv ez is!!

/usr/lib/tk8.3/demos

(15)

Widget

(16)

Widget

(17)

Widgetek

keretek

gombok

rádiógombok

checkboxok

címkék

menük

vászon

csúszka

beviteli mez˝ok

. . .

(18)

Widgetek – neveik TCL-ben

keretek – frame

gombok – button

rádiógombok – radiobutton

checkboxok – checkbutton

címkék – label

menük – menu

vászon – canvas

csúszka – scrollbar

beviteli mez˝ok – entry

. . .

(19)

Widgetek – Demo

/usr/lib/tk8.3/demos/widget

példa gombokra és beviteli mez ˝okre

(20)

Felépítés

fastruktúra

tetején a main window

main window kihelyezése automatikus

külön ablakok is gyerekek

Nevek

fastruktúrában

UNIX-szer˝uen

/ =.

(21)

Alkossunk!

1. készítsük el a widgetet:

widgettípus elhelyezés -opciónév opcióérték ...

button .b -text "Halihó!" -fg red 2. helyezzük el!

place/pack . . .

(22)

Elhelyezés

placer

pontos elhelyezés

de kézi :(

packer

automatikus elhelyezés

csak irányítani kell

-side oldal

· frame-et levág oldal-ról

· mérete növelhet ˝o: -ipadx, -ipady

· -fill irány / kicsinyítés

-anchor irány

· -padx, -pady

(23)

Elhelyezés – Demo

/usr/lib/tk8.3/demos/widget

elhelyezés bemutatása a címkés példán

(24)

Futás

eseményvezérelt

eseménykezel ˝o hurok

-command opció

eljárások, parancsok

GUI módosítás – configure parancs

destroy

(25)

Futás – Demo

/usr/lib/tk8.3/demos/widget

futtatás bemutatása a gombos példán

(26)

Prolog?

(27)

Prolog?

Tcl/TK-hoz számos nyelv tartalmaz beépített interpretert!

(28)

Prolog?

Tcl/TK-hoz számos nyelv tartalmaz beépített interpretert!

Prolog is!

(29)

De melyik Prolog?

SICStus

Ciao

SWI

ALS

tcl_call(interp., parancs, eredm.)

(30)

Prolog és TCL/TK

1. interpretert alkotunk

tcl_new(-TclInterpreter) 2. futtatunk

tcl_eval(+TclInterpreter, +Command, -Result)

3. interpretert kitöröljük :)

tcl_delete(-TclInterpreter)

(31)

Command

Atom

write(Term)

format(Fmt, Args)

fentiek zárójelezése:

dq(Command) – ””

br(Command) – {}

sqb(Command) – [ ]

fentiek listája Például:

T = "set"

[format(’˜s’,[T]),x,br([a,b,c])] ⇒

set x {a b c}

(32)

Prolog és TCL/TK

TCL-b˝ol visszanyúlhatunk Prologba

prolog Goal

visszatérés: 1, 0, exception

prolog_variables – asszociatív tömb

prolog_event Terms

Demo: egyszer˝u telefonkönyv grafikus felülettel

(33)

Prolog és TK

közvetlenül TK-val is van kapcsolat

tk_new(+Options, -TclInterpreter)

name(+név )

display(+képerny˝o)

tk_main_window(+TclInterpreter, -TkWindow )

tk_destroy_window(+TkWindow )

(34)

Vezérlés

tk_do_one_event

tk_do_one_event(+List)

tk_main_loop

tk_next_event(+Interpr., -Event) Demo: eseményszámláló

(35)

Miért jó ez az egész? ( P

)

(összefoglalás)

gyors fejlesztési lehet ˝oség

programok kommunikációját segíti

áttekinthet˝o, tanulható

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

anélkül számított adatai alapján szembetűnő, hogy - legalábbis iskolázottsági szempontból - a nagy kultu­.. rális központokkal /tk, a hagyományos egyetemi

tron annihilation characteristics in the amorphous state of some metallic glasses it was decided to carry out measurements on one metallic glass in a broader

By comparing curves of the light scattering as a function of scattering angle with the results of a numerical computing method the statistical parameters of

EXPONENCIÁLIS LECSENGÉSI GÖRBÉK ANALÍZISE ITERÁCIÓS ELJÁRÁSSAL.. 'Hungarian Academy

The inferred shape of the lower edge of the spectrum is radically different from that predicted by Ovchinnikov and seems to be better approximated by the result

Thus, an appropriate condition has been found, which excels the Kerr field among the solutions of the stationary field equations 2 / ; a theorem on space-times with

The maximum dead time due to storage is 50^usec which has to be subtracted from the switch selectable nominal channel width, like in measurement 2.. The

[r]