Języki programowania zasady ich tworzenia



Podobne dokumenty
Programowanie w języku Python. Grażyna Koba

Programowanie w języku C++ Grażyna Koba

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Java EE produkcja oprogramowania

1 Podstawy c++ w pigułce.

ForPascal Interpreter języka Pascal

Zadanie analizy leksykalnej

Zapisywanie algorytmów w języku programowania

Algorytmy od problemu do wyniku

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

WYRAŻENIA ALGEBRAICZNE

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Algorytmika i Programowanie VBA 1 - podstawy

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Algorytmy zapisywane w pseudojęzyku programowania. Klasa 2 Lekcja 6

Język C zajęcia nr 7. Uwagi dotyczące stylu programowania

Programowanie komputerowe. Zajęcia 1

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Podstawy Programowania Podstawowa składnia języka C++

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Struktura pliku projektu Console Application

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

ECDL Podstawy programowania Sylabus - wersja 1.0

Efektywna analiza składniowa GBK

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Podstawy programowania skrót z wykładów:

Programowanie i techniki algorytmiczne

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Pascal - wprowadzenie

Zadanie 2: Arytmetyka symboli

Algorytm. a programowanie -

Kilka prostych programów

Programowanie w Turbo Pascal

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Definicje. Algorytm to:

Architektura komputerów

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Gramatyki atrybutywne

Warsztaty dla nauczycieli

Wstęp do logiki. Semiotyka cd.

do instrukcja while (wyrażenie);

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Technologie informacyjne - wykład 12 -

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Podstawy programowania w C++

Wprowadzenie do programowania w VBA

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Języki formalne i automaty Ćwiczenia 1

EGZAMIN MATURALNY Z INFORMATYKI 13 MAJA 2019 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Podstawy Programowania

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Wstęp do programowania

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA ALGORYTM. Język programowania PROGRAM. instrukcja-dla. instrukcja-przypisania.

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Wprowadzenie. Teoria automatów i języków formalnych. Literatura (1)

ALGORYTMY I PROGRAMY

Analiza semantyczna. Gramatyka atrybutywna

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

EGZAMIN MATURALNY Z INFORMATYKI 11 MAJA 2018 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 90 minut

Podstawy programowania - 1

Techniki multimedialne

lekcja 8a Gry komputerowe MasterMind

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Poprawność algorytmów

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Podstawy programowania

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Logika dla socjologów Część 2: Przedmiot logiki

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Metody Kompilacji Wykład 3

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Język C - podstawowe informacje

Programowanie komputerów

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Elementy języków programowania

KARTA KURSU. Wstęp do programowania

Języki formalne i techniki translacji

Transkrypt:

Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie zdania uznawane za komunikaty w tym języku. Elementami każdego języka są: - słownik nazywany również notacją. Jest to zbiór słów (symboli) oraz różnych znaków. Pewne ciągi słów rozpoznawane są jako poprawnie zbudowane zdania; - zbiór reguł gramatycznych określających, które ciągi słów są poprawnymi zdaniami; - zbiór reguł semantycznych określających sens poszczególnych zdań; - zbiór reguł pragmatycznych określających formy bliskoznaczne. Mariusz B. Bogacki 1

Strona 2 z 18 Pewien język Rozważmy zdanie: koty śpią. Słowo koty jest podmiotem, a słowo śpią jest orzeczeniem. Zdanie to należy do języka, którego składnia zdefiniowana może być następująca: <zdanie> ::= <podmiot><orzeczenie> <podmiot> ::= koty psy <orzeczenie> ::= śpią jedzą Z powyższej definicji wynika: 1. zdanie składa się z podmiotu i następującego po nim orzeczenia, 2. podmiotem jest pojedyncze słowo koty lub psy, 3. orzeczeniem jest słowo śpią lub jedzą. Mariusz B. Bogacki 2

Strona 3 z 18 Składnia lub syntaktyka Składnią języka nazywamy zbiór reguł lub formuł określających zbiór (formalnie poprawnych) zdań. W potocznym znaczeniu składnię kojarzymy z gramatyką danego języka. - stosować można jedynie specjalne kombinacje słów kluczowych oraz symboli (znaków). - Składnia języka nie tylko określa czy dany ciąg słów jest zdaniem, ale również jego strukturę pomocną w rozpoznawaniu znaczenia zdania. - Każda próba naruszenia przyjętej składni powoduje wygenerowanie przez komputer komunikatu obłędzie składniowym i zaprzestaniu wykonywania programu. - Do zapisu składni języków programowania często stosuje się tzw. notację Backusa Naura (notacja BNF Backus-Naur Form). Mariusz B. Bogacki 3

Strona 4 z 18 Składnia typowego języka programowania 1. zbiór znaków; - alfabet (duże i małe litery), - cyfry, - znaki działań arytmetycznych (np. + - / ^), - znaki działań logicznych (np. ), - znaki relacji (np. = < > ), - inne znaki (interpunkcyjne [,. ; : {spacja}], nawiasy (kwadratowe, półokrągłe, klamrowe), znaki specjalne (np. //), - zbiór słów kluczowych traktowanych jako niepodzielne symbole (np. begin, end, real, integer, if, for, do), 2. systematyczny opis struktur sterujących, 3. systematyczny opis sposobu definiowania struktur danych, 4. wzorce podstawowych instrukcji i struktur danych, 5. reguły budowania nazw: zmiennych, struktur danych, podprogramów i procedur, 6. zasady interpunkcji, stosowania komentarzy, itd., itp. Mariusz B. Bogacki 4

Strona 5 z 18 Algorytm sumowania liczb od 1 do N wczytaj N; X:=0; dla Y od 1 do N z krokiem 1 wykonaj X:=X+Y koniec; wypisz X. Mariusz B. Bogacki 5

Strona 6 z 18 Przykładowy opis instrukcji-dla w notacji BNF <instrukcja> ::= <instrukcja-dla> <instrukcjaprzypisania> <instrukcja-dla> ::= dla <nagłówek-dla> wykonaj <instrukcja> koniec Opis nagłówka: <nagłówek-dla> ::= <zmienna> od <wartość> do <wartość> <zmienna> od <wartość> do <wartość> z krokiem <wartość> <zmienna> ::= <litera> <zmienna><litera> <zmienna><liczba> <wartość> ::= <zmienna> <liczba> <liczba> ::= <cyfra> <liczba><cyfra> Mariusz B. Bogacki 6

Strona 7 z 18 Przykładowy opis sposobu definiowania tablic w notacji BNF <opis-tablic> ::= tablica <nazwa tablicy> [<wykaz-par-granicznych>] <typ> <nazwa-tablicy> ::= <litera> <nazwatablicy><litera> <nazwa-tablicy><liczba> <dolna-granica> ::= <liczba> <górna-granica> ::= <liczba> <para-graniczna> ::= <dolna-granica>:<górnagranica> <wykaz-par-granicznych> ::= <para-graniczna> <wykaz-par-granicznych>,<para-graniczna> <typ> ::= rzeczywista całkowita logiczna tablica TABL [5:123,0:10] całkowita; Mariusz B. Bogacki 7

Strona 8 z 18 Semantyka czyli znaczenie Semantyka zajmuje się badaniem znaczenia zdań i wyrazów. Reguły semantyczne podają: - znaczenie poszczególnych dopuszczonych przez składnię symboli, - sposób interpretacji poprawnych składniowo zdań, - sposób realizacji dopuszczalnych przez składnię struktur sterujących Mariusz B. Bogacki 8

Strona 9 z 18 Przykład reguł semantycznych definiujących poszczególne symbole Symbol Znaczenie + dodawanie - odejmowanie, zmiana znaku / dzielenie ^ czytaj zapisz potęgowanie wczytywanie danych z aktualnego urządzenia zewnętrznego zapisanie danych na aktualne urządzenie zewnętrznego Mariusz B. Bogacki 9

Strona 10 z 18 Przykład reguł semantycznych definiujących działanie potęgowania Potęgowanie a^b (a podstawa potęgi, b jej wykładnik) Typ b całkowity rzeczywisty Inne własności a b b>0 Wartość a^b a a a (a powtórzone b razy) a=0 b 0 nie określone a 0 b=0 1 lub 1.0 b<0 1/(a a a) (a powtórzone -b razy) a>0 exp(b ln(a) a=0 a<0 b>0 0.0 b 0 nie określone Typ a^b identyczny z typem a identyczny z typem a rzeczywisty Mariusz B. Bogacki 10

Strona 11 z 18 Przykład reguł semantycznych definiujących instrukcję dla Instrukcja dla najczęściej występuje w postaci: dla Z := A 1 z krokiem A 2 aż do A 3 wykonaj I gdzie Z jest zmienną, A 1, A 2, A 3 wyrażeniami arytmetycznymi, a I instrukcją. Podaną instrukcję dla rozumiemy następująco: (a) wykonać instrukcję podstawienia Z := A 1, (b) obliczyć wartość w wyrażenia (Z (A 3 )) sign(a 1 ), (c) Jeśli w 0, to wykonać instrukcję I oraz instrukcję podstawienia Z := Z + A 2, a potem powrócić do czynności (b) i tych, które następują po niej. Mariusz B. Bogacki 11

Strona 12 z 18 Problem pętli iteracyjnej Ile razy zostanie wykonana poniższa pętla iteracyjna: dla I:= 1 z krokiem 1 aż do -314.159 wykonaj I (1) I przybiera kolejno 316 różnych wartości 1, 0, - 1, -2,..., -313, -314. (2) I przybiera kolejno 317 różnych wartości 1, 0, - 1, -2,..., -313, -314, -315. (3) Być może pętla nie zostanie wykonana ani razu ponieważ liczba -314.159 jest mniejsza od 1, a pętle dla muszą zwiększać licznik, a nie zmniejszać go. Mariusz B. Bogacki 12

Strona 13 z 18 Problem zmiennych procedurowych Język dopuszcza zmienne, których wartościami są nazwy procedur. Wtedy nazwy procedur mogą wystąpić jako parametry innych procedur. procedura P z-parametrem V; wywołaj V koniec Mariusz B. Bogacki 13

Strona 14 z 18 Problem zmiennych procedurowych cd. Co będzie, gdy parametrem procedury V jest nazwa tej procedury? procedura P z-parametrem V; 1. wywołaj V z-parametrem V, umieszczając wynik w zmiennej X; 2. jeśli X=1, wróć i daj wynik 0; w przeciwnym razie wróć i daj wynik 1. Jaki będzie wynik wywołania? wywołaj P z-parametrem P 1. Wynikiem tego wywołania jest 0 gdy wywołanie V z-parametrem V (w rzeczywistości P z- parametrem P) da 1. 2. Jednakże P z-parametrem P da 1 gdy jako wynik uzyskamy 0. Program będzie oscylować między 0 a 1 Mariusz B. Bogacki 14

Strona 15 z 18 Pragmatyka czyli formy zbliżone Pragmatyka języka obejmuje zalecenia dotyczące używania różnych poprawnych zdań o zbliżonym znaczeniu semantycznym Przykład: Mnożyć czy dzielić? Z := 0.5 W lub Z := W/2 Potęgować czy mnożyć gdy wykładnik potęgowy b jest liczbą całkowitą? a^b lub a a a a (a powtórzone b razy) Mariusz B. Bogacki 15

Strona 16 z 18 Przykład: Ograniczona czy warunkowa pętla iteracyjna dla I od 1 do N wykonaj koniec. instrukcja I:=0 jeśli I<N wykonaj instrukcja; I:=I+1 koniec. Mariusz B. Bogacki 16

Strona 17 z 18 Przekształcenie programu wysokiego poziomu na kod maszynowy ALGORYTM A Program w języku wysokiego poziomu Ap Program w języku adresów symbolicznych As Program w języku maszynowy Am Programista (człowiek) Kompilator (program) Kompilator (program) Mariusz B. Bogacki 17

Strona 18 z 18 Sposoby tłumaczenia (translacji) programów komputerowych na kod maszynowy Kompilacja Kompilacja polega na wiernym przekładzie programu zapisanego w języku źródłowym na program zapisany w języku maszynowym jako całości. Oznacza to, że poszczególne instrukcje programu zapisane w języku wysokiego poziomu nie muszą mieć ścisłego odpowiednika w kodzie maszynowym (nie muszą być ich wiernym tłumaczeniem), a jedynie oddawać ich sens. Interpretacja Interpretacja polega na tłumaczeniu instrukcji programu komputerowego zapisanego w języku wysokiego poziomu w sposób wierny, wiersz po wierszu, na język niskiego poziomu. Mariusz B. Bogacki 18