МАССИВЫ И РАБОТА С ФАЙЛАМИ

Объявления массивов и указателей. Массив представляет собой набор данных одного типа. Формат определения массива следующий:

тип_данных имя_массива[размер_массива];

 

Например, для представления данных о температуре можно воспользоваться следующим описанием:

int Temperatura[7];

 

Массив можно инициализировать во время определения:

int Temperatura[7]={ 20, 21, 17,16,27,22,19};

 

Если массив инициализируется, то его размер можно не указывать, например:

char Error[]=”Ошибка, файл не найден!”;

Многомерные массивы задаются указанием нескольких размеров, каждый из которых заключен в квадратные скобки:

double koordinate[8][2];

 

Такое описание определяет таблицу, содержащую два столбца и 8 строк.

При инициализации таких массивов можно не указывать только размер самого левого индекса:

int iarray[][3]={ {1,2,3},{9,11,4},{100,200,300}};

 

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

iarray[0][0],iarray[0][1],iarray[0][2],iarray[1][0],…,

iarray[2][1],iarray[2][2].

 

 

ДОСТУП К ЭЛЕМЕНТАМ МАССИВА

 

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

for (int idx=0;idx<7;idx++)

s+=Temperatura[idx];

 

Нумерация элементов массива начинается с нуля. Т.е. индекс массива определяет смещение используемого элемента относительно начала массива.

 

ПРОЦЕДУРЫ И ФУНКЦИИ

 

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

 

 

ОБЪЯВЛЕНИЕ ПРОЦЕДУР

 

Объявление процедуры позволяет связать идентификатор с блоком процедуры. Процедуру можно активизировать с помощью оператора вызова процедуры.

 

Проц <имя_процедуры>

( [<список_формальных_параметров>] )

[Оператор_1]

[Оператор_2]

...

[Оператор_N]

Кон Проц

СИГНАТУРА ПРОЦЕДУРЫ − имя процедуры и список её формальных параметров.

Запуск процедуры осуществляется с помощью оператора вызова процедуры, в котором содержатся имя процедуры и список фактических параметров. Операторы, которые должны выполняться при запуске процедуры, используются в операторной части процедуры (в теле процедуры). Если в содержащемся в процедуре операторе используется идентификатор этой же процедуры, то процедура будет выполняться рекурсивно (будет при выполнении обращаться сама к себе).

 

 

ОПРЕДЕЛЕНИЕ ФУНКЦИИ

 

В общем случае определение функции имеет следующий формат:

<возвращаемый тип> Имя_Функции ( параметры)

{

//Здесь следует тело функции,

//состоящее из операторов

}

 

Тип возвращаемого значения может быть одним из рассмотренных нами типов. Тип void означает, что функция не возвращает никакого значения. Кроме того, функция может возвращать и другие типы, например определенные пользователем. Если тип возвращаемого значения не указан, то по умолчанию он предполагается целочисленным (int). В списке параметров указываются имя и тип для каждой переменной, элементы списка разделяются запятыми. Для функций, которые не используют параметров, может быть вставлено ключевое слово void на месте списка параметров. Обратите внимание, что знак “точка с запятой” не ставится после списка параметров.

 

ПЕРЕДАЧА МАССИВОВ ФУНКЦИЯМ

 

Массивы можно передавать функциям. Для этого необходимо в объявлении параметров функции после имени массива поставить пару квадратных скобок:

int function(double a[],int size);

 

Обратите внимание, что размерность массива в функцию автоматически не передается. Это можно сделать, используя второй параметр, как показано в предыдущем примере.

При вызове функции необходимо просто указать имя фактического параметра:

x=function(myarray,50);

 

Функция получает доступ ко всем элементам массива и может их изменять. Для запрета изменения можно добавить модификатор const:

int function(const double a[],int size);