close

PascalABC.NET

Przejdź do nawigacji Przejdź do wyszukiwania
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ętlifor
  • Inicjalizacja zmiennej w opisie ( var n: integer := 10;)
  • Automatyczne wykrywanie typu zmiennej podczas inicjalizacji ( var x := 1;)
  • Cyklforeach
  • Uproszczona pętlaloop
  • Podprogramy ze zmiennymi parametrami
  • Zestawy set oparte 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 styluT->T
  • Typ krotki stylu(T1,T2)
  • Typ sekwencjisequence of T
  • Przypisanie krotki(a,b) := (b,a)
  • Fragmentatory a[from:to:step]i bezpieczne plasterki a?[from:to:step]dla tablic, list i ciągów
  • Plastry wielowymiarowea[:,:10]
  • Operatory yieldi yield sequencedo generowania ciągów
  • Operator dopasowania wzorcamatch ... with
  • Rozszerzona operacjais
  • 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

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

  1. Programy tygodnia -> programowanie Zarchiwizowane 4 czerwca 2012 r.
  2. Przeciążanie operacji (łącze w dół) . Data dostępu: 18 września 2015 r. Zarchiwizowane z oryginału 4 marca 2016 r. 

Linki

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 .