вторник, 29 октября 2013 г.

Одномерные массивы

  Сегодняшней статьей хочу открыть цикл статей по массивам, и принципам работы с ними. Данный цикл будет включать в себя 3 отдельных статьи по одномерным, многомерным и динамическим массивам.
  Массивы, очень интересный и полезный способ организации однотипных данных в программе. И если мы оперируем некоторым количеством однотипных переменных, их иногда бывает очень удобно представить в виде массива данных,
помещенных в одну единственную переменную. В этом плане массив подобен русской матрешке, только каждая однотипная матрешка находящаяся внутри, называется элементом массива и имеет собственный числовой индекс. По этому индексу ее можно легко найти, отличить от других, поместить в нее или наоборот извлечь какие либо данные. В общем иногда для понимания лучше рассмотреть ряд примеров, чем разбираться в дебрях теории.  
   Рассмотрим рисунок ниже...

Массив
 
  Здесь представлен одномерный массив - a, переменных типа Integer, где в каждой конкретной коробочке (переменной) содержится соответствующее значение, в первой -10, во второй 20, в третьей 30 и т.д. Значениями этими можно оперировать, изменять, сравнивать, проводить над ними арифметические операции и прочее... Допустим нам нужно сложить содержимое первой и четвертой коробок, а результат поместить в третью. Для этого обращаемся к их содержимому через индексы. Итак наше сложение будет выглядеть, следующим образом:

a[3]:=a[1]+a[4];

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

var a: array[1..5] of Integer;

   Здесь

a: - наша переменая,
array и of - специальные зарезервированные слова, array - в переводе на русский означает -"массив" и указывает на то что, объявляется массив данных, of - указывает на принадлежность массива к данным определенного типа, после него обычно указывается тип помещенных в него данных, в нашем случае это Integer, (хотя можно указывать и String и Char и другие типы данных). Цифры через две точки друг от друга в квадратных скобках
[1..5]  - означают размер массива - количество переменных или констант содежащих данные, в нашем случае указан размер от 1 до 5 ти. А вообще нумерация массивов может начинаться с нуля.

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

   1) Помещаем на форму компоненты Label, Edit и Button;

   2) Очищаем свойство Caption у Label и свойство Text у Edit, а в свойстве Caption у Button пишем слово: - Рассичтать

   3) В разделе var листинга, объявляем переменные и массив:

   b: Integer;
   a: array [1..12] of string;

   4) Cоздаем собственную функцию, и назовем ее number, для этого в разделе private листинга пишем:

   function number:Integer; и нажимаем клавиши Ctrl+Shift+C;

   5) В сгенерированном шаблоне описываем нашу функцию function TForm1.number: Integer;

begin

If Edit1.Text = IntToStr(1) then
b:=1;
If Edit1.Text = IntToStr(2) then
b:=2;
If Edit1.Text = IntToStr(3) then
b:=3;
If Edit1.Text = IntToStr(4) then
b:=4;
If Edit1.Text = IntToStr(5) then
b:=5;
If Edit1.Text = IntToStr(6) then
b:=6;
If Edit1.Text = IntToStr(7) then
b:=7;
If Edit1.Text = IntToStr(8) then
b:=8;
If Edit1.Text = IntToStr(9) then
b:=9;
If Edit1.Text = IntToStr(10) then
b:=10;
If Edit1.Text = IntToStr(11) then
b:=11;
If Edit1.Text = IntToStr(12) then
b:=12;

end;

    Эта функция, когда мы ее вызовем присвоит переменной b значение от 1-12 введенное пользователем.

   6) Создаем обработчик событий OnClick на кнопке и записываем следующий код:

   begin
   a[1]:= 'Январь'; // Присваиваем массиву названия месяцев;
   a[2]:= 'Февраль';
   a[3]:= 'Март';
   a[4]:= 'Апрель';
   a[5]:= 'Май';
   a[6]:= 'Июнь';
   a[7]:= 'Июль';
   a[8]:= 'Август';
   a[9]:= 'Сентябрь';
   a[10]:='Октябрь';
   a[11]:='Ноябрь';
   a[12]:='Декабрь';
   number; //Вызываем нашу функцию, то есть переменную b, c уже присвоенным пользователем значением;

   label1.Caption:=a[b]; //И подставляем ее в качестве индекса, для вызова в Label из массива, соответствующего значения месяца;

   end;

   7) Запускаем проект, и если вы выполнили в точности все, как предлагается в статье, то после ввода целого числа от 1-12, по нажатию кнопки, Label будет отображать название месяца соответствующее введенному числу. Такие вот дела. Но это еще не все. В этом примере да и вообще, массивы можно объявлять не только как переменные, но и как константы, в таком случае синтаксис объявления массива будет немного отличаться. Возьмем наш последний пример и представим массив для хранения названий месяцев - константами.

   Делается это так:

   const  a: array[1..12] of String = ('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' );

   После описания размерности и типа, ставим знак равенства, и в скобках по порядку перечисляем значения для массива. И вот здесь нужно быть крайне внимательным, поскольку количество указанное в размерности  [1..12] строго должно быть равно количеству присваиваемых значений. Если это условие не выполнится, то выскочит ошибка. Ну вот наверное пока достаточно, на сегодня, в следующей статье рассмотрим многомерные массивы.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.