72
Introduktion till programmering 1 Christian Ohlsson

Introduktion till programmering

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduktion till programmering

Introduktion till programmering

1 Christian Ohlsson

Page 2: Introduktion till programmering

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

Christian Ohlsson 2

Page 3: Introduktion till programmering

Software engineering

§  SE innebär design, utveckling och underhåll av programvara

§  Flera typer finns: §  Kravspecialist

§  Programmerare §  Testare

§  Konfigurationsspecialist §  Kvalitetsansvarig

Christian Ohlsson 3

Page 4: Introduktion till programmering

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

Christian Ohlsson 4

Page 5: Introduktion till programmering

Exempel: MVC

Christian Ohlsson 5

MODEL

USER

VIEW CON-

TROLLER

UPDATERAR MANIPULERAR

SER ANVÄNDER

Page 6: Introduktion till programmering

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

Christian Ohlsson 6

Page 7: Introduktion till programmering

.NET

§  Grunden i Microsoft Windows §  Samling av klassbibliotek för hantering av

§  Kryptografi

§  Databaser

§  Algoritmer §  Nätverk

§  …och mycket annat

Christian Ohlsson 7

Page 8: Introduktion till programmering

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

Christian Ohlsson 8

Page 9: Introduktion till programmering

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

Christian Ohlsson 9

Page 10: Introduktion till programmering

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

Christian Ohlsson 10

Page 11: Introduktion till programmering

Datastrukturer

Christian Ohlsson 11

Page 12: Introduktion till programmering

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

Christian Ohlsson 12

Page 13: Introduktion till programmering

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

Christian Ohlsson 13

Page 14: Introduktion till programmering

En länkad lista

Christian Ohlsson 14

Page 15: Introduktion till programmering

Isättning I en länkad lista

Christian Ohlsson 15

Page 16: Introduktion till programmering

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

Christian Ohlsson 16

Page 17: Introduktion till programmering

Exempel på en stack

Christian Ohlsson 17

Page 18: Introduktion till programmering

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

Christian Ohlsson 18

Page 19: Introduktion till programmering

Exempel på en kö

Christian Ohlsson 19

Page 20: Introduktion till programmering

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

Christian Ohlsson 20

Page 21: Introduktion till programmering

Exempel på ett träd

Christian Ohlsson 21

Page 22: Introduktion till programmering

Noder I ett träd

Christian Ohlsson 22

Page 23: Introduktion till programmering

Binära träd

Christian Ohlsson 23

Page 24: Introduktion till programmering

Generella träd

Christian Ohlsson 24

Page 25: Introduktion till programmering

Grafer

Christian Ohlsson 25

Page 26: Introduktion till programmering

Utvecklingsmodeller

Christian Ohlsson 26

Page 27: Introduktion till programmering

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.

Christian Ohlsson 27

Page 28: Introduktion till programmering

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.

Christian Ohlsson 28

Page 29: Introduktion till programmering

Vattenfallsmodellen: Exempel

Christian Ohlsson 29

Page 30: Introduktion till programmering

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

Christian Ohlsson 30

Page 31: Introduktion till programmering

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.

Christian Ohlsson 31

Page 32: Introduktion till programmering

Scrum: Exempel

Christian Ohlsson 32

Page 33: Introduktion till programmering

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

Christian Ohlsson 33

Page 34: Introduktion till programmering

eXtreme Programming: Exempel

Christian Ohlsson 34

Page 35: Introduktion till programmering

Programspråk

Christian Ohlsson 35

Page 36: Introduktion till programmering

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

Christian Ohlsson 36

Page 37: Introduktion till programmering

Den 10 populäraste språken 2014

Christian Ohlsson 37

Page 38: Introduktion till programmering

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

Christian Ohlsson 38

Page 39: Introduktion till programmering

Exempel I LISP

Christian Ohlsson 39

; # Christian Ohlsson 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)) (run)) ((equal val 'x) (format t "~%Exiting") ) (t (format t "~% That's not a valid option") (run)) ) )

Page 40: Introduktion till programmering

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)

Christian Ohlsson 40

Page 41: Introduktion till programmering

Exempel I C

Christian Ohlsson 41

/* Christian Ohlsson 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; }

Page 42: Introduktion till programmering

Objektorienterad programmering

Christian Ohlsson 42

Page 43: Introduktion till programmering

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

Christian Ohlsson 43

Page 44: Introduktion till programmering

Exempel I C++

Christian Ohlsson 44

class Rectangle { int width, height; public: void set_values (int,int); int area() {return width*height;} }; void Rectangle::set_values (int x, int y) { width = x; height = y; }

int main () { Rectangle rect; rect.set_values (3,4); cout << "area: " << rect.area(); return 0; }

Page 45: Introduktion till programmering

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

Christian Ohlsson 45

Page 46: Introduktion till programmering

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

Christian Ohlsson 46

Page 47: Introduktion till programmering

Arv

Christian Ohlsson 47

Hund

färg

favoritben

smutsa_ned()

ät_katt()

Katt

färg

smutsa_ned()

klös_soffa() Kanin

färg

vikt

smutsa_ned()

Page 48: Introduktion till programmering

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

Christian Ohlsson 48

Page 49: Introduktion till programmering

Arv: Superklass

Christian Ohlsson 49

Husdjur

färg

smutsa_ned()

Katt

klös_soffa()

Kanin

vikt

Hund

Favoritben

ät_katt()

Page 50: Introduktion till programmering

Programspråkets byggstenar

Christian Ohlsson 50

Page 51: Introduktion till programmering

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

Christian Ohlsson 51

Page 52: Introduktion till programmering

Exempel på lexical struktur (LEX)

Christian Ohlsson 52

/* Christian Ohlsson 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;}

Page 53: Introduktion till programmering

Parsern (YACC)

Christian Ohlsson 53

/* Christian Ohlsson 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;} ;

Page 54: Introduktion till programmering

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

Christian Ohlsson 54

Page 55: Introduktion till programmering

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

Christian Ohlsson 55

int ålder; float medelÅlder; string namn;

Page 56: Introduktion till programmering

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

Christian Ohlsson 56

summa = 10 + 20;

operator

uttryck

operand

Page 57: Introduktion till programmering

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:

Christian Ohlsson 57

svar = 2 + 5 * 7;

Page 58: Introduktion till programmering

Programkodens uppbyggnad

Christian Ohlsson 58

Page 59: Introduktion till programmering

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

Christian Ohlsson 59

Page 60: Introduktion till programmering

Sekvens §  Satserna i koden utförs i den ordning de står angivna

Christian Ohlsson 60

Skapa variabler

Fråga värde

Skriv ut värde

Fråga värde

Skriv ut värde

Page 61: Introduktion till programmering

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 falskt

§  Olika varianter finns: §  if/else

§  Switch

§  Villkorsoperatorn ? :

Christian Ohlsson 61

Page 62: Introduktion till programmering

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

Christian Ohlsson 62

JavaScript if ( grade >= 25 ) alert(“passed”);

Poäng >= 25

True

False

Alert(”passed”)

Page 63: Introduktion till programmering

Selektion: switch §  Switch kan vara praktiskt att använda om du har

distinkta lägen att variera på

Christian Ohlsson 63

switch (uttryck) { case värde1 : satser 1; break; case värde2 : satser 2; break; ... case värdeN : satser N; break; default: satser; }

Page 64: Introduktion till programmering

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

Christian Ohlsson 64

Page 65: Introduktion till programmering

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

Christian Ohlsson 65

Page 66: Introduktion till programmering

While

Christian Ohlsson 66

while ( villkor ) satser

while ( counter < 100 ) counter++;

§  Bra variant när man på förhand inte vet hur många gånger något kommer att upprepas

Page 67: Introduktion till programmering

Funktioner

Christian Ohlsson 67

Page 68: Introduktion till programmering

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

Christian Ohlsson 68

Funktion Indata Utdata

Page 69: Introduktion till programmering

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

Christian Ohlsson 69

Page 70: Introduktion till programmering

Anropa funktioner

§  För att anropa en funktion, dvs få den att exekvera, behöver man bara skriva dess namn, och eventuella parametrar

§  Ex:

Christian Ohlsson 70

function printDocument (theDocument) { // kod som löser uppgiften } printDocument (“resultat.xlsx”);

Page 71: Introduktion till programmering

Nästlade funktioner

§  I vissa språk kan funktioner vara nästlade, dvs en funktion kan innehålla en funktion

Christian Ohlsson 71

function hypotenuse(a, b) { function square(x) { return x*x; } return Math.sqrt(square(a) + square(b)); }

Page 72: Introduktion till programmering

Christian Ohlsson 72