11. Wzmianka o metodach definiowania semantyki przypomnijmy definicję matematyczną języka formalnego: L = <Σ, Syn, DSem, Sem>
|
|
- Weronika Bednarczyk
- 6 lat temu
- Przeglądów:
Transkrypt
1 11. Wzmianka o metodach definiowania semantyki przypomnijmy definicję matematyczną języka formalnego: L = <Σ, Syn, DSem, Sem> Σ alfabet, skończony niepusty zbiór symboli (znaków) Syn syntaktyka (składnia, syntaksa), zbiór napisów języka zbudowanych z symboli alfabetu DSem dziedzina znaczeń, zbiór bytów semantycznych, przypisywanych napisom języka Sem relacja semantyczna (Sem Syn DSem), definiująca związki między napisami języka a elementami dziedziny znaczeń (relacja ta w zastosowaniach praktycznych jest funkcją semantyki) rozważamy języki programowania co stanowi tym wypadku dziedzinę semantyczną DSem? 1
2 a) reprezentacja środowiska obliczeniowego b) zdania logiczne opisujące stwierdzenia o programach. podstawowe podejścia: operacyjne, denotacyjne (funkcyjne) i aksjomatyczne metoda operacyjna: a) napisy Syn języka programowania są reprezentowane w postaci tzw. składni abstrakcyjnej (drzewo rozbioru składniowego), np.: a*(b+c) * a + b c 2
3 b) dziedzina DSem jest w tym wypadku uniwersum operacji, jakie wykonuje pewna abstrakcyjna maszyna podczas interpretacji napisów Syn języka; stąd, metoda operacyjna nazywana jest także interpretacją abstrakcyjną c) funkcja Sem przypisuje każdemu napisowi należącemu do Syn ciąg operacji z dziedziny DSem d) przykładem jest metoda wiedeńska (ang. Vienna Definition Language) 11.1 Metoda wiedeńska VDL programy, reprezentowane za pomocą składni abstrakcyjnej są interpretowane przez niedeterministyczną maszynę W każdy stan maszyny W jest zbiorem obiektów abstrakcyjnych trojakiego rodzaju: a) składowa kontrolna kk (reprezentująca wyrażenie Syn podlegające interpretacji) 3
4 b) składowa stanu pamięci sp (powiązania adresów komórek pamięci z zawartymi w nich wartościami) i c) składowa otoczenia so (słownik wiążący identyfikatory z ich znaczeniami, np. nazwy zmiennych z adresami komórek pamięci). przykład (znaczenie wyrażenia x := y * 3 w maszynie W) 4
5 5
6 6
7 7
8 w metodzie denotacyjnej (matematycznej, funkcyjnej) znaczeniem napisu Syn jest obiekt semantyczny nie związany bezpośrednio z pojęciem obliczenia lecz charakteryzujący abstrakcyjne środowisko obliczeniowe (stanowiące reprezentację Dsem) funkcja semantyczna Sem przypisuje bezpośrednio znaczenia wyrażeniom elementarnym języka, natomiast dla wyrażeń złożonych stosuje operatory umożliwiające składanie znaczeń (znaczenie konstrukcji złożonej jest kombinacją znaczeń konstrukcji składowych) 8
9 11.2 Metoda denotacyjna przyjmiemy, że znaczeniem wyrażeń języka programowania są funkcje określone w zbiorze stanów abstrakcyjnego środowiska obliczeniowego należy ustalić: dziedzinę syntaktyczną (składnia abstrakcyjna programów i ich składowych), dziedziny semantyczne, funkcje bazowe, operatory funkcyjne przykład (semantyka denotacyjna prostego języka programowania) a) dziedziny syntaktyczne Syn Op: operatory arytmetyczne, relacyjne i logiczne, Exp: wyrażenia arytmetyczne i logiczne, Stat: instrukcje, b) dziedziny semantyczne DSem TF ={t, f} wartości logiczne, Z zbiór liczb całkowitych, D = TF Z { } dziedzina wszystkich wartości, C = [Ide D] zbiór stanów środowiska (Ide to nazwy zmiennych) 9
10 [C D] dziedzina wartości w stanie (dla wyrażeń) [C C] dziedzina interpretacji (funkcja częściowa) c) funkcje bazowe DSem (tworzą elementarne byty semantyczne) funkcje arytmetyczne, relacje i operacje logiczne, określone na dziedzinie D d) operatory funkcyjne DSem (tworzą złożone byty semantyczne) złożenie funkcji częściowych, warunkowy wybór, podstawienie i operator punktu stałego e) semantyka Sem wyrażeń Exp (funkcja value: Exp [C D]) value(true)(c) = t value(false)(c) = f value(n)(c) = n value(x)(c) = c(x), x jest nazwą zmiennej value(e 1 2 E 2 )(c) = value(e 1 )(c) 2 value(e 2 )(c) 10
11 value( 1 E)(c) = 1 value(e)(c) f) semantyka Sem instrukcji Stat (funkcja SD: Stat [C C]) SD(x:=E)(c) = c(x/value(e)(c)) SD(skip) = Id SD(if R then S 1 else S 2 fi)(c) = (value(e) SD(S 1 ), SD(S 2 )) SD(while E do S od)(c) = Y(F), gdzie F(ξ) = (value(e) SD(S) ξ, Id) SD(S 1 ;S 2 )(c) = SD(S 1 ) SD(S 2 ) SD(begin DL; S end)(c) = SD(S) 11
12 w metodach aksjomatycznych formułuje się zdania o programach (na gruncie określonych systemów formalnych) i dowodzi ich prawdziwości a) zdania mogą dotyczyć np. zależności między problemem a jego rozwiązaniem w postaci programu (poprawność programu, równoważność programów itp.) b) przykładami systemów są: system wnioskowania C.A.R. Hoare a, logiki programów: temporalna, dynamiczna, algorytmiczna i in System wnioskowania Hoare'a weryfikowanie zdań dotyczących zgodności rozwiązania (programu p) z zadaną specyfikacją (warunkami nałożonymi na dane i funkcję pomiędzy danymi i wynikami): poprawność częściowa programu program p, wektor danych wejściowych x, wektor danych roboczych y, wektor danych wyjściowych z predykat wejściowy φ(x), predykat wyjściowy ψ(x, z) 12
13 φ(x) p ψ(x, z) poprawność częściowa programu p ze względu na predykat wejściowy φ i predykat wyjściowy ψ: φ(x) p zatrzyma się ψ(x, z) metoda weryfikacji poprawności częściowej programów w notacji pascalopodobnej 13
14 program jest skończonym ciągiem instrukcji, rozdzielonych średnikami: B 0 ; B 1 ; B 2 ; ; B n, B 0 jest instrukcją startu START y := f(x) pozostałe instrukcje mogą przyjąć postać: y := g(x, y), instrukcja przypisania if t(x, y) then B else B lub if t(x, y) do B, instrukcja warunkowa (B i B są dowolnymi instrukcjami) while t(x,y) do B, instrukcja iteracyjna z := h(x, y) STOP, instrukcja stopu begin B 1 ; B 2 ; ; B n end, instrukcja złożona. 14
15 C.A.R. Hoare wprowadził następującą notację: {p(x, y)} B {q(x, y)} oznaczającą, że jeśli predykat p(x, y) jest prawdziwy bezpośrednio przed wykonaniem segmentu B programu, to predykat q(x, y) będzie prawdziwy bezpośrednio po wykonaniu tego segmentu; następujące wyrażenie rozważanej postaci wyraża poprawność częściową programu p ze względu na predykat wejściowy φ(x) i predykat wyjściowy ψ(x, z): {φ(x)} p {ψ(x, z)} Hoare zdefiniował rachunek logiczny, w którym podał aksjomat i reguły wnioskowania umożliwiające przeprowadzanie dedukcji dotyczących programów aksjomat i reguły przyjmują postać: 1) aksjomat dla instrukcji przypisania {p(x, g(x, y))} y := g(x, y) {p(x, y)} 15
16 2) reguły dla instrukcji warunkowej {p t} B 1 {q}, { p t} B 2 {q} {p} if t then B 1 else B 2 {q} {p t} B {q}, {p t} {q} {p} if t do B {q} 3) reguła dla instrukcji iteracyjnej {p t} B {p} {p} while t do B {p t} 4) reguła dla instrukcji złożonej 16
17 {p} B 1 {q}, { q} B 2 {r} {p} B 1 ; B 2 {r} 5) reguły logiczne p q, {q} B {r} {p} B {r} {p} B {q}, q r {p} B {r} 17
18 metoda weryfikacji częściowej poprawności programu wg Hoare a: dany jest program p, predykat wejściowy φ(x) i predykat wyjściowy ψ(x, z); jeśli przez stosowanie reguł 1) 5) można wydedukować formułę {φ(x)} p {ψ(x, z)}, to program p jest częściowo poprawny ze względu na φ i ψ. wśród metod pochodnych można wyróżnić semantykę akcyjną P.D. Mossesa, a także semantyki algebraiczne; 18
19 tekst wejściowy tabela symboli, reprezentacje pośrednie tekstu analizator leksykalny analizator składniowy analizator zależności kontekstowych generator kodu pośredniego etap analizy tekstu wejściowego optymalizator kodu generator kodu wynikowego etap syntezy (tekstu) kodu wynikowego tekst wyjściowy 19
20 12 Analiza zależności kontekstowych 12.1 Wprowadzenie analiza zależności kontekstowych można wykonać na etapie kompilacji programu (statyczna weryfikacja zgodności typów (ang. static checking)) lub na etapie jego wykonania (dynamiczna weryfikacja zgodności typów (ang. dynamic checking)) na etapie kompilacji wykonuje się: badanie zgodności typów (ang. type checks), np. x + y badanie kontekstu występowania pewnych instrukcji (ang. flow-of-control checks), np. break w języku C badanie unikatowości deklaracji identyfikatorów (ang. uniqueness checks) badanie powiązanych wystąpień nazw (ang. name-related checks), np. konieczność użycia tej samej nazwy na początku i na końcu bloku w języku Ada statyczny weryfikator zgodności typów można zaprogramować posługując się translacją sterowaną składnią 20
21 12.2 Weryfikator zgodności typów ciąg symboli leksykalnych Analizator składniowy drzewo rozbioru Weryfikator zależności kontekstowych drzewo rozbioru weryfikacja zgodności typów polega na sprawdzeniu, czy typy poszczególnych konstrukcji językowych odpowiadają typom oczekiwanym w kontekście ich występowania należy zdefiniować system typów oraz z reguły przypisywania typów konstrukcjom języka do oznaczania typów konstrukcji językowych służy wyrażenie typowe (ang. type expressions) definicja wyrażeń typowych: 1) identyfikator typu podstawowego jest wyrażeniem typowym, np. boolean, char, integer, real, typ specjalny type_error oraz typ zastępczy void 21
22 2) nazwa typu jest wyrażeniem typowym 3) konstruktor typu złożonego zastosowany do wyrażeń typowych jest wyrażeniem typowym: konstruktor tablicy array; jeśli T jest wyrażeniem typowym, a I oznacza pewien zbiór indeksowy, to array(t, I) jest wyrażeniem typowym konstruktor produktu kartezjańskiego ; jeśli T 1 oraz T 2 są wyrażeniami typowymi, to ich produkt kartezjański T 1 T 2 jest także wyrażeniem typowym konstruktor rekordu record; jeśli k jest krotką, składającą się z nazw pól i stowarzyszonych z tymi nazwami typów, to record k end jest także wyrażeniem typowym konstruktor referencji pointer; jeśli T jest wyrażeniem typowym, to pointer(t) jest wyrażeniem typowym, oznaczającym referencję do obiektu typu T konstruktor funkcji function, odwzorowującej elementy jednego zbioru (dziedziny D) w inny zbiór (przeciwdziedzinę R); typ funkcji oznaczamy za pomocą wyrażenia typowego D R 22
23 4) wyrażenia typowe mogą zawierać zmienne, wartościowane w zbiorze wyrażeń typowych. system typów jest zbiorem reguł przypisywania wyrażeń typowych różnym częściom składowym programu weryfikator zgodności typów stanowi implementację systemu typów w silnym systemie typów weryfikacja odbywa się jedynie na etapie kompilacji przykład prostego weryfikatora zgodności typów zrealizowanego w paradygmacie translacji sterowanej składnią Fragment analizatora leksykalnego: ident [a-za-z][0-9]* %% "var" {return(var);} {ident} {yylval.text=strdup(yytext); return(id); } [0-9]+ {yylval.integer=atoi(yytext); return(num); } " ".+" " {return(literal);} ":=" {return(ass);} 23
24 Tabela symboli: #include <stdio.h> #include "typexpr.h" typedef struct t1 {char *name; TypeExpr *type_; t1 *next; }Descrip; Descrip *Vars=NULL; TypeExpr* VarLookup(char *n) { } char AddVar(char *n, TypeExpr *t) { } 24
25 Analizator składniowy i weryfikator zgodności typów: VD: id ':' T ';' {if (!AddVar($1,$3)) ERROR;} VD id ':' T ';' {if (!AddVar($2,$4)) ERROR;} ; T : charac {$$=NewBasic("char");} '^' T {$$=NewPointer($2);} array '[' num ']' of T {$$=NewArray($3,$6);} ; E : literal {$$=NewBasic("char");} num {$$=NewBasic("integer");} id {$$=VarLookup($1);} E mod E {if (IsInt($1) && IsInt($3)) $$=$1; else ERROR;} E '[' E ']' {if (IsArray($1) && IsInt($3)) $$=ElemType($1); else ERROR;} E '^' {if (IsPointer($1)) $$=ElemType($1); else ERROR;} E '=' E {if (IsChar($1) && IsChar($3) IsInt($1) && IsInt($3)) $$=NewBasic("Boolean"); else ERROR;} ; 25
26 S : id ass E {if (!Equiv(VarLookup($1),$3)) ERROR;} _if E then S {if (!IsBoolean($2)) ERROR;} begin SSeq end ; Sseq : S Sseq ";" S ; %% Boolean Equiv(t1, t2) TypeExpr *t1, *t2; {if (IsBasic(t1) && IsBasic(t2)) return (!strcmp(nameof(t1), NameOf(t2))); else if (IsPointer(t1) && IsPointer(t2)) return (Equiv(ElemType(t1),ElemType(t2))); else if (IsArray(t1) && IsArray(t2)) return (ArrayIndx(t1)==ArrayIndx(t2) && Eqiuv(ElemType(t1),ElemType(t2))); else return (False);} 26
27 12.3 Konwersje typów ze względu na różną reprezentację maszynową liczb typów całkowitego i rzeczywistego oraz zróżnicowanie instrukcji maszynowych działających na liczbach całkowitych i liczbach rzeczywistych, kompilator modyfikuje typy pewnych szczególnych operandów dotyczy to, między innymi, przypadku wyrażenia o postaci x + i, w którym x reprezentuje zmienną typu rzeczywistego, a i zmienną typu całkowitego w celu poprawnego zrealizowania operacji dodawania koniecznym jest, by oba operandy były tego samego typu; w rozważanym wyrażeniu zmienna i powinna zostać zmodyfikowana do postaci zmiennej typu rzeczywistego omówiona modyfikacja typu operandu nazywa się konwersją typów (ang. type conversion) konwersje typów mogą mieć charakter jawny (ang. explicit), bądź niejawny (ang. implicit); w pierwszym przypadku definiuje je programista (np. jawne konwersje w języku Ada lub C); konwersje niejawne, zwane koercjami są automatycznie realizowane przez kompilator. 27
28 13 Generacja kodu pośredniego 13.1 Charakterystyka problemu w podstawowym modelu kompilatora wszystkie jego przebiegi dzielą się na analizujące (ang. front end) i generujące (ang. back end) pomiędzy analizatorami a generatorem występuje zazwyczaj pewien program zapisany w języku formalnym zwanym językiem pośrednim (ang. intermediate language) chociaż można konstruować kompilatory jednoprzebiegowe (tłumaczące kod źródłowy na kod maszyny docelowej), to kompilator wieloprzebiegowy, oparty na maszynowo niezależnym języku pośrednim ma zalety polegające na: a) łatwości jego przeniesienia na inne maszyny docelowe b) możliwości zaprojektowania efektywnego, maszynowo niezależnego optymalizatora kodu translację drzewa rozbioru na zapis w języku pośrednim można zaprogramować za pomocą translacji sterowanej składnią 28
29 13.2 Generator kodu pośredniego ciąg symboli leksykalnych Analizator składniowy drzewo rozbioru Weryfikator zależności kontekstowych drzewo rozbioru drzewo rozbioru Generator kodu pośredniego Kod pośredni Generator kodu kod wynikowy 29
30 13.3. Języki pośrednie Koncepcja uniwersalnego języka pośredniego UNCOL (ang. Universal Computer Oriented Language) J1 J2 Jn J1 J2 Jn UNCOL K1 K2 Km K1 K2 Km m n translacji m + n translacji 30
31 Kategoryzacja języków pośrednich klasyfikacja języków ze względu na stopień ich uniwersalizmu: języki maszynowo niezależne, zorientowane na język źródłowy języki pseudo-uniwersalne, tzn. ukierunkowane na grupę języków źródłowych i klasę maszyn docelowych języki źródłowo niezależne, maszynowo uwarunkowane klasyfikacja języków ze względu na ich poziom stopień szczegółowości dostępnych w nich operacji: języki wysokiego poziomu, zbliżone do języka źródłowego języki niskiego poziomu, zbliżone do assemblera klasyfikacja języków ze względu na sposób przyjętej w nich reprezentacji programu: języki o notacji opisowej, np. o postaci drzew składniowych języki o notacji imperatywnej, np. o postaci: linearnej postfiksowej, kodu trójadresowego (trójkowego lub czwórkowego) 31
32 Kryteria oceny języka pośredniego niezawodność efektywność mierzona czasem wykonywania kompilowanego programu wysokość kosztów przenoszenia oprogramowania efektywność mierzona czasem kompilacji programu 32
33 Kod trójadresowy kod trójadresowy jest językiem imperatywnym, maszynowo niezależnym, o niskim poziomie abstrakcji Typy najczęściej używanych instrukcji kodu trójadresowego: 1) instrukcja podstawienia, o postaci x := y op z, gdzie op oznacza binarny operator arytmetyczny lub logiczny, np. +, *, AND, OR 2) instrukcja podstawienia, o postaci x := op y, gdzie op oznacza unarny operator arytmetyczny lub logiczny, np:, NOT 3) instrukcja kopiowania, o postaci x := y, oznaczająca podstawienie wartości y za zmienną x 4) instrukcja skoku bezwarunkowego, o postaci goto L, oznaczająca nakaz wykonania w następnej kolejności instrukcji oznaczonej etykietą L 5) instrukcja skoku warunkowego, o postaci if x relop y goto L, gdzie relop oznacza binarny operator relacyjny, np: >=, <> 33
34 6) instrukcje obsługi podprogramów, o postaci param x, call p, n oraz return y, gdzie p oznacza nazwę podprogramu, a n liczbę jego parametrów aktualnych; typowe użycie wymienionych instrukcji to sekwencja o postaci: param x1 param x2... param xn call p, n stanowiąca przekład instrukcji p(x1, x2,..., xn) pochodzącej z języka źródłowego; instrukcja return y ma charakter opcjonalny; powinna pojawić się w przekładzie podprogramu będącego funkcją 7) instrukcje kopiowania indeksowanego, o postaci x := y[i] oraz x[i] := y, oznaczające podstawienie, odpowiednio: wartości przechowywanej w i-tej jednostce pamięci następującej za jednostką początkową, zarezerwowaną do reprezentacji y za zmienną x oraz wartości przechowywanej w jednostce y do i-tej jednostki pamięci następującej za jednostką początkową, zarezerwowaną do reprezentacji zmiennej x; 34
35 8) instrukcje kopiowania, manipulujące adresami, o postaci x := &y, x := *y oraz *x := y, oznaczające podstawienie, odpowiednio: adresu jednostki pamięci używanej do reprezentacji zmiennej y za zmienną x wartości przechowywanej w jednostce pamięci o adresie y za zmienną x wartości y do jednostki pamięci, której adres jest reprezentowany zmienną x. 35
36 Translacja instrukcji podstawienia na kod trójadresowy S-atrybutowa definicja generacji kodu trójadresowego dla instrukcji podstawienia: Produkcja Reguła semantyczna S id := E S.code := E.code id.place := E.place E E1 + E2 E.place := newtemp; E.code := E1.code E2.code E.place := E1.place + E2.place E E1 * E2 E.place := newtemp; E.code := E1.code E2.code E.place := E1.place * E2.place E E1 E.place := newtemp; E.code := E1.code E.place := uminus E1.place E ( E1 ) E.place := E1.place; E.code := E1.code E id E.place := id.place; E.code := 36
37 Objaśnienia: syntetyzowany atrybut code reprezentuje kod trójadresowy dla przekładu: wyrażenia arytmetycznego (nieterminal E) oraz instrukcji podstawienia (nieterminal S) syntetyzowany atrybut place reprezentuje nazwę zmiennej służącej do przechowywania wartości wyrażenia arytmetycznego (nieterminal E) oznacza operator sklejania kodu newtemp jest nazwą funkcji bezparametrowej, generującej nazwy zmiennych tymczasowych t1, t2,..., tn w odpowiedzi na kolejne jej wywołania. 37
38 Schemat translacji w języku YACC, zdefiniowanej wyżej instrukcji podstawienia na kod trójadresowy; generacja kodu pośredniego jest w nim stowarzyszona z procesem parsingu: E : id E + E {printf("%s:= %s + %s;\n", $$=NewTemp(), $1, $3);} - E {printf("%s:= - %s; \n", $$=NewTemp(), $2);} E * E {printf("%s:= %s * %s;\n", $$=NewTemp(), $1, $3);} ( E ) {$$=$2;} ; S : id ass E {printf("%s:= %s;\n", $1, $3);} ; %% int TempNo=0; char *NewTemp() { char *s; s=(char*)calloc(7,sizeof(char)); sprintf(s, "t%d",tempno++); return(s);} 38
39 Translacja instrukcji sterujących na kod trójadresowy S-atrybutowa definicja generacji kodu trójadresowego dla instrukcji warunkowej o postaci if e then s, w której e oznacza wyrażenie logiczne zbudowane ze zmiennych i operatora relacyjnego =, zaś s jest instrukcją podstawienia lub zagnieżdżoną instrukcją warunkową: Produkcja Reguła semantyczna S id := E S.code := E.code id.place := E.place S if E then S1 L := newlabel; S.code := E.code if E.place = 0 goto L S1.code L : E E1 = E2 E.place := newtemp; L := newlabel; E.code := E1.code E2.code E.place := 1 if E1.place = E2.place goto L E.place := 0 L : E id E.place := id.place; E.code := 39
40 Objaśnienia: syntetyzowany atrybut code reprezentuje kod trójadresowy dla przekładu: wyrażenia logicznego (nieterminal E) oraz instrukcji podstawienia lub warunkowej if e then s (nieterminal S), syntetyzowany atrybut place reprezentuje nazwę zmiennej służącej do przechowywania wartości wyrażenia logicznego (nieterminal E) wyrażenia logiczne są ewaluowane w zbiorze wartości numerycznych {0, 1} oznacza operator sklejania kodu newtemp jest nazwą funkcji bezparametrowej, generującej nazwy zmiennych tymczasowych t1, t2,..., tn w odpowiedzi na kolejne jej wywołania newlabel jest nazwą funkcji bezparametrowej, generującej etykiety l1, l2,..., lm w odpowiedzi na kolejne jej wywołania. 40
41 Schemat translacji zdefiniowanej wyżej instrukcji warunkowej if e then s na kod trójadresowy; generacja kodu pośredniego jest w nim stowarzyszona z procesem parsingu: E : id E = E {printf( %s:= 1;\n, $$=NewTemp()); printf( if %s= %s goto %s;\n,$1,$3, l=newlab()); printf( %s:= 0;\n, $$); printf( %s:\n, l);} ; S : id ass E {printf( %s:=%s; \n, $1, $3);} _if E THEN S {printf( %s:\n, PopLab());} ; THEN : then {printf( if %s=0 goto %s;\n,$<text>0, l=newlab()); PushLab(l);} ; %% int TempNo=0; LabNo=0; char *NewTemp() { char *s; s=(char*)calloc(7, sizeof(char)); sprintf(s, t%d, TempNo++); return(s);} char *NewLab() { char *s; s=(char*)calloc(7, sizeof(char)); 41
42 sprintf(s, l%d, LabNo++); return(s);} if a=2 then a:=1 t1:= 1 if a=2 goto l1 t1=0 l1: if t1=0 goto l2 ----> l2 na stos a:=1 l2: ----> l2 ze stosu Objaśnienia: atrybutem wyrażenia logicznego jest miejsce przechowywania jego wartości instrukcje warunkowe mogą być zagnieżdżone, np.: if e1 then if e2 then if e3 then id1 := id2 = id3 42
43 z tego powodu do ich poprawnej translacji niezbędny jest stos etykiet oznaczających końce poszczególnych instrukcji warunkowych; obsługę tego stosu zapewniają funkcje: bezargumentowa PopLab, zdejmująca szczytową etykietę ze stosu i przekazująca ją do miejsca wywołania funkcji jednoargumentowa PushLab, umieszczająca etykietę będącą argumentem jej wywołania na szczycie stosu. 43
Gramatyki atrybutywne
Gramatyki atrybutywne, część 1 (gramatyki S-atrybutywne Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyki atrybutywne Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji
Metody Kompilacji Wykład 1 Wstęp
Metody Kompilacji Wykład 1 Wstęp Literatura: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: Compilers: Princiles, Techniques, and Tools. Addison-Wesley 1986, ISBN 0-201-10088-6 Literatura: Alfred V. Aho,
Przyczyny dwustopniowego tłumaczenia
Generacja kodu pośredniego Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Przyczyny dwustopniowego tłumaczenia Łatwość generowania kompilatorów tego samego języka dla róŝnych platform systemowo-sprzętowych
Wstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Kilka podstawowych pojęć Definition Programy imperatywne zmieniają stan, czyli wartości zmiennych. Asercja = warunek logiczny, który
10. Translacja sterowana składnią i YACC
10. Translacja sterowana składnią i YACC 10.1 Charakterystyka problemu translacja sterowana składnią jest metodą generacji przetworników tekstu języków, których składnię opisano za pomocą gramatyki (bezkontekstowej)
Języki programowania zasady ich tworzenia
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
Podstawy Kompilatorów
Podstawy Kompilatorów Laboratorium 10 Translacja sterowana składnią w generatorze YACC. Zadanie 1: Proszę napisać program, który dla danej liczby całkowitej j oraz niepustego ciągu liczb naturalnych c
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki
Analiza leksykalna 1 Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych (tokenów)
Analiza semantyczna. Gramatyka atrybutywna
Analiza semantyczna Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji na temat składni języka podlegającego tłumaczeniu, translator musi posiadać możliwość korzystania z wielu innych informacji
KONSTRUKCJA KOMPILATORÓW
KONSTRUKCJA KOMPILATORÓW WYKŁAD Robert Plebaniak PLATFORMA PROGRAMOWA LINUX (może nie zawierać LLgen, wówczas instalacja ze strony http://tack.sourceforge.net); WINDOWS (używa się wtedy programu Cygwin,
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.
1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Analiza semantyczna. Kompilator musi sprawdzić, czy w programie zachowane są zarówno
Kontrola typów Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Analiza semantyczna Kompilator musi sprawdzić, czy w programie zachowane są zarówno zasady syntaktyczne, jak i semantyczne.
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0
Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje
Zadanie analizy leksykalnej
Analiza leksykalna 1 Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Przykład: We: COST := ( PRICE + TAX ) * 0.98 Wy: id 1 := ( id 2 + id 3 ) * num 4 Tablica symboli:
Analiza zależności kontekstowych
Analiza zależności kontekstowych Wojciech Complak Wojciech.Complak@cs.put.poznan.pl 1 Plan wykładu zależności kontekstowe statyczne i dynamiczne sprawdzanie zależności kontekstowych systemy typów kontroler
Poprawność semantyczna
Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych
Programowanie komputerów
Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych
Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
Plan wykładu. Kompilatory. Literatura. Translatory. Literatura Translatory. Paweł J. Matuszyk
Plan wykładu (1) Paweł J. Matuszyk AGH Kraków 1 2 tor leksykalny tor syntaktyczny Generator pośredniego Generator wynikowego Hopcroft J. E., Ullman J. D., Wprowadzenie do teorii automatów, języków i obliczeń,
Ada-95. Dariusz Wawrzyniak
Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki
Technologie informacyjne - wykład 12 -
Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski
Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki
Analiza leksykalna 1 Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych
Wstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Algorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Podstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Definicje. Algorytm to:
Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.
ZMIENNE 39 zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. przydział pamięci). 40 Nazewnictwo zmiennych Dozwolone
Programowanie w elektronice: Podstawy C
Programowanie w elektronice: Podstawy C Projekt Matematyka dla Ciekawych Świata, Robert Ryszard Paciorek 2019-05-05 C / C++ są najpopularniejszymi językami kompilowanymi do kodu maszynowego
Translacja wprowadzenie
Translacja wprowadzenie Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Literatura 1) Aho A. V., Sethi R., Ullman J. D.: Compilers. Principles, Techniques and Tools, Addison- Wesley, 1986
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa
Informatyka 1 Wykład III Wyrażenia i instrukcje, złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: składnia wyrażeń, drzewa rozbioru gramatycznego i wyliczenia wartości wyrażeń, operatory
Przeciążanie operatorów
Instrukcja laboratoryjna nr 4 Programowanie w języku C 2 (C++ poziom zaawansowany) Przeciążanie operatorów dr inż. Wilk-Jakubowski Jacek mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz Wprowadzenie Oprócz
Jerzy Nawrocki, Wprowadzenie do informatyki
Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Programowanie imperatywne i język C Zaprezentować paradygmat programowania imperatywnego
Algorytmy od problemu do wyniku
Algorytmy Etapy tworzenia programu: 1) Sformułowanie zadania analiza problemu. 2) Opracowanie algorytmu sposób rozwiązania. 3) Zapisanie algorytmu w języku programowania kodowanie programu. 4) Kompilowanie
Paradygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe
INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE
Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby
Język programowania PASCAL
Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO
Wstęp do programowania. Różne różności
Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Analiza leksykalna i generator LEX
Analiza leksykalna i generator LEX Wojciech Complak Wojciech.Complak@cs.put.poznan.pl wprowadzenie generator LEX wyrażenia regularne i niejednoznaczności retrakcja definicje regularne atrybuty lewy kontekst
Podstawy Kompilatorów
Podstawy Kompilatorów Laboratorium 12 Analiza zależności kontekstowych. Zadanie 1: Proszę napisać analizator zgodności typów dla podzbioru standardowych wyrażeń języka Pascal. Dla uproszczenia należy założyć,
Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur. 1. Identyfikator funkcji,
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u
Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u będziemy używać w taki sam sposób, jak wbudowanych funkcji
Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Algorytm. Krótka historia algorytmów
Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne
Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.
Wstęp do Programowania Obiektowego Wykład 13 Paradygmaty. Składnia i semantyka. 1 PRZEGLĄD PODSTAWOWYCH PARADYGMATÓW 2 Cztery podstawowe paradygmaty 1. Programowanie imperatywne. 2. Programowanie funkcyjne.
Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.
PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
Podstawy programowania - 1
Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl
Metody Kompilacji Wykład 3
Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy
Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów
Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów przeznaczonych do wykonania w komputerze (ang. software).
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 17 1. Typy i zmienne Jak wiemy, komputer
Semantyka rachunku predykatów
Relacje Interpretacja Wartość Spełnialność Logika obliczeniowa Instytut Informatyki Relacje Interpretacja Wartość Plan Plan Relacje O co chodzi? Znaczenie w logice Relacje 3 Interpretacja i wartościowanie
Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu
Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie
Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++
Uniwersytet Śląski w Katowicach str. 1 Kierunek i poziom studiów: Chemia, poziom pierwszy Sylabus modułu: Laboratorium programowania (0310-CH-S1-019) Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania
Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.
Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane
Algorytm. Krótka historia algorytmów
Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
ForPascal Interpreter języka Pascal
Akademia Podlaska w Siedlcach Wydział Nauk Ścisłych Instytut Informatyki ForPascal Interpreter języka Pascal Przedmiot: Sieci i Systemy Wirtualne Informatyka IV Prowadzący: dr Krzysztof Trojanowski Grupa:
Jerzy Nawrocki, Wprowadzenie do informatyki
Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Programowanie imperatywne i język C Zaprezentować paradygmat programowania imperatywnego
Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać
MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty
MATERIAŁY DO ZAJĘĆ II
MATERIAŁY DO ZAJĘĆ II Zmienne w C# Spis treści I. Definicja zmiennej II. Hierarchia typów (CTS) III. Typy wbudowane IV. Deklaracja zmiennych V. Literały VI. Pobieranie i wypisywanie wartości zmiennych
Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne
Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1
Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe
Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 1 Programowanie 1 Program wykładu Struktura programu Instrukcja przypisania Wprowadzanie danych Wyprowadzanie wyników Instrukcja
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
1 Wprowadzenie do algorytmiki
Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności
20. Pascal i łączenie podprogramów Pascala z programem napisanym w C
Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie
Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.
Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne
Algorytm. a programowanie -
Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik
MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis
MATERIAŁY DO ZAJĘĆ I Podstawowe pojęcia Spis treści I. Algorytm II. Schemat blokowy III. Struktury danych IV. Program komputerowy V. Opis środowiska programistycznego VI. Obsługa wejścia wyjścia VII. Przykład
Java EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Logika Matematyczna (1)
Logika Matematyczna (1) Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl 4 X 2007 Jerzy Pogonowski (MEG) Logika Matematyczna (1) 4 X 2007 1 / 18 Plan konwersatorium Dzisiaj:
ECDL Podstawy programowania Sylabus - wersja 1.0
ECDL Podstawy programowania Sylabus - wersja 1.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu Podstawy programowania. Sylabus opisuje, poprzez efekty uczenia się, zakres wiedzy
Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne
Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne dr inż. Marcin Szlenk Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych m.szlenk@elka.pw.edu.pl Paradygmaty
Instrukcje sterujące. Programowanie Proceduralne 1
Instrukcje sterujące Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne * mnożenie x * y x y x / dzielenie x / y y + dodawanie x +
Podstawy Informatyki. Algorytmy i ich poprawność
Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Programowanie RAD Delphi
Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje
Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.
Wykład 4 Algorytmy + struktury danych = programy Niklaus Wirth Algorytm = logika + sterowanie Robert Kowalski J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 80 / 277 algorytm program język
Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel
Wstęp do programowania Procedury i funkcje Piotr Chrząstowski-Wachtel Po co procedury i funkcje? Gdyby jakis tyran zabronił korzystać z procedur lub funkcji, to informatyka by upadła! Procedury i funkcje
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia