Enjoy Vattenfallsmodellen i funktionella språk
|
|
- Helen Bergman
- för 5 år sedan
- Visningar:
Transkript
1 Föreläsning 2 i Programmeringsparadigm Funktionell programmering := variabler pekare sidoeffekter ;...; Fy, fy => bugfree förståeliga korta inga "satser", bara uttryck! Enjoy Vattenfallsmodellen i funktionella språk Specifikation ofta ekvationer Design funktioner def med ekvationer Kodning funktioner def med ekvationer Högre ordningens funktioner, def med ekvationer Funktioner kan var argument till funktioner Funktioner kan var resultat till funktioner Hög abstraktionsnivå => kraftfulla språk Lat evaluering, ger oändliga datastrukturer Resultat räknas ut fört när de behövs, effektivt => kraftfulla språk T e alla namn referenser, ingen (eplicit) "pekarprogrammering" => kraftfulla språk Haskell logiskt bra typsystem => Hittar många slarvfel Haskell Typklasser => Överlagrade funktioner Haskell Moduler => Modern programutveckling ADT
2 Historik, geografi Fokker 1.1 C&K 1.1 (Chakravarty & Keller) När man vill tänka imperativt (simulering)? Gräns mellan paradigmer Bra begrepp? Om Hudaks bok, Fokkers bok, Chakravarty & Kellers bok Praktik : Räknedosa, Interpretern hugs ModulenPrelude Räknedose- användning laddas alltid automatiskt och innehåller många fördefinierade funkitoner,..> uttryck operatorer och typer svar skal-anrop Inladdning av skript med ytterligare definitoner, load reload av script quit..>:! emacs..>:l...hs..>:r..>:q Programmering av skript med nya definitoner som sparas på fil hugs definitioner av funktioner konstanter typer moduler klasser emacs Jag rekommenderar användning av interpretatorn hugs. Hos Fokker körs Haskell med en annan interpretator, så avsnitt 1.2 i Fokker är lite annorlunda. I C&K 2.2 används GHCi, som är mycket lik hugs. I labanvisningen för labben "Introduktion till Haskell" finns anvisningar hur man använder hugs. På föreläsningen går jag igenom hur man använder hugs med hjälp av teten och bilderna i labbanvisningen och bilden ovan. Först använder vi hugs som en räknedosa med fördefinierade funktioner och operatorer (från filen Prelude som alltid "laddas in"). Fokker använder ganska avancerade fördefinierade funktioner i 1.2 och 1.3, t e product och operatorn.. i product [1..n] och definierar genast egna funktioner såsom fac och choose och en egen operator!^! i 1, 2 och 1.3. Jag (och C&K) kommer att gå lite försiktigare fram. Men snart är det dags att skriva (definiera) egna funktioner, vilket är "att programmera" i Haskell. För att få godkänt på den här kursen: Gör..>res checkin progp04
3 Typer och operatorer i Haskell. Översikt av några fördefinierade (dvs de finns i "Preluden", "förspelet") datatyperna och de viktigaste operatorerna med vars hjälp vi kan bilda uttryck (Fokker ): mod (rest vid heltalsdivision) div (heltalsdivision) + - * ^ + - / * (32 bit) Int (64 bit) Double / * går i Haskell E23 && (logiskt och, båda True) < <= > >= == /= Bool True False < <= > >= == /= < <= > >= == /= (lika med, inte lika med) Char A a 7! /65 not (logiskt inte) Det finns fler primitiva datatyper än Int för heltal, bl a Integer med "oändligt antal siffror". Det finns förutom Double ytterligare en primitiva datatyp Float för flyttal ("decimaltal"), det som skiljer är att bara 32 bit tilldelas sådan variabler i minnet i stället för 64 bitar och att antalet signifikanta siffror och största och minsta eponent är därför är mindre. Typen String : type String = [Char] Strängar kan skrivas ".." konkateneras med ++.
4 Definition och användning av en enkel funktion: Man skriver alltså i hugs uttryck för att få hugs att beräkna något, dvs "köra" eller eekvera. Man använder i Haskell även uttryck (epressions) i högerleden när man definierar egna funktioner. Egna funktioner får namn i en funktionsdefinition. Funktioner är ett slags värden i Haskell. I Haskell kan alla sorters värden ges namn (identifierare) som börjar på liten initial. Värden skrivs med Stor (Versal) initial eller med krumelurer, t e True, False, 12, 3:[], (2. 5). I imperativa spåk ger man ju ofta namn till delar i minnet ("variabler"), som i sin tur kan innehålla olika värden under körningens gång. Detta gör vi aldrig i fuktionell programmering. Namnen står alltid för samma sak, samma värde, hela tiden! Detta är den stora vitsen! Hur gör man om man vill definiera egna funktioner (Java : metoder som returnerar värden), och hur använder man dem, kanske gång på gång? Jo: Java Haskell Matte Definition av f: f() R R class...{ f::double->double static double f(double ) { f = Vi definierar f() = +3 return +3; } (I emacs fönstret) Vi kallar för (formell) parameter, i matte ofta "variabel" som ju betyder något helt annat i imperativ programmering! Märk att man inte behöver skriva parantes kring i f. Användning (anrop, applikation) av f...main(...) { utdata.println( "f(14.0) = " + f(14.0)); f 14 Vad blir f(14)? 17.0 (I hugs fönstret) Vi kallar 14.0 och 2.0 för argument (i vissa böcker aktuell parameter). Märk att man inte behöver skriva parantes kring 14.0 i f 14.0.
5 Ytterligare ett eempel. Herons formel : Haskell Matte Om en triangel har sidor med längderna a, b och c kan triangelns yta beräknas med Herons formel: area1 ::(Double, Double, Double) -> Double area1(a,b,c) = sqrt (p*(p-a)*(p-b)*(p-c)) where p = (a+b+c) / 2 area1 :: R3 -> R area1(a,b,c) = V p(p-a)(p-b)(p-c) där p = (a+b+c) / 2 Här ser vi på funktionen area1 som en funktion med en parameter som är en tripel med flyttal, dvs av typen (Double, Double, Double) till ett resultat som är ett flyttal, typen Double. I gymnasie-matematiken säger man ofta att area1 är en funktion med tre parametrar ("variabler"), men detta är slarvigt, en funktion har en enda parameter. Körning: Main> area1 (3.0, 4.0, 5.0) Beräkna några trianglars ytor, 6.0 t e den egyptiska triangeln med sidan 3, 4 och 5. Det vanligaste sättet att i Haskell skriva en funktion för Herons formel är dock detta: (Matematikerna Schönfinkel och Haskell Curry uppfann detta bättre sätt på 1920-talet och 1940-talet, men det har ännu inte slagit igenom ännu i matteundervisningen i skolorna): area ::Double -> Double -> Double -> Double area :: R -> R -> R -> R area a b c = sqrt( p*(p-a)*(p-b)*(p-c)) area a b c = V p(p-a)(p-b)(p-c) where p = (a+b+c) / 2 där p = (a+b+c) / 2 Detta sätt att skriva är ganska ovant, och i början kan du se detta som ett sätt att i Haskell skriva att area är en funktion av tre parametrar. Det korrekta är dock egentligen att funktionen area är en funktion med en parameter av typen Double som får som resultat av typen Double -> Double -> Double. Funktioner har nämligen alltid en parameter och kan returnera resultat som är funktioner.
6 Körning: Main> area Beräkna några trianglars ytor, 6.0 t e den egyptiska triangeln med sidan 3, 4 och 5. Detta sätt att skriva är ganska ovant, och i början kan du se detta som ett sätt att i Haskell applisera area på tre argument. Det korrekta är dock egentligen att att funktionen area appliseras på ett argument, i vårt fall 3.0, och att resultatet blir en funktion av typen Double -> Double -> Double. Denna nya anonyma funktion kan i sin tur appliseras på en nytt argument av typen Double, i vårt fall 4.0 och vi får ett resultat av typen Double -> Double. Denna nya anonyma funktion kan i sin tur appliseras på en nytt argument av typen Double,i vårt fall 5.0 och vi får ett slutresultat av typen Double, i vårt fall 6.0. I stället för where kan man i definitioner använda let.. in. I vårt fall area a b c = let p = (a+b+c) / 2 in sqrt( p*(p-a)*(p-b)*(p-c)) I båda fallen är namnet p som knyts till värdet av uttrycket (a+b+c) / 2 bara användbart i definitonen av area. Java: import java.io.*; public class Heron { static BufferedReader indata = new BufferedReader(new InputStreamReader(System.in)); public static void main(string[] iargs) throws IOEception { System.out.println("Herons formel beräkning av trianglars ytor"); System.out.print("Ge längden för sida a : "); double a = Double.parseDouble(indata.readLine()); System.out.print("Ge längden för sida b : "); double b = Double.parseDouble(indata.readLine()); System.out.print("Ge längden för sida c : "); double c = Double.parseDouble(indata.readLine()); System.out.println("Triangelns yta = " + area(a, b, c)); } public static double area(double ia, double ib, double ic) { double p = (ia + ib +ic) / 2.0; //Herons formula return Math.sqrt(p*(p-ia)*(p-ib)*(p-ic)); } } /* Körresultat Herons formel för beräkning av trianglars ytor Ge längden för sida a : 3.0 Ge längden för sida b : 4.0 Ge längden för sida c : 5.0 Triangelns yta = 6.0 */
7 Att definiera en funktion: Studera definitionsområdet! Några eempel: en ekvation med ett fall/ flera ekvationer/ en ekvation med flera fall (vakter/case/if)? Haskell Matte f::double->double f = En ekvation klarar alla värden Vi definierar f() = e j(b) True False True o False True False o b False True ej::bool-> Bool ej True = False Två ekvationer klarar båda värdena False om b = True ej False = True Mönsterpassning Fokker C&K implicit ej(b) = True (pattern match) Värden, ej namn i V.L. om b = False f() R B B R Sämre: En ekvation med flera fall: med vakter (guards): Fokker C&K ej :: Bool -> Bool ej b b = False otherwise = True med if-uttryck (C&k 3.2.1) ej :: Bool -> Bool - ej b = if b then False else True med case-uttryck ej :: Bool -> Bool ej b = case (b) of True -> False False -> True
8 Haskell Matte positive() 1.0 True True -6.0 False False positive::double->bool positive En ekvation med vakter True om >= 0 >= 0 = True klarar alla värden positive() = otherwise = False False i övriga fall R B Mönsterpassning med flera ekvtioner fungerar ej. Däremot möjligt men sämre med if eller case Rekursion. Om definitionsmängden består av ett ändligt antal värden så kan man helt enkelt skriva en ekvation för varje värde. Det var det vi gjorde när vi definierade ej. Men med ett definitionsområde med oändligt antal värden fungerar det ej, men ofta kan man då använda ett namn i vänsterledet och uttrycka resultatet med ett uttryck som använder detta namn i högerleetd. Ibland blir det ett enda fall i bland flera. I högerledetsuttrycket är är det tillåtet att använda ett anrop till den funktion som vi just definierar. Detta är ofta användbart. Fokker behandlar detta i (Tillämpningen på listor på sid 13 kan vi ej än), C&K i kapitel 4. Hur kan detta fungera? Jo precis som vanligt! hugs förenklar utrycket som förut tills vi får ett slutresultat som skrivs ut. Det som krävs är att vi för eller senare hamnar i ett icke rekursivt fall, ett basfall.
9 Ett eempel: Låt os definera power(m, n)= mn Haskell Matte error "" I, N I power(m, n) m n 1 om n=0 power (m, n) = odefinierat om n<0 m*power(m, n-1) power1 :: Int -> Int -> Int -- vakter för n< 0 Bäst! power1 _ 0 = 1 -- Fokker power1 m n n<0 = error " second argument till power >= 0" otherwise = m * power1 m (n-1) Eller om vi antar att vi ej skall använda negativa argument (I matte skulle man säga att definitionsmängden är de naturliga talen N. Denna datatyp finns inte färdig i Preluden i Haskell.) power :: Int -> Int -> Int -- rekursiva lösningar för n>0 power _ 0 = 1 -- Fokker power m n = m * power m (n-1) Enraderskommentarer skrivs med -- i Haskell, // i Java. Flerraderskommentarer omges med {- -} i Haskell, /* */ i Java.
10 Hur fungerar power? Haskell-system förenklar helt enkelt uttryck (med kontroll av typerna coh använding av definitionerna). Jfr imperativa språk där man för att förstå semantiken måste tänka sig en vonneuman-maskin. power 3 6 blir 3 * power 3 5 blir 3 * (3 * power 3 4) blir 3 * (3 * (3 * power 3 3)) blir 3 * (3 * (3 * (3 * power 3 2))) blir 3 * (3 * (3 * (3 * (3 * power 3 1)))) blir 3 * (3 * (3 * (3 * (3 * (3 * power 3 0))))) blir 3 * (3 * (3 * (3 * (3 * (3 * 1))))) blir 3 * (3 * (3 * (3 * (3 * 3)))) blir 3 * (3 * (3 * (3 * 9))) blir 3 * (3 * (3 * 27)) blir 3 * (3 * 81) blir 3 * 243 blir 729 Minnesåtgång kan bli stor. (En rättfram rekursiv lösning på labbens Fibonacchi-uppgift blir mycket ineffektiv, varför?). En bättre lösning är : power :: Int -> Int -> Int -- accumulerande lösningar med where power _ 0 = 1 power m n n<0 = error " second argument till power >= 0" otherwise = pw m n 0 1 where -- layout Fokker pw :: Int->Int->Int->Int-> Int pw m n i acc i==n = acc otherwise = pw m n (i+1) (acc*m) power 3 6 blir -- Körning, dvs förenkling eller reduktion pw blir -- Kallas även evaluering, eng evaluation pw blir pw blir pw blir pw blir pw blir pw blir 729 Minneseffektiv. Även i funktionella språk måste man (förstås) tänka ibland. Att denna lösning "inte sväller ut" beror på att det rekursiva anropet av pw ej ingår i något uttryck. Man säger att pw är svansrekursiv."imperativa programmerare" lär sig att skirva "loopar" i dessa fall och att bara tillgripa rekursion när det är svårt att lösa iterativt. (Mer om effektivitet i Fokker kap 5, fast svårläst än så länge) Lösningar med accumulatorer (och, kommer senare, until och foldl men inte foldr) är svansrekursiva.
11 Egna operatorer. Man kan i Haskell lika lätt definera egna operatorn som funktioner. Om vi vill kunna skriva power 3 6 som 3 ^* 6 (svar 729) kan man göra detta med denna definition: (^*) = power Man kan ocså skriva 3 power 6 Om namn på operator Fokker p 6. ( ) gör funktioner av operatorer Fokker gör operatorer av funktioner. "Skåpregler" I lösningen ovan definieras hjälpfunktionen pw som en lokal funktion till power med hjälp av where. Man skulle också kunna använda let.. in. I båda fallen kan namnet pw bara användas i definitonen av power, "lokalt scope", lokalt giltighetområde. Vid programutveckling är det ofta enklast att definera power och pw som power :: Int -> Int -> Int -- accumulerande lösningar med where power _ 0 = 1 power m n n<0 = error " second argument till power >= 0" otherwise = pw m n 0 1 pw :: Int->Int->Int->Int-> Int pw m n i acc i==n = acc otherwise = pw m n (i+1) (acc*m) Namnet kan då användas "överallt i modulen", "globalt scope", globalt giltighetområde, och kan användas i provkörningar från hugs. Men i större program anses det ofta som mindre snyggt att låta namn som används lokalt vara globala. Fast Haskell-program blir inte så ofta stora..
12 Layoutregler. Efter where och let måste "syskon-definitioner" stå rakt under varandra. Detta gäller även "globala" definitioner, eftersom varje fil inleds med en definition module.. where (se labhandleningen). Börjar man längre till vänster på en rad uppfattas detta som man slutat med "syskondefinitioner", börjar man längre till höger som att man använder flera rader för en definition. Detta är mycket praktiskt, men ovant i början. Gör man fel skriver hugs ofts något med att den saknar ;. Se Fokker C&K 3.6 Att definiera nya (egna) typer. Moduler och ADT. Föresläsningen avslutades med 20 minuter med en snabbkurs i datatypdefiniering, för att komma fram till listor som finns lite av i lab1. Kommer att repetera detta i föreläsning 3. Jag följde delar av kapitel 8 i C& K. De som köpt Fokker kan istället läsa utdraget ur A Gentle Introduction to Haskell 98, sid 13 i labbhäftet. Hit hann vi! Fler eempel mm. På /info/progp02/haskelllectures/f2 finns Date.hs Fallanalys.hs JavaPower.java Power.hs Skatt.hs. Power.hs innehåller totalt 15 olika sätt att definiera power! Jag hoppas att Fokker (dock ej och 1.3.6), 1.4, nu till stora delar skall vara lättförståeligt och och 2.14 handlar om ytterligare mekanismer när man definierar operator, bla om prioitets och assocvitet så att man kan undvika parateser i yttryck med många operatorer. C&K Ch 1, Ch , 3.3 Ch 4.1 bör också vara förståeligt. Märk att funktionsapplikation har högsta prioritet i Haskell! Det vi behandlat på denna föreläsning finns sammanfattat i "att definiera en funktion i Haskell" i labhäftet! Lämpliga övningsuppgifter: i Fokker: del av 1.10, 2.2. i C&K CH 1.3 alla, Ch 4.5 E 3.
Enjoy Vattenfallsmodellen i funktionella språk
Föreläsning 2 i Programmeringsparadigm Funktionell programmering := variabler pekare sidoeffekter ;...; Fy, fy => bugfree förståeliga korta inga "satser", bara uttryck! Enjoy Vattenfallsmodellen i funktionella
Läs merDD1361 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
Läs merFöreläsning 5 i programmeringsparadigm.
Föreläsning 5 i programmeringsparadigm. λ-notation (lamda-notation, anonyma funktioner). Hutton 4.5. (Fokker 2.3.4.) Vi kan om vi vill definiera hjälpkonstanter, t ex i denna funktiondefinition : kommunalskatt
Läs merFöreläsning 4 (och 5?) i programmeringsparadigm.
Föreläsning 4 (och 5?) i programmeringsparadigm. Högre ordningens funktioner på listor; funktioner som argument: map, filter. (Fokker 3.1.3, C&K p 37, 38) map -- förändra alla element i en lista på samma
Läs merSMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
Läs merFö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
Läs merDatatyper 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
Läs merProgrammering 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
Läs merFöreläsning 4 (och 5?) i programmeringsparadigm.
Föreläsning 4 (och 5?) i programmeringsparadigm. Korrekta bilnummer. Programmet, som visar att man ibland använder smarta mönster för att skriva eleganta program, finns på /info/progp02/haskelllectures/f4.
Läs merObjektorienterad 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
Läs merI 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
Läs merFöreläsning 6 i programmeringsparadigm. Tips kring programmering i Haskell och kring labbarna.
Föreläsning 6 i programmeringsparadigm. Tips kring programmering i Haskell och kring labbarna. Att arbeta med två fönster. Hugs är ju en tolk (interpreter) vilket har stora fördelar vid programutveckling.
Läs merFöreläsningar 7,8 sept 24, sept 26 v 39). delvis DD Chapter 6.
Föreläsigar 7,8 sept 4, sept 6 v 39). delvis DD Chapter 6. Metoder som returerar värde. När vi skriver uttryck ka vi aväda ibyggda operatorer, t ex i uttrycket efter tilldeligssymbole i satse : k = 3*i
Läs merIntroduktion 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)
Läs merKompilering 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
Läs merMetodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer
Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel
Läs merIntroduktion till Haskell
Introduktion till Haskell Elias Riedel Gårding NMA11, Teknisk Fysik (KTH) 2014 18 februari 2018 Elias Riedel Gårding (NMA11, F14) Introduktion till Haskell 18 februari 2018 1 / 29 Om Haskell Historik 1927:
Läs merFöreläsning 5 i programmeringsparadigm. Tips kring programmering i Haskell och kring labbarna.
Föreläsning 5 i programmeringsparadigm. Tips kring programmering i Haskell och kring labbarna. Att arbeta med två fönster. Hugs är ju en tolk (interpreter) vilket har stora fördelar vid programutveckling.
Läs mer(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
Läs merProgrammering 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
Läs merFunktionell programmering DD1361
Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->
Läs mer732G 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 (
Läs merTDIU01 - 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
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler
Läs merTDDC77 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
Läs merIntroduktion 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
Läs merKlassdeklaration. 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
Läs merUndervisning. Examination
Kursinfo Objektorienterad programmering Undervisning Föreläsning 1 Kursinformation Allmänt om programmering Java - några inledande exampel Grundbegrepp: variabler, uttryck, satser, typer. Föreläsningar
Läs merNå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
Läs merIntroduktion 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
Läs merProgrammera 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
Läs merFöreläsning 4 i programmeringsparadigm.
Föreläsning 4 i programmeringsparadigm. OBS! Schemat ändrades den 30 augusti.,om du tryckte ut schemat tidare, märk att det är ingen föreläsning 2005 sept 14 onsdag, däremot 2005 sept 20 13.00 i sal F1.
Läs mer732G 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 (
Läs merITK: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,
Läs merF4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Läs merDel : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar.
Nada Tentamensdag 2004 aug 23 Tentamen Programmeringsparadigm Skrivtid 5 h Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 10p +(5p + 20p +5p+ 20p) + (10p +12p + 8p +10p) = 10p + 50p + 40 p
Läs merDatastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada
Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445,
Läs merFöreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1.
Föreläsning 9 i programmeringsparadigm. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1. Användning av Prolog. Prolog har framför allt används inom AI ( Articifial Intellegence),
Läs merVem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
Läs merDel : Paradigmer allmänt.
Nada Tentamensdag 2003 aug 25 Tentamen Programmeringsparadigm Skrivtid 5 h Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 5p +(12p + 15p +5p+ 20p) + (10p +14p + 8p +11p) = 5p + 52p + 43 p
Läs merTentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34
Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger
Läs merHej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer
Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded
Läs merFunktionell programmering. Haskell. Ge#ng started...
Funktionell programmering Haskell Ge#ng started... Installera Haskell För a/ installera Haskell på egen maskin, ladda ned Haskell Pla9orm från h/p://www.haskell.org/pla9orm/ Där finns instrukdoner, dokumentadon,
Läs merProgrammeringsteknik 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
Läs merFöreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.
Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Hur vi jobbar med ett program. 1. Vad vi skriver (med hjälp av redigeringsprogrammet Emacs) på datorn: // Fig. 2.1: Welcome1.java // A first program in
Läs merTDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Läs merGrundkurs 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
Läs merIdag. 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
Läs merRekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av
Läs merParameterö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
Läs merObjektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ
orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]
Läs merCommand 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
Läs merObjektorienterad 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
Läs merIntroduktion till programmering D0009E. Föreläsning 1: Programmets väg
Introduktion till programmering D0009E Föreläsning 1: Programmets väg 1 Vad är en dator? En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne (inte helt olikt förra
Läs merFöreläsning 8. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1.
Föreläsning 8. Paradigmöversikt, paradigmhistoria, paradigmgeografi. Se även föreläsning 1. Användning av Prolog. Haskell kan i princip användas till mycket, men grafiska paket, kopplingar till färdiga
Läs merÖvning2. Variabler. Data typer
Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man
Läs merFöreläsning 8. newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK -- data istället för newtype krävs om >1 konstruerare.
Föreläsning 8. Typer och programmeringsstil i Haskell. När vi definerade ett schack gjorde vi så här: newtype Chess = Chess [(Square, Chessman)] -- data ist f newtype OK deriving Show -- newtype effektivare
Läs mer//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.
/*==================================================================== Detta program hör ihop med dokumentet EXEMPEL_AVERAGE_POINTS.PDF där det finns förklaringar. ======================================================================*/
Läs merProgramstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser
// En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa
Läs merFö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
Läs merClasses och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Läs merF5 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
Läs merFö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å
Läs merAlgoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.
Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills
Läs merF2 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
Läs merUndervisning. Examination
Kursinfo Objektorienterad programmering Undervisning Föreläsning 1 Kursinformation Allmänt om programmering Java - några inledande exampel Grundbegrepp: variabler, uttryck, satser, typer. Föreläsningar
Läs merClasses och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Läs merTentamen 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
Läs merTENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Läs merProgrammering 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,
Läs merFö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?
Läs merFöreläsning 2. Täcker material från lektion 1, 2, 3 och 4:
(22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard
Läs merGrundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
Läs merIntroduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1
Kursinfo Introduktion till programmering Undervisning Föreläsning 1 Kursinformation Inloggning, filsystem, kommandotolk några inledande exempel Föreläsningar Fem föreläsningar, vardera 45 minuter. Allmänna
Läs merBankkonto - ö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
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock
Läs merFö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
Läs merFö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
Läs merAnvä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...
Läs merOOP Objekt-orienterad programmering
OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion Deklaration och tilldelning OOP F2:2 int x; double d; char ch; boolean
Läs merImperativ programmering. Föreläsning 2
Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.
Läs merIntroduktion till programmering SMD180. Föreläsning 3: Funktioner
Introduktion till programmering Föreläsning 3: Funktioner 1 1 Mer matematik Vi har sett matematiska uttryck med variabler, värden och operatorer, ex: 17+n pi/2 hours*60+minutes Kan man även skriva uttryck
Läs merFöreläsning 7 i programmeringsparadigm. Ytterligare Högre ordningens funktioner: filter, foldr foldl. Hutton 7.2, 7.3 och 7.4.
Föreläsning 7 i programmeringsparadigm. Ytterligare Högre ordningens funktioner: filter, foldr foldl. Hutton 7.2, 7.3 och 7.4. filter se Hutton. När man använder filter och map får man ofta glädje av anonyma
Läs merAtt deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet
Läs merDatalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs
Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten
Läs merFöreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
Läs merFö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
Läs merNada KTH 2003 okt 23 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13
Nada KTH 2003 okt 23 Tentamen Programmeringsparadigm 2D1350 Skrivtid 5 h 8-13 Antalet uppgifter : 1 (allmänt)+ 4 (Haskell) + 4 (Prolog) = 9 10p +(14p + 12p +10p+ 14p) + (8p +12p + 12p +8p) = 10p + 50p
Läs merPython. 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
Läs merAnmä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-06-11 Skrivtid: 0900 1400 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
Läs merTypkonvertering. 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å
Läs merPython. 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
Läs merFö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
Läs merD0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.
D0010E Övningsuppgifter i Eclipse Hello world! Skapa ett program som skriver ut "Hello world" på skärmen. package tutorial; public class HelloWorld public static void main(string[] args) System.out.println("Hello
Läs mer2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik
2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det
Läs merGrundlä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
Läs merOutline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst
Outline Objektorienterad Programmering (TDDC77) Föreläsning IV: while, for, do while, switch, arrayer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Ordning Villkorliga hopp I Normalt sett så
Läs merGrunderna 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
Läs merTDIU01 - 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
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta
Läs mer