КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Описание реализаций функций, прототипы которых были описаны ранее
ОПИСАНИЕ ФУНКЦИИ main */
int main() { /* Пример многострочного комментария. Здесь должен располагаться код основной программы */ // Пример однострочного комментария. return 0; } //--------------------------------------------------------------------------------------- /* */
Следует отметить, что: 1. В языке C++ различаются большие и маленькие буквы. 2. Из всех приведенных разделов обязательным является только описание функции main (заголовка и тела), причем рекомендуется, чтобы функция возвращала значение цело численного типа int (0 - в случае удачного завершения, не 0 - в противном случае). Это производится с помощью оператора return, за которым через пробел идет возвращаемое функцией значение. Это значение может быть задано непосредственно константой или с помощью переменной и должно совпадать с типом возвращаемого значения, описанным в заголовке функции. После выполнения оператора return происходит немедленное прекращение выполнения функции. Если после оператора return не указать значение, то оно будет неопределенным (это делается в том случае если нужно преждевременно прервать выполнение функции, которая имеет тип возвращаемого значения void - пустое множество значение). Если функция main будет описана с типом возвращаемого значения void, то использование ключевого слова return не обязательно (как и в случае любой другой функции). Однако, тип возвращаемого значения void для функции main при использовании некоторых компиляторов (не Microsoft или Borland) приводит к генерации предупреждения или ошибки. Их поведение таково, потому что в случае «пакетного» запуска программ операционная система не сможет «понять» удачно завершилась программа или нет, т.к. за это отвечает значение, возвращаемое функцией main, а в случае использования типа данных void оно отсутствует. При необходимости использовать аргументы командной строки у функции main появляется 2 аргумента, и она описывается следующим образом: int main(int argc, char* argv[]) где argc - содержит количество аргументов командной строки, а массив строк argv - собственно аргументы. 3. Имя любого идентификатора в языке C++ (имена переменных, макроопределений, типов данных, функций, меток) должно начинаться с большой или маленькой буквы латинского алфавита или знака подчеркивания (_) и может содержать цифры в качестве не первого символа. Количество воспринимаемых символов в имени идентификатора в стандарте языка не ограничено, но может ограничиваться в конкретных компиляторах. Например, в некоторых компиляторах - это 31 символ. В Microsoft Visual Studio различаются первые 2048 имени идентификатора, а также допускается использование в любой позиции имени символа $. 4. Порядок следования описаний функций, типов данных, переменных, макроопределений, подключение файлов заголовков жестко не регламентирован. Однако, следует отметить, что перед использованием любого объекта (макроопределения, переменной, типа данных, функции) он должен быть предварительно описан. 5. В языке C++ допускается (хотя и не рекомендуется) использование меток (синтаксис их использования подобен Паскалю) и, соответственно, безусловных переходов по ним с помощью оператора goto, но, в отличие от языка Паскаль, нет специальной секции описания меток. 6. В языке C++ константные значения бывают числовые (целочисленные и вещественные), строковые и символьные. Примеры целочисленных константных значений: Десятичная система: -10, 20. Восьмеричная система: 020, -0100. Таким образом, восьмеричные значения начинаются префиксом 0. Шестнадцатеричная система: -0x20, 0xFFFF. Таким образом, шестнадцатеричные значения начинаются префиксом 0x. Следует отметить, что по умолчанию целочисленные константные значения считаются значениями типа int. Если необходимо интерпретировать их, как значения типа long (длинное целое), то в конце необходимо дописать букву l или L, например: 2000000000l. Это важно в случаях, когда тип данных int 16-битный. Примеры вещественных константных значений: В формате с фиксированной точкой, например: 5.256, -678.2768. В формате с экспонентой, например: 1.5E-2 (эквивалентно 0.015), -2E2 (эквивалентно -200).
Примеры строковых константных значений (литералов): Строковые константные значения записываются в ”” (двойных кавычках), например: ”This is an example”. В конце строковой константы компилятор автоматически размещает символ с ASCII кодом 0, который на языке C++ означает конец строки. В случае использования символов ”, \ и некоторых других необходимо применять так называемые Escape-последовательности (управляющие последовательности), которые начинаются символом \. Перечень допустимых Escape-последовательностей приведен в табл. 2.
Табл. 2. Перечень допустимых Escape- последовательностей языка C++
Примеры символьных константных значений: Символьные константные значения записываются в ’’ (одинарных кавычках или апострофах), например: ’f’. Количество символов в такой константе не может превышать одного символа и при ее задании также можно использовать Escape-последовательности.
7. В языке C++, в отличие от языка Паскаль, не допускается в теле функции описывать другую функцию (заголовок + тело), но можно описать только прототип функции. Других ограничений на используемые в теле функции секции не существует.
Арифметические типы данных языка C++. Рассмотрим арифметические типы данных языка C++, которые представлены в табл. 3: Табл. 3. Перечень арифметических типов данных языка C++
Следует отметить, что: 1. Размер типа данных int зависит от размеров машинного слова, от используемой платформы и компилятора, поэтому в некоторых случаях может быть 2 байта (Например, в Borland C++ 3.1). 2. Следует обратить внимание, что при использовании типов short int, unsigned int, long int ключевое слово int использовать необязательно. 3. В некоторых компиляторах тип данных long double не реализован. 4. При использовании целочисленных типов данных для указания конкретного типа могут быть использованы следующие ключевые слова: - unsigned - означает беззнаковый целочисленный тип. - signed - означает знаковый целочисленный тип. Используется по умолчанию, если не указать ни unsigned, ни signed. - short - означает короткое целое. - long - означает длинное целое (или вещественное). 5. Тип данных long long в среде Microsoft Visual Studio 6.0 использовать невозможно, хотя, например, в среде Microsoft Visual Studio 2005 применение такого типа допустимо. 6. Типы данных __int8, __int16, __int32, __int64 (знаковые и беззнаковые) характерны только для компиляторов Microsoft и стандартом ANSI не предусмотрены. 7. Для целочисленных знаковых типов данных старший бит является знаковым: если он равен 1, то число считается отрицательным (представляется в дополнительном коде при записи в двоичной системе счисления), а если он равен 0, то положительным. 8. Существует неявное и явное преобразование типов. Неявное работает в ряде случаев автоматически (будет рассмотрено ниже). Явное предполагает конструкцию вида: новый_тип_данных(значение) или (новый_тип_данных)(значение), которая может использоваться, например, в правой части оператора присваивания, в операциях сравнения, и возможно для совместимых типов данных: - Знаковый целочисленный тип данных можно преобразовать к беззнаковому целочисленному типу данных и наоборот. При этом старший бит числа будет интерпретироваться либо как знаковый (следует учитывать использование дополнительного кода для представления целых отрицательных чисел), либо как часть числа. - В случае преобразования к типу данных с меньшей размерности будет потеряна старшая (наиболее значимая часть значения). Например, при приведении значения 4-байтного целочисленного типа данных 65537 к беззнаковому целочисленному типу данных получаем 1 из-за потери 2-ух старших байт. - В случае приведения вещественного значения к целочисленному типу данных всегда происходит усечение (отбрасывание) дробной части, а также может произойти потеря точности в целой части числа в зависимости от используемого при приведении целочисленного типа данных. - Приведение целочисленного значения к вещественному типу данных может привести к потере точности в целой части, если размерность мантиссы вещественного значения меньше размерности целой части значения.
Краткий перечень операций и функций языка C++. Рассмотрим арифметические операции (операторы) языка C++ (табл. 4):
Табл. 4. Перечень арифметических операций языка C++
Следует отметить, что: 1. Тип данных результата деления (/) будет зависеть от типа данных операндов: если хотя бы один из операндов вещественного типа, то результат также будет вещественным, в противном случае - результат будет целочисленным (при помещении результата в вещественную переменную в этом случае дробная часть будет утеряна). 2. Операторы инкремента (++) и декремента (--) могут быть в префиксном (++ имя_перем; или -- имя_перем;) и постфиксном (имя_перем++; или имя_перем--;) виде. Различия заключаются в том, что при использовании префиксной формы сначала происходит изменение значения переменной, а потом - его дальнейшее использование; при использовании постфиксной формы сначала используется значение переменной, а потом происходит изменение его значения. Это различие существенно в сложных выражениях. 3. При выполнении арифметических операций производятся следующие неявные преобразования типов: - Операнды типа float преобразуются к типу double. - Если один операнд long double, то второй преобразуется к этому же типу. - Если один операнд double, то второй также преобразуется к типу double. - Любые операнды типа char и short преобразуются к типу int. - Любые операнды unsigned char или unsigned short преобразуются к типу unsigned int. - Если один операнд типа unsigned long или long, то второй также преобразуется к типу unsigned long или long. - Если один операнд типа unsigned int, то второй операнд преобразуется к этому же типу.
Рассмотрим операции (операторы) сравнения языка C++ (табл. 5): Табл. 5. Перечень операций сравнения языка C++
Рассмотрим побитовые и логические операции (операторы) языка C++ (табл. 6):
Табл. 6. Перечень побитовых операций языка C++
В языке C++ существует 3 логических операции, которые применяются для построения логических выражений: && (логическое «и»), || (логическое или)и! (отрицание). Причем && и || – бинарные операции (имеют 2 аргумента), а! – унарная (1 аргумент). Результатом выполнения логической операции будет одно из двух константных значений (хотя правильно называть это ключевыми словами, что, в последствии, и будем делать): false (ложь, числовое значение 0)и true (истина, числовое значение НЕ 0). Эти ключевые слова могут также использоваться как 2 возможных значения переменных логического типа данных bool. Это встроенный тип данных, размер которого 1 байт. Рассмотрим таблицы истинности, т.е. правила, описывающие результат, который будет получен в результате выполнения той или иной логической операции в зависимости от значений операндов (табл. 7):
Табл. 7. Таблицы истиности логических операций языка C++.
Операции << (Сдвиг на указанное количество двоичных разрядов влево) и >> (Сдвиг на указанное количество двоичных разрядов вправо) заменяют собой умножение и деление нацело, соответственно, на число, представляющее собой степень двойки. Например: 10 << 2 == 40, а 10 >> 2 == 2. Для того, чтобы понять принцип их работы необходимо записать число 10 в двоичной системе счисления и произвести сдвиг этого числа на указанное число двоичных разрядов влево или вправо (Табл. 8).
Табл. 8. Принцип работы операций сдвига
Следует обратить внимание на тот факт, что: 1. При работе с переменными знаковых типов данных операция >> будет расширять знаковый бит, например -1 >> 2 == -1. 2. Операции >> и << выполняются существенно быстрее деления или умножения даже на современных процессорах.
Применение операции двоичного дополнения (~) приводит к тому, что в двоичной записи числа значение каждого бита инвертируется. Например, ~10 == 65525 (Если интерпретировать 10 как 2-ухбайтное целое число).
В языке C++ существует еще две очень полезные унарные операции (операторов), которые приведены в табл. 9.
Табл. 9. Унарные операции взятия адреса и получения размера в языке C++
Среди математических функций хотелось бы выделить следующие: 1. abs – имеет один аргумент числового типа, возвращает значение по модулю. 2. sqrt – имеет один аргумент действительного типа (double), возвращает корень квадратный из значения аргумента тоже действительного типа (double). В качестве аргументов и результата любой математической функции языка C++, которые описаны с использованием типа данных double, можно использовать переменные ЛЮБОГО действительного типа данных. Следует отметить, что для использования вышеперечисленных математических функций необходимо подключить файл заголовков math.h, т.е. программа должна содержать строку #include <math.h>. При использовании некоторых компиляторов при осуществлении линковки необходимо убедиться в том, что библиотека math.lib присутствует в списке библиотек, используемых линковщиком. Краткие сведения об операторах языка C++. Язык C++ содержит такие группы операторов: простые и структурированные. Структурированные операторы в свою очередь бывают следующих видов: условный оператор (if), операторы цикла (цикл for, цикл с предусловием – while, цикл с постусловием – do…while), оператор множественного ветвления (switch). Также следует обратить внимание на использование символа;(точка с запятой). Практически каждый оператор на языке C++ заканчивается точкой с запятой. Однако есть ряд исключений, когда точка с запятой никогда не ставится: 1. После ключевых слов: do, while, for, if, switch, case, default, class, struct, union, typedef, template, enum, после названий типов данных. 2. После заголовка функции, если за ним сразу следует ее тело. 3. После { ставить НЕ ОБЯЗАТЕЛЬНО (как правило, этого не делают). 4. После } ставить НЕ ОБЯЗАТЕЛЬНО (как правило, этого не делают). Единственное исключение - точку с запятой ВСЕГДА нужно ставить в конце описания типов данных class, struct и union.
Рассмотрим некоторые операторы языка C++. 1. Пустой оператор (;). Не выполняет никаких действий. 2. Оператор присваивания (=). Этот простой оператор тому объекту (переменной), который стоит в левой части, присваивает то выражение, которое стоит в правой части. Например: A = 2 * B + C + D / 4 – E % 2; В этом примере переменной A присваивается выражение, которое включает ряд математических действий, причем B, C, D, E могут быть переменными и константами, в то время как A константой быть НЕ МОЖЕТ. Существуют составные операторы присваивания, объединяющие оператор присваивания с каким-либо арифметическим или побитовым оператором. Их перечень приведен в табл. 10.
Табл. 10. Перечень составных операторов присваивания языка C++
3. { и } - являются операторными скобками, т.е. с { начинается какая-то группа операторов, которая рассматривается как некоторый единый блок, а } эта группа операторов завершается. 4. Условный оператор (if). Это структурированной оператор, с помощью которого можно осуществлять ветвления в программе на основании выполнения или невыполнения какого-то условия. В общем виде этот оператор выглядит следующим образом: if (условие) Действие1;
Дата добавления: 2017-01-14; Просмотров: 816; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |