Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

5/!Phmoz!{bszt!qsphsbnv!x!k{zlv!

BvupMJTQ

74

Najefektywniejsz metod nauki jzyka programowania jest pisanie w nim programw. Zdanie to, niewtpliwie prawdziwe, pojawia si w wielu powanych publikacjach dotyczcych nauki programowania. Oprcz pamiciowego opanowania skadni,
cech, zastosowa itd. okrelonego jzyka niezbdna jest rwnie praktyka. Dlatego te
najwyszy czas napisa nasz pierwszy program.
Programy omwione w tym rozdziale
PROG_001.LSP
Zapoznanie z funkcj princ.
PROG_002.LSP
Zapoznanie z funkcj princ.
Modyfikacja programu PROG_001.LSP.
PROG_003.LSP
Zapoznanie z funkcj princ.
Modyfikacja programu PROG_001.LSP.
PROG_004.LSP
Przykad uycia funkcji terpri, setq, getstring oraz princ.
Pobranie informacji z klawiatury i wypisanie jej na ekran.

75

BvupMJTQ!!qsbluzd{oz!lvst

Jedn z pierwszych rzeczy, ktra powinna by dokonana przy rozpoznawaniu nowego


jzyka programowania jest zaznajomienie si z funkcjonowaniem podstawowych
instrukcji wejcia i wyjcia. Instrukcje te umoliwiaj komunikowanie si programu
z otoczeniem zewntrznym (rodowiskiem). Dobra znajomo instrukcji wejcia-wyjcia
jest nieodzowna w programowaniu (natomiast w fazie wstpnej nauki jzyka stanowi ju
fundament niezwykle pomocny do sukcesywnego badania kolejnych jego elementw).
Jeli chodzi o acuchy tekstowe, podstawow funkcj wejcia w jzyku AutoLISP jest
funkcja getstring, natomiast podstawow funkcj wyjcia jest funkcja princ.
Nasz pierwszy program w AutoLISPie bdzie wyglda nastpujco:
(princ "Pierwszy program w AutoLISPie.")

Prosz Ci, Czytelniku, wpisz powysze wyraenie w linii komend AutoCADa (lub
zaaduj program PROG_001.LSP). Wykonanie tego programu bdzie nastpujce:
Command: (load "prog_001")

Pierwszy program w AutoLISPie."Pierwszy program w


AutoLISPie."
Command:

A teraz kilka uwag na temat tego programu.


Stosujc funkcj princ mwimy AutoLISPowi, e mamy co do wywietlenia.
Jest to take najczciej stosowany sposb przesania informacji na ekran.
Funkcja ta moe obsuy prawie wszystkie przypadki zwizane z wypisaniem
informacji na ekran, drukark, czy te do pliku dyskowego.
Prawie wszystkie standardowe funkcje AutoLISPu zwracaj jak warto.
Funkcja princ zwraca na ekran acuch bdcy argumentem jej wywoania. Std
wanie bierze si acuch Pierwszy program w AutoLISPie. pojawiajcy si
na ekranie po wykonaniu programu. O tym, jak pozby si podwjnego wypisywania tej samej informacji na ekranie, porozmawiamy za chwil.
Wolny format zapisu programu.
Program pisze si umieszczajc kolejne instrukcje w linijkach jedna pod drug.
Ot w niektrych jzykach programowania (FORTRAN, BASIC) obowizuj
cise reguy okrelajce pozycj (w linijce), na ktrej dany skadnik instrukcji
moe si znale.
Np. w jzyku FORTRAN jeli chcemy umieci znak komentarza, to
stawiamy go w kolumnie pierwszej, jeli ma to by numer etykiety to
do tego su kolumny 1 5, jeli chcemy umieci znak kontynuacji
z poprzedniej linijki to umieszczamy go w kolumnie szstej.
Podobnie w jzyku BASIC linia instrukcji musi si zacz od numeru
etykiety.

5/!Phmoz!{bszt!qsphsbnv!x!k{zlv!BvupMJTQ

76

W jzyku AutoLISP jest inaczej. AutoLISP (podobnie jak jzyk C) jest


jzykiem o tzw. wolnym formacie. Krtko mwic nie ma adnych
przymusw. Wszystko moe znale si w kadym miejscu linii, a nawet
zosta rozpisane na 10 linijek. Poza nielicznymi sytuacjami, w dowolnym
miejscu instrukcji mona przej do nowej linii i tam kontynuowa
pisanie. To dlatego, e koniec instrukcji okrelany jest nie przez koniec
linii, ale przez nawias zamykajcy, ktry stawiamy na kocu.
Biae znaki.
Wewntrz instrukcji mona postawi dodatkowe znaki spacji i tabulatory, czy
nawet znaki nowej linii. S to tzw. biae znaki biae, bo na papierze objawiaj
si jako niezadrukowane. Znaki te napotkane wewntrz instrukcji s ignorowane
przez interpreter AutoLISPu. Wstawianie biaych znakw suy nie interpreterowi, lecz programicie. Pomaga w tym, eby program wyglda czytelnie.
Zachcam Ci, Czytelniku, by ju teraz sprbowa uruchomi nasz program na swoim
komputerze. Pomimo tego, e program jest prymitywny. Wane tu jest, by opanowa
technik adowania programw do interpretera AutoLISPu. Kiedy ju program zadziaa
poprawnie i na ekranie pojawi sie nasz tekst, wwczas moemy sprbowa zmodyfikowa ten program. Dziaania te pozwol nam bliej zapozna si z technik
wypisywania informacji na ekran. To si nam bardzo szybko przyda. A zatem w rodek
tekstu ujtego w cudzysw wpiszmy znak \n".
Oto program PROG_002.LSP
(princ "Pierwszy program \nw AutoLISPie.")
(princ)

Wykonanie tego programu bdzie nastpujce:


Command: (load "prog_002")

Pierwszy program
w AutoLISPie.
Command:

Znak \n (n jak: new line, czyli: nowa linia), umieszczony w linii  powoduje, e
w trakcie wypisywania tekstu na ekranie nastpuje przejcie do nowej linii i dalszy cig
tekstu wypisywany jest poniej.
Sdz, e zauwaye rwnie, e w tej wersji programu nie ma ju echa funkcji princ.
Problem ten rozwizuje linia  programu. Wywoanie funkcji princ bez argumentw
powoduje zgrabne zakoczenie funkcji czy programu nie jest wtedy wypisywane
echo poprzedniej instrukcji.
Ewentualna nastpna instrukcja wyprowadzania tekstu zacznie go wyprowadza od
miejsca, w ktrym poprzednia skoczya.

77

BvupMJTQ!!qsbluzd{oz!lvst
Zatem poniszy program PROG_003.LSP
(princ "Pierwszy program \nw AutoLISPie.")
(princ "Koniec.")
(princ)

spowoduje pojawienie si na ekranie tekstu:


Pierwszy program
w AutoLISPie.Koniec.

W programie pierwszym i jego modyfikacjach zapoznalimy si z wypisywaniem


informacji na ekranie przy pomocy funkcji princ. Natomiast z wczytywaniem acucha
danych z klawiatury spotkamy si w poniszym programie.
;**************************************************PROG_004
;Przyklad uzycia funkcji terpri, setq, getstring oraz princ.
;Pobranie informacji z klawiatury
;i wypisanie jej na ekran.
;
;---------;wprowadzenie informacji
(terpri)

(setq

info
(getstring T

"Wprowadz imie i nazwisko: "
);getstring
);setq
;---------;wyprowadzenie informacji
(terpri)

(princ "Wprowadziles: ")

(princ info)

;---------(princ)

;---------;**************************************************KONIEC

Wykonanie powyszego programu bdzie nastpujce:


Command: (load "prog_004")

Wprowadz imie i nazwisko: Marek Dudek

Wprowadziles: Marek Dudek


Command:

5/!Phmoz!{bszt!qsphsbnv!x!k{zlv!BvupMJTQ
Omwmy teraz poszczeglne linie programu:
 Funkcja terpri powoduje przejcie do nowej linii na ekranie tekstowym. Jest ona
rwnowana instrukcji (princ "\n").
Jeli chcesz troch poeksperymentowa, wpisz ponisz lini bdc raz w ekranie tekstowym, a drugi raz w ekranie graficznym AutoCADa:
Command: (princ"Poczatek")(terpri)(terpri)(terpri)(princ
"Koniec")(princ)

To samo zadanie z wykorzystaniem funkcji princ:


Command: (princ "Poczatek\n\n\nKoniec)(princ)

 Funkcja setq jest podstawow funkcj przypisania. W naszym przypadku


funkcja ta podstawia pod zmienn info warto typu string.
Wicej o funkcji setq powiemy sobie w rozdziale o instrukcjach podstawiania.
 Funkcja getstring ma nastpujcy format:
(getstring [<cr>][prompt])

Funkcja getstring zatrzymuje realizacj programu, dopki uytkownik nie


wprowadzi acucha (tekstu) i zwraca wprowadzany acuch.
Jeli argument cr wystpuje i nie jest nil, wprowadzany acuch moe zawiera
spacje (tak jak w powyszym programie) i wwczas naley go koczy przez
ENTER.
Argument prompt jest opcjonalnie wystpujcym acuchem zachty dla
uytkownika, ukazujcym si na ekranie. W powyszym programie ma on
posta: "Wprowadz imie i nazwisko: "
 W tym miejscu nastpuje oddzielenie jednym wierszem informacji wprowadzanej od informacji wyprowadzanej.
Jest to wane jedynie, gdy program jest uruchamiany na stronie tekstowej
AutoCADa.

  W tym miejscu nastpuje wyprowadzenie informacji na ekran. Jeli jeste


ciekaw, dlaczego nie mona tego napisa np. tak:
(princ "Wprowadziles: info")

dokonaj zmiany w kodzie rdowym programu i uruchom go powtrnie. O tym,


jak wyprowadza stae i zmienne w jednej instrukcji princ, powiemy sobie
w dalszej czci ksiki.
 W tym miejscu blokujemy wypisanie na ekranie echa ostatnio zwracanej
wartoci.
Pora teraz na kilka uwag natury oglnej odnonie powyszego programu.

78

79

BvupMJTQ!!qsbluzd{oz!lvst

5/3/2/!Lpnfoubs{f
5/3/2/!Lpnfoubs{f
Ju na pierwszy rzut oka wida, e w programie pojawiy si opisy w ludzkim jzyku.
S to komentarze. Komentarze s tekstami zupenie ignorowanymi przez interpreter, ale
za to s bardzo poyteczne dla programisty. Przypominaj nam one bowiem, co w danym miejscu programu chcielimy zrobi.
W jzyku AutoLISP komentarze mona umieszcza dwojako:
pierwszy sposb to zastosowanie rednika ;. Interpreter AutoLISPu po
napotkaniu takiego znaku ignoruje reszt znakw do koca linijki traktujc je
jako komentarz,
drugi sposb (i tu uwaga wprowadzony od wersji 12 AutoLISPu), to
ograniczenie jakiego tekstu znakami ;| (z lewej) oraz |; (z prawej). Komentarz
taki moe si cign przez wiele linijek np.
;|
Oto przyklad komentarza
wprowadzonego w jezyku
AutoLISP wydanie 12.
|;

Poniewa moesz uywa programu AutoCAD w wersji wczeniejszej ni 12,


wszystkie komentarze w plikach rdowych programw zostay napisane z wykorzystaniem sposobu pierwszego.
Na koniec jeszcze jedna dobra rada:
Czas zuyty na pisanie komentarzy nigdy nie jest czasem straconym. Bardzo szybko
zauwaysz, e czas ten odzyskasz z nawizk w trakcie uruchamiania programu lub
przy pniejszych jego modyfikacjach. Opisuj znaczenie kadej zmiennej, opisuj funkcje i ich argumenty, opisuj te to, co w danym fragmencie programu robisz. Nawet jeli
wtedy, gdy to piszesz, jest to jeszcze dla Ciebie jasne. Opisuj przede wszystkim
wszystkie kruczki, ktre zastosowae. Dla samego siebie i dla tych, ktrzy by moe
modyfikowa bd Twoje programy.
Program ten uwidacznia kilka kolejnych rzeczy zwizanych z programowaniem
w AutoLISPie w szczeglnoci prawdziwy format programu. Poszczeglne czci
skadowe programu zostay od siebie oddzielone i opatrzone komentarzami. Nawiasy
zostay od siebie rozdzielone i znajduj si jeden nad drugim. Linie samego programu
zostay wcite przesunite troch w prawo dla zwikszenia czytelnoci. Taki format
zapisu programu nie jest wymagany, ale uatwia posugiwanie si programem i jest
powszechnie stosowany przez programistw. Pomocne zwaszcza jest ustawienie nawiasw w jednej kolumnie, jeden nad drugim oraz wcicie treci programu, tak jak
zostao to pokazane. Jest to przykad stylu programowania w AutoLISPie (i nie tylko),
przyjcie takiego sposobu zapisu stanie si jasne, gdy nasze programy stan si bardziej
zoone.

5/!Phmoz!{bszt!qsphsbnv!x!k{zlv!BvupMJTQ

7:

Rozdzia ten zapozna Ci z podstawowymi instrukcjami wejcia-wyjcia dla acuchw tekstowych.


W nastpnym rozdziale omwimy instrukcje podstawiania, ktre umoliwi nam ju
prac ze zmiennymi.

81

BvupMJTQ!!qsbluzd{oz!lvst

You might also like