'Показать Содержание Описание языка Перфолента.NET'

Синтаксис языка Перфолента

2.1 Переменные. Объявление переменных, инициализация и их использование

2.2 Типы данных в языке Перфолента

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

2.4 Структура программы на языке Перфолента.Net

2.5 Условный оператор Если

2.6 Циклы в языке Перфолента

2.7 Оператор условного выбора блока кода Выбор Для

2.8 Функции и процедуры в языке Перфолента

2.9 Оператор Попытка. Структурная обработка ошибок

2.10 Работа с файлами

2.11 Директивы препроцессора. Выполнение действий перед компиляцией

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

3.1. Многозадачность и многопоточность в языке Перфолента.Net


Вопросы

1. Может ли функция ввернуть 2 значения ?

Возврат Значение1 и Значение2
Возврат $(А,Б,С)

посмотрите в примере кортежи...

Формат

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


Функция фИмяФункции (Поле1 тип Число, Поле2 тип Строка) тип Число 
        Объявление внутренних переменных
        Код функции
        Возврат ВозвращаемоеЗначение // типа Число
КонецФункции

Пример Функции

Функция фКоличествоЭмитентов(ДоходностьБезРиска тип Число, Доходность_С_Риском тип Число, цДопустимоеКоличествоДефолтов тип Число) тип Число 
      КоличествоЭмитентов = 100/ ((Доходность_С_Риском - ДоходностьБезРиска)/цДопустимоеКоличествоДефолтов)
      Возврат КоличествоЭмитентов
КонецФункции

Передача данных

Формат

Функция фИмяФункции ([Знач] Поле1 тип Число, Ссыл Поле2 тип Строка) тип Число 
              Объявление внутренних переменных
              Код функции
              Возврат ВозвращаемоеЗначение // типа Число
КонецФункции

Знач - можно не писать т.к. оно используется по умолчанию

Формат Процедуры

Процедура отличается от функции тем что не возвращает значение.

Процедура фИмяПроцедуры(Поле1 тип Число, Поле2 тип Строка)
КонецФункции

Пример Процедуры

//--Пример процедуры
Процедура РазложениеНаМножители(цИсходноеЧисло тип Целое)
            
       ТекщийДелитель=2 //текущий делитель - Внутренняя переменная
       Пока цИсходноеЧисло <> 1
           Если цИсходноеЧисло % ТекщийДелитель = 0
               ВыводСтроки ТекщийДелитель
               цИсходноеЧисло/=ТекщийДелитель   //целочисленное деление
           Иначе
               ТекщийДелитель++
           КонецЕсли
       КонецЦикла
КонецПроцедуры

Возможные ошибки

Каждую переменную (пока) надо объявлять отдельно.

Функция фИмяФункции( Поле1, Поле2 тип Число, Поле3 тип Строка) тип Число 
  
Функция фИмяФункции( Поле1 тип Число, Поле2 тип Число, Поле3 тип Строка) тип Число

Пример объявления и использования функций и процедур

#ТипСборки КонсольноеПриложение
#ИспользоватьСтандартнуюБиблиотеку
ИмпортИмён Промкод.Перфолента.Консоль
//пример использования Функций и Процедур
Программа Облигации
   //--
   Процедура Старт // основная процедура, точка начала программы
       // Как  рассчитать ROE - Возврат на инвестиции - ВозвратИнвестиций
       // Собственный капитал (equity) = активы (assets) — обязательства (Долги liabilities)
       // ROE (return on equity) = прибыль (net income)/собственный капитал (equity)
       // По сути, ВозвратИнвестиций — это та процентная ставка, под которую в компании работают средства акционеров. 
       // Этот показатель является ключевым для определения эффективности деятельности компании.
    #Область "Расчёт Возврата инвестиций (ROE)"
       Перем ВозвратИнвестиций, ПрибыльПослеНалогов, Активы, Долги тип Число // обьявление переменных
       // инициализация переменных
       ПрибыльПослеНалогов = 100
       Активы = 200
       Долги = 600
       
       // пример простых вычислений
       ВозвратИнвестиций = ПрибыльПослеНалогов/(Активы - Долги)
       // или для акций
       // ВозратИнвестицийАкции = ДивидендыПослеНалогов/ЦенаПокупкиАкции
       
       // 1) есть операторы ВыводСтроки и ВводСтроки (редактор их красным цветом показывает) 
       // после которых не надо круглые скобки ставить. 
       // А есть методы объекта Консоль Вывод и ВыводПС после которых надо круглые скобочки ставить 
       // т.к. это вызов метода, а не оператор...
       // 2) в стандартной библиотеке уже есть функции для вычисления факториала:
       // Математика.ФакториалЧ и Математика.ФакториалБЦ... посмотрите в синтакс помощнике объект математика,
       // там очень много математических функций... 
       // объект Математика можно импортировать, что бы каждый раз это слово не писать... 
       // ИмпортИмён Промкод.Перфолента.Математика
       
       ВыводСтроки "Возврат Инвестиций = "+ВозвратИнвестиций 
       
    #КонецОбласти
       // 1) разложение целого числа на простые множители
     РазложениеНаМножители(232)
       // использование Факториал
     ЗначениеФакториал = фВычислитьФакториал(15)
         
     ВыводСтроки "Факториа 15 = " + ЗначениеФакториал
    // или так без перевода строки       
     Вывод( "Факториа 15 = " + ЗначениеФакториал)
     // проверка Функции КоличествоЭмитентов 
     // Несколько переменных, вывод прямо в ВыводСтроки без промежуточных переменных
     ВыводСтроки "Число Эмитентов = " + фКоличествоЭмитентов(6,10,2) // доходность 6% без риска, 10% с риском дефолта 2х эмитентов     
       
       Пауза
   КонецПроцедуры
 #Область "Примеры Процедуры и Функции"
   //--Пример процедуры
   Процедура РазложениеНаМножители(цИсходноеЧисло тип Целое)
            
       ТекщийДелитель=2 //текущий делитель - Внутренняя переменная
       Пока цИсходноеЧисло <> 1
           Если цИсходноеЧисло % ТекщийДелитель = 0
               ВыводСтроки ТекщийДелитель
               цИсходноеЧисло/=ТекщийДелитель   //целочисленное деление
           Иначе
               ТекщийДелитель++
           КонецЕсли
       КонецЦикла
   КонецПроцедуры
           // Функция вычисления факториала
  // название функции фВычислитьФакториал – префикс ф –для удобства чтобы сразу было видно что это функция
   Функция фВычислитьФакториал(цЧисло тип Целое) тип Число 
       Перем Факториал тип Число = 1  // Факториал - внутренняя переменная
            Для цИндекс тип Целое = 2 По цЧисло //  ц – префикс целого числа                 
               Факториал = Факториал * цИндекс
              // или сокращённая  запись Факториал *= Инд
            КонецЦикла 
       Возврат Факториал
   КонецФункции 
 
    #КонецОбласти
    
      #Область "Финансы"
    // НЕПРАВИЛЬНОЕ объявление переменных функции  
    // Функция фКоличествоЭмитентов(ДоходностьБезРиска, Доходность_С_Риском тип Число, цДопустимоеКоличествоДефолтов тип Число) тип Число 
   
   // ПРАВИЛЬНОЕ объявление переменных функции
   // Вычисление степени диверсификации эмитентов в зависимости 
   // от доходности с риском и без риска и допустимого количекства дефолтов
  
    Функция фКоличествоЭмитентов(ДоходностьБезРиска тип Число, Доходность_С_Риском тип Число, цДопустимоеКоличествоДефолтов тип Число) тип Число 
         
       КоличествоЭмитентов = 100/ ((Доходность_С_Риском - ДоходностьБезРиска)/цДопустимоеКоличествоДефолтов)
       
       Возврат КоличествоЭмитентов
   КонецФункции
   
   #КонецОбласти
КонецПрограммы    

Ссылки