Числовые массивы в языке программирования С++. Лекция 5

Содержание

Слайд 2

Цели и задачи лекции

Цель леции – изучить использование массивов в языке программирования

Цели и задачи лекции Цель леции – изучить использование массивов в языке программирования С++
С++

Слайд 3

Теоретическая часть

В языке программирования С заложены средства для задания последовательностей упорядоченных данных.

Теоретическая часть В языке программирования С заложены средства для задания последовательностей упорядоченных
Такие последовательности называются массивами. В массивах должны быть упорядочены данные одного и того же типа. В данной лабораторной работе будут рассматриваться массивы с целыми и вещественными типами данных, т.е. типы int, float или double.

Слайд 4

Теоретическая часть

Массивы данных могут быть одномерными (векторами размера 1 х n или

Теоретическая часть Массивы данных могут быть одномерными (векторами размера 1 х n
n х 1), двухмерными (матрицами размера n х m) или многомерными (размера n х m х p...). В частности, для векторов и матриц в приведенной записи первый индекс означает количество строк, а второй (число или буква) – это количество столбцов.

Слайд 5

Теоретическая часть

Для названия массива может быть использована переменная, состоящая из букв (буквы),

Теоретическая часть Для названия массива может быть использована переменная, состоящая из букв
букв с цифрами, букв с цифрами и знаком подчеркивания и т.д. в соответствии с правилами объявления переменных, принятых в языке С++. Если размерность массива меньше, чем требуется, то компилятор не выдаст сообщения об ошибке. Выход за границы массивов должен следить только сам программист.

Слайд 6

Одномерные массивы

Одномерный массив – это список связанных однотипных переменных.
Общая форма записи одномерного

Одномерные массивы Одномерный массив – это список связанных однотипных переменных. Общая форма
массива:
тип имя_массива[размер];
В приведенной записи элемент тип объявляет базовый тип массива. Количество элементов, которые будут храниться в массиве с именем имя_массива, определяется элементом размер.

Слайд 7

Одномерные массивы

В языке С++ индексация массива начинается с нуля. Например, если размер

Одномерные массивы В языке С++ индексация массива начинается с нуля. Например, если
массива определен величиной 9, то в массиве можно хранить 10 элементов с индексацией 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Доступ к отдельному элементу массива осуществляется с помощью индекса. Индекс описывает позицию элемента внутри массива.

Слайд 8

Одномерные массивы

Все массивы занимают смежные ячейки памяти, т.е. элементы массива в памяти

Одномерные массивы Все массивы занимают смежные ячейки памяти, т.е. элементы массива в
расположены последовательно друг за другом. Ячейка памяти с наименьшим адресом относится к первому элементу массива, а с наибольшим – к последнему.

Слайд 9

Одномерные массивы

Для одномерных массивов общий размер массива в байтах вычисляется по формуле:
всего

Одномерные массивы Для одномерных массивов общий размер массива в байтах вычисляется по
байт = размер типа в байтах * количество элементов
В языке С++ нельзя присвоить один массив другому. Для передачи элементов одного массива другому необходимо выполнить присвоение поэлементно.

Слайд 10

Двухмерные массивы, матрицы

Двухмерный массив представляет собой список одномерных массивов.
Общая форма записи двухмерного

Двухмерные массивы, матрицы Двухмерный массив представляет собой список одномерных массивов. Общая форма
массива:
тип имя_массива[размер1] [размер2];
В приведенной записи размер1 означает количество строк двухмерного массива, а размер2 – количество столбцов.

Слайд 11

Двухмерные массивы, матрицы

В двухмерном массиве позиция любого элемента определяется двумя индексами. Индексы

Двухмерные массивы, матрицы В двухмерном массиве позиция любого элемента определяется двумя индексами.
каждого из размеров массива начинаются с 0 (с нуля).
Место хранения для всех элементов массива определяется во время компиляции. Память, выделенная для хранения массива, используется в течение всего времени существования массива.

Слайд 12

Двухмерные массивы, матрицы

Для двухмерных массивов общий размер массива в байтах вычисляется по

Двухмерные массивы, матрицы Для двухмерных массивов общий размер массива в байтах вычисляется
формуле:
всего байт = число строк * число столбцов * размер типа в байтах

Слайд 13

Многомерные массивы

Общая форма записи многомерного массива:
тип имя_массива[размер1] [размер2]... [размерN];
Индексация каждого размера начинается

Многомерные массивы Общая форма записи многомерного массива: тип имя_массива[размер1] [размер2]... [размерN]; Индексация
с нуля. Элементы многомерного массива располагаются в памяти в порядке возрастания самого правого индекса. Поэтому правый индекс будет изменяться быстрее, чем левый (левые).

Слайд 14

Многомерные массивы

При обращении к многомерным массивам компьютер много времени затрачивает на вычисление

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

Слайд 15

Многомерные массивы

Для многомерных массивов общий размер многомерного массива в байтах вычисляется по

Многомерные массивы Для многомерных массивов общий размер многомерного массива в байтах вычисляется
формуле:
всего байт = размер1* размер2*...* размерN *размер типа в байтах
Очевидно, многомерные массивы способны занять большой объем памяти, а программа, которая их использует, может очень быстро столкнуться с проблемой нехватки памяти.

Слайд 16

Многомерные массивы

Для определения размера типа в байтах применяется функция sizeof(), которая возвращает

Многомерные массивы Для определения размера типа в байтах применяется функция sizeof(), которая
целое число. Например, sizeof(float).

Слайд 17

Инициализация массивов

Инициализация массивов
В языке С массивы при объявлении можно инициализировать.
Общая форма инициализации

Инициализация массивов Инициализация массивов В языке С массивы при объявлении можно инициализировать.
массива:
тип имя_массива[размер1] * [размерN] = {список_значений};

Слайд 18

Инициализация массивов

В список_значений входят константы, разделенных запятыми. Типы констант должны быть совместимыми

Инициализация массивов В список_значений входят константы, разделенных запятыми. Типы констант должны быть
с типом массива.
Пример инициализации одномерного массива:
int A[5] = {1, 2, 3, 4, 5};
При этом A[0] = 1, A[1] = 2 и т.д.

Слайд 19

Инициализация массивов

При инициализации многомерного массива для улучшения наглядности элементы инициализации каждого измерения

Инициализация массивов При инициализации многомерного массива для улучшения наглядности элементы инициализации каждого
можно заключать в фигурные скобки.

Слайд 20

Инициализация массивов

Пример инициализации двухмерного массива:
int MN[3][4] = {
{1, 2, 3, 4},
{5, 6,

Инициализация массивов Пример инициализации двухмерного массива: int MN[3][4] = { {1, 2,
7, 8},
{9, 10, 11, 12}
};

Слайд 21

Инициализация массивов

Массив MN[3][4] – это матрица, у которой 3 строки и 4

Инициализация массивов Массив MN[3][4] – это матрица, у которой 3 строки и
столбца.
Для многомерных массивов инициализацию можно также проводить с указанием номера инициализируемого элемента.

Слайд 22

Инициализация массивов

Пример инициализации трехмерного массива:
int XYZ[2][3][4] = {
{ {1, 2, 3, 4},

Инициализация массивов Пример инициализации трехмерного массива: int XYZ[2][3][4] = { { {1,
{5, 6, 7, 8}, {9, 10, 11, 12} },
{ {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} }
};

Слайд 23

Инициализация массивов

Как видно, массив XYZ содержит два блока, каждый из которых есть

Инициализация массивов Как видно, массив XYZ содержит два блока, каждый из которых
матрица размера 3 х 4, т.е. 3 строки и 4 столбца.
В языке С возможна инициализация безразмерных массивов. Например, для одномерного массива:
int A[ ] = {1, 2, 3, 4, 5};

Слайд 24

Инициализация массивов

В многомерном массиве размер самого левого измерения также можно не указывать.

Инициализация массивов В многомерном массиве размер самого левого измерения также можно не
В частности, для инициализации массива MN[3][4] допустима следующая запись:
int MN[][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};

Слайд 25

Инициализация массивов

При инициализации многомерных массивов необходимо указать все данные (размерности) за исключением

Инициализация массивов При инициализации многомерных массивов необходимо указать все данные (размерности) за
крайней слева размерности. Это нужно для того, чтобы компилятор смог определить длину подмассивов, составляющих массив, и смог выделить необходимую память. Рассмотрим пример безразмерной инициализации для трехмерного массива целых чисел:

Слайд 26

Инициализация массивов

int XYZ[][3][4] = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10,

Инициализация массивов int XYZ[][3][4] = { { {1, 2, 3, 4}, {5,
11, 12}
},
{
{13, 14, 15, 16},

Слайд 27

Инициализация массивов

{17, 18, 19, 20},
{21, 22, 23, 24}
}
};

Инициализация массивов {17, 18, 19, 20}, {21, 22, 23, 24} } };

Слайд 28

Инициализация массивов

Вывод трехмерного массива на консоль (дисплей) можно выполнить по следующей программе:
#include

Инициализация массивов Вывод трехмерного массива на консоль (дисплей) можно выполнить по следующей

#include
int main (void) {
int i, j, k;
int XYZ[][3][4] = {
{ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, // 1-й

Слайд 29

Инициализация массивов

{ {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22,

Инициализация массивов { {13, 14, 15, 16}, {17, 18, 19, 20}, {21,
23, 24} } }; // 2-й
for (i = 0; i < 2; ++i) { printf("\n");
for (j = 0; j < 3; ++j) { printf("\n");
for (k = 0; k < 4; ++k)
printf(" %3d", XYZ[i][j][k]);
}
}

Слайд 30

Инициализация массивов

printf("\n\n Press any key: ");
_getch();
return 0;
}

Инициализация массивов printf("\n\n Press any key: "); _getch(); return 0; }
Имя файла: Числовые-массивы-в-языке-программирования-С++.-Лекция-5.pptx
Количество просмотров: 48
Количество скачиваний: 0