300 likes | 485 Views
Programmeringsparadigmer. Programmeringsparadigme: Den stil/metode, som programmerings sproget og/eller programmøren anvender. Eksempler på paradigmer: Imperativ programmering - Declarativ programmering. Struktueret programmering - Ustruktueret programmering.
E N D
Programmeringsparadigmer. Programmeringsparadigme: Den stil/metode, som programmerings sproget og/eller programmøren anvender. Eksempler på paradigmer: • Imperativ programmering - Declarativ programmering. • Struktueret programmering - Ustruktueret programmering. • Flow-driven programmering - Event-driven programmering. • Scalar programmering - Array programmering. • Objekt-orienteret programmering. • Logisk programmering.
Programmeringsparadigmer. Programmeringsparadigme: Den stil/metode, som programmerings sproget og/eller programmøren anvender. Eksempler på paradigmer: • Imperativ programmering - Declarativ programmering. • Struktueret programmering - Ustruktueret programmering. • Flow-driven programmering - Event-driven programmering. • Scalar programmering - Array programmering. • Objekt-orienteret programmering. • Logisk programmering.
Imperativ programmering Imperativ - Bydende Gør dit. Gør dat. . . . for (i=0;i<10;i++) { k= k+i; }
Declarativ programmering. Hvad og ikke hvordan. Fx HTML beskriver, hvad der skal vises. Hvordan, dvs hvilken algoritme, der skal anvendes. Det er derfor HTML fortolkeren, der afgør hvordan siden skal vises. Dvs. • Deklarativ pro. beskriver, hvad et samlet system er opbygget af. • Imperativ pro. indeholder en algoritme for opbygning af systemet.
Programmeringsparadigmer. Eksempler på paradigmer: • Imperativ programmering - Declarativ programmering. • Struktueret programmering - Ustruktueret programmering. • Flow-driven programmering - Event-driven programmering. • Scalar programmering - Array programmering. • Objekt-orienteret programmering. • Logisk programmering.
Struktureret programmering. • Sproget skal hjælpe os med at forstå hvad det laver: Selvdokumenterende. • Struktur og effektivitet er ikke modsætninger. • Ofte vil strukturerede programmer være mere effektive end ustrukturerede da de er nemmere at vedligeholde og modificere.
Struktureret programmering. Sprog, hvor forløbet gennem programmet "tydeligt" fremgår af den syntaktiske struktur af programmet. Et forløb fremgår "tydeligt" når single-entry/single-exit er overholdt "Entry" if (per.hoejde > 1.80) printf(”per er heoj\n”); else printf(”per er lav\n”); "Exit"
If if (a==2) {b=2;} else {b=1;} moveq.l #2,d2 cmp.l -4(a6),d2 jbne .L2 moveq.l #2,d2 move.l d2,-8(a6) jbra .L3 .L2: moveq.l #1,d2 move.l d2,-8(a6) .L3:
Dangling else if (a) if (b) c=1; else c=2; er det: if (a) if (b) c=1; else c=2; eller: if (a) { if (b) c=1; else c=2; }
for for (a=0; a<10; a++) {b= a;} clr.l -4(a6) .L4: moveq.l #9,d2 cmp.l -4(a6),d2 jbge .L7 jbra .L5 .L7: move.l -4(a6),-8(a6) .L6: addq.l #1,-4(a6) jbra .L4 .L5:
while while (a > 5) {--a;} .L8: moveq.l #5,d2 cmp.l -4(a6),d2 jblt .L10 jbra .L9 .L10: subq.l #1,-4(a6) jbra .L8 .L9:
switch move.l -4(a6),d0 moveq.l #1,d2 cmp.l d0,d2 jbeq .L13 moveq.l #1,d2 cmp.l d0,d2 jblt .L17 tst.l d0 jbeq .L12 jbra .L15 .L17: moveq.l #2,d2 cmp.l d0,d2 jbeq .L14 jbra .L15 .L12: moveq.l #1,d2 move.l d2,-8(a6) jbra .L11 .L13: moveq.l #2,d2 move.l d2,-8(a6) jbra .L11 .L14: moveq.l #3,d2 move.l d2,-8(a6) jbra .L11 .L15: clr.l -8(a6) .L11: switch (a) { case 0: {b= 1;} break; case 1: {b= 2;} break; case 2: {b= 3;} break; default: {b= 0;}; }
Programmeringsparadigmer. Eksempler på paradigmer: • Imperativ programmering - Declarativ programmering. • Struktueret programmering - Ustruktueret programmering. • Flow-driven programmering - Event-driven programmering. • Scalar programmering - Array programmering. • Objekt-orienteret programmering. • Logisk programmering.
Flow driven - Event driven Event driven. Flow driven. • Event driven systemer: • Grafisk user interface. • Kommandofortolkere. • Operativsystemer. • Kommunikationssystemer. • .....
Programmeringsparadigmer. Eksempler på paradigmer: • Imperativ programmering - Declarativ programmering. • Struktueret programmering - Ustruktueret programmering. • Flow-driven programmering - Event-driven programmering. • Scalar programmering - Array programmering. • Objekt-orienteret programmering. • Logisk programmering.
Objekt-orienteret programmering. • Hoved Ide’. • Software består af en samling velafgrænsede enheder med bestemte egenskaber og funktionalitet og tilstand. Disse enheder kaldes objekter. • Objekter kan samarbejde vha. at sende beskeder til andre objekter (Kalde metoder i andre objekter) og processer data.
Objekt-orienteret programmering. • Objekter er beskyttede ved hjælp af et veldefineret scope for de indeholdte data og metoder. • public, private, protected • Fordele ved OOP. • Nemmere vedligehold og genbrug af software. • Ofte nemmere at udvikle strukturen af programmet.
Objekt-orienteret programmering. • En klasse er en definition af et objekt. • Et objekt er en instans af en klasse. • En attribut er noget data i et objekt. • En metode er en funktion i et objekt. • Nedarvning er når en ny klasse dannes udfra en anden klasse og derved arver denne klasses egenskaber (Attributter og metoder).
Classediagram UML Navn Bil Motor Attributter Farve : string Årgang : int motor: Motor Effekt: float AntCyl: int 1 SætGSpjæld() ... Metoder Start() Tank op() Personbil Lastbil Type: string Nettolast : int
C++ class Bil{ string farve; int aargang; motor Moter1; public: void start(); void tankop(float liter); Bil(string,int); }; Bil::Bil(string fa,int aar) { farve= fa; aargang= aar; } class Personbil: public Bil{ string type; public: Personbil(string f, int a): Bil(f,a){}; Personbil(void): Bil("blaa",1900){}; };
C++ Personbil kadet("gul",1986); Personbil *fiatPtr= new Personbil("blaa",1965); Personbil *fordPtr= new Personbil; int *intarray = new int[10]; Personbil *bilpark= new Personbil[10];
Programmeringsparadigmer. Eksempler på paradigmer: • Imperativ programmering - Declarativ programmering. • Struktueret programmering - Ustruktueret programmering. • Flow-driven programmering - Event-driven programmering. • Scalar programmering - Array programmering. • Objekt-orienteret programmering. • Logisk programmering.
Prolog • Declarativt dvs. hvad og ikke hvordan. • Logisk dvs. regler og facts i en videnbase. Videnbase Inferensmaskine Facts Regler
Facts. Prædikat(objektliste) Fx: mand(per). alder(per,45). far(per,kaj). vejr(aalborg,april,regn). write(’En tekst’). consult(’fil.pl’). halt.
Inferensmaskinen. mand(per). Yes 2 ?- 1 ?- mand(X). X = per Yes 3 ?-
soen(X,Y) :- dreng(Y),far(X,Y);dreng(Y),mor(X,Y). Or Regler Konklusion :- betingelser Fx: soen(X,Y) :- dreng(Y),far(X,Y). soen(X,Y) :- dreng(Y),mor(X,Y). If And
Inferensmaskinen. 4 ?- soen(per,X). X = mads X = kaj X = asger X = peter No 5 ?- ; ; ; ;
Regler Beregninger: Fx: foedt(per,1960). alder(X,Y) :- foedt(X,F),Y is 2006 - F. = fak(0,1). fak(X,Y) :- X1 is X - 1, fak(X1,Z), Y is Z*X. div(X,Y,Res):- Y=\=0,Res is X/Y;Res is 0.