PascalABC.NET
| PascalABC.NET | |
|---|---|
| Semantyka | tryb rozkazujący |
| Klasa jezykowa | wieloparadygmat : strukturalny , obiektowy , generyczny , proceduralny , funkcjonalny |
| Typ wykonania | kompilator |
| Pojawił się w | 2007 |
| Autor | S. S. Mikhalkovich , I. V. Bondarev, A. V. Tkaczuk, S. O. Iwanow |
| Wydanie | 3.8.3 kompilacja 3162 (2022.08.20) |
| Wpisz system | statyczny |
| Główne wdrożenia |
PascalABC.NET, Pascal ABC (przestarzałe) |
| Byłem pod wpływem | Pascal , Delphi , C# , Python , Kotlin |
| Licencja | LGPL |
| Stronie internetowej | pascalabc.net |
| Platforma | .NET CLR (WinXP i starsze), Mono (Linux, MacOS) |
PascalABC.NET to język programowania nowej generacji Pascal , który zawiera klasyczny Pascal, większość funkcji języka Delphi , a także szereg zastrzeżonych rozszerzeń. Jest zaimplementowany na platformie Microsoft.NET i zawiera wszystkie nowoczesne funkcje językowe: deklaracje in-block, autodetekcję typu, krotki , plastry, klasy , przeciążanie operatorów , interfejsy , obsługę wyjątków , klasy i podprogramy generyczne , wyrażenia lambda , narzędzia programowania równoległego .
PascalABC.NET jest pozycjonowany przez programistów jako język programowania dla edukacji i badań.
PascalABC.NET jest językiem wieloparadygmatycznym: można go programować w stylach strukturalnych , obiektowych i funkcjonalnych .
PascalABC.NET to również proste i wydajne środowisko IDE obsługujące technologię IntelliSense z narzędziami do automatycznego formatowania, wbudowanym debugerem i wbudowanym projektantem formularzy. Ponadto kompilator konsoli PascalABC.NET działa w systemach Linux i MacOS pod Mono .
Historia rozwoju
W 2003 roku na Wydziale Matematyki, Mechaniki i Informatyki Południowego Uniwersytetu Federalnego utworzono środowisko uczenia programowania Pascal ABC . System był zintegrowaną powłoką z wbudowanym interpreterem dla języka programowania Pascal, który jest zbliżony do języka Delphi. Mimo niepełnej implementacji języka, z powodzeniem zastąpił przestarzały system Turbo Pascal w początkowym nauczaniu programowania. Jako system edukacyjny był używany w wielu regionach WNP . W katalogu [email protected] program Pascal ABC został uznany za program tygodnia 2006 roku [1] .
W latach 2005 - 2006 system został całkowicie przeprojektowany: zmieniono jego architekturę - na pełnoprawny kompilator języka zbliżonego do Delphi , z rozszerzeniami związanymi z platformą .NET . Nowy system nazwano PascalABC.NET . W czerwcu 2009 została wydana pierwsza stabilna wersja PascalABC.NET 1.2.
We wrześniu 2009 roku pojawiło się środowisko programistyczne WDE, które nie wymaga instalacji PascalABC.NET na komputerze lokalnym i pozwala uruchamiać programy na PascalABC.NET bezpośrednio z okna przeglądarki. Środowisko programistyczne zostało zamknięte w październiku 2017 r.
W sierpniu 2011 dokonano przejścia na platformę .NET 4.0 (wersja 1.8).
W lutym 2013 wydano PascalABC.NET 2.0 z projektantem formularzy i obsługą projektów.
15 maja 2013 została wydana wersja 2.1 z angielską lokalizacją interfejsu i komunikatami o błędach.
15 lutego 2014 został wydany PascalABC.NET 2.2. Dostęp do znaków ciągu do pisania został znacznie przyspieszony.
28 sierpnia 2015 r. został wydany PascalABC.NET 3.0. PascalABC.NET stał się darmowy i rozpowszechniany na licencji LGPLv3.
12 lutego 2016 został wydany PascalABC.NET 3.1. Pojawiły się krotki i plastry, biblioteka standardowa została znacząco zaktualizowana.
29 sierpnia 2016 został wydany PascalABC.NET 3.2. Pojawiły się plony operatorów i sekwencja plonów , zaktualizowano standardową bibliotekę.
30 sierpnia 2017 r. został wydany PascalABC.NET 3.3. Były to standardowe moduły GraphWPF i Graph3D (dla Windows Vista i wyższych), uproszczona pętla pętli, bezpieczna operacja cięcia, przypisywanie krotek, obsługa typów Nullable. Dodano ukraińską lokalizację interfejsu i komunikatów o błędach.
11 lutego 2018 został wydany PascalABC.NET 3.3.5. Dodano standardowy moduł NumLibABC (biblioteka szkoleniowa metod numerycznych), zaimplementowano łańcuchy formatujące i operację potęgowania. .NET 4.7.1 jest zintegrowany z pełną wersją pakietu dystrybucyjnego (dla Windows Vista i nowszych), dla Windows XP pozostaje pakiet dystrybucyjny z .NET 4.0.
25 maja 2018 r. został wydany PascalABC.NET 3.4. Zaimplementowano pewien podzbiór dopasowywania wzorców , rozszerzony operator is .
1 września 2018 r. został wydany PascalABC.NET 3.4.2. Rozszerzone właściwości, rozszerzone właściwości indeksu i właściwości automatyczne zostały zaimplementowane, moduł WPFObjects został dodany jako zamiennik przestarzałych ABCObjects.
25 maja 2019 został wydany PascalABC.NET 3.5. Dopasowywanie wzorców dodaje możliwość dopasowywania list, krotek i stałych.
16 stycznia 2020 został wydany PascalABC.NET 3.6.0. Zaimplementowana jest operacja .., która zwraca IntRangelub CharRangew zależności od kontekstu, a także operacja warunkowa:var min := if a < b then a else b;
7 maja 2020 r. został wydany PascalABC.NET 3.6.3. Operacja dostępu przez indeks od końca jest zaimplementowana a[^1]dla tablic, list i łańcuchów. Zaimplementowano możliwość używania plasterków po lewej stronie operatora przypisania: a[:2] := a[3:5]. Znacznie przyspieszone przekierowanie danych wejściowych
8 sierpnia 2020 został wydany PascalABC.NET 3.7. Zaimplementowano rozpakowywanie sekwencji do zmiennych, tablic-wartości w postaci |1,3,5,7,9|, pisanie programów bez zewnętrznego begin-endprzy użyciu ##( ## Print(2*2))
7 marca 2021 r. został wydany PascalABC.NET 3.8. Zaimplementowany operator rozszerzony foreach( ), literały w postaci , wycinki tablic wielowymiarowych w postaci , wyrażenia lambda z rozpakowaniem parametrów ( ).
foreach var (x,y) in aBigInteger1bim[:,:]m[^1,:]s.Where(\(name,age) -> age >= 18)
24 sierpnia 2021 r. został wydany PascalABC.NET 3.8.1. Zaimplementowano atrybut [Cache] do buforowania wyników funkcji, pełnoprawną dyrektywę {$zerobasedstrings}, standardowy moduł PlotWPF.
9 marca 2022 r. został wydany PascalABC.NET 3.8.3. Wdrożone projekty ifor var i:=1 to 6 step 2 doforeach var x in a index i do
Cechy języka
Rozszerzenia języka Pascal
- Operatorzy
+= -= *= /= - Operacja
**potęgowania - Wewnątrzblokowe deklaracje zmiennych
- Opis zmiennych w nagłówku pętli
for - Inicjalizacja zmiennej w opisie (
var n: integer := 10;) - Automatyczne wykrywanie typu zmiennej podczas inicjalizacji (
var x := 1;) - Cykl
foreach - Uproszczona pętla
loop - Podprogramy ze zmiennymi parametrami
- Zestawy
setoparte na dowolnych typach (set of integer) caselinia po linii- Metody nagrywania
- Możliwość definiowania metod zarówno wewnątrz, jak i poza interfejsem klasy lub rekordu
- Wraz ze standardową, uproszczoną składnią modułu
- Operacja
newwywołania konstruktora - Inicjatory klas i pól rekordów
- Przeciążenie operacji [2]
- Autoklasy
- Klasy nienazwane
- Wyrażenia lambda
- Typ funkcji w dobrym stylu
T->T - Typ krotki stylu
(T1,T2) - Typ sekwencji
sequence of T - Przypisanie krotki
(a,b) := (b,a) - Fragmentatory
a[from:to:step]i bezpieczne plasterkia?[from:to:step]dla tablic, list i ciągów - Plastry wielowymiarowe
a[:,:10] - Operatory
yieldiyield sequencedo generowania ciągów - Operator dopasowania wzorca
match ... with - Rozszerzona operacja
is - Rozszerzone właściwości, autowłaściwości
- Interpolacja ciągów
- Zakończ indeksowanie:
a[^1] := 777; - Zakresy
..i cykl według zakresu:foreach var i in 1..10 do Print(i); - Cykl
forz krokiem:for var i:=1 to 10 step 2 do Print(i); - Pętla
foreachz indeksem:foreach var x in Arr(1,3,5) index i do Println(i,x); - Rozpakowywanie parametrów wyrażenia lambda
\(x,y) -> x + y - Częściowa obsługa dyrektyw OpenMP
Funkcje językowe związane z platformą .NET
- Wszystkie typy są klasami
- Typ standardowy BigInteger
- Ciągi formatujące
- Wielowymiarowe tablice dynamiczne
- Interfejsy .NET
- Łączenie przestrzeni nazw .NET w sekcji
uses - Klasy ogólne , interfejsy, podprogramy i zmienne proceduralne
- Automatyczne wyrzucanie śmieci z obiektów
- Atrybuty
- Metody rozszerzenia
- Obsługa kodu platformy za pośrednictwem zewnętrznego
- Typy
type?wartościnil(synonimNullable<T>)
Moduły standardowe
Ponieważ wszystkie biblioteki platformy .NET mogą być używane w PascalABC.NET , standardowe moduły są nieliczne i koncentrują się na nauce:
- Moduł grafiki rastrowej GraphWPF
- Moduł grafiki rastrowej GraphABC (przestarzały)
- Moduł grafiki i animacji 3D Graph3D (w oparciu o darmową bibliotekę Helix Toolkit)
- Moduł grafiki wektorowej WPFObjects
- Moduł grafiki wektorowej ABCObjects (przestarzały)
- Moduł FormsABC do tworzenia interfejsów graficznych (w oparciu o technologię Windows Forms )
- Moduł NumLibABC (biblioteka metod numerycznych)
- Moduł PlotWPF do wizualizacji danych
- Moduły wykonawców Robot i Rysownik (informatyka szkolna)
- Moduł zadań programowania ( wersja podstawowa)
Przykłady programów
Przykład 1. Zamień pierwszą i drugą połowę tablicy
początek
var a := ArrGen ( 10 , i -> 2 * i + 1 ) ;
. _ Drukujln ; Assert ( a . Length mod 2 = 0 ) ; zmienna n := a . Długość dział 2 ; a := a [ n : ] + a [ : n ] ; . _ Drukujln ; koniec .
Przykład 2. 100!
początek
var P := 1 bi ;
dla var i := 1 do 100 do
P := P * i ;
println ( P ) ;
koniec .
Przykład 3: Wydrukuj wszystkie liczby Fibonacciego mniejsze niż 1000
rozpocznij
SeqWhile ( 1 , 1 , ( x , y ) -> x + y , x -> x < 1000 ) . drukuj ;
koniec .
Przykład 4. Znajdowanie największego wspólnego dzielnika dwóch liczb
początek
var ( a , b ) := ReadInteger2 ;
podczas gdy b <> 0 do
( a , b ) := ( b , a mod b ) ;
var gcd := Abs ( a ) ;
NWD . drukuj ;
koniec .
Przykład 5. Słownik częstotliwości słów w pliku
begin
var D := new Dictionary < string , integer >;
foreach var s w ReadLines ( 'words.txt' ) wykonuje
foreach var word w s . ToWords do
D [ słowo ] := D . Pobierz ( słowo ) + 1 ;
D._ _ linie druku ;
koniec .
Przykład 5a. Słownik częstotliwości słów w pliku. Funkcjonalne rozwiązanie stylu
rozpocznij
ReadLines ( 'words.txt' ) . Wybierz Wiele ( s -> s . ToWords ) . Grupuj według ( v -> v ) . ToDictionary ( x -> x . Key , x -> x . Count ) . linie druku ;
koniec .
Przykład 6. Maksymalne wartości w kolumnach macierzy
początek
zmn ( M , N ) := ( 4 , 5 ) ;
var A := MatrRandom ( M , N ) ;
A. _ Drukujln ;
A. _ Kol . Wybierz ( kol -> kol . Max ) . Drukujln ;
koniec .
Przykład 7: Równoległe mnożenie macierzy przy użyciu dyrektyw OpenMP
procedura Mult ( a , b , c : tablica [ , ] liczb rzeczywistych ; n : liczba całkowita ) ;
begin
{$omp parallel for}
for var i := 0 do n - 1 do
for var j := 0 do n - 1 do
begin
var cc := 0.0 ;
dla var l := 0 do n - 1 do
cc += a [ i , l ] * b [ l , j ] ;
c [ ja , j ] := cc ;
koniec ;
koniec ;
const N = 1000 ;
rozpocznij
zmienną A := MatrRandomReal ( N , N , 1 , 1.1 ) ; zmienna B := MatrRandomReal ( N , N , 1 , 1.1 ) ; var C := nowa rzeczywista [ N , N ] ; Multi ( A , B , C , N ) ; Writeln ( milisekundyDelta / 1000 ) ; koniec .
Licencja
PascalABC.NET (od wersji 3.0) to darmowe oprogramowanie dystrybuowane na licencji LGPLv3 .
Notatki
- ↑ Programy tygodnia -> programowanie Zarchiwizowane 4 czerwca 2012 r.
- ↑ Przeciążanie operacji (łącze w dół) . Data dostępu: 18 września 2015 r. Zarchiwizowane z oryginału 4 marca 2016 r.
Linki
- Strona projektu „System programowania PascalABC.NET ”
- Publiczne repozytorium kodu źródłowego języka na Github
- Opis języka PascalABC.NET
- Podręcznik programowania
- Forum PascalABC.NET
- Artykuł PascalABC.NET w Progopedii - encyklopedia języków programowania (rosyjski)
- PascalABC.Net na GitHub
- Kurs "PascalABC.NET: nowoczesny kod" na Stepik
Literatura
- Michałkowicza S.S. Edukacyjny system programowania PascalABC // Konferencja naukowo-metodyczna „Nowoczesne technologie informacyjne w edukacji: Południowy Okręg Federalny” 13-14 maja 2004 r . / Krukier L.A., Muratova G.V. - Rostów nad Donem: YuGINFO RGU, 2004 . - S. 156-158. — 252 pkt. - 200 egzemplarzy.
- Michałkowicza S.S. Edukacyjny system programowania PascalABC: rozwój i wykorzystanie doświadczeń // Druga międzynarodowa konferencja naukowo-praktyczna „Nowoczesne technologie informacyjne i edukacja informatyczna”: Proceedings. - M. , 2006. - S. 394-399.
- Vodolazov N.N., Mikhalkovich S.S., Tkachuk A.V. Doświadczenie w tworzeniu edukacyjnego języka programowania dla platformy .NET // Konferencja naukowo-metodyczna „Nowoczesne technologie informacyjne w edukacji: Południowy Okręg Federalny” 26-29 kwietnia 2007 / Krukier L.A., Muratova G.V. - Rostów nad Donem : Wydawnictwo TsVVR Dom, 2007 . - S. 71-73. - 312 pkt. - 250 egzemplarzy. — ISBN 978-5-94153-146-2 .
- Mikhalkovich SS, Abramyan M.E. Podstawy programowania w PascalABC.NET. Skalarne typy danych, operatory sterujące, znajomość tablic, procedur i funkcji, praca z grafiką. - Rostów nad Donem : Wydawnictwo Południowego Uniwersytetu Federalnego, 2017. - 246 s. — ISBN 978-5-9275-2493-8 .
- Doliner L.I. Podstawy programowania w środowisku PascalABC.NET . - Jekaterynburg: Wydawnictwo „Uralski Uniwersytet Federalny”, 2014 . — 128 pkt. — ISBN 978-5-7996-1260-3 .
- Osipow A.V. PascalABC.NET: Wprowadzenie do nowoczesnego programowania . - Rostów nad Donem: wydanie internetowe, 2019 . — 572 s.
- Osipow A.V. PascalABC.NET: wybór studenta. Część 1. . - Rostów nad Donem: Wydawnictwo Południowego Uniwersytetu Federalnego, 2020 . — 152 s. - 150 egzemplarzy.