Перфо - Списки — различия между версиями

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
м
м
 
(не показаны 3 промежуточные версии этого же участника)
Строка 5: Строка 5:
 
  (Список Элемент1 .. ЭлементН) - создание списка
 
  (Список Элемент1 .. ЭлементН) - создание списка
 
  (Длина Список) - количество элементов списка (работает так же для строк и коллекций)
 
  (Длина Список) - количество элементов списка (работает так же для строк и коллекций)
  (ПЭЛ Список Индекс) - '''получить''' значение элемента (работает так же для строк, массивов и индексируемых коллекций). Если не указан Индекс то получает первый элемент списка?
+
  (ПЭЛ Список Индекс) - '''получить''' значение элемента (работает так же для строк, массивов и индексируемых коллекций). Если не указан Индекс то получает первый элемент списка.
  
 
  (УЭЛ Список Значение Индекс) - '''установить''' значение элемента (работает так же для массивов и индексируемых коллекций)
 
  (УЭЛ Список Значение Индекс) - '''установить''' значение элемента (работает так же для массивов и индексируемых коллекций)
Строка 13: Строка 13:
 
  (Сред Список НомерНачальногоЭлемента КоличествоЭлементов) - отрезать ('''вырезать''') от списка указанное количество элементов начиная с указанного номера.
 
  (Сред Список НомерНачальногоЭлемента КоличествоЭлементов) - отрезать ('''вырезать''') от списка указанное количество элементов начиная с указанного номера.
  
Простой список
+
== Простой список ==
  
 
  (Перем спис1 (Список 1 2 3 4 5))
 
  (Перем спис1 (Список 1 2 3 4 5))
 
  (Вывод спис1 пс)
 
  (Вывод спис1 пс)
  
Список с вычисляемыми элементами
+
== Список с вычисляемыми элементами ==
  
 
  (Перем спис2 (Список (+ 1 2) (- 3 4 5)))
 
  (Перем спис2 (Список (+ 1 2) (- 3 4 5)))
 
  (Вывод спис2 пс)
 
  (Вывод спис2 пс)
 +
 +
== Проверка типа переменной ==
  
 
проверим, что это список (тип переменной)  
 
проверим, что это список (тип переменной)  
Строка 27: Строка 29:
 
  (Вывод "Список? " (Список? спис1) пс)
 
  (Вывод "Список? " (Список? спис1) пс)
  
Длина списка
+
== Длина списка ==
 
   
 
   
 
  (Вывод "длина списка: " (Длина спис1) пс)
 
  (Вывод "длина списка: " (Длина спис1) пс)
  
выводим 1-й элемент списка (т.к. не указан индекс)
+
выводим 1-й элемент списка (т.к. не указан Индекс)
  
 
  (Вывод "первый элемент: " (ПЭЛ спис1) пс)
 
  (Вывод "первый элемент: " (ПЭЛ спис1) пс)
Строка 40: Строка 42:
  
 
  (Вывод "остальные элементы: " (ОЭЛ спис1) пс)
 
  (Вывод "остальные элементы: " (ОЭЛ спис1) пс)
 +
 +
(Вывод "остальные элементы Кроме Первого: " (КромеПервого спис1) пс)
  
 
в языке Перфо со списками могут работать функции Лев, Прав и Сред, так же как они работают со строками
 
в языке Перфо со списками могут работать функции Лев, Прав и Сред, так же как они работают со строками
Строка 48: Строка 52:
  
 
  (Вывод "Лев 2: " (Лев спис1 2) пс)
 
  (Вывод "Лев 2: " (Лев спис1 2) пс)
 +
(Вывод "Лев 2: " (Слева спис1 2) пс)
  
 
отрежем слева ноль элементов
 
отрежем слева ноль элементов
  
 
  (Вывод "Лев 0: " (Лев спис1 0) пс)
 
  (Вывод "Лев 0: " (Лев спис1 0) пс)
 +
(Вывод "Лев 0: " (Слева спис1 0) пс)
  
 
отрежем слева больше, чем есть в списке
 
отрежем слева больше, чем есть в списке
  
 
  (Вывод "Лев 20: " (Лев спис1 20) пс)
 
  (Вывод "Лев 20: " (Лев спис1 20) пс)
 +
(Вывод "Лев 20: " (Слева спис1 20) пс)
  
 
отрежем 2 элемента справа
 
отрежем 2 элемента справа
Строка 70: Строка 77:
  
 
В языке Перфо функция ПЭЛ может работать не только со списками но и со строками, массивами, а так же с коллекциями имеющими свойство Item.
 
В языке Перфо функция ПЭЛ может работать не только со списками но и со строками, массивами, а так же с коллекциями имеющими свойство Item.
 +
 
Причем, третьим операндом может быть указан индекс получаемого элемента, который по умолчанию равен нулю...
 
Причем, третьим операндом может быть указан индекс получаемого элемента, который по умолчанию равен нулю...
  
 
проверим работу со списками
 
проверим работу со списками
  
(Вывод "Второй элмент списка (Список 1 2 3): " (ПЭЛ (Список 1 2 3) 1) пс)
+
(Вывод "Второй элмент списка (Список 1 2 3): " (ПЭЛ (Список 1 2 3) 1) пс)
  
 
проверим работу со строками
 
проверим работу со строками
Строка 106: Строка 114:
 
проверим работу с массивами
 
проверим работу с массивами
  
(УЭЛ мас "100")
+
(УЭЛ мас "100")
(УЭЛ мас "300" 2)
+
(УЭЛ мас "300" 2)
(Вывод "мас: " (мас.Представление) пс)
+
(Вывод "мас: " (мас.Представление) пс)
  
 
проверим работу с коллекциями
 
проверим работу с коллекциями

Текущая версия на 23:23, 27 октября 2020

Перфо. Списки (из файла примера)

В этом примере использованы следующие команды для работы со списком:

(Список Элемент1 .. ЭлементН) - создание списка
(Длина Список) - количество элементов списка (работает так же для строк и коллекций)
(ПЭЛ Список Индекс) - получить значение элемента (работает так же для строк, массивов и индексируемых коллекций). Если не указан Индекс то получает первый элемент списка.
(УЭЛ Список Значение Индекс) - установить значение элемента (работает так же для массивов и индексируемых коллекций)
(ОЭЛ Список) - возвращает список остальных элементов кроме первого (работает так же с массивами и индексируемыми коллекциями)
(Лев Список КоличествоЭлементов) - отрезать от списка слева указанное количество элементов 
(Прав Список КоличествоЭлементов) - отрезать от списка справа указанное количество элементов 
(Сред Список НомерНачальногоЭлемента КоличествоЭлементов) - отрезать (вырезать) от списка указанное количество элементов начиная с указанного номера.

Простой список

(Перем спис1 (Список 1 2 3 4 5))
(Вывод спис1 пс)

Список с вычисляемыми элементами

(Перем спис2 (Список (+ 1 2) (- 3 4 5)))
(Вывод спис2 пс)

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

проверим, что это список (тип переменной)

(Вывод "Список? " (Список? спис1) пс)

Длина списка

(Вывод "длина списка: " (Длина спис1) пс)

выводим 1-й элемент списка (т.к. не указан Индекс)

(Вывод "первый элемент: " (ПЭЛ спис1) пс)
(Вывод "первый элемент: " (Получить спис1) пс)

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

(Вывод "остальные элементы: " (ОЭЛ спис1) пс)

(Вывод "остальные элементы Кроме Первого: " (КромеПервого спис1) пс)

в языке Перфо со списками могут работать функции Лев, Прав и Сред, так же как они работают со строками

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

отрежем 2 элемента слева

(Вывод "Лев 2: " (Лев спис1 2) пс)
(Вывод "Лев 2: " (Слева спис1 2) пс)

отрежем слева ноль элементов

(Вывод "Лев 0: " (Лев спис1 0) пс)
(Вывод "Лев 0: " (Слева спис1 0) пс)

отрежем слева больше, чем есть в списке

(Вывод "Лев 20: " (Лев спис1 20) пс)
(Вывод "Лев 20: " (Слева спис1 20) пс)

отрежем 2 элемента справа

(Вывод "Прав 2: " (Прав спис1 2) пс)

отрежем справа ноль элементов

(Вывод "Прав 0: " (Прав спис1 0) пс)

отрежем справа больше, чем есть в списке

(Вывод "Прав 20: " (Прав спис1 20) пс)

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

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

проверим работу со списками

(Вывод "Второй элмент списка (Список 1 2 3): " (ПЭЛ (Список 1 2 3) 1) пс)

проверим работу со строками

(Вывод "Третий символ из строки АБВГД: " (ПЭЛ "АБВГД" 2) пс)

проверим работу с массивами

(Перем мас (Массив 5 Строка))
(мас.Установить "Строка с индексом 2." 2)
(Вывод "Значение элемента массива с индексом 2: " (ПЭЛ мас 2) пс)

проверим работу с коллекциями

(Перем кол (Новый Массив))
(кол.Добавить "А")
(кол.Добавить "Б")
(кол.Добавить "В")
(Вывод "Второй элемент коллекции: " (ПЭЛ кол 1) пс)

функция УЭЛ может установить значение элемента в списке, в массиве или в индексируемой коллекции

проверим работу со списками

(Перем спис4 (Список 1 2 3))
(УЭЛ спис4 100) 
(УЭЛ спис4 200 1)
(УЭЛ спис4 300 2)
(Вывод "Спис4: " спис4 пс)

проверим работу с массивами

(УЭЛ мас "100")
(УЭЛ мас "300" 2)
(Вывод "мас: " (мас.Представление) пс)

проверим работу с коллекциями

(УЭЛ кол "100")
(УЭЛ кол "200" 1)
(Вывод "Первый элемент коллекции: " (ПЭЛ кол) пс)
(Вывод "Второй элемент коллекции: " (ПЭЛ кол 1) пс)

Перфо. Примеры