Grafikus tervezőrendszerek programozása 2. előadás.

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Sor láncolt ábrázolással
Grafikus tervezőrendszerek programozása 10. előadás.
Operációs Rendszerek I.
C++ programozási nyelv Gyakorlat hét
Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
9. előadás (2005. április 26.) Parancssor argumentum kezelés példák (K&R) Fordítóprogramok A C előfordító 1.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Függvények, mutatók Csernoch Mária.
Mutatók, tömbök, függvények
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
A RobotinoView programozása
Operációs rendszerek gyakorlat sed, awk parancsok.
Grafikus tervezőrendszerek programozása
Grafikus tervezőrendszerek programozása 3. előadás.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Függvények III Logikai függvények. Hamis A HAMIS logikai értéket adja eredményül. HAMIS( ) A függvény alkalmazása helyett egyszerűen beírhatjuk a HAMIS.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
1 Bevezetés a funkcionális programozásba 2009.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Előrendezéses edényrendezés – RADIX „vissza”
Turbo Pascal 11..
Grafikus tervezőrendszerek programozása 8. előadás.
Grafikus tervezőrendszerek programozása 6. előadás.
Grafikus tervezőrendszerek programozása 9. előadás.
Grafikus tervezőrendszerek programozása 7. előadás.
Grafikus tervezőrendszerek programozása 11. előadás.
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
Operátorok Értékadások
Programozási nyelvek.
Hernyák Zoltán Programozási Nyelvek II.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor.
Objektum orientált programozás
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Nemrekurzív programozás ÜA LISP tartalmaz nemrekurzív eszközöket is, mivel azonban funkcionális nyelv, ezeket is függvényként használhatjuk. ÜSokszor a.
Számítógépes grafika I. AUTOCAD alapok
C Programozási alapok.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Script nyelvek előadás
Programozási alapok.
Script nyelvek előadás
Script nyelvek előadás
Kifejezések C#-ban.
Total commander.
Script nyelvek előadás
A CLIPS keretrendszer
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Algoritmus készítés.
Előadás másolata:

Grafikus tervezőrendszerek programozása 2. előadás

AutoLisp alapelemek (ismétlés) Alapelemek: –Listák –Atomok Konstans atomok Szimbólikus atomok –Speciális atomok nil, t

Lisp interpreter (ismétlés) Interaktív végrehajtás Lisp végrehajtási ciklus: read-eval-print –Beolvassa a „programot” (file vagy gépelt) –Kiértékeli –Az eredményt kinyomtatja

Kiértékelés sorrendje (ismétlés) Konstans atom értéke: maga az atom Szimbólikus atom értéke: a szimbólumhoz rendelt értéke Lista esetén: –Az első elem a listában egy függvény neve –A többi elem az argumentumokat jelenti –Függvény lista is lehet argumentum –Általános alak: (függvény1 arg1... (függvény2 arga)...)

Listák A lista elemeit el kell érni, ehhez a listát részekre kell szedni –Megkülönböztetjük a lista első elemét (fejét) és maradékát A lista feje is egy S-kifejezés, így atom vagy lista A lista maradéka „mindig lista”

Lista példa (ez egy lista) –Lista feje: ez –Lista maradéka: (egy lista) ((elso elem)(masodik elem)(harmadik)) –Lista feje: (elso elem) –Lista maradéka: ((masodik elem)(harmadik)) (egy-elem) –Lista feje: egy-elem –Lista maradéka: () vagy üres lista

Lista példa Üres lista: () vagy nil Nem üres lista: (nil) –Lista feje: nil –Lista maradéka !!!: () vagy nil

Pontozott párok Szükség lehet olyan listára, amelynek a maradéka nem lista Két S-kifejezés, közöttük egy pont (fej. maradek) –Lista feje: fej –Lista maradéka !!!: maradek

Pontozott párok Maradék is lehet S-kifejezés (fej. (pont utani lista)) –Lista feje: fej –Lista maradéka: (pont utani lista) Ami egyenértékű a következővel (fej (pont utani lista)) –Lista feje: fej –Lista maradéka: (pont utani lista)

Pontozott párok Minden lista egyben pontozott pár is (fej. (pont. (utani. (lista. nil)))) De általában nem ezt a jelölést hanem a hagyományos jelölést használjuk (fej pont utani lista. nil)

Listák reprezentálása 1. Listák reprezentálhatók bináris faként Bináris fa levelei az atomok Bináris csomópontok (Kétfelé ágaznak el) Egyszerű példa: (a b)

Listák reprezentálása 2. Csomóponttól bal és jobb oldali ág indul –Bal oldali ág lekérdezése: car –Jobb oldali ág lekérdezése: cdr (mindig listát ad vissza !!!) Az „utolsó” atom egy üres lista vagy nil –Egyszerű példa: (a b) (car ‘(a b)) = a (cdr ‘(a b)) = (b) (car (cdr ‘(a b))) = b (cdr (cdr ‘(a b))) = nil

Listák reprezentálása 3. ( (a b) (c d) ) (car...) = (a b) (car (car...)) = a (cdr...) = ((c d)) (car (cdr...)) = (c d) ( () () )

Listák létrehozása Kifejezések sorozatából lista: list (list ‘a ‘b ‘c)=(a b c) Két kifejezésből lista: cons (construct) (cons ‘a ())=(a) (cons ‘a (cons ‘b (cons ‘c ()))) =(a b c) (cons ‘a ‘(b c))=(a b c)

Pontozott párok 1. Második argumentum is atom ! (cons ‘a ‘b) = (a. b) (car ‘(a. b)) = a (cdr ‘(a. b)) = b (list ‘a ‘b) = (a b) (car ‘(a b)) = a (cdr ‘(a b)) = (b)

Pontozott párok 2. (cons ‘a (cons ‘b ‘c)) = (a b. c) Pont utáni rész a lista cdr része (a. (b. c)) (a. (b. (c. nil))) (a b c)

Listakezelő függvények 1. car és cdr függvények kombinációja: –cadr, cddr, caar, cdar –caaar, caadr, caddr, cdddr Utolsó elem elérése (last ‘(a b c)) = c Lista n-edik elemének elérése (nth 2 ‘(0 1 2))=2 (nth 0 ‘(a b c))=a

Listakezelő függvények 2. Elemek sorrendjének megváltoztatása (reverse ‘(a b c))= (c b a) (reverse ‘(1 2 (3)))= ((3) 2 1) Listák összefűzése (append ‘(m a) ‘(m a)) = (m a m a) Lista hossza (length ‘(1 2 3))= 3 (length ‘())= 0 Elem kicserélése (subst ‘l ‘k ‘((m a) k i) ) = ((m a) l i)

Függvények definíciója (defun szimbólum (arg1 arg2... / arg3...) kifejezések... ) –szimbólum – a függvény neve –arg1, arg2,... – a függvény argumentumai –arg3... – lokális változók –kifejezések – a függvény végrehajtása során értékelődnek ki

Függvény visszatérési értéke Minden függvénynek van visszatérési értéke ! –C programozási nyelvben van void típus, itt nincs. –Legfeljebb nem vesszük figyelembe a visszaadott értéket. A visszatérési érték az utolsó kifejezés értéke !

Függvény példa Visszatérési érték: (defun add23 (x) (+ 23 x) )=add23 (add23 32)=55 (add23 4.0)= (defun masodik (x) (car (cdr x)) )=masodik (masodik ‘(1 2 3))=2

Függvény neve A függvények neve írja le, hogy mit csinál a függvény: –Jó: rajz_negyszog, doboz –Rossz: xxzedsf, int34 Beépített függvény nevét ne használjuk, mert így a beépített függvény nem lesz többé használható.

Bonyolultabb példa Egy mozi tulajdonosa szeretné megállapítani a jegyek árát. Minnél drágább a jegy annál kevesebb a látogató a moziban. Több előadás alapján sikerült megállapítania egy kapcsolatot a jegy ára és a résztvevők száma között.

Összefüggések 5 dolláros jegy árnál 210 ember néz meg egy filmet. Ha csökkenti az árat 10 centtel, akkor 15-el több ember jön el. (De több ember több költséggel jár.) Minden előadás 180 dollárba kerül (film ára). Minden látogató 4 centbe kerül ezen felül.

Kérdések A mozi tulajdonosa szeretné megtudni, hogy milyen kapcsolat van a profit és a jegy ára között, ill. milyen jegy árnál kereshet a legtöbbet.

Kapcsolatok profit = bevétel – költség bevétel = látogatók száma * jegy ára –Látogatók száma a jegy árától függ: 210 ember 5$ -os áron Ezen felül 0.10$15 ember (eltérés)5$ – árx x = … költség = 180$ $ * látogatók száma

Program 1. (defun profit (price) (- (* (+ 210 (* (/ ) ( price))) price) (+ 180 (* 0.04 (+ 210 (* (/ ) ( price)))))))

Program 2. (defun profit (ár) (- (bevétel ár) (kiadás ár)) ) (defun bevétel (ár) (* (résztvevők ár) ár) ) (defun kiadás (ár) (+ 180 (* 0.04 (résztvevők ár))) ) (defun résztvevők (ár) (+ 210 (* (/ ) ( ár))) )

Értékadás, változók (setq szimbólum kifejezés) Beállítja a szimbólumot / változót a második argumentum / kifejezés kiértékelésének eredményére Például: –(setq radius 2.3)=2.3 –radius=2.3 –(setq lista ‘(1 2))=(1 2) –(setq szam (+ 2 radius))=4.3 –(setq a 1.2 b 3.4)=3.4

Változók típusa A változóknak nincs előredefiniált típusa Bármilyen típusú lehet (szám, szöveg, lista,...) Típusát menet közben is változtathatja!!! Változó értéke (setq radius 2.3) = 2.3 (setq radius “aa”) = “aa” (setq radius ‘(1 2 3)) = (1 2 3)

Változók neve A változók neve írja le, hogy mit tartalmaz: –Jó: kezdopont, hossz –Rossz: tt, val34 Beépített függvény vagy változó nevét ne használjuk, mert így a beépített függvény vagy változó eredeti értéke nem lesz többé használható. Például ne definiáljuk: nil, car, cdr

Változók használata Egy változót csak egy dologra használjunk Próbáljuk elkerülni a globális változók használatát Nagyobb programban konstans adatok helyett is használjunk változót, így könnyebb később megváltoztatni

Még egy értékadó függvény (set szimbólum kifejezés) Beállítja a szimbólum kiértékelésének eredményét a kifejezés kiértékelésének eredményére Például: –(setq a 6.0)=6.0 –(set ‘b a)=6.0 –b=6.0 –(set ‘c ‘b)=b –(set c 1)=1 –c=b –b=1

Lokális-globális változók Függvényen kívül használt setq, set globális változót definiál Lokális változó definiálása: (defun fvg ( / lok1 )... ) Egy lokális változó „eltakarhat” (shadow) egy másik globális vagy lokális változót

Példa 1. (defun a () (setq x 2) ) (setq x 1) (a) ;belépésnél (setq x 2) x x1 x1 x2 x2

Példa 2. (defun a ( x ) ; arg -> új doboz (setq x 2) ); kilépésnél elveszünk dobozt (setq x 1) (a 3) ;belépésnél (setq x 2) x x1 x1 x1 x1 3 2

Példa 3. (defun a ( / x ) ; lokális változó -> új doboz (setq x 2) ) ; kilépésnél elveszünk dobozt (setq x 1) (a) ;belépésnél (setq x 2) x x1 x1 x1 x1 nil 2

Függvény függvényben Melyik változó és függvény honnan érhető el ? (defun my_prog ( / Var1 Var2) (defun sub_prog ( ) (list Var1 Var2) ) (setq Var3 (sub_prog)) )

AutoCAD parancs definiálása A függvény neve speciálisan definiált: C:parancs_nev A függvény argumentistája üres kell legyen Az így definiált függvény közvetlenül végrehajtható AutoCAD parancs lesz ! (defun c:ketto () (+ 1 1) )

Összehasonlítás 1. AutoLISP AutoCAD (defun ketto () (defun c:ketto () (+ 1 1) (+ 1 1) ) Command: (ketto) Command: ketto 2

Összehasonlítás 2. Hogyan lehet definiálni egy függvényt ? –(defun drawline ()... ) –(defun drawline (/ pntl pnt2)... ) –(defun drawline (a / pntl pnt2)... ) –(defun C:drawline ()... ) –(defun C:drawline (/ pntl pnt2)... )

AutoCAD parancs használata AutoCAD parancsot hajt végre az AutoLISP programból (command argumentumok... ) Az argumentumok lehetnek számok, sztringek vagy pont listák Az üres sztring ”” jelentése: a SPACE vagy az ENTER billentyű lett lenyomva Argumentum nélkül *Cancel* -nek felel meg

Magyar AutoCAD parancsok Az AutoCAD parancsok magyarul is megadhatók, de ebben az esetben más AutoCAD alatt (pl. spanyol) nem lehet használni Példa –Rossz: (command ”vonal” ”0,0” ”1,1” ””) –Jó: (command ”_line” ”0,0” ”1,1” ””)

AutoCAD parancsok formája linetype : Helyi, lefordított név (vonal) _linetype : Nyelv független parancs -linetype : Dialógus ablak nélküli.linetype : Nem definiálható felül._linetype, _.linetype : Kombináció

AutoCAD parancs példa 1. (defun c:xy () (command ”_line” ”0,0” ”1,0” ””) (command ”_line” ‘(0 0) (list 0 1) ””) )

AutoCAD parancs példa 2. Változók, listák is használhatók (defun c:xy ( / origo ) (setq origo ‘(0 0)) (command ”_line” origo ”1,0” ””) (command ”_line” origo (list 0 1) ””) )

AutoCAD parancs példa 3. AutoCAD parancs felbontható több lépésre (defun c:xy ( / origo ) (setq origo ‘(0 0)) (command ”_line”) ; vonal rajzolás kezdete (command origo) ; első pont ; bármit lehet csinálni közben, ; kivéve AutoCAD parancsot használni (command ”1,0”) ; második pont (command ””) ; parancs lezárása (command ”_line” origo (list 0 1) ””) )