- •1. Краткие теоретические сведения
- •1.4. Пустой оператор
- •1.5. Составной оператор (блок)
- •1.6. Операторы начала и конца программы
- •Int main()
- •1.7. Оператор return
- •1.8. Оператор присваивания
- •1.8.1. Множественное присваивание
- •1.8.2. Ошибки при присваивании
- •1.8.3. Не путайте операторы равенства и присвоения
- •1.8.4. Составные операторы присвоения
- •1.8.6. Присваивание значения при объявлении
- •1.9. Операторы ввода-вывода
- •1.10. Функции ввода и вывода
- •1.10.1. Функция printf
- •1.10.2. Функция scanf
- •1.11. Операторы потокового ввода и вывода
- •1.11.1. Использование cout для отображения вывода на экран
- •1.11.2. Использование cout для вывода чисел
- •1.11.3. Вывод нескольких значений одновременно
- •1.11.4. Использование специальных символов вывода
- •1.11.5. Другие специальные символы
- •1.11.5. Вывод восьмеричных и шестнадцатеричных значений
- •1.11.6. Вывод на стандартное устройство ошибок
- •1.11.7. Управление шириной вывода
- •1.11.8. Директива #define
- •1.11.9. Оператор потокового вывода cin
- •1.11.10. Второе знакомство с cin
- •1.11.11. Следите за ошибками переполнения
- •1.11.12. Следите за ошибками несовпадения типов
- •1.11.13. Чтение символьных данных
- •1.11.14. Чтение слов с клавиатуры
- •1.11.15. Чтение строковых данных
- •1.12. Комментарии. Использование пробелов
- •1.13. Линейный вычислительный процесс
- •1.16. Таблица выбора идентификаторов
- •2. Задание
- •2.10. Задания
- •2.10.1. Задание 1
- •2.10.2. Задание 2
- •2.10.3. Задание 3 (домашнее)
- •3. Выводы
- •4. Требование к отчету
- •5. Вопросы для самоконтроля
- •Литература
- •Оглавление
1.11.8. Директива #define
Директива #defme имеет несколько модификаций. Они предусматривают определение макросов или препроцессорных идентификаторов, каждому из которых ставится в соответствие некоторая символьная последовательность. В последующем тексте программы препроцессорные идентификаторы заменяются на заранее запланированные последовательности символов. Рассмотрим два случая использования директивы #defme.
1. Для замены идентификатора заранее подготовленной последовательностью символов используется директива (обратите внимание на пробелы):
#define идентификатор строка_замещения
Директива может размещаться в любом месте обрабатываемого текста, а ее действие в обычном случае распространяется от точки размещения до конца текста. Директива, во-первых, определяет идентификатор как процессорный. В результате обработки все вхождения определенного командой #define идентификатора в текст программы заменяются строкой замещения, окончанием которой обычно служит признак конца той строки, где размещена команда #define. Символы пробелов, помещенные в начале и в конце строки замещения, в подстановке не используются. Например:
Исходный текст Результат препроцессорной обработки
#define begin {
define end }
int main() int main()
begin {
операторы; операторы;
end }
В данном случае программист решил использовать в качестве операторных скобок идентификаторы begin, end. Компилятор языка С++ не может обрабатывать таких скобок, и поэтому до компиляции препроцессор заменяет все вхождения этих идентификаторов стандартными фигурными скобками { и }. Соответствующие указания программист дал препроцессору с помощью директив #define.
2. Если в программе нужно часто печатать или выводить на экран дисплея значение какой-либо переменной и, кроме того, снабжать эту печать одним и тем же пояснительным текстом, то удобно ввести сокращенное обозначение оператора печати. Например, так:
#define РК cout << "\n Номер элемента N = " << N << ' . '
После этой директивы использование в программе оператора РК; будет эквивалентно (по результату) оператору из строки замещения. Например, последовательность операторов
int N >> 4; РК;
приведет к выводу такого текста:
Номер элемента N = 4.
Если в программе возникает необходимость часто печатать или выводить на экран дисплея значение какой-либо переменной (или выполнять другие действия), то целесообразно ввести сокращенное обозначение с использование директивы #define, например
#define V printf("Выполните ввод\n");
#define Pi 3.14
После этих директив в программе можно использовать операторы V и Pi.
1.11.9. Оператор потокового вывода cin
Ранее ваши программы использовали выходной поток cout для отображения вывода на экран. Настало время узнать как язык C++ обеспечивает входной поток с именем cin, из которого программы могут читать информацию, введенную пользователем с клавиатуры. При использовании cin для чтения ввода с клавиатуры вы указываете одну или несколько переменных, которым cin будет присваивать входные значения.
Для консольного ввода данных используют формат записи:
cin >> переменная;
Следующая программа LR5-25.cpp в примере 5.25 использует cin для чтения числа, введенного с клавиатуры. При этом переменная Age служит приемником вводимого значения. Программа присваивает введенное число переменной с именем Age, а затем выводит значение переменной, используя выходной поток cout.
Пример 5.25.
/*Программа LR5-Primer25*/
#include <iostream.h>
#include<conio.h>
int main()
{
int Age; // Число, читаемое с клавиатуры
cout << " Введите Ваш возраст: ";
cin >> Age;
cout << "Ваш возраст: " << Age << endl;
getch();
return 0;
}
Таким образом, переменная Age принимает введенное с консоли целое значение. Ответственность за проверку соответствия типов вводимого и ожидаемого значений лежит на программисте.
Оператор потокового вывода cin часто называют оператором извлечения, потому что он извлекает (удаляет) данные из входного потока, присваивая значение указанной переменной.