pirmasis dienoraščio įrašas aptarėme ir sužinojome apie LISP terminologiją, sintaksę, duomenų tipus. Mes taip pat išnagrinėjome pagrindinį kai kurių įvadinių funkcijų naudojimą ir kaip panaudoti šias sąvokas. Jei šiame tinklaraštyje esate naujokas, rekomenduoju bent jau peržiūrėdamas tą tinklaraščio įrašą, jei neskaitytumėte jos visos. Bet net jei nusprendėte neperžiūrėti ankstesnio įrašo, manau, kad galėsite sekti šį epizodą ir pasiimti dalį to, kas buvo aptarta anksčiau.

Šį tinklaraščio įrašą (ir keletą būsimų įrašų) mes:

  • Naudokite BLADE redaktorius „į rankas“ per BricsCAD
  • Pažvelkite į daugybę funkcijų, kad pagerintumėte mūsų žinias apie LISP
  • Naudokite Pagalba komanda suprasti LISP funkcijų sintaksę ir jų argumentus
  • Toliau dirbkite su funkcijomis iš Ankstesniame įraše
  • Sukurkite naują programą ir ištirkite daugybę naujų funkcijų
  • Atraskite daugybę būdų, kaip gauti tą patį rezultatą

Peržiūrėti

Mes baigėmės Juoda LISP - #01 su 6 kodo eilutėmis, kurios leido vartotojui pasirinkti tašką ir turėti apskritimą, centruotą tame taške su nurodytu spinduliu, ir kitą apskritimą, taip pat centruotą pasirinktame taške, kurio spindulys padidėjo nurodytu atstumu:

(setq CPT (taškas „Pasirinkite centrinį tašką:“))
(setq RAD (getreal „Įveskite spindulį:“))
(„setq OFF“ (gauti realų „Įveskite poslinkio vertę:“))
(„setq NEWRAD“ (+ RAD OFF))
(komanda „apskritimas“ CPT RAD)
(komanda „apskritimas“ CPT NEWRAD)

HELP>Kūrėjo įrankiai>Kūrėjo nuoroda>LISP>E Išplėstinė LISP (LISt apdorojimas) >Expand BricsCAD LISP funkcijos

Nedaug laiko būtų sutaupyta, jei tektų įvesti tas kodo eilutes kiekvieną kartą, kai norėtume nupiešti dvigubo poslinkio apskritimą. Mūsų LISP programų saugojimas kaip atskirus failus yra atsakymo į šią problemą pradžia.

  1. Paleiskite BricsCAD ir įveskite BLADE paraginus. Bus atidarytas šis langas:LISP ašmenys
  2. Nukopijuokite 6 aukščiau nurodytas kodo eilutes ir įklijuokite jas į dokumento langą taip:LISP ašmenų redaktorius
    Pastaba: Turėsite ištrinti kiekvieną iš 10 kabučių ir jas perrašyti iš naujo. Tinklaraščio straipsnio šriftas nesuderinamas su BLADE redaktoriumi kabučių atžvilgiu.

Šiame epizode mes nesinaudosime visais BLADE redaktoriaus privalumais, tačiau atkreipkite dėmesį, kad yra tam tikrų spalvų kodų. Tai gali būti naudinga, ypač pradedant, nes „klaidos“ gali šiek tiek išsiskirti .:

  • Funkcijų pavadinimai
  • Teksto eilutės (kabutėse)
  • Simboliai
  • Skaičiai

Mes beveik turime darbo programą. Turime sugrupuoti šias kodo eilutes kaip „vieną vienetą“. (Panaikinta) funkcija tai ir daro.

(panaikinti sąrašo simbolio išraišką išraiškos išraiška ...)

Ši funkcija sukuria vartotojo apibrėžtą funkciją, kurią galima naudoti kaip „integruotas“ funkcijas arba kaip komandą. Tam reikia bent trijų argumentų.

  1. Sąrašas. Šis sąrašas gali būti tuščias. Mes naudosime tuščią sąrašą tol, kol būsime pasirengę išsamiau tai aptarti vėliau.
  2. Funkcijos pavadinimas norime apibrėžti. Jei funkcijos pavadinimas prasideda „c:“, funkcijos pavadinimą galima įvesti tiesiai eilutėje kaip ir bet kurią kitą apibrėžtą komandą.
  3. Likę argumentai - išraiškos, kurias norėtumėte atlikti apibrėžta funkcija.

Redaktoriuje pridėkite šį kodą:

kodavimas LISP vadovas mokytis

Pastaba: Jei grafiko spalvos neatitinka jūsų ekrano, galbūt pamiršote ištrinti ir iš naujo įvesti kabutes.

Nenorime padaryti vienos iš dažniausiai pasitaikančių klaidų programuojant ir apskritai CAD - IŠSAUGOKITE failą! Pasirinkite išsaugojimo piktogramą, kurią visi žinome ir mėgstame (net jei daugelis iš jūsų niekada nenaudojo diskelio!). Raudona juosta tarp eilučių numerių kairėje ir naujas kodas dešinėje reiškia, kad tos eilutės buvo pakeistos nuo paskutinio išsaugojimo. USB diske sukūriau aplanką LISP, todėl pereisiu į tą aplanką ir naudosiu OffsetCircles failo pavadinimui. Redaktorius automatiškai pridės .lsp plėtinį.

Gera praktika yra naudoti „įtrauką“, kad kodas būtų lengviau skaitomas / pateikiamas. Atlikite tai tinkamai ir automatiškai su BLADE redaktoriumi. Pasirinkite mygtuką „Suformatuoti (pagražinti)“:

blade LISP BricscAD redaktorius

Dabar turime darbo programą ir turime ją išbandyti. Pasirinkite mygtuką „Įkelti lisp failą į BricsCAD“, tada pasirinkite mygtuką „Perjungti į BricsCAD“. BricsCAD piešimo failas dabar turėtų būti aktyvus.

Paraginę pradėkite įvesti „OffsetCircles“. Atkreipkite dėmesį, kad visos komandos, prasidedančios pirmaisiais pora simbolių, rodomos nuorodų sąraše ir kad „OffsetCircles“ jau įtrauktas į sąrašą. Rodyklių klavišais galite pažymėti „OffsetCircles“ ir laikydamiesi programos raginimo.

Kitas būdas įkelti „lisp“ programos failą ir padaryti jį prieinamą yra naudoti funkciją (įkelti) tiesiai į komandą: eilutė: tokia: komanda: (įkelti „offsetrcircles“) „.lsp“ vis dėlto nereikia galite jį pridėti, jei tai leis jums jaustis patogiau. Kelio nereikia, jei BricsCAD ieškos kelyje yra failo vieta. Jei failas nėra BricsCAD paieškos kelyje, kelio ir failo pavadinimo įtraukimo sintaksė yra:

Komanda: (įkelkite „c: \\ some-where-else \\ box1“)

Mūsų programa toliau veiks tik tada, kai šis piešinys bus atidarytas. LISP programos aktyvios tik tuose brėžiniuose, kuriuose jos yra parašytos ar įkeliamos. Paleidus naują piešinį arba uždarius ir vėl atidarius BricsCAD programą, mes prarandame pakrautas lisp rutinas. Ateities pranešimuose aptarsime daugybę būdų, kaip LISP programas padaryti nuolat prieinamas automatiškai.

„BLADE“ redaktorius

Dabar, kai jaučiame LISP ir naudojamės „BLADE“ redaktoriumi, pradėkime naują programą. Sukursime 7 arba 8 programos versijas, kiekvienoje versijoje pristatant naują funkciją ir koncepciją.

  1. Jei dar neatidarėte, atidarykite „BLADE“ redaktorių: komandų eilutėje: Enter įveskite BLADE.
  2. Viršutiniame kairiajame redaktoriaus kampe pasirinkite piktogramą „Nauja“.
    Redaktorius paprašys sukurti failo pavadinimą.
  3. Įveskite „Box1“ naujam pavadinimui ir įveskite šias kodo eilutes:
    Remiantis tuo, ką sužinojome, šios kodo eilutės turėtų būti prasmingos.
  4. Įvedę visą kodą, pasirinkite Sutaupyti įrankis.
  5. Pasirinkite įrankį „Load lisp…“, įrankį „Switch to BricsCAD“ ir raginime įveskite „BOX1“. (Jis turėtų būti rodomas nuorodų sąraše)
    Jei kodas neveikia tinkamai („užstringa“), palyginkite aukščiau pateiktą grafiką su savo tipo kodu - jis turi tiksliai sutapti!

Šiame kode buvo įvesta nauja sąvoka - priversti tekstą rodytis kitoje eilutėje. Galbūt pastebėjote, kad naudojant mūsų programą „OffsetCircles“ raginimai prašyti vartotojo įvesties buvo rodomi vienas po kito toje pačioje eilutėje komandų eilutėje. Suvedus eilutes taškams mūsų naujoje programoje, kiekviena eilutė prasideda „valdymo kodu“ „\ n….“. Tai priverčia BricsCAD rodyti tekstą naujoje eilutėje arba kitoje komandų eilutėje.

Reikia nepamiršti dviejų dalykų: tai turi būti atgalinis brūkšnys ir mažoji raidė „n“.

Tai pavyzdys to, kas vadinama „mandagiu programavimu“. Vartotojas tikisi, kad kitas veiksmas bus parodytas kitoje eilutėje. Tai yra būdas, kuriuo beveik visos BricsCAD komandos „veikia“, ir kaip programuotojas turėtume pabandyti suderinti BricsCAD veiksmų būdą.

Mandagesnis programavimas

Toliau pateikiamos papildomos mandagios programavimo technikos ir funkcijos. Dauguma jų bus naudojami beveik bet kurioje jūsų sukurtoje programoje.

(getvar g.)
(setvar str val)

Dažnai programa pakeis BricsCAD nustatymus, kad programa veiktų sklandžiau ir mažiau naudotojui sąveikaujant. Įprasta praktika ir mandagumas yra išsaugoti nustatymų, kurie bus pakeisti, reikšmes, kad jas būtų galima atkurti baigus programą.

(greitai str)

Paraginimo funkcija naudojama eilutės argumentui rodyti komandinėje eilutėje. Daugelis vartotojo (getxxx) funkcijų siūlo galimybę įtraukti raginimą, tačiau kartais programuotojas nori suteikti vartotojui šiek tiek daugiau informacijos. Tada galima naudoti (greitą) funkciją.

(princas str)

Ši funkcija yra trikčių šalinimo įrankis ir taip pat gali būti naudojama kaip „valymo“ priemonė. Jį galima naudoti su pasirinktiniu eilutės argumentu. Funkcijos pavadinimas (princas) yra naudojamas „t“ įrašyti į „c“ padą (komandų eilutę). Naudojant be eilutės argumento, nieko nevyksta. Daugiau apie tai kitame skyriuje.

Mūsų programos atnaujinimas šiomis naujomis koncepcijomis

Galbūt pastebėjote, kad vykdant naują komandą BOX1 viskas, kas buvo atlikta kodo eilutėje, kurioje buvo (komandos) funkcija, buvo „atkartota“ prie komandinės eilutės:
komandinės eilutės ašmenys LISP
Tai gali būti naudinga rašant naujas programas. Jei programoje yra klaida, galite tiksliai pamatyti, kokia eilutės komandos dalis gali būti, kad viskas nepavyko. Kai programa tinkamai veikia, tai yra įprasta išjungti šią komandą.

Jūs taip pat galbūt pastebėjote, kad po paskutinio dalyko, kurį atliko mūsų programa - įvedus „c“, kad uždarytume nupieštą daugiakampį, tas „nulis“ buvo nuaidėtas ekrane. Turime prisiminti, kad kiekviena naudojama funkcija „grąžina“ vertę. Išraiškos (+ 1 1) atveju pridėjimo funkcija pateikia 1 ir 1 sumavimo rezultatą, o 2 grąžinamas. Funkcija (komanda) visada grąžina „nulis“ ... galvokite apie tai kaip apie „atlikto“ kodą ... Gera programavimo technika neleisti, kad „nulis“ būtų pakartotas komandinėje eilutėje.

Įtraukime visas šias naujas sąvokas į savo „BOX“ tvarką. Peržiūrėdami ir mokydamiesi, kiekvieną kartą keisdami savo programą, ją išsaugosime kaip eilės numeracijos failą ir nuosekliai pakeisime komandos pavadinimą. Atlikite šiuos programos kodo papildymus:

Baigę atlikti pakeitimus naudokite Išsaugoti kaip įrankį ir naudokite Box2.lsp kaip naują failo pavadinimą.

Eilinė diskusija apie tai, ką mes pakeitėme ir pridėjome:

1 eilutė:

Pakeistas apibrėžiamos komandos pavadinimas į BOX2

2 eilutė:

Pridėta funkcija „getvar“, įdėta į funkciją (setq). Tai gauna ir išsaugo dabartinę CMDECHO sistemos kintamojo vertę.

3 eilutė:

Pridėta funkcija „setvar“, nustatant sistemos CMDECHO kintamojo vertę į 0 (išjungta).

4 eilutė:

Pridėta (greita) funkcija, leidžianti vartotojui sužinoti, ką programa veiks. (Tai ne visada reikalinga ir šiuo atveju tikriausiai yra šiek tiek „per viršų“, bet norėjau parodyti, kaip tai veikia!)

5–9 eilutės:

Jokių pakeitimų.

10 eilutė:

Pridėta (setvar) funkcija, kad CMDECHO sistemos kintamasis būtų pakeistas atgal į tą, kuris buvo prieš jį pakeičiant į 0.

11 eilutė:

Pridėta funkcija (princas) be argumentų. Funkcija (princas) grąžina bet kokio jai perduodamo argumento vertę. Mūsų apsukrus tikslas yra perduoti „nieko“, todėl „nieko“ negrąžinama! Kadangi tai yra paskutinė mūsų programos eilutė, turime tai, kas paprastai vadinama „švariu išėjimu“.

12 eilutė:

Tai tiesiog uždarymo skliaustai atidarymo nustatymo funkcijai 1 eilutėje.

Kai esate įsitikinę, kad diskusija vyksta eilutėmis:

  1. Pasirinkite „Format“ įrankį
  2. Pasirinkite „Load lisp…“ įrankį.
  3. Pasirinkite įrankį „Perjungti į BricsCAD“.

Šie trys veiksmai visada turi būti atliekami po kiekvieno „redagavimo“ ir nuo šiol nebus aprašyti.

Į komandų eilutę įveskite BOX2 ir pastebėkite, kad programa veikia šiek tiek „švariau“:

kodavimas su BLADE LISP

Taigi, jūs turite tai - graži įžanga į BLADE redaktorių ir keletas mandagių programavimo būdų. Kitas įrašas apims mandagesnes programavimo technikas ir įvadą į klaidų gaudymą