Язык программирования Перфолента.Net - Официальный сайт

 Язык программирования Перфолента.Net - Официальный сайт.

Поиск   
Главная :: О проекте :: Контакты :: Обратная связь :: Благодарности :: ВходГость

   >   >   > 


Пример «Списки»

Файлы:

  • Синтаксис языка
    • Списки
      • Списки.перфо

Пример программы на языке программирования Перфо:



//Эта программа написана на языке программирования Перфо
//для демонстрации работы со списками 

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

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

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

//создадим список с вычисляемыми элементами
(Перем спис2 (Список (+ 1 2) (- 3 4 5)))
(Вывод спис2 пс)

//создадим список и добавим в него значение 5
(Вывод (ДЭЛ 5) пс)

//добавим в список элементы
(Вывод (ДЭЛ (Список 1 2 3) 4 5 6) пс)
//то же самое с переменной
(Перем спис2 (Список 1 2 3))
(ДЭЛ спис2 4 5 6)
(Вывод спис2 пс)

//проверим действие СЭЛ
(Вывод "СЭЛ " (СЭЛ 5 6 7) пс)
(Вывод "СЭЛ " (СЭЛ 5 (Список 6 7)) пс)
//внимание! СЭЛ складывает списки не рекурсивно!
(Вывод "СЭЛ " (СЭЛ (Список 4 5) (Список 6 7 (Список 8 9))) пс)

//проверим, что это список
(Вывод "Список? " (Список? спис1) пс) //Да
(Вывод "Список? " (Список? 222) пс)   //Нет

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

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

//выводим остальные элементы списка (это будет новый список без первого элемента)
(Вывод "остальные элементы без первого: " (ОЭЛ спис1) пс)
//аналог ОЭЛ
(Вывод "остальные элементы без первого: " (ОстальныеЭлементы спис1) пс)

//выводим остальные элементы списка (это будет новый список без 3-х первых элементов)
(Вывод "остальные элементы без 3-х первых: " (ОЭЛ спис1 3) пс)

//аналог ОЭЛ
(Вывод "кроме первого: " (КромеПервого спис1) пс)

//аналог ОЭЛ
(Вывод "кроме 3-х первых: " (КромеПервых спис1 3) пс)

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

//отрежем 2 элемента слева
(Вывод "Лев  2: " (Лев спис1 2) пс)
//отрежем слева ноль элементов
(Вывод "Лев  0: " (Лев спис1 0) пс)
//отрежем слева больше, чем есть в списке
(Вывод "Лев 20: " (Лев спис1 20) пс)
//не указали количество
(Вывод "Лев   : " (Лев спис1) пс)

//отрежем 2 элемента справа
(Вывод "Прав  2: " (Прав спис1 2) пс)
//отрежем справа ноль элементов
(Вывод "Прав  0: " (Прав спис1 0) пс)
//отрежем справа больше, чем есть в списке
(Вывод "Прав 20: " (Прав спис1 20) пс)
//не указали количество
(Вывод "Прав   : " (Прав спис1) пс)

//отрежем 2 элемента начиная со 2-го
(Вывод "Сред 2 2: " (Сред спис1 2 2) пс)
//отрежем 0 элементов начиная со 2-го
(Вывод "Сред 2 0: " (Сред спис1 2 0) пс)
//отрежем больше, чем есть в списке начиная со 2-го
(Вывод "Сред 2 20: " (Сред спис1 2 20) пс)
//не указали количество
(Вывод "Сред 2   : " (Сред спис1 2) пс)
//не указали оба параметра
(Вывод "Сред     : " (Сред спис1) пс)

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

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

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

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

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

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

//проверим работу со списками
(Перем спис4 (Список 1 2 3 4))
(УЭЛ спис4 100)
(УЭЛ спис4 200 1)
//аналог УЭЛ
(УстановитьЭлемент спис4 300 2)
(Вывод "Спис4: " спис4 пс)

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

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

//проверим функцию СрезСтроки
(Вывод "Срезы строки:" пс)
(Вывод (СрезСтроки "Вася+Ася" 5) пс)
(Вывод (СрезСтроки "Вася+Ася" 5 7) пс)
(Вывод (СрезСтроки "Вася+Ася" 5 7 1) пс)
(Вывод (СрезСтроки "Вася+Ася" 0 Неопределено 2) пс)
(Вывод (СрезСтроки "Вася+Ася" Неопределено 0 -1) пс)

//проверим функцию СрезМассива
(Вывод "Срезы массива:" пс)
(Перем масВас (. "Вася+Ася" ВМассивСимволов))
(Вывод (.(СрезМассива масВас 5)Представление) пс)
(Вывод (.(СрезМассива масВас 5 7)Представление) пс)
(Вывод (.(СрезМассива масВас 5 7 1)Представление) пс)
(Вывод (.(СрезМассива масВас 0 Неопределено 2)Представление) пс)
(Вывод (.(СрезМассива масВас Неопределено 0 -1)Представление) пс)






К началу статьи


Вернуться в раздел:
Примеры по языку Перфо

Перейти в раздел:
Примеры
  Поддержи проект!

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

  Новости:
      21.01.2026 На сайт добавлена статья "Конструируем класс. События"
      20.01.2026 Опубликован новый релиз 0.4.18.0_NY языка программирования Перфолента.Net
      29.12.2025 Анонс: Новая возможность - разрабатываем веб-сайты, веб-приложения и веб-API на Перфоленте!
      07.06.2025 Небольшие дополнения к документации на сайте - описание атрибута поля &Атомарное
      09.05.2025 На сайте опубликован релиз 0.4.16.0_SE дистрибутива языка программирования Перфолента.Net
      27.04.2025 Дополнена статья про циклы
      04.01.2025 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.15.0_CE
      23.09.2024 Опубликована новая статья: "Конструируем класс. Делегаты."
      30.08.2024 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.14.0
      24.05.2024 Обновлён справочный раздел сайта
      01.07.2023 Новая версия 0.4.13.0 языка программирования Перфолента.Net
       Все новости