Systemdokumentation Version 1.2
|
|
- Mats Karlsson
- för 8 år sedan
- Visningar:
Transkript
1 Systemdokumentation Version 1.2
2 Innehåll Introduktion... 2 Överblick... 2 Vad är Xtat?... 2 Bakgrund... 2 Lexikalisk analys (scanning)... 3 Tokenkontroll och semantisk analys... 3 Använda tekniker och referenser... 6 Källor... 7 Bilagor... 8 Teknisk specifikation... 8 Grammatik (BNF)
3 Introduktion Överblick Denna rapport är ett resultat från ett projekt på programmet Innovativ programmering (IP) vid institutionen för datavetenskap (IDA) Linköpings tekniska högskola (LiTH). Projektet har utförts under andra terminen inom kursen TDP019 Projekt: Datorspråk. Detta dokument innehåller information om språket Xtat och dess uppbyggnad. Den är till för dig som är intresserad av att lära dig mer om hur saker och ting fungerar under skalet. Vad är Xtat? Xtat som språket heter kommer ursprungligen från att vi ville göra ett språk som enkelt kan hantera Xml-filer. Xml är ett format av datafiler som kan innehålla stora mängder av data på ett strukturerat sätt. Utifrån data kan man med Xtat skapa statistik med diagram och tabeller. Språket körs på en webbserver för att pressentera resultatet i en webbläsare. I namnet så står X för Xml och tat, som ger stat i uttal, vilket är en förkortning av statistik. Målet var även att hitta tecken och kombinationer som gör att man får ett flyt vid programmeringen och där av har vi använt oss av:, eftersom den är lätt att nå och skriva. Bakgrund Xtat började växa fram som ett skolprojekt våren 2010 med Mikael Andersson och Benjamin Wallin som utvecklare. Målet var att skapa ett språk som förenklar arbetet för personer som arbetar med statistik och Xml. Då både Mikael och Benjamin är intresserad av webbutveckling så gjordes Xtat för att köras på en webbserver som användarna sedan kan anropa via webbläsaren och där få upp resultatet, likt språken Php, Python med flera. Då kursen byggde på att man skulle skapa programmeringsspråket i Ruby så konstruerade vi Xtat med hjälp av Ruby-kod i grunden. 2
4 Lexikalisk analys (scanning) Figur 1: Xtat som helhet fungerar enligt illustration ovan. När ett Xtat-dokument - vilket är ett dokument som består av Xtat-kod som avgränsas med <?xt-taggar i ett Html-dokument - öppnas med Apache genom en webbläsare börjar vår modifierade Apache-modul (mod_ruby) med att leta upp och skicka vidare Xtat-kod till vår parser (xtat.rb). Parser-funktionen hittar sedan rätt kombinationer av våra nyskapade tokens och matchar dem med givna regler som finns i parsern. När en funktionalitet i Xtatkoden matchas på korrekt sätt skickas uppgifterna från matchningsfunktionen vidare till mellankodsgenereringen där all kod förbereds och lagras tills parsern har gått igenom hela filen. När hela filen är parsad och genererad körs vår nygenererade Ruby-kod som vanligt med Ruby och presenteras sedan tillsammans med den Html som fanns i filen från början i webbläsaren. Tokenkontroll och semantisk analys Kontroll av kod som läses in bygger helt på en Rdparser med match-funktioner. Tokenizer Vår tokenizer samt syntatiska analys är skapad på ett sätt där hela processen samarbetar på samma gång. 3
5 När filen läses in körs en tokenisering av all data som är uppdelat i ett antal punkter vi anser vara en relevant uppdelning. Tokenizern jobbar med följande tecken: Logiska operatorer Jämförelseoperatorer Tilldelningsoperator Kommentartaggar Alfanumeriska tecken inkl. svenska tecken Siffror Sträng Ny rad Mellanslag Det finns även undantag av där tecken kontrolleras även i semantik-delen. Exempel på token-funktioner taget från xtat.rb: token(/\/\*/) { m m } token(/\*\//) { m m } Semantisk analys Vår syntaktiska/semantiska analys i Xtat skiljer sig inte mycket ifrån hur parsern skannar av tokens i avsnittet ovan. Skillnaden är att den sätter samman de olika tokens som tonenizern har genererat samt testar sammansättningen i olika kombinationer för att hitta och tolka rätt funktionalitet. Exempel på matchnings-funktioner taget från xtat.rb: match(:identifier, :digit) { identifier,digit [identifier,digit] } match(:digit) { digit digit } Mellankodsgenerering Efter att parsen har gått igenom och kontrollerat så att programmeraren har skrivit korrekt Xtatkod skapas sedan speciella klasser i xtatinterpreter.rb som omvandlar Xtatkoden till körbar rubykod. 4
6 Evaluering Då mellankodsgeneratorn har körts och all kod är omvandlad till validerad rubykod så körs ueringen av rubykoden direkt på en server för att sedan visa resultatet i t.ex. en webbläsare. 5
7 Använda tekniker och referenser När vi har utvecklat språket har vi använt oss av utvecklingsmiljön Emacs under Linux (Gentoo och Ubuntu), vi har sedan testkört koden via Ruby IRB. Vi har även testat vår kod på en special konfigurerad Apache-server. För att lösa versionshantering och filhantering så laddas alla filer upp på en server via svn. Språket är byggt med hjälp av rdparse som är ett färdigbyggt verktyg för att kunna matcha olika regler. 6
8 Källor Diverse källor Documenting the Ruby Language [www]. James Britt, Tillgängligt på < Hämtat 9 maj Webbplats med dokumentationen till Ruby. Formella språk, grammatik, parsing - IDA [www]. Anders Haraldsson, Tillgängligt på < Hämtat 9 maj Föreläsnings-/kursmaterial om formella datorspråk, grammatik och parsing. mod_ruby [www]. Shugo Maeda, Tillgängligt på < Hämtat 9 maj Apache-modul för Ruby. Dave, Thomas with Chad Fowler and Andy Hunt (2009). Programming Ruby 1.9. The Pragmatic programmers guide. Pragmatic Bookshelf. Inlärnings- och referensmaterial för Ruby 1.9. Lästips Python v2.5.2 documentation [www]. Python Software Foundation, Tillgängligt på < Hämtat 9 maj
9 Bilagor Teknisk specifikation Klasser och dess relationer Program initialize(stmt_list) Tar emot en stmt_list-klass. Evaluerar all genererad programkod. Evaluerar hela programmet. Tar emot stmt_list som är all kod som skapats i korrekt ordning. Array_class initialize(var, args= ) Tar en array som inparameter där var är namnet och args är dess värden i form av array. - Var_class initialize(var, value) Tar ett namn och ett värde som inparametrar och skapar av dessa en variabel. När variabeln har skapats läggs även dessa in i en global array så andra klasser kan använda denna nyskapade klass. Print_class initialize(string) Tar en sträng som inparameter. Returnerar en utskrivbar sträng med rubys puts-funktion. Klassen skapas med hjälp av en textsträng som skall skrivas ut, när klassen ueras returneras följande: puts detta kommer att skrivas ut 8
10 StmtList_class initialize(stmtlist) Tar kör-uppgifter som inparameter. Returnerar ett objekt av matchade stmt-regler. StmtList_class returnerar ett givet antal rader (t.ex. en funktion eller ett en iffunktion) i programmet som körbar Ruby-kod. Denna klass kan ses som en sammanställning av hela programmet om man lägger ihop alla StmtList_classobjekt. Stat_circle initialize(args) Skapar ett cirkeldiagram utifrån den data som kommer där args är av speciella typen Stat_args. Skapar ett cirkeldiagram med hjälp av google charts API. Stat_bar initialize(args) Skapar ett stapeldiagram utifrån den data som kommer där args är av speciella typen Stat_args. Skapar ett stapeldiagram med hjälp av google charts API. Stat_args - initialize(var,names=nil, type="%", size=digit.new(200)) Får in argumenten för de olika diagrammen och ger diverse standardvärden om invärde saknas. var Returnerar variabeln som innehåller siffror. names Returnerar variabeln som innehåller namnen. type Returnerar vilken typ diagrammet ska visa, % eller antal. size Returnerar storlek på diagrammet Returnerar inget. 9
11 Func_class initialize(name,args, stmt_list='',ret_stat='') Skapar en funktion av inparametrarna. name är namnet på funktionen, args är inparametrarna på funktionen, stmt_list är innehållet och ret_stat är returvärdet. Skapar en funktion enligt Xtat-syntax och konverterar till valid Ruby-kod. FuncCall_class initialize(func_name, args,var= ) Kallar på en befintlig funktion där var är namnet på variabeln som tilldelas funktionens värde, func_name är den befintliga funktionens namn och args dess inparametrar. Kallar på en tidigare skapad funktion. For_class initialize(var,expression, count,stmt_list) Skapar en for-loop där var är räkne-variabelns ingångsvärde, expression är villkoret, count är det som sker med räkne-variabeln under varje upprepning och stmt_list for-loopens innehåll. Count-värdet i inparametern körs med fördel som ett Increment_class-objekt. 10
12 While_class initialize(expression, stmt_list) Uttrycket är expression samt innehållet i while-loopen är stmt_list. - Increment_class initialize(var_name, type) var_name är variabeln som kommer att öka eller minska med ett och type bestämmer om det är av decrement-typ eller increment-typ. - If_class initialize(expression, stmt_list,else_stmt_list='', else_if_stmt_list='') Skapar en if-funktion där huvuduttrycket är expression, stmt_list är dess innehåll, else_stmt_list är else-uttrycket samt else_is_stmt_list är en array av alla else-ifuttryck. Denna klass kan skapa både enkla if-, else-if- och if med else-funktioner. else_if_stmt_list kommer som en array där varje post består av [expression, stmt_list] (uttryck och värde). 11
13 Expression_class initialize(expr,operator=, expr2=false) Tar ett villkorsuttryck i inparametrarna. Expression_class returnerar ett Expression_class-objekt om den endast får en inparameter som värde (exempelvis det boleanska uttrycket true, eller talet 11). Är alla inparametrarna använda returnerar klassen en array bestående av tre objekt som är av typerna som angavs i inparametrarna i initialize-funktionen. Math_class initialize(expr,operator, expr2) Tar ett enkelt matematiskt uttryck som invärde (t.ex eller 3 * 4). Klarar av de fyra räknesätten (+, -, / och *) samt exponenter (**). Args_class initialize(args) Tar ett argument (eller flera som en array) som invärde. Tar flertalet olika typer som invärde (se BNF-grammatik för mer information). 12
14 StringStmt_class initialize(string) Tar ett sträng-värde som inparameter. Ett strängvärde omfamnat av -tecken returneras. Comments_class initialize(string) Tar ett strängvärde radvis som är omfanmat av kommentarstecken - /*Sträng-värde */ - som inparameter. Kommentarer returneras radvis som Rubykommentarer (# En kommentar). Ex: Blir: /* Rad ett Rad två */ # Rad ett # Rad två Upper_letter initialize(letter) Tar ett invärde bestående av versaler. Tar versaler som inparameter och skapar ett objekt av en textsträng. Lower_letter initialize(letter) Tar ett invärde bestående av gemener. Returnerar ett objekt som består av gemener. 13
15 Operator initialize(operator) Tar ett operatorvärde som inparameter (Math, Comp eller Log). - Digit initialize(value) Tar ett invärde och skapar ett tal-objekt. - Boolean initialize(bool) Skapar ett objekt av ett booleanskt uttryck som invärde. Skapar ett objekt av ett booleanskt uttryck som den tar som invärde i inparametern. Value_class initialize(bool) Skapar ett objekt av ett värde/sträng. Returnerar en sträng Används i t.ex. klassen funccall_class för att ha ett objekt som lagras i varabellistan. 14
16 Grammatik (BNF) Grammatiska delen <program> ::= <?xt <stmt_list> xt?> <stmt_list> ::= (<stmt_list>)* (<stat_circle> <stat_bar> <function> <function_call> <list_iter> <if_stmt> <comment> <print_stmt> <assignment> <var_list>)+ <stat_circle> ::= circle( <stat_args> ) <stat_bar> ::= bar( <stat_args> ) <stat_args> ::= (<var>){1,2} ( st % ){0,1} <function> ::= func <func_name> ( (<args>)* ) (<stmt_list>)* (<return_stmt>){1} end <return_stmt> ::= return <args> <function_call>::= <var> <assignment_operator> <func_name> ( (<args>)* ) <list_iter> ::= <it_for> <it_while> <it_for> ::= for ( <var_list>, <expression>, <stmt_list> ) <stmt_list> end <it_while> ::= while ( <expression> ) <stmt_list> end <func_name> ::= <identifier> <comment> ::= /* <comment_lines> /* <comment_lines>::= (<identifier> (<comment_lines> <identifier>))* <print_stmt> ::= print (<var_list> <string_stmt>){1} <assignment> ::= (<increment>) (( <var> <const_var>) <assignment_operator> (<bool> <math> <string_stmt> <array>)) <increment> ::= <var> ( ) <var_list> ::= <const_var> <var> <array> ::= array( (<args>)* ) <var> ::= (<var_sign> <lowercase_var>){1} <const_var> ::= (<var_sign> <uppercase_var>){1} <if_stmt> ::= if ( (<if_expression>)+ ) <stmt_list> ( end <else_stmt> <else_if_stmt> <else_stmt>) <else_if_stmt> ::= (<else_if_stmtm>)* elseif ( <if_expression> ) <stmt_list> <else_stmt> ::= else <stmt_list> end <oneliner_if_stmt>::= ( <expression> )? <stmt_list> : <stmt_list> 15
17 <if_expression>::= <expression> ( <if_expression> ) <if_expression> <log>_operator> ( <expression> ) <expression> ::= (<var_list> <bool>) (<operator> (<var_list> <bool>))* <math> ::= (<math> <math_operator> <math> <math_prio>) <math_prio> ::= (<math_prio> <math_prio_op> <math> <prio_math>) <math_pare_prio>::= ( ( <math> ) <digit>) <args> ::= ((<var_list> <identifier> <string_stmt>){1}, )* (<var_list> (<digit>)* <bool> <string_stmt>)+ <string_stmt> ::= <identifier> <identifier> ::= (<identifier>)* (<letter> <digit>)+ <letter> ::= <lowercase> <uppercase> _ <var_sign> ::= <operator> ::= <log_operator> <comp_operator> <math_operator> <assignment_operator> 16
18 Lexikaliska delen <lowercase> ::= "a"..."ö" <uppercase> ::= "A"..."Ö" <lowercase_var> ::= a z 0 9 _ <uppercase_var> ::= A Z 0 9 _ <digit> ::= "0"..."9" <bool> ::= 1 0 true false TRUE FALSE <log_operator> ::= & <comp_operator> ::= ==!= <= >= < > <math_operator> ::= + - <math_prio_op> ::= * / ** <assignment_operator> ::= = 17
Användarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Användar- och systemdokumentation
Användar- och systemdokumentation Linköpings universitet Examinator:, IDA marme647@student.liu.se Utskriftsdatum: Innehållsförteckning Inledning... 3 Användarhandledning... 4 Systemkrav och installation...4
Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet
Žƒ ƒ Ž Ž ˆ ƒ ƒ ƒ Žƒ ƒ Ž ˆ Œ ŽŽ ƒ Backcode Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Innehållsförteckning 12-05-29 Inledning... 3 Användarhandledningen... 4 Klasser... 4 Metoder...
Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Parsning. TDP007 Konstruktion av datorspråk Föreläsning 6. Peter Dalenius Institutionen för datavetenskap
Parsning TDP007 Konstruktion av datorspråk Föreläsning 6 Peter Dalenius Institutionen för datavetenskap 2017-02-14 2 Analys av källkod Lexikalisk analys Bildar tokensutifrån källkodens text. Syntaktisk
Implementationshandledning Version 1.2
Implementationshandledning Version 1.2 Innehåll Inledning... 2 Installation av mod_ruby med Xtat-stöd i Apache... 3 Krav... 3 Lägg till följande i httpd.conf (mod_ruby-stöd)... 3 Förslag på vhost-site...
Linköpings universitet Innovativ Programmering TDP019 Projekt: Datorspråk. flip/flop. ett helt flippat språk
Linköpings universitet Innovativ Programmering TDP019 Projekt: Datorspråk flip/flop ett helt flippat språk TDP019 - Projekt: Datorspråk Vårterminen 2012 Johan Wänglöf Henrik Forsberg johwa457@student.liu.se
PROMETHEUS. Ett typat, objektorienterat programmeringsspråk av Tim Andersson.
PROMETHEUS Ett typat, objektorienterat programmeringsspråk av Tim Andersson. Linköpings universitet TDP019 Projekt: Datorspråk Examinator: Anders Haraldsson, IDA Tim Andersson timan976@student.liu.se Utskriftsdatum:
Tentamen i Introduktion till programmering
Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:
Programmering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Visual Basic, en snabbgenomgång
Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning
Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (
Karlstads Universitet, Datavetenskap 1
DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 229 PHP Hypertext Preprocessor Scriptspråk på serversidan Innebär att webbservern översätter php-scripten innan sidan skickas till webbläsaren,
STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar
STRÄNGAR En av de mest avancerade av de normala datatyperna är. Här skall vi grundläggande gå igenom hur den datatypen fungerar och vidare flertalet funktioner som hör till datatypen. Låt oss kasta oss
729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer
729G04 Programmering och diskret matematik Python 2: Villkorssatser, sanningsvärden och logiska operatorer Föreläsningsöversikt Vad händer när vi kör vår pythonkod? Programmerare Villkorssatser Jämförelser
Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php
Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är
Föreläsning 2 Programmeringsteknik och C DD1316
Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer
Planering Programmering grundkurs HI1024 HT TIDAA
Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Namnet är omvänt men inte koden
Linköpings universitet Innovativ Programmering TDP019 Datorspråk VT 2012 Namnet är omvänt men inte koden Albin Ekberg albek446@student.liu.se Innehållsförteckning 1 Inledning 3 1.1 Bakgrund 3 1.2 Syfte
Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat
Cheat sheets Nedan finns referensblad för fyra olika programmeringsspråk, som kan bli aktuella att använda i matematikundervisning. MATLAB är en välkänd programvara för att göra matematiska beräkningar,
Deklarativ programmering
Kursens mål Deklarativ programmering Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap Linköpings universitet 2008-02-26 redogöra för och använda reguljära uttryck använda XML för att definera
Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap
Uppmärkningsspråk TDP007 Konstruktion av datorspråk Föreläsning 4 Peter Dalenius Institutionen för datavetenskap 2015-02-03 Från förra gången XML-dokument specificeras med t.ex. en DTD Två olika sätt att
Uppgifter teknik HT17 (uppdaterad v. 40)
Uppgifter teknik HT17 (uppdaterad v. 40) Uppgifterna bedöms inte, de är bara till för att öva. Samarbeta gärna med andra! Du behöver inte skriva ner svaren, men se till att du förstår lösningarna! 1. Det
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
TDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 3 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Operatorer Java Standard Library Inmatning Operatorer operatorer En operator är en
729G04 Programmering och diskret matematik. Föreläsning 7
729G04 Programmering och diskret matematik Föreläsning 7 Föreläsningsöversikt Information Interaktion via text Läsa från fil Skriva till fil Spara och läsa abstrakta datatyper från fil Information Felaktigt
Planering Programmering grundkurs HI1024 HT 2015 - data
Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Språket Python - Del 2 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt
plätt Linköpings universitet
plätt Linköpings universitet Innovativ programmering TDP019 Projekt: Datorspråk Sebastian Törngren sebto088@student.liu.se Examinator: Anders Haraldsson, IDA Utskriftsdatum: 28 maj 2012 Innehåll Inledning...
Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for
Inför provet Provet skrivs för hand och är uppdelad i två delar. Den första delen är på E-nivå och den andra delen är på C- och A-nivå. För att det ska bli enklare för er att träna inför provet så har
Datalogi för E Övning 3
Datalogi för E Övning 3 Mikael Huss hussm@nada.kth.se AlbaNova, Roslagstullsbacken 35 08-790 62 26 Kurshemsida: http://www.csc.kth.se/utbildning/kth/kurser/2d1343/datae06 Dagens program Att skapa egna
Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer
Läsöversikt LP Part I Part IV, kap 18 PL: kap 1, 2 (Sem 1), 3 (Sem 3), 5.1-5.3, 5.8 intro, 6.1-6.3, 7.1-7.3, 8.1-8.3, 9.1-9.2 Wikipedia kan användas som stöd för PL-avsnitten. Föreläsningar 2-6 Genomförande
DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.
JavaScript del1 Syftet med detta häfte är att sammanfatta det viktigaste i JavaScript så kort och koncist som möjligt men ändå tillräckligt omfattande för att ge god kännedom om en av de vanligaste teknikerna
Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09
Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Tentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Programmering I Tobias Wrigstad fredag, 2009 augusti 28
Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,
Introduktion till PHP
PHP - Grund Copyright 2016 Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Introduktion till PHP PHP = PHP: Hypertext Preprocessor PHP är ett programmeringsspråk. PHP är ett skriptspråk som körs
Innehåll. PHP Grundkurs. Introduktion till PHP. Kurslitteratur. Webbserver. Lite historik. PHP Grundkurs 1
Innehåll PHP Grundkurs Copyright 2014 Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Introduktion till PHP Webbserver och XAMPP Variabler Datatyper Operatorer $_GET och $_POST Skicka variabler
Föreläsning 3: Booleans, if, switch
TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt
Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser
Introduktion till programmering Föreläsning 2: Variabler, uttryck och satser 1 1 Värden De grundläggande saker som en dator manipulerar resultaten av beräkningar kallas värden Värden vi stött på: 2 och
Laboration 6 Formulär och stränghantering övningar/uppgifter
Laboration 6 Formulär och stränghantering övningar/uppgifter 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna laboration
Domänspecifika språk. TDP007 Konstruktion av datorspråk Föreläsning 5. Peter Dalenius Institutionen för datavetenskap 2013-02-11
Domänspecifika språk TDP007 Konstruktion av datorspråk Föreläsning 5 Peter Dalenius Institutionen för datavetenskap 2013-02-11 Domänspecifika språk Ett domänspecifikt språk (eng. domain specific language,
Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 Grundläggande datavetenskap, IT1 Perspektiv på datateknik, D1 Perspektiv på datavetenskap, C1 Breddföreläsning orientering om: formella språk grammatik parsing Att läsa mer: Brookshear, Computer Science
Introduktion HTML och PHP 732G16 Databaser design och programmering
Introduktion HTML och PHP 732G16 Databaser design och programmering 08-04-22 Ingrid Alin Nilsson 1 Presentationen tar upp Lite grundläggande om HTML Grunderna i PHP Styrstrukturer Funktioner Filhantering
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering
Programmering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
Inlämningsuppgift MiniPlotter
LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap EDAA01 Programmeringsteknik fördjupningskurs Inlämningsuppgift MiniPlotter I den här uppgiften ska ett program som ritar grafer av matematiska funktioner
Föreläsning 1 & 2 INTRODUKTION
Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga
Avancerade Webbteknologier
Projektledning, Business Knowledge Användbarhet & Layout Avancerade Webbteknologier Lkti Lektion 1 Kommunikation Tobias Landén tobias.landen@chas.se Avancerade webbteknologier del 1 (4 KY poäng) Syfte
Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?
Innehåll JavaScript En introduktion till skriptspråket JavaScript och till DOM Scripting Introduktion till JavaScript och DOM JavaScript Syntax DOM och DOM Scripting Händelsehantering och CSS Historia
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Deklarativ programmering
Deklarativ programmering TDP007 Konstruktion av datorspråk Föreläsning 7 Peter Dalenius Institutionen för datavetenskap 2014-03-03 Deklarativ programmering Program skrivet i ett deklarativt språk logikspråk,
Konstruktion av datorspråk
Konstruktion av datorspråk Fö4: Domänspecifika språk och parsning Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap Linköpings universitet 2009-02-12 Domänspecifika språk Ett domänspecifikt
Ett projekt skrivet av Mathias Pettersson och Jim Torarp
Ett projekt skrivet av Mathias Pettersson och Jim Torarp Förord Vi vill tacka alla lärare som har givit oss kunskapen för att kunna genomföra detta projekt. Vi är nöjda med våran presentation i denna kurs
Tentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
Typkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Labora&on 2 Funk&oner, if och loop övningar/uppgi:er
Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
TDP002 Imperativ programmering
TDP002 Imperativ programmering Introduktion till kursen och python Eric Elfving Institutionen för datavetenskap (IDA) Översikt Programmering En introduktion Python Köra och skriva program Python grunderna
DD1314 Programmeringsteknik
Skolan för Datavetenskap och kommunikation DD1314 Programmeringsteknik Föreläsning 1 o print o variabler o reserverade ord o input o kommentarer o beräkningar o datatyper o if-satser Kursinformation Programmering:
Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.
Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär
F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander
F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean
Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
TDP002 - Imperativ programmering
TDP002 - Imperativ programmering Underprogram Pontus Haglund Institutionen för datavetenskap Anpassatt från material ursprungligen av: Eric Elfving 1 Underprogram Parametrar Returvärden Räckvidd och skuggning
729G04 Programmering och diskret matematik. Python 3: Loopar
729G04 Programmering och diskret matematik Python 3: Loopar Översikt Labbar Punktnotation och strängmetoder Loopar Labb 3 Labbar? Punktnotation Punktnotation Ni har stött på punktnotation tidigare - kapitel
Planering Programmering grundkurs HI1024 HT 2014
Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att
Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):
Översikt Motivering Syntax och semantik Imperativa språkets byggstenar och Python Datatyper Tilldelning och uttryck Kontrollstrukturer (på satsnivå) Subprogram Relaterade avsnitt: PL 3.1-3.2, 5.1-5.3,
Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion
Introduktion till programmering Föreläsning 4: Villkor och rekursion 1 1 Några inbyggda funktioner (med resultat!) Konverterar mellan de grundläggande typerna: >>> int("32") 32 >>> int(3.999) 3 >>> float(32)
TUTORIAL: KLASSER & OBJEKT
TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan
PHP. Dynamiska webbsidor
PHP Dynamiska webbsidor WEBBPROGRAMMERING PÅ SERVERSIDAN DB server web browser client client script HTTP Request (get, post) HTTP Response (HTML, CSS, JS) web server server script JS PHP file (txt, xml,
Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 3 29 sept 2014 Ett lite intelligentare program? Klassen Rectangle Rectangle height width color setheight setwidth getcolor getarea Rectangle public class Rectangle{
1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1
Skolan för Datavetenskap och kommunikation DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 1 Kursinfo Diagnostiskt prov Python-intro: print variabler reserverade ord input kommentarer beräkningar
DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1
Skolan för Datavetenskap och kommunikation DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 1 Kursinfo Python-intro: print variabler reserverade ord input kommentarer beräkningar datatyper if-satser
Att skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
PHP. TNMK30 - Elektronisk publicering
PHP TNMK30 - Elektronisk publicering HTML, index, W; W: http://www.student.itn.liu.se/~liuid### index.html 15php_test_server Dagens föreläsning Statisk webbsida -> HTML, CSS Interaktion -> JS (klientscript)
TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010
Linköpings universitet Institutionen för datavetenskap, IDA Olle Willén mars 2010 Tentamen TDDB53 TENTAMEN TDDB53 (provkod TEN2) den 7 april 2010 kl 8 12 Jour: Emil Nielsen, tel 070 499 89 88 Hjälpmedel:
TDP003 Projekt: Egna datormiljön
. TDP003 Projekt: Egna datormiljön Egen utvecklingsmiljö Kursmaterial till kursen TDP003 Höstterminen 2017 Version 2.2 2017-06-30 2017-06-30 Egen utvecklingsmiljö INNEHÅLL Innehåll 1 Revisionshistorik
JavaScript del 3 If, Operatorer och Confirm
JavaScript del 3 If, Operatorer och Confirm Under förra uppgiften så kollade vi på hur användaren kan ge oss information via promt(), vi använde den informationen både för att skriva ut den och för att
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
JAVASCRIPT. Beteende
JAVASCRIPT Beteende OVERVIEW HTML Formulär JavaScript Syntax Events DOM Validering av fomulär WEBBPROGRAMMERING PÅ KLIENTSIDAN Skriptspråk som körs på klientsidan (klientskript) Koden exekveras i webbläsaren
Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.
Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E Föreläsning 4: Villkor och rekursion Konverterar mellan de grundläggande typerna: >>> int("") >>> int(.999) >>> float().0
Beräkningsvetenskap föreläsning 2
Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa
Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?
Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?
Repetition C-programmering
Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition
Introduktion C-programmering
Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder
public boolean containskey(string key) { return search(key, head)!= null; }
Tentamen Programmeringsteknik II 2009-05-26 med lösningar Skrivtid: 0900-1200 Uppgifter 1. Programbilagan ListMap.java innehåller en klass som implementerar en avbildning mellan mängden strängar och mängden
Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk
Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017
Fly me to the moon Laboration om relationer, TDDC75 Diskreta strukturer Mikael Asplund 5 september 2017 1 Inledning Denna laboration i diskret matematik a r ta nkt att ge en inblick i hur programmering