Практическое конструирование. Конструирование регуляторов, использующих принцип фазовой автоподстройки частоты (ФАПЧ). Массивы.

Для хранения большого числа каких-либо однотипных данных в программировании применяются массивы.

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

Например, для вычисления точного значения количества оборотов двигателя, необходимо произвести несколько измерений (пускай 25) и вычислить среднее значение. Без использования массивов пришлось бы создавать 25 отдельных переменных (с разными именами), в которых бы хранились данные о числе оборотов для каждого измерения. Но это неудобно, особенно, если количество измерений должно быть достаточно большим. Массив же позволяет под одним именем хранить все данные о скорости вращения двигателя. Каждое значение будет в отдельном элементе массива (ячейке).

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

int a[25];

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

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

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

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

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

ВАЖНО: все элементы массива в языке 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. Туда же можно писать свои вопросы, если что-то не до конца понятно. (Не забудьте указать Фамилию и Имя).