Jan Bielecki Piotr Michakiewicz Turbo Pascal 7.0 OCopyri*ht: Piotr Micha*iewicz i Ireneuaz wituazak, Warszawa 1993 Pnujekt okdadki: Artur J. Praczyk, Lynx-SFT* Redkcja techniczna, korekt i skdd: Zesp wydawnictwa Lynx-SFT'* Redakcj merytoryczna: Autorzy Druk ksiѾki i okdadki: Drukarnia A-Z Druk, Raazyn, ul. Lotnicza 5 tel. 56.06.55 Opraw: Introligatornia Dariuaza Truazczyshiego Raazyn-Rybie, ul. Cicha 45, tel. 23.69.37 Znaki towrowe: Turbo Paacal* 7.0 jest znahiem towarowym firmy Borland Inc. USA i do niej nale wazel*ie prawa do tego produktu. NAZWY WSZYSTKICH FIRM I ICH PRODUKTY WYMIENIONE W NINIEJSZEJ PUBLIKACJI ZOSTAY UYTE JEDYNIE W CELU IDENTYFIKACJI ! Adres korespondencyjny wydawnictw: 02-642 Warazawa, ul. Maklakiewieza 11/44 tel. (0-22) 48.30.04 Adres biura: 02-088 Warazawa, ul. Batorego 16 p.l33 tel./fax (0-22) 25.61.22, fax (0-22) 49.07.21 Niniejaza kaiѾkajeat *II pozycj wydawnictwa Lynx-SFT* WSTl*P RODOWISKO...... MENU. FILE..... EDIT SEARGH RUN...... COMPILE... . DEBUG. TOOLS.. OPTIONS........ WINDOW HELP.... EDYOR........ DYREKTYWY KOMP*ATORA. Dyrektywy przecznikowe. . . Dyrektywy parametryczne... Dyrektywy warunkowe. . . . . . . . Pooatae dyrektywy warunkowe.... KOMPILATOR ZEWNl*TRZ Opcje odpowiadajce dyrektywom kompilatora... Opcje trybu praey kompilatora........ Opcje trybu pracy debuggera Opcje katalogowe....... Plik TPC.CFG. STRUKTURA PROGRAMU BLOKI... PROGRAMY MODUY ZALENOGI MI*DZY MODUAMI I PROGRAMEM. ELEMENTY PODSTAWOWE SYMBOLE PODSTAWOWE. IDENTYFIKATORY. . LICZBY. ETYKIETY ACUCHY... KOMENTARZE TYPY DANYCH ISBN 83-85455-33-7 TYP RZECZYWISTY.. TYP ACUCHOWY.. TYP PROCEDURALNY TYP WYLICZENIOWY TYP OKROJONY 108 109 110 110 111 TYP LOGICZNY .. ..111 TYP ZNAKOWY. ..112 TYP WSKANIKOWY. ..112 TYP TABLICOWY ..114 TYP REKORDOWY . .117 TYP OBIEKTOWY . .119 TYP ZBIOROWY ..122 TYP PLIKOWY ..122 ZGODNO TYPW.... ..123 STAE I ZMIENNE.... ..125 STAE..... ..125 ZMIENNE ..126 STAE INICJOWANE.. ..127 WYRAENIA..... ..131 OPERATORY ARYTMETYCZNE. ... .. . . .131 OPERATORY BITOWE ..131 OPERATORYLOGICZNE....... ..132 OPERATORY ACUCHOWE ..132 OPERATORYZNAKOWO-WSKANIKOWE ..132 OPERATORY MNOGO CIOWE ..133 OPERATORY RELACYJNE.... ..133 OPERATOR WSKAZANIA... ..134 ZMIANA TYPU WYRAENIA ..134 INSTRUKCJE.... 1R5 INSTRUKCJE PROSTE ..135 Instrukcja prypisania. . . . .135 Instrukcja procedury.... . ..135 Instrukcja skoku. ..136 Instrukcja pusta.. ..136 INSTRUKCJE STRUKTURALNE.... ..137 Instrukcja zoona ..137 Instrukcja warunkowa... ..141 Instrukcja iteracyjna. . . . . . . .145 Instrukcja wiѾca . .148 Instrukcja kodu. . . . .151 Instrukcj a asemblerowa. . .153 PROCEDURY I FUNKCJE.... ..154 Dyrektywa Near i Far.... ..1* Dyrektywa Interrupt...... ..1* Dyrektywa Forward. . . . . . . . l E Dyrektywa External... ... ..1; Dyrektywa Aasembler.... ..1* Dyrektywa Inline ..1* FUNKCJE .. l E PARAMETRY... ..1* PARAMETRY OTWARTE.. . .. IE MODU.Y .. l E MODU. SYSTEM .. lE STAE INICdOWANE. .. lE ZMIENNE ..1 * PROCEDURY I FUNKCJE..... ..1 * Procedury sterujce wykonan.iem kodu ..1 * Funkcje przeksztacenia typu... ..1 * Funkcje arytmetyczne.. .. . .1 i Procedury i funkcje porzdkowe ..1 Proceury i funkeje acuchowe ..1 Proeedury wejcia i wyjcia..... . .. lt Dynamicznego przydziau pamici....... .. 2E Funkcje wskanikowe i adresowe........ .. 2C Inne procedury i funkcje .. 2E MODU CRT.... . .. 2l STAE... . .. 2* ZMIENNE . . 2 l PROCEDURY I FUNKCJE..... .. 2* MODU PRINTER...... .. 2* MODU DOS... .. 2* STAE..... .. 2* ZMIENNE .. 2* TYPY.... ... .. 2* PROCEDURY I FUNKCJE.... .. 2* Procedury zwizane z czasem... .. 2* Procedury obsugi przerwa..... .. 2* Funkcje statusu dyskw. .. 2* Funkcje i procedury obrbki plikw..... .. 2* Procedury i funkcje arzdzania katalogami. .. 2i Funkcje obrbki otoczenia procesora komend .. 2* Inne procedury i funkcje .. 2; MODUWINDOS....... .. 2* STAE..... .. 2 4 utvuui*i*u..... .. Typy", .. 238 PROCEDURY I FUNKCJE.. . .. 240 Procedury zwizane z czaaem ... 240 Procedury obaugi przerwa.. ... 243 Funkcje statuau dyakw ... 244 Funkcje i procedury obrbki plikw.. .... 244 Procedury i funkcje zardzania katalogami... .......... 247 Funkcje obrbki otoczenia procesora komend... ........ 248 Inne procedury i funkcje.... .. ..... 249 MODU STRING... ... .. .. 251 MODU GRAPH....... ..... 257 STAE... ..... 257 ZMIENNE....... ..... 266 Typy", .. 266 PROCEDURY I FUNKCJE GRAFICZNE.. ..... 268 MODU OVERLAY.. ..... 300 STAE... . .. 300 ZMIENNE... ... ..... 300 PROCEDURY I FUNKCJE OVERLAY... . .. .. 30* PROGRAMY NARZ*DZIOWE.. .... 305 TEMC - kompilator makrodefinieji edytora systemowego............. 305 STRUKTURA SKRYPTU.... ..... 305 DEKI.ARACJA MAKR . . . . . 306 DEKLARACJA KLAWISZY.. . . . . . 306 KOMENDY J*ZYKA TEML. . . .. . 307 TOUCH - program ustawiajcy dat i czas zaoenia pliku........ .. 317 GREP - progran wyszukiwania cigw znakw.. ..... 317 PRZECZNIKI . . . . . 317 WYAENIA REGULARNE . .. 319 BINOBJ - program konweraji plikw binarnych na pliki.OBJ...... 320 TPTJMOVER - program do aktualiacji bibliotek ..... 321 NIAKE - program do kompilacji zoonych programw.. .. ... 321 OPCJE PROGRAMU MAKE . .... 322 TWORZENIE PLIKW ftOBOCZYCH MAKE . . .. 328 KOMENTARZE ..... 323 REGUY JAWNE... . ... .. 324 REGUY NIEJAWNE ..... 325 LISTA POLECE...... MAKRODEFINICJE.. ...... 328 DYREKTYWY . . . . .. 330 B*DY WYKAZYWANE PRZEZ NIAKE . . . . . . 332 WYKAZ B*DW 335 6 vv* * *r Jyk Turbo Paacal 7.0 jest przeznaczony dla tych wazygtkich, kt, chc twory aplikacje pracujce w rodowisku systemu operacyj DOS. Jeat onjednym z najbardziej popularnychjzykw programowa ktre*o zalety w zaacznyn stopniu powalaj na wykorzystanie gc nauki programowania. KsiѾka ta ma za adanie zapozna uytkowr elementami jzyka Turbo Paacal 7.0 oraz przedstawi integrow rodowiako pracy doatpne dla programisty. Jyk Turbo Paacal 7.0 jeat nastpc wersji Turbo Pascala 6.0, k1 zostaa wzbogacona o nowe moliwoci. Najwaniejaz z nieh jest mc wo praey w dwch zintegrowanyeh rodowiskach pracy. Pierwae, typowym nastpc rodowiska 7'urbo Pascala 6.0, za drugie jest pc bne wizualnie, ale pozwala na wykorzystanie przez to rodowisko paz ci extended. Po tym rozazerzono moliwoci rodowiska o nastpu= pozycje: / elementy programu, np. sowa kluczowe, identyfikatory, komei rze lub inne, mog by wywietlane w rnych kolorach, co n; nie zwiksza cytelno programu; / obiekt ObjectBrowser, sucy do przegldania wyatpujcycl programie elementw, np. moduw lub obiektw oraz okrelaj ich budow i wszelkie odwoania do tych elementw w progran / menu lokalne, pozwalajce na ustawienie odpowiednich par* trw rodowiska tylko dla danego okienka; / menu programw narz*iowych Tools, pozwalajce na docze do menu gwnego innych programw uaugowych, a naatpnie wywoywanie ich be wychodzenia z systemu oraz wywietle komunikatw zwracanych przez te programy w specyalnym oki ku Measages; / doczenie do syatemu wasnych plikw pomocy (help); / moliwo wycofania ostatniej operaeji edytorskiej i grupy oper edytorskich (Undo), a nawet wykonanie cofnicia wycofania ( do); / doczono nowe dyrektywy kompilatora powalajce na konti zmiennych wakanikowych zwracanych prez operator O {g generowanie kodu kontrolujcego wystpienie przepenienia wyniku wykonania operacyi arytmetycznej {$Q}, uycie acuch Programowanie w Turbo Pascal T.0 otwartych ($P}, generowane normac* u* **=G* * waer; Ponadto zwikaono efektywno generowanego kodu. W stosunku do Turbo Pascala 6.0 w obecnej wersji jzyka dodano nastpujce pozycje: / parametry stae i otwartejako parametry formalne procedur i funkcji; / dyrektyw Public, umoliwiajc widoczno deklarowanego elementu obiektu poza moduem, w ktrym ten obiekt zoata zadeklarowany; / sowo kluczowe Inherited, pozwalajee na wywoanie metody przodka bez podawania jego nazwy; / tablice metod dynamicznych pozwalajce w stoaunku do dotych- czas uywanych tablic metod wirtualnych na zmniejazenie potrzeb- nej dla danego obiektu pamici; / modu Strings dostarczajcy procedur i funkcji operujcych na zmiennych typu PChar, czyli acuchach znakw zakoczonych znakiem #0, ktrych makaymalna dugo wynosi 64 KB; / modu WinDoa jest odpowiednikiem moduu Dos, ale wszystkie operacje wykonywane a na acuchach zakoczonych znakiem #0. Dodano naatpujce procedury i funkcje do moduu System: / Aaaigned / Break / Continue / Include / Exclude / High / Low oraz wzbogacono bibliotek Turbo Vision o procedury kontroli danych i nowe obiekty. Wszystkie powyaze nowoci, poza bibliotek Turbo Vision, zostay opisane w tej publikacji. Pominicie Biblioteki Turbo Vision zoatao podyktowane zbyt obszernym tematem jak na tego rodzaju publikacj. weraji jzyka Turbo Paseal, jak i dla uytkownikw programujcyel innych jzykach, ktrzy chcieliby zapozna si z moliwoeiami obec weraji Turbo Pascala 7.0. Cay materia podzielony zoata na rozdziay opisujce rodowisko pr programiaty, jzyk programowania, opis moduw atandardowych, F gramy narzdziowe dostarczane cznie z systemem oraz wykaz b i tabel znakw kodu ASCII. g P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 5 I'* V V V Vl/ I * I't V Po zainatalowaniu pakietu mamy moliwo wyboru pracy w dve zintegrowanych rodowiskach pracy (ZP). rodowiaka te uruchamiane a rnych plikw. Plik TURBO. powoduje uruchomienie ZP w trybie reezywistym, ktre bdzii nazywali rodowiakiem TURBO, za plik TPX.EXE powoduje urw mienie ZP w trybie chronionyn (wirtualnym), okrelanymjako r, wisko TPX. Naley pamita, e pry pracy w trybie chronionym w katalogu ktrym znajduje ai plik TPX.EXE, muaz by umiesezone * DPMll6BI.OVL i RTM.EXE. Czym rni* sig te rodowiska? Oprcz rnicy w opcjach dostpnych w tych rodowiskach zasadn rnic jest moliwo adresaeji pamici. Mikroprocesory 8086 i & pozwalay na adresowanie pamici operacyjnej do 1 MB, za nast czyli mikroproceaory 80286, 80386 oraz 80486, pozwalaj na przekro nie tej granicy i adresowanie pamici operacyjnej do 16 MB dla 802 4 GB dla 80386, 80486. Mimo moliwoci adreaowania wikszego obs pamici, mikroproeeaory te atandardowo pracuj w trybie reczywiat czyli w trybie naladujcym tryb praey mikroproeesorw 8086 i 8I Poniewa obazar pamici powyej 1 MB nie jest doatpny w tr; rzeczywiatym mikroproceaorw 80x86, a tylko w trybie chronionym, * w celu jego wykorzyatania atoauje ai programy obslugi pamici roz rzonej, np. HIMEM.SYS. Aby udoatpni moliwo tworzenia du programw, rodowisko TPX pracuje wanie w trybie chronionym. Podezas uruchamiania dowolnego rodowiska moemy uy odpow nich parametrw. Naley w takim wypadku uy nastpujcej sk* polecenia: T U R Bo (/opeja)[nazwa pliku] lub TPX (/opcja)(nazwa pliku] P. Michakiewicz, I. wituszak gdzie parametr /opeja okrela apoab uruchomienia ZP, za nazwaku okrela nazw programu, ktry cheemy umieci w edytorze ay mowym. Znak + lub apacja po nazwie opeji powoduje jej wlczenie, znak - jej wyczenie. Programowanie w Turbo Pascal 7.0 Doatpne a nastpu*ce opc*e: umozuwa oaworzene pa*ety kolorw w /Cnazwa*pliku - umoliwia podezas uruchomienia ZP wezyta- cie EGA,gdy program uytkownika spowt nie pliku konfiguraeyjnego,okx'elonego przez jej zmian. uytkownika za pomoe nazwa*pliku; midzy - umoliwia zapamitanie,po wyjciu z s liter C i w pliku nie moe wyatpi od- mu,biecego katalogu,ktry at anie si 1 atp. logiem biecym po ponownym uruchomi syatemu; osignicie tego efektu bdzie z - umoliwia rac ZP tzw.dualn co oznacza, we dopiero po ustawieniu opeji Auto Sav e ayatem moe waplpracowa jednoczenie z dwoma kartami graficznymi; jeeli w ayatemie pola Deaktop. komputerowym nie wystpuj dwie karty,to /S - umoliwia,w przypadku braku pamici opeja ta zostanie zignorowana. expand.ed,okrelenie cieki dostpu do ol umoliwia zmian rozmiaru sterty edytora i. ru wymiany,np.do RAM dyaku. jest d ostpna tylko dla rdowiska TURBO; - aduje plik TUftBO.TPL w momeneie at atandardowo uatawionajeat warto minimal- systemu; jeeli opeja jest wyczona,to n* na 28KB; warto makaymalna wynoai 128 za pomoc programu TPUMOVER wyodr KB;parametrpoprawiawydajno,jeeliprze- modul SYSTEM.TPU z biblioteki T twarzany plik znajduje ai na dyaku twardyn. BO.TPL. - umoliwia zmian rozmiaru pamici przezna- - umoliwia zmian rozmiaru aterty prze czonej dla pliku wymiany obslugiwanego przez nej na okno i jeat doatpna tylko z dla rod program RTM.EXE i est dostpna tylko w ska TURBO; moe ona zawiera si w g rodowiaku TPX; wielko tego pliku moe za- cach od 24do 64KB,za atandardowo usta wiera si w granicach od 1024do 1638KB. najes t na warto 32KB. - umoliwia zarezerwowanie 8KB pamiei na - umoliwia zwikszenie wydajnoci ZP p pami ekranu przy uruchomianiu programw umieszezenie kodu nakadek,danych ed5 pracujcych na kartach EGA,VGA i MCGA za nych i innych zaaobw ayatemu w pan* pomoc programu uruchomieniowego (ang.de- EMS; atandardowo jeat wlczona. bbuger). umoliwia zapamitanie informaeji o ayn parametr powinien by uyty podezas pracy z lach pomidzy kolejnymi kompilacjami. ekranem LCD. okrela,czy przy pracy z kart CGA ma wyst- pi nieenie. umoliwia zmian romiaru aterty przeznaczo- nej na nakladki; moe ona zawiera ai w granicach od 64do 256KB,za atandardowo uatawianajeat na warto 112KB. 12 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 ,vi c iv v Wmenu aystemu Turbo Paacal moemy wyrni nastpujce opcje: Edit, Search, Run, Compile, Debug, Toola, Options, Window, Hel* celu przejcia do linii menu naley przycisnѹ klawisz . Po * wszym przyciniciu zoatanie podwietlona opcja File, za przy kolej* ostatnio podwietlona. Po podwietleniu interesujcej naa opeji naci my klawiaz , co apowoduje wywietlenie komend dostpnyi danej opcji. Innym aposobem dostpu do komend danej opcji jes1 bezporednie wywietlenie przez nacinigcie klawisza +pier* litera nazwy opcji. Niektre komend maj moliwo uruchomienia odpowiedniej kon dy, bez wywoywania menu, za pomoc odpowiedniej kombinacji kL szy. Klawisze te s umieazezone z prawej strony nazwy komendy w o* menu. Cz nazw komend zakocona jest trzema kropeczkami, co ozna e po wybraniu danej komendy zoatanie wywietlone dodatkowe okie* suce do wywietlenia lub wpiaania dodatkowych danych. Stt ardowymi przyciskami dostpnymi w takich okienkach a pryciski Cancel - odwoanie komendy i powrt do aktyw okienka edycyjnego. Help - wywietlenie dodatkowych informacji doty* cych uytkowania okienka. Pozoatae przyciaki doatpne w poazczeglnych okienkach s przed wione w opisie komend wywietlajcych dane okienka. Niektre z komend dotycz tylko rodowiska TPX lub Turbo i oznacz s w opisie menu napiaem "tylko TPX" lub "tylko Turbo". 76 P. Michakiewicz, I. wituszak Oprcz menu opiaanego wyej mamy moliwo uruchomienia mt lokalnego dla biecego okienka. Jakie komendy wystpuj w tym mt zaley od danego okienka, ale naley pamita, e kade wywoa komendy z menu lokalnego oddziaywuje tylko na okienko, do ktr naley dane menu lokalne. Menu lokalne wywoujemy pomoc kla szy + lub prez kliknicie okienka prawym pryciski myazki. Programowanie w Turbo Pascal 7.0 FILE Komenda ta powoduje otwarcie nowego okienka edycyjngo o nazwie NONAMExx.PAS. Znaki xx oznaczaj liczb cakowit zakresu od 0 do 99. Kade kolejno otwarte ohno ma t warto zwihszon ojeden. Nazwa tajestjednoczenie tymezasow nazw pliku edytowanego w tyn ohienhu. W momencie zapisywania tego pliku na dysk system wywietli okienko dialogowe, w ktrym bdziemy mogli poda waciw nazw, pod ktr plih zostanie zapisany. F3 l Komenda ta wcytuje plik do nowego ok.ienka edycyjnego lub do okienka aktywnego, po usuniciu najdujcego ai w nim pliku. Po wybraniu tej komendy aystem wywietla okienko dialogowe o nazwie "Open a File", htre umoliwia nastpujce operaeje: O*en - wcytanie wybranego pliku do nowego okienha edycyjnego. Replace - wcytanie wybranego pliku do aktywnego okienka po usuniciu znajdujcego si w nim pliku. Komenda apiauje na dysku plik z aktywnego okienka edycyjnego. Je: plik w aktywnyn okienku ma standardow nazw NONANIExx.PAS zoatanie wywietlone okienko dialogowe, jakie jest wywietlane po * braniu opcji Save as... Save as. . . Komenda pozwala na zmian nazwy pliku z ahtywnego okienha pr; jego zapisaniem na dysku. Po jej wybraniu jest wywietlane okie dialogowe o nazwie "Saue File As", w ktrym moemy oprcz zmi* nazwy pliku zmieni take nazw atacji ora katalogu. RYSUNEK 4 Jeeli na dyaku iatnieje ju plik o podanej nazwie, to jego rozszerze oatanie zmienione na BAK. Po wybraniu pryciaku OK zoatanie wyl nany zapia pliku zgodnie z ustawionyni w okienhu wartociami. Save all Komenda powoduje zapisanie na dyaku wszystkich plihw z wszystki okieneh edycyjnych, htre ulegy modyfihacji od ostatniego zapiaania i na dysku. HYS UNEK 3 18 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 Ii Change dir Komenda pozwala na zmian biecego katalog oraz stacji. Po jej wybraniu zostanie wywietlone okienko dialogowe o nazwie "Change I)irectory", w ktrym moemy dokona zmiany zarwno katalogu, jak i stacji. Wybranie komendy powoduje wywietlenie na ekranie okien ka dial wego o nazwie "Printer Setup". RYSUNEK 6 RYSUNEK 5 W okienku moliwe s nastpujce operacje: OK - zaakceptowanie ustawionych w okienku wartoci. Chdir - wy*wietlenie wszystkich podkatalogw dla katalogu, ktry jest aktualnie wybrany. Revert - przywrcenie poprzedniej awartoci o*ienka dialo gowego. Print Komenda pozwala na wydrukowanie pliku znajdujcego si w aktywnyn* ohienku edycyjnym zgodnie z parametrami ustawionymi w Printer se* tup. 20 P. Michakiewicz, I. wituszak W polu Filter Path moemy okreli ciek dostpu do filtru druka ktrym atandardowo jest plik PRNFLTR. Pole Command Line okrf parametry linii komendy dla drukarki i domy*lnie ustawione jest warto $NOSWAP/EPSON. Pole ostatnie okrela, czy ZP zawi sekwenc* kodw pozwalajcych na wydruk typu bold, italic czy un line. Komenda Printer setup pozwala na okrelenie nastpujcych dzjw drukarek: Epson, HP LaserJet i PostScript przez naatpuj linie komend: standardowo - $NOSWA'/ASCII Epson - $NOSWAP/EPSON HP LaserJet - $NOSWAP/HP PostScript - * $NOSWAP/PS oraz na okrelenie nastpujcych opc*i dodatkowych: - - liczba linii na stron (standardowo 55) Programowanie w Turbo Pascal 7.0 /O[nazwa*pliku] - plik lub urzdzenie wyjciowe,do kt,rego na- Komenda ta pozwala na cofnigcie ostatnio wykonanej operacji Undo : atpi wydruk (standardowo LPTl) efektywna bezporednio po Undo. Cut prze ni akceptowane. * rv*w* ** uu****c*G z nxLyWegO oxenxa eaycy*nego za conego bloku tekatu i umieazezenie go w buforze Clipboard.Tekst z DOS shell bufora moemy weyta w inne miejsca w tekeie,w dowolnym okie edyeyjnyn,za pomoc komendy Paste. Komenda pozwala na tymezasowe opuszezenie ZPjyka Turbo Paseal i przejcie do ayatemu DOS,wykonanie komendy DOS i powrt do ZP. CopY Ctrl+Ins Powrt nastpuje po wydaniu komendy EXIT w syatemie DOS. Komenda pozwala na skopiowanie z aktywnego okienka edyeyjz Alt+X z*naczonego bloku tekstu i umieszezenie go w buforze Clipboard.Tt Exit z tego bufora moemy wezyta w inne miejsca w tekcie,w dowol Komenda powoduje akoezenie pracy w ZP jgzyka Turbo Pascal okienku edycyjnym,za pomoc komendy Paste. i przejcie do ayatemu DOS.W przypadku gdy plik po oatatniej modyf- Paste kacji nie zosta zapiaany na dysku,to przed akoezeniem pracy system Shih+Ins zapyta aig,czy go zapisa.Po wybraniu zapisu na ekranie pojawi si Komenda pozwala na akopiowanie tekatu znajdujcego sig w bufc okienko dialogowe "Save File As". Clipboard do aktywnego okienka edycyjnego.Kopiowny tekstjeat un azezany w tym okienku,zaezynajc od aktualnego pooenia kursor* E D IT Clear Ctrl + Del Undo Alt+BackSpace Komenda pozwala na usunieie z aktywnego okienka edycyjnego az: Komenda pozwala na cofnigcie ostatnio wykonanej operacji edycyjnej, Clipboard ku tekstu.Usunigty tekst nie oatanie umieszeony w bufo Powtrne jej uycie powoduje,e edytor bgdzie kontynuowa cofanie poprzednich operacji edycyjnych.Undo wstawia dowolne znaki,ktre Show clipboard skaaowae,kaauje naki,ktre wstawie,odtwarza te,ktre zostay nadpisane oraz ustawia kursor w poprzednim miejscu.Moliwe jest Komenda powoduje wywietlenie okienka z zawartoci bufora Clipl take eofnigcie operacji wykonanej na bloku tekstu. *'d.Ostatni blok ktr zosta umieazezony w tym buforze,jeat wyn niony.W okienku tym moemy dokonywa operacji edytorshich,pod, Po ustawieniu o cji Group Undo w okienku dialogowym "Editor Op* nie jak w normalnych okienkach ed c *n ch. tiona",ktre jeat dostgpne po wybraniu komendy Options I Environ* ment I Editor,moemy wykonywa tzw.cofnieia grupowe.Moemy wy * ` SEARCH I ' nie odrgbni naatgpujce grupy komend edycyjnych: wstawane,kasowa * n mie sca kursora.Oznacza to e w isan cig I ii ij'" nadpiaywanie,zmia a j Find... znakw moe zoata anulowanyjedn komend Undo,a nie po kolejnym anulowaniupojedynezychznakw. *,;j Komenda pozwala na wyazukanie w tekcie znajdujeym si w akty nyn okienku edycyjnym okrelonego cigu nakw.Po wybraniu kome d na e y krane wywietlane jest okienko dialogowe "Find",w ktry 22 P.Michakiewicz,I.wituszak Programowanie w Turbo Pascal 7.0 r ~ r - rametrw wyszukiwania. Jeeli w chwili wywolania komendy kursor umieazczony by na dwolnym sowie w tekcie, slowo to ostanie wywietlone w polu 'Text to Find'. W pole to wpiaujemy szukany cig znakw. W okienku "Find" moem okreli nastpujce grupy parametrw wyazukiwania zadanego cig: 1. Optiona - pozwala na wczenie lub wylczenie nastpujcych opcji: ouivzn i Casesenaitiue - wczenie powoduje rozrnianie du* ych i malych liter. * Whole worda only - wlczenie powoduje, e podczaa wyszukiwania brane bd pod uwag tylko sowa, to jest cigi znakw ograniczona , apacjami lub znakami interpunkcyjny* mi. ftegular expreasion - wlczenie powoduje, e podczaa wyszu* j*, ;* kiwania rozpoznawane a tak zwane * * znaki uniwersalne: ^,$,.,*,+,(),\. 24 P. Michakiewicz, I. wituszak jrvu n i* ii* VJI;J Vlll Wy/*rajle kerunku szukt od miejaea okrelonego w opcji Origin: * Forward - w kierunku koca pliku. ' Backward - w kierunku pocztku pliku. 3. Scope - pozwala na opcjonalne wybranie zakresu poszuki nia: Global - przeszukiwanie caego pliku. ' Selected text - przeazukiwanie zaznaczonego bloku kstu. 4. Origin - pozwala na opcjonalne wybranie pocztku, od kt go nastpi wyszukiwanie: From curaor - od biecej pozycji kuraora. Entire scope - w calym tekcie lub zaznaczonym b ku. Replace. . . Komenda pozwala na wyazukanie w tekcie znajdujcym si w akty nym okienku edycyjnym okrelonego cigu znakw i zamian go na in: cigznakw. Po wybraniu komendy na ekranie wywietlanejest okien dialogowe "Replace", w ktrym wpisujemy azukany oraz nowy ci znakw oraz mamy moliwo uatawienia parametrw wyszukiwania * * viv*n * Programowanie w Turbo Pascal 7.0 2; Jeeli w chwili wywoania komendy *uraor umGrr****==.r *.r nym sowie w tekcie aowo to zostanie wywietlone w polu 'Text to Find'. W ole to wpisujemy azukany cig zn*w. W pole 'New text' wpisujemy nowy cig znakw, ktry ma zastpi wyszukiwany. Przycisk OK ropo- yna wyazukiwanie pierwazego wyatpienia zadanego cigu znakw, przycisk Change all wyazukuje wazystkie wyatpienia zadanego ci* znakw, za przy<*ak Cancel anuluje wykonanie komendy. W okienku "Replac ' moemy okreli pat'ametry wyszukiwania zada- nego cigu znakw, takie aamejak w okienku komendy Find. Dodatkowo w Optiona wystpuje opcja Prompt on replace, ktra po wczeniu powoduje po kadym wyazukaniu szukanego cigu znakw wywietlenie zapytania potwierdzajcego wymian jednego cigu znakw na dru*. H. Y* UN*x y Search again Komenda powoduje powtrenie ostatnio wykonanej komendy Find lub Replace, pamita parametry uatawione w tych komendach. Go to line number... Komenda pozwala na przejeie do okrelonego wiersza tekatu znajduj cego ai w aktywnym okienku edycyjnym. Po wybraniu komendy RYSU N Ef* 10 26 P. Michakiewicz, I. wituszak wywetlone zostanie okienko dialogowe "Go to Line Number', wpisujemy numer azukanego wiersza. Show last compiler error Programowanie w Turbo Pascal 7.0 Komenda wywietla oatatni komunikat o bdzie, ktry zdarzy si* czaaie ostatniej kompilacji, umieszczajc kursor w okolicach tego b Finc1 error Komenda wywietla ohienko dialogowe "Find Error ', za pomoc ktrego moesz zlokalizowa miejsce, w kt'ym wys*pi bd uruchomienia. Pracujc w obydwch rodowiskach Turbo Pascala, bd uruchomienia powoduje, e kursor automatycnie zostanie uatawiony w miejscu jego wystpienia. Przy bdzie powstaym podczas pracy w systemie DOS naley apamita zwracany przez DOS adres wystpienia tego bdu i wykorzysta okienko "Find Error', w celu znalezieniajego wystpienia. Adres wpisywany w okienku ma format Seg:Ofs, gdzie Seg okrela adres segmentu, za Ofs przesunicie wzgldem pocztku segmentu i jest. okrelony w postaci szesnastkowej. Przy korzystaniu tej komendy musi by wczona opcja Integrated w komendzie Option I Debuger. Find orocedure... Komenda pozwala na odszukanie definicji procedury lub funkcji w aktywnym okienku edycyjnyn. Wybranie komendy powoduje wywietlenie okienka dialogowego "Find Procedure", w ktryn wpisujemy nazw szukanej procedury lub funkcji. Komenda jest dostpna po uruchomieniu programu lub podczas jego krokowego uruchamiania. tt YJ UNGn Iz iyircu Komenda powoduje wywietlenie oatatniego okienka uywanego po przegldania obiektw, moduw, symboli wystpujcych w progr; za pomoc obiektu ObjectBrowser. Obiekt ten aktywowanyjest za pi c komend Objects, Units, Globals i Symbol dostpnych w menu Se* Objects tylko TPX Komenda powoduje wywietlenie okienka "Brnwse:Object", wywiet cego liat obiektw wystpujcych w programie oraz przedstawia z; noci midzy nimi na asadzie drzewa. Jeeli drzewo jest mocno ro zione i mamy trudnoci w jego analizie, to moemy wyezy wy* lanie potomkw danego obiektu za pomoc klawisza <->, za w* ponownie klawiszem <+>. Aby wykona t operacj za pomoc ay; naley klikn na lini dochodzc z lewej strony do nazwy obiektu Chcc dowiedie si co dany obiekt awiera, naley go wyr: i nacisn klawiaz moemy wywietli okienko za rajce list odwoa do danego elementu w programie. W okienkach mamy moliwo wyboru, o ile aktualnie bd dost; opeji S, I, R przez kliknicie na nich myszk lub pomoc klaw odpowiednio , i . Opcje te oznaczaj: - wywietlenie zawartoci obiektu. - wywietlenie drewa, ktre*o pochodzi d obiekt. R - wywietlenie listy odwoa do danego elez tu w programie. Pred uyciem tej komendy program musi zosta skompilowany * ustawionych wszystkich opcjach pola Debugging w menu Option I C piler. Units tylko TPX Komenda powoduje wywietlenie okienka "Browse:Units" wywietl cego list moduw, z ktrych korysta program. 2g P. Michakiewicz, l. wituszak Programowanie w Turbo Pascal 7.0 RYSUNEK 13 Chcc dowiedzie si co dany modul zawiera, naley go wyrni i nacisnѹ klawis lub wykona podwjne kliknicie myszk na tym module. Wynikiem tej operacji bdzie okienko zawierajce list wszyatkich aymboli wyatpujcych w danym module. Identyfikatory symboli poprzedzone s ieh okreleniami: type - identyfikator typu eonst - stala zmienna lub stala inicjowana func - funkeja proc procedura Przez wybranie elementu z tej listy i wcinicie klawisza , i . Opcje te oznaezaj: - wywietlenie zawartoci obiektu. tt Y J UNLK 14 Globals tylko TPX Komenda powoduje wywietlenie okienka "Browse Globals", wyw lajcego liat aymboli wyatpujcych w programie. Poprzez wyrnit i nacinicie klawisza lub podwjne kliknicie myazk interf jcego nas elementu moemy uzyska o nim dokadniejsze dane, je jeat on elementem zoonym, np. rekord lub liat odwola do dan elementu w programie. W okienkach mamy moliwo, o ile aktual bd dostpne, wyboru opeji S, I, R przez kliknicie na nich myszk za pomoc klawiszy odpowiednio , i . O1 te oznaczaj: - vrywietlenie drzewa, z ktrego pochodzi dany obiekt. - wywietlenie listy odwola do danego elemen* tu w programie. - wywietlenie zawartoei obiektu. - wywietlenie drzewa, z ktrego pochodzi d* obiekt. - wywietlenie liaty odwola do danego elem, tu w progranie. 30 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 ; r=*sl* *u** zuscac sxomp*owany uatawionych wszystkich opejach pola Debugging w menu Option I i piler. rrzea uzycem uG* n** uatawionych wazyatkich opcjach pola Debugging w menu Option I Compiler. Cvmhnl. . * tylko TPX Komenda powoduje wywietlenie okienka "Browse Symbol", za pomoc ktrego moemy wyszuka odwoania w programie do okrelonego synb i** H Y5 UNtt ! 5 Jeeli kursor zostal ustawiony na intereaujcym nas symbolu w edytArze, to po wywoaniu tej komendy symbol ten zostanie wstawiony do lin edycyjnej okienka "Browae Symbol". W okienkach mamy moliwo, o ile aktualnie bd dostpne, wyboru opcji S, I, ft przez kliknicie na nieb myszk lub za pomoc klawiszy odpowiednio , i . Opcje te oznaczaj: - wywietlenie zawartoci obiektu. - wywietlenie drzewa, z ktrego pochodzi dany obiekt. - wywietlenie listy odwolai do danego elemen* tu w programie. Przed uyciem tej komendy program musi zosta skompilowany przy ustawionych wszystkich opcjach pola Debugging w menu Option I Com piler. Run Ctrl+F9 Komenda uruchamia program znajdujcy ai w aktywnym o*e edycyjnym. Za pomoc komendy Parameters moemy przekaa, uruchamianego programu parametry. W przypadku gdy od ostatn uruchomienia program zoata zmodyfikowany, to automatycznie ze nie wykonana kompilacja. Step over F8 Komenda pozwala na krokowe uruchomienie programu, to znaczy, * wybraniu tej komendy zostanie wykonana jedna instrukcja progra* Gdy wykonywan inatrukcj jest wywoanie procedury, to procedur; jeat traktowana jako pojedyncza inatrukcja i zoatanie wykonan* je*ym kroku. Trace into F7 , Komenda pozwala na krokowe uruchomienie programu, to znaczy, e wybraniu tej komendy zoatanie wykonana jedna instrukcja progran Gdy wykonywan ina*k*jeat wywoanie procedury, to naatpi pr* cie do jej pierwszej inatrukcji. Procedura nie jest traktowana j* pojedyncza instrukcja i zostanie wykonana w aekwencji krokw. Go to cursor F4 Komenda powoduje wykonanie programu a do miejsca w okien: edycyjnym, w ktrym znajduje ai kuraor. Jeeli kursor znajduje si lin, w ktrej nie wyatpuje adna inatrukcja, to zostanie wywietlo: komunikat. Punktem rozpoczcia wykonywania programu me 15 miejace oatatniego zatrzymania je_go praey, za punktem zakoczen uatawiony punkt przerwania. Program reset Ctrl + F2 Komenda powoduje zakoczenie biecej aesji debuggera jednoczesny , zwolnieniem przydzielonej pamici oraz z zamkniciem otwartych przi progran plikw. ' P M* h k* *c I wituszak 32 ic a iewi z, . Programowanie w Turbo Pascal 7.0 Parameters... Komenda wywietla okienko "Program Parameters", w ktrym wpiauje. my parametry przeayane do programu w chwili jego uruchomienia. W systemie DOS parametry te w chwili wywoywania programu s umie sczane po jego nazwie. Komenda wykonuje kompilacj wszyatkich plikw zwizanych z k lowanym programem podstawowym, ktre ulegy modyfikaeji od niej kompilacji, tworzc plik wynikowy.EXE lub modu.TPU. Je pomoc komendy Compile I Primary file osta okrelony plik pods wy, to zoat,anie on akompilowany; w preciwnym wypadku jakc podatawowy traktowanyjest plik z aktywnego okienka edycyjnego Build Komenda wykonuje kompilacy wazystkich plikw zwianych z kc lowanym programem podstawowym, niezalenie od tego cy uleg* modyfikacyi od oat,atniej kompilacji, cy te nie, tworzc plik wynil .EXE lub modu.TPU. Destination Disk tvlko Turbo Komenda auy do okrelenia docelowego miejsca umieazcenia F wynikowego pow*aego w wyniku kompilac*i. Jeeli ustawimy parai Disk, to plik wynikowy ostanie zapiaany na dyaku, za gdy usta* parametr Memory, to plik wynikowy zapamitywany jest w pami traeony po opuszceniu aystemu Turbo Paacal. Wybrany parametr wywietlany obok nazwy komendy w menu. RYSUNEK 16 COMPILE Compile Alt+ F9 Komenda wykonuje kompilac* programu najdujcego si w aktywnyt okienku edycyjnym. Podczas tego procesu na ekranie wywietlane jes okienko, ktre informuje nas o stupniu zaawanaowania kompilacji ora jej reultaeie. Po zakoceniu kompilacji okienko to naley usuni naciskajc dowolny klawia. Komunikat o ewentualnym bdie zosta* wywietlony u gry ekranu. W alenoci od ustawienia parametru* komendzie Compile I Destination plik wynikowy.EXE bdzie zapisyw* ny na dysku lub w pamici operacyjnej. W przypadku kompilacji na dy plik bdzie zapamitany w tym samym katalogu co plik rdowy lub* katalogu, ktry zosta okrelony za pomoc komendy Compile I Direcb ries. 34 P. Michakiewicz, I. wituszak Primary file... Komenda suy do ustawienia t,ak zwanego pliku podstawowego, k, jako pierwsy zostanie akompilowany w wyniku wykonania kome: Make lub Build. Plik ten okrelamy w okienku dialogowym "prim File"; ajego nazwa oatanie wywietlona obok nawy komendy w me Programowanie w Turbo Pascal 7.0 Komenda powoduje wywietlenie okienka "Infornation", w ktryz stem informuje o przel5iegu ostatniej kompilacji. DEBUG Breakpoints... Komenda powoduje wywietlenie okienka dialogowego "Breakpoir sucego do ustawiania, kasowania ora poprawiania punktw p rwania wykonywanego programu. Rv* IINEK 17 tt Y,5 UNLK ly Clear primary file zosta ustawiony za pomoc komendy Compile I Primary hle. 36 P. Michakiewicz, I. .wituszak W okienku tym umieazczone jest podokienko, w ktrym wypisant wszystkie ustawione punkty przerwania. W okienku moemy wyl nastpujce przyciski: OK - zatwierdzenie ustawionych punktw przerwa i zamknicie okieka. Delete - usunicie punktu przerwania wyrnionego na li r--. - -- -- r- r -- ---r- ---ny jest wyrniony na licie punkt przerwania. Clear all - kasuje wszystkie ustawione punkty przerwania. Programowanie w Turbo Pascal 7.0 Edit - powoduje wywietlenie kolejnego okienka dialogowego "Edit Breakpoint", w ktrym moemy ustawi nowy lub zmodyfikowa wyrniony na licie w poprzednim okienku punkt przerwania; w polu Condition okrelamy warunek, po spenieniu ktrego ma wystpi w danyn punkcie programu prerwanie, za w polu Pass count wpisujemy liezb okrelajc ile ray dany punkt przerwania ma by pominity, aby takie przerwanie aszo; pole File name i Line number okrelaj nazw pliku i numer wiersza dla danego punktu przerwania; przycisk Modify suy do modyfikacji, za przycisk New do ustawienia nowego punktu przerwania. RYSU NEl*21 Aktualnie wywoana procedura lub funkcja wywietlana jest u okienka, za sowo PROGRAM lub nazwa programu umieszczon sowie program w kodzie rdowym u dou okienka. Kada procei lub funkcjajest wywietlana razem z wartociami parametrw wyvr nia. Register Komenda wywietla okiexko "CPU" i uaktywnia je. W okienku noemy obserwowa wartnci rejeatrw i flag. ii uvi*zii *v Call stack Ctrl+ F3 Komenda powoduje otwarcie okienka "Call stack", za pomoc ktre* moemy obaczy sekwencj wywoa procedur lub funkcji, a do osi* nicia procedury lub funkcji biecej podcas uywania komendy Run I Trace into. 38 P. M*chakiewicz, I. wituszak Watch Komenda wywietla okienko "Watches", ktrego zadaniemjest wy* lenie wartoci ustawionych w nim wyrae po kadym uruchomie programu i ustawiajejako aktywne. Programowanie w Turbo Pascal 7.0 RYSUNEK22 Uruchomienie moe by take wykonane za pomoc komend St,ep over i Trace int,o z menu ftun. Korzystajc z tych komend moemy ledzi , miany wartoci ustawionych w o*ienku wyrae. *. r * vivzn z* 40 P. Michakiewicz, I. wituszak ':;cr; RYSUNEK24 Output Komenda wywietla okienko "Output" i ustawiajejako aktywne. Oki ko pozwala na podgld ekranu wyjciowego dla uruchamianego pro* mu w ramach integrowanego rodowiska pracy. Mimo e okienk* wyglda jak oliienko edycyjne, to nie mona na nim wykona ad operacji edycyjnej. User screen Alt+F5 Komenda powl podgld caego ehranu wyjciowego dla uruel mianego programu. Aby powrci do zint,egrowanego rodowiska pra naley nacianѹ dowolny hlawisz hlawiatury lub mys*i. Evaluate/modify... Ctrl+F4 Komenda wywietla oliienko "Evaluate and Modify ', ktrego zadanie jest wywietlenie wartoci us*wionych w nim miennych lub wyrae a *e umoliwia nadanie nowych wartoci okrelonej zmiennej. Programowanie w Turbo Pascal 7.0 RYSUNEK25 t*Y SUNEK26 W przypadku gdy p u my w*d **nie *n umie* ne p )* W przypad entyfikatorze lub ku gdy pracujemy w ed to rze i kursor ustawiony jest *=u =**ou**.* v*vc4w *v ew vaiue mozemy poaczas uruchamiani *' ""***llc w potu ed* p d E * iennej now warto.W okienku moemy wybra nastpuj * * Add breakpoint... II Evaluate - powodu e obliczenie i wywietleni * Komenda powoduje wywi J e wartoci ustawia ' aucego do d etlenie ohienka dialogowego "Add Break* nych w polu Expression. int ' odania i modyfikacji punktw przerwania wykon w*ego programu,ktre wywietlane s w Modify - ohrela now warto dla zmiennej ustawionej w poh *kienko to wygldem odpowi o*e*u Breakpoint Expression. otrzymujemypo wybr ada okienku "Edit Breakpoint",kt hu wystpuj na *lu opcji Edit w okienku "Breakpoint,s".W okie: stpujce pola: Add watch... Ctrl+F7 Condition o spenieniu ktrego ma wyst - okrela warunek,p Komenda wywietla okienko "Add Watch ',za pomoc ktrego moe* *a : w danym pun**e programu przerwanie. p wpisa do okienka "Watches" wyraenie lub nazw miennej,kt *r*id-; pass _ warto ma zosta wypisana w ohienku "Watches" podczas uruchomieni count wpisujemy liczb okrelajc ile razy dany punk programu. z z a ma by pominity,aby takie przerwani, a* File name, - okrelaj n*w Z.ine number punktu przerw*pliku i numer wiersza dla daneg* :IR* *!l ; * az nastpujce przycs*; 42 P.Michakiewicz,I.wituszak Programowanie w Turbo Pascal 7.0 43 iviomy New TOOLS Messages powoduje uatawienia nowego punktu przerwania. Komenda powoduje wywietlenie okienka "Messagea", aucego do wy. wietlania komunikatw zwracanych przez programy zewntrzne, np, program Grep. wiednio opiaanym wyej klawiazom Ctrl+Ente epacji. Go to next Alt+ F8 Komenda po jej pierwszym wybraniu powoduje prejcie do naat pozycji w liatach wywietlanych przez okienka Messages i Browst P*y kadym nastpnym wyborze t,ej komendy zostanie wy szukan lejne wystpienie okrelonego w licie symbolu w tekcie rdo programu. Wyazukiwanie odbywa ai w kierunku koca programu Go to previous Alt+F7 Komenda po jej pierwszym wybraniu powoduje przejcie do poprze pozycyi w listach wy y P*y kadym nastpnymtl ch rzez okienka Mesaa ea i Browse, lejne wystPieni wyborze tej komendy zoatanie wyazukane e okrelonego w licie symbolu w tekcie rdov programu. Wyazukiwanie odbywa ai w kierunku pocztku progran Grep Shift+F2 Komenla powoduje wywoanie programu narzdziowego Grep, k*ry* doatarczany razem z jzykiem Turbo Paacal. Jeat on opiaany w rozdzi "Programy narzgdziowe". RY UN*K 27 Doatpne a naatpujce komendy: Ctrl+Enter - powoduje przejcie do tekatu rdowego oraz * mknicie okienka Meaaagea, jeeli opcja Cloae on g to aource w menu Options I Enviro- nment I Prefer* ces jeat wczona. Space * - powoduje pod*wietlenie wieraza w tekci (klawiaz apac*i) rdowym programu, ktry zawiera aymbol ahb alnie wybranej linii komunikatw okienka Messa* Alt+F10 - powoduje wywietlenie menu lokalnego dla okie* Mesaagea, gdzie Clear powoduje wyczyszeefl okenka, za pozoatae dwe opc*e odpowada* oP P. Michakiewicz, i. wituszak y 5 . ,tGI -lfi. : *,* *; ' * **bs* i*5(git* ' 8 *ji;, , ** ** ' '*q. **, Programowanie w Turbo Pascal 7.0 allowed *** ' *' 6* ny kod moduu ma by nakadk. Opeja odpow Compiler... dyrektywie przecznikowej kompilatora {$O). Komenda powoduje wywietlenie okienka '*Compiler Optiona'*, suceg do ustalenia parametrw dziaania kompilatora. Word align - opcja powoduje zapamitanie danych w pan data pre ich wyrwnanie do granicy sowa masyno, lub bajtu. Jeeli opejajest wczona, to mienne 1 wyrwnywane do granicy sowa masynowego, e efektem jeat azybsy dostp do tych zmiennyc pamiei. Opeja ta dotyczy procesorw typu 80x86 nie daje efektu pry procesorze 8088. Opeja odpo* da dyrektywie przecznikowej kompilatora {$A 286 - opeja powoduje uatawienie rodzaju generowa inatruetiona kodu w alenoci od procesora. Jeeli opeja wyczona, to generowany jest kod dla proce, 8086. Dla opeji wczonej, w celu optymalizacji k generowanego programu, kompilator uywa do* kowo inatrukeji proceaora 80286. Naley pami* e wygenerowanie kodu dla proceaora 80286 uniei liwia uruchomienie danego programu przy ko ataniu z komputerw opartych o proceaory 8I i 8086. Opeja odpowiada dyrektywie przeczniko* kompilatora {$G}. RYSUNEK 28 Runiime errorg Wazyatkie parametry zoatay podielone na grupy umieazezone w osob nych polach. Pole wczone zaznaeone jeat znakiem X. Pole moem* "**** - wczeie opeji powoduje, e wygenerowany kod 1 wczy i wyczy pomoc klawisza spacji. Moemy wyrni nas* .** * checking dzie podlega kontroli zgodnoci indekaw tab p*jce grupy parametrw: *4**i*** * i acuchw z wartociami zadeklarowanymi, Je naatpi takie przekroczenie zakreau, to program : Code generation atanie zatrzymany i zoatanie wywietlony komunil3 Force far - okrela rodzaj odwoania do procedur i funkeji. Je* * * j*'*'' o *dzie. Opeja odpowiada dyrektywie przeczni* calla opejajest wcona, to waystkie odwoania a odwo '*'**'*' wej kompilatora {$R}. *:t ), w przeciwnym wypadkua ** ** Stack aniami dalekimi (FAR - wczenie opeji powoduje automatyczne generowan to odwoania bliakie (NEAR). Jeeli opeja jeat wy!,* j* * * checking kodu, ktry podezaa wywoania procedury lub funk czona, a procedura lub funkeja zadeklarowanajest* powoduje kontol doatpnej pamici na zmienne 1 czci opiaowej moduu (interface), to kompila* kalne. Jeeli wyatpi brak takiej pamici lub obsz; mimo wyeenia opcji traktuje odwoania do m* ****, jej jeat may, to program zoataie zatrzyma jako dalekie. W prypadku uywania nakadek oP9 *:t*,t . ..: i zoatarie wywietlony komunikat o bdzie. Op naley wcy. Opeja odpowiada dyrektywie p* - * ne* * odpowiada dyrektywie przecnikowej kompilato* cznikowej kompilatora {$F). ****;*= - {$S}. :, *;; 46 P. Michakiewicz, I. wituszak ' Programowanie w Turbo Pascal 7.0 cia/wyj*caprogramzoaane zacrzy*a*ly 1 wyaw.*uli ai komunikat o bdzie. W przeciwnym wypadku naley aamemu zapewni kontrol bdw za pomoc funkeji IOR.eault. Opcja odpowiada dyrektywe przecznikowej kompilatora {$I}. Overflow - gdy opejajest wczona, to dla nastpujeych operacji checking arytmetycznych wystpi kontrola przepenienia: +, -, *, Aba, Sqr, Succ, Pred. W przypadku wyatpienia przepenienia nastpi zakoezenie programu i zosta nie wywietlony komunikat o bdzie. Opeja odpowiada dyrektywie przecznikowej kompilatora {$Q), Syntaac options Strict var- - wczenie opcji powoduje cis kontrol zadekla atrings rowanego i aktualnego acucha, powodujc przy wikszej dugoci acucha aktualnego wyatpienie bdu. Przy opeji wyczonej kontrola ta nie wyatpu je. Opeja odpowiada dyrektywie przecznikowej kompilatora {$V}. Complet,e - opeja powoduje optymaliza* generowanego kodu boolean eval dla wyrae logicznych, zawierajcych operatory la giczne and i or. Jeeli opcja jest wczona, to anali zowane jest cae wyraenie logiczne, nawetjeeli po analizie czci tego wyraenia znanyjestjego wynik , Przy opcji wyczonej obliczanie wyraenia koey ai z chwil uatalenia wartoci wyraenia. Opeja odpowiada dyrektywie przecznikowej kompilatora {$B}. Extended - wczenie opeji powoduje uatawienie zgodnoci po ayntax midzy typem PChar i tablieami znakw zaczynj* cymi si od indeksu zerowego oraz pozwala na tre ktowanie funkeji jako procedur, powodujc zignom wanie ich wynikw. Opeja odpowiada dyrektyw* przecznikowej kompilatora {$X}. da dyrektywie przeeznikowej kompilatora {$T Open - wczenie opeji powoduje, e uycie aowa St parametera bdie oznaczao tzw. acuch otwarty, za gdy o jest wyczona, to sowo String zaclowuje znacz z poprzednich weraji jzyka Turbo Paseal. O odpowiada dyrektywie przecznikowej kompil {$P}. Debugging Debug - wczenie opeji powoduje generowanie inforxna* information wyatpujcych bdach i umieszczenie ich w plik .EXE i.TPU. Umoliwia to lokalizacj bdw pomoc komendy Find Error. Uatawienie takie zwala na krokowe uruchamianie programu i u: wianie punktw przerwania dziaaia progra Opcja odpowiada dyrektywie przecznikowej k* pilatora {$D}. - wczenie opeji powoduje automatyczne generowa aymbola kodu zawierajcego infornacje o nazwach i typ; wazyathich zmiennych i ata.ych, ktre wyatpuj* czci implementacyjnej moduw oraz w funkcj* i procedurach. Pozwala to podczaa uruchamia* programu na kontrol i modyfikacj wartuci zmi* nej. Opcja odpowiada dyrektywie przeczniko* kompilatora {$L}. Symbol - wczenie opeji powoduje, e kompilator genen infornation informaje o aymbolach wyatgpujcyeh w progran (tylko TPX) oraz odwoania do tych aymboli. Dane te wykorzys* wane a prez obiekt ObjectBrowser, uruchamia za pomoc komend Object, Unita, Globals i Symbo opeji menu Search. Nun*eric processing 8087/80287 - wczenie opeji powoduje, e program bdzie wyh rzyatywa koprocesor arytmetyczny do wykonywan operacji na liczbach zmiennoprzecinkowych we wsz atkich doatpnych typach rzeczywiatych: Wyczen opeji apowoduje, e do wykonania tych operacji uy zoatanie biblioteka, ktra bgdzie emulowaa kopr Typed - opcja okrela rodzaj wakanika generowanego p** s*t*. operat,or operator *. Jeeli opejajeat wyczona, tu rezultate ,*,*"*.* uycia operatora * jeat typ Pointer, ktry jeat ka* patybilny ze wazyatkimi typami wakanikowy* Gdy opeja jest wczona, to wynikiem jeat wska* 48 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 4 -'-J ** przecznihowej hompilatora ($N). Emulation - wczenie opcji powoduje, e w przypadku braku koproceaora aryt*etycznego zoatanie doczona bib lioteka, ktra go emuluje. Opcja odpowiada dyrekty wie przecnikowej kompilatora ($E}. Coditional de*ines Pole to auy do wprowadzania definicji aymboli, ktre odnosz ai do warunkowych dyrektyw kompilatora. Nazwy te muaz by oddzielone rednikami. Memory sizes. . . Komenda powoduje otwarcie ohienka dialogowego "Memory Sizes", * ktrym moemy ok'eli rozmiar pamici przeznaczonej dla aegmentu tnn,i nraz BteY'tv. !t Y J V*v Gn z* W okienku znajduj ai nastpujce pola: Stack size - okz'ela rozmiar aegmentu stosu w bajtach, sta* makaymalny rozmiar wynoai 65536 bajtw. **o.* *u=*****y ruzmar aterty w bajtach, limit atandardowo wynoai 0 bajtw, High heap - okrela makaymalny rozmiar sterty w bajtach, : limit atandardowo wynosi 655360 bajtw. Naley p* ta, e nie moe by on mniejszy od minimal rozniaru aterty. Linker... Komenda powoduje otwarcie okienka dialogowego "Linker ', w kti moemy okreli parametry majce wpyw na dziaanie systemo* programu czcego. i r * uNL*K 30 W okienku tym wyrniamy naat*pujce opcje: Map file - okrela, ezy zbir o rozazerzeniu.MAP bdzie utr rony, a jeeli tak, t4 j*e informacje bdzie zaw ra. Opcja ta ma naatpujce pola, z ktrych tyl: jedno moe by wczone: plik nie bdzie tworzony. *egmens - plik bdzie zawiera list segmentw, adr* pocztkowy programu oraz komunikaty b dw powstaych podczaa czenia. 50 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal T.0 na alfabetycnie. Detailed - jak opcja Public plus dokadny opis aegmentw zawierajcy nazw aegmentu, jego dugo w bajtach. Opcja dziaa poprawnie, gdy wczona jeat opcya Optiona I Compiler I Debug inforna. tion. Link - okrela, cy buforem podcas czenia ma by pami* buffer czy dyak. Memory - jako bufor wykoryatywana jest pami. Disk - jako bufor wykorzystywany jest dyak. Wyko rzyatanie pamici na bufor przyspiesza proces kompilowania programu, ale ajmuje pami, Debugger... Komenda powoduje otwarcie o*ienka dialogowego "Debugge " dla rodo wiaka Turbo lub o*ienka "Debugging/Browaing" dla rodowiaka Tpx, w ktrych moemy ok'eli parametry majce wpyw na dziaanie progra* mu wyau*iwania i poprawiania bdw w programie (tzw. debugger). RYSUNEK 31 52 P. Michakiewicz, I. wituszak w oxeku tym wyrniamy nastpujce opcje: Debugging- opcja posiada nastpujce pola: Integrated - opcjajest atandardowo wczona i pozwa uycie debuggera zarwno wbudowane rodowiako,jak i ewntrnego, np. Turb* buggera. Opcja dziaa poprawnie, gdy w; na jeat opcja Options I Compiler I Debug i: mation opcja jest atandardowo wcona. Standalone - wczenie opcji pozwala na uywanie tylk, buggera zewntrznego, np. Turbo Debu Opcj a daa poprawnie, gdy wcona jest cja Optiona I Compiler I Debug infonatio W rodowiaku Tpx opcje te maj nastpu,jce nazwy; Integrated de ging/browaing, Standalone debugging. Diaplay awapping - opcja okrelajca tryby przecania pomi e*'anem edytora a ekranem uytkownika podc dziaania debuggera. Opcja posiada naatpuj; pola: None - ekran uytkownika niejeat wywietlany, Smart ekran uytkownika jeat wywietlany y t 1 podczas wykonywania p*e program opera wyjcia. e** *ytkownika jest wywietlany p " *4f*;. Always - odcz; wykonywania kadej instrukeji. **"*"' Po uyciu podczaa uruchomiania a atemu Turbo Paacala rzeczni* * '** * moemy pracow z dwoma monitorami. Najednym monitorze widz my e*an ed*,* y te o te ra a stemowe o za na dru m ekran uytkownika. g powodu opcja Display awappingjest w tym trybie pracy pomij* ***f * *il*; =****:, DireGtories. . . s**; atyw*e podcas pracy * *trych zapamitane s pliki wykorzy systemie Turbo Paecala. Programowanie w Turbo Pascal 7.0 tw wywietlanych w bieeyn okienku "Brn. wae" spowoduje otwarcie nowego okienka: New browser - otwarcie nowego okienka. Replace - wymiana zawartoci biecego okienka. current Preferred pane - ohrelenie rodzaju wywietlanej infornacji: Scope - informacje o zasigu. Reference - informacje o odwolaniaeh. Display - okrela, jakie informacje maj by wywietlane: *ualified - nazwy symboli dziedziczonych wywietlane b. synbols d z kwalifikatorami ich obiektw, pod warunkiem, e w grupie Symbols wlezona bdzie opcja Inherited. Sortalways - wca alfabetyczne wywietlanie symboli; standardowo symbole wywietlane s w kolejnoci ich deklarowania. Tools... Komenda powoduje otwarcie okienka dialogowego "Tools", za pomoc ktrego moemy doda do menu Tools dodatkowe programy narzdziowe, ktre bd wywolywane z poziomu systemu Turbo Pascala. I I 56 P. Michakiewicz, I. wituszak --' r-*'o*~ * * vucuuio u* pnych w menu Tools oraz midzy innymi przyciski Edit, New, Del pozwalajce na operaeie odpowiednio edycji pozycji z listy progran dodania nowego programu do listy oraz skasowania programu z li Wybranie prycisku Edit lub New, ewentualnie wcinicie klaw , gdy jestemy w polu listy, spowoduje przejcie do okie "Modify/New Tool", w ktrym okrelamy: Title - opis programu (nazwa), ktry ostanie wywie na w menu Tools. Jeelijedn z liter w tym op umiecimy midzy nakami ~, np. ~D~rukuj Za~p~isz, to w menu Tools zostanie ona wypis grubsz czcionk i w innym kolorze, a jednoc; nie bdziemy'mogli dany program uruchomii wejciu do menu Tools, przez wcinicie tej liti Progran path - naw programu oraz opcjonalnie eiek do; pu. Jeeli nie okrelimy cieki dostpu, to * gram bdie poszukiwany w biecym katali oraz w katalogach ustawionych za pomoc polf nia PATH systemu operacyjnego DOS. Command line - paranetry lub makra, ktre maj by przes; do progranu podczas jego uruchomienia. Mal zawsze musz zaczyna si znakiem dolara $. Hot keys - klawisze, za pomoc ktrych mona bdzie u chomi dany program bezporednio z edytora,1 wywolywania opcji z menu. Programowanie w Turbo Pasca! 7.0 Powoduje otwarcie ohienka dialogowego "Preferences", pomoc* rego moemy okreli wygld oraz zachowanie ai sya*mu po, praey. W oliienku moemy wyrni naatpujce grupy parametrw: Screen aiea - uatawienie wymiarw ekranu: 25 linea - uatawienie trybu ekranu wyrvietlajce* wierazy i 80 kolumn. 43/50 lines - uatawienie trybu ekranu wywietlajeeg 43 wieraze i 80 kolumn dla karty EGA 50 wierazy i 80 kolumn dla karty VGA. RYSUNEK 35 Environment Wybranie komendy powoduje rozwinicie nastpnego podmenu zawi* rajcego opcje okrelajce prac systemu Turbo Pascala: ni u vivzn ao P. Michakiewicz, I. wituszak Source tracking okrelenie okienka, do ktrego bdzie wczyty* dodatkowy plik, wykorystywany przez prog podczaa krokowego uruchomienia programu podczaa pracy z o*ienkiem Measagea. New window - otwarcie nowego okienka. Current - zapiaanie do o*ienka biecego po upred window skasowaniu jego zawartoci. Auto aave - opcje pozwalajce na automatyczny apis nastp* cych elementw syatemu: . Editor files - wcenie tej opcji powoduje automatyc zapia awartoci edytora podczas uruchon nia programu lub przejcia z aystemu Tu Paacala do aystemu operacyjnego DOS za moc komendy File I DOS shell, jeeli o* o zmodyfikowany od czaau ostatniego za au. Environment - wczenie tej opcji powoduje automatyc2 zapis przy wyjciu systemu biecej ko guracji ustawionej w danej sesji. Dane te zapisywane w pliku TURBO.TP. Deaktop - wcenie tej opcji powoduje automatycz zapis pry wyjciu z systemu biecych olii i ich awaxtoci do pliku TURBO.DSK. Px ponownym uruchomieniu syatemu na podsl wie tego pliku ostanie odtworzony poprzed stan okien z ich zawartoci. Plik ten je Programowanie w Turbo Pascal 7.0 tworzony tyrxo weay, gay uworzony*es uh TllRBO.TP. Options - opeje ustawiajee operacje zwizane z uywaniem okienka Messages oraz ustawianie katalogu biece. go: Auto track - jeeli opeja jest wczona, to podezas uywa. aource nia okienka Messages (lub obiektu Object. Browser ze rodowiska TPX) wiersz w tekcie rdowym, zawierajcy synbol wskazywany przez to okienko, bdzie podwietlony. Close on go - jeeli opeja jest wezona, to podezas uywa, to source nia okienka Messages (lub obiektu Object, Browser ze rodowiaka TPX) uycie klawiszy + spowoduje przejcie do tekstu rdowego oraz zamkneie okienka Measages. Change dir - wczenie opeji powoduje, e po uyciu kuon open mendy File I Open naatpi zmiana katalogu biecego na katalog zawierajcy otwierany plik. t*dtor Powoduje otwarcie okienka dialogowego "Editor Optiona", za po; ktrego moemy okreli tryby pracy sysZemowego edytora Turbo P la. *YSUNE* 37 Desktop file - okrela, gdzie ma by zapisany plik TURBO.DSK, W okienku moemy wyrni nastpujce grupy parametrw: zawierajcy informacje o pooeniu i zawartoci okien, punkty przerwania programu i inne syste- Editor optiona - - uatawiaj opeje dziaania edytora: mowe infonacje dotyczce platformy. Create backup - po wezeniu opcji kady zapis pliku na * Current - zapis w biecym katalogu. fles poprzedza utworzenie z jego poprzednio z direetory aanej wersji pliku o rozszerzeniu.BAK. Config file - zapis w katalogu systemowym zawierajcym directory plik TURBO.PL. Isert mode - po wczeniu tej opeji kady wpisany tek edytorze spowoduje przesunicie istniej, Desktop file - (tylko TPX) okrela, czy infornacje aymboliczne, tekstu w praw stron. Podezas pracy w, optiona bdce wynikiem oatatniej kompilacji, maj by torze stan taki moe zosta zmieniony za zapisane w pliku synbolicznym o rozszerzeniu moe klawiaza , ale nie bdzie on za .PSM w czaaie zapisywania pliku TURBO.DSK. mitany. Desktop only - zapia tylko pliku TURBO.DSK. Auto indent - wczenie opeji powoduje, e po nacini Deaktop and - zapis pliku TURBO.DSK i pliku aymboliczne mode klawisza kursor zawsze ustawi a: aymbols go. nowej lin pod pierwazym znakiem linii przedniej. 60 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal T.0 Use tab - wiczene opc* powoau*e,ze po uzycu *awi. ..iJ*'o*'u"u" **'eZ*. vr J' rvr*vuuJ*, *.o otc*oiiuy 1 charactera aza zostanie wprowadzony znak tabula- programu bd wystpoway w rnych I eji o kodzie ASCII 9,za gdy opeja jeat wy. rach,w przypadk kart graficznych um czona,to zamiast znaku tabulacji wprowadza- wiajcyeh uywanie kolorw lub bd n ne s spacje,ktryeh ilo okrela parametr rne atrybuty przy kartach monochroma* Tab aize. nych. Optimal fill - wczenie opeji powoduje optymalizacj liczby Block inaert - wczenie opeji powoduje przeczenie gra uytych znakw tabulacji i spacji na pocztku cursor nej reprezentacji kuraora.Oznaeza to,e kadej linii (zamiaat okrelonej liczby spacji, aor przy trybie wpiaywania (inaert) bdzie ktra jest okrelona przez paranetr Tab size, wygldjak przy trybie nadpisywania (ovex zostanie umieszezony znak tabulacji). te) i odwrotnie. Backspace - jeeli opeja jeat wczona i kuraor znajduje si Find text - wczenie opcji powoduje,e przy uyciu unindents w puatej lin lub na pozycji pierwazego znaku at cursor mend Search I Find oraz Search I Repla* w linii,tu po naciniciu klawiaza zoatanie on przesunity razem z tekstem, aowo,na ktrym aktualnie znajduje si jeeli on wyatpuje,do pozycji odpowiadajcej sor; przy wyczonej opeji komendy te I pozycji pierwszego znaku w poprzedniej linii. pamitay poprzednio wpisany tekat. Cursor through - wyczenie opeji sprawia,e uycie strzaek Tab size - parametr ten okrela o ile znakw ma przesun poziomych w miejscach uyeia znakw tabula- kuraor po naciniciu klawiaza .Standard cji powoduje przeskok do naatpnego znaku jest ustawiona wartu 8,ale zakres parametru tabulacji. nosi od 2do 16znakw.Okrelenie nowej wan spowoduje uatawienie jej we wszystkich miejs* Group Undo - po wczeniu opeji moemy wykonywa tzw. uycia klawisza w tekcie. cofnicia grupowe za pomoc komendy Edit I Undo. Highlight - opeja pozwala na okrelenie,ktre pliki bd exteiaions wietlane przy uyciu kolorw lub atrybutw. Persistent - wczenie opeji umoliwia po zaznaczeniu blo* bloeks ku przesuniecie kuraora,za gdy opeja jest wyczona,przeaunicie kursora powoduje za- nechane operacji zaznaczania bloku. Mouae Overwrite wczenie tej opeji przy wyczonej opeji Per* Powoduje otwarcie okienka dialogowego "Mouae options",za pon blocks sistent blocks powoduje,e po zaznaczeniu ktrego moemy okreli parametry pracy myszki w systemie Ti bloku uycie klawiszy oraz Pascala. powoduje uaunicie bloku z tekatu,gdy :*T * za naciniemy dowoln lter lub wezytamy Y zawarto bufora Clipboard,tu po usunieiu bloku zostanie ona zapisana na pozycji poczt* ,*" kowej bloku. I I - *" 62 P.Michakiewicz,I.wituszak Programowanie w Turbo Pascal 7.0 r-~-- r r*~r --***, **.. . rvu**v Jii* nu*yyl**;lc. *wlU ustawiamy za pomoc przesunicia wskanik poziomym auwaku. Zwoka bgdzie njmniejaza wakanik znjdzie sig z lewej strony suwaka (F njwigksza z prawej atrony suwaka (Slow). Reverae mouse buttons - wczenie parametru powoduje, e aktyw klawiszem myszki staje ai klawisz prawy. Startup Powoduje otwarcie okienka dialogowego "Startup options", za poi ktrego moemy okreli parametry uruchomienia systemu Turbc scala. RY,SUNEK 38 Wokienku moemy wyrni nastgpujce grupy parametrw: Ctrl+Rightmouse button- opcje tego pola su do okrelenia reakcji aystemu na nacinicie klawiszy +prawy klawisz myszki. Jeeli wczony jest parametr Mouae double click, opcje te odnosi sig bd do przycinigcia klawisa +lewy klawis myszki, Nothing - brak reakc*i. Topic search - odpowiada komendie Help I Topic search. - Go to cursor - odpowiada komendzie Run I Go to cursor. Breakpoint - odpowiada komendzie Debug I Toggle breakpoint. ,sx**. Evaluate - odpowiada komendzie Debug I Evaluate. Add watch - odpowiada komendie Debug I Add watch. Browse - odpowiada komendie Search I Symbol (tylko synbol TPX). Muse double elick - parametr ten suy do ustawienia zwoki casowej migdzy dwoma kolejnymi klikniciami. Jeeli czas migdzy dwoma kliknic'iami mieci si w ustawionej zwoce, to dwa oddzielne kliknigcia traktowane a* 64 P. Michakiewicz, I. wituszak i*i uvir*n ay Parametry te odpowiadaj przecznikom uywanym podczas inicja nia syatemu i tam zostay opisan. Ustawione parametry dad efek powtrnym uruchomieniu systemu. Dual monitor - odpowiada przecznikowi /D support Graphics screen - odpowiada przecznikowi /G save EGANGA - odpowiada przecznikowi /P palette aave Programowanie w Turbo Pascal 7.0 checking LCD color aet - odpowiada przecznikowi /L Load - odpowiada przecnikowi /T TURBO.TPL Uae expanded - odpowiada przeczikowi /X (tylko Turbo) memory Return to - odpowiada przecznikowi /R laat dir Preaerve - odpowiada przecnikowi lY (tylko TPX) aymbola Window heap - odpowiada precznikowi /W (tylko Turbo) eize Editor heapaize Overlay heapsize Swap filedireatory Colors odpowiada przecznikowi E (tylko Turbo) odpowiada przeeznikowi /0 (tylk Turbo) odpowiada przecznikowi /S Powoduje otwarcie okienka dialogowego "Colors", za pomoc ktrego moemy okreli kolory poszczeglnych elementw rodowiska Turbo Pascala. W zalenoci od typu karty gr*cznej dostpne s naatpujce pola: ' karta monochromatyena: Group, Item, Color, pole kontrolne; ' karta kolorowa: Group, Item, Foreground, Background, pole kon* trolne. '***4" " **. 7* * *i Group Item Color NormalHighlight Underline Inuerae ForegrondBackgroundpole kontrolne Open... RYSUNEK 40 pole zawierajce list wszyatkich nazw grup elem tw doatpnych w ayatemie, ktrym moemy zmie kolory. pole awierajce liat dostpnych elementw w, branej w polu Group grupie. moemy uatawi dla kart monochromatycznych : stpujce atrybuty: - tekat normalny - tekat rozjaniony - tekat podkrelony - tekat w inwersie okienko auce do wyboru koloru tekatu okienko auce do wyboru koloru ta pokazuje aktualne ustawienie kolorw lub atrybut Po wybraniu tej komendy ayatem wywietla okienko dialogowe o naz, "Open Optiona", ktre umoliwia nam wczytanie pliku konfiguraeyjn* z dyaku. 66 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal T.0 RYSUNEK 41 1 O Vl V* g* Standardowo odytywany jeat plik TURBO.TP, ale jeeli zapiaalimy awoj konfiguracj w innym pliku, to moemy okrelijego nazw w polu W Optiona file name lub wybra z pola Filea. Save TURBO.TP tylko Turbo Komenda zapiauje na dyahu plih TURBO.TP, zawierjcy m.in. wszy* atkie parametry uatawione za pomoc komend w menu Options, w komendach Compile I Primary file oraz Search I Find i Search I Repla* Jednoenie zapiaywany jeat plik TITRBO.DSK, zawierajcy dane * temat aktualnie uywanej platformy, m.in. poloenie i zawarto okiet4 punkty przerwania programu. Save TPX.TP tylko TPX Jak Saue TURBO.TP, ale dotyy pliku TPX.TP rodowiaka TPX. Save as... Komenda pozwala na zapiaanie aktualnej konfiguracji w pliku o inni nazwie ni TURBO.TP i TlTRBO.DSK. Po jej wybraniu wywietla * okienho dialogowe o nazwie "Save Optiona As", w ktrym moemy op* miany nawy pliku zmieni take nazw atacji oraz katalogu. 68 P. Michakiewicz, I. wituszak Tile Komenda powoduje takie uatawienie ohien, aby adne z nich nie zak wao innego okna. .r*w.,;r Cascade Komenda powoduje takie uatawienie ohien, aby tylkojedno bylo w cac widone na ehranie. Z pozoataych olden widone a tylko linie tytu -*.;. we z numerem i nazw ohienka. Close all *~-- Komenda powoduje zamknicie wazyatkich o*ien znajdujcych ai ehranie. Refresh display ":** ; Komenda odwiea ekran rodowiaka Turbo Paacala. Programowanie w Turbo Pascal 7.0 t III RYSUNEK 41 Standardowo odczytywany jeat plih TURBO.TP, ale jeeli zapiaalimy awoj ho*guracj w innym plihu, to moemy ohrelijego nazw w pou WI N DOW Optiona file name lub wybra z pola Filea. Save TURBO.TP tylko Turbo Komenda zapiauje na dyahu plih TURBO.TP, zawierjcy m.in. wszy athie parametry uatawione za pomoc homend w menu Options, w homendach Compile I Primary file oraz Search I Find i Search I Replace, Jednoczenie zapiaywany jeat plih TllR,B0.DSK, zawierajcy dane na temat ahtualnie uywanej platformy, m.in. pooenie i awato okien, punhty przerwania programu. Save TPX.TP tylko TPX Jah Save TLTRBO.TP, ale dotyczy plihu TPX.TP rndowiaha TPX. Save as... Komenda pozwala na zapiaanie ahtualnej honfiguracji w plihu o irm* nazwie ni TURBO.TP i TURBO.DSK. Po jej wybraniu wywietla *8 ohienho dialogowe o nazwie "Save Optiona Aa", w htrym moemy opr* zmiany nazwy plihu zmieni tahe nazw atacji oraz hatalogu. 68 P. Michakiewicz, l. wituszak :*.*. ,+* * RYSUNEK 42 Tile Komenda powoduje tahie uatawienie ohien, aby adne z nich nie zal wao innego ohna. Cascade Komenda powoduje tahie uatawienie ohien, aby tylhojedno byo w ca* widoczne na ehranie. Z pozoataych ohien widoczne a tylho linie tyti we z numerem i nazw ohienha. Close all Komenda powoduje zamhnicie wazyathich ohien znajdujcych ai ehranie. Refresh display Komenda odwiea ehran rodowiaha Turbo Paacala. Programowanie w Turbo Pascal T.0 Komenda pozwala na mian rozmiarw i pooenia okienka na ekranie, W celu zmiany pooenia naley uy lilawiazy straek, za do zmiany rozmiarw naley uy kombinacji *lawiaza i atrzaek. Te same operacje mona wykona przy uyciu myazki. Zmiany pooenia wyko. nujemy przez ustawienie kursora myazki na linii tytuowej okienk.a, wciniciu lewego przycisku i preauniciu tak apanego okienka do nowego pooenia. W celu miany rozmiaru naley apa prawy dolny rg okienka i rozcign o*ienko do odpowiednich rozmiarw. 2oom F5 Komenda powoduje powiksenie aktywnego okienka do rozmiaru ma. kaymalnego lub zmniejszenie do poprzedniego romiaru,jeeli wczeniej wykonalimy ju t komend. T sam operacj moemy wykona za ponoc myszki. W tym celu naley dwukrotnie hlikn na linii tytuowej lub klik na polu zmiany romiaru, umieszconym w nawiasacb kwadratowych w prawym grnym rogu o*ienka. Next F6 Komenda powoduje zmian aktywnego okienka. Okienkiem aktywnym zostaje o*ienko nastpne pod wzgldem numeracji. Previous Shift+ F6 Komenda powoduje zmian aktywnego okienka. Okienkiem aktywnym zoataje o*ienko poprednie pod wzgldem numeracyi. Close Alt+ F3 Komenda powoduje zamknicie aktywnego o*ienka. List... Alt+0 Komenda wywietla o*ienko dialogowe "Window List", za pomoc k* rego moemy wybra nowe o*ienko aktywne. 70 P. Michakiewicz, I. wituszak HELP Contents r:t' *,**! : *i**** r.. * *d*:, *I* RYSUNEK 43 Wybranie komendy powoduje wywietlenie okienka "Help", zawier cego spis dostpnych grup informacji pomocniezych. Programowanie w Turbo Pascal 7.0 cji. Doatpne a naatgpujce informacje: *%II+hl How to - opis metod uywania opcji Help. Komenda ta powl znalezienie opiau elementujzyka Turbo P znajdujcego ei w miejscu uatawienia kursora w oknie edycyjnym.* Uae Help kuraor ustawiony jeat midzy dwoma elementami jgzyka oddziela Menus and - opia menu ayatemu Turbo Pascal i klawiszy bez od aiebie apacj,to zoatanie wysukana informaeja o elemencie zn Hot Keya poredniego dostpu do opcji menu. jcym ai z lewej atrony kuraora,co wynika z faktu,e kursor znajdowa si na dowolnej literze danego aowa lub na spacji Editor - opia operacji dostpnych w edytorze systemu. prawej atrony.Jeeli dane alowo nie zostanie znalezione Commands ,* s5 wywietli lis indeksow dostpnych informacji w syatemie,za k Built-in - opia wbudowanego w system jzyka Assembler. zostaie ustawiony na tym elemencie indeksu,ktrego litery poct: Aaaembler * zawieraj njwicej liter z wyazuhiwanego aowa. Command - opia opcji inicjujcych prac ayatemu. Previous topic Alt+F1 Lie Komenda ta pozwala na cofnicie ai do poprzednio wywietla Debugging - opia zasad poaugiwania si programem urucho- okienka pomocy Help.Syatem pamita 20oatatnio wywietlonych * mijcym (debugger). nek. Directivea - opia dyrektyw kompilatora. Using help Error Measage - opia bldw. Komenda ta opisuje metody uywania opcji Help.Jeeli jeatemy ji ObjectBrowaer - opis zaaad poaugiwania si obiektem ObjectBro innym okienku Help,to opcj t mona uruchomi za pomoc klaw (TPX) waer. . Reaerved - opis slw *luczowych i dyrektyw. Files... Words Start-Up - opia opcji inicjujcych prac ayatemu. Komenda wywietla ohienko dialogowe "Install Help Filea",za pon 0tiona ktrego moemy zainatalowa lub uu dodatkowe pli*i pon (Help).Standardowojeat instalowany plik TURBO.TPH. Turbo Vision - opia uruchomienia pomocy dotyczcej biblioteki : ' * Turbo Viaion. Compiler directives Units - opis atandardowych modulw ayatemu. Komenda wywietla okienko zawirajce opia dyrektyw wyatpujc wjzyku Turbo Paacal. Index Shift+F1 15 :~ Reserved words Komenda ta powoduje wywietlenie alfabetycznego indeksu wazystki* elementw dostpnych w jyku Turbo Paacal.Wyazuhiwanie odbyws Komenda wywietla oltienko zawiera* ce ) opia slw kluczow ch w * a na aaadzie kolejnego ucilania,tzn.jeeli azukamy opiau funk* u c ch w * z P J y ) yku Turbo Paacal. EnvStr,to naciakamy najpierw liter e,co spowoduje ustawienie kursa ra w indekaie na pierwazym sowie zaczynajcym ai od litery e,kolej* litera n uatawia kursor na aowach zacynajcych ai od liter en itd. Pro ram *' 72 P.Michakiewicz,I.wituszak g owanie w Turbo Pascal T.0 il I i Komenda wywietla okieko zawierjce opis standarduwych moduw wystpujcych w jzyku Turbo Pascal. Turbo Pascal Language Komenda wywietla okienko zawierajee opis podstawowych elementw jyka Turbo Paacal. Error messages cu * v '9. Po uruchomieniu zintegrowanego rodowiska pracyjzyka Turbo P moeiny od razu przystpi do wpisywania programu, poniewa sy automatycznie ustawia si w trybie edycji. System umoliwia pra wielu oknach, co oznacza, e w kadym z nich moemy wpisywa program. Sposb pracy edytora okrelj opcje umieazezone w n Options I Environment I Editor, ktrych opis znajduje si w opisie m Edytor systemowy, mimo e nie jest prnfesjonalnym edytorem tek* to posiada podstawowe fukcje edytors*ie w zupenosci wystarcz: do wprowadzania programw. Funkcje te zostay wymienione w p* szym zestawieniu: Komenda wywietla okienko zawierajce opis bdw, ktre mog w9* stpi w systemie Turbo Pascala. About... Komenda wywietla oliienko "About", zawierajce numer wersji system Turbo Pascala oraz nazw producenta. *:g**; 74 P. Michakiewicz, I. wituszak Ctrl-E Ctrl-X Ctrl-!*-D Ctrl-Q-S Ctrl-Q-E Ctrl-Q-X Ctrl-!1-R Programowanie w Turbo Pascal 7.0 Operacje sterujgce przemieszczeiem. kursora il Upis nomanac*a klawiszy kombinacj a . do hoca tehatu Ctrl-PgDn Ctrl-Q- do poprzedniego poloenia Ctrl-b2-P do miejaca,w ktrym wyatpil Gtrl-Q-W oatatni bld Operacje wpisywania i ksownia wlcenie lub wyczenie trybu Ina Ctrl-V wpiaywania tekatu watawienie puatej linii Ctrl-N ahaaowanie linii Ctrl-Y ahaaowanie tehatu od miejaca Ctrl-Q-Y pooenia huraora do hoca linii ahaaowanie znahu z lewej atrony BachSpace Ctrl-H huraora ahaaowanie znahu w miejacu Del Ctrl-G kuraora ahaaowanie aowa z prawej atrony Ctrl-T huraora Operacje na blokch tekstu zaznaczenie pocztku blohu Ctrl-K-B hoca bloku Ctrl-K-K alowa Ctrl-K-T Shift-Ctrl-f Shift-Ctrl-* * - :* zaznaczenie blohu Shift- Shift-* Shift- y Shift-*- zaznaczenie linii Ctrl-K-L 76 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 7 uu* kombinacja ***,; : '**rt: ** I ,(g*g,*,. ! *dl* *****! iI !. *: i*Jt *`. Ctrl-K-S 78 P. Michakiewicz, I. wituszak :; Programowanie w Turbo Pascal 7.0 1) komentarzy 2) sw klucowych 3) identyfikatorw 4) symboli 5) acuchw 6) liczb 7) instrukcji jzyka assembler 8) odstpw w tekcie Kolory lub atrybuty dobiera si za pomoc okienka "Colors", ktre zostalo przedstawione w opisie menu Options I Environment I Colors. Pliki, ktr bd wyrniane w ten aposb, okrelane s w polu Highlight extensiom w menu Options I Environment I Editor. Moemy oczywicie zrezygnowal z uywania kolorw w edytorze przez wyczenie opcji Syntax highlighl w menu Options I Environment I Editor, nie likwidujc dotychczas u* wanego ustawienia kolorw. 8O P. Michakiewicz, I. wituszak u r* G, I1 I 1 w y t(u M P * *O RA W rozdziale tym zostan opisane dyrektywy kompilatora. Dyrekt au do okrelenia pracy kompilatora. Za ich pomoc programista n "powiedzie" kompilatorowi, jak ma wykona kompilacj eaego pro , mu lubjego czci. Moemy wyrni trzy rodzaje dyrektyw: / dyrektywy przecznikowe / dyrektywy parametryczne * * / dyrektywy warunkowe * Dyrektywy przecznikowe Dyrektywy przecznikowe powoduj wczenie bd wyczenie od wiedniej opcji dziaania kompilatora. Kada dyrektywa przeczniko ': Pi'H:* ma swj odpowiednik w menu Options I Compiler. Pod wzgldem zasi ***" dziania moemy okreli dyrektywy globalne oraz lokalne. Dyrekty , *j.i** globalne odnosz si do caego procesu kompilacji programu lub mod *ytw * i umieszezane s przed czci deklaracyjn. Dyrektywy lokalne, pon *i*=:***; wa odnosz si do czci kompilacji, mog wyatpowa w dowoln, miejscu programu. Nazwa dyrektywy skada si z litery poprzedzonej znakiem $ oraz znal * + oznaczajcego wczenie dyrektywy lub znaku - oznaczajcego wy czenie dyrektywy i umieszczonajest w nawiaaach klamrowych {}. yn mona uy nawet kilku dyrektyw, a Wjednym nawiasie klamrow e tylko przed pierwsz naley umieci znak $. Dyrektywy te musz b; **g b*: oddzielone przecinkami. ,*' :* P*ykadowo zamiast pisa {$N+} vt _ * h, : ' moemy napisa {$N+,E-} ::* *'+*. Programowanie w Turbo Pascal 7.0 8 * Edytor syatemowy 1'urbo Pascala ma moliwo uywania rnych kola rw, w przypadku kart graficznych udostpniajcych kolory lub rnye* atrybutw, w przypadku kart monochromatycznych do oznaczenia na, stpujcych elementw skadni: w*- $A Standardowo . {$E+} Standardowo . {$A+) globalny Zasig . globalny Zasig Dyrektywa powoduje apamitanie danych w pa. Opis . Standardowe ustawienie dyrektywy powoduje, Opis mici prze ich wyrwnanie do granicy slowa w przypadku braku koprocesora arytmetyczne* maszynowego lub bajtu.Jeeli dyrektywa.jest ostanie doczona biblioteka,ktra go ernulu- wcoia (A+); to mienne bd wyrwnywane c)c Ustawienie dyrektyw w postaei ($N+,$E+) pow *ranicy sowa maszynowego,cego efektem,jest duje utworzenie programu, ktry emulu szybazy dostp do tych zmiennych w pamieci, koprocesor arytmetyczny,jeeli nie zostanie * Opcja ta dotycy procesorw typu 80x86,ale nie wykryty; w przeciwnym razie zostanie on uy daje efektu przy procesorze 8088. '* t". przez program. Jeeli program ma pracowa tyl: -,r*, , z wykorystaniem koprocesora arytmetycne* to naley ustawi nastpujce dyrektyv Standardowo : ($B- * ~"*` ' = ,**;,: $F Zasi g lokaln **'ur~'.!* Opis Dyrektywa powoduje optynalizacj generowane .*** Standardowo . {$F-) go kodu dla wyrae logicnycl awierajcycb asig . lokalny operatory logiczne and i or.Jeeli dyrektywa jes! . wczona ($B+),to analizowane jest cae wyrae Opis . Dyrektywa okrela rodzaj odwoania do proced nie logiczne,nawet jeeli po analizie c穌ci tego . i funkcji.Jeeli dyrektywajest wczona {$F+}, , wyraenia znanyjestjego wynik.Przy ustawieniu wsystkie odwoania s odwoaniami dalek standardowyn obliczanie wyraenia kocy sia (FAR); w przeciwnym wypadku a to odwoan chwil ustalenia wartoci wyraenia. :rbaw * bliskie NEAR).Jeeli dyrektywa jest wyczoi :,***; ;~* {$F-},a procedura lub funkeja zadeklarowanaje w c穌ci opisowej moduu (interface),to kompil $D tor mimo wyczenia dyrektywy traktu Standardowo . {$D+) ?e***'* odwoania do nich jako dalekie.W przypadl uywania naliadek naley dyrektyw ($F+) ust Zasig . globalny wi na pocztku programu i kadego maduu. : Standardowe ustawienie dyrektywy powoduje nerowanie infornaeji o wystpujcych bdacb i umieszczenie ich w plikach.EXE i.TPU.Umo liwia to lokaliacj bdw za pomoc komendl Standardowo . {$G-} dla trybu pracy rzecywistego F d Error.Standardowe ustawienie dyrekty* {$G+} dla trybu pracy chronionego amu pozwala na krokowe uruchamianie progr * Zasig : globalny i ustawiaie punktw rzerwania. ** Opis . Dyrektywa powoduje ustawienie rodzaju genez wanego kodu w zalenoci od pro ***j*alMj*****'i***l** *est kod ala procesora t5Ut5ti.u1 ayrexywy w, g2 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 czonej [*t,r+t, w ceiu opym*ul****l h*uu s*==*=u *;6 u*o**r=."..-* *,r **, ...a**"**. .,y wanego programu, kompilator uywa dodatkowo *;* rektywy apowoduje, e do wykonania t inatrukcji proceaora 80286. Naley pamita, e operacji uyta zoatanie biblioteka, ktra b wygenerowanie kodu dla proceaora 80286 unie. . emulowaa koprocesor arytmetyczny. moliwia uruchomienie danego programu przy korzystaiu z procesorw 8088 i 8086. Standardowo . {$0-} $I Zasig . globalny Standardowo . {$I+} ;* Opia . Wczenie dyrektywy ($O+) jest wynagane, Zaaig . lokalny dy, gdy generowany kod moduu ma Opia . Dyrektywa wcza lub wycza automatyczne ge. "; nakadk. nerowaie kodu, ktry kontroluje poprawno wykonania operacji wejcia/wyjcia. Jeeli dyre l*t* ; S*ndardowo . {$P-) ktywa jest weona {$I+}, to przy bdacb wejcia/wyjcia progran zoatanie zatrzymany Zaaig . globalny i wywietlony zoatanie komunikat o bdzie. W . Wczenie dyrektywy {$P+) powoduje, e u przeciwnym wypadku naley aamemu zapewni * aowa String bdzie oznaczao tzw. acuch ot, kontrol bdw za pomoc funkcji IOReault. ty, za przy standardowym uatawieniu s String zachowuje znaczenie z poprzednich w* jzyka Turbo Pascal, ezyli okrela acuch o ksymalnej dugoei do 255 znakw. Standardowo . {$L+} Zaaig . globalny *'*** " *e y ** Standardowo . f$Q-) Opia . Standardowe uatawienie dyrektywy powodujs ***s."; automatyczne generowanie kodu zawierajcego *** * Zaaig . lokalny info'macje o nazwach i typach wazyatkich zmien *** nych i ataych, ktre wyatpuj w czci Opia . Powoduje wczenie lub wyczenie kontroli * implementacyjnej moduw oraz w funkcjacb w*. penienia dla generowanego kodu. Gdy dyrekt i procedurach. Pozwala to podczaa urucharnianie k jeat wczona {$Q+}, to dla nastpujcych ope: programu na kontrol i modyfikacj warto* : *- arytmetycznych wystpi kontrola przepenie +, -, *, Abs, Sqr, Succ, Pred. W przypadku w5 zmiennej. pienia przepenienia nastpi zakoczt programu i zoatanie wywietlony komunik bdzie. Standardowo . {$N-} Zasig . globalny Standardowo . ($R-) Opia . Wczenie dyrektywy ($N+} powoduje, e p* Zasig . lokalny gram bdzie wykorzystywa koproces arytmetyczny do wykonywania operacji na li* Opis . Wczenie dyrektywy {$R+} powoduje, e wyg bach zmiennoprzecinkowych we wazystki*b rowany kod bdzie podlega kontroli z od indeksw tablic i acuchw z wartociami z 84 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 zakresu,to program zostanie atrzymany i zosta. * nie wywietlony kornunikat o bdzie. * Standardowo . {$X+) Zaaig . globalny Opia . Standardowe ustawienie dyrektywy powo Standardowo : {$S+} ustawienie zgodnuci pomidzy typem P( asig : lokalny i tablicami znakw zaczynajcymi ai od indi zerowego oraz powl traktowanie fu Opis . Standardowe ustawienie dyrektywy powoduje jako prucedur,powodujc zignorowanie ich w autornatyczne generowanie kodu,ktry podezas *, kw. wywoania procedury lub funkeji powoduje kn. trol dostpnej pamici na zmienne lokalne. Jeeli wystpi brak takiej pamici lub obszar jej Standardowo {$y+) '.i jestza may,to program zostanie zatrzymany i zostanie wywietlony komunikat o bdzie. Zasig . globalny :S=:: :*,;"`* 0 . Standardowe ustawienie dyrektywy daje mc wo wywietlenia symboli i odwoa do niet Standardowo : {$T-} pomoc okienka Object Browser.Dyrektywa stpna tylko w rodowisku TPX. Zasig . globalny ,.*" G:,; Opis . Dyrektywa okrela rodzaj wskanika generowa- * ***;** Dyrektywy parametryczne nego prze operator Q.Jeeli dyrektywa jeat wyczona {$T-),to rezultatem uycia operatora '**"'*" Dyrektywy parametryczne pozwalaj na okrelenie rozmiaru segme* Q jest typ Pointer,ktry jest kompatybilny ze . stosu dla programu,romiaru minimalnego oraz maksymalnego ste wszystkirni typami wskanikowymi.Gdy dyrekty- przeznaezonej na zmienne dynamiczne tworzone podezas dziaania p wa jest wczona {$T+},to wynikiem jest gramu,a take na okrelenie nazw plikw,ktre maj zosta docc wskanik na zmienn okrelone o t u (^T ). do ro amu od z P '*' p c as komplac*.Nazwa dyrektywy skada si z lit* * poprzedzonej znakiem $ oraz parametru i umiesezonajest w nawias* * I klamrowych {). Standardowo . {$V+} ` $I Nazwa Pliku Zasig . lokalny * Zaaig . lokalny Opis Standardowe ustawienie dyrektywy powoduje ci- G* * s kontrol zadeklarowanego i aktualnego ;1>*:.: OPis : z pomoc tej dyrektywy nakazujemy kompilato* r w do czene do k om ancueha,powodu*c pry wgksze* dugoe aktu- * plowanego programu plik alnej wystpienie bdu.Przy dyrektywie ktrego naw podajemy jako parametr.Rozs2 renie nazw wyczone* {$V-) kontrola ta nie wystpuje. y plku standardowo przyjmowa: jest jako.PAS.W w* e pliku moemy u *Ki;. cieki dostpu.Jeeli cieka dostpu nie wyst puje,to dany plik posukiwany jest najpierw katalogu biecym,a nastpnie w kataloga* okrelonych w polu Inelude directories okien* P.Michakiewicz,I.wituszak Programowanie w Turbo Pascal 7.0 8 - opcji Menu I Directories. Naley pamita, e dy. rektywy tej nie wolno uywa wewntrz instrukcjl * zoonej. $L Nazwa Pliku ley pamita, e nie moe by on mniejaz minimalnego rozmiaru sterty. $O Nazwa Moduu Zasig . lohalny Zasig . lohalny Opis . Dyrektywa ohrela modul o podanej nazwie j Opia . z pomoc tej dyrektywy nakazujemy kompilato . nahladh.Dyrektywa ta musi wyatpi bez rowi doczenie do kompilowanego programu lub rednio po klauzuli uaes w prograrnie. modulu pliku,ktry jest ju skompilowany i g* siada rozaerzenie.OBJ,przez podanie jeg* Dyrektywy warunkowe nazwyjako p p * ru' *e je t ko OB*T.W * Dl*ktywy warunhowe pozwala*j na warunhow hompilacj czci h* standardo programu w oparciu o okrelone nazwy symboli. zwie pliku moemy uy cieki dostpu.Jeeli cieka dostpu nie wystpuje,to dany plik poszu. kiwany jest najpierw w katalogu biecym,a ,rH*v; $DEFINE Nazwa Synbolu naatpnie w katalogach okrelonych w polu Ob *r*r: Dyrehtywa ta sluy do definiowania nazwy aymbolu,htry bdzie u ject directories okienka "Directoria",ktre jest . wany przez pozostale dyrektywy warunkowe.Nazwy nadawane ayni wywoywane za pomoc opcji Menu I Directories, * * lom spelniaj te aame reguly co identyfihatory jzyha Turbo Pas* Naley pamita,e dyrektywy tej nie wolno uy* . Symbole odpowiadaj zmiennym typu Boolean,a dyrektywa $DEFl1 wa wewntrz instrukcji zloonej.Przewanie * * *I*'' okrela ich warto jaho true (prawda).Nie zachodzi jednah ad dyrektywa tajeat atoaowana do dolczenia zewn- . zaleno pomidzy zdefiniowanymi symbolami,a identyfihatorami u: trznych procedur i funkcji napisanych w jzyku * '. wanymi w programie,co pozwala na uywanie tej aanej nazwy asaembler. *** ohrelenia aymbolu i na przyhlad zmiennej : Jzyh Turbo Paacal defini 1** G*c* atandardowo naatpujce aymbole: $M stos,min sterty,maz sterty VER70 - gdy wskazuje wersj 7.0jzyha Turbo Pascal.In Zaaig : globalny wersje jzyha maj symbole rnice ai numere* Opis : Za pomoc tej dyrektywy moemy okreli roz np.jzyh Turbo Pascal 5.5poaiada aynbol VER5S miar pamici przeznaczonej dla segmentu stosu, oraz sterty.W dyrektywie znajduj si nastpu) *:,* MSDOS - gdy ayatemem operacyjnym jest MS-DOS lub P ce parametry: DOS. atoa - okrela rozmiar aegmentu stoau w bajtach.' ** CPUB6 - gdy proceaor naley do rodziny proceaorw 80x86. 57 Standardowo przyjmowanyjeat rozmiar 163&1* CpUB7 - gdy wy*-yty zostanie koprocesor arytmetyczny z r bajtw,za makaymalny rozmiar wyno*; k _ 65536bajtw; dziny 80x87. min sterty - okrela minimalny rozmiar sterty w ba*tac* ; ** U*EF Nazwa Symbolu ktry standardowo wyoai 0bajtw i nie motet Dyrehtywa ta jeat przeciwiestwem dyrektywy $DEFINE i okrel by wikazy ni 655360bajtw; *: wart*g zdefiniowanego symbolujako false (fasz). max aterty - okrela maksymalny rozmiar sterty w bajtac* * * 88 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 I,OZOsae uy, cn*y** y "~' ~' "*- -* * . KO M P I LATO R ZEWN TRZNY Posiadajc zdefiniowane symbole, pozostae dyrektywy warunkowe wy. korystuje si w nastpujcych konst-ukcjach: Oprcz zintegrowanych rodowi8k pracy TUftBO i 1'PX moemy kor $ I Fxxx Nazwa Symbolu 8ta z kornpilatora zewntrznego o nazwie TPC.EXE, ktry wywoywa jest z linii komend systemu DOS. Skadnia takiej komendyje8t nast) $ENDIF jca: oraz $I Fxxx Nazwa Symbolu $ELSE $ENDIF gdzie jako $IFxxx mog wystpi nastpujce dyrektywy: *IFDEF - powoduje skompilowanie tek8tu programu wys* pujcego po tej dyrektywie, jeeli w symboh zostaa zdefniowana. $IFNI7EF - powoduje 8kompilowanie tekstu programu wys* pujcego po tej dyrektywie, jeeli nazwa symbolu n* zostaa zdefiniowana. *IFOPT - powoduje skompilowanie tekstu programu v przecznik pujcego po tej dyrektywie, jeeli stan przec w dyrektywie odpowiada aktualnie ustawionej ktywie przecznikowej. Przykady uycia dyrektyw warunkowych: {$IFOPT N+} type Real=Extended; {$ENDIF} {$ IFDEF CPUB7 {$N+} type Real=Extended; {$ELSE} {$N-} type Extended=Real; {$ENDIF} TPC [opcje) nazwa pliku (opcje) gdzie przez opcjonalny parametr opcje okrela si dziaanie kompilato Jeeli w nazwie pliku nie podamy roz8zerzenia, to dumylnie poszukiv ny bdzie plik o rozszerzeniu.PAS. Gdy jednak naaz plik nie posia rozszerzenia, to jego nazw naley zakoczy kropk*. Opcje mog zaczyna si znakiem / lub znakiem -, ale gdy uywa* znaku -, to musi wy8tpi od8tp midzy opcjami, np. zapisowi TPC /IC:\KATALOG PROGRAM /$A+/$B+ i odpowiada TPC -IC:\KATALOG PROGRAM -$A+ -$B+ ***; * Moemy take przy wypisywaniu opcji uy zapisu skrconego, kt* *t uywa tylko jednego znaku $, np.: F,* ; TPC PROGRAM /$A+,B+ **f; :,. ZamlaBt TPC PROGRAM /$A+/$H+ Moliwo ta nie dotyczyjednak opcyi $M, ktrej parametry 8 oddzielo przecinkami jak przy zapi8ie skrconym. Moemy wyrni opcje: * * 1) odpowiadajce dyrektywom kompilatora * 2) trybu pracy kompilatora 3) trybu pracy debuggera , 4) katalogowe .** ' g0 P. Michakiewicz, l. wituszak Programowanie w Turbo Pasca! 7.0 Opcje odpowiadajce dyrektywom kompilatora Poniaza tabela przedstawia opcje kompilatora zewntrznego i ich odpa, wiedniki w menu Options I Compiler zintegrowanego rodowiska pracy, OPCJA MENU OPTIONS I COMPILER /$A Word ali data $B Complete boolean eval.. /$D Debu infornation...... /$E Emulation.... /$F Force Far Calls /$G 286instructions.... /$I I/O checking....... /$L Local aymbols.... /$N 8087/80287... /$0 Overla a allowed.... /$P Open parameters.... /$Q Overtlow checking.... /$R Ran echeckin.. i !!** /$S Stack checkin.. IN II /$T T e o erator.... * **,1I I /$V Strict var-string.... /$X Extended ayntax.... /Dnazwy Conditional defines opcja /$Matos,min,max atus - Staek size mn - Low heap lm t max - High heap limit Naley pamita,e ustawienie dyrektywy w tekcie powoduje F nicie odpowiadajcej jej upcji ustawionej podczas wywuywania latora zewntrznego. II 92 P.Michakiewicz,I.wituszak 1'*** Przyklady: TPC /IC:\TP\PROGRAMY GRA /$M16384,0,655360 TPC MAGAZYN /DZAPISZ;DRUKUJ/$A+ TPC MAGAZYN /DZAPISZ/DDRUKUJ/$A+ h t Ostatnie dwa przykady a rwnowane. "* Opcje trybu pracy kompitatora Poza opcj /!* pozostae opcje odpowiadaj przedstawionyn u ut*s'* komendom z menu.Nie monajednoczenie uywa opcji /M i lB. %** t ' odpowiada komendzie Compile I uild n odpowiada komendzie Search I Find En menu odpowiada komendzie Options I Linker I : Buf3Eer z menu odpowiada komendzie Compile I Make z n - eliminuje wywietlanie nazw plikw i ***u* : rw lin podczas kompilaeji :+*.Opcje trybu pracy debuggera /G . *4 : * Opcje katalogowe . rx, - odpowiada komendzie Options I Linker I : File odpowiednio - odowiada komendzie Options I Debu* I Debugging z menu Po kadej opcji katalogowej naley okreli ciek doatpu do odpow nego katalogu np /ID\TP7\PROGRAMY ; . odpowiada kumendzie Options I Director: EXE and TPU directory z menu odpowiada komendzie Options I Compiler I clude directoriea z menu okrela miejace pooenia pliku konfigura negu TPC.CFG Programowanie w Turbo Pascal 7.0 Unit directnries z menu Piik TPC.CFG Po uruchomieniu kompilatora zewntrznego w pierwszej kolejnoci W biecym katalogu poszukiwanyjestjego plik konguracyjny o naz*vie TPC.CFG. Jeeli nie zostanie on znaleziony w biecyn katalogu, * szukany jest w katalogu zawierajcym kompilator ewntrzny TPC.EXE. Plik ten zawiera infonacje, jakie opcje kompilatnra maj zosta dod*ne do opcji uytych podczas jego wywoania. Moe on take zawiera nazw prograrnu, ktry ma zosta skompiluwany. Informaeje te *dla kadej opcji umieszcza si w osobnej lin, przykladowo: /ID:\TP7\PROGRAMY /UD:\TP7\MODUY /$A+ /$B+ Jeeli plik TYC.CFG zawiera powysze dane, to po wywoaniu: TPC PROGRAM kompilator zewntrzny zoatanie uruchomiony, takjak po naatpujcym * wywoaniu: TPC /ID:\TP7\PROGRAMY /UD:\TP7\MODUY PROGRAM /$A+ /B+ 94 P. Michakiewicz, I. wituszak .,1**: Struktura programu Kady program w jzyku Turbo Paseal ma okrelon budow. N1, wyrni w nim nagwek, klauzul importu modulw oraz blok g: programu. Naglwek okrela nazw programu, za blok realizuje * nanie przez program zadanego algorytmu. Klauzula imortu m pozwala na doczenie do programu kodw gotowych elementv procedur lub funkcji. Zarwno naglwek programu, jak i klauzul portu wystgpuj opcjonalnie. W celu osignicia proatej i przejrzystej postaci zapisu programu or wzgldu na atwiejsze uruchamianie i testowanie programu moei bloku glwnym programu wydzieli czci kodu w postaci proc i fukcji, ktre podobnie jak program skadaj si z nagwka i b; za dokadna ich budowa opisanajest w rozdziale "Procedury i fun* BLOKI Blok" zarwno programu gwnego,jak i procedury czy funkcji,je; cz programu skadajea si z czci deklaracyjnej oraz instrukcy Cz deklaracyjna wyatpuje opcjonalnie.W czci deklaracyjnej bl definiujemy: ,;'* / etykiety / atale / typy EYjt / zmienne / procedury / funkcje 1* Wazystkie zadeklarowane element s dostpne tylko wewntrz dane **x bloku. :."*** . * Programowanie w Turbo Pascal 7.0 blokw: 1. Bez c穌i deklaracyjnej begin writeln('Ten blok zawiera tylko jedn instrukcj'); end 2. Z czci deklaracyjn* type tablica=array[0..100) of integer; v x:tablica; begi writeln('Podaj elementy tablicy'); end Wewntrz bloku moe zosta umieszczony inny blok, np.: (*1*) type tablica=array[0..10) of integer; var X:tablica; procedure sumuj(m:integer); (*2*) var Z,N:integer; begin z:=0; for N:=1 to m do Z:=Z+X[N]; writeln(Z); (*2*) end; begin sumuj(3); (*1*) end Blok gwny ograniczony jest za pomoc znakw (*1*), za blok wewn* trzny za pomoc znakw (*2*). Zmienna X typu tablicowego zadekla*' wana w bloku gwnym jest dostpna take w bloku wewntrznym, *e zmienne Z i N zadeklarowane w bloku wewntrznym nie s dostpne bloku gwnym. Zmienne X jest okrelana jako zmienna globalna, Z* a*a zadeklarujemy zmienn lokaln o tym samym identyfku, **ze co zm na globalna w bluku gwnyn, to spowodujemy tzw. przykrycie zrnie* globalnej. Przykadowo, gdy defnicja procedury z powyszego p*yk byaby nastpujca: procedure sumuj(m:iteger); (*2*) var X,N:integer; begin X:=0; for N:=1 to m do X:=X+N; writeln(X); (*2*) end; tu za pomoc zmiennej X nie moemy odwoa si w bloku wewntr do tablicy zadeklarowanej w bloku gwnyn. Oglnie muna powied e: - zmienna lokalna przykrywa zmienn glubaln o tym samyn iden katorze, - zasig identyfikatora pola rekurdu ograniczony jeat do deklaracj kordu oraz do odwoania ai do rekordu za pomoc zmiennej rekc wej lub instrukcji wiѾcej with, - zaaig akadnikw obiektu ograniczunyjest do deklaracji obiektu i metod, wszyatkich obiektw potOmnych oraz du odwoania si* obiektu za pomoc zmiennej obiektowej lub instrukcji wiѾcej w PROGRAMY `?*3 * Program w jzyku Turbo Pascal ma nastpujc struktur: program Nazwa Programu ( Lista Parametrw ); uses Nazwy_Moduw; blok. Pierwaza linia tej struktury, okrelana mianem nagwka, au, .*w ; ** (i okrelenia nazwy programu oraz liaty identyfikatorw dla parame , przekazywanych do programu. Identyfkatory te muaz by oddzie ** ;, przecinkami. Nazwa programu wystpuje po aowie program, a * parametrw wyatpuje opcjonalnie. g P. Michakiewicz, l. wituszak Programowanie w Turbo Pascal 7.0 sywane w programe. us *es wyazezegomana po sowe uses i wyatpuje opcjonalnie. Identyfikatory moduw oddziela si przecinka, mi. Opis moduw znajduje si w nastpnym punkcie rozdziau. Linia trzecia okrela blok gwny programu, ktrego struktura zostaa opisana w poprzednim punkcie. Naley zapamita, e blok gwny programu zawaze jest zakoczony kropk. Przykady programw: 1. Program akadajcy si tylko z bloku begin writeln(' 5ie ma !'); end. 2. Program z nagwkiem program Uwaga; begin writeln('Uwaga !'/; end. 3. Program uywajcy procedury clracr z moduu Crt uses Crt ; begin clrscr; writeln('Uwaga ! Ten program ma parametry'); end. MODUY Czsto uywane deklaracje ataych, typw, zmiennych, proeedur i fi moemy oddzieli od programu i umieci w tzw. module. Dziki ra utworzone przez programist elementy, ktre zostay umieaz w module, moe on wykorzystywa w wielu programach. Moduy mona wykorzysta do tematycznego podziau utworzo: elementw programowych, czego przykadem s standardowe mo jzyka Turbo Paacal: Syatem, Doa, WinDoa, Crt, Printer, O*e: Stringa, Graph. Dziki moduom moliwa jest tzw. modularyzacja gramu. Pozwala ona na pisanie programw zwizych i przejrzysty* przede wszyatkim na atwiejsze ich uruchamianie. 98 P. Michakiewicz, I. wituszak unit Nazwa_Moduu; iterface uses Nazwy Moduw; deklaracje typw; deklaracje staych; deklaracje*zmiennych; nagwki procedur i*funkcji; implementation uses Nazwy Moduw; deklaracje procedur i funkcji; cz inicjujca; end. Podobnie jak program, modu zawiera nagwek, w ktrym po so unit wystpuje nazwa moduu. W przeeiwiestwie do programu moduu muai wystpi, poaiewa za jej pomoc odwoujemy si w * gramie do danego moduu. Z tego te powodu w jednym programie moemy uywa dwch rnych moduw o tej samej nazwie. Nal* take pamita, e nazwa pliku rdowego i binarnego moduu m odpowiada nazwie moduu uytej w nagwku moduu, z dokadno do pierwszych 8 znakw, co nie obowizuje w przypadku progran poniewa kompilator nie bierze nazwy programu pod uwag. Cz moduu po sowie interface suy do deklaracji typw, atay, zmiennych oraz nagwkw procedur i funkcji, ktre bd dostgpne programie lub innych moduach, ktre importuj dany modu. W cz deklaracyjnej umieszcza ai tylko nagwki procedur i funkcji, za i deklaracje umieszcza ai w czci implementacyjnej moduu, wystpuj cej po. sowie implementation. Wyjtkiem od tej zasadyjest umieszczen procedury lub funkcji z dyrektyw inline w czei deklaracyjnej. Cz moduu rozpoezynajca si sowem implementation, poza dekl racj procedur i funkcji z czci interface, pozwala na umieszczen ataych, zmiennych, procedur i funkcji, ktre dostpne s tylko w dany module. Ku1.*u deklarowania procedur i funkcji w czci impleme* tacyjnej jest duwolna. Mona pominѹ liat parametrw, ktra zosta3 zadeklarowana w nagwku danej procedury lub funkcji w czci inte: face. Cz inicjujca moduu zawiera instrukcje, ktre wykonywane s, chwili importowania moduu. Kady modu koczy sowo end z kropk* Programowanie w Turbo Pascal 7.0 g* Ponisze przykady przedstawiaj zalenoci: bezporcdnie pomidzy prograrnem i modulmi program Test; uses Modu*1,Modu2; begin end. unit Modul; interface implementntio end. unit Modu2; interface implementation ed. Program Testjest bezporednio zaleny od moduw Modul i Modu* porednie pomidzy programem i modu*mi program Test; uses Modul; begin end. unit Modul; interface uses Modu2; implementation end. unit Modu2; *. Michalkiewicz, I. wituszak implementation end. *.z. W tym przypadku prngram Test jest bezporednio zaleny tylko * . moduu Modul,za porednio zaleny od moduu Modu2.Modu zaley bezporednio od moduu Modu2.Onacza to,e identyfikato *t, zadeklarowane w module Modu2a dostpne w module Modul,ale n ;*;*.,; s dostpne w pro*ramie Test. modu*y wzajemn.ie zlee od siebie : .r**. Mfi \: :boi* * Program Test; uses Crt, Modu*l; begin clrscr; Pisz XY(10,10,'Nacinij dowolny klawisz'); Pisz XY(100,100,'Ten napis nie zostanie wywietlony') end. unit Modul; interface procedure Pisz XY ( x,y: integer; komunikat: string implementation uses Crt, Modu2; procedure Pisz XY ( x,y: integer; tekst: string ); begin if ( x in [1..80] ) and ( y in [1..25) ) then begin gotoxy(x,y); write(tekst); end else Komuikat('Wsprzde poza zakresem :'); end; end. unit Modu2; interface procedure Komunikat(kom:strinq); implementation uses Modul; Programowanie w Turbo Pascal 7.0 procedure Komunikat(kom:strg); *,.`* ~vv***..v.. begin PiszXY (1,1,' Uwaga - ' +kom ) ; SYMBOLE PODSTAWOWE end Jzyk Turbo Pascal posiada nastpujce symbole,ktrych uywa s: ;-,i'; Modul2w czci implementacyjnej importuje modulu Modull proce * ppja* znakitst ri* f ' spacja (niewidoczny znak oi dur PiazXY,ktrej uywa w deklaraeji procedury Komunikat,Z* Modull importuje z moduu Modul2procedur Komunikat,ktrej uyWa Zestaw litex skada si z nastpujcych znakw: podezas deklaracji procedury PiszXY.Takie wzajemne zalenoe* * moliwe tylko dlatego,e uycie klauzuli uses w czci implementacyjn* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z powoduje ukrycie wewntrznych odwoa w importowanym module, a b c d e f g h i j k 1m n o p q r a t u v w x y z Naley panita,e czei interface nie mog by wzajemnie zalene. Jeeli chcielibymy umieci w procedurach PiszXY i Komunikat dodaw oraz znaku podkrelenia (*). kowy parametr okrelajcy okno na ekranie np.za pomoe typu: Zestw cyfr sklada si z nastpujcych znakw: type 0123456789 okno = record Do znakw specjalnych nale: xl,yl,x2,y2: integer; kolor okna : byte; +-*/=<>(].,():;'^*{}*# end; a naglwki mialyby nastpujc posta: ,oraz podwjne znaki sterujce: <= >= ..(* *) (..) procedure Komunikat(ekran: okno ; kom:string); procedure PiszXY (ekran : okno ; x,y : integer ; komunika ` ** ; z ktrych (* i *) mona uywa zamiast znakw { i },za znakw ( string ) ; zamiaet znakw [ i ].Do znakw sterujcych nale znaki o kodach A; to deklaracja tego typu nie moglaby by umieszezona w czciach in ,* od 0do 31. face obu tych moduw.Rozwizaniem tego problemu jest utworze * nowego moduu,ktry sluylby tylko do zadeklarowania typu okno,n '; IDEN1'YFIKATORY unit Typokno; * Identyfikatory slu do opisu programw,moduw,typw,stal: interface * ' zmiennych,funkeji,proeedur,metod oraz pl w rekordach i obiekta type ***** Okrelaj one nazw danego elementu programu i mog by zbudow okno = record z liter,znaku podkrelenia (*) oraz cyfr.Znakiem poeztkowym musi xl,yl,x2,y2: integer ; litera.lub znak podkrelenia.Dlugo identyfikatora moe by dowo: kolor okna : byte; *** ale naley pamita,e tylko pierwsze 63znaki s znaczce. ; end ; ,j * ; Przykladowe identyfikatory: implementatio s;*;-` end. nazwisko x wysoko 123 zmiennal 102 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 U r z dyrektywy. r ~ *ujaywllC I * I*yc w tolinacie diesigtnym * azezeglnym znaczeniu, a to tzw. ow kluczowe ora szesnaatkowym nych dla liczb cak ki s liczb cakowitych jest uzaleniony od typu o tych i maksymalne wartoci moe przyj Sowa kluczowe nie mog by zmienione przez programistg; a oe typu Longint mowa, zarezerwowane przez jzyk i maj ustalone znaczenie. Do w kluczo w zakresie ud -2147483648 do 2147483647. wychjzyka Turbo Pascal nale nastpjce sowa: Liczby recywiste mog by zapisywane tylko w fomacie dziesi tn and if repeat Zakres liczb rzec wist ch zaley od te o czy w kornputere jest ko f.: cesor arytmetyczny.W przypadku gdy koprocesor nie wystpuje,1 arra im lementation shi liczb r 9zywiatych3krela ty Real o wartociach przediau asm in s * * begin inherited shr *C;*; 2.910 do 1.710.Gdy moemy uy koprocesora,to wigks* case inline string *s zakres liczb rzeeywistych do przedziau od 3.4*10*4932d01.1*104 ktry to zakres definiuje typ Extended. construc:tor labelface en Uywaje liczb rzecywistych moemy uywa do ich zapisu tzw.not destructor mod t e Yp naukowej.Ma ona naatpujcy fornat: div nil unit do not until mEc lub mec downto object uses gdzie: else of var for procedure xor funetion program - liczba cakowita ze znakiern,okrelajca cec goto record liczby W odrnieniu od aw kluezowych,znaczenie dyrektyw moe by zmie- r." E,e - aymbole notacji naukowej nione przez programist,ale nie jest to zalecane.Do standardowych Przykady licb rzecz wiat dyrektyw jzyka nale nastpujce dyrektywy: y ych w notacji naukowej: absolute forward private . 1.5e4 oznacza 1.5*10q assembler interrupt public 6.7E-2 oznacza 6.7*102 I 'I ' t 1 y* * * -2.3E-3 oznacza -2.3* 1 -3 external near vir ua 0 far *** ETYK*Ty LICZBY Etykiety au do oznaczenia miejsc w programie,do ktrych zostani prekazane aterowanie,czyli owl* n w ro p J a przeJee z dowolnego miejac amie d Wa. p *' o me sca w ktr W jzyku Turbo Pascal mamy moliwo korzystania licb zapsy J , ym zostanie dana etykieta umieszeon* nych w systemie diesitnym i szesnastkowym.Liczby szesnastk wB * * Przkk anie aterowania wykonuje sig za pomoe instrukeji goto.Nazw popredzane a znakiem $,np.liczba $10w systeme szesnastkowym t t. y oe by okrelona za pomoc identyfikatora lub liczby cakc ezzna*a ` ,1 zakresu od 0do 9999.Nale am od owada lezbe 16w s steme des tn .Wa stke lezb b : y p ta ze zer p , a wodce ni odrona et kie J y t m dz sob Moze 1 y ,tzn.e et kie $ s traktowane Jako lezby zapaane w systeme dzesgtnym. y ty 0099 99okrelaj * wyrni liezby cakowite oraz recywiste. : E a* etykiet.Deklaracja etykiety ma nastpujc posta: Label lista etykiet 104 P.Michakiewicz,I.wituszak Programowanie w Turbo Pascal 7.0 105 **lZlc *u*cuyicu v*ir** r przecinkiem, np.: Label start,koniec; *.ACUCHY acuchy Znakw zbudowane a ze nakw rozsZerzonego kodu ASCII, W skad acucha wchodz dowolne Znaki, wezajc w to znak spa* (niewidoczny odstp), liczby cakowite poprzedzone znakiem #, o war*. ciach od 0 do 255 oraz znaki aterujce uzyskiwane za pomoc Znaku * i litery. Przykady: 'JAROSLAW YCZYWEK' 'Michakiewicz'N13*10'wituszak' 'Irek'"C'Gosia' " Ostatni przykad okrela acuch pusty. Poniewa znaki widoczne umie, sZczone s w apostrofaeh ('), to w celu umiesZczenia apostrofu w aeuchu* naley uy go podwjnie, np.: 'abc"def' co spowoduje, e midzy Znakami c i d umieszczony Zostanie apostrof, KOMENTARZE KomentarZjest to cig znakw umieszczonych w nawiasach klamrowyrb (} lub ograniczony za pomoc dwuZnakw (* *). Naley pamita, * komentarze s ignorowane przez kompilator. Jeeli po nawiasie klanr rowym ( lub dwuznaku (* wystpuje znak $, to komentarZ traktowan) jestjako dyrektywa kompilatora. Przykadowe komentarze: ' { To jest komentarz} (* To takie jest komentarz *) Przykadowe dyrektywy: {sx+} (*$x+*) ,: TYP *,"5 ! LOGICZNY aiq ;i* 3t**j, "**.il ,..**, Cb PROSTY ACUCHOWY WSKANIKOWY RZECZYWISTY STRUKTURALNY BOOLEAN BYTEBOOL WORDBOOL LONGBOOL REAL SINGLE DOUBLE EXTENDED COMP TABLICOWY REKORDOWY O Bi EKTOWY ZBIOROWY PLIKOWY CA*KOWITY INTIGER SHORTINT LONGINT BYTE WORD ZNAKOWY WYLICZENIOWY OKROJONY PROCEDURALNY 106 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 Typydanych Kada staa, zmienna, wyraenie czy te funkeja jest okreloneg typu, Typ ten dokadnie charakteryuje bir wartuci ryjmowanycl p*zez wyej wymienione elementy. Wjzyku Turbu 'ascal moemy wyrni standardowe typy dla liczb cakowitych, rzecywistych, znakw i war*, ci logicznyeh. Dodatkowo moerny okreli typy definiowane prze uytkownika. Nale do nich ty: okrojony, wyliczeniowy, wskanikowy, tablicowy, rekordowy, obiektowy, zbiorowy, plikowy i proceduralny, *,** Rysunek na sLr.107 przedstawia struktur typw wjzyku Turbo Pascal. TYP CAKOWITY Przykad: Dane tego typu stanowi zbir lieb cakowitych. Mona wyrni pi type podtypw cakowitych rnieych si zakresem, a co tym idzie, Odlego = Real; reprezentacj bajtow kadego z nich.Wartoci te przedstawia ponisza Waga = sinqle; tabelka: ZAKRES W BAJTACH ROZMIAR TYP ACUCHOWY Typ acuehowy suy do deklarowania zmiennych skadajcych si Shortint -128..127 cigw znakw. Dane tego typu zapamitywane s jako cig znak* Integer -32768..32767 2 f ktre s poprzedzone bajtem okrelajcym ich ilo.Poniewa lic: -2147483648..214748364? 4 znakw okrelajeden bajt,wic typ Stringmoe skada si maksy Lon *nt nie z 255znakw.Definiujemy go za pomoc sowa String,za dug Byte 0..255 *'* acucha definiujemy za pomoc indeksu,ktrego warto musi b 0..65635 2 ** * * zakresu od 1do 255.Brak indeksu powoduje ustawienie jego wartc Word na 255.Znak o indeksie 0zawiera infornaej o biecej dugoci dan* Przykad: * * aeucha i mona go odeyta pomoc funkeji Length('ekst) l ***; funkcji Ord(Tekst[0)),gdzie Tekat jest mienn acuchow.Pryk* type * deklaracji typw acuchowych: Liczba Cakowita = integer; Liczba Cakowita Dodatnia = Word; type a=String; b=5tring[10]; TYP RZECZYWISTY c=5tring[ 123) ; Dane tego typu atanowi zbir liczb rzeczywistych. Mona wyrnic pl podtypw rzeczywistych rnicych si zakresem, a co za tyn idzie, reprezentacj bajtow kadego nich oraz liczb miejsc znaczcy*b Waxtoci te przedstawia tabelka. *:: W prypadku defniowania procedury lub funkeji, ktrej parametr* mog by zmienne acuehowe o rnych dugociach, moemy uy deklaracji identyfikatora OpenString jako nazwy typu albo deklara procedury lub funkeji uy cznie z dyrektyw {$P+) kompilato: Otrymamy wtedy tzw. acuchy otwarte. Przykad: Procedure Dodaj ( var Tekst : Openstring ); 108 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 1 Sp+y Procedure Dodaj( var Tekst : 5tring ); begin end; ISP-1 Dla tak zdefiniowanej procedury Dodaj i dla nastpujcych zmiennych uar x:5ting; y:5tring[15]; wywoania poniaze a poprawne: Dodaj(x); Dodaj(y); aeuchy o wiksej dugoci moemy twory, wykorzystujc typ PCh* opisany w typach wskanikowych. T Y P Pft OCEDURALNY W przeciwiestwie do standardu jyka Paacal, jzyk Turbo Pascal traktuje procedury i funkejejako elementyjzyka, ktre mona przywi** zywa do zmiennych i przesylajako parametry. Deklarowanie zmiennej' tego typu jest podobne do delilaracji funkeji lub procedury, a rni siaf tym, e po slowie funetion lub procedure nie wystpuje identyfikatat funkcji lub procedury. Przyklady deklaracji typw proceduralnych: * type a=Procedure; b=Procedure(n:Real); c=Function(m:5tring):Char; Naley pamita, e mienne tego typu nie mog by zwracane funkej. TYP WYLICZENIOWY Typ wyliczeniowy definiuje zbir identyfikatorw oznacajcych posze glne wartoci przez ich wyliczenie. Przykladowe typy wyliceniowe: 170 P. Michakiewicz, I. wituszak Dzie Tygodnia=(pon,wto,ro,czw,pi,sob,nie); Pe=(mezyzna,kobieta); Uporzdkowanie danych typu wyliczeniowego wynika kolejnoc wystpowania na licie identyfikatorw ijest okrelane licb porz w. Liczba porzdkowa dla danej okrelonej pre pierwszy identy tnr jest rwna zero i dla kadej nastpnej jest o jeden wiksza. Li porzdkow wyznacza si za pomoc funkeji Ord. Za pomoc funkeji ; i Succ moemy wyznaey poprednik i nastpnik danej wartoci wyliczeniowego, a za pomoc funkeji Low i High najmniejsz i naj ks warto z danego akresu. TYP OKROJONY Typ okrojony okrela podzbir dowolnego typu porzdkowego lub v :yt ezeniowego, ktry ogranica zakres dostpnych wartoci danego t r***r porzdkowego. Przykladowe typy okrojone: type Rok=1990..1999; Mae Litery='a'..'z'; ;: **b'*' Dla zmiennej R typu Rok moemy podstawi tylko wartoci z zakresi 1990 do 1999, za podstawienie innych wartoci powoduje bd. TYP LOGICZNY t::*` Typ logiczny jeat to typ wylieeniowy, ktry przyjmuje dwie warb ' okrelane za pomoc identyfikatorw False i True. Moemy wyr: nastpujce typy logiczne: ROZMIAR W BA*TTACH Boolean 1 ByteBool 1 WordBool 2 Lon Bool 4 Programowanie w Turbo Pascal 7.0 j*yp 1*u01e lUZC *7lLy*uivwu u,yinv - r-- z pozoatae typy logicne mog przyjmowa rne wartuci porzdkowe. Podaumowujc, typ logiczny przyjmuje wato False,jeelijego warto porzdkowa jest rwna 0, a True dla wartoci wikszych od zera. '1'YP ZNAKOWY Typ znakowy okrela zbir znakw okrelonycl przez rozszerzony zbir znakw ASCII. Warto orzdkowa, ktr rnoerny odczyta za pomoe funkcji Ord, okrela kod danego znaku. Przykadowe typy nakowe: type Znak=Char Litera=Char; TYP WSKANIKOWY Typ wskanikowy ozwala na okrelenie zmiennycl, za ponoc ktrych * moemy odwoa ai do obszarw pamici operacyjnej. Wyrniamy ! naatpujce trzy deklaracje typu wskanikowego: type Wsk*l = " Typ podstawowy; Wsk 2 = Pointer; Wsk 3 = P Char; Dehlarcja 1 Deklaracja pierwsza okrela typ wskanikowy sucy d o deklaracji zmiennych, wskazujcyeh dane zdefniowane za pomoc typu Typ*pod stawowy. Przykad: type Wsk = "Osoba; Osoba = record imi, nazwisko: String(15]; wiek: Byte; end; var P:Wsk i ; gdzie zmienna P bdzie moga przechowywa adres na atruktur pami* opiaan za pomoc typu Osoba. I 712 P. Michakiewicz, I. wituszak qIY,5 Za pomoc drugiej deklaraeji definiujemy zmienne, ktre nie wsl okrelonych danych. Wartoci typu Pointer a jednak zgodne typami wakanikowymi. Deklarcja 3 Deklaracja trzecia okrela typ wskanikowy PGhar slucy do dekl zmiennych wskaujcych cigi znakw, ktre mona okreli jak cuchy dynamiczne. aicuchy te nie maj z gry okrelonej d* znakw, za ich dugo moe wynosi maksymalnie 65535 zn Kady acuch dynamiczny jest zapamitany jako tablica zn ktrej oatatnim znakiem jeat nak NULL (#0). Poniewa kada tablica zacyna si od indeksu zerowego, wic jej zapis zawaz nastpujcy: array [O..X) of Char gdie X onacza liczb cakowit wiksz od zera. Przykad: a) var Wsk:P Char begin * rF: Wsk:='Przykadowy acuch znakw'; end. b) const Dana: array [0..2] of Char = 'Pr2ykadowy acuch znakw'; var Wsk:P Char; begin Wsk:= * Dana " end. Obydwa przykady a rwnowane, a w wyniku ich wykonania zmit Wak wskazuje na obaar pamici awierajcy kopi danego ac* f nakw. Po zastosowaniu dyrektywy *X wazyatkie tablice nakw acynajc od indeksu zerowego odpowiadaj typowi PChar, co umoliwi wykon Programowanie w Turbo Pascal 7.0 asLpujcG*u vu*wwioiu. var Dane:array[0..1'1] of Char Wsk:P Char; Znak:Char; begin Wsk:=Dane; Z nak : =I*sk ( 15 ] ; * Znak:= Dane(15]; end. W wyniku tego podstawienia zmienna Wsk wskazuje na pierwsy ele. -99i* * * ; ment tabliey Dane. Onacza to, e zamiast ocekiwanej miennej typu PChar, mona astosowa tablic zacynajc si indeksem zerowym. Ostatie dwie instrukcje s wtedy rwnowane. Typ PCharjest definiowany w module System nastpujco: * :ur* type P Char = " Cha; Procedury i funkcje uywajce jako paramtrw zmiennych typu PCh* zawiera modu Strings. Przypisujc do zmienej wskanikowej sowo kluczowe nil moemy okreli zmienn wskaikow, ktra nie wskazuje na aden obszar pamici. TYP TABLICOWY Typ tablicowy okrela tablic skadajc si ze staej liczby elementw okreloego typu. Kademu lementowi w tablicy przyporzdkowany jest indeks okrelajcy jego pozycj w tablicy. Oglna deklaracja ma nastpuje posta: type Nazwa Tablicy = array [wymiary) of Typ Podstawowy; gdzie Typ*Podstawowy okrela typ elementw tablicy, a wyn def`niowane s naatpujco: II! Zakres Dolny..Zakres Grny[,Zakres Dolny..Zakres Grny[,..,]) i Przykad: Ii 114 P. Michakiewicz, I. wituszak Y* Tablica Znakw=array[1..10] of Char; gdzie TablicaZnakw jest tablic jednowymiarow, akadajc e elemntw typu Char. Dolny zakrea jest rwny 1, za grny 10. elementami tablicy bd tablice, to definiujemy je jak w poni przykadzie: type Tablica Linii=array[1..25] of array[1..80) of Cha* Tablic tak moemy w skrcie zapisa w postaci: type Tablica Linii=array[1..25,1..80] of Char; Do okrelania wymiarw tablicy mona uywa wartoci o typie po kowym, z wyjtkiem typu Longint i typw okrojonych opartych Longint. Wrd tablic moemy wyrni tablice: znakowejednowymiarowe o zakresie dolnym rwnym 0 (ze* otwarte *. dostpu do pamiei, dostpu do portw. Znakowe tablice jednowymiarowe o zakresie dolnym rwnym 0 def wane s nastpujeo: type Tablica=array[O..x) of Char; gdzie X oznacza dodatni liczb cakowit, wiksz od zera. Tablice takie przy uatawieniu dyrektywy {$X+} lub wczeniu * Extended syntax w menu Optiona I Compiler s godne z typem PC: Przykad: var Tab:array[0..100] of Char; *isk : PChar ; beqin i*sk : =Tab; Programowanie w Turbo Pascal 7.0 opcji Open parametera w menu Options I Compiler. Tablice te s stoso- * wane sjako parametry fomalne procedur i funkcji. Tablice te nie maj* okrelonego wyniaru i definiowane s nastpujco: array of Typ Przykad: *!' procedure Wpisz Warto(var Tab : array of Inteqer); gdzie parametrem procedury jest tablica Tab o nie ustalonyzn z gry wymiarze. Po przekazaniu tablieyjako parametru do funkcji lub pro*e. duryjest ona traktowanajako tablica o nastpujcej strukturze: array [ O..N-1 ) of Typ *laapu,]c lbudow: segment:offset prykadowo: Tryb Pracy Sterownika Ekranu := Mem($0040:$0049) Liczba Xolumn Na Ekranie := Mem W($0040:$004A); Tablice ozwalajce na bezporedni dostp do portw posiadaj na pujce identyfikatory: ' Port - elementami s dane typu Byte. PortW - elementami s dane typu Word. Indeksy tych tablic s typu Word i okrelaj adres portu. gdzie N okrela liczb elementw w przekazanej tablicy. TYp REKORDOWY Moemy si o tym przekona po wykonaniu nastpujcego programu: Typ rekordowy opisuje zoon struktur danych.Struktura ta ska type ai z pl.Kade pole moe by innego typu i moe by take atrukt ray (3..10] of Byte ; zoon,np.rekordem.Definicja rekordu rozpoczyna ai sowem reco: Tab=ar a koczy sowem end i ma nastpujc budow: const T:Tab=(1,2,3,4,5,6,7,8); procedure Wypisz(var Tablica:array of Byte); f;*t record begin Pole : Typ; Write Ln(Low(Tablica),'',High(Tablica)); Pole : Typ; ed ; begin Wypisz (T ) ; POle : Typ Write Ln(low(T),'',High(T/); end; end. sibyf * ** e ole oznacza identyfkator pola w rekordzie,za Typ Typ elementw tablicy przekazywanej do procedury lub funkcji mu oznacza ty taki sam,jak typ elementw tablicy otwartej. *; Przykadowe typy rekordowe: Tablice pozwalajce na bezporedni dostp do pamici posiadaj nas* pujce identyfikatory: type Osoba=record Mem - elementami s dane typu Byte. Imi:5tring(10); MemW - elementami s dane typu Word. Nazwisko: 5trinq [ 20] ; Wiek:Integer; . MemL - elementami a dane typu Longint. Adrs : string (3o ) 116 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 Kartoteka=record xod Pracownika:Inteqer; Pracownik:Osoba; 5tanowisko:5tring[20] end; Dostp do pl rekordu odbywa si za pomoc identyfikatorw zmienn* danego typu rekordowego i pola. Przykadowo, gdy zdefiniujemy zmienn var Lista:Kartoteka; to.do pl rekordu moemy odwoa si w nastpujcy sposb: Lista.Pracownik.Imig:='Ireneusz'; Lista.5tanowisko:='Dyrektor'; lub za pomoc instrukcji with, np.: with Lista do begin xod Pracownika:=121; Stanowisko:='xierownik' Pracownik.Imi:='Piotr'; end; Odmian typu rekordowego jest tzw. typ rekordowy z wariantami, ktq ma nastpuje budow: record Pole : Typ; Pole : Typ; case Pole W : Typ Porzdkowy of wariant:(Pole : Typ;... ; Pole : Typ;I7 wariant:(Pole : Typ;... ; Pole : Typ;) wariant:(Pole : Typ;... ; Pole : Typ;l* end; gdzie Pole oraz PoleW oznaca identyfikatory pl w rekordi*, Typ TypPorzdkowy oznaczaj typy tych pl, za wariant moliwo wy 118 P. Michakiewicz, I. wituszak uczeuiuwego. Naley pamita, e deklaracja pola z wariantami jest ostatni dek; cj w definicji rekordu. Przyklad typu rekordowego waiantami: type Zdolno= ( pyrva, niepywa ) ; Rodzaj=(dowolny,klasyczny,delfin,grzbietowy); Osoba=record Imi:5tring(10); Nazwisko:5tring[20]; Wiek:Integer; Adres:5tring(30]; case Pywanie:Zdolo of pyr*a : ( 5ty1: Rodzaj ; Dystans:Integer; Czas:Real); niepywa: (Brak:Char); end; **)** Przykladowo, gdy zdefiniujemy zmienn ` * *,i 11 i ' twb*c=. var ;a*rru? : : * Z awodnik : Osoba to do pl rekordu moemy odwoa si w nastpujcy sposb: Zawodnik.Imi:='Ireneusz'; Zawodnik.Wiek:=1?3 If Zawodnik.Pywanie=pywa The begin Zawodnik.5ty1:=klasyczny; 9 : Zawodnik.Dystans:=100 ; ed Else Zawodnik.Hrak:='N' Z*P OBIEKTOWY Typ obiektowy opisuje oon struktur danych. Struktura ta skai si z pl, podobniejak struktura rekordu, oraz tzw. metod, czyli opera* wykonywanych na obiekcie. Definieja obiektu ropoczyna si sowe Programowanie w Turbo Pascal 7.0 11 end; object (dziedziczno Pole : Typ; Obiekt Okrgjeat potomkiem obiektu Punkt,cyli dziedzicy po nimj Pole : Typ; pola i metod**. II Wrd metod moemy wyrni dwie metody specjalne,deklarowane Pole : T pomoC aw conatructor i deatruktor.Su one do inicjowania i uau* :; nia obiektw,gdy korzyatamy z procedur New i Dispose oraz do ini* Metoda * lizacji obiektw zawierajcych metody wirtualne. Metoda; Metoda wirtualna deklarowana jeat za pomoc sowa virtual,a deklaracja ma naatpujc poata: Metoda; end; ***ti*, nagwek metody; virtual ; gdzie: Dziedziczno - nazwa obiektu prodka np.: Pole - idetyfikator pola w obiekCie procedure Init (a,b,c : Integer ) ; virtual ; - typ pola Jeeli adeklarujemy metod jako wirtualn,to we wsyatkich typa b k po*mnych metody o tym aamym identyfkatorze musz by deklarove Metoda - deklaracja operacji na o ie cie ne take jako wirtualne. Deklaracje pl wykonuje ai tak, jak w rekordzie, z metody ek a* je OprCz metod wirtualnych iatniej tw. metody dynamiczne, ktre ma my tak,jak deklaruje si funkeje lub proce ury a ey pa , * naatpujC deklaracj: l deklaracja metody wewntrz typu obiektowego okrela tylko nagw tod a e defini a znajduje si poza deklarac t u obiektowe * nag j yp wek metody; virtual indeks; Przykad typu obiektowego: dzie indeka okrela licb z akreau od 1do 65535. Metody dynamiczne w porwnaniu z metodami wirtualnymi powl type *" na ograniczenie pamici wykorzystywanej do zapamigtania wskanik Punkt=ob*ect * do metod wirtualnych dla kadego obiektu. procedure Zeruj ; Do metod moemy odwoa aig za pomoc sowa with,podobnie jak zmienn ch rekord w end; y o ych lub za pomoc aowa inhexted s ' uz ce o c okrg=object(Punkt) *; wywoania metody prodka.Naley pamita,e sowo inherited mo promie : Integer ; * by uywane tylko w prypadku,gdy obiekt poaiada rzodka. 5 procedure Zeruj Promie; end * Zarwno pola,jak i metody mog by udoatpniane tylko wewntx moduu,w ktrym zadeklarowano dany obiekt (private) lub take poz gdie x,y okrelaj wsprdne punktu,za procedura Zeruj ustawia nim (public).Dyrektywy public i private mog by powtarane,np.: na warto rwn zero i moe by zdefniowana nastpujco: type procedure Punkt.Zeruj; Obiekcik=object begin x,y:Inteqer; x:=0; private 120 P.Michakiewicz,I.wituszk Programowanie w Turbo Pascal 7.0 12* public z:Real; procedure Zeruj; private c:Real; end; Wyrniamy nastpujce deklaracje typu plikoweg : t Y Pe Plik*l = file of T Plik 2 Yp Podstawowy; = file; Plik 3 = Text gdzie pola x,y,z i metoda Zeruj s typu public, za pola a,b,c to pola typu t De*aracja w pierwsz* przy*adzie o private. Typ*Podatawowy, np.: znacza plik o elementa* TYP ZBIOROWY Typ zbiorowy okrela zbir potgowy, ktrego elementy s typu porzd kowego. Przez zbir potgowy naley rozumie zbir wsystkich moU. wych podbiorw wartoci typu porzdkowego, wczajc w to tahze zbir pusty. Typ biorowy definiujemy nastgpujco: type Typ Zbiorowy = set of Typ; gdzie Typ*Zbiorowy oc nazw definiowanego typu, za Typ okrel* typ porzdkowy. Typ porzdkowy moe zawiera maksymalnie do 256 elementw, pr* czyn warto porzdkowa elementu pierwszego wynosi 0, a ostatni 255. Elementy typu zbiorowego zapisywane s w nawiasach kwadrat4 wych, przy czym zbir pusty oznaca si za pomoc symboli []. Przykadowe typy zbiorowe: type litery=set of 'a'..'z','A'..'Z'; cyfry=set of '0'..'9' za zmienne tych typw mog przyjmowa np. nastpujee warto: ['a','b','c','A','B','C') ['2','3','4','5') TYP PLIKOWY Typ plikowy okrela zbir danych sekwencyjnych o zmiennej * elementw tego samego typu. Elementy skadowe nie mog byE plikowego oraz typu, ktry awiera w sobie de*laracje typu pliko, ty Pe plik I = file of Hyte; Osoba = file of record imie azwisko: String[15j; wiek: Byte; end; D *a Tcja w* g;im przy*adzie onacza tzw.typ yp ta stosow plikowy nie zde est wnie do bezporedniego dostg) likw dyakow ch w ich forna*ch wewntrznych. * Deklaracja w trzecim rz * wy,ktrego elementam s dzie okrela tzw.atandardowy plik te naki z*powane w linie.Kada P* uw d n * P*ez tzw.znak powrotu karetki (an j in (ang.li eed). g.carriage ret ne f ZGODNO Typ*i r ; Identyczno typw d**ty no typw musi wystpi pomidzy parametram yni,wyst u c i i fornaln* * Z'm w wywoaniach procedur i funkcji. D t* y I i T2s identycne,gdy apeniony jest jeden z p onisz* f.. ' TI i T2maj ta* sam identyfikator typu. ',Tl jest zadeklarowany jako identycny z T2,tzn.zachodzi r *r nanie T1=T2. P*ykady: t Y Pe : TI=Real; T2=TI; Typy Tl,T2i Rea1s identyezne. 1 122 P. Michakiewicz, I. wituszak Programowanie w Turbo Pasca/ 7.0 type T1=set of Real; T2=set of Real; Typy T1 i T2 nie s identyczne, poniewa aet of Real nie jest identyfka, torem typu. Zgodno typw Zgodno typw jeat nieraz wymagana w wyraeniach. Dwa typy Tl i '1* a zgodne, gdy spenionyjeatjeden z pon szych i warunkw : 1) obydwa typy a takie same, 2) obydwa typy s typami rzeczywiatymi, 3) obydwa typy a typami cakowityni, 4) jeden typ jest typem okrojonym typu drugiego, 5) obydwa typy a typami okrojonymi tego aamego typu, 6) obydwa typy s typami zbiorowymi ze zgodnyni typami bazowyni, 7) obydwa typy a typami acuchowymi o identycznej licbie el ementr jed 8) en z typwjeat typem acuchowym, za drugi typem acuchow lub znakowym, 9) jeden z typw jeat typem Pointer, drugi dowolnym typ wskanikowyna, 10) jeden typw jest typem PChar, za drugi tablic znakw o inde* dolnym rwnyn zero (tylko gdy wczona jest dyrektywa $X), 11) obydwa typy s typami wskanikowyni, wakazujcymi na ten sa typ (tylko gdy wczona jest dyrektywa $T), 12) obydwa typy s typami proceduralnymi z identyczn licb paran* kt re od owiada aobie typami oraz z identycznymi typami wy> trw, p j kw. Zgodno typw w sensie przypsni Zgodno typw T1 i T2 w senaie przypisania zachodzi wtedy, ga inatrukeji przypiaania x:=y zmienna x jest typu T enna ty 1, za zmi T2. Dwa typy T1 i T2 a zgodne w senaie przypiaania, gdy spenionyr jeden z poniszyeh warunkw: 1) typy T1 i T2 a identycne i aden z nich nie jeat typem pliko* P. Mic*akiewicz, I. wituszak iuu u,y Zroiu plikowego, 2) typy T1 i T2 s godnymi typami porzdkowyni, a warto y t) T2 mieci ai w zakreaie w'tuci typu T1, 3) typy T1 i T2 a typami rzeczywistymi, a warto y typu T2 mit ai w zakreaie wartuci typu T1, 4) T1 jeat typem reczywistyn, za T2 typem cakowityn, 5) T1 i T2 s typami acuchowyni, 6) T1 jeat typem acuehowym, za T2 typem nakowyn, 7) Tl i T2 s zgodnymi typami biorowyni, a wartoei zbioru typu awieraj ai w biorze wartuci typu T1, 8) T1 i T2 s godnyni typami wskanikowyi, 9) T1 jeat typem PChar, za T2 jeat ata acuchow (tylko * wczona jest dyrektywa $X), 10) T1 jeat typem PChar, typ T2 jest tablic nakow o indek dolnyn rwnyn zero (tylko gdy wcona jest dyrektywa $X), 11) TI i T2 s zgodnymi typami proeeduralnyni, 12) T1 jest typem proceduralnym, za T2 jest procedur lub funkcj identyczn liczb parametrw, ktre odpowiadj sobie typami m z identycznymi typami wynikw, 13) T2 jeat typem obiektow*n, ktrego dziedzina naley do diedzi typu obiektowego T1, 14) Ttyp wakanikowy P2 wskazujcy typ obiektowy T2 jest godny aensie prypiaania z typem wakanikowym Pl, wakazujcyn t obiektowy Tl, jeeli T2 jeat typem obiektowyxn, ktrego dziedzi *i ; naley do dziedziny typu obiektowego T1. Stae i zmienne ; STA.E Staa jest identyfikatorem, ktremu przyporzdkowano warto. W; to ataej nie moe by zmieniona podezas wykonywania progran Stae deklaruje ai po aowie const. Programowanie w Turbo Pascal 7.0 Deklaracja przykadowych staych: const Liczba Max=1000; Komunikat='UWAGA !'; Oprcz tego typu staych moemy deklarowa stae, uywajc tw, *,: wyrae staych, np.: I I const Kod A = Ord('A Kt = 90*Pi/180; Imi*l = 'Piotr'; Imi 2 = 'Ireneusz' Razem = Imi*l + Imi 2; Liczba Min = Liczba Max - 500; Podczas takich deklaracji moemy uywa tylko nastpujcych funkc)r standardowych: Abs Lo Ptr Chr Low Ro und Hi Odd 5izeOf High Ord succ ; Length Pred 5wa Trunc ! Osobal,Osoba2 : Nazwisko; lub var Osobal,Osoba2 : array[0..20] of Char; Deklarowanie zmiennych moe odbywa sig zarwno w czci de cyjnej programu gwnego, jak i w czgciach deklaracyjnych proc funkcji. Zmienne deklarowane w czci deklaraeyjnej programu g go nazywane s zmiennymi globalnymi, za deklarowane w proced i funkcjach - to zmienne lokalne. Zmienne globalne przechowywane s w segmencie danyeh, ktre* miar nie moe przekroczy 65520 bajtw. Zmienne lokalne przechowywane s na stosie, ktrego rozmiar ; ardowojest ustawiony na warto 16384 bajtw i moe zosta zmie za pomoc dyrektywy $M w zakresie od 1024 do 65520 bajtw. Wrd zmiennych moemy wyrni tzw. zmienne absolutne, okrelaj umiejscowienie zmiennej w pamici. Zmienne te deklarujemy za pomoc sowa absolute nastpujco: u Nazwa:Typ absolute seqment:offset; *t '*: ZMIENNE Zmienna jest identyfikatorem okrelajcym warto, ktra moe u zmianom podczas dziaania programu. Zrnienne deklaruje si po s* var. Kada zmienna przed jej uyciem musi by zadeklarowana. D racja pojedynczej zmiennej jest nastpujca: var Nazwa zmiennej : Typ zmiennej; Jeeli kilka zmiennych jest tego samego typu, to rnona zadeklarov nastpujco: var Zmienna 1,Zmienna 2,Zmienna 3 : Typ zmiennej; przy czyn typ zmiennej moe by okrelony w czci deklaracyjnej lub bezporednio okrelony podczas deklarowania zmiennej, np.: type Nazwisko=array(0..20] of Char; 126 P. Michakiewicz, I. wituszak gdzie segment i of3Eset okrelaj adres w pamici, np.: var Crt Mode : Byte absolute $0049:$0049; Crt Cols : Byte absolute $0040:$004A; Crt Start : Bye absolute $0040:$004E; gdzie zmienne wskazuj nastpujee komrki w pamici: Crt Mode - biecy tryb pracy sterownika ekranu Crt Cols - liczba kolumn na ekranie Crt Start - adres pocztku obrazu w pamici obrazu STA*,E INICdOWANE Stae inicjowane mog by porwnywane do zmiennych, ktrym na warto pocztkow. W przeciwiestwie do staych opisanych w podczas deklarowania staych inicjowanych okrela si ich typ Programowanie w Turbo Pascal 7.0 CO S Nazwa staej : Typ staej = Warto staej; Podczaa uruchomiania programu stae s inicjowane zgodnie z warto. i krelonyni w deklaracji, jednak w trakcie dziaania program ciam o mog si te wartoci zmienia. Naley pamita, e w przypadku de kla. ro wania staych inicjowanych w czciach deklaracyjnych procedur i funkcji kolejne ich wywoania nie powoduj ponownej inicjacji tych staych. Przykadowa procedura: procedure Licznik; const L:Integer=0; begin Inc(L); Writeln(L/; end; przy kolejnych wywoaniach bdzie wypisywa liczb okrelajc iloj* wywoa. Oznacza to, e przy kolejnym wywoaniu procedury lub funk* poprzednia warto bdzie w niej pamitana. W przypadku typw tablicowego, rekordowego i obiektowego nie mo by w nich uyta zmienna typu plikowego. Pola musz by okrel0ne w takiej samej kolejnoci, wjakiej wystpuj w deklarowanyn typie. Je* rekord jest rekordem z wariantami, to moemy okreli wartoci tyl* dla pl dotyczcych jednego wariantu, niezalenie od wartoci pob okrelajcego wariant, ktre zawsze musi by inicjowane. Dla obiekt" niedozwolone jest inicjowanie wartoci dla metod wchodzcyeh w* sktad danego obiektu. Pnisze przykady pokazuj,jak mona deklarowa stae inicjowane rnych typw danych: typy proste const max:Iteger=100; min:Intege=0; enter:Char=#13; w:Real=o.25; 128 P. Michakiewicz, I. wituszak COP urzd:5tring=* Urzd 5karbowy*; nazwisko:5tring[20)=* Michakiewic, ' typ tablicowy const * cyfry:array[0..9j of Char=*0123456789* wektor:array[1..5) of Real=(1.2,2.3,1.7,3.8); tablica:array[0..2,0..2] of Integer=((1,2,3),(4,5,6),(7,g,9)); kostka:array[0..2,0..2,0..2j of Byte=(((1,2,3),(4,5,6),(7,8,9)), (l9,8,7),(6,5,4),(3,2,1)), ((1,2,3),(4,5,6),(7,g,9))]; ' typ rekordowy (analogcznie typ obiektowy) type opi S=record imi:string[15); nazwisko:string[30]; pracuje?:Boolean; wiek:Byte; end; const os Oba:opis=(imi:* Piotr*; nazwisko:'Michakiewicz* pracuje:True; wiek:87); * tab:array[1..2] of opis=((imi:* Piotr*; nazwisko:* Michakiewicz* pracuje:True; wiek:87), (imi:* Ireneusz*; azwisko:'5wituszak' pracuje:False; wiek:17)); ' typ rekordowy z waiantami type Zdolnosc=(plywa, nieplywa); Rodzaj=(dowolny,klasyczy,delfin,grzbietowy); Osoba=record Imie:5trig[10]; Wiek:Integer; case Plywanie:Zdolnosc of Programowanie w Turbo Pascal 7.0 iiiiy * **,. . plywa: (5ty1:Rodzaj; Dystans:Integer; Czas:Real); end; const Zawodnik:osoba=(imie:'Piotr'; wiek:123; plywanie:nieplywa; styl:delfin; dystans:25; czas:12); typ zbiorowy type cyfry=set of 0..9; const parzyste:cyfry=[0,2,4,6,8]; litery : set of 'a'. 'z'=['y','n'l; * typ wskanikowy *+ *,;, type lista="osoba; osoba=record imi:5tring[10); wiek:Integer; nastpny:Lista; end; const wskafnik : Pointer = nil; acuch : P Char = 'To jest acuch' osobal : osoba=(imi:'Piotr'; wiek:47; nastpny:nil/; osoba2 : osoba=(imi:'Irek'; wiek:123; nastpny: osobal); osoba3 : osoba=(imi:'Ewa'; wiek:23; nastpny:@osoba2l pocztek listy : lista = @osoba3; typ proceduralny type funkcja = function(s:string):integer; function ilo znakw(acuch:5tring):Integer; far; begin ilo_znakw := length(acuch); end; 130 . P. Michakiewicz, I. wituszak *r dugo : funkcja = ilo znakw; begin write( dugo('Piotr'/ ); end. Wyraenia Wyraenia skladj si argumentw i operatorw. Przy pomocy * torw moemy na argumentach wyraenia wykona okrelone op* w wyniku ktryeh otrzynamy warto pewnego typu. Kolejno w5 wania operacji aley od priorytetu operatorw. Najwyszy pri maj operatory not i *, nastpnie kolejno operatory multiplikat addytywne i operatory relacji, ktre przedstawia ponisza tabela. >=. i Jeeli dwa operatory maj ten sam priorytet, to operacje wykon5 s od lewej do prawej strony wyraenia. Kolejno wykonywanycl racji moe ulec zmianie po zastosowaniu nawiasw, ktre pow wyliczenie wyraenia, zacynajc od najbardziej aglbionych pod e ujtych w nawiasach, np. a+b*(x+y*(m-n)) gdie kolejno operacji jest nastpujca: 1) wynikl := m-n 2) wynik2 = y*wynikl 3) wynik3 := x+wynik2 4) wynik4 := b*wynik3 5) wynik5 := a+wynik4 Wynik pity jest wartoci caego wyraenia, za pozostae w Programowanie w Turbo Pascal 7.0 ll PFR A TlRV pokazuj kole*ne etapy wyuczGna vWy****** w.r Moemy wyrni nastpujee rodzaje operatorw: arytmetyczne, bi*. *r* we, logiczne, acuchowe, znakowo-wskanikowe, mnogocowe, rela*i * i wskazania. :'. P - PChar Q - PGhar ;*; : 4 ; 132 P. Michakiewicz, I. wituszak ZNACZENIE TYP ARGUMENTW suma biorw zbiorowe z odne zbiorowy "nica zbiorw zbiorwe zgodne zbiorowy ezg wsplna zbiorowe zgodne * zbiorowy RACJA TYP TYP WYNIKI ARGUMENTW *noci typy proste logiczny Programowanie w Turbo Pascal 7.0 OPERATORY ZNAKOWO-WSKANIKOWE *J* PERATO OPERACJA TYP TYP WYNIKU _ _ _ ARGUMENT6W Instrukcje s to elementy programu suce do opisania algory t dziaajce na wczeniej zadeklarowanyeh danych.Wjgzyku Turl <= mniejszy-rwny typy proste logiezny scal moemy wyrni nastgpujce rodzaje instrukcji: acuchowe PChar ** * - proate >= wikszy-rwny typy proste logiczny acuchowe PChar - atrukturalne <= jest podzbiorem zgodne zbiorowe logiczny >= jest nadzbiorem zgodne biorowe logicny *STRUKCE PftOSTE in zawarty w porzdkowy (jako logiczny = Instrukcje proate a to instrukcje,ktre nie zawieraj jako skado argument 1) innych instrukcji.Wrd instrukcji prostych moemy wyrni nas zborowy ()ako jce instrukc7e: argzment 2) o tym - przypiaania sam t ie 5'm yP odstawowym - procedury - skoku - pusta OPERATOR WSKAZANIA *: e ; * Instruhcja przypisania Operator wskazania * uywany jest do okrelenia adresu miennej, Inatrukcja przypisania ma nas u* c skadn* * rocedur funkc*i 1b m *P J g. p y, * u etody.Powodu*e on utworzene wartoci wakanikowej wskaujcej na dany argument. Nazwa zmiennej : = wyraenie ; ''' lub ; ZMIANA TYPU WYRAENIA Nazwa funkcji := r*yraenie Wyraenia typu porzdkowego i wakanikowego moemy zamienia n wyraenia innego typu porzdkowego lub wakanikowego.Do tego celu f Inatrukcja przypisania powoduje przypisanie wartoci wyraenia i III suy konstrukcja: zmiennej lub funkcji.Wyraenie muai mie typ zgodny w sensie prz sania z typem zmiennej lub typem wartoci zwracanym przez funkc identyfikator typu (v*yraenie) 1 I ,' gdzie identyfikator typu okrela nowy typ dla wyraenia.Jeeli k'*b wartoci dla od owiednich ty w s *ne to nas i obci cie lub t*' * Prykady: , *P g szerenie danej wartoci wyraenia. X := 1000 minimum := 25; maksimum := 10* minimum c := sqr(sin(alfa)) + sqr(cos(alfa)); 134 P.Michakiewicz,I.wituszak * .Programowanie w Turbo Pascal 7.0 7 oPE*cJa <= * mniejszy-rwny >= * wikszy-rwny <= *est poazborem >= jest nadzbiorem in awarty w ARGUMENTW typy proste aeuchowe Pchar typy proste acuchowe Pchar zgodne zbiorowe zgodne zbiorowe porzdkowy (jako argument 1) i zbiorowy (jako argument 2) o tym samym typie podstawowvn TYP WYNIKU logiezny logiczny logcny OPERATOR WSKAZANIA Operator wskazania * uywany jeat do okrelenia adresu procedury, funkcji lub metody. Powoduje on utworenie wskanikowej wskazujcej na dany argument. ZMIANA TYPU WYRAENIA Wyraenia typu porzdkowego i wskanikowego ioemy amienia wyraenia innego typu porzdkowego lub wskanikowego. Do tego c suy konstrukcja: identyfikator typu (wyraenie) gdzie identyfikator typu okrela nowy typ dla wyraenia. Jeeli zakrt wartoci dla odpowiednich typw s *ne, to nastpi obcicie lub n szerzenie danej wartoci wyraenia. 134 P. Michakiewicz, I. wituszak *. wr. vv** Instrukcje s to elementy programu suce do opisania algoryt diaajee na wczeniej zadeklarowanych danych. W jzyku Turb* scal moemy wyrni nastpujce rodzaje instrukcji: - proste - strukturalne - INSTRUKC*TE PROSTE *; Instrukcje proste s to instrukcje, ktre nie zawieraj jako skado* innych instrukcji. Wrd instrukcji prostych moemy wyrni nast jce instrukcje: - przypisania - procedury - skoku **, : - pusta Instruhcja przypisnia Instrukcja przypisania ma nastpujc skadni: Nazrr*a zmiennej := wyraenie ; lub Nazwa funkcji := wyraenie ; Instrukcja przypisania powoduje przypisanie wartoci wyraenia zmiennej lub funkeji. Wyraenie musi mie typ zgodny w sensie prz; sania z typem miennej lub typem wartoci wracanym przez funkc Przykady: x := ooo; minimum := 25 ; maksimum := 10 * minimum c := sqr(sin(alfa)) + sqr(cos(alfa)); Programowanie w Turbo Pascal 7.0 UWyLtjLC 111Pu1 uuJ* 5E rvj.*.*. o wystpi take nastpujee instrukeje: licznik := licznik + 1 ; y := y - 23 ; wynik := y > licznik ; Zapis ten oznaca, e do zmiennej licznik zostanie podstawiona je* poprzednia warto zwikszona o 1, za do zmiennej * jej poprzednia o e i warto zmniejszona o 23. Ostatnia instrukeja sprawdza warto 1 gi z, n wyraenia y > lieznik i do zmiennej wynik przypisuje warto true (relaeja prawdziwa) lub false (relacja faszywa). Przypisywanie wartoci wyxaenia nazwie funkeji opisanejeat w rozdzia. le "Procedury i funkeje". Instruheja procedury Instrukeja procedury powoduje wykonanie czci programu umieszezo nej w deklaracji procedury i ma nastpujc skadni: Nazwa Procedury [( parametery aktualne)); gdzie Nazwa Procedury okrel identyfikator procedury, za parametry aktualne, ktre s opejonalne, okrelaj liat parametrw przekazywanych do procedury w chwili jej wywoania. Procedury opiaane a A rozdziale "Procedury i funkcje". Jeeli wczonajest dyrektywa $X, to funkeje mog by traktowane ta* jak procedury. Przykady: Dodaj(a,b/; Drukuj Tabel; Instrukeja shoku Instrukeja skoku powoduje zmian kolejnoei wykonywania in Skadnia instrukcji skoku jest nastpujca: goto Nazwa Etykiety ; gdzie Nazwa Etykiety okrela identyfikator etykiety zadeklar tyn samym bloku, w ktrym uyto instrukeji skku. Po instrukeji skoku nastpnie wykonywan inatrukej jest i umieszezona po nazwie etykiety uytej w instrukeji skoku. 136 P. Michalkiewicz, I. wituszak label Koniec; begin geto Koniec ; write('Ten napis nie zostanie wywietlony'); Koniec: write('Koniec programu'); end. ", W wyniku wykona*ia programu zostanie wywietlony tylko napis niec programu", c0 jest wynikiem dziaania instrukeji skoku, 1 przekazaa sterowanie do instrukcji wystpujcej po etykiecie Kon Instruheja. pusta Instrukeja pusta nie powoduje wykonania adnych czynnoci. Ma jednak zastosowanie w przypadku, gdy algorytm czgci programu bt opraeowany w nastpnym kroku, np.: procedure Drukuj Tabel; begin end; gdzie po sowie begin nie wystpuje adna instrukeja, co dla kompila jest rwnoznaczne z uyeiem instrukeji pustej. Przykady: for i := 1 to 1000 do ; { instrukcja pusta } case cyfra of 1: write('1'); 2: ; { instrukcja pusta } 3: write('2') end; INSTRUKC*TE STRUKTURALNE Instrukeje atrukturalne skadaj ai z jednej lub wikszej liczby ins kcji i powoduj, zalenie od rodzaju tej instrukeji, odpowiednie wykonanie. Moemy wyrni nastpujee rodzaje instrukeji struktu nych: - zoona - warunkowa Programowanie w Turbo Pascal T.0 - wiѾca - kodu - aaemblerowa Istrukcja z*oon Inatrukcja zoona powoduje utworzenie z cigu instrukcji jednej instru. kcji prez ujcie inatrukcji akadowych midzy sowami begin i end. Skadnia inatrukcji zoonej jeat nastpujca: begin instrukcja 1; instrukcja 2; instrukcja n end; Po oatatniej inatrukeji akadowej moemy pominѹ rednik. Przyhady: begin writeln('Linia 1'); writeln; writeln('Linia 3') end; begin x:=10; y:=sqr(x); write(x,'',y) end; Instrukcja warunkowa Inatrukcja warunkowa powoduje wykonanie czci kodu programu w zalenoci od wartoci warunku. Moemy wyrni dwie instru*<7e warunkowe w jzyku Turbo Paacal: - if - caae 138 P. Michakiewlcz, I. wituszak lsrurzc* tr Inatrukcja ta ma naatpujc akadni: if warunek then instrukcja 1 ; * lub if warunek then instrukcja*l :;r* else * instrukcja 2; : ~t Jeeli warunekjeat prawdziwy (true), to zostanie wykonana z; * * pierwazym, jak i w drugim przypadku inatrukcja*l; za gdy jest faazywy (falae), to w pierwazym przypadku nastpi pr* *, pierwazej inatrukcji po instrukcji if, za w drugim przypadku wykonana inatrukcja 2. Po wykonaniu pierwszej lub drugiej inatrukcji nastpn rea instrukcjjeat pierwaza inatrukcja wyatpujca po instrukcji if inatrukcja*l, jak i inatrukcja 2 mog by inatrukcjami zoony Przykady: if a > 100 then write('a > 100'); if Nastpny='Irek' then begin imi : 'Ireneusz'; nazwisko : '5wituszak' wiek := 123 end else write('To nie jest Irek'j; *; Instrukcje if mog by zagniedane, tzn. e po aowie then wyatpuje nastpna inatrukeja if, przykadowo: if a > 0 then if b> 0 then write('a i b s wiksze od zera') else write('b nie jest wiksze od zera') else write('a nie jest wiksze od zera'); Programowanie w Turbo Pascal 7.0 if a > 0 then if b > 0 then instrukcja 1 else instrukcja 2; jest odpowiednikiem nastgpujcego apisu: if (a > 0) and (b > 0) then instrukcja_1 else instrukcja 2; Instrukcja case Instrukcja ta ma nastpuje skadni: case wyraenie of lista wyboru*l : instrukcja ; lista wyboru 2 : instrukcja ; . lista wyboru n : instrukcja end; lub case selektor of lista wyboru*l : instrukcja ; lista wyboru 2 : instrukcja ; lista wyboru n : instrukcja else instrukcja end; W wyniku wykonania instrukcji case zostaje wylicona warto selekta ra, ktra jest nastpnie porwnywana z wartociami umieazczonyxi w listach wyboru. Jeeli ktra z list wyboru ma warto rwn selektorn wi, to zostanie wykonana inatrukcja najdujca si bezporednio za dan* list wyboru. Jeeli warto selektora nie wystpuje w adnej licie wyboru, to wyko nana zostanie instrukcja pusta lub w przypadku wystpienia sowa else, instrukcja znajdujca si za tym sowem. Warto selektora musi by typu porzdkowego, a wartoci znajduj** si w listach wyboru musz by zgodne z typem selektora i nie mo powtarza si w innych liatach wyboru. Wartoci staych w lista<* wyboru oddziela si precinkami. 140 P. Michakiewicz, I. wituszak rrzyktacty: case pe of mtczyzna : write(' urodzony '); kobieta : write(' urodzona ') end; case klawisz of 'y','Y' : begin x:=100; y:=150 end; 'n','N' : begin x:=o; y:=0 end else wite('*lcinito nie ten klawisz') end; * Instrukcja case porwnuje warto zmiennej klawisz z wartociami ;* wyboru. Jeeli warto ta odpowiada nakom y,Y pierwszej li wyboru, to zmiennej x zostanie przypisana warto 100, za zmienn* warto 150. W przypadku gdy warto ta odpowiada znakom n,1 drugiej listy wyboru, to miennym x i y ostanie przypisana wartoi W przeciwnym przypad.ku zostanie wypisany komunikat 'Wcinito : ten klawisz'. *i Instrukcja iteracyjna Instrukcje iteracyjne su do wielokrotnego wykonania pewnej g< okrelonej grupy instrukcji. Moemy wrd nich wyrni jedn inst* krj o znanej liczbie iteracji oraz dwie instrukcje o nieznanej liczl iteracji. Te dwie ostatnie inatrukcje s wykonywane, dopkijest spen ny warunek lub do jego osignicia. ( y Instruhcja for ,* Instrukeja ta wykonuje okrelon liczbg iteraeji. Ma ona nastpuj* skadni : for licznik := wyr pocztkowe to wyr kocowe do instrukcja; lub for licznik := wyr pocztkowe downto wyr kocowe do instrukcja; : Programowanie w Turbo Pascal 7.0 1* O" K "" '*IK"K "" ' J "' " J'1 """ **J' rv*L**, kowe i wyr kocowe mwi, ile ray bdzie wykonana iteracja. Zmienna sterujca jest typu porzdkowego, a wyr*pocztkowe i wyr kocowe g, typu godnego z ni w sensie przypiaania. Liczba iteracji jeat rwna: liczba iteracji = abs(wyr kocowe - wyr pocztkowe)+1 **= dla obydwu skadni. Wykonanie instukcji for ropoezyna ai od obliczenia wyrae wyr-pM ctkowe i wyr kocowe. Nastpnie, jeeli wyatpuje sowo "to", to do zmiennej aterujcej przypisywane a kolejno wartoei, zaczynajc od wyr*poctkowe i koczc na wyr kocowe, w przypadku liczb cakov*. tych z przyrostem rwnym 1, wykonujc za kadym prypiaaniem inat*. kcj umieszczon w instrukcji for. W przypadku wystpienia sowa "downto" przyrost dla licb cakowitych wynosi -1. W przypadku gdy wyr"pocztkowe > wyrkocowe pry sowie "to" lub wyr*pocztkowe < wyr*kocowe przy sowie "downto", to iteracja nia zoatanie wyknana. Gdy wyr*pocztkowe = wyr*kocowe, iteracja zoa*. nie wykonanajednokrotnie. Przykady: for 1 := 1 to 100 do x:=x+1; Zakadajc, e warto zmiennej x pred wykonaniem instrukcji fo wynosia zero, to po akoczeniu ptli zawiera bdie aum liczb od 1 do 100. for k := 100 do*vnto 20 do begin writeln('linia nr:',k); Wynikiem tego przykadu bdzie wypisanie w kolejnych liniach * ekranie tekstu 'linia nr:' z numerern linii aczynajcym si od 100 koczcym na wartoci 20. for litera : *a' to,z' do writeln(litera); W kolejnych liniach na ekranie wypisze litery, zaczynajc od litery i kocze na literze 'z'. 142 P. Michakiewicz, I. wituszak for j := 1 to 4 do Tab[i,j] := 0; Wyzerowanie awartoci tablicy dwuwymiarowej Tab. Instrukcj repeat Instrukcja repeat ma nastpujc akadni: repeat instrukcja; instrukcja; until rryratenie ; Instrukcja ta suy do powtarzania instrukcji zawartych midzy so repeat until, a do apenienia warunku okrelonego prez wyra: Wartoci wyraenia muai by warto logiczna. Przykady: repeat until Keypressed; Instrukcja powtarza instrukcjg puat a do nacinicia *lawisza: repeat znak:=Read Key; until (znak in [,1'..'5']) or (znak = 'K' Instrukcja powtarza odczyt klawisa do nacinicia duej litery jednej cyfr od 1 do 5. Instrukcj while Instrukcja while ma nastpujc skadni: while wyraenie do instrukcja; Inatrkcja ta suy do powtarzania instrukcji wystpujcej po s* "do",jeelijeat apeniony warunek okrelony prez wyraenie. Warto wyraenia muai by warto logiczna, za instrukcja moe by zar instrukcj prost, jak i zoon. Programowanie w Turbo Pascal 7.0 while i < 100 do writeln('Cze Micha'); Dopki warto i jest mniejsza od 100, to bgdzie wypisywany napis 'C Zes* Micha'. while not eof (plik) do begin read(lik,znak); zaki:=znaki+znak; end; zudx i uu*czuny uu puprzeuno oaczyanycn znaxow. Instrukeja wica Instrukeja wiѾca ma naatpuje skadnig: with nazwa [,azwa. .] do instrukeja; ' Inatrukeja ta pozwala na odwoanie si do pl rekordu lub obiektu 15e koniecznoci stosowania kwantyfikatura. Przykad: I i 1'* ii type Dane=record imi, nazwisko:5tring[15]; wiek:Integer; end; u osoba:Dane; Odwoanie do pl zmiennej osoba bez instrukeji wiѾcej: . osoba.imi : 'Magorzata'; osoba. nazwisko : ' l*lieczorek ' osoba.wiek := 19; oraz z wykorzyataniem instrukeji wiѾcej: with osoba do begin imi : 'Magorzata'; 144 P. Michakiewicz, I. wituszak ii*winv : wiek := 19 end; Istrukeja kodu Instrukcja kodu pozwala nam na doczenie kodu maszynowego 1 rednio do programu. Skladnia instrukeji kodu jest nastpujca: inline ( lista elementw ); *; gdzie lia* elementw okrela elementy kodu oddzielone od siebie e n kreak /. Jako element listy mog wystpi: '' - stae okrelajce wartoci liczbowe - identyfikatory miennych - identyfikatory zmiennych ze sta poprzedzon znakiem + lub- operatory rozmiaru kodu < i > Przykad: inline(10/$2345/Licznik + 2/Dane - Skok); * gdzie pierwsze dwa elementy okrelone s za pomoc staych,za stae dwa za pomoc zmiennych,uwzgldniajc przesunicie wzgl* *, liczb 2,za w drugim przez sta Skok. *, Wszystkie elementy powoduj utworzenie jednego bajtu lub jed sowa kodu.Jeeli warto elementujest z zakresu 0..255,to genero, jest kod programu jako 1 bajt, za dla pozostayeh wartoci genero* G jest kod okrelony przez 1aowo.Jeeli chcemy zmieni to standan ustawienie,moemy uy operatorw rozmiaru generowanego * * Operator < powoduje,ejako kod wykorzystywanyjest najmodszy J , *f * okrelone wartoci za operator > powoduje,e niezalenie od wart * * kod ma zawsze rozmiar sowa. ;" Przykad: inline($9876/<$9876/$38/>$38); i Programowanie w Turbo Pascal 7.0 $76, $98, $76, $38, $38, $00 Jeeli jako element wystpi identyfikator zmiennej, to okrela on warto przemieszezenia tej zmiennej wgldem adresu podstawowegu, w przypadku zmiennej globalne* adresem podstawowym jest adres seg. mentu danych, okrelany za pomoc rejeatru DS, za dla zmienne lokalnej adres aegmentu atosu, do ktrego odwoujemy si biorc pod uwag presunieie wzgldem rejestru BP. Instruheja asemblerowa Inatrukeja asemblerowa wykorzyatywana jest do umieszeenia instru. keji jyka asembler w programie. W porwnaniu instrukej kodu nie musimy zna kodw maszynowych odpowiadajcych poszczeglnym in. strukejom asemblera. Korzystajc z tej inatrukeji naley pamita, e nie * wolno zmienia awartoci rejeatrw BP, SS, SP i DS. Skladnia instrukeji asemblerowej jeat nastpujca: asm instrukeja instrukcja end gdie instrukeja okrela inatrukejjzyka aaembler. Instrukeje te muaz by oddzielone rednikiem, komentarzem jzyka Turbo Pascal lub zna kem nowej lin. Instrukejajzyka asembler ma naatpujc akladni: [ etykieta: ] [ kod operaeji [ operand <, operand>) ] Etykieta Etykieta jeat to identyfikator zakoezony dwukropkiem, ktrym : popredzi kad inatrukejg jgyka asembler i za pomoc ktrego my mieni kolejno wykonywania inatrukeji. Skok do takiej et moemy wykona za pomoc instrukeji goto lub inatrukeji skoku * asembler. Etyhiety deklarowane s w bloku zawierajcym inst asm za pomoc slowa klucowego label. label DODAJ; beqin asm DODAJ: ADD AX,HX end; end. Wyatpuje tu etykieta DODA,T, do ktrej moemy wykona skok pomoc instrukeji JMP DODA.1. Moemy take wyrni tw. etykiety lokalne, ktre wystpuj wewnl inatrukcji a*m i a dostpne tylko w jej akresie. Nie mona wi wykona akoku do tej etykiety za pomoc inatrukeji goto. Etykie lokalne nie wymagaj deklarowania, ale przed ich identyfikatorami mu by umieazezony znak *, Przyklad: beqin asm @START: MOV AX,(ES:BX] end; asm @START: ADD AX,g X end; end Pomimo e w tym bloku wyatpuj dwie etykiety o takim samym identyfikatorze, to nie maj one e aob nic wsplnego, gdy ieh zasi* ograniczonyjeat tylko do wasnych instrukeji aam. Przedrosth Przedroatki a umieazeane pred kodem operacji, ajeeli on nie wystgpuje w danej linii, to dotycz one inatrukeji znajdujcej si w linii naatpnej. Ich zadaiem jeat zmiana apoaobu diaania inatrukeji 746 P. Michakiewicz, I- wituszak Programowanie w Turbo Pascal 7.0 "'J -'*J u * oddzielamy odstpem. Moemy wyrni nastpujce przedroatki: LOCK - zablokowanie dostpu do azyny. REP - powtarzanie operacji acuchowej. REPE - powtarzanie operacji acuchowej, dopki jest spe. I ;~*" niony warunek rwnoci. REPZ - powtarzanie operacji acuchowej, dpki jest spe.; * " 'I niony warunek rwny zero. REPNE - powtarzanie operacji acuchowej, dopki nie je*t apeniony warunek rwnoci. REPNZ - powtarzanie operacji aCuchowej,doki nie jest apeniony warunek rwny zero. SEGCS - wymuazenie wyboru rejeatru CS. SEGDS - wymuszenie wyboru rejestru DS. SEGES - wymuazenie wyboru rejestru ES. SEGSS - wynuszenie wyboru rejeatru SS. Kody operacji Kody operacji okrelaj dyrektywy i inatrukeje asemblera. 1. Instrukeje Moemy korzysta z inatrukeji procesorw 8086 i 80826 oraz z instruk* koprocesorw arytmetycznych 8087 i 80287. Naley jednak pamita* ograniCzeniach. Z instrukeji proceaora 80286 moemy korzysta po w* czeniu dyrektywy {$G+), z inatrukeji koproCeaora arytmetycznego 8 po wczeniu dyrektywy {$N+}, za z instrukeji koprocesora arytmety nego 80287 po wczeniu obu powyszych dyrektyw. 2. Dyrektywy Dyrektywy su do zarezerwowania odpowiedniej liczby pami* zmiennyCh, ktrych nazwy wymienione a po dyrektywie. Moemy u ci kilka-zmiennych po dyrektywie, ale muaimy oddzieli je przeci mi. Pami dla tych zmiennych rezerowowana jest w segmencie k CS. 148 P. Michakiewicz, I. wituszak %T\T A l**71*hTT L* uyrektywa rezerwuje dla umieszCzonych po ni Dyrektywa reerwuje dla umieszezonych pu nr zmiennvh nn lPl*hVn1 a*nmiu Dyrektywa rezerwuje dla umieszezonych po ni* zmiennych pojednym podwjnym aowie Operndy Operandy s to wyraenia zawierajce kmbinacj staych, nazv lajcych dstpne rejestry, symboli i operatorw. Okrelajc o* naley pamita, e niektre aowa a zaatrzeone i nale do ni* - nazwy rejeatrw AH BP rX DX sT AL BX DH ES AX CH DI SI BH CL DL sP BL CS DS 55 - nazwy operatorw (tabela na naatpnej stronie). Sowa zastrzeone maj wyazy porytet ni identyfikatory zade wane prez programist. Przykad: var BH : Byte; begin BH:=10; asm MOV BH, 3 END; writeln(BH); end Programowanie w Turbo Pascal 7.0 ***vw** *uv*G*uy nu*zyaae z astpt*CyCh dy: AND okrela iloczyn logiczny wartnci bezporednich na oszeze lnych bitach HIGH jeeli wyraenie jest sowem, to wraca bardiej LOW *jeeli wyraenie jest aowem, to wraca mniej naczcy * MOD zwraca reszt z dzielenia dwch wartoci bez orednich NOT okrela negacj wartoci bezporedniej na oseze lnych jej bitach OFFSET zwraea adres wyraenia wzgldem segmentu w ktrym ono wyatpuje OR okrela aum logiczn wartoci beporednich na poazezeglnych bitach PTR okrela adres pamici dla wyraenia umieszconego po operatorze o typie okrelonym przed operatorem SEG zwraca adres segmentu,w ktrym znajduje ai WV1'A*PllP SHL powoduje przesunicie logiczne w lewo wartoci bezporedniej, umieseonej przed operatorem, o liczb bitw okrelon przez warto bezporedni, SHR powoduje przesunieie logiezne w prawo wartoci bezporedniej, umieazczonej pred operatorem o liczb bitw okrelon przez warto bezporedni, c.d. na nastpnej stronie Pziewa identyfikator BH jest sowem zastrzeonym w instr asemblerowej asm, to ma on wyszy priorytet od identyfikatora zmif BH typu Byte. Powoduje to, e warto 3 zostanie przypiaana do reji BH a nie do zmiennej BH. Na ekranie zostanie wywietlona liczba Jeeli ehcemy odwoa si do zmiennej, ktra poaiada taki sam ide kator, jakjedno ze sw aatreonych, to musimy przed identyfka* miennej uy znaku &. 150 P. Michakiewicz, I. wituszak P*'zykad: ur*r*r*r*H odwoanie da: NEAR, OFFFEH odwoanie bli okrela sum modulo 2 dwch wartoci bezporedn aruiilr",*1, 1,:*....u var BH : Byte; begin BH:=10; asm MOV & BH, 3 END; writeln(BH); end. Poniewa przed identyfikatorem BH umiecilimy nak &, to wartc zoatanie przypiaana do zmiennej BH, a nie do rejestru BH. Na ekr; zoatanie wywietlona liczba 3. Po operatorami wymienionymi w , doatpne s operatory wymienione w tabeli na nastpnej stronie. Podobniejak operatory wjzyku Turbo Pascal, take powysze opera* poaiadaj okrelone priorytety. Poniej predatawione s operat poczynajc od operatorw o najwyszym priorytecie: I1 , tl, . Programowanie w Turbo Pascal 7.0 - stae - nazwy rejestrw - symbole r? Moemy uywa staych numerycznych i acuchowych. Stae nuz czne mog by z zakresu od -2147483648 do 4294967295. Moemy tym stosowa oprcz standardowej notacji diesitnej take no1 zapisu liczb w postaci dwjkowej, semkowej i azesnastkowej. : stosowaniu tych notacji po liczbie naley umieci liter odpowiedni O lub H. Zamiast litery H moemy uywa znaku $, umiesezonego p liczb. W przypadku notacji szesnastkowej z uyciem litery H na *' dodatkowo przed liczb umieci zero, jeeli jej pierwsza cyfra ukrelona pomoc litery. Prykad:, $AOOF OAOOFH 1200170 l0l0000000001111B 40975 Wszystkie powysze lieby okrelaj t sam warto, ale w rn notacjaeh. Stae acuchowe musz by umieszezone w cudzysowach lub w apos * fach. Jeeli wewntrz acucha chcemy umieci cudzysw lub aposl to do zaznacenia staej acuchowej uywamy drugiego znaku apisujemy go podwjnie. rr ** Prykad: HIGH, LOl*l +, - OFFSET, SEG, TYPE ; PTR, *, /, MOD, SHL SHR +, - NOT, AND, OR, XOR 152 P. Michakiewicz, I. wituszak ' Pawe Ku ' ' Nazwisko : "Pawe Ku " ' To jest apostrof ' ' To take jest apostrof " ' ** W wyraeniach moemy uywa nastpujcych synboli jyka Tu fj* Pascal: etykiet, staych, zmiennych, typw, procedur i funkeji p , symbolami: * 1) ident*katorw standardowych procedur i funkeji; Programowanie w Turbo Pascal 7.0 1 154 3) staych acuchowych, zbiorowych i zmiennoprzecinkowych; 4) procedur i funkcji z dyrektyw inline; 5) etykiet, ktre nie s adeklarowane w biecym bloku. Oprc tych aymboli moemy uywa nastpujcych symboli asemblera *Code - reprezentuje biecy segment kodu. *Data - repreentuje biecy segment danych. *7Result - reprezentuje zmienn okrelajc warto funkcji. Synbole *Code i *Data musz wystpi cznie z operatorem SEG. Procedury i Funkcje W bloku gwnym moemy wyodrbni czci kodu, ktre tworz logi*. n cao i ktre mog by wielokrotnie uyte w czasie pisania program*, W tym celu uywa si procedur i funkcji. Deklaracja procedury i funkcji, podobniejak program, skada si nagwka i bloku, ale akoczonaje* rednikiem. PROCEDURY Skadnia proeedury jest nastpujca: procedure Nazwa Procedury ( Parametry ); dyrektywa; blok; gdzie Nazwa Procedury jest identyfikatorem, za Parametry oznaczt list parametrw formalnych, w ktrej poszczeglne skadniki oddzi* ne s od siebie precinkami. Dokadny opis parametrw znajduje si punkcie "Parametry '. Lista parametrw formalnych, dyrektywa oraz blok moe wystpi o* nalnie. Mog wystpi nastpujce dyrektywy: near, far, interru; wystpujee razem blokiem procedury oraz dyrektywy: forward, exG nal, assembler i inline bez bloku procedury. Kada procedura j* uaktywniana za pomoc instrukcji procedury, ktr stanowi identy* tor procedury oraz, jeeli wystpuje, lista parametrw aktualnych. J* wywoana procedura zawiera w swoim bloku wywoanie samej siebie, tego typu procedura naywana jest procedur rekurencyjn. P. Michakiewicz, I. wituszak Wjzyku Turbo Pascal wszelkie odwoania do procedur mog b c dalekiego (far) lub bliskiego (near). Typ odwoania jeat automa okrelany przez kompilator w oparciu o deklaracj procedury. Procedury adeklarowane w c穌ci interfaee moduu s traktowa procedury z odwoaniem dalekim, za zadeklarowane w czci mentation moduu lub w programie jako procedury z odwoani skim. Dla odwoa bliskich procedura ma efektywny kod pod wz; rozmiaru oraz szybkoci wykonania, ale moe by wywoywana wntrza moduu, w ktrym zostaa zadeklarowana. Jeeli wyt odwoanie dalekie, to procedura moe by wywoywana take moduw, alejej kodjest mniej efektywny. Programista moe sam okreli typ odwoania do procedury przez dyrektywy kompilatora $F lub bezporednio pomoc dyrekty* lub far, umieszczonych przed blokiem procedury. Przykad procedury z odwoaniem dalekim: procedure Pisz XY (x,y : iteger; tekst : strig); far begin if (x in [1..80]) and (y i [1..25]) then begin Go To XY(x,y); Write(tekst); end; end; yrehtywa Interrupt Dyrektywa interrupt powl pisanie procedur obsugi przez Kada taka procedura musi posiada nastpujc skadni: procedure Nazwa Procedury (Flags, C5, IP, AX, BX, 5 I, DI, DS, ES, BP : hiord ) ; interrupt; blok; Podana wyej lista parametrw nie musi wystpowa w takiej poe Moe by krtsza i uywa innych naw, ale zawarto rejestrw * przesyana w takiej kolejnoci, jak w powyszej deklaracji. Programowanie w Turbo Pascal 7.0 uyreRywa * orwaru Zdarzaj si przypadki podczas programowania, e procedury s wza. jemnie zalene, to znaczy, e w bloku jednej procedury wywoujemy inn* procedur, ktra wewntrz swojego bloku wywouje procedur, ktra wywouje, np. : procedure Procl(a: integer; b: string); begin ?roc2(2.9); end; procedure Proc2(z: Real); begin Procl(10,'Piotr'); end; Gdy podczas kompilacji procedury Procl kompilator nie ma dostpu do wszystkich deklaracji uywanych w pocedurze Procl, to wywietli bd Aby temu zapobiec, stosuje si tak zwane deklaracje wyprzedzajce zastosowaniem dyrektywy forward, ktra mwi kompilatorowi, e dehla racja definicji procedury wyatpi w dalszej czci programu. Powyszy przykad z poprawn deklaraej proeedur: procedure proc2(z: Real); fox'ward; procedure Procl(a: integer; b: string); begin Proc2(2.9); end; procedure Proc2; begin Procl(10,'Piotr'); end; Jak wida na powyszym przykadzie, caa deklaracja procedu* dyrektyw forward skada si z deklaracji wyprzedzajcej i dekl* 156 P. Michakiewicz, l. wituszak aennc* proceaury. w ae*larac* detinicji moemy pominѹ list * metrw formalnych. Obie czci deklaracji procedury musz wyst* tej samej czci deklaracyjnej. Pomidzy nimi mog znajdowa si di racje innych procedur lub funkcji odwoujcyeh si do dekiaracji wy) dzajcej. Deklaracja definicji moe by deklaracj external lub assembler, al* moe mie deklaraeji far, near, interrupt, inline lub innej dekla wyprzedzjcej. Dyre*tywa Externl Poeiadajc zbir gotowych, akompilowanych procedur, napisanyc jzyku assembler, moemy doczy je do naszego programu za pon dyrektywy kompilatora {$L PLIK.OBJ}, gdzie PLIK.OBJ jest na ::: pliku zawierajc doczane procedury. Doczone procedury mo " wykorzysta po ich wczeniejszym zadeklarowaniu za pomoc nag procedury z dyrektyw external. Przykad deklaracji: procedure Rysuj P Cx( nazwa : 5tring ); external; Dyrehtywa Assembler Mimo e kompilatorjzyka Turbo Pascal daje efektywny kod, to niek problemy moemy efektywniej rozwiza za pomoc jzyka assem* W tym celu za pomoc dyrektywy assembler moemy umieszcza . procedurach instrukcje assemblera poprzedzone sowem asm, ktre wymagaj w tym przypadku uycia bloku ograniczonego sowami bt i end. Przykad: procedure suma(var a,b:integer); assembler; asm les bx,b mov ax, es:[bx] :;, les ix, a add ax,es:[bx] mov es:[bx),ax end; *rocedura suma wykonuje naatpujce dziaanie: a:=a+b Programowanie w Turbo Pascal 7.0 asm mov ah,30h int 21h end; Dyrehtyw Inlne Dyrektywa ta pozwala na wstawienie bezporednio do programu instr*. keji kodu maazynowego zamiaat bloku instrukeji. Poszezeglne kody oddiela si znakiem /. Przykady: FUNKC*lE procedure Zablokuj Przerwania; inline($FA); procedure Odbloku j Przervrania ; inline($FB); Skadnia funkeji jest nastpujca: function Nazwa_Funkcji ( Parametry ): Typ Rezultatu; dyrektywa; blok; gdzie Nazwa Funkeji jest identyfikatorem, za Parametry onacz* liat parametrw fornalnych, w ktrej poszezeglne skadniki oddziela ne s od siebie przecinkami. Dokadny opia parametrw znajduje si * punkcie "Parametry". Kada funkeja w wynikujej wykonania zwraca wynik za pomoe instrW keji przypiaania o naatpujcej skadni: Nazwa Funkcji := zwracany wynik; ktrego typ okrelamy w nagwku funkeji jako Typ Rezultatu. Lisa parametrw formalnych oraz dyrektywa moe wystpi opejonalm& Mog wystpi nastpujce dyrektywy: near, far, wyatpujce razemf blokiem funkeji oraz dyrektywy: forward, external, asaembler i inlina bez bloku funkeji. Kada funkejajest uaktywniana podczas oblicania wyraenia, w ktN* zoataa umieszezona, przez umieseenie w nim identyfikatora fun* .. ..J",.yY JY, **"**J Yu i**' uuuniuyl;11. ucZGl1 WyWOt funkeja zawiera w swoim bloku wywoanie samej siebie, to tego t funkeja naywanajest funkej rekurencyjn. Wazyatkie dyrektywy umiesezone w opiaie proeedury, oprcz dyrekt; interrupt, s moliwe do uycia. Przykad funkeji: function Silnia ( n: Integer): Longint; var i:Integer; wynik:Longint; begin wynik:=1; for i:=1 to n do rrrynik : =wynik*i ; 5ilnia:=wynik; end; funetion Silnia ( n: Integer): Longint; var i:Integer; begin if n=0 then silnia:=1 else silnia:=silnia(n-1)*n; end; J Pierwsza funkeja licy silni metod iteracyjn, za druga w oparci* * rekurenej. Obie funkeje nie kontroluj zakresu parametru wejciowt n, co powoduje przekroczenie zakreau typu Longint i zwrot bd: wartoci. PARAMETRY W nagwkach procedur i funkeji mog wystpi parametry. Moei wyrni parametry: - formalne - aktualne 158 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 procedure Mnt ( A, B: Macierz ; var C: Macierz ); zawiera try parametry formalne A, B i C typu Macierz. Parametry formalne s lokalne w deklarowanej procedurze lub funkeji i nie s dostpne w bloku nadrzdnym do danej procedury lub funkeji. Parametry aktualne s to parametry, ktre zostan przypisane do parametrw forrxalnych w czasie wywoania prcedury lub funkeji, Jeeli w programie mamy zadeklarowaze zmienne TablicaA, TablieaB oraz TablicaC typu Macierz, to podezas wywolania: Mn ( Tablica A, Tablica B, Tablica C ); zmienne te stanowi wanie parametry aktualne wywoania, za we. wntrz procedury widziane sjako zmienne A, B i C. Licba i typ parametrw aktualnyeh musi odpowiada liczbie i typo* parametrw fornalnych. Skojarzenie parametrw aktualnyeh i fornalnych wykonuje ai wedug kolejnoci ieh wystpowania, tzn. e pierwszy prametr aktualny kojarzonyjest pierwszym parametrem forxualnym, drugi z drugim itd. Prekazywanie parametrw aktualnych moe odbywa si na cztery aposoby: 1) przez warto Parametry prekazywane s przez warto, jeeli przed ich identyfikatorem nie jest umiesczone sowo kluczowe var lub const. Odpowiednie parametry aktualne musz by wyraeniami. Naley pamita, e war to wyraenia musi by zgodna w sensie prypiaania z typem odpowiadajcego mu parametru fornalnego, ale nie moe by typu plikowego ani atrukturalnego, ktrego akadowym typem jest typ plikowy. Parametry formalne przyjmuj wartoci pocztkowe rwne wartociom obliczonym z odpowiadajcych im parametrw aktualnych. Wszelkie operacje na parametrach fornalnych nie powoduj zmiany wartoci parametrw aktualnych. Przykad: uar Liczba:integer; procedure Dodajl0(x:integer); begin *O P. Michakiewicz, I. wituszak write(x); end; beqin Liczba:=l; Dodajl0(Liczba); writel(Liczba); end. Po wykonaru tego przykadu zoatan wypia*e na ekranie lic i 1. Zmienna Licba jest prekazywana jako parametr aktual: procedury Dodajl0, ale wewntrz procedury zwikszanyjest par; formalny x, ktry wystpuje jako kopia zmiennej Liczba. Ponieu procedurze Dodajl0 nie operujemy bezporednio na zmiennej L: tylko najej kopii, to po wykonaniu tej procedury zmienna dalej zachc warto rwn l. 2* przez stadc* Parametry prekazywane s przez ata, jeeli pred ich identyfikatr jest umieszezone alowo kluczowe conat. Parametr formalny okrelo ten aposb moe by tylko udezytywany i nie mona do niego przy* innej wartoci. Stoaowanie tego rudzaju parametru zalecane jest, wewntrz procedury lub funkcji nie jeat przewidywana zmiana da* paranetru, a arazem stosowanie go powoduje optymalizacj kodu, parametry przekazywane przez ata s typu tablicowego lub acu wego. Przykad: var Liczba, Skala:integer; procedure Dodaj*y: Integer; const x: Integer); begi y:=y+x; ivriteln (y ) ; end; begin Liczba:=3; Skala:=10; Dodaj(Liczba,5kala); writeln(Liczba); Programowanie w Turbo Pascal 7.0 Po wykonaniu tego przykadu zoatan wypisane na ekranie licby:13 i 3. Zmienna I.iczba, bdca parametrem aktualnym,jest przekazyw*a prez warto, ale zmienna Skala jest przekazywana jako staa, ponie. wajej warto nie bdzie ulegaa zmianie wewntr procedury. Pozw*a to midy innymi na wikszenie hontroli nad pisanym programem, gd* przypisanie wartoci tej zmiennej powoduje bd kompilacji. 3) przez zmienn Parametry przekazywane s przez zmienn, jeeli przed ich identyfik* torem jest umieazcone sowo kluczowe uar. Parametr ahtualny okrela ny w ten aposb muai by zmienn, ktrej typ musi by taki aam, jak typ odpowiadajcego jej parametru formalnego. Parametr przehazywany przez zmienn atoauje ai wtedy, gdy procedura musi wrci wyn* awojego diaania do awojego otoczenia. Jest to moliwe tylko dlatego, * wazystkie operacje wyhonywane na parametrze formalnym a fahtyczn* wykonywane na parametre aktualnym. Przykad: uar Liczba:integer; procedure Dodajl0(var x:integer); begin x:=x+10; write(x); end; begin Liczba:=1; Dodajl0(Liczba); writeln(Liczba); end. Po wyhonaniu tego pryhadu zostan wypiaane na ekranie liczby:1 i 11. Zmienna Liczba jeat prekazywana jako parametr ahtualny a procedury Dodajl0, a wewntrz procedury zwikszany jest param* '' formalny x. W przeciwieatwie do parametrw prekazywanych p* warto, parametr formalny xjeat skojarzony parametrem aktualny co powoduje, e po ahoczeniu procedury parametr aktualny b w rto p am t fo * dhu jako ho a p g ametru kt a fo* 162 P. Michakiewicz, l. wituszak Parametry przehazywane a prez zmienn ieokrelonego typu, w deklaracji nagwka procedury lub funkcji nie ohrelimy typu metru foznalnego. W wyniku takiej deklaracji parametry aktualne by dowolnego typu, ale muaz to by zmienne. Parametry fon muaz wystpi ze aowem kluczowym var lub e aowem conat. wystpi aowo var, parametr moe zosta zmodyfikowany, za gd atpi sowo conat, moe on zosta tylho odcytany. Parametry okrf przez mienne nieokrelonego typu wewntrz bloku posiadaj ty zgodny z adnym innym typem. Moemy ich uywa poprze kon, typu w nastpujcy apoab: dostpny typ ( parametr z nieokrelonym typem ) Przykad: -var Liczba:integer; procedure Dodajl0(var x); beqin integer(x):=integer(x)+10; writeln(integer(x)); end; begin Liczba:=1; Dodajl0(Liczba); writeln(Liczba); end. Po wyhonaiu tego przyhadu zostan wypisane na ehranie licz* i 11. Zmienna Licba jeat przekazywana jako parametr aktual* procedury Dodajl0, a wewntrz procedury zwihszany jest par* fornalny x, htry podlega honwersji typu. PARAMETRY OTWAR,TE Parametry otwarte pozwalaj na presyanie do procedur i funkcji 1 i acuchw o zmiennej dugoci. Moemy wyrni parametry otwarte tablicowe i acuchowe. Tablice otwrte Tablice otwarte dostpne a po uyciu dyrektywy ($P+} lub wcs Programowanie w Turbo Pascal 7.0 opCj vpen padtui.cl* w iuciiu vrwv**o,w* uu,ccuc,ey vr.wure wane jako parametry formalne procedur i funkCji.Tablice te nie maj *; okrelonego wymiaz i definiowane s nastpujco: W P*z'Padku definiowania proCedury lub funkeji,ktrej paraz mog by zmienne aCuChuwe o rnych dugnCiaCh,moemy array of Typ Podstawowy deklaracji identyfikatora OpenString jako nazwy typu lub de* procedury lub funkCji y cznie z dyrektyw ($P+} komp: gdzie Typ Podstawowy okrela typ elementw tabliCy.Parametry aktu Otrzymamy wtedy tzw.acuchy otwarte.Identyfikator Ope alne musz by zmiennymi typu Typ Podstawowy lub tablicami o ele adeklarowanyjest w module Syste*. mentach tego typu. Przykad: Naley pamita,e przy przesyaniu przez warto duych tablic do Procedure Dodaj (uar Tekst : openstring ); ' procedur i funkeji z otwartymi parametrami moe wystpi przepen** nie stosu.Wynika to z faktu,e kompilator tworzy kopi tej tablicy. ' lub Przykad: Pxocedure Dodaj(var Tekst : 5tring ); procedure Wpisz Warto(var Tab : array of Integer); begin 7 gdzie parametrem procedury jest tablica Tab o nie ustalonym z gry end wymiaz'ze.Po przekazaniu tablicy jako parametr do funkCji lub proce- dury jest ona traktowana jako tablica o nastpujcej strukturze: Dla tak zdefiniowanej procedury Dodaj i dla nastpujcych zmie array [ O..N-1] of Typ var gdzie N okrela liczb elementw w przekazanej tablicy. x : string ; y:5tring[15); Moemy si o tym przekona po wykonaniu nastpujcego programu: wywoania ponisze s poprawne: Dodaj(x); Dodaj(y); Tab=array[3..10] of Byte; const ; Za pomoc funkeji Low i High moemy odezyta indeks pierv T : Tab= (1,2,3,4,5,6,7,8) ; i o8tatniego elementu w tablicy.W pr2ypadku tablicy otwartej f procedure Wypisz (var Tablica : array of Byte ) ; LOw zawBZe zwraCa zero. begin Write Ln(Low(Tablica),'',High(Tablica)); end; begin i Wypisz(T); Write Ln(Low(T),'',High(T)/; end. Typ elementw tablicy przekazywanej do proCedury lub funkCji musi b* taki sam,jak typ elementw tablicy otwartej.Za pomoc funkeji I*A i High moemy odezyta indeks pierw*zego i ostatniego elementu A tablicy.W przypadku tablicy otwartej funkej Low zawsze zwraca *e* 164 P.Michakiewicz,I.wituzak Programowanie w Turbo Pascal 7.0 Modu Syst*m sra*,E n*cJowaNE ErrorAddr akadnia opis obacz EgitCode akadnia opia zobacz EzitProc N" ahadnia opis zobacz conat ErrorAddr: Pointer = nil; Staa zawiera adrea instrukcji, ktra apowodi a bd wykonania. Jeli program zakoczy normalnie lub zosta przerwany wywoaniem cedury Halt, tu watoci tej ataej jeat nil. ExitGode, ExitProc . conat ExitCode: Integer = 0; . Staa okrela kod zakoczenia programu. * program zakoczy ai normalnie, to ExitC jest rwne 0, za dla programu przerwanego woaniem procedury Halt zmienna ExitC zwraca warto odpowiadajc parametrowi cedury Halt. W przypadku przerwania progr* z powodu wyatpienia bdu wykonania w E** de jeat zwraeany bd wykonania. . ErrorAddr, E*tProc . const E*tProc: Pointer = nil; . Staa uywana do zainstalowania procedury, cia, ktra jest wykonywana przy normal zakoczeniu programu, zakoczeniu progr* przerwanym przez procedur Halt lub wyat niem bdu wykonania. . ErrorAddr, E*tCode Programowanie w Turbo Pascal 7.0 akadnia opis zobacz F*'eeList skadnia opis zobacz HeapEnd akadnia opis zobacz HeapError skadnia opis conat FileMode: Byte = 2; Staa uywana do ukrelania trybu dostpu do plikw otwartych przez procedur fteaet. Zakre* i '&:* doatpnych wartoci ataej zaley od uywanej weraji Doa-u. Jednak dla wazyatkich weraji s definiowane naatpujee tryby: 0 - plik tylko do odczytu, 1- plik tylko do pisania, 2 - plik do odczytu i do piaania. Standardowo waroci zmiennej FileModejewt2. . ftewrite . const FreeList: Pointer = nil; . Staa wskazuje na pierwszy wolny blok na stercie. Blok ten zawiera wskanik do naatpnego wolne go bloku, a ten z kolei do nastpnego wolnego bloku itd. Oatatni wolny blok zawiera wskanik na wierzchoek sterty. Jeli na atercie nie ma wolnych blokw, to warto" FreeList odpowiada HeapPtr. . Dispose, FreeMem, HeapPtr : const HeapEnd: Pointer = nil; . Staa wakazuje na koniec pamici DOS'u uywa nej przez program. Staa ta jest inicjalizowana w chwili rozpoczcia dziaania programu. . HeapOrg, HeapPtr . const HeapError: Pointer = nil; : Staa wakazuje adres funkcji obaugi bdu sterty, ktrajest wywoywana, gdy na atercie zabrak*e 768 P. Michakiewicz, I. wituszak 1 ** rl*.ruz*e*ena. *natalowanie r*'*-*ir* obsugi bdu aterty odbywa si przez prz* jej adreau do ataej HeapError: heap Error:= @ Heap Func zobacz . GetMem, New HeapOrg skadnia . const HeapOrg: Pointer = nil; opis . Staa wakazuje na spd (pocztek) sterty, zobacz . HeapEnd, HeapPtr HeapPtr akadnia : const HeapPtr: Pointer = nil; opis . Staa wakazuje na wierzchoek sterty, kt zarazem pocztkiem wolnej panici.Za k razem,gdy zmienna dynamiczna jeat odkl na atert,to ataa HeapPtr jeat przeauw* gry o wielko tej zmiennej. zobacz . HeapOrg,HeapEnd InOutR.es a*adnia . conat InOutRes: Integer = 0; opia . Staajest uywana przez wewntrzne funkcj cia - wyjcia.W ataej tej jest zapisywany, dziaania funkcji IOReault. zobacz : IOReault OvrCodeList deklaracja . conat OvrCodeLiat: Word = 0; opia . Staa uywana jeat przez program zarzdz nakadkowaniem i zawiera liczb segnent, du nakadek.Jeeli program nie zavc nakadek,to staa ta jeat rwna 0,w innym padkujest rna od 0.Staa tajest inicjalizo* przez linker Turbo Pascala i nie naley jej nia. Programowanie w Turbo Pascal 7.0 skadnia . const OvrDebugPtr: Pointer = nil; *owy mona przesunѹ do innego poo p*l* P*ez P*l*Pisanie nowych war opis . Staa jest uywana przez wbudowany debugger staych OvrHeapOrg,OvrHeapPtr i systemu Trbo Pascala lub prez debugger ew. apEnd.Wszelkie zmiany powinny by ntrzny,np.Turbo Debugger przy uruchamianiu * preprowadzone przed wywoaiem pr programw nakadkowych. Ovrlnit,a po wywoaniu procedury OvrC] OvrDosHandle aby upewni si,e bufor nakadkowy jes Ponadto wielko bufora obliczona jako s*adnia : conat OvrDosHandle: Word = 0; OvrHeapOrg-OvrHeapEnd powinna by, lub prynajmniej rwna wielkoci dane opis . Staa przechowuje uchwyt pliku stanowicego d- OvrHeapSize: kadk programu.Staa jest inic*alizowana przez zobac . OvrHeapEnd,OvrHeapPtr,OvrSetBuf procedur Overlnit z moduu Overlay.Warto 0 tej staej informuje,e plik na*adkowy aktualnie OvrHeapPtr nie jest otwarty. skadnia . const OvrHea Ptr: Word zobacz . OvrInit opis . Staa prechowuje wskani* b*'ora na* OvrEmsHandle Staa jest uywana prez program zarzѹ skadnia . const OvrEmsHandle: Word = $FFFF; na*a*owaniem. * zobacz OvrHeapOrg opis . Staa przechowuje uchwyt pliku do bloku pamici typu expanded dla programu nakadkowego.Sta- OvrHeapSize a jeat inicjalizowana przez procedur F*. OverlnitEMS z moduu Overlay.Warto $FFFF s*adnia . const OvrHeapSize: Word = 0; tej staej informuje,e nie zosta przydzielony * opis : Staa zawiera minimalny rozmiar bufora * blok pamici rozserzonej dla nakadek. dek odpowiadajcy najwikszej nak zobacz . Ovrlnit,OvrlnitEMS programu.Jeeli program nie zawiera a OvrHeapEnd nakadek,to s*a * ma warto rwn 0. zobacz . OvrHeapOrg akadnia . const OvrHeapEnd: Word = 0; OvrLoa*,ist opis . Staa przechowuje adres koca segmentu bufora przeznaczonego dla nakadek. . const OvrLoadList: Word = 0 zobacz : OvrHeapOrg,OvrSetBuf *.; opis . Staa uywana jest przez program zarzdz nakadkowaniem i zawiera licb zaadowa O*rHeapOrg na*adek.Jeeli program nie zawiera nak; shadnia . const OvrHeapOrg: Word = 0; * staa ta jest rwna 0,w innym prypadk opis . Staa rzechowu e adres ocz tku se entu bu- * rna od 0.Staa ta jest inicjalizowana * linker Turbo Pascala i nie naleyjej mieni* fora preznaczonego dla nakadek o rozmia* danym w zmiennej OvrHeapSize.Bufor na*ad- 170 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 shadnia opis RandSeed shadnia opis zobacz Seg0040 skadnia zobacz SegA000 skadnia opia zobacz . const PrefixSeg: Word = 0 . Staa zawiera adres segmentu PSP utworzoneg , ` * przez system DOS, gdy jeat wykonyway pro. . conat RandSeed: Longnt = 0; . Staa przechowuje wbudowany "zarodek" gene ratora liczb losowych. Random, Randomize . eonat Seg0040: Word = $0040; w=, *wiy iuze Ayc uyty przy dostgpie do segmentu ROM BIOS o adresie $0040. w ryae rzeczywistym Seg0040 ma zawsze warto $0040, natomiast w trybie chronionym warto tej staej moe by rna. . SegA000, SegB000, SegB800 . const SegA000: Word = $A000; . Staa wybiera aegment o adreaie $A000. Staa zawiera selektor, ktry moe by uyty przy doatpie do atron pamici graficznej dla kart EGA i VGA o adresie aegmentu $A000. Sta doczuno dla kompatybilnoci midzy rzeczywistym trybem DOS'u a trybem chronionym. W trybie rzeczywiatym SegA000 ma zawsze warto $A000, natomiaat w trybie chronionym warto tej staej moe by rna. Seg0040, SegB000, SegB800 172 P. Michakiewicz, I. wituszak i *,* ; '* ** : skadnia . const SegB000: Word = $B000; opis . Staa wybiera aegment o adreaie $B000. zawiera selektor, ktry moe by uyty pr; stpie do pamici wideo sterov monochromatycznego o adreaie segmentu $ Sta doczono dla kompatybilnoci mid czywiatym trybem DOS'u a trybem chroni* W trybie rzeczywistym SegB000 ma awazi to $B000, natomiast w trybie chroni warto tej staej moe by rna. zobacz : Seg0040, SegB000, SegB800 SegB800 skadnia : conat SegB800: Word = $B800; stpie do pamici wideo dla karty CGA o a segmentu $B800. Sta doczono dla komp SegB800 ma zawaze warto $B800, natom trybie ehronionym warto tej staej mo: rna. zobacz : Seg0040, SegA000, SegB000 SelectorInc skadnia . const Selectorlnc: Word = $1000; opia . Staa zawiera warto, ktra moe by dod2 odjta od selektora segmentu, aby przesun da lub odjѹ) wskanik o 64 KB. W rzeezywistym staa ta ma warto $1000 miaat w trybie chronionym warto tej staf by rna. zobacz : Seg0040, SegB000, SegB800 Programowanie w Turbo Pascal 7.0 * ir nvrttvl*r;SUH skadnia . const StackLimit: Word = 0; proceaor 80287 opis . Staa zawiera przesunieie dna atoau w segmen*e 3 proceaor 80387lub pm stoau. zobacz . SPtr Staa okrela czy instrukcje zmiennoprzeeir bd wykonywane czy emulowane. Test8086 zobacz Teat8087 akadnia . const Test8086: Byte = 0; opia . W staej zapiaywany jeat rezultat kontroli typu ZMIENNE procesora 80x86,w jaki jeat wyposaony konpu, ter.Staa moe mie naatpjee wartoei: *Put ** shadnia . var Input: Text; WARTO TYP PROCESORA opis . Zmienna eat li*iem t lko d J P y o odczytu,ako* 0 procesor 8086 nym ze standardowym wejciem pliku sys operacyjnego (zwykle z klawiatur). procesor 80286 zobacz , Out ut procesor 80386lub Output pniejszy var OutPut: Text* akadnia Jeeli zostanie wykryty procesor 80386(lub opis . Zmienna jest pliliiem tylko do piaania,skoj pniejazy),to bd uywane instrukcje procesom * nym ze standardowym wyjciem pliku sys1 80386,aby przyspieszy niektre operacje,np, '*r:, operacyjnego (zwylile z monitorem). uywanie 32-bitowych instrukcji przy mnoeniu, zobacz Input dzieleniu,przeauwaniu itp. SaveIntXL zobacz : Test8087 opia . Zmienne przechowuj wektory przerwa.M Test808* Syatem definiuje nastpujce zmienne S " ' Int*: sliadnia : const Test8087: Byte = 0; opia : W ataej zapisywany jeat rezultat wykxycia i hlt nazwa typ opis syikacji koprocesora arytmetycznego 80a8* Staa moe mie nastpujce ar** : Savelnt00 Pointer zapisanie wektora $C I w ei Savelnt02 Pointer zapisanie wektora $C WARTOS TYP KOPROCESORA SavelntlB Pointer zapisanie wektora $1 0 nie wykryto adnego koproceaora * SaveInt21 Pointer zapisanie wektora $2 proceaor 8087 Savelnt23 Pointer zapiaanie wektora $2 174 P.Michakiewicz,I.wituszak Programowanie w Turbo Pasca 7.0 Savelnt34 Pointer zapaanie wektora $34 ' * akadnia . Continue; Savelnt35 Pointer zapisuie wektora $35 w opia : Kontynuuje wykonywaniejedne* inet J rukc) Savelnt3 Ponter zapiaanie wektora $36 racyjnych for,while lub repeat,z pomini* instrukeji wystpujcych wewntrz tych p* Savelnt37 Pointer zapiaanie wektora $37 * continue. Savelnt38 Pointer zapisanie wektora $38 *' zobac : Break,Exit,Halt Savelnt39 Pointer zapisanie wektora $39 Ezit Savelnt3A Pointer zapisanie wektora $3A skadnia : Exit; SaveInt3B Pointer zapiaanie wektora $3B : Powoduje przerwanie wykOnywania podprc mu (procedury lub funkc*i) i powrt do miE SaveInt3C Pointer apisanie wektora $3C wywoania tego podprogramu. zobaez SaveInt3D Pointer ' Halt zapisanie wektora $3D SaveInt3E Pointer Halt zapiaanie wektora $3E " Savelnt3F Pointer zapiaanie wektora $3F skadnia : Halt [ (E*tCode: Word, ], zapiaanie wektora $75 opia : Powoduje natyehmiaatowe przerwanie prOgr Savelnt75 Pointer i powrt do aystemu perac *ne o.Exit y J g Code W zmiennych tych s zapiaywane stare wektory przerwa przed insta sta inicjowtn typu Word i okrela kod zak lacj nowyeh.Po wykonaniu programu,a pred powrotem do systemu czenia programu.Wywoanie procedury Halt operaeyjnego,wektory przerwa s odtwarzane na podatawie Sav* parametrujest rwnowane wywOaniu Halt(i IntX**. . Exit,RunError obac zobac : Exec,SwapVectors RunError PROCEDURY I FUNKC*TE akadnia . RunError [ (ErrorCode: Byte ) ]; opis . Powoduje natychmiaatowe przerwanie progra* Procedury sterujQ;ce wykonaniem hodu programu: oraz wygenerowanie bdu o numerze okrelon* Break w ErrorCode.Pominicie parametru powod, skadnia . Break w woanie rocedur z kodem b du rwnym I zobacz . E2t,Halt opis : Powoduje natychmiaatowe opuszezenie jednej : ptli: for,while i repeat.Po wykonaniu tej instN' keji wykonywana jest instrukeja znajdujca *! bezporednio po jednej z tych ptli (for,wh* repeat). zobaez : Continue,E*t,Halt 176 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 r untzc*e rytmetyczne: Chr Abs akadnia . Chr (X: Byte); ahadnia Aba (X); opia . Funkcja Chr zwraca znak o podanym w zmienne* opia . Funkcja zwraca warto bezwzgldn wy **merze pordkowym zgodnie z tabel kodw X typu cakowitego lub rzeczywiatego, wynik . Char ArcTan * * obac . Ord akadnia . ArcTan (X: Real) *rd : Funkcja ArcTan wraca arcua tangena z, nia X typu reczywiatego. Zwracany prze ahadnia . Ord (X); wynikjeat w radianach. opia . Funkcja Ord zwraca numer porzdkowy podane. wynik go dowolnego wyraenia X typu porzdkowego. zobacz . Coa, Sin wynik . Longint `* Cos obacz . Chr ahadnia . Coa (X: Real) ftound ; opia . Funkcja Coa zwraca coainua podanego k akadnia . Round (X: Real); radianach. Xjeat wyraeniem typu rzeczyvc opia . Fun*cja Round zaokrgla warto wyraenia X * wynik typu rzeczywiatego do najbliazej liczby cakowitej * typu Longint. Jeli warto wyraenia X znajd*a zobacz . ArcTan, Sin ai porodku dwch liezb cakowitych, to w wynr ku otrzymamy liczb eakowit o WikBZej wartoci bezwzgldnej. akadnia . Exp (X: Real); wynik . Longint * oPia . Fukcja zwraca warto eX. X jeat wyra zobac . Int, Trunc typu rzeczywiatego, wynih . zobacz . Ln akadnia : Trunc (X: Real) *ac opia . Funkcja Trunc powoduje obcicie c穌ci uam** ** akadnia . Frac (X: Real); wej wyraenia X typu reczywiatego. opia . Funhcja zwraca cz uamkow wyraeni wynik . Longint pu rzeczywiatego. zobacz . Round, Int , zobacz . Int 178 P. Michakiewicz, l. wituszak Programowanie w Turbo Pascal 7.0 akadnia . Int (X: Rea1); opia , . Funkcja zwraca cz cakowit wyraena X typu recywiatego. zobacz . Frac,Round,Trunc Ln akladnia . Ln (X: Real); opia . Funkcja wraca warto logarytmu natural:eg OZ wyraenia X typu rzeczywistego. . Real zobac Ex . p skadnia . , opis : Funkcja zwraca warto Pi rwn 3.1416,a do- kadnie 3.1415926535897932385. : Real Sin akadnia : Sin (X: Real); upis . Funkcja zwraca sinua podanego kta X w radia- nach.Xjeat wyraeniem typu rzecywistego. wynik . Real zobac . ArcTan,Coa Sqr skadnia . Sqr (X); opis . Funkcja wraca kwadrat wyraenia X.Xjest wl'- raeniem typu cakowitego lub rzeczywistego. . Jest tego aamego typu co wyraenie X. P. Michakiewicz, I: wituszak **ri akladnia opis wynik : Sqrt (X: Real); . Funkcja wraca pierwiaatek kwadratowy, nia X. Xjest wyraeniem typu reczywistf . Rea1 *'rocedury funhcje porzdkowe: Dec akadnia : Dee (var X [ ; N: Longint ) ); opia . Powoduje mniejszenie wartoci zmiennej lub o warto wyraenia N,jeli N zostac lone.Xjest zmienn typu porzdkowego,a wyraeniem typu calkowitego. Naley zauway,e procedura Dec(X) odpo inatrukcji: X:=X-1 a ec(X,N) odpowiada instrukcji: X:=X-N ale jest *d nich bardziej efektywna. ;,*; zobac : Inc,Pred,Succ * High akladnia . High (X); opis . Zwraca najwikaz warto z zakresu argum X.Xjest zmienn lub identyfikatorem typu, czym zmienna lub identyfikator typu musz* typu porzdkowego,typu tablicowego lub lacuchowego. * ' zobac . Low Inc skadnia . Inc (var X [ ; N: Longint ) ); opis . Powoduje zwikszenie wartoci zmiennej X o 1 o warto wyraenia N,jeli N ostao okreli X jest zmienn typu porzdkowego,a N jeat Programowanie w Turbo Pascal 7.0 ; raeniem typu cahowitego.Naley zauway,e procedura Inc(X) odpowiada instruhcji: X:=X+1 za Inc(X,N) odpowiada instruhcji: X:=X+N ale jest od nich bardziej efehtywna. zobacz . Dec,Pred,Succ L0w ahadnia . Low (X); Zwraca najmniejsu warto zahresu argumen- opis * ,X jeat zmienn lub identyfih tu X atorem typu, przy czym zmienna lub id.entyfihator typu musz* by typu porzdhowego,tablicowego lub acu- chowego. zobacz . High Odd d a . Odd (X: Longint); sha ni nieparzya** Wl*a- opis *l*ihiem jest war* Funh a su do teatowania enia typu cahowitego x Xjest 1czb nieparu a* J* logiczna True,jeli 1 *em * natomiast Xjest liczb paruya w*rto logiczna Falae. , Boolean Pred Pred"(), Funhcja zwraca warto poP*edzajc XWda' opis em dowolnego typ* nym typ j zobac . Dec,Inc,Succ P.Michakiewicz,I.wituszak Succ shadnia opis zobacz * Succ (X) Funhcja zwraca nastpn wat'* po X w da typie. Xjest wyraeniem dowolnego typu poz howego. . Dec, Inc, Pred Procedu*y i funkEje *acuchowe: Concat shadnia opis ;* wynih zobacz Copy shadnia opis wynih zobacz Delete shadnia opis ConCat (S1 *, S2, ..., SN ]:String); Funhcya auy do poczenia hilhu acuch [, S2, ..., SN ]l w jeden acuch. Kady elem* jest dowolnym wyraeniem typu acuchu Jeli acuch wynihowy jeat duszy ni 25 hw, to po 255 znahu zostanie obcity. . String . Copy, Delete, Insert, Lenght, Pos . Copy (S: String; Index, Count: Integer); Wynihim funhcji jest acuch o dugoci wycity z podanego acucha S, poczvr znahu o pozycji ohrelonej przez Index. Index jest wihauy ni dugo acuch funhcja zwraca acuch pusty; natomia* Count ohrela wicj znahw ni pozost,a* cuchu, liczc od pozycji Index, to jeat v tylho pozostaa cz tego acucha. S jea* n=,m wyraeniem typu aeuchowego; Count s wyraeniami typu cahowitego. . String Concat, Delete, Insert, Lenght, Pos ueiee t*: Nu1==*s, ==..--,Procedura suy do usunicia czci a dugoci Count z podanego acucha S, p Programowanie w Turbo Pascal 7.0 Index jest wikezy ni dugo acucha S, * aden znak nie zostanie uaunity. Natomiaat je. eli Count okrela wicj znakw ni pozoata W acuchu, liczc od pozycji Index, tu jeat uauwana pozoataa cz tego acucha (liczc od pozycji Index). Sjeat dowolnym wyraeniem typu acuchowego, Index i Count a wyraeniami typu cakowitego, zobacz . Concat,Copy,Insert,Lenght,Pos Insert skladnia : Insert(Source:String; uar S:String; Index:Inte- ger); opis . Prcedura suy do wstawienia aeucha Surce d aeeha S,poczwazy od znaku o pzycji re'1ne* rzez Index.Jeli acueh w nikw jest duazy ni 255znakw,to po 255znaku zostanie obcity. Sourcejest dowolnym wyraeniem typu aeueho- wego,S jest zmienn dowlnego wyraenia typu acuchowego o dowolnej dugoci,Index jest do- wolnym wyraeniem typu cakowitego. zobacz : Concat,Copy,Dalete,Lenght,Poa Lenght akadnia . Lenght (S: String); opis : Funkeja zwraca dugo wyraenia S typu acu* chowego. wynik : Integer zobacz : Concat,Copy,Delete,Inaert,Pos Pos a*adnia . Pos (Substr,S: String); opis . Funkcja wyszukuje podacuch Substr wewn*** acucha S oraz pozwala okreli pozycj W ** cuchu S,od ktrej zaczyna ai podacuch Subs* * Jeeli acuch S nie zawiera podanego poda**'; 184 P. Michakiewicz, I. wituszak cud au*sr, o unkc*a zwraca 0. Substr i , wyraeniami typu acuchowego. wynik zobacz . Concat, Copy, Delet,e, Inaert, Lenght Str akadnia . Str (X [:Width [:Decimals ] ]; var S); opia . Procedura zamienia warto numeryczn wyra nia X na jego reprezentacj acuchow, zgod: ' parametrami fornatujcymi Width oraz DE mals. Wynik zamiany jeat podstawiany zmiennej typu acuchowego. S. X jeat wyra: niem typu cakowit,ego lub rzeczywistego. Widt Decimala s wyraeniami typu cakowit,ego. * *` raenie Width okrela minimaln dugo p< wyjciowego i powinno mie warto wikaz od Jeeli dla wyprowadzenia wyraenia wyjciowe --- r*-~ *---* Y"" ** riiucl,i Width, to jeat wyprowadzana taka ilo znak jaka konieczna jeat do przedatawienia tego wy* ku. Wyraenie Decimals moe by podane tyl dla typw rzeczywiatych i tylko wtedy, gdy zoat nie podany parametr Width; wyraenie t,o okreF liczb miejsc dzieaitnych po kropce. zobacz ; *, W** Va1 skadnia : Val (S; var V; var Code: Integer); opis . Procedura zamienia warto acuchow wyra nia S na jego reprezentacj numeryczn. Wyn: zamianyjest podstawiany do zmiennej numeryc nej V. V jest wyraeniem typu cakowitego 1 rzeezywiatego. Codejest zmienn typu cakowit go. Podany acuch muai by cigiem znak* tworzcym poprawn liczb cakowit lub rzecz: wist. Jeeli acueh nie przedstawia poprawn, liczby, t,o pod zmienn Code podstawiana je* pozycja pierwazego bdnego znaku. Jeeli a cuch przedstawia poprawn liczb, to po zmienn Code podstawiane jeat 0. zobacz : Str Programowanie w Turbo Pascal T.0 Appe:d aliadnia . Append (var F: Text); opia . Powoduje otwarcie pliku akojarzonego ze mi*nn plikow F. Jeeli plik o podanej nazwie nie istnie*e t,o w s i b d. Po otwarciu liku aktualn .poycja pliku jeat ustawiona na kocu tego pliku, dziki czemu moliwe jeat bezporednie dopisywanie tekstw na kocu pliku. F jeat zmienn plikow plikw tekatowych i muai by akojarzona z dowolnym ewntrnym plikiem, uywajc procedury Aaaign. Jeeli F jest ju otwarty, to zoatanie zamknity, a nastpnie ponownie otwarty. Jeeli nazwa pliku akojarzonego ze mienn F jeat acuchem puatym (wykonano procedur Aaaign(F,")), to po wywoaniu Append(F) zmienna F odnoai ai do atandardowego wyjcia. Plik skojarzony ze mien F zostaje otwarty tylko do i w k 'nik liku *est na kocu liku. Prz piaania a p * p y dyzektywie kompilatora {$I-} funkcja IOResult zwraca 0, jeli operacja wykonana ostaa poprawnie; w przeciwnym wypadku funkcja zwraca warto rn od 0. zobac . Asaign, Cloae, Reset, Rewrite Assign akadnia . Aasign (var F; Name); opia . Procedura suy do akojarzenia miennej plikowej F z zewntrznym plikiem podanym przez Name. Fjeat zmienn dowolnego typu plikowego, Name jeat wyraeniem typu acuchowego, okrelajcym ciek doatpu i nazw pliku. Dugo Name nie moe by duaza ni 79 znakw. Jeeli Name jeat acuchem puatym, to zmienna F zostani8 akojarzona z atandardowym wejciem lub atand' ardowym wyjciem, w zalenoci od tego cy plik zoatanie otwarty procedur Reaet(F) (wejcie), czy Rewrite(F) (wyjeie). Procedury Aaaign nie naley uywa do plikw otwartych. zobac . Append, Close, Lst, Reset, Rewrite 186 P. Michakiewicz, I. wituszak akadnia . . BlockRead (var F: file; var Buf; Count: Word [ ; Reault: Word ] ); opia . Procedura czyta rekordy o licbie bajtw rw lub mniejazej od wartoei Count z pliku F i z* bajtu ajmowanego prze zmienn Buf Jeeli a` rametr Reault nie zoata podany i lic preczytanych rekordw jest mniejaza ni pod* w Count, to wyatpi bd wejcia-wyjcia. Sy acja taka moe wystpi, gdy oaignity zos koniec zbioru dla mniejazej liczby odczytan* rekordw ni podano w Count. Jeeli natomi; *' okrelono take zmienn Result, to bdzie o zawiera aktualn liczb przeczytanych rekord i bd wejcia-wyjcia nie wystpi. Aby uywa procedury, plik F powinien by otwarty. F j, mienn plikow, Bufjest dowoln zmienn, ( unt jeat wyraeniem typu Word, a Result jf zmienn typu Word. Rozmiar bloku czytaneg* pliku zajmuje co najwyej iloczyn Count*r* miar*rekordu (rozmiar*rekordu podaje si pr otwieraniu pliku, jeeli nie podano, to jeat prz: mowane 128 bajtw). Warto iloczynu Count*rozmiar rekordu n moe by wikaa od 64 KB. Przy dyrektyw kompilatnra {$I-} funkcja IOReault zwraca 0, je operacja odczytu rekordw wykonana zoataa p prawnie; w przeciwnym wypadku funkcja zwrai warto rn od 0. obacz : BlockWrite BlockWrite akadnia : BlockWrite (var F: file; var Buf; Count: Word [;v* Reault: Word ] ); * * opia . Procedura zapisuje rekordy o liczbie bajtw rrr " nej lub mniejazej od wartoci Count z pamic ropoczynajc od pierwszego bajtu ajmowaneg przez zmienn Bufi zapiaujeje do pliku F. Jeel paranetr Result nie zosta podany i liczba zapiaa nych rekordw jest mniejsza ni podano w Coun1 Programowanie w Turbo Pascal 7.0 18; moe wystpi, gdy nastpi przepenienie dysku * przy mniejsej licbie rekordw ni podano w Count. Jeeli natomiast okrelono take zmienn Reault, to bdzie ona zawiera aktualn licbg zapisanych rekordw i bd wejcia-wyjcia nie wystpi. Aby uywa tej procedury, plik F pow;,* nien by otwarty. Fjest zmienn plikow, Bufjest dowoln mienn, Count jest wyraeniem typu Word, a Resultjest zmienn typu Word. Rozmi* bloku zapisywanego do pliku zajmuje co najwye, iloczyn Count*rozmiar rekordu (rozmiar*reko* podaje si pry otwieraniu pliku, jeeli nie podano, to jeat przyjmowane 128 bajtw). Warto iloczynu Count*rozmiar rekordu me moe by wiksza od 64 KB. Pry dyrektyrvie kompilatora {$I-} funkeja I OResult wraca 0, jeli operacja zapisu rekordw wykonana zostaa po prawnie; w przeciwnym wypadku funkeja wraca warto rn od 0. zobacz : BlockRead Chdir s*adnia : Chdir (S: String); opis : Procedura zmienia aktualny katalog okrelony przez ciek S. Jeli S okrela atacj dyskw, * aktualny dyak rwnie zostanie mieniony. S jeat wyraeniem typu acuchowego. Przy dyrektywia kompilatnra {$I-} funkeja IOResult zwraca 0, je* operacja miany katalogu wykonana zostaa po prawnie; w przeciwnym wypadku funkeja zwraca warto rn od 0. zobacz Close skadnia GetDir, Mkir, RmDir, SetCurDir . Close (var F); opis . Powoduje uaktualnienie i zamknicie pliku s*oja* rzonego ze mienn plikow F. F jest mien*! dowolnego typu plikowego otwartego wezeniel' azym uyciem Reset, Rewrite lub Append. * 188 P. Michakiewicz, I. wituszak - x- ~ r---- ,**g ** uivuiia gltUj*l innym zewntrznym pliliiem.Przy dyrel? kompilatora {$I-} funkcja IOResult zwraca I operacja zamknicia pliku wykonana zosta prawnie; w przeciwnym wypadku funkeja warto rn od 0. zobac . Append,Assign,Reset,Rewrite Eof skadnial . Eof [ (var F: Text) ); opis : Funkeja daje warto logiczn True,jeeli al na poycja pliku znajduje si przed ost; zna*iem pliku lub gdy plik ni zawiera ai elementw.W przeciwnym wypadku daje w; logczn False.F jest zmienn plikow p tekstowyeh.Jeli pominigto F,to przyjmo jeat atandardowa wejciowa zmienna plil Przy dyrektywie kompilatora {$I-} funkeja 1 ault zwraca 0,jeli operacja wykonana z* * "*` poprawnie; w przeciwnym wypadku funkcja : *:; *:' ca warto rn od 0. wynik : Boolean zobac . Eoln,SeekEof skadnia2 : Eof (var F); opis : Funkeja daje warto logicn True, jeeli a13 na pozycja pliku znajduje ai przed osta znahiem pliku lub gdy plik nie awiera acl elementw. W przeciwnym wypadku daje wa ogiczn False. F jest mienn plikow. Prz rektywie kompilatora {$I-} funkeja IOR zwraca 0, jeli operacja wykonana zostaa p wnie; w preeiwnym wypadku funkeja v warto rn od 0. . Boolean Eoln akadnia . Eoln [ (var F: Text) ); opis : Funkeja daje warto logiczn True, jeeli ak na pozycja pliku znajduje si na ostatnim zi wiersza lub gdy wynikiem EofrF) jest wa Programowanie w Turbo Pascal 7.0 oac iogczn r'alae.r'jeat zmienn plihow plihw * tehstowych.Jeli pominito F,to przyjmowana jeat etandardowa wejciowa mienna plihowa, Przy dyrehtywie hompilatora {$I-} funhcja IORe. ault zwraca 0,jeli operacja wyhonana zoataa poprawnie; w przeciwnym wypadku funhcja zwra. ca warto rn od 0. wynih : Boolean zobac . Eof,SeehEoln Erase akadnia . Erase (var F); opia . Powoduje uaunicie plihu shojarzonego e zmien. n plihow F.F jeat zmienn dowolnego typu plihowego.Przy dyrehtywie hompilatora {$I-} fun. hcja IOReault zwraca 0,jeli operacja uaunicia plihu wyhonana oataa poprawnie; w przeciw. nym wypadhu funhcja zwraca warto rn od 0. zobac . Renane *lePose ahadnia . FilePos (var F) opis . Funhcja podaje aktualn pozycj plihu ahojarzo nego ze mienn plihow F.Jeli aktualna pozycja plihujeat na poczthu tego plihu,to wynihiem taj funhcji jeat 0.Natomiaat jeli aktualna pozyqa ' pliku jest na kocu tego pliku,tzn.wyniliiem EofiF) jeat warto logiczna True,to wyniliiem funhcji FilePoa(F) jest warto rwna warto* funhcji FileSize(F),czyli rozmiarowi plihu F.F jeat zmienn plihow.Przy dyrehtywie hompila* tora {$I-} funhcja I O Reault zwraca 0,jeli operacja wyhonana ostaa pprawnie; w przeciwnym w9' padhu funhcja zwraca warto rn od 0. wynih . Longint zobac FileSize,Seeh P.Michakiewicz,I.wituszak ahadnia . FileSize (var F)* opia : Funhcja podaje ahtualny rozmiar pliku a* nego ze mienn plihow F. Jeli plik jea1 to wynihiem tej funhcji jest 0. F jest i plihow. Przy dyrehtywie hompilatora {$: hcja IOReault wraca 0, jeli operacja wyl zoataa poprawnie; w preciwnym wypad! kcja zwraca warto rn od 0. wynih . Longint obacz . FilePos Flush ahadnia . Fluah (var F: Text); opis : Procedura powoduje dla plihu wyjciowego tego przez Rewrite lub Append wyzera bufora plihu. To gwarantuje, e wszyathie apiaywane do plihu w danej chwili oatan; aane w plihu ewntrznym. Przy dyre* hompilatora {$I-) funkcja IOReault zwraca i operacja wyhonana zostaa poprawnie; w pr nyn wypadhu funhcja zwraca warto rn; GetDir akadnia : GetDir (D: Byte; var S: String); opis . Procedura powl w miennej S uzyaha macj o ahtualnym hatalogu dla napdu * podanego w zmiennej D. D jeat wyraenien: cahowitego o wartoci typu bajt, S jest zm: typu acuchowego. Dla D=0 wahazywan, napd biecy, dla D=1 jeat napd A, dla napd B, dla D=3 napd C itd. * zobac . ChDir, MhIlir, RmDir, GetCurDir IOResult ahadnia . IOResult; opia . Funhcja suy do sprawdania poprawnoci v nywanych operacji wejcia-wyjcia warunhiem, e aystemowa hontrola waru Programowanie w Turbo Pascal 7.0 JJ""`" J""* "J `K""" `"1 "Y' ""J " ~rn~ `-*y- ***iui u,y*u *iianUWC*U: rektywy kompilatora {$I-}.Jeeli ayatemowa kontrola warunkw wejcia-wyjcia jeat wyczo- Procedura cytajeden znak z pliku i przypi* na i wyatpi bd wejcia-wyjcia,to wayatkie zmiennej.Gdy wynikiem funkeji EotiF) jes nastpne operacje wejcia-wyjcia a ignorowane to logiczna True zanim wykona si pro* a do wywoania funkeji IOReault,ktra wyzeruje * Read,to pod zmienn podatawiana jest w wewntrzn flag bldw.Przy dyrektywie kom- c Chr(26) (znak Ctrl-Z).Gdy wynikiem f pilatora {$I-} funkeja I O Reault wraca 0,jeli r Eoln(F)jeat warto logiczna True zanim w* operacja wejcia-wyjcia wykonana zostaa po- na zoatanie procedura Read,to pod zmienn atawianajest warto Chr(13) (znak CR - p prawnie; w przeeiwnym wypadku funkeja wraca karetki).Przy kolejnym wywolaniu procedu warto rn od 0,ktra jest kodem bdu. * ad bdzie czytany nastpny znak z pliku. wynik : Integer zobacz . IOutRes 2.Zmienne typu calkowitego i reczywiate* !` Procedura czyta cig znakw o poataci liczl MkDir kowitej pliku F,a naatpnie warto tej skadnia : MkDir(S: String); wadzonej liczby zoataje przypisana zmi* Vl*azyat*ie znaki apacji,tabulacji i znaki opia . Procedura tworzy nowy podkatalog o ciece okre- '. linii poprzedzajce czytany cig znakw a lonej przez S.Oatatni element cieki S nie moe rowane.Czytanie cigu znakw jeat przer5 by nazwju istniejcego pliku w podanej cie- pry pierwazym wystpieniu po acuchu ee.S jeat wyraeniem typu acuchowego.Przy * dyrektywie kompilatora {$I-) funkeja IOResult rycznym jednego ze znakw: znak puaty,t* cja,znak koca linii lub gdy wynikiem f wraca 0,jeli operacja utworzenia katalogu wy- *' Eo*F) jeat warto logicna True.Jeli la konana zoataa poprawnie; w przeciwnym numeryczny nie jeat zgodny z oczekiwany wypadku funkeja zwraca warto rn od 0. matem,to wyatpi bd wejcia - wyjcia zobacz : Chdir,GetDir,RmDir,CreateDir wyihiem fukeji Eo*F) jeat warto lo* True zanim wykonana zostanie procedura ftead lub gdy po pominiciu znakw puatych,tab skladnial . Read ([uar F: Text;] V [,V2,...,VN] ); i znakw koca linii wynikiem funkeji Eo* warto logicna True,to pod zmienn podst opis . Procedura auy do weytania przynajmniej jed- na jeat warto 0.Przy kolejnym wywoanii nej wartoci z pliku F pod podane zmienne cedury Read czytanie znaku bdzie rozpocz* V1,V2,...,VN.F jest plikow zmienn tekstow*. znaku,ktry apowodowa w poprzednim wy Jeeli F nie zostao podane,to przyjmowanyjest ,! * niu tej procedury przerwanie czytania lai standardowy plik wejciowy (klawiatura). ;* numerycznego. V1,V2,...,VN mog by zmiennymi typu znakowe- go,cakowitego,rzeczywistego lub lacuchowego. ' 3.Zmienna typu lacuchowego: Pry dyrektywie kompilatora {$I-} funkeja IORe- * sult zwraca 0,jeli operacja wykonana zost*a * Procedura czyta wsystkie znaki a do nap poprawnie; w przeciwnym wypadku funkeja zwra- nia znaku koca linii lub gdy wynikiem fu Eo*F) jest warto logiczna True i rezultat ea warto rn od 0. czytanego lacueha zna.kw oataje przyp zmiennej.Jeeli acuch wynikowy jest d, 192 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 * v n G* -- - - r - --^-~ -~**yY" j 'uui * to jest obcinany.Przy kolejnym wywoaniu proce. F i wczytywanie zawartoci tej linii,wg z dury Read czytanie znaku bdzie rozpoczte od piaanych w procedurze Read.Jeeli F zo znaku koca linii,ktry spowodowa w poprze. ** podane,tojest plikow zmienn tehatow,w ; dnim wywoaniu tej procedury przerwanie czy*. , ciwnym wypadku przyjmowanyjest standan nia acucha znakowego.Onacza to,e nie mo ' plik wejciowy (*lawiatura).V1,V2,...,VN na uy procedury Read do czytania kolejnych by zmiennymi typu znakowego,cakowitego wierszy,poniewa po napotkaniu znaku koca czywiatego lub acuchowego.Przy dyrekt lin kolejne wywoanie tej procedury spowoduje kompilatora {$I-} funkcja IOResult zwraca 0, zwrcenie acucha pustego.Do czytania kolej. * operacja wykonana zostaa poprawnie; w prz, nych wierazy naleaoby uy procedury ftea*Ln, ** nyn wypadku funkcja zwraca warto rn zobacz . ReadLn,Write,WriteLn zobacz . Read sliadnia 2 . ead (F,V C,V2,...,VN] 7; Renme opis : Procedura suy do czytania elementw z pliku F skadnia . Rename (var F; Newname); pod podane zmienne V,Vz,...,VN.Fjest zmienn opia . Powoduje zmian nazwy pliku skojarzone* plikow pliku skojarzonego z dowolnym zewngtrz- zmienn plikow F na plik o nazwie Newn nym plihiem dowolnego typu,z wyjtliiem plihu 1: Dalsze operacje na zmiennej F s operacjan tekstowego; V1,V2,...,VN s zmiennymi o typie pliku z now nazw Newname.F jest mi* zgodnym z typem elementw pliku.Po kadorazo dowolnego typu plikowego,Newname jest v wym odczytaniu zmiennej nastgpuje przesunicie r. eniem typu acuchowego.Przy dyrekt pozycji pliku na kolejny element.Przy prbie od- kompilatora {$I-} funkcja IOResult zwraca 0, czytu z pliku,gdy aktualna pozycja pliku jest na operacja zmiany nazwy pliku wykonana zo kocu tego pliku,tzn.gdy wyni*iem fukcji * poprawnie; w przeciwnym wypadku funkcja z EofiF) jest warto logczna True,wystpi b*d. ca warto rn od 0.Procedury tej nie vr Plik skojarzony ze zmienn plikow F powinien uywa do zmiany nazwy plikw otwartych. by otwarty.Przy dyrektywie kompilatora {$I) ! funkcja IOResult zwraca 0,jeli operac*a wykona ` zobacz : Erase na zostaa poprawnie; w przeciwnym wypadhu ;eset funkcja zwraca warto rn od 0. shadnia : Reset (uar F [:file; RecSize: Word ] ); zobacz . Write opis . Powoduje otwarcie pliku skojarzonego ze zm Readln plikow F.Jeeli plik o podanej nazwie nie is s*adnia . ReadLn ([var F: Text;] V [,V2,...,VN] ); je,to wystpi bd.Po otwarciu pliku aktu P d d ia rz a mniej je* pozycja pliku jest ustawiona na pocztku opis . roce ura s uy o wczytan p yn j nej wartoci z pliku F pod podane mienne pliku.Fjest zmienn dowolnego typu plikow V1,V2,...,VN.Procedura ta wykonuje te sanaB musi by skojarzona z dowolnym zewntr czynnoci co procedura Read oraz powoduje p*er .* pli*iem,uywajc procedury Assign.RecSizt cie do pocztku nastpnej linii pliku F.Oznac.* wyraeniem typu Word,okrelajcym rozmit to,e mona uy tej procedury do czytania *ol* kordu w bajtach do zapisu (jeeli nie po nych wierszy,poniewa przy kadym klejny* rozmiaru rekordu,to jest przyjmowane 128 uyciu ReadLn po napotkaniu znaku koca * tw7.Wyraenie ReeSize moe by podane 1 ; 194 P.Michakiewicz,I.wituszak Programowanie w Turbo Pascal T.0 otwarty, to zostanie amknigty, a nastgpnie po, nownie otwaty.Jeeli nazwa pliku skojarzonego shadnia . SeekEoln [ (var F: Tekst) ]; ze zmienn F jest acuchem pustym (wykonano opis . Funkcja daje warto logicn True,jeeli procedur Aasign(F,)),to po wywoaniu Reaet(F* na poycja pliku znajduje si na ostatnin mienna F odnosi sig do standardowego wej*a rviersza,przy czym s ignorowane wsyst. (*lawiatura).Jeeli plik skojarzony e zmienn cje i tabulatory Znajdujce si pred oi jest pliliiem tekatowym,to zostaje otwarty tylho do czytania.Przy dyrektywie kompilatora {$1.* znahiem wiersza lub gdy wynihiem Eoln funkcja IOResult zwraca O,jeli operacja wykOna. warto logiczna True.W przeciwnym w na zostaa poprawnie; w przeciwnym wypadhu ,* daje warto logiczn False.Fjest zmienn funkcja zwraca warto rn od 0. w plikw tekstowych.Jeli pominigt* przyjmowana jest standardowa wejciowa zobacz . Append,Assign,Close,Rewrite,Truncate na plikowa.Funkcja jest uywana prZy c; wartoci numerycznych z plikw tekstowyi powinien by otwarty prZed uyciem tej f shadnia . Rewte (var F [:file; RecSie: Word ] )* Przy dyrektywie kompilatora {$I-} funkcja opis . Powoduje utworzenie i otwarcie nowego pliku o sult zwraca 0,jeli operacja wykonana : nazwie skojarzonej ze zmienn plikow F.Jeeli ' poprawnie; w przeciwnym wypadku funkcj; plik o podanej nazwie ju istnieje,to zostanie ;; ca warto rn od 0. usunigty i wjego miejsee zostanie utworony nowy wynik . Boolean pusty plik.Jeeli F jest ju otwarty,t0ZOstanie zobacz zamknigty,a nastgpnie ponownie otwarty.Po . Eoln,SeekEof otwarciu pliku aktualna pozycja pliku jest usta SetTe2tBf wiona na pocztku tego pustego pliku.F jest zmienn dowolnego typu plikowego i muai by ` skadnia . SetTextBuf (var F: Text; var Buf [; Size: W skojarzona z dowolnym ewngtrznym pliltiem, * opis . Procedura powoduje przypisanie bufora w uywajc procedury Assign.RecSize jest wyrae* niem typu Word,okrelajcym rozmiar rekordu wyjcia do pliku tekstowego F.F jest zm w bajtach do Zapisu (jeeli nie podano rozmiaru " plikow teks*w,Bufjest dowoln zmie rekordu,to jest przyjmowane 128bajtw).Wyra- Size jest opcjonalnym wyraeniem typu V enie RecSie moe by podane tylko dla plikw okrela rozmiar bufora w bajtaeh.Kada m nie zdefiniowanych.Jeeli w pliku skojar*o' plikowa tekstowa posiada bufor,ktryjest nego ze zmienn F jest acuchem pustym rzystywany podczas przesyania danych (wykonano procedurg Assign(F,")),to po wywola ** operacjach Read i Write.Standardowa wit niu Rewrite(F) zmienna F odnosi ai do tego bufora wynoai 128bajtw.Wywoan standardowego wyjcia.Jeeli plik skojarzony * ^ procedury powoduje dla pliku tekstowego F zmienn F jest plikiem tekatowym,to zost.* ng standardowego bufora wejcia-wyjcia na otwarty tylko do zapisu.Przy dyrektywie kompr okrelony przez zmienn Buf Jeeli w wyw0 latora {$I-} funkcja IOResult zwraca 0,je* pominigto parametr Size,to przyjmuje sig operacja wykonana zostaa poprawnie; w przeci*' *o Size O*Buf),tzn.rozmiar bufora Sizf nym wypadku funkcja zwraca warto rn od 0. rwny caemu obsarowi pamigci zajgtemu * zmienn Buf Procedury tej nie powinno si zobacz . Append,Assign,Close,Reset,Truncate stoaowa do plikw otwartych. 196 P. Michakiewicz, I. wituszak Programowanie w Turbo Pascal T.0 aliadnia . Truncate (var F); opia : Procedura powoduje uaunicie wazyatkich elementw zewntrznego pliku (ahojarzonego ze zmienn F), poczwazy od aktualnej pozycji pli*u do koca pliku. Po wykonaniu tej procedury ahtualna pozycja pliku staje aig kocem tego pliku. F jeat mienn plikow dowolnego typu poza p*. kiem tekatowym i musi by akojarzona z dowolnym ewntrznym pliliiem, uywjc pr*e dury Aaaign. Plik powinien by otwarty przed uyciem tej procedury. Przy dyrektywie kompila. tora {$I-} funkeja I OReault zwraca O,jeli opera*a wykonana oataa poprawnie; w przeciwnym wy. padku funkeja zwraca warto rn od 0. obac . Reaet, Rewrite, Seek Write akadnia 1 . Write ( [var F: Text;) P [, P2, ..., PN7 ); opia . Procedura auy do wpisaniajednej lub wicej nit jednej wartoci z podanych zmiennych P,P2,...,PN do pliku F. F jeat plikow zmienn* tekatow. Jeeli F nie zoatao podane, to przyjmowany jeat atandardowy plik wyjciowy. P,P2,...,PN a parametrami obejmujcymi wyraenia wyjciowe, ktrych wartoci zoatan wpiaane do pliku. Kade wyraeie wyjciowe muai by typu znakowego, cakowitego, rzeczywistego, acuchowego, upakowanego acuchowego lub logicznego. Kady paranetr P moe obejmowa rwnie pole o podanej szerokoci i liczbie miejac dzieaitnych. Parametr P ma naatpuje poata: r*yratenie [: szeroko [:miejsca dziesitne )1 Szeroko i miejaca dzieaitne a wyraeniam* typu cakowitego. Parametr azeroko okrela mi' nimaln szeroko pola i musi by wikay od 0. Jeeli warto wyraeniajeat reprezentowana na azerazym polu ni podano w paranetrze szeb' 198 P. Michakiewicz, I. wituszak xoac, o wyprowadzana jeat taka ilo z* ktra jeat niezbdna do przedatawienia te raenia. Jeeli pominito ten par*etr, to wadzana jeat talia ilo znakw, jaka jeat cna do przedatawienia tego wyraenia. Pa> miejaea dieaitne okrela liczb miejsc d* nych (po kropce) w ataopoyeyjnej reprez* liczb rzeczywiatyeh ora muai by wiksz* Parametr miejaca dzieaitne moe by F tylko wtedy, gdy wyraenie jest typu recy go i gdy podano parametr azeroko. Pry ktywie kompilatora {$I-} funkeja IOReault z 0, jeli operacja wykonana zostaa popraw przeciwnym wypadku funkeja wraca w rn od 0. 1. Zmienna typu nakowego: Jeeli pominito parametr azeroko, to do F zostanie wprowadony znak bdcy war wyraenia wyjciowego, w przeciwnym wy* (tn. podano parametr azeroko) przed nt zoatan wprowadzone odatpy o iloci ohre! prez warto (minimalna azeroko -1 zna 2. Zmienna typu cakowitego; Jeeli pominito parametr azeroko, to do F zoatanie wprowadzona dieaitna reprezen wyraenia wyjciowego, w przeeiwnym wyp (tzn. podano parametr azeroko i jeat on wit od dugoci acucha dzieaitnego reprezen cego wyraenie wyjciowego) przed t reprei cj oatan wprowadone odatpy, ta* aby a ko pola wyjciowego bya rwna paramet azeroko. 3. Zmienna typu rzeezywiatego; Jeeli wyraenie ma warto typu rzeczywial do pliku zoatanie zapiaana dieaitna repreze cja tego wyraenia. Format reprezentaeji wyraenia zaley od tego, czy paranetr n aca dzieaitne zoata podany. Jeeli para miejaca dzieaitne pominito (lub podany Programowanie w Turbo Pascal 7.0 = *** **G*"dc* azestnego tacuc] zmiennoprzecinkowego: [ -j . E [+-* pojedyncza cyfrajest rwna 0 tylko w*. dy, gdy wartoci wyr*eniajeat 0, **y *i a azes> cyfra dzieaigtna po krop, paranetr miejsca-dziesitne jest wiksz 4. Zmienna typu acuchowego: Jeeli pominito parametr szeroko, to d F zostanie wprowadzony acuch bdcy ci wyraenia wyjciowego, w prze*wn, padku (tzn. podano parametr szeroko) o: jego wartojest wiksza od dugoci acu przed wprowadzanym do pliku F cig;iem z zostanie wprowadzona odpowiednia ilo pw. cyfra dziesitna po kz*opce, 6.Zmienna typu logcznego: (+- ) znak ^ + ^ lub ** - ^ wykadnika, ynikiemjest wyprowadzenie acucha Tr dwucyfrowy wyl;adnik o podata. False w zalenoei od wartoci wyraenia. wie 10. * zobacz . Read ReadLn WriteLn Litera E oddziela mantys od czci wykadniczej, s*adnia 2 . Write (F,Vl (,V2,...,VN) )- * opis Jeeli pominito parametr szeroko,to przyjmo- procedura suy do wpisania podanych zi wana szeroko pola wynosi 17znakw.Jeeli nych V1,V2,...,VN do pliku F.F jest zmi wa*o parametru szeroko jest mniejsza od 8, plikow pliku skojarzonego z dowolnym to jest przyjmowana za rwn 8 zewz p ikiem dowolnego typu z wyjtl*em * Jeeli podano parametr miejsca-dziesitne * * tekstowego,V1,V2,...,VN s zmiennymi o any nastpujcy format re rezenta- :x zgodnym z typem elementw pliku.Po kado: -* *vicJiiy c*Gment.Yrzy zapis: [j [-] [. ] ' j pliku,gdy aktualna pozyeja plikujeat na k, tego pliku,tzn.gdy wynikiem funkcji Eo*F) gdzie poszczeglne elementy tego fornatu m** warto logiczna True,nastpi rozszerzenie 1 nastpujce znaczenie: plik skojarzony ze zmienn p likow F pow [ ) jeli podana szeroko pola wyjcio* fy otwarty,przy dyrektywie kompilatora j wego jest wiksza ni potrzeba do reprezenta unkcja IOResult zwraca 0,jeli operacja zoa danej liczby,to przed t liczb wystpi uzup** wykonana poprawnie; w przeciwnym wypa* niajce odstpy, funkcja zwraca warto rn od 0. zobacz WriteLn [ - ) znak ^ - ^ wyraenia jeli wyraenie j* ujemne, przynajmniej jedna cyfra, * 200 P.Michakiewicz,I.wituszak Programowanie w Turbo Pascal 7.0 21 n1rr2u u*c ci* uicvnic8iviin i vZn*GjgZd WyWOialf bdzie powodowao bdy.P jeat zmienn t !, akadnia . WriteLn ((var F: Text;) P C,P2,...,PNl l; wakanik,utworzon prze wczeniejaze u opia . Procedura auy do wpiaaniajednej lub wicej ni procedury GetMem.Size jeat wyraeniem o: jednej wartoci z podanych zmienny*h * lajcym wielko w bajtach Zwalnianego oba2 P1,PZ,...,PN do pliku F.Procedura ta wyhonuje * pamici dynamicznej i muai by dokadnie * aame czynnoci co procedura Write oraz powoduje aamo,jak wczeniej przydzielone tej zmie przejcie do pocztku naatpnej lin pliku F.Je. przez procedur GetMem. eli F zoatao podane,to jeat plikow zmienn zobacz . Diapoae,HeapError,GetMem,New tekatow,w przeciwnym wypadku przyjmowany * jeat atandardowy plik wyjciowy.Przy dyrekty*ie GetMem kompilatora f$I-1funkcja IOReault zwraca 0,je* operacja wykonana zoataa poprawnie; w przeciw skadnia . GetMem (var P: Pointer; Size: Word); nym wypadku funkcja zwraca warto rn od 0, opis : Powoduje przydzielenie bloku pamici o roz zobacz . Write rze Size i zwraca wakanik na ten blok w zmie P.Odwoanie do tego bloku naatpuje przez P Procedury i funkcje dynamicznego przydziau pamici: jeatzmienn typu wakanik.Sizejeat wyraen ukrelajcym wielko w bajtach obazaru pa* Dispose dynamicznej,ktory chcemy przydzieli.Naj* akadnia . Dispose (var P: Pointer [,Deatructor ) ); kazy blok pamici,ktry moe by jednoraz przydzielony ze aterty,wynoai 65.528baj opia . Procedura niazczy zmienn wakazywan przez P (64Kb-$8).Jeeli na atercie jeat mniej wolnej oraz zwraca do aterty obazar pamici dynamicznej mici ni podano w Size,to wyatpi * zajmowanej przez t zmienn (tzn.obazar zmien wykonania. _ nej,na ktr wakazuje P).Po wywoaniu t*j * zobacz . Diapoae,FreeMem,HeapError,New. procedury wartO P ataje ai nieokrelona i F: pniejaze wywoanie P^ bdzie powodowao W* *; MagAvail dy.Wywoanie procedury Diapoae z parametre*n DeatructOr stoeuje si do zwalniania pamici z*j- '*** akadnia . MaxAvail; mowanej przez obiekt dynamiczny.Pjeat zmienn* opia . Funkcja podaje w bajtach rozmiar njwika: typu wakanik,utworzon przez wczenieje ,* w danej chwili wolnego,cigego bloku na ste* uycie procedury New. ktry moe by przydzielony przez New lub t zobacz . FreeMem,GetMem,New Mem.Minimalny i maksymalny rozmiar at moe by okrelony za pomoc dyrektywy ko ," *'eeMem latora $M. " akadnia . FreeMem (var P: Pointer; Size: Word); . Longint opia . Procedura niazczy Zmienn wakazywan p**p zobac2 . MemAvail d t0 obazar pamici dynamin* oraz zwraca o s au zajmowanej przez t zmienn (tzn.obazar zni* nej,na ktr wakazuje P) o dugoci okre*lon* przeZ Size.Po wywoaniu tej procedury Wa*'**p 202 P. Michakiewicz, I. wituszak Programowanie w Turbo Pasca! 7.0 skadnia . MemAvail; * zobacz . Ofa, Ptr, Seg opia . Funkeja podaje aum romiarw wszystkich wol. Assigned nych blokw (w bajtach) na atercie.Naley ;* zauway,e w przypadku fragmentacji aterty w shadnia . Asaigned (var P); suma rozmiarw wazystkich wolnych blokwjest t opia . Funkcja okrela, cy zmienna t* rna od najwigkazego wolnego cigego blohu. wska1nikowego lub proceduralnego wskazuje Minimalny i makaymalny rozmiar sterty noe adres puaty nil.Funkcja daje warto True,j by okrelony pomoc dyrektywy kompilatora zmienna P nie wskauje na nil.Natomiaatje wakazuje na nil,to funkcja zwraca warto Fa wynik . Longint wynik . Boolean zobac . MaxAvail CSeg 5 New skadnia . CSeg; ahadnia . New (var P: Pointer [,Init: Constructor ] ) opia . Wynikiem funkcji jeat aktualna warto rejes opis . Tworzy now zmienn dynamiczn i ustawia CS,tzn.adrea aegmentu pamici awierjc zmienn wakanikow P na t zmienn (inaczej ; eegment kodu,w ktryn wywoano funkcj CE pod zmienn wakanikow P podstawia adres k . Word utworzonej zmiennej dynamicznej).Odwoanie do zobacz . DSeg,SSeg tej zmiennej dynamicznej naatpuje prez P^.P jeat zmienn typu wakanik. DSeg Rozmiar przydzielanego bloku pamici jest za1e- skadnia . D Seg; ny od rnzmiaru zmiennej dynamicznej,na ktr wakazuje zmienna wakanikowa P.Wywoanie opia . Wynikiem funkcji jest aktualna warto rejes procedury New z parametrem Init atoauje si do DS,tzn.adres aegmentu pamici zawierajc* zainicjowania zmiennej dynamicznej typu obie aegmentdanyeh. ktowego za pomoc odpowiadajcego danemu wynik . Word obiektowi konatruktora.Jeeli na stercie nie ma do wolnej pamici,to wyatpi bd wykonania. zobacz . CSeg,SSeg zobacz . Diapoae,FreeMem,GetMem,HeapError Ofs akadnia . Ofs(X); Fukcje wskikowe i dresowe: opia . Funkcja zwraca wielko przesunicia obiekt Addr wgldem pocztku segmentu pamici.X m* skadnia . Addr (X); by dowoln mienn,nazw procedury lub fi kcji. opis . Funkcja zwraca adres obiektu X.X moe by . Word dowoln zmienn,nazw procedury lub funkeji zobacz . Addr,Seg 204 P.Michakiewicz,I.wituszak Programowanie w Turbo Pascal 7.0 2 skadnia . Ptr (Seg, Ofa: Word); opis Funkcja zamienia adres aegmentu i przeauni* w ramach aegmentu na warto typu wskanikowego.Seg i Ofa a wyraeniami typu Word,gdzie Seg oznaca adrea segmentu pami* a Ofa przesunicie wewntrz tego segmentu. . Pointer zobacz . Addr,Ofa,Seg Seg akadnia : Seg (X); opia . Funkcja zwraca adres aegmentu pamici,w k*. rym jeat obiekt X.X moe by dowoln zmienn, nazw proeedury lub funkcji. wynik . Word zobacz . Addr,Ofa SPtr akadnia : Sptr; opia : Wynikiem funkcji jeat aktualna warto rejeatru SP,tzn.przeaunicie wakanika atoau wewnt2 aegmentu stoau. wynik : Word zobacz . SSeg S Seg akadnia . SSeg; opis : Wynikiem funkcji jeat aktualna warto rejeatru SS,tn.adres aegmentu pamici awierajeego segment stoau. wynik . Word zobacz . SPtr,CSeg,DSeg 206 P. Michakiewicz, I. wituszak Egclude akadnia . Exclude (var S: aet ofT; I: T) opis. . Procedura auy do wyk1uczenia elementu I zbioru S.S jest zmienn typu zbiorowego,I j* wyraeniem typu zgodnego z podatawowym pem S. Naley zauway, e procedu Exclude(S,I) odpowiada instrukcji: S:=S-(I) ale jest od niej bardziej efektywna. zobac . Include *llChar akadnia . FillChar (var X; Count: Word; Va1ue) opis . Procedura wypenia okrelon liczb bajtw C unt podan wartoci Value,poczwszy c pierwazego bajtu zajtego przez zmienn X.Xje zmienn dowolnego typu,Countjest wyraenie1 typu Word,a Value jest dowolnym wyraenie* typu porzdkowego.Dobrze jeat,jeli to tyl* moliwe,okrela parametr Count przy pomoc funkcji SizeOf zobacz . Move Hi akadnia : Hi (X) opia . Funkcja zwraea w poataci wart0*ci be znak1 wa*t0 bardziej znaczcego bajtu podanego wy raenia X.X jest wyraeniem typu Integer lul Word. . Byte zobacz : Lo,Swap Programowanie w Turbo Pascal 7.0 skadnia . Include (var S: aet of T; I: T); opis . Procedura suy do doezenia elementu I do zbioru S. S jest zmienn typu zbiorowego, I jest wyraeniem typu zgodnego z podstawowym ty. pem S. Naley zauway, e procedura Include(S,I) odpowiada instrukcji: S:=S+[I] ale jest od niej bardziej efektywna. zobacz : Exclude Lo skadnia . Lo (X); opia . Funkeja wraca w postaci wartoci bez naku wartomniej znaczeego bajtu podanego wyrae nia X. Xjeat wyraeniem typu Integer 1u1 Word, wynik : Byte zobacz : Hi,Swap Move skadnia . Move (var Source,Dest; Count: Word); opis . Procedura kopiuje okrelon liczb bajtw Count, poezwszy od pierwsego bajtu zajtego przez zmienn Source do miejsca pamici zajtego prze zmienn Dest,poczwszy od pierwsego bajtu tej zmiennej.Source i Dest s zmiennymi dowolnego typu,Count jest wyraeniem typu Word.Dobrze jest,jeli to tylko moliwe,okreia parametr Count przy pomocy funkcji SieOf. zobacz . FillChar ParamCount skadnia . ParamCount; opia : Funkcja podaje licb parametrw przekazany* w linii komend do programu podczasjego uz'u*s miania. Jako aeperatory midy przekazywanym parametrami au tabulatory i spacje. 208 P. Michalkiewicz, I. wituszak zobacz . ParamStr ParamStr skadnia . ParamStr (Index); opia . Funkcja podaje warto parametru o numerze r= Index,przekazanego w linii komend do programu podczasjego uruchamiania.Indexjest dowolnym wyraeniem typu Word.Indeka pierwazego para- metru ma warto 1,za ostatniego ParamCount. Gdy inedka bdzie rwny zeru,to funkcja zwrci ciek doatpu do plikuj wywoujcego,cnie z nazw tego pliku. fF, W 1 . S n * * zobacz . ParamCount Random * skadnia . Random ( (Range: Word) ]; opia . Wyni*iem funkcjijest liczba loaowa. Jeeli zakrea Range nie zoata podany, to wartoci funkcji jest liczba loaowa typu rzeczywistego z predziau [0,1). Natomiast jeeli podano zakrea Range, to wartoci funkcji jeat liczba loaowa przedziau [O,Range). Dla zakreau Range rwnego 0 funkcja zwraca 0. Range jeat wyraeniem typu Word. Wywoanie tej procedury powinno by poprzedzone ainicjowaniem generatora liczb loaowych procedur Randomize. zobacz . Randomize Randomize akadnia . Randomize; opia . Procedura inicjuje wbudowany generator liczb losowych, ktrego "zarodek" prechowywany jest w staej inicjowanej RandSeed. Wartoci loaowe a uzyakiwane zegara systemowego. zobacz : Random Programowanie w Turbo Pascal 7.0 209 akadnia . SizeOf (X); opia . Funkcja ohrela rozmiar w b*jtach pamici aj, mowanej przez X.X moe by nazw zmiennej lub identyfikatorem typu.Funkcji tej powinno ai za, waze uywa przy okrelaniu rozmiaru pamici w FillChar, Move, GetMem itp. wynik . Word Swap akadnia . Swap (X); opia . Funkcja zamienia midzy aob bardziej znaczcy bjt z mniej znaczcym bajtem podanego wyrae. nia X.Xjeat wyraeniem typu Integer lub Word. zobacz . Hi,Lo 'I*peOf akadnia . TypeOf (X); opia . Wartoci funkcji jeat wakanik tablicy metod wirtualnych (VMT) typu obiektowego okrelonego przez X.Funkcja ta moe by atoaowana tylko na tych obiektaeh,ktre poaiadaj tablc metod wir tualnych (VMT); wazyatkie inne typy daj w wyniku bd.X moe by identyfikatorem typu obiektowego lub zmienn typu obiektowego. wynik . Pointgr UpCase akadnia . Upcaae (Ch: Char); opia . Funkcja auy do zamiany maych liter na dut& Chjeat dowo1nyn wyraeniem typu Char.Dozw* lone znaki Ch a z zakreau a..z. wynik . Char 210 P.Michakiewicz,I.wituszak STAE 1.1. Stae trybu tekatowego: staa warto opis BW40 0 40x25czarno-biay CGA,EGA,VGA BWBO 2 80x25 czarno-bay CGA, EGA, VGA Mono 7 80x25 czarno-biay Herculea C040 1 40x25 kolor CGA,EGA,VGA C080 3 80x25 kolor CGA,EGA,VGA Font8x8 256 EGA/VGA 43/50wierazy C40 C040 zapewnienie zgodnoci z TP 3.0 C80 C080 zapewnienie zgodnoci z TP 3.0 obacz : zmienna DirectVideo 1.2.Stae reprezentujce kolory: staa warto kolor Black 0 czarny Blue 1 niebieaki Green 2 zielony Cyan 3 turkuaowy ' Red 4 czerwony Magenta 5 karnazynowy " Brown 6 brzowy LightGray 7 jaanoazary DarkGray 8 ciemnoazary LightBlue 9 jaanoniebieaki Programowanie w Turbo Pascal 7.0 211 l LightCyan 11 jasnoturkusowy akadia . var CheckSnow: Boolean* Lightfted 12 jaanoczerwony opis . Zmienna pozwala na wczanie i wyczanie troli efektu "nieenia" wystpujcego w ka2 LightMagenta 13 jasnokarmazynowy CGA podczas zapisu do pamici ekranu.Zjavc Yellow 14 ty tu nie wyatpuje na innych katach graf1cz White 15 bia Standardowo zmienna ta ma wartn logi True i efekt "nieenia" dla tej wartuci nie w, Blink 128 migotanie puje.W nowszych kartach CGA mona wy* kontrol efektu "nieenia" przez uatawienie * Stae s uywane przez proeedury TextColor ** *j zmiennej na Falae,co pozwoli na i TextBackground. przyapieszene operacji pisania na ekranie.V* czenie kontroli powinno by atosowane obacz . TextBackground, TextColor, zmienna TextAttr pocztku pro*ramu i po kadym wywoaniu ceduxy TextMode (w celu poprawienia sybH ZMIENNE uperacji pisania na ekranie). * zobacz . zmienna DirectVideo CheckBreak Direct Video akadnia : var CheckBreak: Boolean; akadnia . uar DirectVideo: Boolean; opia . Zmienna jest uywana do kontroli przycinigcia klawiszy Ctrl+Break.Jeli CheckBreak ma war- * opis . Warto logicna True tej zmiennej powodujf to logicn True,to przycinigeie Ctrl+Break procedury Wte i WriteLn,piac do plikw, apowoduje przerwanie wykonywania programu jaronych CRT,bd umieazeza zn (atandardowo jeat ustawiona na True).Pryci- bezporednio w pamici ekranu, pominic nigcie Ctrl+Break,gdy CheckBreak ma wartoE odwoa do BIOS-u.Warto logicna Fa1se logiczn Falae,nie wywoa adnych reakcji. zmiennej powoduje,e procedury Write i * zobacz : KeyPresaed,ReadKey,zmienna moduu SystemteLn,iazc na ekranie,bd si odwoywa1 SavelntlB BIOS-u. zobacz . zmienna CheckSnow CheckEOF * LastMode akadnia : var CheckEOF: Boolean; opia . Zmienna jest uywana do kontroli koca pliku akadnia . var LaatMode: Word; znakowego.Jeli CheckEOF ma warto logiczn : * opis . W t zmienn jeat wpiaywany aktualny tryb True,to przycinicie klawiazy Ctrl+Z,podczas * kstowy przy kadym wywoaniu proced* czytania z pliku akojarzonego z ekranem,apowo- TextMode. * k*; duje wygenerowanie koca pliku.Przycinicie obacz Ctrl+Z,gdy CheckEOF ma warto logiczn F*- TextMode se,nie wywoa adnych reakcji (standardowojest uatawiona na Falae). 212 P. Michakiewicz, l. wituszak Programowanie w Turbo Pascal 7.0 i irvvuuv*ri i r virnuvr* TeztAttr skadnia var TextAttr:Byte; Asgi*Crt W zmiennej a przechowywane aktualne atrybuty s*adnia . AaaignCrt (var F: Text); opis te*atu.Atrybuty tekstu mona zmieni,zapisuj * opia : Procedura auy do gkojarzenia plikw teksto- odpowiednie wartoci bezporednio do zmiennej ** wych F z urzdzeniem CRT.Procedura ta TextAttr.Poata bitowa tej zmiennej jest nastpu. 1' wykonywana jegt podobnie do procedury Aaaign, jca: ale nie podaje ai w niej nazwy pliku.Pliki teketo- we s automatycznie kojarzone CRT.Uycie tej ? 6543210 procedury zapewnia gzybaze wyjcie i wejcie ni gdzie: przy uyciu gtandardowego wyjcia i wej*cia. - bit 7jeat bitem migotania, ClrEo1 - bity 6-4 a bitami okrelajcymi kolor ta, g**adnia : ClrEol; - bity 3-0 g bitami okrelajcymi kolor tekatu. opia . Procedura auy do uaunieia wszyst*ieh znakw od aktualnej poycji kursora do koca biecej zobacz : LowVideo, NormVideo, TextBackground, TextCo- linii. Po wykonaniu tej operacji pozycja kursora lor nie ulega zmianie. WindMin zobacz : ClrScr, Window ahadnia . var WindMin: Word ClrSCr opig . W zmiennej tej a wpiaywane waprzdne lewego a*adnia . ClrScr grnego rogu biecego okna. Warto tajest usta- wiana przez procedur Wndow. Wsprzdna X opia . Proeedura auy do wyczyaczenia zawartoci aktualnego oka. Po wykonaniu tej operacji pozyjegt pamitana w modszym (mniej znac c l , , cja kursora bdzie znajdowa si w lewym grnym bajcie, natomiast waprzdna Y jeat pami*a f: rogu okta. Jeeli przed wywoaniem tej procedury wbajcie atarszym. nie okrelono rozmiaru okna (procedura Winzobacz : TextMode dow), to wyczysczona zostanie awarto caego ekranu. Po wykonaniu tej procedury kolorem ta WindMaz aktualnego okna staje gi aktualny kolor ta shadnia . var WindMax: Word (godnie z ustawionym w procedurze TextBackopia W zmiennej tej a wpiaywane wgprdne prawe ground). go dolnego rogu biecego okna. Warto ta est zobac ClrEo1 Window ugtawiana przez procedur Window. Wsp**d* na X jegt pamitana w modszym (mniej : Delay znaccym) bajcie, natomiaat waprdna Y jeB* '* gkadnia . Delay (Ms: Word); pamitana w bajeie atarazym. opig . Procedura powoduje zatrymanie wykonywania zobacz : TextMode programu na okrelon liczb miligekund Ms. Ma jegt wyraeniem cakowitym typu Word. 214 P. Miakiewicz, I. wituszak Programowanie w Turbo Pascal 7.0 skadnia . DelLine; skadnia . KeyPreased* przez aktualn o kuraora.W * opia Funk a zwraca warto lo czn True,je gy y nywania tej operacji wazyatliie wieraze znajdujce ata na klawiaturze nacini t dowoln h w przeciWnym wypadku daje warto li jed p wi d g a k c je dodaw o * Falae. Funkcja nie wykrywa klawiszy przi nowy wieraz o akt 1 * 1 cia, np. Shift, Alt, Numlock itp. ua nym o orze ta. odpowiadajcy nacinigtemu *lawiazowi p zobac . InaLine,Window je w buforze klawiatury i aby ponoWnie u G*otoXY warto logiczn Falae tej funkcji,naley ; wa funkcjg ReadKey. sliadnia GotoXY (X,Y: Byte); ' w . Boolean opia . Procedura pozwala ustawi kursor w podanych zobacz . ReadKey wsprzgdnych aktualnego okna okrelonych LowVideo przez X i Y. Xjeat numerem kolumny,a Yjeat numerem wier. a*adna . LowVideo aza. Lewy grny rg ohna ma wsprzdne (1,1). : Procedura powoduje zmniejszeie jaakr* zobacz Wlie*X * y znaku poprzez zmiang ataej reprezentuj* ere,Window lor tekatu w zmienne' TextAttr * Z WartOCl : HighVideo na 0-7. aliadnia . HighVideo; obacz . HighVideo,NornVideo,TextBackground, Color opia . Procedura powoduje wikazenie jaskrawoci NormVideo znaku poprzez zmiang staej reprezentujCej ko lor tekatu w zmiennej TextAttr z wartoci 0-7na akadnia NormVideo* 8-15. zobacz LowVideo N V d : Procedura powoduje uatalenie ta*iego kolor , orm i eo,TextBackground,TextCo wietlanych nakw i ich ta 'a*i b lor ,) y pOC* programu,poprZez odtworzenie warto* at; InsLine tu video bajtu predefiniowanj zmiennej Text akadnia . InaLine ' ; zobacz . HighVideo,LowVideo,TextBackground,Te* lor opia . Procedura pozwala watawi puaty wieraz w mi*' NoSound acu wskazywanym prez aktualne poOenie kursora.W czaaie wykonywania tej operacji wazy' skadnia No Sound stkie wiersze najdujce si po wstawianym ; j : Procedura powoduje wyczenie wewngtrz: wierazu s preauwane o eden wiera w d. zobacz DelLine,Window goniczka. zobac . Sound I * 216 P.Michakiewicz,I.wituszak Pr ogramowan*e w Turbo Pascal 7.0 akadnia . ReadKey; akadnia . TextColor(Color:Byte) opia . Funkeja auy do wezytania z klawiatury jednego opia : Procedura auy do uatawiania koloru wywietl* znaku.Wczytany znak niejeat wyprowadzany na nych znakw.Color jest wyraeniem typ ekran monitora.Jeeli przed wywoaniem tej fun- cakowitego z przedziau 0-15,odpowiadajcyz keji wartoci funkeji KeyPressed bya warto * etaej koloru tekstu.W predefiniowanej miennf logiczna True,to wynikiem funkeji ReadKey bg. * TextAttr bitom 0-3jest przypiaywana podan clzie nak najdujcy si w buforze klawiatury.W warto Color.Jeli warto Colorjest wiksa o przeciwnym wypadku (tzn.wartoci funkeji Key- 15,to jeat ustawiany bit migotania (7bit) zmien Preased bya warto logiczna False) funkej* nej TextAttr; w przeeiwnym wypadku (tn ReadKey bdzie ocekiwaa na nacinicie dowol- Color