0000000000000000000000000000000000000000000000000000000000000000
0 0
0 0
0 0
0 C COMPILER 0000000000000000000 0
0 000000000000000000000 0
0 00000000 00000000 0
0 0000000 0000000 0
0 0000000 0
0 0000000 0
0 0000000 0
0 0000000 0
0 0000000 00000000 0
0 00000000 000000000 0
0 0000000000000000000000 0
0 00000000000000000000 0
0 0
0 0
0 HISOFT 180 Hight Street North Dunstable, Beds. LU6 1AT 0
0 0
0000000000000000000000000000000000000000000000000000000000000000
O B S A H
U V O D 4
Spustenie - TOTO SI PRECITAJ AKO PRVE 5
SPECTRUM klavesnica 6
Subory na Spectre 6
Ukazky programov 8
Bibliografia 11 E D I T O R 11
UVOD DO EDITORA Prikaz 11
VKLADANIE TEXTU I m,n 13
LISTOVANIE TEXTU L m,n 14
OVLADANIE DLZKY LISTINGU K n 14
TLACENIE NA PRINTER W m,n 14
ZOBRAZENIE DEFAULT HODNOT V 14
NASTAVENIE ODDELOVACA S,,d 14
NAVRAT DO C COMPILERA C 15
NAVRAT DO BASICA B 15
ODSTRANENIE RIADKU D <m,n> 15
PRESUN RIADKU M m,n 15
PRECISLOVANIE RIADKOV N <m,n> 15
EDITOVANIE RIADKU E n 15
HLADANIE RETAZCA F m,n,f,s 16
PRIKAZY PRE MAGNETOFON A MIKRODRAJVY 17
UKLADANIE TEXTU NA MAGNETOFON P m,n,s 17
NAHRAVANIE TEXTU Z MAGNETOFONU G,,s 17
PRIKLAD POUZITIA EDITORA 17 HISOFT C STANDARDNA K N I Z N I C A 20
int max (n,....) auto 20
int miN (n,....) auto 20
int abs (n) 20
int sign (n) 20
char peek (address) 46 20
poke (address,value) 20 int atoi (s) 21
qsort (list,num_items,size,cmp_func) 21
char *strcat (base,add) 21
unsigned strlen (s) 21
int isalnum (c) 21
int isalpha (c) 22
int isascii (c) 22
int iscntrl (c) 22
int isdigit (c) 22
int islower (c) 22
int isprint (c) 22
int ispunct (c) 22
int isspace (c) 22
int isupper (c) 22
char tolower (c) 22
char toupper (c) 22
char *callock (n,size) 22
free (block) 22
char *sbrk (n) 22
swap (p,q,length) 22
move (dest,source,length) 23
FILE *fopen (name,mode) 23
int fclose (fp) 23
int getc (fp) 23
int ungetc (c,fp) 23
int putc (c,fp) 23
int getchar () 24
int putchar (c) 24
exit (n) 24
char *fgets (s,n,fp) 24
fputs (s,fp) 24
char *gets (s) 24
puts (s) 24
printf (control,arg1,arg2,..) 24
fprintf (fp,control,arg1,...) 25
sprintf (s,control,arg1,....) 25
int scanf (control,arg1,arg2,..) 25
int fscanf (fp,control,arg1,...) 26
int sscanf (s,control,arg1,....) 26
int rawin () 26
int keyhit () 26
_exit (n) 26
long_multiply (c,a,b) 26
long_add (c,a,b) 26
long_init (a,n1,n0) 26
long_set (a,n,d) 26
long_copy (c,a) 27
int rand () 27
srand (n) 27
plot (on,x,y) 27
line (on,dx,dy) 27
int ink (farba) 27
int paper (farba) 27
cls () 27
beep (dlzka,ton) 27 PRIRUCNY MANUAL HISOFT C JAZYKA 27
uvod ; lexikalne konvencie 28
notacia syntaxe ; co je to meno? 29
objekty a l hodnoty ; konverzie 29
vyrazy 30
deklaracie 31
prikazy 33
externe definicie ; pravidla prekladu 34
kontrolne riadky kompilatora 34
implicitna deklaracia ; revizia typov 36
vyrazy s konstantami 36
uvahy o prenosnosti 36
anachronismy 37
kompilatorovy preprocesor 37
vysvetlivky 39
prisposobenie na nizkej urovni 40 C H Y B Y 42
uvod 42
zoznam chybovych hlaseni 43
prve nestastia,havarie a ako ich hladat 525 . E R R O R S
Uvod
ERROR - 0 - chyba 'x '
ERROR - 1 - OBMEDZENIE: floats niesu implementovane
ERROR - 2 - zla znakova konstanta
ERROR - 3 - nepreprocesorovsky prikaz
ERROR - 4 - LIMIT: plny macro buffer
ERROR - 5 - identifikatory mozu byt defin. iba ako makra
ERROR - 6 - OBMEDZENIE: makra nemozu mat parametre
ERROR - 7 - subor sa neda otvorit
ERROR - 8 - OBMEDZENIE: nemoze obsahovat vnorenie
ERROR - 9 - chyba 'while '
ERROR - 10 - nie je v cykle alebo prepinaci
ERROR - 11 - nie je v cykle
ERROR - 12 - nie je v prepinaci
ERROR - 13 - LIMIT: prilis mnoho prikazov 'case'
ERROR - 14 - viacnasobne predvolene prikazy
ERROR - 15 - goto musi mat navestie
ERROR - 16 - viacnasobne pouzitie identifikatora
ERROR - 17 - pri preklade nejde priamo vykonavat
ERROR - 18 - LIMIT: tabulka mien je plna
ERROR - 19 - LIMIT: prilis vela pismen
ERROR - 20 - viacnasobna deklaracia - zmetok v typoch
ERROR - 21 - viacnasobna deklaracia - zmetok v ukladani
ERROR - 22 - LIMIT: tabulka globalnych symbolov je plna
ERROR - 23 - LIMIT: prilis vela globalnych dat
ERROR - 24 - viacnasobna deklaracia
ERROR - 25 - LIMIT: tabulka lokalnych symbolov je plna
ERROR - 26 - tato premenna nebola v zozname parametrov
ERROR - 27 - nedefinovana premenna(e)
ERROR - 28 - zly typ vysledku funkcie
ERROR - 29 - ziadne polia funkcii
ERROR - 30 - LIMIT: vyraz je prilis komplikovany - prilis
vela argumentov
ERROR - 31 - LIMIT: vyraz je prilis komplikovany - prilis
vela operatorov
ERROR - 32 - zla kombinacia typov
ERROR - 33 - zly typ operandu
ERROR - 34 - je potrebna 'lvalue '
ERROR - 35 - nie je definovanym clenom struktury
ERROR - 36 - tu sa ocakava 'primary '
ERROR - 37 - nedefinovana premenna
ERROR - 38 - vyzaduje sa meno typu
ERROR - 39 - vyzaduje sa konstantny vyraz
ERROR - 40 - mozu byt volane iba funkcie
ERROR - 41 - : nenasleduje spravne za ?
ERROR - 42 - konecna hodnota priradenia musi byt 'lvalue'
ERROR - 43 - vyzaduje sa : za ? - skontroluj zatvorky
ERROR - 44 - je potrebny pointer
ERROR - 45 - nedovoleny typ parametra
ERROR - 46 - OBMEDZENIE:nezahrnuje Floating Point
ERROR - 47 - tento operator sa neda pouzit s float argum.
ERROR - 48 - zla deklaracia
ERROR - 49 - neplatna trieda ulozenia v tejto suvislosti
ERROR - 50 -
ERROR - 51 - viacnasobna definicia slucky strukury
ERROR - 52 - pre parametre pouzi predeklarovanu strukturu
ERROR - 53 - struktura nemoze obsahovat sama seba
ERROR - 54 - zly deklarator
ERROR - 55 - chyba ') ' v definicii funkcie
ERROR - 56 - zly zoznam formalnych parametrov
ERROR - 57 - typ ma byt funkcia
ERROR - 58 -
ERROR - 59 -
ERROR - 60 - LIMIT: obsadena pamet
ERROR - 61 - OBMEDZENIE: na inicializovanie automatiky
pouzi priradenie alebo move ()
ERROR - 62 - toto sa neda inicializovat (nepovolena trieda
ulozenia)
ERROR - 63 - toto sa neda inicializovat (nepovoleny typ)
ERROR - 64 - prilis vela inicializacnych udajov
Vseobecne omyly v c programoch 1. UVOD
Tento manual popisuje prevedenie programovacieho jazyka 'C' pre
osobny pocitac Sinclair ZX Spectrum.
Tento manual je rozdeleny na niekolko kapitol. V kazdej kapitole
sa diskutuje jeden hlavny aspekt kompilatora. Prva kapitola
poskytuje vseobecny uvod. Dalsia je kapitola o editore a sposobe
ako vytvarat program. Tretia kapitola je podrobny popis
dialektu, ktory akceptuje HISOFT C kompilator. V stvrtej je
popis rozsiahleho suboru funkcii dodaneho s kompilatorom v
standardnej kniznici. Posledna kapitola je venovana chybam -
spravam, ktore vytvoria a sposobu ako ich hladat.
"The C Programming Language" je titul knihy od Briana Karnighana
a Denisa Ritchie, ktora v sucasnosti poskytuje jedinu realnu
definiciu jazyka. Je tiez dobrym ucebnym uvodom do C. V prvej
rade je tato kniha absolutnym zakladom a v druhej rade prinasa
uzitok kazdemu uzivatelovi C. Tento manual je pisany s
predpokladom, ze mate tuto knihu. Uplna citacia knihy je uvedena
v bibliografii.
C jazyk sam je vseucelovy programovaci jazyk, ktory kladie doraz
na strucne programy a pruzne vyrazy. Uzivatelovi je poskytovana
mala ochrana - je mozne pisat elegantne, ucinne programy ale je
tiez mozne pisat uzasne nezrozumitelne chyby - toto robi jazyk
tak ucinnym.
HISOFT verzia C je novy kompilator navrhnuty pre male domace
pocitace. Vytvara uzitocny nastroj pre system, ktory ma k
dispozicii iba RAM a magnetofonovu pasku. Dalsie doplnky su tiez
dodavane.
Kompilator je ulozeny vylucne v RAM, spolu s editorom, so
zdrojovym textom, ktory sa vytvara a vyslednym strojovym kodom.
Nema ziadne prechody cez asembler alebo linker, ako sa obvykle
vyskytuju u C kompilatorov. Toto znamena, ze vyvoj programu moze
byt skutocne velmi rychly.
Uvadzana verzia je navrhovana tak, aby bola co najblizsie k
definicii uvedenej v "C Reference Manual". "C Reference Manual"
je dodatok A Kerningham & Ritchieho knihy spomenutej vyssie. V
tomto manuali je kapitola -"HISOFT - C Language Reference
Manual" - ktora popisuje podrobne rozdiely medzi touto verziou a
definiciou. Najdolezitejsie co bolo vynechane je Floating Point
Arithmetic. Urcita oblast rozdielov je - spajanie modulov. Z
technickych dovodov ma tato verzia niektore male rozdiely. Tato
verzia vsak ma vyznamne rozsirenie - priame vykonavanie.
Tato verzia je vybavena priamym vykonavanim prikazov. Toto ma
vyhodu priamej kompilacie a umoznuje uzivatelovi pisat v C a
priamo napisane vykonavat, rovnako ako v BASICu.
1.1 Spustenie - TOTO SI PRECITAJ AKO PRVE
K spusteniu HISOFT C kompilatora, vloz kazetu do magnetofonu a
postupuj znamym sposobom
LOAD " " (ENTER)
po nahrani kompilatora sa objavi dotaz ci chces urobit kopiu na
mikrodrive. Napis 'n' . Teraz sa vypise firemna znacka
HISOFT C Compiler V1.1
Copyright c 1984 HISOFT
objavi sa blikajuci kurzor a mozes pisat program. Skus tento
kratky (pouzi SYMBOL SHIFT F pre { SYMBOL SHIFT 8 pre ):
main()
{ printf("Hello world"); }teraz napis SYMBOL SHIFT I (koniec suboru) a kompilator sa opyta
Type y to run program:
po stlaceni y sa program spusti, vykona a znovu sa hlasi. Mozes
spustit program lubovolne vela raz napisanim 'y', ale teraz
stlac ENTER a program sa vrati na firemnu znacku:
Hello world
Type y to run program:
HISOFT C Compiler V1.1
Copyright C 1984 HISOFT
Teraz budes chciet pravdepodobne skusit dlhsi program (napr. z
Kerningham Ritchie). K tomu doporucujeme, aby si presiel na
dalsiu kapitolu o pouziti editoru. Je to vyhodnejsie, ako priame
pisanie do kompilatora.
Dufame, ze teraz vidis ako kompilator sedi priamo za klavesnicou
a vsetko co pises sa priamo posiela do neho. Jedno co budes
casto pisat do kompilatora je:
#include