1 Języki programowania Krzysztof Andrelczyk Krzysztof Andrelczyk Informatyka Stosowana, rok II Informatyka Stosowana, rok II.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Katarzyna Szafrańska kl. II ti
Sortowanie przez scalanie
Wprowadzenie do informatyki Wykład 6
Programowanie w języku Visual Basic
Języki programowania C++
27/09/ Języki programowania 1 Piotr Górczyński Pętle.
typy całkowite (całkowitoliczbowe)
OBJECT PASCAL Marzena Szałas.
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
ZŁOŻONOŚĆ OBLICZENIOWA
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Instrukcje Instrukcja : definicja obliczenia i określenie sposobu wykonania tego obliczenia. Program : ciąg instrukcji wykonywanych kolejno od pierwszej.
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Imperatywne modele obliczeń Copyright, 2003 © Jerzy R. Nawrocki Teoretyczne podstawy.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i granice obliczalności Copyright, 2004 © Jerzy R. Nawrocki
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Wyrażenia regularne i język AWK
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
Wykład 2 struktura programu elementy języka typy zmienne
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Systemy Wbudowane Bascom
Wprowadzenie do programowania w języku Turbo Pascal
KOMPUTEROWE WSPOMAGANIE PRAC BADAWCZYCH FORTRAN - wprowadzenie Adam FIC INSTYTUT TECHNIKI CIEPLEJ.
Podprogramy.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
PROGRAMOWANIE STRUKTURALNE WYKŁAD 2
Tytuł prezentacji Warszawa, r..
Programowanie w języku Fortran 95
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Słowa kluczowe oraz nazwy obiektów i klas rozpoczynaj od dużej litery np. Loop, Dim, FileStream Rozpoczynaj nazwę zmiennej od małej litery stosując styl.
Podstawy C# Grupa .NET PO.
Podstawy programowania
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Metody matematyczne w inżynierii chemicznej
Wyrażenia algebraiczne
Wyrażenia w Turbo Pascalu.
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
STEROWANIE Ale nie tylko
C# Platforma .NET CZ.3 Kuba Ostrowski.
Instrukcja warunkowa i wyboru
Programowanie baz danych
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Wykład 10 typ zbiorowy rekurencja.
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
Ogólna struktura programu w TP
Podstawy języka Instrukcje - wprowadzenie
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Pętle – instrukcje powtórzeń
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Visual Basic przygotował Michał Miłek Visual Basic – język programowania wysokiego poziomu i narzędzie programistyczne firmy Microsoft. Składnia jest oparta.
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
Pakiety numeryczne Operatory, instrukcje sterujące, operacje bitowe Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Visual Basic w programie Microsoft Excel
Dane, zmienne, instrukcje
Zapis prezentacji:

1 Języki programowania Krzysztof Andrelczyk Krzysztof Andrelczyk Informatyka Stosowana, rok II Informatyka Stosowana, rok II

2 Plan referatu Pierwsze języki programowania. Pierwsze języki programowania. Języki programowania specjalistycznego zastosowania. Języki programowania specjalistycznego zastosowania. Języki programowania ogólnego zastosowania. Języki programowania ogólnego zastosowania. Inne języki. Inne języki.

3 Pierwsze języki programowania

4 Plan kalkül Stworzony w 40 latach przez Konrada Zuse język bedący próbą wynalezienia międzynarodowego sposobu na zapisywanie programów. Stworzony w 40 latach przez Konrada Zuse język bedący próbą wynalezienia międzynarodowego sposobu na zapisywanie programów. Był to najwcześniejszy język algorytmiczny ale posiadał wiele cech charakterystycznych dla współczesnych języków. Był to najwcześniejszy język algorytmiczny ale posiadał wiele cech charakterystycznych dla współczesnych języków. Nie doczekał się implementacji. Nie doczekał się implementacji.

5 Typy danych Jedynym dostępnym typem był typ boolean (Ja-Nein-Werte). Przyjmował wartości 0 (nie) i L (tak). Jedynym dostępnym typem był typ boolean (Ja-Nein-Werte). Przyjmował wartości 0 (nie) i L (tak). Złożone struktury (tablice i rekordy) budowane rekurencyjnie, np.: Złożone struktury (tablice i rekordy) budowane rekurencyjnie, np.: n x S0==[0:n-1]bool m x n x S0==[0:m-1,0:n-1]bool (A2,A3)

6Oznaczenia L i 0 dla pojedynczych bitów. L i 0 dla pojedynczych bitów. L00L dla tablic. L00L dla tablic. V – zmienna. V – zmienna. Z - wartość pośrednia. Z - wartość pośrednia. R – wynik, zmienna zewnętrzna. Np. R17 (wynik procedury P17, użycie powoduje wywołanie procedury). R – wynik, zmienna zewnętrzna. Np. R17 (wynik procedury P17, użycie powoduje wywołanie procedury). C – stała. C – stała. P – program, podprogram. P – program, podprogram.

7 Wyznaczanie i podstawianie wartości Jeżeli V0 == l x m x S1 * n to Jeżeli V0 == l x m x S1 * n toV 0==V0[i,j,k] i*j*kV 0== V0[i] i Z + 1 => Z Z + 1 => Z 1 1

8 Warunki i pętle A -> B- najpierw wykonuje sie instrukcja A. Jeżeli jej wynik jest równy L to wykona sie instrukcja B. Jeżeli jest równy 0 to wykonywanie zakończy sie na intrukcji A. A -> B- najpierw wykonuje sie instrukcja A. Jeżeli jej wynik jest równy L to wykona sie instrukcja B. Jeżeli jest równy 0 to wykonywanie zakończy sie na intrukcji A. Pętle oznacza sie symbolem W. Np.: Pętle oznacza sie symbolem W. Np.: W[(xcV ^ x V) => Z] Pętla wykona sie raz dla każdego x należącego do V0 i różnego od V1.

9 BASIC (Beginners All-purpose Symbolic Instruction Code)

10 BASIC wg. The Jargon File Zaprojektowany w 1960 r. dla eksperymentalnego systemu współdzielenia czasu z Dartmouth. Zaprojektowany w 1960 r. dla eksperymentalnego systemu współdzielenia czasu z Dartmouth. Jeden z przypadków gdy język zaprojektowany jako zabawka do nauki został wzięty zbyt poważnie. Jeden z przypadków gdy język zaprojektowany jako zabawka do nauki został wzięty zbyt poważnie. Główna przyczyna uszkodzeń mózgu u pierwszych hackerów. Główna przyczyna uszkodzeń mózgu u pierwszych hackerów.

11 Stałe, zmienne i tablice Typy danych: Typy danych: - liczby rzeczywiste. - stałe tekstowe. Tablice: Tablice: Deklarowane za pomocą intrukcji DIM, np.: DIM X$(10) DIM B(5,5)

12 Procedury, pętle, warunki Instrukcja GOSUB: Instrukcja GOSUB: 100 GOSUB ? X: RETURN Instrukcja FOR: Instrukcja FOR: FOR I=5 TO 10 ? I NEXT I Intrukcje IF i ON: Intrukcje IF i ON: IF X=1 THEN GOTO 500 ON X GOSUB 100,200,300

13 Przykładowy program 10 DIM A,B,C 20 PRINT "Ile liczb?": INPUT C 30 IF C > 180 THEN PRINT "Bez przesady...": GOTO IF C < 0 THEN PRINT "Moze jednak troche wiecej?": GOTO DIM I 60 A = 0: B = 1 70 FOR I=0 TO C 80 PRINT A 90 A = A + B: B = A - B 100 NEXT I

14 Języki programowania specjalistycznego zastosowania

15 FORTRAN (FORmula TRANslation)

16 Stworzony w 60 latach w USA język programowania ogólnego zastosowania. Stworzony w 60 latach w USA język programowania ogólnego zastosowania. Z czasem stał się międzynarodowym językiem programowania maszyn matematycznych. Z czasem stał się międzynarodowym językiem programowania maszyn matematycznych. Do lat 80 najszerzej stosowany język. Do lat 80 najszerzej stosowany język. Nadaje się szczególnie do programowania zagadnień z dziedziny nauk ścisłych, technicznych i przyrodniczych. Nadaje się szczególnie do programowania zagadnień z dziedziny nauk ścisłych, technicznych i przyrodniczych.

17 Typy danych i operatory Typy danych: Typy danych: - INTEGER, REAL (11 cyfr znaczących), DOUBLE PRECISION (20 cyfr), COMPLEX (liczby zespolone), LOGICAL (.TRUE. Lub.FALSE.), TEXT (ciąg znaków) Operatory: Operatory: - Arytmetyczne :+, -, *, / (dzielenie), ** (potęgowanie) - Logiczne:.NOT.,.AND.,.OR.

18 DO i IF Instrukcja wielokrotnego wykonania, DO. Instrukcja wielokrotnego wykonania, DO. Postać ogólna: DO etykieta zmienna=początek, koniec, krok Np. DO 50 K=1,10,2 S = S+F(K) S = S+F(K) 50 CONTINE 50 CONTINE Instrukcja warunkowa, IF. Instrukcja warunkowa, IF. Postać ogólna: IF warunek instrukcja Np. IF (A.EQ.B) GO TO 50

19 Przykład programu PROGRAM ABC INTEGER A,B,C REAL X1,X2 COMMON /X/X1,X2 DATA A,B,C/9,8,-1/ CALL SOLVE(A,B,D (A,B,C)) PRINT *,X1,X2 END FUNCTION D (A,B,C) INTEGER A,B,C D = (B**2 - 4*A*C)**0.5 RETURNEND SUBROUTINE SOLVE (A,B,D) INTEGER A,B REAL D COMMON /X/X1,X2 X1 = (-B+D)/(2*A) X2 = (-B-D)/(2*A) RETURNEND

20 ALGOL

21 Typy danych, tablice Typy danych: Typy danych: Integer, real, boolean. Tablice: Tablice: Deklarowane za pomocą słowa kluczowego array. Np. integer array tab [6:18, 5:15]; boolean array bool [1.7 : 5,2]; real array X [-20 : 5, -15 : -3, 20 : 50, 0 : 10];

22 Pętle i instrukcje warunkowe IF. IF. Np. if A > B then y:= x1 else if A B then y:= x1 else if A < B then y:= x2 else y:= x3; B:= if X = Y then 2*B else if X<6 then 3*B else B; FOR. FOR. Np. for i := 2, 5, 3*y, y*c do x[i] := 0; for k := 10 step -0.5 until 0 do x:= y*z; for x:= 0 while x<10 do x:= x + 1; for x:= 5, 10 step 2 until 20, -6, x**2 do... ;

23 Przykładowy program. begin array tab [1 : 20]; procedure scal (a,b); integer a; integer b; begin array tmp[a : b]; integer temp; integer l; integer m; integer n; if b >= a+1 then begin if b > a+1 then begin scal(a, (a+b) div 2); scal((a+b) div 2+1, b); end; if b = a+1 then begin if tab[b] < tab[a] then begin temp:= tab[a]; tab[a]:= tab[b]; tab[b]:= temp; end;end;end;

24 if b > a + 1 AND b-a a + 1 AND b-a<20 then begin m:=(a+b) div 2 +1; n:=a;l:=a; for temp:=0 while n<b+1 do begin if tab[l] > tab[m] then begin tmp[n]:=tab[m];m:=m+1; if m>b then begin m:=m-1;tab[m]:=100;end;n:=n+1;end; if tab[l]<tab[m] then begin tmp[n]:=tab[l];l:=l+1; if l> (a+b)div 2 then begin l:=l-1;tab[l]:=100;end;n:=n+1;end;end;

25 for n:=a step 1 until b do tab[n]:=tmp[n] end; end; integer i; integer k; for i:= 1 step 1 until 20 do tab[i]:= rand * 100; scal(1,20); for k:=1 step 1 until 20 do vprint(tab[k]); end

26 LISP (LISt Processor)

27 Stworzony przez Johna McCarthyiego pod koniec lat 60 w firmie MIT. Stworzony przez Johna McCarthyiego pod koniec lat 60 w firmie MIT. Wykorzystywał niektóre idee języka IPL-II (struktóry listowe i ich przetwarzanie) i teorię funkcji rekurencyjnych. Wykorzystywał niektóre idee języka IPL-II (struktóry listowe i ich przetwarzanie) i teorię funkcji rekurencyjnych. Programy czystego Lispu są funkcjami konstruowanymi z pięciu funkcji elementarnych przez superpozycję, stosowanie wyrażenia warunkowego oraz definicji rekurencyjnych. Programy czystego Lispu są funkcjami konstruowanymi z pięciu funkcji elementarnych przez superpozycję, stosowanie wyrażenia warunkowego oraz definicji rekurencyjnych.

28 Typy danych Atom – elementarna dana zapisywana w postaci ciągu znaków, np.: A, ABA, A371C. Atomy są niepodzielne. Atom – elementarna dana zapisywana w postaci ciągu znaków, np.: A, ABA, A371C. Atomy są niepodzielne. Dane nieatomowe – jeżeli A jest zbiorem atomów to zbiór D bedący zbiorem danych czystego Lispu jest takim zbiorem, że: Dane nieatomowe – jeżeli A jest zbiorem atomów to zbiór D bedący zbiorem danych czystego Lispu jest takim zbiorem, że: - A jest podzbiorem D - każda para uporządkowana elementów D należy do D Lista należy do podzbioru D i może być: Lista należy do podzbioru D i może być: - wyróżnionym atomem NIL (lista pusta) - uporządkowaną parą elementów D, w której drugi element jest lista, np.: (A.NIL), (A.(B.NIL)), ((X.A).((Y.B).((Z.C).NIL)))

29 Funkcje i predykaty elementarne Funkcje: cons[a;b] = (a.b) cons[a;b] = (a.b) car[(a.b)] = a car[(a.b)] = a cdr[(a.b)] = b cdr[(a.b)] = b dodatkowo np. caadr[...] = car[car[cdr[...]]] Predykaty: atom[d] = T gdy d jest atomem, F gdy nie jest atom[d] = T gdy d jest atomem, F gdy nie jest eq[d1;d2] = T gdy d1 = d2, F gdy d1 d2 eq[d1;d2] = T gdy d1 = d2, F gdy d1 d2

30 Przykładowy program (DEFUN REVERS (X) (COND ((NULL X) X) (T (PRINT X) (CONS (CDR X) (REVERS (CAR X)))))) (REVERS (CONS (CONS (CONS (CONS (CONS NIL (QUOTE A)) (QUOTE B)) (QUOTE C)) (QUOTE D)) (QUOTE E)))

31 Inny przykładowy program (setq kubelki '((0) (1) (2) (3) (4) (5) (6) (7) (8) (9))) (defun put (co gdzie) (cond ((eq co (caar gdzie)) (setf (car gdzie) (cons co (car gdzie)))) (cond ((eq co (caar gdzie)) (setf (car gdzie) (cons co (car gdzie)))) (T (put co (cdr gdzie))) )) (T (put co (cdr gdzie))) )) (defun kpop (skad) (cond ((cdar skad) (popup (car skad)))) (cond ((cdar skad) (popup (car skad)))) (cond ((not (null skad)) (kpop (cdr skad))) (cond ((not (null skad)) (kpop (cdr skad))) (T skad)) ) (T skad)) ) (defun popup (skad) (cond ((cddr skad) (popup (cdr skad)))) (cond ((cddr skad) (popup (cdr skad)))) (print (car skad))) (print (car skad)))(loop (setq liczba (read)) (setq liczba (read)) (cond ((not liczba) (return)) (cond ((not liczba) (return)) (T (put liczba kubelki)) )) (T (put liczba kubelki)) ))

32 Prolog

33 Historia Stworzony przez Colmeraure'a we wczesnych latach '70 jako program do dowodzenia twierdzeń. Oparty był na teorii Kowalskiego. Stworzony przez Colmeraure'a we wczesnych latach '70 jako program do dowodzenia twierdzeń. Oparty był na teorii Kowalskiego. Pierwszy interpreter dorównywujacy szybkością LISPowi powstał w połowie lat '70 (David Warren). Pierwszy interpreter dorównywujacy szybkością LISPowi powstał w połowie lat '70 (David Warren).

34 Przykładowy kod ojciec(krzysztof, jozef). ojciec(iwona, jozef). ojciec(jozef, bolek). ojciec(waldek, bolek). ojciec(czesia, bolek). ojciec(bolek, ktos). m(krzysztof). m(bolek). m(waldek). k(iwona). k(czesia). syn(O,S):- m(S), ojciec(S,O). corka(O,C):- k(C), ojciec(C,O). brat(X,Y):- ojciec(X,O), ojciec(Y, O), m(X). siostra(X,Y):- ojciec(X,O1), ojciec(Y, O2), O1 = O2, k(Y). dziadek(X, Y):- ojciec(X, O), ojciec(O, Y), m(Y). wujek(X, Y):- ojciec(X, O), brat(O, Y). ciotka(X, Y):- ojciec(X, O), siostra(O, Y). pradziadek(X, Y):- ojciec(O, Y), dziadek(X, O).

35 Języki programowania ogólnego zastosowania

36 C

37 Zaprojektowany przez Denisa Ritchiego na poczatku lat 70 i natychmiast wykożystany do zaimplementowania Unixa. Zaprojektowany przez Denisa Ritchiego na poczatku lat 70 i natychmiast wykożystany do zaimplementowania Unixa. W latach 80 bardzo szybko zdobył popularność poza Bell Labs. W latach 80 bardzo szybko zdobył popularność poza Bell Labs. Algol -> CPL -> BCLP -> B -> C Algol -> CPL -> BCLP -> B -> C

38 Podstawowe typy danych int – liczby całkowite. int – liczby całkowite. float – liczby zmiennopozycyjne float – liczby zmiennopozycyjne char – znak, jeden bajt. char – znak, jeden bajt. short – liczba całkowita krótka. short – liczba całkowita krótka. long – liczba całkowita długa. long – liczba całkowita długa. double – liczba zmiennopozycyjna podwójnej precyzji. double – liczba zmiennopozycyjna podwójnej precyzji.

39 Operatory Arytmetyczne: Arytmetyczne: - *, /, %, +, - Bitowe: Bitowe: & (AND), | (OR), ^ (XOR), > (przesunięcie w lewo), ~ (dopełnienie jedynkowe). ~ (dopełnienie jedynkowe). Inne: Inne: ++, --, +=, -=, |=.

40 Pętle, warunki for (i=5; i < 10; ++i) {...} for (i=5; i < 10; ++i) {...} while (x 10 || z 10 || z <10)) {...} do {...} while (x<10); do {...} while (x<10); if (x<20) {..} else if (x < 10) {...} else {...} if (x<20) {..} else if (x < 10) {...} else {...} x = x < 10 ? 0 : 10; x = x < 10 ? 0 : 10;

41 Przykładowy program #include "header.h" int insert(int k,char z) { int h; s = 0; pos = start; while (L[++s].item != NULL && s < WYMIAR); if(s >= WYMIAR) { return 0;} h = k - 2; if(k != 0 && k != last+1) { while (h > -1 && h -1 && h < last - 1) { pos = L[pos].next; --h;}} if(k == 0) { L[s].next = start; start = s; L[start].item = z; ++last; } else if(h == -1) { L[s].next = L[pos].next; L[pos].next = s; L[s].item = z; ++last; return 0;} }

42 C++ Zaprojektowany przez Bjarne Stroustrupa jako następca C. Zaprojektowany przez Bjarne Stroustrupa jako następca C. C++ rozszerza C o elestyczne i efektywne udogodnienia do definiowania nowych typów (programowanie obiektowe). C++ rozszerza C o elestyczne i efektywne udogodnienia do definiowania nowych typów (programowanie obiektowe). Podstawowym pojęciem C++ jest klasa, zapewniająca ukrywanie danych, niejawną konwersję typów, zarządzanie pamięcią i przeciążanie operatorów. Podstawowym pojęciem C++ jest klasa, zapewniająca ukrywanie danych, niejawną konwersję typów, zarządzanie pamięcią i przeciążanie operatorów.

43 Przykładowy program #inndef WALL_H #define WALL_H #include #include #include "Object.h" class Wall : public Object { public:Wall();~Wall(); voidDraw(void); intUpdate(void); intWhoAmI(void); voidSetPosition(Vector); voidSetVellocity(Vector); voidSetSprite(BITMAP *); protected: Vector position; Vector velocity; float velocity_value; }

44 Przykładowy program cd. #include "Wall.h" Wall::Wall() {... position.x = 0; position.x = 0; position.y = 0; position.y = 0; velocity_value = 0; velocity_value = 0; sprite = NULL; sprite = NULL;} Wall:: Update() { position.x += velocity.x * velocity_value; position.x += velocity.x * velocity_value; position.y += velocity.y * velocity_value; position.y += velocity.y * velocity_value; return 0; return 0;} void Wall::SetPosition (Vector v) { position.x = v.x; position.x = v.x; position.y = v.y; position.y = v.y;}...

45 Inne języki

46 Corewars Gra Corewars – symulator walki programów. Pewna liczba programów załadowanych do pamięci wirtualnego komputera stara się zająć jak najwiekszą część pamięci i zniszczyć przeciwników. Gra Corewars – symulator walki programów. Pewna liczba programów załadowanych do pamięci wirtualnego komputera stara się zająć jak najwiekszą część pamięci i zniszczyć przeciwników. Język Corewars – prosty język o składni podobnej do assemblera. Język Corewars – prosty język o składni podobnej do assemblera.

47 Postać ogólna intrukcji instrukcja [, ] instrukcja [, ] Gdzie: - nazwa (grupy) instrukcji, - operatory. Operator może być:, - operatory. Operator może być: - liczbą - adresem intrukcji (& ) - zawartoscia intrukcji ( ) - zawartością intrukcji użytą do zaadresowania innej komórki pamięci ([ ])

48 Przykładowy program author "efrum START:move &START,B move 9,A add 1000,D move D,C COPY:movei B,D loop A,COPY fork [C] jump START A: data 0 B: data 0 C: data 0 D: data &D

49 Compiler Language With No Pronanceable Acronym INTERCAL Język zaprojektowany 26 maja 1972 roku na uniwersytecie w Princeton przez Donalda Woodsa i Jamesa Lyona. Język zaprojektowany 26 maja 1972 roku na uniwersytecie w Princeton przez Donalda Woodsa i Jamesa Lyona. Pierwszy kompilator napisany 18 lat później przez Erica Raymonda (C-INTERCAL) Pierwszy kompilator napisany 18 lat później przez Erica Raymonda (C-INTERCAL)

50 Główne zalożenie Głównym celem twórców języka było to, aby miał on jak najmniej wspólnego z innymi językami. Do dziś jedynymi wspólnymi elementami INTERCALa i innych języków pozostają zmienne, tablice i możliwość wykonywania operacji wejścia/wyjścia. Głównym celem twórców języka było to, aby miał on jak najmniej wspólnego z innymi językami. Do dziś jedynymi wspólnymi elementami INTERCALa i innych języków pozostają zmienne, tablice i możliwość wykonywania operacji wejścia/wyjścia.

51 Typy danych, operatory Typy danych: Typy danych: -.n – 16 bitowa liczba całkowita. - :n – 32 bitowa liczba całkowita. -,n – tablica z 16 bitowymi elementami. - ;n - tablica z 32 bitowymi elementami Operatory: Operatory: ~ (interleave), $ (select), & (AND), V (OR), ?(XOR) ~ (interleave), $ (select), & (AND), V (OR), ?(XOR)

52 Przykład programu DO COME FROM (1) DO COME FROM (1) DO.2<-#255 DO WRITE IN.1 PLEASE DO.1 <-'.2~.1 (1) DO READ OUT.1 PLEASE DO GIVE UP

53 Befunge Funge to rodzina języków, w których Program Counter (PC) nie porusza sie liniowo ale w wielu kierunkach i wymiarach. Do rodziny tej należą miedzy innymi Befunge i Trifunge. Funge to rodzina języków, w których Program Counter (PC) nie porusza sie liniowo ale w wielu kierunkach i wymiarach. Do rodziny tej należą miedzy innymi Befunge i Trifunge. W Befungeu program traktowany jest jako walec o rozmiarach 80x25. Wszystkie instrukcje są pojedyńczymi znakami ASCII. W Befungeu program traktowany jest jako walec o rozmiarach 80x25. Wszystkie instrukcje są pojedyńczymi znakami ASCII.

54 Program Counter Program Couter może poruszać się w czterech kierunkach. Do zmiany kierunku służa operatory ^,v,>,,<,?. Dodatkowo dwie instrukcje warunkowe | i _ zmieniają kierunek poruszania się PC w zależnosci od ostatniej wartości na stosie. Dodatkowo dwie instrukcje warunkowe | i _ zmieniają kierunek poruszania się PC w zależnosci od ostatniej wartości na stosie.

55 Stos W Befungeu nie wystepują zmienne. Wszystkie dane przetrzymywane sa na stosie. W Befungeu nie wystepują zmienne. Wszystkie dane przetrzymywane sa na stosie. Do umieszczania danych na stosie służą komenndy 0-9 lub równania zapisane w notacji odwrotnej polskiej. Do umieszczania danych na stosie służą komenndy 0-9 lub równania zapisane w notacji odwrotnej polskiej. Inne instrukcje operujące na stosie: Inne instrukcje operujące na stosie: : - kopiuj ostatnią wartość na stosie \ - zamień miejscami dwie ostatnie wartości &,,,. – wypisz ostatnią wartość ze stosu

56 Przykład programu v\+1\+_v#`\9:-*68< > <

57 BrainF*** Intrukcje: Intrukcje: + - zwiększ wartość komórki o jeden - - zmniejsz wartość komórki o jeden > - przejdź do następnej komórki < - przejdź do poprzedniej komórki, - wczytaj wartość z klawiatury do komórki. – wypisz wartość komórki na ekran [...] – pętla (konczy się gdy wartość komórki != 0)

58 Przykładowy program >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [<<<<<<<<<<<<<<<<<<<<<<<<<< [< [< >-]>[>+<]>]<< >>>[>>>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<-]>>>>>>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<<<<<<<<<++++<[<] << [> <-]<+>>[>[[<<+>>-]<[>+<-]>->----] <]> < [< >-]<[<[[>>+<<-]>[<+>-]<-<-] >]< >> [> <-]> <<<+>>>[>[[<<+>>-]<[>+<-]>->-] <]> <<<->>>< [< >-]>+<<[<[[>>+<<-]>[<+>-]<-<-] >]< >>>>-<<<> [> <-]<+>>[>[[<<+>>-]<[>+<-]>->-] <]> <<<->> [< >-]>+<<[<[[>>+<<-]>[<+>-]<-<-] >]< >>>>-.<<< [> <-]<+>>[>[[<<+>>-]<[>+<-]>->-] <]> <<<->><<[<.]

59 Bibliografia Język ANSI C - Brian W. Kernighan, Dennis M. Ritchie. WNT. Warszawa Język ANSI C - Brian W. Kernighan, Dennis M. Ritchie. WNT. Warszawa Język C++ – Bjarne Stroustrup. WNT. Warszawa Język C++ – Bjarne Stroustrup. WNT. Warszawa Lisp – Jacek Martinek. WNT. Warszawa Lisp – Jacek Martinek. WNT. Warszawa Elekroniczna technika obliczeniowa – R. Tadeusiewicz, W. Wajs, J. Jaworowski. Skrypty uczelniane AGH. Kraków Elekroniczna technika obliczeniowa – R. Tadeusiewicz, W. Wajs, J. Jaworowski. Skrypty uczelniane AGH. Kraków Podstawy programowania w Atari Basic – Wojciech Zientara. SOETO. Warszawa. Podstawy programowania w Atari Basic – Wojciech Zientara. SOETO. Warszawa Prolog, sophisticated applications in artificial intelligence - Ramachandran Bharath Prolog, sophisticated applications in artificial intelligence - Ramachandran Bharath