PascalABC.NET — це мова програмування Pascal нового покоління, що включає класичний Pascal, більшість можливостей мови Delphi, а також ряд власних розширень. Він реалізований на платформі Microsoft.NET і містить всі сучасні мовні засоби: класи, перевантаження операцій, інтерфейси, обробку винятків, узагальнені класи та підпрограми, збірку сміття, лямбда-вирази, засоби паралельного програмування.
PascalABC.NET — це також проста і потужна інтегроване середовище розробки, що підтримує технологію , що містить засоби автоформатування, вбудований відладчик і вбудований дизайнер форм. Крім того, консольний компілятор PascalABC.NET функціонує на Linux і MacOS під Mono.
Історія розвитку
У 2003 році на факультеті математики, механіки та комп'ютерних наук ПФУ було створене навчальне середовище програмування Pascal ABC. Система є інтегрованою оболонкою з вбудованим інтерпретатором мови програмування Pascal, близької до мови Delphi. Попри неповну реалізацію мови, вона стала вдалою заміною застарілій системі Turbo Pascal в первісному навчанні програмування. Як навчальну систему її використовували в багатьох регіонах СНД.
У каталозі Soft@Mail.ru програма Pascal ABC в 2006 році визнана програмою тижня.
У 2005—2006 роках система була повністю перероблена: змінена її архітектура — на повноцінний компілятор мови, близької до Delphi, з розширеннями, пов'язаними з платформою .NET. Нова система отримала назву PascalABC.NET.
У червні 2009 з'явилася перша стабільна версія PascalABC.NET 1.2.
У вересні 2009 з'явилося вебсередовище розробки WDE, що не вимагає установки PascalABC.NET на локальний комп'ютер і дозволяє запускати програми на PascalABC.NET безпосередньо з вікна браузера. Ключовою особливістю WDE є те, що програма запускається на сервері, а на клієнтський комп'ютер в інтерактивному режимі передаються лише дані вводу-виводу.
У серпні 2010 у WDE з'явилася можливість створювати прості графічні додатки. Вебсередовище розробки було закрите в жовтні 2017 року.
У серпні 2011 здійснено перехід на .NET 4.0 у версії 1.8.
У січні 2012 вебсередовище розробки WDE також була переведена на .NET 4.0 .
З травня 2012 у вебсередовище розробки додана підтримка компіляторів C# , VB.NET, IronPython і F#, у зв'язку з чим вона була перейменована в ProgrammingABC.NET WDE.
У лютому 2013 вийшла версія PascalABC.NET 2.0 з дизайнером форм.
15 травня 2013 вийшла версія 2.1 з англійської локалізацією інтерфейсу і повідомлень про помилки.
15 лютого 2014 вийшла версія PascalABC.NET 2.2. Багаторазово прискорено звернення до символів рядка на запис.
28 серпня 2015 вийшла версія PascalABC.NET 3.0. PascalABC.NET став вільним і поширюється під ліцензією LGPLv3.
12 лютого 2016 вийшла версія PascalABC.NET 3.1. З'явилися кортежі і зрізи, значно оновлена стандартна бібліотека.
29 серпня 2016 вийшла версія PascalABC.NET 3.2. З'явилися оператори yield і yield sequence, оновлена стандартна бібліотека.
30 серпня 2017 вийшла версія PascalABC.NET 3.3. З'явилися стандартні модулі GraphWPF і Graph3D, оновлена стандартна бібліотека.
Особливості мови
Розширення мови Паскаль
- Оператори
+= -= *= /=
- Внутрішньоблокова декларація змінних
- Декларація змінних в заголовку циклу
for
- Ініціалізація змінної при присвоєнні:
VAR N: integer: = 10;
- Автовизначення типу змінної при ініціалізації:
VAR X: = 1;
- Цикл
foreach
- Підпрограми зі змінним числом параметрів
- Множини
set
на базі довільних типівSet Of Integer
- Методи в записах
- Можливість визначати методи як всередині, так і поза інтерфейсу класу або записи
- Поряд зі стандартним, спрощений синтаксис модулів
- Операція
new
для виклику конструктора класу - Ініціалізатор полів класів та записів
- Перевантаження операторів
- Статичні конструктори
- Підтримка директив OpenMP
Особливості мови, пов'язані з платформою .NET
- Всі типи — класи
- Стандартний тип BigInteger
- Двовимірні динамічні масиви
- Інтерфейси .NET
- Підключення просторів імен .NET в розділі
uses
- Узагальнені класи, інтерфейси, підпрограми та процедурні змінні
- Автоматична збірка сміття для об'єктів
- Атрибути
- Методи розширення
- Лямбда-функції(Анонімна функція)
- Автоклас
- Безіменні класи
- Підтримка некерованого коду через external
Стандартні модулі
Оскільки в PascalABC.NET можна користуватися всіма бібліотеками платформи .NET, то стандартні модулі нечисленні і орієнтовані на навчання:
- Модуль растрової графіки GraphABC
- Модуль векторної графіки ABCObjects
- Модуль FormsABC для створення простих віконних додатків без дизайнера форм
- Модуль Arrays для введення-виведення-заповнення одновимірних і двовимірних динамічних масивів
- Модуль Collections, що містить спрощені класи колекцій
- Модулі виконавців Робот і креслярем(шкільна інформатика)
Приклади програм
Приклад 1. Використання методів розширення для програмування в функціональному стилі
var a: array of integer := (1,3,5,7,9,11,13,15,17,19); begin a.Println; //Поміняти місцями першу і другу половини масиву з парною кількістю елементів Assert(a.Length mod 2 = 0); var n := a.Length div 2; a.Skip(n).Concat(a.Take(n)).Println; end.
Приклад 2. 100!
begin var p: BigInteger := 1; for var i:=1 to 100 do p := p * i; write(p); end.
Приклад 3. Виведення всіх чисел Фібоначчі, менших 1000
begin SeqWhile(1,1,(x,y)->x+y,x->x<1000).Print end.
Приклад 4. Частотний словник слів у файлі
begin var d := new Dictionary<string,integer>; foreach var s in ReadLines('words.txt') do foreach var word in s.ToWords do d[word] := d.Get(word) + 1; d.Print(NewLine); end.
Приклад 4а. Частотний словник слів у файлі. Рішення у функціональному стилі
begin ReadLines('words.txt').SelectMany(s->s.ToWords()).GroupBy(v->v).ToDictionary(x->x.Key,x->x.Count()).Print(NewLine); end.
Приклад 5. Паралельне множення матриць з використанням директив OpenMP
uses Arrays; procedure Mult(a,b,c: array [,] of real; n: integer); begin {$omp parallel for} for var i:=0 to n-1 do for var j:=0 to n-1 do begin var cc := 0.0; for var l:=0 to n-1 do cc += a[i,l]*b[l,j]; c[i,j] := cc; end; end; const n = 1000; begin var a := Arrays.CreateRandomRealMatrix(n,n,1,1.1); var b := Arrays.CreateRandomRealMatrix(n,n,1,1.1); var c := new real[n,n]; var d := Milliseconds; Mult(a,b,c,n); writeln((Milliseconds-d)/1000); end.
Ліцензія
PascalABC.NET є безкоштовним (freeware) програмним забезпеченням, поширюваним під власною пропрієтарною ліцензією.
Див. також
Посилання
- Сайт проекта «Система программирования PascalABC.NET» [ 16 лютого 2017 у Wayback Machine.] (рос.)
- Описание языка PascalABC.NET [ 26 квітня 2017 у Wayback Machine.] (рос.)
- Электронный задачник по программированию Programming Taskbook [ 5 вересня 2008 у Wayback Machine.] (рос.)
- Форум PascalABC.NET [ 29 листопада 2016 у Wayback Machine.] (рос.)
- Стаття PascalABC.NET [ 8 травня 2017 у Wayback Machine.] в — енциклопедії мов програмування (рос.)
Примітки
- (рос.) . Архів оригіналу за 20 лютого 2018.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
PascalABC NET ce mova programuvannya Pascal novogo pokolinnya sho vklyuchaye klasichnij Pascal bilshist mozhlivostej movi Delphi a takozh ryad vlasnih rozshiren Vin realizovanij na platformi Microsoft NET i mistit vsi suchasni movni zasobi klasi perevantazhennya operacij interfejsi obrobku vinyatkiv uzagalneni klasi ta pidprogrami zbirku smittya lyambda virazi zasobi paralelnogo programuvannya PascalABC NET ce takozh prosta i potuzhna integrovane seredovishe rozrobki sho pidtrimuye tehnologiyu sho mistit zasobi avtoformatuvannya vbudovanij vidladchik i vbudovanij dizajner form Krim togo konsolnij kompilyator PascalABC NET funkcionuye na Linux i MacOS pid Mono Istoriya rozvitkuU 2003 roci na fakulteti matematiki mehaniki ta komp yuternih nauk PFU bulo stvorene navchalne seredovishe programuvannya Pascal ABC Sistema ye integrovanoyu obolonkoyu z vbudovanim interpretatorom movi programuvannya Pascal blizkoyi do movi Delphi Popri nepovnu realizaciyu movi vona stala vdaloyu zaminoyu zastarilij sistemi Turbo Pascal v pervisnomu navchanni programuvannya Yak navchalnu sistemu yiyi vikoristovuvali v bagatoh regionah SND U katalozi Soft Mail ru programa Pascal ABC v 2006 roci viznana programoyu tizhnya U 2005 2006 rokah sistema bula povnistyu pereroblena zminena yiyi arhitektura na povnocinnij kompilyator movi blizkoyi do Delphi z rozshirennyami pov yazanimi z platformoyu NET Nova sistema otrimala nazvu PascalABC NET U chervni 2009 z yavilasya persha stabilna versiya PascalABC NET 1 2 U veresni 2009 z yavilosya vebseredovishe rozrobki WDE sho ne vimagaye ustanovki PascalABC NET na lokalnij komp yuter i dozvolyaye zapuskati programi na PascalABC NET bezposeredno z vikna brauzera Klyuchovoyu osoblivistyu WDE ye te sho programa zapuskayetsya na serveri a na kliyentskij komp yuter v interaktivnomu rezhimi peredayutsya lishe dani vvodu vivodu U serpni 2010 u WDE z yavilasya mozhlivist stvoryuvati prosti grafichni dodatki Vebseredovishe rozrobki bulo zakrite v zhovtni 2017 roku U serpni 2011 zdijsneno perehid na NET 4 0 u versiyi 1 8 U sichni 2012 vebseredovishe rozrobki WDE takozh bula perevedena na NET 4 0 Z travnya 2012 u vebseredovishe rozrobki dodana pidtrimka kompilyatoriv C VB NET IronPython i F u zv yazku z chim vona bula perejmenovana v ProgrammingABC NET WDE U lyutomu 2013 vijshla versiya PascalABC NET 2 0 z dizajnerom form 15 travnya 2013 vijshla versiya 2 1 z anglijskoyi lokalizaciyeyu interfejsu i povidomlen pro pomilki 15 lyutogo 2014 vijshla versiya PascalABC NET 2 2 Bagatorazovo priskoreno zvernennya do simvoliv ryadka na zapis 28 serpnya 2015 vijshla versiya PascalABC NET 3 0 PascalABC NET stav vilnim i poshiryuyetsya pid licenziyeyu LGPLv3 12 lyutogo 2016 vijshla versiya PascalABC NET 3 1 Z yavilisya kortezhi i zrizi znachno onovlena standartna biblioteka 29 serpnya 2016 vijshla versiya PascalABC NET 3 2 Z yavilisya operatori yield i yield sequence onovlena standartna biblioteka 30 serpnya 2017 vijshla versiya PascalABC NET 3 3 Z yavilisya standartni moduli GraphWPF i Graph3D onovlena standartna biblioteka Osoblivosti movi Rozshirennya movi Paskal Operatori Vnutrishnoblokova deklaraciya zminnih Deklaraciya zminnih v zagolovku ciklu b for b Inicializaciya zminnoyi pri prisvoyenni b VAR b N integer 10 Avtoviznachennya tipu zminnoyi pri inicializaciyi b VAR b X 1 Cikl b foreach b Pidprogrami zi zminnim chislom parametriv Mnozhini b set b na bazi dovilnih tipiv b Set Of b Integer Metodi v zapisah Mozhlivist viznachati metodi yak vseredini tak i poza interfejsu klasu abo zapisi Poryad zi standartnim sproshenij sintaksis moduliv Operaciya b new b dlya vikliku konstruktora klasu Inicializator poliv klasiv ta zapisiv Perevantazhennya operatoriv Statichni konstruktori Pidtrimka direktiv OpenMP Osoblivosti movi pov yazani z platformoyu NET Vsi tipi klasi Standartnij tip BigInteger Dvovimirni dinamichni masivi Interfejsi NET Pidklyuchennya prostoriv imen NET v rozdili b uses b Uzagalneni klasi interfejsi pidprogrami ta procedurni zminni Avtomatichna zbirka smittya dlya ob yektiv Atributi Metodi rozshirennya Lyambda funkciyi Anonimna funkciya Avtoklas Bezimenni klasi Pidtrimka nekerovanogo kodu cherez externalStandartni moduli Oskilki v PascalABC NET mozhna koristuvatisya vsima bibliotekami platformi NET to standartni moduli nechislenni i oriyentovani na navchannya Modul rastrovoyi grafiki GraphABC Modul vektornoyi grafiki ABCObjects Modul FormsABC dlya stvorennya prostih vikonnih dodatkiv bez dizajnera form Modul Arrays dlya vvedennya vivedennya zapovnennya odnovimirnih i dvovimirnih dinamichnih masiviv Modul Collections sho mistit sprosheni klasi kolekcij Moduli vikonavciv Robot i kreslyarem shkilna informatika Prikladi program Priklad 1 Vikoristannya metodiv rozshirennya dlya programuvannya v funkcionalnomu stili var a array of integer 1 3 5 7 9 11 13 15 17 19 begin a Println Pominyati miscyami pershu i drugu polovini masivu z parnoyu kilkistyu elementiv Assert a Length mod 2 0 var n a Length div 2 a Skip n Concat a Take n Println end Priklad 2 100 begin var p BigInteger 1 for var i 1 to 100 do p p i write p end Priklad 3 Vivedennya vsih chisel Fibonachchi menshih 1000 begin SeqWhile 1 1 x y gt x y x gt x lt 1000 Print end Priklad 4 Chastotnij slovnik sliv u fajli begin var d new Dictionary lt string integer gt foreach var s in ReadLines words txt do foreach var word in s ToWords do d word d Get word 1 d Print NewLine end Priklad 4a Chastotnij slovnik sliv u fajli Rishennya u funkcionalnomu stili begin ReadLines words txt SelectMany s gt s ToWords GroupBy v gt v ToDictionary x gt x Key x gt x Count Print NewLine end Priklad 5 Paralelne mnozhennya matric z vikoristannyam direktiv OpenMP uses Arrays procedure Mult a b c array of real n integer begin omp parallel for for var i 0 to n 1 do for var j 0 to n 1 do begin var cc 0 0 for var l 0 to n 1 do cc a i l b l j c i j cc end end const n 1000 begin var a Arrays CreateRandomRealMatrix n n 1 1 1 var b Arrays CreateRandomRealMatrix n n 1 1 1 var c new real n n var d Milliseconds Mult a b c n writeln Milliseconds d 1000 end Licenziya PascalABC NET ye bezkoshtovnim freeware programnim zabezpechennyam poshiryuvanim pid vlasnoyu propriyetarnoyu licenziyeyu Div takozhObject Pascal C PosilannyaSajt proekta Sistema programmirovaniya PascalABC NET 16 lyutogo 2017 u Wayback Machine ros Opisanie yazyka PascalABC NET 26 kvitnya 2017 u Wayback Machine ros Elektronnyj zadachnik po programmirovaniyu Programming Taskbook 5 veresnya 2008 u Wayback Machine ros Forum PascalABC NET 29 listopada 2016 u Wayback Machine ros Stattya PascalABC NET 8 travnya 2017 u Wayback Machine v enciklopediyi mov programuvannya ros Primitki ros Arhiv originalu za 20 lyutogo 2018