Język Taktentus


Po co pisać i kompilator?
Aby dodać dwie liczby ...

Prosty język programowania oparty na instrukcji przypisania.
Istnieją różne rodzaje przypisania, niektóre przy okazji kopiowania coś zmieniają lub modyfikują zmienne.

Założenia

Programy składają się z instrukcji przypisania. Wszystkie przypisania są numerowane od zera. Instrukcja nie musi pokrywać się z numeracją linii w pliku z programem.

[jeśli @ == 0 to wykonaj przypisanie] zmienna:= stała lub zmienna

W Taktentusie istnieją różne przypisania (np. += , := , <=), ale wszystkie sprowadzają się do tego, że przypisujemy dane jakie znajdują się po prawej stronie, a wynik jest przypisywany po lewej.
Przykład: a+=1 oznacza tyle co a = a+1

Dwa znaki procentu = %% rozpoczynają komentarz, który jest pomijany aż do znaku nowej linii

W tej implementacji są na razie tylko zmienne typu 'integer'.

a := 1 %% do niezadeklarowanej zmiennej 'a' wstawiamy wartość 1
@wy_n := a %% wypisujemy 'a' na wyjście jako liczba

Jeśli zmienna @ jest większa od zera instrukcja się nie wykona. Zmienna @ jest zmniejszana o jeden i wykonywana jest następna instrukcja. Jeśli zmienna @ ma wartość większą od jeden wtedy omija się więcej niż jedną instrukcję.

Mamy różne wartości:

  • wartości liczbowe (na razie tylko 'integer') cyfry ew. ze znakiem
  • wartości w pamięci (elementy tablic czyli zmienne), w programie jest to jedna tablica, mogą to być dowolne znaki UTF8, np.: ♥,żółw itd. Nie mogą zawierać podkreślnika '_'
  • zmienne specjalne

Niedługo dodam wyrażenia, czyli pewien wynik operacji (podprogram) i dostęp do plików

Wirtualna Maszyna

Styczeń 27, 2015

Przypisania

Po lewej stronie nie może występować stała, ani zmienna wejścia

  • := Przypisanie, przenieś dane bez modyfikacji
  • += dodawanie, np. a+=-1 (do zmiennej 'a' dodaj jeden i wynik umieść w 'a')
  • -= odejmowanie, np. a-=3
  • *= mnożenie
  • /= dzielenie
  • <= Mniejsze równe, porównuje wartość z lewej strony i z prawej. Jeśli lewa strona jest mniejsza bądź równa lewa zmienna po lewej stronie przyjmuje 1 w przeciwnym wypadku zero.
  • >= Większe równe
  • == Równa się

Występują jeszcze zastępniki '++' oznacza tyle co '+= 1', chodzi o prostszy zapis. '--' oznacza '-=1' '!*' Odwrotność liczbowa (negacja) skrócony zapis *= -1

Zmienne wbudowane

  • @stop jeśli ta zmienna zostanie przypisana do numeru kolejnej instrukcji program się zakończy
  • _ zmienna określająca kolejną instrukcję, jeśli jej nie przypiszesz zwiększy się sama o plus jeden
  • @ z. określająca czy wykonać instrukcję
  • # z. wynikowa dla każdej instrukcji
  • @wy wyjście znakowe
  • @wy_n wyjście numeryczne
  • @we wejście znakowe programu
  • @spacja numer znaku 'spacja'
  • @n numer znaku końca linii (wystarczy ten znak na dowolnym systemie)
  • @losowa zmienna generująca zmienną losową z zakresu 0..@losowa. Najpierw ją inicjujemy, a potem przypisujemy do zmiennej. Jeśli jest ujemna lub równa zero wynik jest zero.
  • @t Tablica, aby przypisać element wystarczy najpierw ustawić indeks a potem zapisać do zmiennej tablica: @ti0:=1 @t:=3 (t[1]:= 3)
  • @ti0 Pierwszy indeks w tablicy

Numery linii przy komunikatach zaczynają się od jeden. Numery instrukcji zaczynają się od zera i nie zależą od numerów linii.

Przykład

%% Dodajemy dwie wielkości
a := +15
a += -2
@ ++
@wy := @spacja
%% wynik (13), wypisz na wyjście cyfrę
@wy_n := a
%% wypisz tę samą wartość jako znak
@wy := a

Kolejne przykłady w katalogu /przy


© by Jacek Szewczyk A.D. 2015