Q Ukoncuje editovanie daneho riadku, vsetky vykonane
zmeny budu ignorovane a riadok zostane v stave, v akom
bol pred editovanim.
R RESTORE riadok do povodnej polohy, vsetky zmeny budu
zabudnute.
L LIST zbytok editovaneho riadku. Zostavate v editacnom
rezime a kurzor smeruje na zaciatok riadku.
K KILL (vymazat) znak na aktualnej pozicii kurzora.
Z Vymazat vsetky znaky, pocinajuc (a vratane) aktualnou
polohou kurzora az po koniec riadku.
I INSERT (vlozit) znaky na aktualnej poloe kurzora.
Zostanete v tomto sub-rezime az pokial nestlacite
ENTER. Tym sa vratite do hlavneho editovacieho rezimu a
kurzor bude smerovat za posledny vlozeny znak. Ak sa
v ramci tohoto sub-rezimu pouzije DELETE, vymaze sa
znak nalavo od kurzora. V tomto rezime sa kurzor
zmeni na "*".
X Presunutie kurzora na koniec riadku a automaticky
prechod do sub-rezimu INSERT, ktory bol prave opisany.
C CHANGE znak na aktualnej pozicii kurzora a prechod na
na nasledujuci znak. Nasledujuce znaky, ktore napisete,
prepisu povodne znaky v riadku az pokial nestlacite
ENTER, co Vas vrati naspat do editovacieho rezimu a
kurzor bude nastaveny za posledny Vami zmeneny znak.
Klavesou DELETE v tomto rezime iba vratite kurzor
o jeden znak naspat. V rezime CHANGE sa zasa kurzor
zmeni na "*".
F FIND (vyhladat) nasledujuci vyskyt retazca "find",
ktory bol predtym definovany s pouzitim prikazu "F",
opisaneho neskor. Tento sub-prikaz ukonci automaticky
editovanie na aktualnom riadku (so zachovanim zmien),
za predpokladu, ze nebude zisteny dalsi vyskyt retazca
"find" v aktualnom riadku. Ak bude vyskyt retazca
"find" zisteny v jednom z nasledujucich riadkov (v
ramci predtym specifikovaneho rozsahu riadkov),
bude opatovne inicializovany rezim editovania pre
riadok, v ktorom bol retazec najdeny. Pripominame, ze
kurzor smeruje vzdy na start najdeneho retazca.
S SUBSTITUTE (nahradit) predtym definovany retazec
"substitute" za retazec "find", kde sa nachadza kurzor,
a potom vyhladat nasledujuci vyskyt retazca "find".
Spolocne s podprikazom "F" sa pouziva ma prehladanie
textoveho suboru a podla vlastneho vyberu na mahradu
vyskytov retazca "find" za retazec "substitute".2.14. VYHLADANIE RETAZCA Prikaz: F m,n,f,s
Text v rozsahu od riadku m po n bude prehladany na zistenie
vyskytu retazca f - retazca "find". Ak vyskyt retazca bude
zisteny, bude zobrazeny prislusny riadok textu a bude
inicializovany rezim editovania - vid predchadzajuci text. Potom
mozete pouzit prikazy v ramci editacneho rezimu a vyhladavat
nasledovne vyskyty retazca f v definovanom rozsahu riadkov alebo
na nahradenie retazcom "s" (retazec "substitute") aktualneho
vyskytu retazca f; vid prikaz EDIT opisovany vyssie.
Pripominame, ze rozsah riadkov a dva retazce mozeme nastavit uz
predtym akymkolvek inym prikazom, takze bude postacovat ak
zadame jednoducho F (ENTER).
2.15. PRIKAZY PRE PRACU S PASKOU A MICRODRIVE
Tieto prikazy vyuzivaju rovnaku jednoduchu schemu ako
kompilator na rozlisenie suborov na kazete a na Microdrive. Ak
by ste chceli pouzit subor na Microdrive, povedzme "FRED", ktory
sa nachadza na Microdrive 2 musite pred nazov suboru zadat cislo
mechanizmu a dvojbodku - teda:
2:FRED
2.16 VYSTUP TEXTU NA KAZETU Prikaz: P m,n,s
ALEBO MICRODRIVEText od riadku m po n bude zaznamenany na kazetu alebo
Microdrive. Subor bude mat nazov, zadany retazcom s. Pamatajte
na to, ze tieto parametre mozu byt nastavene predchadzajucim
prikazom. Cisla riadkov sa do suboru neprenasaju. Predtym, ako
stlacite klavesu ENTER presvedcte sa, ze Vas magnetofon je
zapnuty a prepnuty na nahravanie.
2.17. NACITAVANIE TEXTU Z KAZETY Prikaz: G ,,s
ALEBO MICRODRIVENa kazete alebo Microdrive sa vyhladava subor s nazvom suboru s;
po jeho najdeni sa subor nahra za koniec textu, ktory uz je v
pamati.
Cisla riadkov sa riadkom suboru priraduju v poradi, v akom sa
riadky nacitavaju. Cisla riadkov sa zvysuju s krokom 10. Ak v
pamati nie je ziadny text, zacina sa cislovanie riadkov od 10. V
opacnom pripade sa text z pasky pripoji na koniec textu, ktory
sa uz v pamati nachadza.
2.18. PRIKLAD PRACE S EDITOROM
Ako jednoduchy priklad prace s editorom, ktory sa dodava s
kompilatorom jazyka C si napiseme kratky program, a pokusime sa
ho skompilovat. Nebudeme podrobne vysvetlovat samotny program,
pretoze to v danom mieste nie je dolezite.
Nahrajte do pamate system C a inicializujte editor stlacenim
EDIT a ENTER. Dostanete znak ">" a blikajuci kurzor "L". Zadajte
I10,10
aby ste spustili zadavanie textu na riadku 10 s krokom 10. Cislo
riadku sa na obrazovke zobrazi spolocne s medzerou a kurzorom.
Zadajte riadky, ktore sa uvadzaju v dalsom texte a stlacte ENTER
na konci kazdeho riadku. Prazdne riadky sa do textoveho suboru
zadavaju jednoduchym stlacenim ENTER bez textu.
10 /* Priklad prace s editorom */
20
30 #define EOF -1;
40
50 main()
60 {
70
80 int c,i,count,inword;
90
100 char s[20];
110
120 static int fp;
130
140 do
150 {
160 printf("Filename: ");
170
180 i = 0;
190 while ((c=getchar()) != '\n')
200 {
210 s[i++] = c;
220 if (i==19) break;
230 }
240
250 s[i] = '\0';
260
270 fp = fopen(s,"r");
280 if (fp==0)
290 printf("\nFile not found!\n");
300 }
310 while (fp==0)
320
330 count=inword=0;
340
350 while ((c=getc(fp)) != EOF)
360 {
370 if (i=isspace(c))
380 inword = 0;
390 else if (inword==0)
400 {
410 inword = 1;
420 ++count;
430 }
440 }
450 fclose(fp);
460
470 print("\nWords: %d\n",count);
480 }Tento program obsahuje styri chyby, z ktorych tri mozu byt
opisane ako "syntakticke chyby". Pozrite sa, ci ich dokazete
vyhladat predtym ako budete postupovat dalej.
Po zadani celeho programu vystupte z rezimu INSERT stlacenim
EDIT a prejdite do kompilatora zadanim "C" a stlacenim ENTER.
Teraz skompilujte program zadanim "#include" a stlacenim ENTER.
Prva vec, ktoru uvidime je ze sa kompilacia ukonci na riadku,
obsahujucom vyvolanie fopen s chybou 32 - "zla kombinacia
typov". Skuseni programatori v jazyku C okamzite zbadaju, ze
deklaracia fp v riadku 120 je chybna - ma to byt pointer
(smernik) takze musime pridat priamo pred fp hviezdicku.
Spravime to tak, ze prejdeme do editora stlacenim ENTER a
vyvolanim editora standardnym sposobom. Teraz editujeme riadok
120 tak, ze napiseme:
E120 (ENTER)Na obrazovke sa objavi tento riadok spolocne s cislom riadku a
pod nim bude zasa cislo riadku za ktorym nasleduje blikajuci
kurzor. Chceli by sme postupovat po riadku a vlozit "*" pred fp,
takze viackrat stlacte CAPS-SHIFT 8 (>= na Spectrum+) az pokial
sa kurzor nedostane priamo pod "f" v "fp". Teraz stlacte "i" a
pozorujte ako sa kurzor zmeni na blikajuce "*", cim indikuje
sub-rezim INSERT. Teraz zadajte hviezdicku a stlacte ENTER.
Kurzor zostava tam kde bol predtym, avsak zmeni sa opat na
blikajuce "L". Znovu stlacte ENTER a zmeneny riadok sa prepise v
tvare, v akom bol zobrazeny na obrazovke. Kurzor sa vracia do
hlavneho editora a pocitac caka na dalsi prikaz.
Vratte sa naspat do kompilatora ("C" a ENTER) a pokuste sa
skompilovat program znovu. Ide to viacmenej bez problemov ale
nahle sa zastavi s chybou 0 - "chybajuce ;" mapravo od
zobrazenia "count=". Je tomu tak preto, ze "while" bezprostredne
nad tymto riadkom je ukoncovacia podmienka slucky (cyklu) "do ..
while" a na rozdiel od jednoduchych sluciek "while" musi byt za
podmienkou while bodkociarka. Tento riadok budeme teda musiet
editovat. Pouzite prikaz "E" na editovanie riadku podobne ako
predtym, avsak namiesto krokovania po riadku stlacte "X". Kurzor
skoci priamo na koniec riadku a automaticky inicializuje
sub-rezim INSERT. Indikuje sa to zmenou kurzoru na blikajucu
"*". Teraz mozeme zadat znaky na koniec riadku, takze zadajte
bodkociarku a stlacte ENTER dvakrat aby ste sa dostali naspat do
hlavneho editora.Znovu skompilujte program. Tentokrat sa kompilator zastavi na
riadku 350 s chybou 0 - "chybajuca ")"". Preco? Je to dost
zaludna chyba, ktora sa casto stava programatorom, ktori su
zvyknuti na iny jazyk, napriklad na Pascal. Je sposobena
instrukciou #define na riadku 30.
#define umoznuje pouzitie "makier" v programoch v jazyku C. Z
tohoto hladiska je makro akykolvek usek textu od prveho
oddelovaca za identifikatorom az po nasledujucu znacku (marker)
konca riadku. Vzdy ked sa v programe vyskytne tento
identifikator bude nahradeny za cely text makra. Znamena to ze
vzdy ked pouzijeme "EOF" bude nahradene zbytkom riadku - "-1;".
A v tom je prave problem - bodkociarka za -1 zmiatla kompilator.
Nesmie tu byt, takze ju musime editovat. Ukazeme si postup,
ktory nie je na prvy pohlad normalnou metodou editovania, ale
bude to postup najrychejsi.
Zadajte E30 (ENTER) na editovanie riadku 30, potom stlacte "X"
ako by ste inicializovali sub-rezim INSERT pre koniec riadku.
Teraz stlacte DELETE (CAPS-SHIfT 9) na vymazanie bodkociarky a
stlacte ENTER na zrusenie subrezimu INSERT. Stlacte ENTER este
raz aby ste zrusili editovaci rezim. Ak by sme sa teraz pozreli
na riadok uvideli by sme, ze uz nema bodkociarku, ktora bola
vinnikom nasich potiazi. Takze teraz si skusime kompil.este raz!
Bezi to! Alebo aspon to tak vyzera. Zatial program NESPUSTITE,
ale stlacte tlacidlo SYMBOL-SHIFT 1 aby ste kompilatoru ukazali
koniec suboru. Vyskoci dalsia cyba - chyba 27 -"nedefinovana
premenna(-e)". Vinnikom je identifikator "print" na riadku 470.
Samozrejme ze by to mal byt "printf". Editujte riadok 470 tak,
ze pouzijete E470 (ENTER) a doplnte prislusne "f" na spravne
miesto pouzitim postupov, o ktorych sme tu uz hovorili.
Zaverecna kompilacia uz vyda bezchybny program - aspon z
hladiska kompilatora - a tento mozete spustit stlacenim
SYMBOL-SHIFT 1, za ktorym nasleduje "Y". Spocita Vam slova v
zadanom subore.
Vsetky dalsie moznosti editora su takisto svojim sposobom
uzitocne a bude to velmi dobry napad ak s nim budete
experimentovat tak casto, ako je to len mozne. Pretoze editor je
natolko vykonnym prostriedkom na zostavovanie programu, je
zivotne dolezite vediet pouzivat editor lahko a doverne.
4.KNIZNICA STANDARTNYCH FUNKCII
Kniznica funkcii k C kompilatoru ,zvysujuca jeho moznosti,je
vytvorena podla vzoru inych UNIX C kniznic, preto mnohe z
kniznicnych modulov su popisane aj v KERNIGHAM & RITCHIE
.Kniznica obsahuje moduly ilustrujuce moznosti jazyka a takisto
aj moduly vyuzivajuce prednosti ZX-SPECTRUMU (grafiky a zvuku).
Moduly rozdelujeme do troch katagorii:
-1. su zabudovane v kompilatore a mozu byt priamo volane
programom napr. printf
-2. ak ich chce uzivatel pozivat musi includovat kniznicny modul
"stdio.h" (#include "stdio.h") ,ktory je dodavany na paske s
kompilatorom. Poskytuje napr. funkcie min,max a funkcie definuj-
uce typy a konstanty .
-3. su tiez dodavane na paske ako zdrojovy C subor "stdio.lib" .
Kazdi uzivatel pouzivajuci funkcie z tohoto suboru si ho musi
zaviest #include ?stdio.lib?
4.ARITMETICKE FUNKCIE
4.1 int max(n,.....) auto
Vracia hodnotu najvacsieho integer argumentu. Funkcia obsahuje
lubovolny pocet argumentov.
4.2 int min(n,....) auto
Opak funkcie max, vracia najmensiu hodnotu z argumentov,
takisto obsahuje lubovolny pocet argumentov.
--4.2,4.1 sa nachadzaju v stdio.h
4.3 int abs(n)
Vracia absolutnu hodnotu argumentu.
Pracuje obdobne ako sgn funkcia v BASICU ,cize vracia 1 ak n>0
0 n==0
-1 n<0Nasledujuce funkcie umoznuju pristup k pamatovym bunkam .
Skusenesi programatori nemusia vyuzivat standartne funkcie , ale
mozu si vytvorit vlastne, site na mieru.
4.5 char peek(adres)
Vracia hodnotu bytu ulozeneho na adrese "adres"
4.6 poke(adres,hodnota)
Vlozi nizsich 8 bitov "hodnota" na adresu "adres". Kedze tato
funkcia nedava vysledok typ moze byt lubovolny.