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

Материал из ТХАБ.РФ
Перейти к: навигация, поиск
м
м
 
(не показано 5 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
'''Перфо. Списки''' (из файла примера)
 
'''Перфо. Списки''' (из файла примера)
 
* [[Перфо. Пример 1]]
 
* [[Перфо. Пример 2]]
 
* [[Перфо. Пример 3]]
 
  
 
В этом примере использованы следующие команды для работы со списком:
 
В этом примере использованы следующие команды для работы со списком:
Строка 9: Строка 5:
 
  (Список Элемент1 .. ЭлементН) - создание списка
 
  (Список Элемент1 .. ЭлементН) - создание списка
 
  (Длина Список) - количество элементов списка (работает так же для строк и коллекций)
 
  (Длина Список) - количество элементов списка (работает так же для строк и коллекций)
  (ПЭЛ Список Индекс) - получить значение элемента (работает так же для строк, массивов и индексируемых коллекций)
+
  (ПЭЛ Список Индекс) - '''получить''' значение элемента (работает так же для строк, массивов и индексируемых коллекций). Если не указан Индекс то получает первый элемент списка.
  (УЭЛ Список Значение Индекс) - установить значение элемента (работает так же для массивов и индексируемых коллекций)
+
 
  (ОЭЛ Список) - возвращает список остальных элементов кроме первого (работает так же с массивами и индексируемыми коллекциями)
+
  (УЭЛ Список Значение Индекс) - '''установить''' значение элемента (работает так же для массивов и индексируемых коллекций)
  (Лев Список КоличествоЭлементов) - отрезать от списка слева указанное количество элементов  
+
  (ОЭЛ Список) - возвращает список остальных элементов '''кроме первого''' (работает так же с массивами и индексируемыми коллекциями)
  (Прав Список КоличествоЭлементов) - отрезать от списка справа указанное количество элементов  
+
  (Лев Список КоличествоЭлементов) - отрезать от списка '''слева''' указанное количество элементов  
  (Сред Список НомерНачальногоЭлемента КоличествоЭлементов) - отрезать от списка указанное количество элементов начиная с указанного номера.
+
  (Прав Список КоличествоЭлементов) - отрезать от списка '''справа''' указанное количество элементов  
 +
  (Сред Список НомерНачальногоЭлемента КоличествоЭлементов) - отрезать ('''вырезать''') от списка указанное количество элементов начиная с указанного номера.
  
создадим простой список
+
== Простой список ==
  
 
  (Перем спис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 пс)
  
проверим, что это список
+
== Проверка типа переменной ==
 +
 
 +
проверим, что это список (тип переменной)
  
 
  (Вывод "Список? " (Список? спис1) пс)
 
  (Вывод "Список? " (Список? спис1) пс)
  
длина списка
+
== Длина списка ==
 
   
 
   
 
  (Вывод "длина списка: " (Длина спис1) пс)
 
  (Вывод "длина списка: " (Длина спис1) пс)
  
выводим первый элемент списка
+
выводим 1-й элемент списка (т.к. не указан Индекс)
  
 
  (Вывод "первый элемент: " (ПЭЛ спис1) пс)
 
  (Вывод "первый элемент: " (ПЭЛ спис1) пс)
 +
 +
(Вывод "первый элемент: " (Получить спис1) пс)
  
 
выводим остальные элементы списка (это будет новый список без первого элемента)
 
выводим остальные элементы списка (это будет новый список без первого элемента)
  
 
  (Вывод "остальные элементы: " (ОЭЛ спис1) пс)
 
  (Вывод "остальные элементы: " (ОЭЛ спис1) пс)
 +
 +
(Вывод "остальные элементы Кроме Первого: " (КромеПервого спис1) пс)
  
 
в языке Перфо со списками могут работать функции Лев, Прав и Сред, так же как они работают со строками
 
в языке Перфо со списками могут работать функции Лев, Прав и Сред, так же как они работают со строками
Строка 49: Строка 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 элемента справа
Строка 71: Строка 77:
  
 
В языке Перфо функция ПЭЛ может работать не только со списками но и со строками, массивами, а так же с коллекциями имеющими свойство Item.
 
В языке Перфо функция ПЭЛ может работать не только со списками но и со строками, массивами, а так же с коллекциями имеющими свойство Item.
 +
 
Причем, третьим операндом может быть указан индекс получаемого элемента, который по умолчанию равен нулю...
 
Причем, третьим операндом может быть указан индекс получаемого элемента, который по умолчанию равен нулю...
  
 
проверим работу со списками
 
проверим работу со списками
  
(Вывод "Второй элмент списка (Список 1 2 3): " (ПЭЛ (Список 1 2 3) 1) пс)
+
(Вывод "Второй элмент списка (Список 1 2 3): " (ПЭЛ (Список 1 2 3) 1) пс)
  
 
проверим работу со строками
 
проверим работу со строками
Строка 107: Строка 114:
 
проверим работу с массивами
 
проверим работу с массивами
  
(УЭЛ мас "100")
+
(УЭЛ мас "100")
(УЭЛ мас "300" 2)
+
(УЭЛ мас "300" 2)
(Вывод "мас: " (мас.Представление) пс)
+
(Вывод "мас: " (мас.Представление) пс)
  
 
проверим работу с коллекциями
 
проверим работу с коллекциями
Строка 117: Строка 124:
 
  (Вывод "Первый элемент коллекции: " (ПЭЛ кол) пс)
 
  (Вывод "Первый элемент коллекции: " (ПЭЛ кол) пс)
 
  (Вывод "Второй элемент коллекции: " (ПЭЛ кол 1) пс)
 
  (Вывод "Второй элемент коллекции: " (ПЭЛ кол 1) пс)
 +
 +
== Перфо. Примеры ==
 +
* [[Перфо. Пример 1]]
 +
* [[Перфо. Пример 2]]
 +
* [[Перфо. Пример 3]]
 +
* [[Перфо - Списки]]
 +
* [[Перфо - ПоВсем]]
 +
* [[Перфо - ПоКаждому]]
  
 
[[Категория:Перфо.NET]]
 
[[Категория:Перфо.NET]]

Текущая версия на 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) пс)

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