
- •220300 - Системы автоматизированного проектирования
- •Состав языка и принцип работы компилятора языка высокого уровня
- •Идентификаторы
- •Альтернативный ввод-вывод в стиле с
- •Константы
- •Манипуляторы
- •Преобразования типов
- •Арифметические операции
- •Функции стандартной библиотеки
- •Операции отношения и логические операции
- •Базовые конструкции структурного программирования
- •Цикл с параметром (for)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Рекомендации по программированию циклов
- •Ветвления
- •Условный оператор if
- •Вложенные конструкции
- •Проблемы соответствия if и else во вложенных ветвлениях
- •Условная операция
- •Оператор switch
- •Операторы передачи управления
- •Контрольная работа
- •Массивы
- •Сортировка массива методом выбора
- •Сортировка массива методом пузырька
- •Многомерные массивы
- •Операции со строками
- •Функции
- •Void starline(); // объявление функции (прототип)
- •Передача аргументов в функцию по значению
- •Void charline(char sim, int n); // объявление функции (прототип)
- •Возвращение функцией значения
- •Передача аргументов по ссылке
- •Возвращение значения по ссылке
- •Перегруженные функции
- •Переменные и функции
- •Передача массивов в функции
- •Указатели
- •Указатели и массивы
- •Указатели и функции
- •Указатели и строки
- •Динамический массив и динамическое выделение памяти
- •Ввод/вывод
- •Форматированный ввод/вывод
- •Конструкторы и методы
- •Двоичный ввод/вывод. Бинарные файлы
- •Двунаправленный ввод/вывод
- •Функции стандартной библиотеки для работы с файлами или ввод/вывод в стиле с
Массивы
При использовании простых переменных каждой области памяти для хранения данных соответствует своё имя. Если с группой величин одинакового типа требуется выполнять однообразные действия, им дают одно имя, а различают по порядковому номеру. Это позволяет компактно записывать множество операций с помощью циклов.
Конечная именованная последовательность однотипных величин называется массивом. Таким образом массивы представляют собой механизм для группировки данных одного типа. Данные, сгруппированные в массиве, могут быть как основных (стандартных) типов, так и определённых программистом типов (абстрактных). Описание массива в программе выглядит так:
-
тип данных
имя
массива
размер
массива
float arr[10]; //описание массива из 10 вещественных чисел
В квадратных скобках задаётся количество элементов массива (размерность). Элементы массива нумеруются с нуля. При описании массива используются те же модификаторы, что и для простых переменных. Инициализирующие значения для массивов записываются в фигурных скобках. Значения элементам присваиваются по порядку. Если элементов в массиве больше, чем инициализаторов, элементы, для которых значения не указаны, обнуляются:
int b[5] = {3, 2, 1}; // b[0]=3, b[1]=2, b[2]=1, b[3]=0, b[4]=0
Размерность массива вместе с типом его элементов определяет объём памяти, необходимый для размещения массива, которое выполняется на этапе компиляции, поэтому размерность может быть задана только целой положительной константой. Если при описании массива не указана размерность, то в этом случае компилятор выделит память по количеству инициализирующих значений. Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках. Рассмотрим пример программы, которая подсчитывает сумму элементов массива:
int main() {
const int N=5; // размер массива
int i, sum=0, arr[N]={3, 4, 5, 4, 4}; //arr[0]=3, arr[1]=4, arr[2]=5, ...
for(i=0; i<N; i++) sum = sum + arr[i];
cout << "Summa elementov: " << sum;
getch(); return 0; }
Как видно из данного примера, размерность массивов предпочтительнее задавать с помощью именованных констант, поскольку при таком подходе для её изменения достаточно скорректировать значение константы всего лишь в одном месте программы. Обратите внимание, что последний элемент массива имеет номер, на единицу меньший заданной размерности N.
Рассмотрим ещё один пример, демонстрирующий каким образом происходит инициализация элементов массива в процессе работы программы. Напишем программу, в которой пользователю предлагается ввести серию из шести значений, представляющих собой объёмы продаж изделий за каждый день недели (исключая воскресенье), а затем программа вычисляет среднее арифметическое этих значений.
int main() {
const int SIZE = 6; // 6 дней
double prod[SIZE], sum = 0, sred;
int j;
cout << "Vvedite ob'em prodag za kagdyi den:\n";
for(j = 0; j < SIZE; j++)
cin >> prod[j]; // ввод объема продаж за день
for(j = 0; j < SIZE; j++)
sum += prod[j]; // вычисление объема за 6 дней
sred = sum / SIZE; // вычисление среднего арифметического
cout << "Sredniy ob'em: " << sred << endl;
getch(); return 0;
}