- •Основы записи программ
- •Комментарии
- •Переменные и константы, объявления и присваивания
- •Основные конструкции: операторы, выражения, операции, операнды
- •Операторы объявления
- •“Линейные” операторы
- •Операторы управления программой
- •Условный оператор if(if-else)
- •Оператор выбораswitch
- •Оператор цикла while
- •Оператор цикла do–while
- •Оператор цикла for
- •Операторы перехода break,continueиgoto
- •Операция присваивания
- •Объединение действий с присваиванием
- •Операции увеличения и уменьшения на 1
- •Трактовка истинности
- •Операция ?
- •Операция «запятая»
- •Операция sizeof
- •Объявление, определение, параметры и вызов функции
- •Выход из функции
- •Организация памяти при выполнении программы
- •Правила видимости имен для функций
- •Одинаковое именование нескольких функций (перегрузка функций)
- •Параметры функций по умолчанию
- •Передача параметров функции по адресу
- •Библиотека стандартных функций
- •Целые числа
- •Вещественные числа
- •Логические значения
- •Символы
- •Преобразование типов
- •Вычисление значения выражения
- •Массивы
- •Одномерные массивы
- •Многомерные массивы
- •Массивы с неопределенным размером (безразмерные массивы)
- •Перечисления
Язык C++: производные типы данных
Массивы
Массив – это конечная упорядоченная именованная последовательность элементов одного и того же типа. При объявлении массива после его имени в квадратных скобках задается его размер (число элементов). В общем случаеизмеренийу массива может быть несколько. В соответствии с их количеством различают одномерные, двумерные, трехмерные и другие массивы.
Одномерные массивы
Математический “аналог” одномерного массива – вектор. Примером одномерного массива может служить набор из двенадцати целых чисел, соответствующих числу дней в каждом календарном месяце. Объявление этого массива в программе может быть, например, таким:
int days[12];
В данной строке объявлен массив с именем days, состоящий из 12 элементов типаint.
Для того чтобы обратиться к определенному элементу массива, используется операция индексирования []. В квадратных скобках указывается целочисленное выражение, определяющее порядковый номер (индекс) элемента массива. Операнды операции индексирования – массив и значение индекса, результат – значение соответствующего элемента массива. Операция индексирования – одна из операций, имеющих наивысший приоритет. Нумерация элементов массива начинается с 0.
Присвоим, например, всем элементам массива daysначальные значения (инициализируем массив days), помня о том, что начальный элемент массиваdaysимеет индекс 0, а последний, соответственно, 11:
days [0] = 31;
days [1] = 28;
. . .
days [11] = 31;
Размер массива должен быть известен в момент компиляции, поэтому при объявлении массива в качестве его размера можно указывать только целую константу. При обращении же к элементу массива в качестве значения индекса может выступать любая переменная или выражение, представляемое ими значение вычисляется во время выполнения программы и преобразуется к целому значению.
Вывести на экран все элементы массива daysможно, например, с помощью оператораfor:
for (int i=0; i<12; i++)
cout << days[i];
Элементы массива располагаются в памяти последовательно без промежутков. Размер памяти, распределяемой под массив, равен размеру памяти для размещения всех его элементов.
Возможны различные способы инициализации (присваивания начальных значений элементам) массивов. Первый способ – инициализация массива с помощью операций присваивания. Массив может инициализироваться также посредством ввода данных с внешнего носителя или клавиатуры:
int a[10];
for (int i = 0; i < 10; i++)
cin >> a[i];
Когда начальные значения элементов массива известны, при объявлении массива можно использовать список начальных значений, заключаемый в фигурные скобки:
int a[10] = { 71, 28, 40, -4, 231, 1, -30, 0, 30, 31};
Значений в списке может быть меньше, чем элементов в массиве, в этом случае оставшиеся элементы массива получают нулевые начальные значения.
Автоматическое генерирование случайных значений осуществляется стандартной функцией rand(), описанной в файле заголовковstdlib.h. Пример инициализации массива с помощью датчика случайных чисел:
#include <stdlib.h>
...
for (int i = 0; i < 10; i++)
a[i]=rand();
Алгоритм генерации случайных чисел “отталкивается” от значения выбранной начальной точки. При одной и той же начальной точке одним и тем же будет и набор генерируемых случайных значений. Стандартная начальная точка задается значением 1. При необходимости "точку отсчета" можно изменить с помощью стандартной функции srand(), например:
srand(2);