210 likes | 416 Views
Oberon. Rauno Ots Tartu 2005. Mis on?. Uraani kuu Operatsioonisüsteem Eraldi Teise süsteemi peal Programmeerimiskeel. Programmeerimiskeel Oberon. 1986 Wirth ja J. Gutknecht Institute for Computer Systems, ETH Zürich Haridusotstarbeline
E N D
Oberon Rauno Ots Tartu 2005
Mis on? • Uraani kuu • Operatsioonisüsteem • Eraldi • Teise süsteemi peal • Programmeerimiskeel
Programmeerimiskeel Oberon • 1986 Wirth ja J. Gutknecht • Institute for Computer Systems, ETH Zürich • Haridusotstarbeline • Võimalikult ohutu – programmeerijad ei saa valesti kasutada omadusi mida ei ole • Väike – minimaalne suurus 200KB
Lühiülevaade • Üks autoritest on Niklaus Wirth (tegi või aitas ka Algoli, Pascali, Modula ja Delphi valmimisel) • Pascali sarnane süntaks • Tugev tüübikontroll • Moodulid • Tüübist sõltuvad protseduurid Oberon-2’s • Struktuuride pärimine, aluseks OOP-le • Käimisaegne tüübikontroll • Automaatsed tüübiteisendused arvutüüpide vahel • Operatsioonid sõnedega • Madala taseme programmeerimine • Kiire kompilaator
Näide MODULE Hello; IMPORT Oberon, Texts; VAR W: Texts.Writer; PROCEDURE World*; BEGIN Texts.WriteString(W, "Hello World!"); Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf); END World; BEGIN Texts.OpenWriter(W); END Hello.
Andmetüübid • Lihttüübid • Massiivid • Struktuurid • Viidad • Protseduurid
Andmed – Lihttüübid • BOOLEAN väärtustega TRUE ja FALSE • CHAR extended ASCII (0X ... 0FFX) • SHORTINT 1B (täisarvudvahemikus -128..127) • INTEGER 2B (täisarvud-32768..32767) • LONGINT 4B • REAL • LONGREAL • SET täisarvude komplektid
Andmed – Arvutüübid • täisarvud vaikimisi kümnendsüsteemis, aga võib kasutada kuueitestkümnendsüsteemi • 986, 741, 0 • 632H, ABCH • reaalarv sisaldab alati punkti • 12.3 49. 4.567E8 0.52 • 0.57712566D-6 • Arvude hierarhia • LONGREAL > REAL > LONGINT > INTEGER > SHORTINT
Andmed - Massiivid • Indeksid 0..pikkus-1 • Pikkus on konstant • Näited • ARRAY N OF INTEGER • ARRAY 10, 20 OF REALon sama, mis • ARRAY 10 OFARRAY 20 OF REAL
Andmed - Struktuurid • Võivad laiendada olemasolevaid • Näited • RECORD day, month, year: INTEGEREND • RECORDname, firstname: ARRAY 32 OF CHAR;age: INTEGER;salary: REALEND
Operaatorid • Loogilised • OR • & • ~ eitus • Aritmeetilised • + summa • - vahe ja vastandarv • * korrutis • / jagatis • DIV jagatise täisosa (täisarv) • MOD jääk (täisarv)
Operaatorid – Näited • 1987 (INTEGER) • i DIV 3 (INTEGER) • ~p OR q (BOOLEAN) • (i+j) * (i-j) (INTEGER) • s - {8, 9, 13} (SET) • i + x (REAL) • a[i+j] * a[i-j] (REAL) • (0<=i) & (i<100) (BOOLEAN) • t.key = 0 (BOOLEAN) • k IN {i .. j-1} (BOOLEAN) • t IS CenterNode (BOOLEAN)
Operaatorid(2) • Komplektid • + ühend • - vahe või täiend • * ühisosa • / sümmeetriline vahe • Võrdlemine • = võrdne • # mitte võrdne • < • <= • > • >= • IN kas kuulub komplekti • IS tüübi kontroll
Operaatorid – Juurdepääs ja omistamine • Muutuja tüüp peab sisaldama avaldise oma • Näited • p := i = j • x := i + 1 • k := log2(i+j) • F := log2 • s := {2, 3, 5, 7, 11, 13} • a[i] := (x+y) * (x-y) • t.key := i
Tegevuste järjekord • Sama prioriteediga operaatoreid täidetakse vasakult paremale • IF laused • IF (ch >= "A") & (ch <= "Z") THEN ReadIdentifier ELSIF (ch >= "0") & (ch <= "9") THEN ReadNumber ELSIF ch = 22X THEN ReadString ELSE SpecialCharacter END • CASE • CASE ch OF "A" .. "Z": ReadIdentifier | "0" .. "9": ReadNumber | 22X : ReadString ELSE SpecialCharacter END
Tegevuste järjekord – tsüklid • WHILE … END • WHILE j > 0 DO j := j DIV 2; i := i+1 END • REPEAT … UNTIL • LOOP … END • Väljumine EXIT käsuga • Ei ole GOTO’d
Andmete juhtimine • Iga identifikaator peab olema eespool kirjeldatud. • Viit kehtib defineerimisest kuni selle ploki lõpuni (protseduur või moodul) kuhu ta kuulub ja on seega lokaalne. • Võib eksportida
Alamprogrammid • Võivad sisaldada formaalseid parameetreid • Võivad omakorda sisaldada alamprogramme • Kas funktsioonid või protseduurid
Mälukasutus • Prügi eest hoolitsetakse automaatselt • Dünaamiliselt võib mälu juurde võtta
Süntaks ja transleerimine • Kirjeldatakse BNF abil • reservsõnad kirjutatakse 'märkide_vahele' või SUURTE TÄHTEDEGA • Kommentaarid või kirjutada suvaliste sõnade vahele (* algus ja lõpp *) • Programmid kirjutatakse moodulitena
Kasutatud allikad • Oberon Language Reporthttp://www.oberon.ethz.ch/oreport.html • Oberon Programming Languagehttp://www.absoluteastronomy.com/encyclopedia/O/Ob/Oberon_programming_language.htm