Практическое конструирование. Макетирование схем охранной сигнализации. Структуры данных. Массивы.

Для охраны здания, в некоторых случаях нужно определить, что к зданию приближается человек. Для определения расстояния применяется ультразвуковой датчик расстояния. Однако, иногда он дает неверный результат, в результате чего, может произойти ложное срабатывание системы охраны. Для того чтобы точнее измерить расстояние до препятствия, необходимо произвести замер расстояния несколько раз (например, 10) и вычислить среднее значение (или произвести другую математическую обработку). Для этого суммируются все значения расстояний и делятся на количество измерений. Чтобы сохранить все измеренные значения пришлось бы создавать соответствующее количество переменных с разными именами. Но это очень неудобно, особенно, если количество измерений достаточно большое. Поэтому для хранения большого числа каких-либо однотипных данных в программировании применяют массивы.

Массив – это структура данных, представленная в виде группы ячеек одного типа, объединенных под одним общим именем. Отдельная ячейка данных массива называется элементом массива.

Чтобы создать массив из 10 элементов, нужно указать тип элементов массива, имя массива и количество элементов в квадратных скобках, например:

int a[10];

где int  - это тип элементов массива, a – это его имя, 10 – это количество элементов массива.

Каждый элемент массива имеет свой индекс (порядковый номер), и чтобы к этому элементу обратиться, нужно указать имя массива и индекс элемента:

a[9]=5; - элементу массива с индексом 9 присваиваем значение 5;

cout<<a[3]; - выводим на экран значение элемента массива с индексом 3;

cin>>a[7]; -  вводим с клавиатуры число и записываем его в элемент массива с индексом 7.

ВАЖНО: все элементы массива в языке C++ нумеруются с нуля. Поэтому самый первый элемент массива будет иметь индекс 0, а самый последний – на 1 меньше, чем количество элементов массива (для массива из 25 элементов индекс последнего элемента будет равен 24). Если вы ошибетесь с индексом и выйдете за пределы массива, компилятор вам об этом не сообщит, но работа программы и даже операционной системы может быть нарушена!

На следующем рисунке представлено схематическое изображение массива с именем arr из 10 элементов, в котором хранятся какие-то данные. Обратите внимание на индексы элементов:

Если значения элементов массива уже известны, то заполнить массив, можно при его объявлении, перечислив значения элементов массива через запятую в фигурных скобках, например для массива из 5 элементов это можно сделать так:

int a[5] = {10, 7, 15, 1, 20}; 

Если выполнить команду cout<<a[0], то на экран будет выведено 10, а если cout<<a[3], то на экране мы увидим 1.

Предположим, что нам нужно измерять температуру воздуха каждые 2 часа в течение суток, и затем вычислить среднесуточную температуру. Для этого нам нужно внести в программу 12 значений температуры воздуха, затем сложить все полученные значения и поделить на 12.

Следующая программа выполняет данное действие.

Скачайте программу, написанную на языке C++, поместите скачанный файл ARRAY.CPP в папку C:\TCPP\BIN\.

Запустите DOSBox (Как настроить эту программу можно посмотреть ЗДЕСЬ).

Нажмите клавишу F3. Выберите файл ARRRAY.CPP и нажмите клавишу Enter.

tc_039

На экране появится текст программы:

tc_040

Рассмотрим эту программу подробнее:

#include<iostream.h>

#include<conio.h>  - подключаем два необходимых для работы программы модуля. (Смотри предыдущие уроки).

void main(){

  int temp[12]; - создаем массив с именем temp типа int, состоящий из 12 элементов. Здесь мы будем хранить значения температуры воздуха в течение суток.

  for (int i=0;i<12;i++){ -  цикл, в котором переменная i будет проходить значения от 0 до 11 (Описания цикла for смотри ЗДЕСЬ).

     clrscr(); - очищаем экран

     cout<<"Введите температуру, измеренную в "<<i*2<<":00\n"; - Выводим фразу о необходимости ввести температуру, измеренную в определенное время суток. Поскольку измерять необходимо каждые два часа, то мы будем измерять в 0:00, 2:00, 4:00, 6:00 и так далее до 22:00. Чтобы вычислить нужное время мы переменную i умножаем на 2. «\n» переводит курсор на следующую строчку.

     cin>>temp[i]; - на клавиатуре вводим значение температуры и нажимаем клавишу Enter. Введенное число запишется в соответствующий элемент массива.

  } – конец цикла for.

  int sum=0; - создаем переменную sum, в которой мы будем суммировать полученные значения температуры. Начальное значение суммы равно 0.

  for(i=0;i<12;i++) sum=sum+temp[i]; - используя цикл, проходим по всем элементам массива (переменная i проходит значения от 0 до 11) и добавляем значение каждого элемента массива к переменной sum. Конструкция sum=sum+temp[i] означает, что мы прибавляем к значению переменной sum значение элемента массива temp с индексом i, и полученную сумму присваиваем к переменной sum (другими словами увеличиваем значение переменной sum на значение элемента массива temp[i]). В языке C++ эту конструкцию можно записать короче: sum+=temp[i]; После прохождения всего цикла мы в переменной sum получаем сумму всех измеренных температур.

  sum=sum/12; - значение переменной sum целочисленно делим на 12 (количество измеренний) и результат заносим в переменную sum. В результате этой операции мы получили в переменной sum среднее значение температуры в течение суток. В языке C++ эту конструкцию можно записать следующим образом: sum/=12.

  clrscr(); - очищаем экран.

  cout<<"Среднесуточная температура составила: "<<sum<<" градусов."; - выводим значение среднесуточной температуры на экран.

  getch(); - ожидаем нажатия любой клавиши для выхода из программы.

} – конец функции main и всей программы.

Чтобы запустить программу, нажимаем комбинацию клавиш Alt+R, выбираем в появившемся меню пункт Run и нажимаем клавишу Enter. Ни в коем случае не нажимайте для запуска программы комбинацию клавиш Ctrl+F9 – это закроет DOSBox!

tc_041

Программа предлагает ввести температуру для 0:00 часов. Вводим значение, например 2:

tc_042

После нажатия клавиши Enter, программа запросит температуру для 2:00 и т.д. Последнее значение температуры программа запросит для 22:00:

tc_043

После нажатия клавиши Enter, программа выведет значение средней температуры за сутки:

tc_044

При нажатии на любую клавишу программа закроется.

ЗАДАНИЕ: 1) Измените программу таким образом, чтобы средняя температура вычислялась не целочисленно, а с использованием вещественных чисел. Пришлите скриншот или фотографию. 2) Напишите программу (или переделайте эту), которая будет вычислять среднюю оценку за контрольную работу в классе (пускай в классе учится 20 человек). Пришлите скриншот или фотографию.

Ответ можно прислать на электронную почту education@etriz.ru. Туда же можно писать свои вопросы, если что-то не до конца понятно. (Не забудьте указать Фамилию и Имя).