
- •5. Кодовые таблицы ascii и ansi. Работа с символами и их кодами.
- •6. Константы в языке Си: целые, вещественные с фиксированной и плавающей точкой, символьные, строковые, null. Именованные константы.
- •8. Ввод информации в консольном стиле. Преобразование вводимых данных.
- •9. Синтаксис операторов языка Cи, операторы-выражения. Ошибки компиляции, времени выполнения, логические (смысловые).
- •10. Последовательность выполнения операций. Приоритет операций. Скобки.
- •12. Арифметические операции
- •15. Условные операторы (if, switch).
- •16. Тернарная операция "?".
- •19. Одномерные массивы. Инициализация одномерных массивов. Инициализация массива символов.
- •21. Циклические алгоритмы. Основные требования при использовании циклических (итерационных) алгоритмов.
- •23. Оператор цикла с предусловием и коррекцией for.
- •24.Вложенные циклы, последовательность выполнения входящих в них операторов. Простейший пример их применения к двумерным массивам.
- •26. Указатели, операции * и &. Указатель на указатель.
- •27. . Операции над указателями.
- •28. Связь указателей с массивами.
- •29. Работа с динамической памятью.
- •30. Строковые данные в языке Си как массивы символов. Стандартные функции работы со строками.
- •31. Тип String. Операции с типом String. Методы класса String.
- •32. Преобразование переменных типа String и массивов char друг в друга и в другие типы.
- •33. Краткая характеристика файлов *.H. Стандартные библиотечные функции. Стандартные арифметические функции.
- •3 4. Функции пользователя - способы описания, операция вызова функции.
- •35. Способы передачи информации в функцию и из нее.
- •36. Область видимости. Понятие блока.
- •37. Классы памяти и время жизни
- •38. Препроцессор, его роль. Директивы препроцессора. Директива #include.
38. Препроцессор, его роль. Директивы препроцессора. Директива #include.
Перед компиляцией программа на языке Си обрабатывается специальной программой – препроцессором, который работает под управлением директив.
Препроцессорные директивы начинаются с символа #, за которым следует наименование директивы, указывающее текущую операцию препроцессора.
Препроцессор решает ряд задач по предварительной обработке программы, основной из которых является «подключение» к программе так называемых заголовочных файлов (обычных текстов) с декларацией стандартных библиотечных функций, которые используются в программе. Наименование такой директивы: include (подключить), а общий формат ее использования: include <имя_файла.h>где «h» – расширение заголовочных файлов.Если имя файла заключено в угловые скобки (< >), то поиск данного файла производится в стандартной директории (папке) с этими файлами, если же имя файла заключено в двойные кавычки (” ”), то поиск данного файла производится в текущей директории.: Второе основное назначение препроцессора – это обработка макроопределений. Макроподстановка define (определить) имеет общий вид:#define < ID > <строка>
Например: #define PI 3.1415927
В ходе препроцессорной обработки программы появление в тексте идентификатора PI везде заменяется значением 3.1415927.
39. Операции сдвига (<<, >>)
Операторы сдвига >> и << сдвигают биты в переменной вправо и влево на указанное число. Общий вид оператора сдвига вправо:переменная >> число сдвигова общий вид оператора сдвига влево:переменная << число сдвигов. Сдвиг — это не то же самое, что и вращение, то есть биты, сдвигающиеся на один конец, не появляются с другого. Сдвинутые биты теряются, а с другого конца появляются нули. В том случае, если вправо сдвигается отрицательное число, слева появляются единицы (поддерживается знаковый бит).Операции битового сдвига могут быть полезны при декодировании информации от внешних устройств и для чтения информации о статусе. Операторы битового сдвига могут также использоваться для выполнения быстрого умножения и деления целых чисел. Сдвиг влево равносилен умножению на 2, а сдвиг вправо - делению на 2, как показано в таблице.
40. Поразрядные операции (~, &, ^, | )
Поразрядные операции можно применять только к целочисленным операндам, т.е. к операндам типов char, short, int и long, как знаковым так и беззнаковым.
& |
— поразрядное логическое И. |
| |
— поразрядное логическое ИЛИ. |
^ |
— поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ. |
~ |
— поразрядное отрицание, НЕ (унарный оператор). |
Оператор & (поразрядное И) часто используется для обнуления некоторой группы разрядов. Например
n = n & 0177;
обнуляет в n все разряды, кроме младших семи.
Оператор | (поразрядное ИЛИ) применяется для установки отдельных разрядов в 1. Например x = x | SET_ON;
устанавливает в результате единицы в тех разрядах, которым соответствуют единицы в SET_ON.
Оператор ^ (поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ) в каждый разряд результата запишет 1, если соответствующие разряды операндов имеют различные значения, и 0, когда они совпадают.
Унарный оператор ~ осуществляет поразрядную инверсию своего операнда, преобразуя каждый единичный бит в нулевой и наоборот. Например,x = x & ~077
обнуляет в x последние шесть разрядов. Заметим, что запись x & ~077 не зависит от размера операнда, и, следовательно, она лучше, чем запись x & 0177700, поскольку последняя подразумевает, что x занимает 16 битов. Независимая от типа машины форма записи ~077 не потребует дополнительных затрат времени при работе программы, так как ~077 это константное выражение, вычисляемое во время компиляции.