Spectrum Expert #02
31 марта 1998
  Софт  

 Закончив с описанием  Паскаля  перейдем
к  Си.                                  
                                        
 Реализация Си на Спектруме весьма  спе-
цифична и имеет один большой недостаток:
в ней не реализована арифметика с плава-
ющей запятой,  что препятствует широкому
использованию Си при создании программ. 
 Однако, обратной стороной  этого  стало
существенное повышение  скорости  работы
программ, созданных на Си. Программа  на
Си работает в 10-15 раз быстрее програм-
мы на  бейсике, выполняющей  аналогичные
действия.  Поэтому,  если вам не хочется
возиться с ассемблером, то вы вполне мо-
жете  воспользоваться  Hisoft C, практи-
чески не потеряв в скорости работы.     
 Для особых  поклонников  Си  существует
библиотека float, реализующая на Си опе-
рации с плавающей  запятой.  Я  не  буду
приводить здесь описания  библиотек  Си,
так как все желающие могут загрузить  их
и посмотреть комментарии. Я приведу лишь
необходимые сведения, касающиеся функций
стандартных       библиотек    stdio.h и
stdio.lib.                              
                                        
 После загрузки компилятора система  пе-
реходит в режим компилирования.  В  этом
режиме вы можете ввести программу и, на-
жав SS+I, откомпилировать ее. После ком-
пиляции, если нет ошибок, вам  предложат
запустить ее, нажав клавишу "Y". Привожу
пример из справочника по системным прог-
раммам:                                 
                                        
 main()                                 
 {                                      
 printf("First program");               
 };                                     
 <Нажимаем SS+I>                        
 ТУРЕ Y ТО RUN                          
 <Нажимаем Y>                           
 First program                          
 ТУРЕ Y ТО RUN                          
                                        
 Но такой вариант  набора  годится  лишь
для  маленьких  тестовых  программ,  для
больших же программ существует строковый
редактор, переход в который  осуществля-
ется последовательным  нажатием  EDIT  и
ENTER.                                  
 Как уже было сказано  в  начале статьи,
редакторы разных  продуктов фирмы Hisoft
практически не отличаются друг от друга,
поэтому я не буду рассказывать  здесь  о
наборе и редактировании программы,  лишь
остановлюсь на особенности команды C.   
 Команда компиляции C переводит  систему
в режим компиляции, описанный выше.  Для
переноса  текста из  редактора  в  буфер
компилятора надо набрать #include и  на-
жать <Еnter>. Текст будет  перенесен  в 
буфер,  и нажатие SS+I  вызовет компиля-
цию программы.                          
                                        
 Зарезервированные слова в Си:          
                                        
AUTO        ELSE     LONG       TYPEDEF 
BREAK       ENTRY    REGISTER   UNION   
CASE        EXTERN   RETURN     UNSIGNED
CHARE       FLOAT    SHORT      WHILE   
CONTINUE    FOR      SIZEOF     DEFAULT 
GOTO        STATIC   DO         IF      
STRUCT      FORTRAN  DOUBLE     INT     
SWITCH      ASM      INLINE     CAST    
                                        
 Как уже было сказано выше,   компилятор
не поддерживает операций с плавающей за-
пятой,  поэтому,  хотя   соответствующие
слова и зарезервированы,   компилятор  с
ними не работает.                       
                                        
 Теперь несколько слов о выгрузке отком-
пилированной программы на диск. Для  вы-
грузки  программы  в  режиме  компилято-
ра  перед #include наберите   #translate
<имя>, и ваша программа  будет  выгруже-
на.  Однако, после  выгрузки  компилятор
сбросится.                              
 Несколько слов  надо  сказать  о специ-
фике команды  inline  для  Си.  Аргумент
этой команды -  произвольное  выражение,
которое при  компиляции будет преобразо-
вано в машинный код, причем  первый  ар-
гумент даст 1 байт кода, а все  последу-
ющие - 2 байта.                         
                                        
     Пример:                            
                                        
 cls()                                  
 {                                      
 inline(0xcd,0xd68);                    
 }                                      
                                        
 Еще одно отличие Hisoft C  от  базового
языка - это наличие классов.  К  сожале-
нию, не совсем понятно, как их использо-
вать,  хотя любая переменная связана  со
своим классом. Желающие могут попытаться
разобраться с этим явлением.            
                                        
Ну, и в конце список ошибок компилятора:
                                        
 0. Символ отсутствует                  
 1. Неизвестный тип данных              
 2. Ошибка в символьной константе       
 3. Ошибочная директива препроцессора   
 4. Макро-буфер заполнен                
 5. Неправильное определение макроса    
 6. Макрос не должен иметь параметров   
 7. Невозможно открыть файл             
 8. Включенный файл содержит директиву  
    включения другого файла             
 9. Требуется WHILE                     
 10. Нет цикла или переключателя        
 11. Нет цикла                          
 12. нет переключателя                  
 13. Слишком много CASE                 
 14. Более чем один DEFAULT             
 15. Отсутствует метка в GOTO           
 16. Многократное использование  иденти-
     фикатора                           
 17. Некорректное использование директи-
     вы препроцессора                   
 18. Переполнение таблицы имен          
 19. Слишком много типов                
 20. Двойное объявление типа            
 21. Двойное объявление класса          
 22. Переполнение   таблицы   глобальных
     имен                               
 23. Слишком много глобальных переменных
 24. Двойное объявление                 
 25. Переполнение таблицы локальных имен
 26. Переменная не  упомянута  в  списке
     параметров                         
 27. Неопределенная переменная          
 28. Ошибочное значение в команде RETURN
 29. Использован массив функций         
 30. Слишком сложное выражение          
 31. Слишком сложное выражение          
 32. Некорректный аргумент операции     
 33. Неправильный тип операнда          
 34. Использовано не l-выражение        
 35. Не определены поля структуры       
 36. Отсутствует первичное выражение    
 37. Не объявлена переменная            
 38. Требуется имя типа                 
 39. Требуется константное выражение    
 40. Отсутствует имя функции            
 41. Неправильное использование  3-х-ар-
     гументного оператора               
 42. Приемник должен быть l-выражением  
 43. Неправильное использование  3-х-ар-
     гументного оператора               
 44. Требуется указатель                
 45. Неверный тип параметра             
 46. Неизвестный тип данных             
 47. Невозможно использовать этот опера-
     тор                                
 48. Неправильное объявление            
 49. Ошибка в объявлении                
 51. Двойное объявление признака        
 52. Использовано  объявление  структуры
     до функции                         
 53. Структура содержит саму себя       
 54. Ошибка в объявлении                
 55. Требуется ) в объявлении функции   
 56. Неправильный   формат    параметров
     функции                            
 57. Неизвестный тип результата функции 
 60. Не хватает памяти                  
 61. Неправильное  присвоение  начальных
     данных                             
 62. Неправильное присваивание          
 61. Неправильное  присвоение  начальных
     данных                             
 62. Неправильное присваивание          
 63. Неправильное присваивание          
 64. Слишком много начальных данных     
                                        
 В стандартной  библиотеке  Си stdio.lib
предусмотрена возможность работы  с гра-
фикой  на уровне  возможностей  Бейсика.
Поэтому теоретически на Си можно  писать
программы, использующие графику.        
 В самом конце статьи  должен   сказать,
что, хотя в языках высокого уровня и  не
предусмотрены возможности работы  с рас-
ширенной памятью, мне  ранее встречалась
библиотека для Си гам128.h, поддерживаю-
щая работу с банками памяти.            
                                        
 Р.S. По словам ARTY (лидера группы  DI-
GITAL REALITY), RST7 приступил к  созда-
нию своего Си для Спектрума.            
                                        



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Studies - Print the character, magnified by 8 times. The program "pouring" screen. The procedure for screen-saver on the points. Clear screen in Terminator'e. Search strings in memory. System character set conversion.
Authors - The authors of the magazine.

В этот день...   23 November