У тверждаю
Ректор университета
_______________ О.Н. Федонин
« ___ » _____________2017 г.
Алгоритмические языки обработка массивов
Методические указания
к выполнению лабораторной работы
Брянск 2017
У ДК 004.432.2
Алгоритмические языки. Обработка массивов [Электронный ресурс]: методические указания к выполнению лабораторной работы. – Брянск: БГТУ, 2017. –23с.
Разработали:
А.П. Горлов, канд.техн.наук., доц.
М.Л. Гулак, канд.техн.наук., доц.
Рекомендовано кафедрой «Системы информационной безопасности» БГТУ (протокол № 11 от 28.08.2017).
Научный редактор М.Ю. Рытов
Компьютерный набор А.П. Горлов
Методические указания публикуются в авторской редакции
Подписано в печать 28.08.17 г. Формат 60х84 1/16. Усл. печ.л. 1,33 Уч.-изд.л. 1,33 |
Брянский государственный технический университет
Кафедра «Системы информационной безопасности», 58-83-54
241035, Брянск, бульвар 50 лет Октября, 7.
1. ЦЕЛЬ РАБОТЫ
Цель работы получение навыков работы с операторами циклов while, for и do while.
Продолжительность работы: 4 ч.
2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Одномерные массивы
Под массивом понимается совокупность конечного числа данных одного типа. При описании массива обязательно указываются тип элементов массива, его имя и в квадратных скобках размер. Размер – это количество элементов в массиве.
Примеры описания массива:
int mas[10]; //описан массив с именем mas, состоящий из 10 //целочисленных элементов
double A[5], B[7]; //описаны два вещественных массива A и B, //состоящие из 5 и 7 элементов
При описании массива используются те же модификаторы класса памяти, const, что и для простых переменных. [класс памяти][const]тип идентификатор[размер][инициализация];
Одномерный массив соответствует математическому понятию вектора-строки или вектора-столбца. Встретив в тексте программы описание массива, компилятор по указанному количеству и типу элементов определяет необходимый для размещения этого массива объем памяти. Поэтому размер массива может быть задан только целой положительной константой или константным выражением. Например,
const int N = 100;
double Ar1[N];
long int Ar2[2*N];
Задание размера массива с помощью именованных констант позволяет в дальнейшем упростить модификацию программы, так как при необходимости изменить размер массива достаточно будет скорректировать значение константы всего лишь в одном месте программы.
При описании массива его можно инициализировать. Для этого инициализирующие значения записываются в фигурных скобках через запятую. Значения элементам присваиваются по порядку. Если элементов в массиве больше, чем инициализирующих значений, то оставшиеся элементы обнуляются.
Например,
int mas[10] = {-3, 1, 5};
//первые 3 элемента массива mas
//инициализируются значениями -3, 1, 5,
//а остальные значением 0
double A[5] = {0.1, 0.2, 0.3, 0.4, 0.5}, B[7] = {0.0};
//все элементы массива A инициализированы
//значениями из списка, все 7 элементов
//массива B инициализированы значением 0
Если при описании в квадратных скобках опущен размер массива, то обязательно должна присутствовать инициализация массива. В этом случае размер массива будет равен количеству инициализирующих значений. int C[] = {9, 5, 1}; //описан массив C из трех элементов
Для доступа к элементу массива используется операция индексации: после имени массива в квадратных скобках указывается индекс (номер) элемента. Элементы массива нумеруются с нуля, т.е. индекс может принимать значения от 0 до количества элементов массива минус единицу. Обработка массива, как правило, производится в циклах. Например,
A[0] = A[0] + 10;
A[1] = A[2]*B[6];
for (int i = 0; i < 10; i++) mas[i] *= 2;
В оперативной памяти элементы массива располагаются непрерывно в соседних ячейках.
… |
mas[0] |
mas[1] |
mas[2] |
mas[3] |
mas[4] |
mas[5] |
mas[6] |
… |
… |
-3 |
1 |
5 |
0 |
0 |
0 |
0 |
… |
Типичной ошибкой начинающих программистов при использовании массивов является обращение к несуществующему элементу, т.е. выход индекса за допустимое значение. Компилятор языков C/C++ такие ошибки не отслеживает.
Рассмотрим принципы работы с одномерными массивами на следующих примерах.
Пример 1. Вычисление суммы квадратов элементов массива.
#include "iostream"
int main()
{
const int N = 10;
int i;
double mas[N] = {0.0}, Sum = 0.0;
//ввод массива
cout << "Введите элементы массива:\n";
for (i = 0; i < N; i++)
{
cout << "mas[" << i << "] -> ";
cin >> mas[i];
}
//подсчет суммы квадратов элементов массива
for (i = 0; i < N; i++) Sum = Sum + mas[i]*mas[i];
cout << "Сумма квадратов элементов равна " << Sum << "\n";
return 0;
}
Пример 2. Вычисление диапазона значений элементов массива (диапазон значений равен разности значения максимального элемента и значения минимального элемента).
... const int N = 10;
int i;
double mas[N], masMin, masMax, range;
//ввод массива
...
//находим минимальное и максимальное значение элементов массива
masMin = mas[0];
masMax = mas[0];
for (i = 1; i < N; i++)
{
if (mas[i] < masMin) masMin = mas[i];
if (mas[i] > masMax) masMax = mas[i];
}
//вычисляем диапазон
range = masMax – masMin;
Пример 3. Поиск индекса минимального элемента.
... const int N = 10;
int i, indMin;
double mas[N];
...
//находим индекс минимального элемента массива
indMin = 0;
for (i = 1; i < N; i++) if (mas[i] < mas[indMin]) indMin = i;
...