Spectrum Expert
#02
31 марта 1998 |
|
Софт - описание языка программиирования CИ для ZX Spectrum от фирмы Hisoft.
Закончив с описанием Паскаля перейдем к Си. Реализация Си на Спектруме весьма спе- цифична и имеет один большой недостаток: в ней не реализована арифметика с плава- ющей запятой, что препятствует широкому использованию Си при создании программ. Однако, обратной стороной этого стало существенное повышение скорости работы программ, созданных на Си. Программа на Си работает в 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 приступил к созда- нию своего Си для Спектрума.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября