ЧП ПРОМКОД - Официальный сайт Телефоны ЧП ПРОМКОД: В Киеве: +38(044)38-38-773, В Херсоне: +38(0552)39-10-24

 Официальный сайт Частного предприятия «ПРОМКОД».

Поиск   
Главная :: О компании :: Контакты :: Обратная связь
  Навигатор:
Информация для клиентов
Доработки к Бухгалтерии для Украины ред. 1.2
Советы бухгалтеру
Язык программирования Перфолента.Net
  Все статьи

   >   >   >   > 



Массивы. Создание массивов, заполнение данными, обращения к элементам и другие операции с массивами.

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


Отображение массива в памяти компьютера

В языке программирования Перфолента.Net, как и во многих других языках, существуют встроенные в язык массивы.

В языке 1С версии 8, в отличие от 1С версии 7.7 массивы как часть языка отсутствуют (не считая коллекции с таким же названием). Поэтому многим программистам 1С будет не лишним ознакомиться с синтаксисом и приемами работы с массивами.

 

Массив — это набор данных одного типа. Например, массив целых чисел, массив строк, массив дат и т.д.

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

Умнику на заметку: Существуют понятия нумерация и индексация. Нумерация начинается с единицы, а индексация начинается с нуля. Индекс элемента на единицу меньше, чем его номер.

Для объявления массива в языке программирования Перфолента существует оператор Массив (странно, если бы он назывался иначе). Выглядит это так:

Массив А[9] тип Целое

В этом примере мы создали 10 (а не 9) элементов типа Целое, т.к. существует элемент с индексом 0, к которому мы можем обратиться так А[0]. Это значит, что при создании массива мы указываем верхний индекс, а не количество элементов, как в некоторых других языках программирования. Если вы случайно укажете количество элементов, то ничего страшного не произойдет, у вас просто будет одно лишнее место в массиве.

Умнику на заметку: К моменту объявления имя массива не должно быть занято.

В одном операторе мы можем создать несколько массивов одного типа:

Массив Фамилии[99], Имена[99], Отчества[99] тип Строка

Мы так же можем задать элементам массива начальное значение, указав его после знака равно:

Массив А[5] тип Целое = 1

В результате в массиве будет 6 единиц. Проверим это:

ВыводСтроки А.Представление

Получилось: 1 1 1 1 1 1

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

Массив А[5] = 1            //массив получит тип Целое
Массив ФИО[99] = ""  //массив получит тип Строка

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

Т = Новый ТекстовыйДокумент //создали один экземпляр текстового документа
Массив АА[9] = Т //все элементы массива получат ссылку на один и тот же единственный экземпляр объекта ТекстовыйДокумент
Массив ББ[9] = Новый ТекстовыйДокумент //каждый элемент массива получит ссылку на собственный экземпляр объекта ТекстовыйДокумент, которых будет создано 10 штук

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

ВерхнийИндекс=9
Массив Б[ВерхнийИндекс] = 0
КоличествоЭлементов=10
Массив В[КоличествоЭлементов - 1] = 0

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

Массив МА[3] = "Вася" //все элементы получат значение Вася

Для Инд=0 По 3
    ВыводСтроки МА[Инд] //выведет слово Вася 4 раза
    МА[Инд]=МА[Инд]+(Инд+1)  //вопрос зануды: "А что будет, если убрать круглые скобки?)
    ВыводСтроки МА[Инд] //выведет Вася1, Вася2, Вася3, Вася4 
КонецЦикла

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

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

мас = Новый Целое[99]

Вместо типа Целое в этом примере мог бы быть любой другой тип, даже ТекстовыйДокумент.

МояПроцедура(Новый ТекстовыйДокумент[99])  //передали новый Массив в процедуру

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

Перем мЦ тип Целое[] = Неопределено //переменной мЦ нельзя присвоить целое число, но можно присвоить массив целых чисел, т.к. тип Целое[ ] это тип массива целых чисел

Перем мС тип Строка[] = Неопределено //переменной мС нельзя присвоить строку, но можно присвоить массив строк, т.к. тип Строка[ ] это тип массива строк

Точно так же задаются типы параметрам процедуры, если в параметр надо передать массив элементов определенного типа:

Процедура  МояПроцедура( МассивДокументов тип ТекстовыйДокумент[] ) //квадратные скобки тут обязательны, т.к. мы хотим передать массив документов, а не один документ
    //....        
КонецПроцедуры

Умнику на заметку: Существуют многомерные массивы, для обращения к элементам которых необходимо указывать несколько индексов, один индекс для каждого измерения. Например, МАС[3, 5] имеет 4 * 6 = 24 элемента. Для создания типа многомерного массива в квадратных скобках необходимо указывать соответствующее количество запятых, например, тип двухмерного массива целых чисел объявляется так: Целое[ , ]. Многомерные массивы будут рассмотрены в другой статье.

Заполнить массив данными можно как в цикле (пример выше), так и с помощью инициализатора. Причем инициализатор может заполнить существующий массив или создать новый:

Массив масЧисла[9] тип Целое
масЧисла{0,1,2,3,4,5,6,7,8,9} //заполняем существующий массив
масДниНедели = {"Пн","Вт","Ср","Чт","Пт","Сб","Вс"} //создали новый Массив строк

И, на конец, массивы можно изменять, удалять, очищать используя специальные операторы:

//пересоздание массива с новым размером
//содержимое массива пропадает
мСтр[0]="Определено!"
МассивНовый мСтр[2]

    
//изменение размера массива
//содержимое сохраняется до верхней границы нового размера
мСтр[0]="Элементы сохранились при изменении размера массива..."
МассивИзменить мСтр[1]

    
//Очистка массива
//Элементам устанавливаются значения по умолчанию для заданного типа элементов
МассивОчистить мСтр, масИниЦел2М

    
//Удаление массива
//Переменной массива присваивается значение Неопределено
МассивУдалить мСтр, масИниЦел2М    

Массивы являются перечисляемыми объектами, поэтому можно перебирать все элементы с помощью цикла Для Каждого:  

Для Каждого Эл Из масДниНедели
    ВыводСтроки Эл //в переменную Эл по очереди попадают все элементы массива
КонецЦикла    

На этом пока все. Успехов в работе с массивами.

 



  Новости ПРОМКОД:
      27.10.2019 Обновился до версии 0.4 дистрибутив языка программирования Перфолента.Net
      23.07.2019 Опубликована первая пробная версия языка программирования Перфолента
      03.07.2018 На портале поддержки пользователей опубликованы внешние формы отчетов "Декларация по НДС, Уточняющий расчет по НДС"
      27.06.2018 На сайте поддержки пользователей опубликована информация о проблемных ситуациях в типовых конфигурациях для Украины
      21.06.2018 Выпущены новые релизы типовых конфигураций для Украины на платформе 1С:Підприємство 7.7
       Все новости ПРОМКОД

  Развлечения:
Загрузка...
 



Официальный сайт ЧП ПРОМКОД
Copyright (c) ЧП ПРОМКОД, 2014-2020