Одномерные массивы. Цикл с параметром 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Одномерные массивы. Цикл с параметром



Цель работы: Приобрести опыт работы с одномерными массивами. Изучить организацию циклов с параметром.

 

Краткие теоретические сведения

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

 

Объявление массива

 

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

Имя: array [нижний_индекс..верхний_индекс] of тип;

где:

имя — имя массива;

array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;

нижний_индекс и верхний_индекс — целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;

тип — тип элементов массива (базовый тип).

Такой массив называется одномерным. Если же при объявлении массива указывают несколько нижних и верхних индексов, то такой массив называется многомерным.

Примеры объявления одномерных массивов:

temper:array[1..31] of real;

коef:array[0..2] of integer;

name:array[1..30] of string[25];

При описании массива удобно использовать именованные константы. Именованная константа объявляется в разделе описания констант, который обычно располагают перед разделом описания переменных. Начинается раздел описания констант словом const. В инструкции объявления именованной константы указывают имя константы и ее значение, которое отделяется от имени символом "равно". Например, чтобы объявить именованную константу N, значение которой равно 10, в раздел const надо записать инструкцию: N=10. После объявления именованной константы ее можно использовать в программе как обычную числовую или символьную константу.

Приведем пример объявления с помощью константы массива, состоящего из 10 элементов типа Integer:

const

n=10;

var

a:array [1..n] of integer;

Существует еще один способ объявления массивов – с помощью раздела описания типов, который располагается перед разделом описания переменных и начинается словом type. В разделе описания типов можно вводить новые типы данных:

наименование_типа = описание_типа;

Пример описания массива:

const

n=10;

type

mass=array [1..n] of integer;

var

a:mass;

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

a[1]:=4;

d:=a[2]+a[3]-a[4];

ShowMessage(name[n]);

temper[i]:= StrToFloat(Edit1.text);

Индекс не должен выходить за пределы диапазона, указанного в описании массива в квадратных скобках.

Цикл с параметром

Инструкция for используется в том случае, если некоторую последовательность действий (инструкций программы) надо выполнить несколько раз, причем число повторений заранее известно. В общем виде инструкция for записывается следующим образом:

for <счетчик>:= <нач_знач> to <кон_знач> do

begin

// здесь операторы, которые надо выполнить несколько раз

end

где:

· счетчик — переменная-счетчик числа повторений инструкций цикла;

· нач_знач-- выражение, определяющее начальное значение счетчика циклов;

· кон_знач — выражение, определяющее конечное значение счетчика циклов.

Переменная счетчик, выражения нач_знач и кон_знач должны быть целого типа. Обычно в качестве счетчика используется переменная типа byte. Количество повторений инструкций цикла можно вычислить по формуле:

(кон_знач — нач_знач + 1).

Примеры:

for i:=l to 10 do

begin

label1.caption:=label1.caption + '*';

end;

for i: =1 to n do s:= s+i;

Если между begin и end находится только один оператор, то слова begin и end можно не писать.

Алгоритм, соответствующий инструкции for, представлен на рис. 4.1. Обратите внимание, что если начальное значение счетчика больше конечного значения, то последовательность операторов между begin и end не будет выполнена ни разу.

Кроме того, после каждого выполнения инструкций тела цикла счетчик циклов увеличивается автоматически.

 

 

Рис. 4.1.. Алгоритм инструкции for

 

Переменную-счетчик можно использовать внутри цикла (но ни в коем случае не изменять). Например:

tabl: = '';

for i:=1 to 5 do

tabl:=tabl+IntToStr(i)+' '+IntToStr(i*i)+chr(13);

Переменная tabl будет содержать изображения таблицы квадратов чисел.

Если в инструкции for вместо слова to записать downto, то после очередного выполнения инструкций тела цикла значение счетчика будет не увеличиваться, а уменьшаться.

 

Инициализация массива

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

Имя:array [нижний_индекс..верхний_индекс] of тип = (список);

где список — разделенные запятыми значения элементов массива.

Например:

a: array[10] of integer = (0,0,0,0,0,0,0,0,0,0);

Обратите внимание, что количество элементов списка инициализации должно соответствовать размерности массива. Если это будет не так, то компилятор выведет cообщение об ошибке:

Number of elements differs from declaration

(количество элементов не соответствует указанному в объявлении).

При попытке инициализировать локальный массив компилятор выводит сообщение об ошибке:

Cannot initialize local variables

(локальная переменная не может быть инициализирована).

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

for i:= 1 to 10 do

a[i]:= 0;

Операции с массивами

Типичными операциями при работе с массивами являются:

· вывод массива;

· ввод массива;

· поиск максимального или минимального элемента массива;

· поиск заданного элемента массива;

· сортировка массива.

Вывод массива

Под выводом массива понимается вывод на экран монитора (в диалоговое окно) значений элементов массива.

Если в программе необходимо вывести значения всех элементов массива, то для этого удобно использовать инструкцию for, при этом переменная-счетчик инструкции for может быть использована в качестве индекса элемента массива.

Пример:

for i:=1 to n do

Label1.Caption:=Label1.Caption+IntToStr(b[i])+#13;

В данном примере на каждом шаге цикла к свойству Caption компонента Label1 добавляется изображение еще очередного элемента массива и символ перехода на новую строку (#13).

Вывод можно осуществить и с помощью поля Memo:

for i:=1 to n do

Memo1.Lines.Add(IntToStr(b[i]));

 

Ввод массива

Под вводом массива понимается процесс получения от пользователя (или из файла) во время работы программы значений элементов массива.

Можно для каждого элемента массива создать поле ввода. Однако если требуется ввести достаточно большой массив, то такое решение неприемлемо.

Очевидно, что последовательность чисел удобно вводить в строку таблицы, где каждое число находится в отдельной ячейке. Ниже рассматриваются два варианта организации ввода массива - с использованием компонентов StringGrid и Memo.

 



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 173; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.12.101 (0.01 с.)