Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Свойства транслятора

Обработка символьных данных | ФУНКЦИИ И СТРУКТУРА ПРОГРАММЫ | УКАЗАТЕЛИ И МАССИВЫ | Основные сведения | Структуры и функции. Указатели на структуры. | Структуры со сылками на себя | Стандартный ввод-вывод | Работа с файлами | Низкоуровневый ввод-вывод | Конвейер, перенаправление ввода-вывода |


Читайте также:
  1. Антибактериальные свойства кордицепса
  2. Вид маркетинга, который характеризуется производством и маркетингом нескольких продуктов с различными свойствами для всех покупателей, однако рассчитанные на разные их вкусы
  3. Виды ошибок измерений, свойства случайных ошибок. Принцип арифметической средины.
  4. Виды смешанных гипсовых вяжущих. Свойства и применение.
  5. Визуальное объектно-ориентирование программирование. Инкапсуляция, наследование, полиморфизм. Основные объекты и их свойства, методы и события
  6. Вирусы, вироиды, прионы, особенности структуры, отличительные свойства. Вызываемые заболевания.
  7. Влияние железа различной степени окисления на свойства воды.

 

1. Выяснить, сколько байт отведено для хранения данных типа short, int, long, float, double и long double.

 

2. Выяснить способ представления типа char: signed- или unsigned- вариант.

3. Проконтролировать, все ли способы записи констант допустимы:

· целых (обычная форма записи, u/U, l/L, их комбинации, восьмеричная и шестнадцатиричная системы счисления)

· вещественных (обычная форма записи, в экспоненциальном виде, f/F, l/L, e/E)

· символьных и строковых (в частности, происходит ли конкатенация рядом расположенных строковых констант)

 

4. Выяснить, как упорядочены коды символов '0'-'9', 'a'-'z', 'A'- 'Z', пробел (между собой и относительно друг друга).

 

5. Проверить наличие и качество диагностических сообщений при неверной записи констант:

· целых и вещественных

· символьных и строковых

 

6. Проконтролировать, допускается ли инициализация переменных при описании; происходит ли инициализация по умолчанию.

 

7. Проверить, реагирует ли компилятор на попытку изменить константу (внешнюю, автоматическую, статическую; арифметических типов, строковую).

 

8. Исследовать особенности выполнения операции % с отрицательными операндами.

 

9. Проверьте, действительно ли операции отношения == и!= имеют более низкий приоритет, чем все другие операции отношения.

 

10. Проверьте, выполняется ли правило "ленивых вычислений" выражений в Си, т.е. прекращается ли вычисление выражений с логическими операциями, если возможно "досрочно" установить значение результата.

 

11. Проверьте, все ли виды операнда операции sizeof, определяемые стандартом для арифметических типов, допускаются компилятором; действительно ли аргумент-выражение не вычисляется.

 

12. Определите, каким образом "малое" целое расширяется до int (старшие разряды int заполняются нулями или знаковым разрядом "малого" целого).

 

13. Определите, каким образом расширяются unsigned- варианты "малых" целых (до unsigned int как в "классическом" Си или сначала делается попытка расширить до int, и только в случае неудачи - до unsigned int).

 

14. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование знаковых целых
(M-битовое представление) к знаковым целым (N-битовое представление) при M > N, M = N, M < N.

 

15. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование беззнаковых целых
(M-битовое представление) к знаковым целым (N-битовое представление) при M > N, M = N, M < N.

 

16. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование вещественных чисел (X) к знаковым целым (N-битовое представление) при | X | < 2N-1, | X | >= 2N-1.

 

17. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование знаковых целых X
(M-битовое представление) к беззнаковым целым (N-битовое представление) при M > N, M = N, M < N; X >= 0, X < 0.

 

18. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование беззнаковых целых
(M-битовое представление) к беззнаковым целым (N-битовое представление) при M > N, M = N, M < N.

 

19. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование вещественных чисел (X) к беззнаковым целым (N-битовое представление) при 0<=X< 2N, X < 0, X >= 2N.

 

Калькулятор

 

Калькулятор – это программа, вычисляющая значения выражений, вводимых с клавиатуры. Ввод выражений и значений переменных, входящих в выражение, осуществляется по запросу программы.

Требуется контролировать правильность записи выражений. Минимальный набор диагностических сообщений:

- нарушен баланс скобок (с указанием – открывающих / закрывающих)

- отсутствует операнд

- пропущена операция

- недопустимая операция

- неверный операнд (ошибочно записана константа или имя переменной).

Выражение содержит знаки операций +, -,*, /; круглые скобки без ограничения уровней вложенности; операнды – константы (целые и вещественные) и переменные. Имя переменной – идентификатор, его максимальная длина – 6 символов; в вещественных константах порядок не используется, т.е. числа имеют вид целая_часть. дробная_часть, где либо одно, либо другое может быть опущено. Целочисленные константы записываются в десятичной форме (восьмеричное и шестнадцатиричное представление не используется).

Старшинство операций и правила приведения типов аналогичны правилам Си. Тип переменной определяется по виду константы – инициализатора.

 

Некоторые рекомендации:

- если синтаксический анализ реализован методом рекурсивного спуска, то для выхода из «глубокой» рекурсии удобны функции setjmp и longjmp.

- в функции метода рекурсивного спуска можно вставить действия по переводу анализируемого выражения в польскую инверсную запись (ПОЛИЗ). Это позволит за один просмотр провести анализ исходного выражения и генерацию его польской записи; при использовании алгоритма Дейкстры может потребоваться еще один просмотр.

- выражения в ПОЛИЗе можно интерпретировать многократно при разных значениях переменных (если пользователь потребует этого в процессе диалога).

- таблицу переменных удобно представлять с использованием объединений, т.к. для переменных разных типов придется хранить значения типа int и типа double.

Приведенный здесь вариант калькулятора можно упростить: реализовать только целочисленную либо только вещественную арифметику.

 


Дата добавления: 2015-11-14; просмотров: 51 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Сигналы. Фоновые процессы.| Моделирование работы интерпретатора SHELL

mybiblioteka.su - 2015-2024 год. (0.008 сек.)