Introduktion till programmering. Christian Ohlsson



Relevanta dokument
Programmering A. Johan Eliasson

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Klassdeklaration. Metoddeklaration. Parameteröverföring

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Föreläsning 3: Booleans, if, switch

F4. programmeringsteknik och Matlab

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Föreläsning 6: Introduktion av listor

1 Klasser och objektorientering Vad är objektorientering?

TDIU01 - Programmering i C++, grundkurs

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Introduktion till programmering

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

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?

Imperativ programmering. Föreläsning 2

Tentamen i. TDDC67 Funktionell programmering och Lisp

Föreläsning 2 Datastrukturer (DAT037)

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Tentamen i Algoritmer & Datastrukturer i Java

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

SMD 134 Objektorienterad programmering

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Kursplanering för EE3D i kursen Programmering 1, 100p.

Objektorienterad programmering i Java

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

TENTAMEN OOP

Objektorienterad Programmering (TDDC77)

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

Föreläsning 2 Programmeringsteknik och C DD1316

Outline. 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

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Programmering B med Visual C

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Programmeringsteknik I

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Tentamen Datastrukturer (DAT036)

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

Visual Basic, en snabbgenomgång

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

TDIU01 - Programmering i C++, grundkurs

Språket Python - Del 1 Grundkurs i programmering med Python

Imperativ programmering. Föreläsning 4

Objektorienterad programmering

Dagens föreläsning Programmering i Lisp Fö 5

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

(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

Parameteröverföring. Exempel. Exempel. Metodkropp

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

Föreläsning 2. Operativsystem och programmering

Objektorienterad programmering i Java

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Repetition C-programmering

Inledande programmering med C# (1DV402) Introduktion till programmering

Introduk+on +ll programmering i JavaScript

Programmering för språkteknologer II, HT2011. Rum

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

OOP Objekt-orienterad programmering

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

TDDC77 Objektorienterad Programmering

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Innehållsförteckning

SKOLFS. beslutade den -- maj 2015.

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

SKOLFS. beslutade den XXX 2017.

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Tentamen Datastrukturer (DAT036)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Tentamen Datastrukturer (DAT037)

Tentamen , Introduktion till Java, dtaa98, dtea53

Introduktion C-programmering

Tommy Färnqvist, IDA, Linköpings universitet

JAVAUTVECKLING LEKTION 4

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Dugga Datastrukturer (DAT036)

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 15: Repetition DVGA02

Transkript:

Introduktion till programmering 1

Definition av programmering Programmering handlar om att instruera en maskin att utföra någon typ av arbete Maskinen består endast av kretsar och kan inte utföra något utan instruktioner Instruktionerna utförs på olika abstraktionsnivåer Närmast hårdvaran: Maskinkod Närmast människan: Pseudokod 2

Software engineering SE innebär design, utveckling och underhåll av programvara Flera typer finns: Kravspecialist Programmerare Testare Konfigurationsspecialist Kvalitetsansvarig 3

Design Patterns DP (design-mönster) innebär att man kan identifiera vanliga problem-områden inom programvaruutveckling När problemområdet identifierats kan man utgå från kända lösningar på problemet, som då snabbt kan få en lösning DP kan enkelt sägas vara en viss standardlösning på ett visst standardproblem 4

Exempel: MVC UPDATERAR MODEL MANIPULERAR VIEW CON- TROLLER SER USER ANVÄNDER 5

Ramverk Ett ramverk (framework) är ett bibliotek med funktionalitet som tagits fram för att underlätta utveckling av något Nackdel: Man har inte full koll på vad som händer under ytan Fördel: Koden I ramverket är oftast effektiv, vältestad, robust och generell 6

.NET Grunden i Microsoft Windows Samling av klassbibliotek för hantering av Kryptografi Databaser Algoritmer Nätverk och mycket annat 7

SOA Service Oriented Architecture Man organiserar ett distribuerat IT-system som en samling kommunicerande tjänster Ett bra exempel på SOA är webbtjänster som kommunicerar med json, XML eller SOAP 8

Testning Innebär att informera inblandade parter om kvalitetsaspekterna i ett datorprogram Kan ge en objektiv vy på riskerna med att använda ett visst program 9

Testning: vad testar man? Uppfyller de krav som fastslogs i design och utveckling Svarar korrekt på alla typer av indata Utför sina uppgifter inom acceptabel tid Är tillräckligt användbar Kan installeras och köras I avsedda miljöer Genererar de resultat som intressenterna önskar 10

Datastrukturer 11

Datastrukturer En datastruktur är en komplex samling av primitiva datatyper Används för att realisera en ADT (abstract datatype) Man en god datastruktur kan stora mängder data hanteras på ett ändamålsenligt sätt 12

Listor En länkad lista är en linjär samling objekt som kallas noder Dessa noder innehåller en ADT och en pekare till nästa nod Den sista noden pekar på NULL så att man vet var listan slutar Listans första nod kallas HEAD Data lagras dynamiskt i en lista och varje ny nod skapas först när den behövs 13

En länkad lista 14

Isättning I en länkad lista 15

Stackar En stack är en variant av en länkad lista där där man lägger till och tar bort i samma ände. Elementet som läggs in sist tas ut först. Principen kallas LIFO, Last In First Out Exempel: Tallrikar Brickor i en matsal Pengar i ett rör 16

Exempel på en stack 17

Köer Den abstraka datatypen kö fungerar som en vanlig kö Kan implementeras som ett skal ovanpå en vanlig lista (insert på pos 1, delete på pos last) Exempel: Schemaläggning av processer i en dator Köhantering 18

Exempel på en kö 19

Träd Träd byggs som en lista, fast med flera noder Består av noder och kanter Noderna Innehåller data Kanterna Binder ihop noderna Träd är hierarktiska Noderna finns på olika nivåer Noder på samma nivå får inte ha kanter till varandra Träd är rekursiva Varje nod kan ha 0 eller flera barn, som i sin tur är träd 20

Exempel på ett träd 21

Noder I ett träd 22

Binära träd 23

Generella träd 24

Grafer 25

Utvecklingsmodeller 26

Utvecklingsmetoder Många metoder för att hjälpa verksamhetsutvecklare, designers, projektledare, arkitekter och programmerare att ta fram digitala tjänster. Syftar de till att hjälpa till att göra processen bättre på något sätt, vilket oftast innefattar tydlighet och ibland spårbarhet. 27

Traditionella Det finns en mängd olika modeller för utveckling som alla faller under kategorin traditionella Det som utmärker dessa är att de alla är varianter på vattenfallsmodeller Inom vattenfallsmodellen slutför man alltid ett steg före man går på nästa steg i utvecklingen. 28

Vattenfallsmodellen: Exempel 29

Agila Agilt = Lättrörligt Paraplybegrepp för moderna arbetssätt för framtagande av programvara Man arbetar i små cykler med små enheter Iterativt och inkrementellt Mindre dokumentation, mestadels i form av personas och user stories Visuella dokument 30

Agil metod: Scrum Iterativt och inkrementellt ramverk för hantering av produktutveckling Utvecklingsteamet arbetar som en enhet för att nå ett gemensamt mål En viktig princip i Scrum är att kunden kan ändra sig om vad de vill ha och behöver Fokuserar istället på att maximera lagets förmåga att leverera snabbt och reagera på nya krav. 31

Scrum: Exempel 32

Agil metod: extreme Programming Metodik som syftar till att förbättra programvarans kvalitet och anpassbarhet till föränderliga kundkrav Har korta intervall mellan releases och använder kontrollstationer där nya kundkrav kan antas Namnet kommer från idén att de fördelaktiga delarna av traditionella systemutvecklingsmetoder tas till "extrem "nivåer 33

extreme Programming: Exempel 34

Programspråk 35

Olika programspråk Ett programspråk kan ses som ett verktyg för att realisera en idé Beroende på idén behövs olika språk Olika verktyg är rätt i olika situationer 36

Den 10 populäraste språken 2014 37

Funktionell programmering En typ av programspråk där strukturen och elementen evalueras som ett matematiskt uttryck Har sitt ursprung i Lambda kalkyler Används idag sparsamt, bortsett från inom artificiell intelligens 38

Exempel I LISP ; # 1999 (defun run () (format t "~% Welcome to the database ") (format t "~% ======================= ") (format t "~% Press s to search, ") (format t "~% or 'x' to exit. ") (format t "~% ======================= ") (format t "~% ") (setq val (read)) (cond ((equal val 's) (dosearch (getdb)) ((equal val 'x) (format t "~%Exiting") ) ) (run)) ) (t (format t "~% That's not a valid option") (run)) 39

Proceduriell programmering Mycket vanligt förekommande paradigm av språk Har sina anor från strukturell programmering Baseras på procedurer Aka: rutiner, subrutiner, metoder eller funktioner Modularitet dela in programmet i moduler Scoping variablers synlighet (livslängd) 40

Exempel I C /* 1998 */ #include "header_ftp.h int State_IDLE(int sig, long len, char buffer[bufsize], int fd) { if(sig == AF_Con_Ind) { ReadDatafromSocket(FSOCK_FD, (char *)&len, sizeof(long)); if((fd = open(buffer, O_WRONLY)) == -1) { printf("unable to open file.\n"); WriteSignaltoSocket(FSOCK_FD, AF_Rej_Req, SIGLEN); return TRUE; } else WriteSignaltoSocket(FSOCK_FD, AF_Con_Resp, SIGLEN); } return FALSE; } 41

Objektorienterad programmering 42

Objektorienterad programmering Inom OO ser man de inblandade entiteterna som objekt Som har egenskaper och kan utföra metoder Dessa objekt programmeras att kunna interagera med varandra för att lösa en uppgift 43

Exempel I C++ class Rectangle { int width, height; public: void set_values (int,int); int area() {return width*height;} }; int main () { Rectangle rect; rect.set_values (3,4); cout << "area: " << rect.area(); return 0; } void Rectangle::set_values (int x, int y) { width = x; height = y; } 44

Klasser En klass är en beskrivning av hur ett objekt är uppbyggt Kan liknas vid en ritning eller ett kakrecept Klassen definierar vilka dataattribut som ingår samt vilka operationer som kan utföras på ett objekt 45

Instans En instans är ett unikt och konkret objekt redo för användning Instansen skapas med en klass som mall En klass kan vara upphov till många instanser 46

Arv Hund färg favoritben smutsa_ned() ät_katt() Kanin färg vikt smutsa_ned() Katt färg smutsa_ned() klös_soffa() 47

Arv: Identifiera likheter Många klasser delar på egenskaper och beteende Det framstår onödigt att återskapa samma saker om och om igen OO erbjuder verktyg för att samla ihop gemensamma egenskaper och beteenden i överklasser 48

Arv: Superklass Husdjur färg smutsa_ned() Hund Favoritben ät_katt() vikt Kanin Katt klös_soffa() 49

Programspråkets byggstenar 50

Lexikal struktur Uppsättningen regler som bestämmer hur man ska skriva program i språket Regler finns bland annat för Syntax Värden, variabler, reserverade ord 51

Exempel på lexical struktur (LEX) /* 1998 */ WORD [a-za-z0-9_\-\./\*]+ [ \t]+ {/*Käkar upp white-space*/} "\n" { insert(null); return NL;} "&" { insert(null); return AND;} " " { insert(null); return PIPE;} ";" { insert(null); return SEMI;} ">" { insert(null); return GREAT;} "<" { insert(null); return LESS;} ">>" { insert(null); return DBLARR;} "exit" { printf("ok, use another stinky shell then...\n");exit(0);} {WORD} { yylval.txt=insert(yytext);return WORD;} 52

Parsern (YACC) /* 1998 */ %token NL PIPE SEMI GREAT LESS AND DBLARR EXIT %token<txt> WORD OPT %type<tptr> rad ccmd scmd cmd rad : ccmd NL { tree=$1; return 0;} NL { return 1;} ; ccmd : ccmd PIPE scmd { $$=(treeptr)makenode(pipe, $1, $3); } ccmd AND { $$=(treeptr)makenode(and, $1, NULL); } ccmd SEMI scmd { $$=(treeptr)makenode(semi, $1, $3); } ccmd SEMI { $$=(treeptr)makenode(semi, $1, NULL);} scmd { $$=$1;} ; 53

Datatyper Ett programspråk använder olika datatyper för att kunna representera olika typer av data Vanligt förekommande datatyper Heltal Flyttal Tecken Strängar Booleska värden 54

Variabler En lagringsbehållare för ett värde Associeras oftast med ett namn, där namnet är en referens till minnesadressen som innehåller variabelns värde int ålder; float medelålder; string namn; 55

Uttryck Ett uttryck utvärderas för att producera ett värde Det vanligaste sättet att skapa uttryck är med operatorer Operatorn kombinerar operandernas värden och producerar ett värde operand summa = 10 + 20; uttryck operator 56

Operatorer Ett programspråk använder operatorer för att kunna hantera Aritmetriska uttryck Jämförelser Logiska uttryck Tilldelningar och annat Olika operatorer har olika prioritet Exempelvis: svar = 2 + 5 * 7; 57

Programkodens uppbyggnad 58

Alla programs byggstenar Alla program utförs av tre olika strukturer: Sekvens - operationerna utförs i den ordning de står Selektion - olika villkor styr vilken väg programmet tar Iteration - upprepningar i koden 59

Sekvens Satserna i koden utförs i den ordning de står angivna Skapa variabler Fråga värde Skriv ut värde Fråga värde Skriv ut värde 60

Selektion Villkor styr vilken väg exekveringen av programmet skall ta Dessa villkor evalueras till sanna eller falska 10 kr är mer än 5 kr sant Jag är längre än Michael Jordan Olika varianter finns: if/else Switch Villkorsoperatorn? : falskt 61

Exempel på selektion Om minimikravet på en tenta är 25 poäng om studentens poäng är högre än eller lika med 25 studenten är godkänd Om villkoret är sant är studenten godkänd Om villkoret är falskt är studenten inte godkänd Poäng >= 25 True Alert( passed ) JavaScript if ( grade >= 25 ) alert( passed ); False 62

Selektion: switch Switch kan vara praktiskt att använda om du har distinkta lägen att variera på switch (uttryck) { case värde1 : satser 1; break; case värde2 : satser 2; break;... case värden : satser N; break; default: satser; } 63

Iterationer Repetitioner, upprepningar, slingor Vardagsexempel på iterationer: Så länge ingen svarar när jag ringer Ring upp igen Så länge det finns sidor kvar i boken Läs sidan Vänd blad Så länge jag inte lyssnat klart på skivan Lyssna på nästa låt 64

Iterationer forts Alla typer av iterationer innehåller ett villkor som evalueras till sant eller falskt Så länge villkoret evalueras till sant kommer kodblocket att exekveras Olika varianter av iterationer finns: while do/while for for in 65

While Bra variant när man på förhand inte vet hur många gånger något kommer att upprepas while ( villkor ) satser while ( counter < 100 ) counter++; 66

Funktioner 67

Funktioner En funktion är en mindre programmodul, som löser en specifik uppgift Med flera sådana här små moduler bygger man upp ett program En funktion är som en svart låda som tar emot en viss indata och genererar en viss utdata Indata Funktion Utdata 68

Fördelar med funktioner Små avgränsade moduler Ger välstrukturerade program Lättare att testa Lättare att felsöka och underhålla Möjlighet till återanvändning av kod Möjliggör kontraktsprogrammering 69

Anropa funktioner För att anropa en funktion, dvs få den att exekvera, behöver man bara skriva dess namn, och eventuella parametrar Ex: function printdocument (thedocument) { // kod som löser uppgiften } printdocument ( resultat.xlsx ); 70

Nästlade funktioner I vissa språk kan funktioner vara nästlade, dvs en funktion kan innehålla en funktion function hypotenuse(a, b) { function square(x) { return x*x; } return Math.sqrt(square(a) + square(b)); } 71

72