Выпуск среды разработки PascalABC.NET 3.7.2


Доступен выпуск системы программирования PascalABC.NET 3.7.2, предлагающей редакцию языка программирования Паскаль с поддержкой генерации кода для платформы .NET, возможностью использования библиотек .NET и дополнительными возможностями, такими как обобщённые классы, интерфейсы, перегрузка операций, λ-выражения, исключения, сборка мусора, методы расширения, безымянные классы и автоклассы. Проект главным образом ориентирован на применение в сфере образования и научных исследований. Пакет также включает среду разработки с подсказками по коду, автоформатированием, отладчиком, дизайнером форм и образцами кода для начинающих. Код проекта распространяется под лицензией LGPLv3. Возможна сборка в Linux (на базе Mono) и Windows.

Изменения в новом выпуске:

  • Расширенный foreach с распаковкой значений в несколько переменных. Значения должны быть кортежами или последовательностями:

    begin var a := Arr((1,2),(3,4),(5,6)); foreach var (x,y) in a do Print(x,y); Println; var b := Arr(|1,2,3|,|4,5|,|6,7,8,9|); foreach var (x,y) in b do Print(x,y); end.

  • Литералы для BigInteger, имеющие окончание bi: 1bi, 874658734265762345bi

    Пример 1 begin var n := ReadInteger; var p := 1bi; for var i:=2 to n do p \= i; Print(p); end. Пример 2 ## Print(25bi \\* 25 + 17bi \\ 17)

  • Использование uses в коротких программах

    Пример 1 ## uses Graph3D; Sphere(Origin,1); Пример 2 ### uses School; Pr(Bin(123));

  • Стандартная библиотека.

    • Размещения и размещения с повторениями. В дополнение к методам a.Permutations и a.Combinations(m) для массивов реализованы: a.Cartesian(n) - возвращает n-тую декартову степень множества, элементов a.Permutations(m) - возвращает все частичные перестановки из n элементов по m.

      Кроме того, все указанные методы определены также над последовательностями

      var a := Arr(1,3,5,7); a.Permutations.Println; a.Cartesian(2).Println; a.Permutations(2).Println; a.Combinations(2).Println; Println; var s := Seq(1,3,5,7); s.Permutations.Println; s.Cartesian(2).Println; s.Permutations(2).Println; s.Combinations(2).Println; s.CountOf(x) для последовательностей ### var a := Arr(1,3,5,7,1,2,1,3,1,5); a.CountOf(1).Print

    • Sum, Average, Product для последовательностей BigInteger

      begin var s := SeqGen(100,i->BigInteger(i)\\i); Print(s.Sum,s.Product); end.

    • Методы расширения строк s.IsInteger и s.IsReal:

      begin var s := '123.4 3 5 6.6 a v 67'; var (si,sr) := (0,0.0); foreach var w in s.ToWords do if w.IsInteger then si += w.ToInteger else if w.IsReal then sr += w.Toreal; Print(si,sr); end.

    • s.ToWords(delims) с разделителями в виде строки. Разделители в s.ToWords теперь можно задавать в виде строки

      begin var s := '123.4, 6.6, 67'; s.ToWords(' ,').PrintLines end.

    • Определена константа AllDelimiters, содержащая все разделители слов в текстах

      begin ... s.ToWords(AllDelimiters).Println end.

    • В Graph3D реализована сериализация и десериализация компонентов Object3D

      Источник: https://www.opennet.ru/opennews/art.shtml?num=54447


Comments 0