Директива препроцессора #include — КиберПедия 

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

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

Директива препроцессора #include

2017-09-28 217
Директива препроцессора #include 0.00 из 5.00 0 оценок
Заказать работу

В первых двух строках программы записана одна из директив препроцессора (команд препроцессора, директив компиляции или инструкций компилятору). Директива #include предлагает компилятору включить другой исходный файл с указанным именем. В нашем примере подключаются заголовочные файлы стандартной библиотеки ввода, вывода. Другими словами, если мы используем стандартную функцию (или объект стандартного класса), то необходимо узнать (например, из Help или другого источника), в каком файле находится так называемый прототип (заголовок) функции и записать соответствующую директиву. Например, если бы в программе использовали стандартную математическую функцию (например, cos, abs и т. п.), то необходимо было бы записать #include <math.h>.

Некоторые правила использования директивы include:

· имя файла заключается в угловые скобки (символы ‘<’ и ‘>’);

· в одной директиве можно указать только один файл. Если подключаем несколько файлов, то записываем соответствующее количество директив;

· в одной строке можно записать только одну директиву;

· каждая из них должна начинаться с символа #;

· в конце директивы в отличие от операторов символ “точка с запятой” не пишется;

· расширение файла .h можно не указывать. Но для совместимости с системой C++Builder желательно имя файла записывать с расширением.

Другие возможности include и директивы компиляции будут рассмотрены во второй части книги.

Директива include частично похожа на ключевое слово uses языка Turbo Pascal, с помощью которого определяются используемые в программе модули (например, uses crt).

 

Структура программы

 

Любая программа на языке C++ состоит из функций, одна из которых — основная (главная) с именем main — является обязательной. С неё всегда начинается выполнение программы. В простейшем случае, как показано в нашем примере, в программе может быть только одна эта функция. На начальном этапе будем всегда использовать приведенный в третьей строке примера вид заголовка основной функции. Текст любой функции, в том числе и main, заключается в фигурные скобки.

Для обеспечения наглядности программы в строке, в которой записана одна из фигурных скобок, не рекомендуется что-либо писать. Нежелательно размещать операторы так, как это сделано в первой программе, то есть по несколько операторов в одной строке. Для сокращения объёма текста лекций эти рекомендации в данном пособии будут нарушаться.

Прямое назначение функции getch() — ввод символа. В конце программы с её помощью можно выполнить задержку экрана, чтобы можно было проанализировать выведенный на экран результат, пока не нажмём любую клавишу. Эта функция использует заголовочный файл conio.h, указанный в директиве #include.

Если, как в нашем примере, в заголовке основной функции записано ключевое слово int, то программа должна заканчиваться обязательным оператором return 0, который сообщает системе об успешном выполнении программы. Подробно об этом операторе смотри в главе, посвящённой функциям.

 

Комментарии

 

Комментарии, как и в других системах, не обрабатываются компилятором и поэтому не влияют на выполнение программы. В языке С++ можно записывать комментарии двух видов:

1) комментарии можно разместить после двух подряд идущих наклонных чёрточек //, записанных в любом месте строки. Тогда всё, что следует после этих символов до конца строки, воспринимается как комментарий. Для продолжения комментария на следующую строку необходимо в ней повторно записать эти два символа //;

2) перед началом комментария один раз записываем два подряд идущих символа /*, а в конце — два подряд идущих символа */. В таком случае комментарии могут занимать несколько строк.

Первый способ используется для коротких комментариев, а второй — для длинных.

 

1.5. Ключевые слова, идентификаторы, переменные

 

Слова int, return являются примерами ключевых слов. Они записываются строчными буквами. Ключевые слова нельзя использовать в качестве имён переменных, констант, функций и т. д.

Имена переменных, констант, типов, функций и других элементов программы называются идентификаторами. Правила их записи почти не отличаются от других систем программирования:

· прописные и строчные буквы в идентификаторах различаются. Поэтому, в отличие, например, от Pascal, идентификаторы MyMax, Mymax и mymax обозначают разные переменные;

· идентификатор может содержать большие и маленькие латинские буквы, цифры и знак подчёркивания;

· первым символом должна быть буква или знак подчёркивания;

· идентификатор не должен совпадать с ключевым словом С++ и именем стандартных функций, классов, объектов и других элементов языка;

· нежелательно использовать однобуквенные идентификаторы, но в то же время не всегда удобно работать с длинными именами.

Любая переменная должна быть объявлена (описана) в любом месте программы, но до первого её использования: тип список_переменных. Здесь тип — один из следующих типов: int — целый длиной 4 байта, short — целый короткий (2 байта), char — символьный (1), float — вещественный (4), double — вещественный c удвоенной точностью (8), bool — логический (булевский) со значением true ( или 1) или false (или 0) и другие. Список переменных записывается через запятую. Одновременно с объявлением переменной можно задать её начальное значение, например, int a=-23;. При необходимости его можно изменить.

Ввод, вывод

Ввод информации с экрана можно выполнить с помощью “команды”

cin>>элемент1>>элемент2>>…>>элементN;.

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

Для вывода информации на экран можно использовать следующую “команду”: cout<<элемент1<<элемент2<<…<<элементN;. Здесь в качестве элемента может быть:

· переменная одного из указанных выше типов, например, cout<<r;

· строковая константа, то есть текст, который, как и в других операторах, должен записываться, в отличие от Pascal, в двойных кавычках. В тексте можно использовать так называемые управляющие символы, признаком которых является обратная наклонная черта. Один из них, ‘\n’, означает, что информация, выводимая после него, будет размещаться с новой строки экрана. Этот символ может располагаться не только в начале строковой константы, но и в любом её месте, в том числе и в конце. Строковая константа может содержать только этот единственный символ (см. далее примеры);

· ключевое слово endl (манипулятор вывода). Это второй способ перехода на новую строку. После него информация будет выводиться с начала следующей строки;

· числовая константа. При изучении некоторых элементов языка с использованием компьютера можно, например, написать cout<<5; В реальных программах это используется редко;

· выражение, записанное в круглых скобках, например, cout<<(a+b);

Рассмотрим следующий фрагмент программы: int a=2, b=5;

/* Объявили две целочисленные переменные и проинициализировали их, то есть задали начальные значения */

cout<<”\n Сумма ”<<(a+b)<< ”\n Произведение “<<(a*b); // или

cout<<endl<<” Сумма ”<<(a+b) <<endl<<” Произведение “<<(a*b);

В результате с начала строки будет выведено Сумма 7, а с начала следующей строки — Произведение10. Второй раз cout выведет это же. Заметим, что запятая и точка после чисел не выводятся.

Замечания. 1)До изучения объектно–ориентированного программирования cout и cin будем называть “командами”, хотя это объекты стандартных классов, для которых перегружены операции “<<” и “>>”.

2) Для вывода можно использовать также функции printf и cprintf, а для ввода — функцию scanf. Ввиду их сложности они рассматриваются позже.

 

Выражения

Выражение — это записанная по определённым правилам комбинация переменных, констант, обращений к функциям и операций. Любой из перечисленных элементов не является обязательным и может отсутствовать. Как частный случай выражение может содержать только один из первых трёх элементов, например, константу.

 

Константы

Константы в отличие от переменных не могут изменяться программой. Записываются они по следующим правилам. Вещественные константы можно записать в обычной форме, используя символ “.” (точка) для разделения целой и дробной частей (5.,-12.345, 0.00987) или в экспоненциальной форме (0.5e1, -0.12345е+2, 987е-5). Константы целого типа можно записать в десятичной (26) или шестнадцатеричной (0x1A) системе счисления. Символьные константы записываются в одинарных кавычках. Например, ‘А’— первая прописная буква алфавита, ‘*’ символ “звёздочка”, ‘5’ — символ 5, но не целое число 5, ‘\\’ — символ “обратный слэш”, ‘\”’ — двойная кавычка, ‘\’ ‘ одинарная кавычка, ‘\n’,‘\t’,’\r’ —управляющие символы переход на новую строку, горизонтальная табуляция (вывод с определённых позиций строки), возврат каретки (переход в начало строки). Строковые константы записываются в двойных кавычках (“Это строка”, “The first number”, “1234”). Как и в других языках программирования, грамматический контроль строк, как в текстовом редакторе word, не выполняется.

Константы можно определить одним из следующих способов:

· непосредственно записать в выражении;

· с помощью ключевого слова const, например, const n=10; И тогда в выражениях вместо константы 10 указываем идентификатор n. Тогда если одна и та же константа в программе встречается несколько раз, то для её замены не надо искать каждое появление такой константы, а достаточно изменить её значение один раз при объявлении;

· с помощью директивы #define, которую можно записать в любом месте программы, не обязательно в самом начале. Например, #define SIZE 10. В конце символ “;” (точка с запятой) не пишется. Директива заменяет каждое появление символов SIZE, образующих слово, на 10. Тогда операторы int SIZE2=5; cout<<(SIZE+SIZE2); выведут число 15. Идентификатор SIZE2 определяет не константу, а переменную с начальным значением, которое в дальнейшем можно изменить. В идентификаторе SIZE2 последовательность символов SIZE не меняется на 10 ни первый, ни второй раз, а замена выполняется только в cout для SIZE. В отличие от второго способа, в этом случае SIZE можно переопределить, т. е. в любом месте программы можно записать новую директиву для определения SIZE, например, #define SIZE 2.

Операции и их приоритет

 

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

1) () — круглые скобки для изменения приоритета операций и записи параметров функций,

[ ] — квадратные скобки для индексации массивов,

-> — операция доступа к элементу структуры или объекта, если объявлен указатель на них;

∙ — операция доступа к элементу структуры или объекта, если объявлена структура или объект, а не указатель на них;

2)! — логическая операция отрицание,

+ — унарный (одиночный) плюс,

- — унарный (одиночный) минус,

++ — операция инкремент, или увеличение на единицу;

-- — операция декремент, или уменьшение на единицу;

& и * — операции для работы с указателями,

sizeof — размер типа или переменной в байтах,

new, delete —операции для работы с динамической памятью;

3) арифметические операции * / — умножение и деление для целых и вещественных типов. Для получения целой части результата деления двух целых чисел специальной операции, как было в языке Pascal (операция div), нет. Например, int a=25, b=4; cout <<(a/b); выведет 6, а не 6.25. Если одну из переменных объявить как float: int a=25; float b=4.; cout <<(a/b); то будет выведено 6.25, так как при выполнении деления целая переменная a преобразуется в тип float и получится вещественный результат;

% — получение остатка при целочисленном делении. Последнюю операцию можно использовать только для целых чисел. Например, 25%3 даст в результате 1;

4) арифметические бинарные операции + (сложение) и - (вычитание);

5) битовые операции: << — битовый сдвиг влево, >> — битовый сдвиг вправо;

6) операции сравнения (отношения): < (меньше), <= (меньше либо равно), > (больше), >= (больше либо равно);

7) операции сравнения на равенство = = и неравенство!=:

8) &битовая операция И;

9) ^ — битовая операция исключающее ИЛИ;

10) | — битовая операция ИЛИ;

11) &&логическая операция И;

12) || — логическая операция ИЛИ;

13)?: тернарная операция для замены оператора if в некоторых случаях;

14) операции присваивания: = *= /= %= += -= &= ^= |= <<= >>=;

15), — операция запятая;

Обращение к функции, если оно есть, всегда выполняется первым.

Для изменения приоритета операций используются круглые скобки, которые имеют наивысший приоритет. Рекомендуется их написать, если есть сомнения насчёт приоритета операций. Ошибки не будет, если они окажутся лишними.

 


Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

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

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.