Användar- och systemdokumentation
|
|
- Inga Lundberg
- för 9 år sedan
- Visningar:
Transkript
1 Användar- och systemdokumentation Linköpings universitet Examinator:, IDA Utskriftsdatum:
2 Innehållsförteckning Inledning... 3 Användarhandledning... 4 Systemkrav och installation...4 Språkets syntax...5 Block...5 If-satser... 6 For-loopar... 6 Datatyper...6 Logiska uttryck... 6 Aritmetiska uttryck... 6 Jämförelser...6 Tolken... 7 Systemdokumentation... 8 Lexikalisk analys...8 Parsning... 8 Evaluering...8 Omgivningshantering... 9 Nodtyper...10 PStatementList...10 PForLoop PIfStatement PBlockDefinition PBlockCall...10 PVariableAssignment...10 PVariableReference...10 PLogicalExpression PComparison...11 PMultiplication PDivision...11 PAddition PSubtraction...11 PInteger...11 PFloat PBoolean...11 Grammatik...12 Reflektioner
3 Inledning Paxl skapades våren 2011 av under projektkursen Datorspråk på IP-programmet. Grundidén bakom Paxl är att kombinera den kalkylbladsmodell som bland annat Microsoft Excel använder med ett generellt programmeringsspråk. Syftet är att underlätta programmeringen av parallella datorprogram genom att organisera programmets källkod i rader och kolumner. Jag fick idén från den bild som finns på första sidan av "Introduction to Parallel Programming and MapReduce", Google Code University. Bild 1: Uppdelning av indata i delmängder Bilden visar hur den parallella programmeringsmodellen MapReduce delar upp indata i kolumner som sedan bearbetas oberoende av varandra. Jag slogs av att bilden liknande ett kalkylblad med rader och kolumner av data. Min tanke blev då att det borde vara lätt att förklara parallell bearbetning av data genom att översätta det till ett välkänt program som Microsoft Excel. Tanken med Paxl är således att göra parallell bearbetning av data tillgänglig för användare av Microsoft Excel och andra kalkylprogram. Genom att ha explicita begränsningar av räckvidd, som förklaras närmare längre in i denna rapport, så blir parallell programmering tillgänglig även för den som inte har någon tidigare erfarenhet av teorin bakom parallellism. 3
4 Användarhandledning Det är viktigt att förstå att Paxl består av två olika delar, dels ett datorspråk, med egen syntax som förklaras här nedan, dels den tolk som står för in- och utmatning av Excelfiler och parallell exekvering av den kod som finns däri. Den här handledningen fokuserar först på språket Paxl och dess syntax, för att avslutas med en kortare demonstration av tolken Paxl. Systemkrav och installation För att kunna använda språket Paxl behöver du en fungerande Ruby-installation, version eller senare. För att kunna använda tolken Paxl behöver du kunna skapa filer av typ.xls (den klassiska Excelversionen). Utveckling har skett med OpenOffice.org men Microsoft Excel fungerar också. För att kunna använda Paxltolken behöver du installera biblioteket spreadsheet med Rubygems. Paxl har en interaktiv tolk som främst är tänkt att användas för att snabbt kunna testa språket. Starta den interaktiva tolken med: $ ruby paxl_interactive.rb Welcome to the Paxl interactive parser (type 'exit' to quit) Paxl: 1+1 => 2 Paxl: Eftersom tolken kör varje uttryck efter en radbrytning så rekommenderas semikolon som separator för flera uttryck på samma rad: Paxl: a = 1 + 1; b = 3; a * b => 6 För att avsluta tolken, skriv exit: Paxl: exit Goodbye! $ 4
5 Språkets syntax Paxl bryr sig inte om blanka tecken annat än tecknet för ny rad som kan användas för att avsluta ett uttryck. Man kan skriva flera uttryck på samma rad i Paxl genom att avsluta uttrycken med semikolon istället för ny rad. Språket är skiftlägeskänsligt och alla inbyggda identifierare är i gemener. Block Paxl behandlar kod som annan data. Block kan sparas i variabler och skickas som argument till andra block. När ett block definieras så sparas omgivningen, en s.k. closure. x = 5; y = 3 multiply = { a, b x * y * a * b } x = 1; multiply(10; x) Resultatet av det sista uttrycket ovan blir alltså 5 * 3 * 10 * 1 = 150. Notera att argument är uttryck och skiljs åt med semikolon på samma sätt som andra uttryck. Det finns ett reserverat nyckelord, this, som refererar till det omkringliggande blocket. Detta möjliggör rekursion på ett enkelt sätt: factorial = { x } if (x == 0) { 1 } else { x * this(x - 1) } Block får sin omgivning vid definitionstillfället och har därmed inte sitt eget namn tillgängligt, därför måste man anropa this istället för factorial i koden ovan. Detta är en följd av att Paxl tillåter anonyma block, alltså block som inte har något namn tilldelat. Eftersom man i det fallet ändå behöver nyckelordet this för att kunna göra rekursiva anrop så blir det en mer generell lösning att använda this för alla block. x = 5 f = { a a + x } g = { x f(x) } n = g(10) Detta exempel illustrerar Paxls statiska bindning. Här får alltså variabeln n värdet 15 och inte 20 som resultatet hade blivit med dynamisk bindning. 5
6 If-satser If- och if/else-satser har ett föga förvånande utseende i Paxl. For-loopar if ( x < 10 ) { x = 10 } else { x = 20 } Inte heller for-loopar har en syntax som bjuder på några större överraskningar. for ( x = 1; x < 10; x = x + 1) { } Datatyper do_something_interesting(x) Paxl har endast tre inbyggda datatyper: sanningsvärden, heltal och flyttal. x = true; y = 10; z = 3.14 Logiska uttryck Paxl har de logiska operatorerna and, or och not. Andra uttryck kan användas i ett logiskt uttryck, där värdet på uttrycket tolkas som ett sanningsvärde. x = (true and false) or true y = 10 z = (y < 10) or something_else(x) or true Aritmetiska uttryck De fyra räknesätten finns representerade i Paxl och fungerar som vanligt. x = y = 10 * 5 / 8 z = * 8 Jämförelser Jämförelseoperatorer kan användas i alla uttryck och returnerar sanningsvärden. x = 10 <= 5 y = 5 == 5 z = x!= y 6
7 Tolken Paxl-tolken fungerar genom att läsa.xls-filer och tolka varje cells innehåll som ett kodblock. Varje cells räckvidd är begränsad till returvärden för alla celler som ligger till vänster om den nuvarande på samma rad. Ett exempel gör detta tydligare. De översta raderna tillhör inte filen utan visar kolumnernas etiketter. A B C D if (A >= 10) { 10 } C * D 5 6 else { A } 3 2 När tolken körs med en.xls-fil med ovanstående innehåll så skapar den en ny fil med lika många rader och kolumner, där varje cell har bytts ut till returvärdet från koden som körts. A B C D Grundkonfigurationen av tolken startar fyra trådar och kör alla rader i dokumentet jämnt fördelat över dem. Kör tolken genom att anropa den med input-filens filnamn: $ ruby paxl_xls.rb test.xls 7
8 Systemdokumentation Paxl är byggt i programspråket Ruby med hjälp av rdparse som också använts i kursen TDP007 Datorspråk. Dessutom används biblioteket spreadsheet för läsning och skrivning av.xls-filer, samt Test::Unit för enhetstestning. Lexikalisk analys Tack vare användningen av rdparse så består den lexikaliska analysen i Paxl endast av ett par reguljära uttryck som konfigurerar rdparserns tokenisering: token(/\s+/) token(/and or ==!= <= >= \w+./) { m m } Ovanstående rader gör så att alla blanka tecken kastas bort, därefter tolkas alla sammanhängande ord som en egen token, och ett antal speciella operatorer. På detta sätt hålls den lexikaliska analysdelen till ett minimum. Parsning Parsningsreglerna matchar olika tokens och skapar objekt av olika klasser, s.k. noder, i en trädstruktur som representerar parserns tolkning av programmet ifråga. Det färdiga trädet returneras sedan, där toppnoden alltid är av typen PStatementList. Paxl gör med andra ord ingen åtskillnad på början/slut av program och andra listor av uttryck. Detta generella tillvägagångssätt har underlättat vid utvecklingsarbetet. Evaluering Varje klass av nod har en egendefinierad eval-funktion som bestämmer vad som ska göras för att returnera ett värde. Alla noder i Paxl returnerar ett värde, förutom PBlockDefinition som klonar den omkringliggande omgivningen och därefter returnerar sig själv. Det möjliggör hantering av kod som data, där man kan sätta en variabel till ett block för att senare evaluera blocket. 8
9 Omgivningshantering Paxl hanterar omgivningar med objekt av klassen Scope, som ärver från den inbyggda Ruby-klassen Hash. Det innebär att man kan använda Scope-objekt väldigt enkelt, t.ex. så här: my_scope["a"] = 5 Vilket sätter variabeln med namn a till värdet 5. Det intressanta med Scope är att den stödjer hierarkiskt ordnade omgivningar, med tydlig logik för räckvidd. Koden som implementerar detta i Ruby ser ut som följer: def [](key) end if self.has_key? key return super(key) else end return nil else end def []=(key, value) end current_value = self[key] if self.has_key? key or current_value.nil? super(key, value) else = value Detta innebär i klartext att underliggande Scope-objekt har tillgång till alla värden från ovanliggande Scope, och vid konflikter är det alltid den variabel som är definierad närmast nuvarande Scope som vinner. På samma sätt kan kod ändra i variabler från omkringliggande Scope, men inte sätta nya variabler i Scope ovanför sitt eget. Nya Scope-objekt skapas t.ex. vid blockdefinitioner vilket är det som möjliggör statisk bindning. 9
10 Nodtyper Paxl har 16 olika klasser av noder. PStatementList Innehåller en array med en eller flera andra noder. Evaluering sker genom att anropa eval för varje element i arrayen i ordning och därefter returnera det senaste. PForLoop Fungerar som en traditionell for-loop i t.ex. C. Antar att det finns tre uttryck i huvudet och evaluerar blocket i kroppen tills det mittersta uttrycket ger ett falskt returvärde. PIfStatement Accepterar vilket uttryck som helst i huvudet, tolkar returvärdet som ett sanningsvärde och kör därefter motsvarande block. PBlockDefinition Den enda nod som istället för ett vanligt värde returnerar sig själv vid evaluering. Klonar den omgivning som finns vid evaluering och sparar denna i sig själv, en s.k. closure. PBlockCall Anrop av block. Först vid evaluering kontrolleras att det värde som finns i variabeln som anropas faktiskt är ett objekt av klassen PBlockDefinition. Argument kan vara vilka uttryck som helst. PVariableAssignment Tilldelning av värde till en variabel i nuvarande omgivning. PVariableReference Hämtning av variabels värde från nuvarande omgivning. 10
11 PLogicalExpression Ett logiskt uttryck med operatorerna AND, OR samt NOT. Tolkar sina argument som sanningsvärden. PComparison Jämför två uttrycks returvärden enligt de vanliga jämförelseoperatorerna och enligt Rubys logik för jämförelse. Medger t.ex. att 'A' <= 'Z'. PMultiplication Vanlig multiplikation av två uttrycks returvärden. PDivision Vanlig division av två uttrycks returvärden. PAddition Vanlig addition av två uttrycks returvärden. PSubtraction Vanlig subtraktion av två uttrycks returvärden. PInteger Representerar ett heltal. PFloat Representerar ett flyttal. PBoolean Representerar ett booleskt sanningsvärde. 11
12 Grammatik <stmt_list> ::= <stmt> <stmt_list> \n <stmt> <stmt_list> ; <stmt> <stmt> ::= <if_stmt> <for_loop> <expr> <expr> ::= <block_def> <block_call> <expr> + <expr> <expr> - <expr> <expr> * <expr> <expr> / <expr> <cond_stmt> <var_assign> <block_call> ::= <identifier> () <identifier> ( <stmt_list> ) <block_def> ::= { <param_list> <stmt_list> } { <stmt_list> } <if_stmt> ::= if ( <expr> ) { <stmt_list> } if ( <expr> ) { <stmt_list> } else { <stmt_list> } <for_loop> ::= for ( <expr> ; <expr> ; <expr> ) { <stmt_list> } <cond_stmt> ::= <expr> <cond_op> <expr> <cond_op> ::= ==!= <= >= < > <var_assign> ::= <identifier> = <expr> <identifier> ::= [a-za-z][a-za-z0-9_]* 12
13 Reflektioner Det har varit ett mycket intressant och lärorikt projekt att utföra. Den främsta utmaningen för mig har varit att försöka översätta min grundidé till något som kan utföras inom ramen för detta projekt. Jag är nöjd med resultatet av detta projekt. Det är en intressant motsättning i programspråkskonstruktion mellan att göra något enkelt för nybörjare att använda och att göra något som inte går vana användare på nerverna. Vilken syntax man väljer kan i stor utsträckning bestämmas av målgrupp och dess erfarenhet av programmering. Är målgruppen totala nybörjare så bör man t.ex. inte använda för många specialtecken utan det är bättre att ha ett nyckelordsstyrt språk (exv Basic). Om man riktar sig till vanliga programmerare så kan det finnas ett värde i att inte överraska för mycket, alltså att språkets syntax liknar det som målgruppen är van vid (exv att Javascript i sista stund fick en C-liknande syntax påklistrad av marknadsföringsskäl). Och slutligen om man riktar sig till mycket intresserade och kunniga programmerare så kan man verkligen ta ut svängarna lite mer, eftersom målgruppen då redan är van vid att ta till sig ny syntax (exv Haskell, Lisp, Erlang). Ett exempel är att jag personligen föredrar indenteringsstyrda språk, av den enkla anledningen att man ändå bör indentera sin kod på ett konsekvent sätt och då är det onödigt att ha extra tecken för något som redan är implicit av indenteringen. Men i utvecklingen av Paxl så valde jag att inte göra det indenteringsstyrt, eftersom jag märkt att det skapar svårighet och frustration för nya användare som inte är vana vid att bry sig om blanka tecken. 13
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:
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...
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
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...
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
Introduktion till formella metoder Programmeringsmetodik 1. Inledning
Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
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
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
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
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
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
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,
TDP007 Konstruktion av datorspråk Hemtentamen
TDP007 Konstruktion av datorspråk Hemtentamen 2008-08-20 Hemtentamen är kompletterings- och omexaminationstillfälle för de studenter som missat hela eller delar av inlämningar och seminarier, moment LAB1,
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
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
Programmering för språkteknologer I, VT2012. Rum
Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska
Ö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,
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering D0009E Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner
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
Grundläggande datalogi - Övning 1
Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b
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
Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i
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
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
TDDE44 Programmering, grundkurs
TDDE44 Programmering, grundkurs Föreläsning 1 Jody Foo, jody.foo@liu.se Föreläsningsöversikt Vad ingår i "Programmering, grundkurs"? Kursöversikt Datorer, program, programmeringsspråk Kort om nästa föreläsning
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
Imperativ programmering
Imperativ programmering 1DL126 3p Imperativ programmering Jesper Wilhelmsson ICQ: 20328079 Yahoo: amigajoppe MSN / epost: jesperw@it.uu.se Rum: 1335 Tel: 471 1046 Imperativ programmering Vilka programmeringsspråk
Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner
Introduktion till programmering Föreläsning 5: Fruktbara funktioner 1 Retur-värden Funktioner kan både orsaka en effekt och returnera ett resultat. Hittills har vi ej definierat några egna funktioner med
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
Tentamen i. TDDC67 Funktionell programmering och Lisp
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDC67 Funktionell programmering och Lisp och äldre kurser TDDC57 Programmering, Lisp och funktionell programmering
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)
Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning
1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY
Grunderna i C++ ARK 385: Virtuella Verktyg i en Materiell värld AT Arkitektur & Teknik Chalmers Tekniska Högskola 2009 - Kursen skapades (3 förel.) 2010-6 förel. + 2 projekt 2011-8 förel. Helt omarbetade
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?
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
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
(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
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
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:
TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Introduktion till Java -- för Pythonprogrammerare Historia: C, C++ 3 Historia: Oak 1 4 1990: Sun Microsystems påbörjade projekt StarSeven Avancerad
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
Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.
Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis
Logik och kontrollstrukturer
Logik och kontrollstrukturer Flödet av instruktioner i ett programmeringsspråk bygger vi upp med hjälp av dess kontrollstrukturer. I C har vi exemplen if, if else, while, do while. Dessutom finns switch
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
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 (
Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.
Omgivningar Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem. (define (sqrroot c) (define (fixpoint guess c eps) (define
TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017
FÖRELÄSNING 1 TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Introduktion till kursen Schemespråkets grunder Enkla exempel Jalal Maleki Institutionen för datavetenskap Linköpings universitet
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
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
Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,
Imperativ och Funktionell Programmering i Python #TDDD73 Fredrik Heintz, IDA fredrik.heintz@liu.se @FredrikHeintz Översikt Repetition: Satser och uttryck Variabler, datatyper, synlighet och skuggning Upprepning,
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
TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Introduktion till Java -- för Pythonprogrammerare Historia: C, C++ 3 Historia: Oak 1 4 1990: Sun Microsystems påbörjade projekt StarSeven Avancerad
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
F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander
F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng
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...
Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program
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:
Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk
Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är
DD1361 Programmeringsparadigm. Carina Edlund
DD1361 Programmeringsparadigm Carina Edlund carina@nada.kth.se Funktionell programmering Grundidéen med funktionell programmering är att härma matematiken och dess funktionsbegrepp. Matematiskt funktionsbegrepp
Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner
Lektion 4, del 1, kapitel 10 Funktioner i JavaScript Inlärningsmål Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner Introduktion
Språket Python - Del 1 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Ett programmeringsspråks byggstenar Några inbyggda datatyper Styra instruktionsflödet Modulen sys 2 Ett programmeringsspråks byggstenar 3 ETT PROGRAMMERINGSSPRÅKS BYGGSTENAR
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
TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18
TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis
Översikt över Visual Basic
Översikt över Visual Basic Om denna översikt Denna översikt ger en kort introduktion till de viktigaste delarna i programspråket Visual Basic 6.0. På alla ställen där det beskrivs hur man skriver kod gäller
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
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
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
Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler
21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse
Programmeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion
Introduktion till programmering D0009E Föreläsning 6: Iteration Multipel tilldelning Helt ok att tilldela en variabel flera gånger: bruce = bruce, bruce = 7 bruce Output: 7 Som tillståndsdiagram: bruce
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
Kompilatorer och interpretatorer
1 of 6 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@oru.se) Tentamen i Kompilatorer och interpretatorer för Dataingenjörsprogrammet m fl lördag 7 november
Objektorienterad programmering Föreläsning 4
Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -
Programmering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
TDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om
Pascal... Pascal. Pascal... Pascal...
... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad
1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen
Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt
Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
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
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,
Tillämpad Programmering (ID1218) :00-13:00
ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
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
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan
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
i LabVIEW. Några programmeringstekniska grundbegrepp
Institutionen för elektroteknik Några programmeringstekniska grundbegrepp 1999-02-16 Inledning Inom datorprogrammering förekommer ett antal grundbegrepp som är i stort sett likadana oberoende om vi talar
C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen
C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt
MicroPython Ett textbaserad programmeringsspråk för Micro:bit
MicroPython Ett textbaserad programmeringsspråk för Micro:bit Introduktion till informationsteknologi 1DT051 2018-09-24 karl.marklund@it.uu.se Uppsala universitet Programming, problemlösning och algoritmer
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
Parameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Programmering II (ID1019) :00-17:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-03-10 14:00-17:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
FÖRELÄSNING 1 PERSONAL TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 SYFTE EXAMINATION ORGANISATION
TDDC74 PROGRAMMERING: ABSTRAKTION OCH MODELLERING VT 2017 Jalal Maleki Institutionen för datavetenskap Linköpings universitet jalal.maleki@liu.se FÖRELÄSNING 1 Introduktion till kursen Schemespråkets grunder
Konvertering från sträng. Winstrand Development
1 Winstrand Development Konvertering mellan strängar och datatyper När vi arbetar med de inbyggda datatyperna (int, double etc.) går det lätt att konvertera värdet till en sträng mha metoden.tostring()
Tentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner