Ряд функций, которые часто используются во многих программах, образуют библиотеку стандартных функций языка С++, большинство из которых пришли из языка С.
Библиотека стандартных функций является частью практически любого компилятора языка C++ и позволяет программистам использовать готовые функции в своих программах. В состав библиотеки входят математические функции (вычисление логарифма, квадратного корня, возведение в произвольную степень и т.д.), функции ввода-вывода, функции обработки строк и символов и ряд других. Для работы со стандартными функциями необходимо включать в программу файлы заголовков, которые содержат объявления нужных стандартных функций.
Так, для выполнения математических стандартных функций нужно подключить к программе файл заголовков math.h:
#include <math.h>
. . .
double x=sqrt (a); // вычисление квадратного корня переменной a
. . .
5. Язык C++: стиль записи программ
При записи программ важно придерживаться определенного стиля записи. Прежде всего, стиль выражается в способе именования переменных и функций и в расположении операторов программы. Наличие правильного стиля облегчает изучение программ. Разбираться в программах, написанных в разных стилях, гораздо сложнее. Известно, что чтение программ с целью их проверки или модификации – не менее важное и редкое дело, чем их написание, и следует максимально облегчить это занятие.
В мировом программистском сообществе давно сложились представления о хорошем стиле программирования, и знание их свидетельствуют об уровне квалификации специалиста.
Итак, каждый оператор рекомендуется писать в отдельной строке. Допускается несколько коротких присваиваний в одной строке.
Пустые строки обычно разделяют однородные группы операторов. Например, можно поставить пустую строку между объявлением переменных и первым выполняемым оператором, перед группой логически связанных операторов.
При написании программ важно подчеркнуть структуру программы. Рекомендуемым средством достижения этой цели является отступ от левого края и расположение фигурных скобок. С левого края начинаются только описания функций, глобальных переменных и типов данных. Начало блока (открывающая фигурная скобка) увеличивает отступ следующего оператора от левого края на некоторое фиксированное число пробелов (обычно на табуляцию или на 3-4 пробела):
int
sum (int x, int y, int z)
{
return x + y + z; // запись с отступом
}
Как видно из примера, тип возвращаемого значения записан отдельной строкой, в следующей строке записано имя функции с формальными параметрами, с той же позиции в следующей строке – левая (открывающая) фигурная скобка. Тело функции, в данном случае состоящее из одного оператора, записано с отступом. Правая (закрывающая) фигурная скобка убирает отступ и записывается под именем функции.
Зависимость операторов друг от друга также подчеркивается отступом. Например, выполняемый оператор в операторе if зависит от условия, поэтому он записывается с отступом от позиции начала оператора if:
int
abs (int x)
{
if (x >= 0) // одинарный отступ
return x; // двойной отступ
else
return -x;
}
В операторах if-else без вложенности else располагается под соответствующим if.
Если в операторе if используется блок, то открывающаяся фигурная скобка ставится на той же строчке, где и условие, а закрывающаяся – на новой строчке в той же позиции,что и if. Если после этого следует конструкция else или else if, она начинается в той же строке через пробел:
if ( условие_1 ) {
операторы
} else if ( условие_2 ) {
операторы
} else {
операторы
}
Аналогичное правило используется для операторов цикла – тело цикла пишется с отступом по сравнению с заголовком цикла, закрывающаяся фигурная скобка убирает дополнительный отступ. Особенно важно придерживаться правил отступа при использовании вложенных циклов и условных операторов. Закрывающаяся фигурная скобка должна находиться на том же уровне, что и начало соответствующего условного оператора или цикла:
for (int i = 0; i < n; i++) {
if (x > 0) {
while (true) {
операторы
} // конец тела цикла while
} // конец тела if
} // конец тела цикла for
Немного отличается написание оператора switch. Несмотря на то, что после заголовка оператора ставится открывающаяся фигурная скобка, все метки case или default располагаются на том же уровне, что и switch. Однако операторы, соответствующие меткам, пишутся с отступом:
switch (code) {
case 1:
x = 1;
break;
case 2:
x = 2;
break;
default:
;
}
Те же цели – легкость понимания и удобства чтения – преследуют правила именования. Использование одно- или двух буквенных идентификаторов в качестве имен переменных допустимо только, если это временные локальные переменные, смысл которых и так ясен из контекста. Однобуквенные идентификаторы i, j, k, l также часто используют в качестве переменных цикла. Чаще всего имена функций, переменных и т.д. составляются из английских слов, описывающих их смысл. Имена функций целесообразно писать с маленькой буквы, также как и имена переменных. Имена констант целесообразно составлять из заглавных букв. Если имена констант состоят из нескольких слов, в качестве разделителя используется подчеркивание:
fact, width, length, BITS_IN_BYTE
6. Язык C++: встроенные типы данных
Большинство программ на языке C++ представляет и обрабатывает данные. Любые данные принадлежат к какому-то из типов. Тип данных определяет возможные значения данных и набор определенных для них операций. Например, данные типа short (“короткие” целые числа со знаком) могут принимать числовые значения от -32768 до 32767. Для данных этого типа определены обычные арифметические операции и правила выполнения этих операций при, например, переполнении, то есть при выходе результата за границы допустимых значений этого типа.
Данные могут быть постоянными, то есть неизменяемыми во время выполнения программы. Для обозначения таких данных используются константы. При работе с изменяемыми данными в программе создаются переменные для хранения изменяемых значений.
Встроенные типы данных предопределены в языке. Это основные, “базовые” типы, из которых составляют все производные типы. Различные реализации и различные компиляторы могут определять различные диапазоны значений целых и вещественных чисел.
В табл. 1 перечислены встроенные типы данных языка C++ и приведены наиболее типичные диапазоны их значений.
Таблица 1. Встроенные типы данных языка C++.
Название
| Обозначение
| Число байтов
| Диапазон значений
|
Символ
| char
|
| от -128 до +127
|
Символ без знака
| unsigned char
|
| от 0 до 255
|
Короткое целое число
| short int
|
| от -32768 до +32767
|
Короткое целое число без знака
| unsigned short int
|
| от 0 до 65535
|
Длинное целое число
| long int
|
| от -2147483648 до +2147483647
|
Длинное целое число без знака
| unsigned long int
|
| от 0 до 4294967295
|
Вещественное число одинарной точности
| float
|
| от ±3.4е-38 до ±3.4е+38 (7 значащих цифр)
|
Вещественное число двойной точности
| double
|
| от ±1.7е-308 до ±1.7е+308 (15 значащих цифр)
|
Вещественное число увеличенной точности
| long double
|
| от ±1 .2е-4932 до. ±1 .2е+4932
|
Логическое значение
| bool
|
| значения true (истина) или false (ложь)
|