Kurs: Wstęp do programowania
Lekcja 2: Podstawy składni języka programowania
Temat 1: Opis składni języka: Notacje i gramatyki
Składnia języka programowania to zbiór reguł, które definiują, jak należy zapisywać instrukcje, aby były poprawnie interpretowane przez kompilator lub interpreter. Każdy język programowania ma swoje własne zasady składniowe, które muszą być przestrzegane, aby kod działał zgodnie z oczekiwaniami. Składnia, podobnie jak gramatyka w językach naturalnych, narzuca strukturę i formę, dzięki której komunikacja z komputerem jest możliwa. Zrozumienie tych reguł to pierwszy krok do opanowania jakiegokolwiek języka programowania.
Czym jest składnia języka programowania?
Składnia definiuje formę i sposób zapisu instrukcji, które komputer może rozumieć i wykonywać. Na przykład, w języku C++, aby zadeklarować zmienną, musimy przestrzegać określonego formatu, takiego jak:
int liczba = 5;
Jeśli naruszymy te zasady – na przykład, zapomnimy o średniku na końcu – kompilator zgłosi błąd składniowy. Dlatego tak ważne jest, aby zrozumieć, jak działa składnia w wybranym języku.
Składnia w programowaniu różni się od semantyki, która opisuje, co kod oznacza i jak działa. Składnia to forma, a semantyka to znaczenie. Błędy składniowe to te, które wynikają z nieprawidłowego zapisu kodu, na przykład brakującego nawiasu, podczas gdy błędy semantyczne dotyczą logiki działania programu. W tej lekcji skupimy się wyłącznie na składni i jej formalnym opisie.
Jak opisuje się składnię języków programowania?
Opis składni języka programowania jest niezwykle ważny dla twórców kompilatorów i interpretatorów. Aby precyzyjnie określić, jakie formy są poprawne, używa się specjalnych narzędzi, takich jak gramatyki formalne i notacje, które pozwalają na jednoznaczne przedstawienie reguł języka. Dwie najważniejsze koncepcje w tej dziedzinie to gramatyki bezkontekstowe oraz notacja BNF (Backus-Naur Form).
Gramatyki bezkontekstowe
Gramatyka bezkontekstowa to rodzaj gramatyki formalnej, która jest używana do definiowania składni większości języków programowania. Termin „bezkontekstowa” oznacza, że reguły gramatyczne mogą być stosowane niezależnie od kontekstu, w którym się znajdują. Każda reguła gramatyki bezkontekstowej składa się z symboli nieterminalnych i terminalnych.
- Symbole terminalne: To podstawowe elementy, które nie mogą być już dalej dzielone. W języku programowania są to na przykład znaki, takie jak
;
,+
,=
, słowa kluczowe, takie jakint
,if
,else
, czy literały, jak5
lub"tekst"
. - Symbole nieterminalne: To elementy, które mogą być dalej rozwijane zgodnie z regułami gramatyki. Na przykład, w gramatyce języka programowania może istnieć symbol nieterminalny
wyrażenie
, który może być rozwinięty w różne formy, takie jakliczba + liczba
lubzmienna * liczba
.
Reguły gramatyczne są definiowane za pomocą produkcji, które określają, jak symbole nieterminalne mogą być przekształcane w symbole terminalne lub inne symbole nieterminalne. Oto przykład prostej gramatyki bezkontekstowej:
-
12.1 Praca z wskaźnikami
-
12.5 Kolejki i stosy
-
14.1 Słowniki i mapy
Jeśli chciałbyś być poinformowany o następnych kursach to zapisz się do naszego newslettera: