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   52
5 . 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