Programmering i C. Lektion september 2009
|
|
- Olivia Nøhr
- 4 år siden
- Visninger:
Transkript
1 Programmering i C Lektion september 2009
2 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 2 / 81 1 Introduktion og Kontrolstrukturer 2 Funktioner 3 Datatyper 4 Pointers 5 Opsummering (i dag)
3 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 3 / 81 Oversættelse Kildekode Maskinkode Fortolkning Udførsel gcc -ansi -pedantic -Wall -O -o hello hello.c./hello #include < s t d i o. h> i n t main ( void ) { / h e l l o w o r l d. c / p r i n t f ( " Hello, world! \ n " ) ; return 0;
4 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 4 / 81 en variabel er en navngiven plads i computerens lager en variabel kan indeholde en værdi af en bestemt type variables værdier kan ændres ved assignment-kommandoer variable skal erklæres før brug #include < s t d i o. h> i n t main ( void ) { / v a r i a b l e. c / i n t a, b, c ; a = 5; b = 3; c = a / b ; p r i n t f ( "%d d i v i d e r e t med %d g i v e r %d \ n ", a, b, c ) ; p r i n t f ( " Hov, hvad er nu det?\ n " ) ; return 0;
5 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 4 / 81 en variabel er en navngiven plads i computerens lager en variabel kan indeholde en værdi af en bestemt type variables værdier kan ændres ved assignment-kommandoer variable skal erklæres før brug #include < s t d i o. h> i n t main ( void ) { / v a r i a b l e 2. c / i n t a = 5, b = 3, c ; c = a / b ; p r i n t f ( "%d d i v i d e r e t med %d g i v e r %d \ n ", a, b, c ) ; p r i n t f ( " Hov, hvad er nu det?\ n " ) ; return 0;
6 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 4 / 81 en variabel er en navngiven plads i computerens lager en variabel kan indeholde en værdi af en bestemt type variables værdier kan ændres ved assignment-kommandoer variable skal erklæres før brug variable skal altid tildeles startværdier #include < s t d i o. h> i n t main ( void ) { / v a r i a b l e n o i n i t. c / i n t a, b, c ; c = a / b ; p r i n t f ( "%d d i v i d e r e t med %d g i v e r %d \ n ", a, b, c ) ; p r i n t f ( " Hov, hvad er nu det?\ n " ) ; return 0;
7 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 5 / 81 heltal reelle tal tegn strenge short float char char * int double long long double #include < s t d i o. h> i n t main ( void ) { / v a r i a b l e f l o a t. c / i n t a = 5, b = 3; double c ; c = ( double ) a / b ; p r i n t f ( "%d d i v i d e r e t med %d g i v e r %f \ n ", a, b, c ) ; p r i n t f ( " Det var bedre! \ n " ) ; return 0;
8 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 6 / 81 #include < s t d i o. h> i n t main ( void ) { / e l e f a n t. c / i n t a = 1; p r i n t f ( "%d e l e f a n t kom marcherende, \ hen ad edderkoppens f i n e spind \ n ", a ) ; while ( a <= 10) { a = a + 1; p r i n t f ( "%d e l e f a n t e r kom marcherende, \ hen ad edderkoppens f i n e spind \ n ", a ) ; return 0;
9 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 7 / 81 Udtryk: 7 x, a, b rest ved (heltals)division a + b, a b a b, a / b, a % b a < b, a <= b, a == b etc. (boolske udtryk) Prioritering: beregnes før + etc.: = 3 + (5 7) assignment/tildeling {{ c = a / b {{ expression/udtryk Associering: Operationer med samme prioritet foretages fra venstre til højre: = (10 5) 2 10 (5 2)
10 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 8 / 81 a = i + 5: udtrykket i + 5 beregnes, og a tildeles den beregnede værdi dvs. + har højere prioritet end = men i C er a = i + 5 også et udtryk! Udtrykkets værdi er ligeledes i + 5 misbrug: #include < s t d i o. h> i n t main ( void ) { / misbrug. c / i n t a, b, c ; a = b = c = 7; p r i n t f ( " a : %d, b : %d, c : %d \ n ", a, b, c ) ; a = 1 + ( b = 2 ( c = 3 ) ) ; p r i n t f ( " a : %d, b : %d, c : %d \ n ", a, b, c ) ; return 0;
11 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 9 / 81 increment-operator: skriv i++ eller ++i i stedet for i = i + 1 decrement-operator: skriv i eller i i stedet for i = i 1 men det er også et udtryk... : i = 7; a = ++i i=8, a=8 i = 7; a = i++ i=8, a=7! Hvorfor? også akkumulerende assignment-operatorer: a += 5 a = a + 5 a = 7 a = a 7 a = 4 a = a 4 a /= 3 a = a / 3 etc.
12 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 10 / 81 Udskrivning med printf : printf( kontrolstreng, parametre) kontrolstreng: almindelige tegn udskrives uændret, konverteringstegn erstattes med parametre, som er formateret i h.t. konverteringsspecifikationen printf returnerer antallet af udskrevne tegn se printf-eks.c
13 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 10 / 81 Udskrivning med printf : printf( kontrolstreng, parametre) kontrolstreng: almindelige tegn udskrives uændret, konverteringstegn erstattes med parametre, som er formateret i h.t. konverteringsspecifikationen printf returnerer antallet af udskrevne tegn se printf-eks.c Indlæsning med scanf: scanf( kontrolstreng, parametre) kontrolstreng (næsten) analog til printf, men parametrene skal være adresser på variable (pointere): &a scanf returnerer antallet af gennemførte indlæsninger se scanf-eks.c
14 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A Et større eksempel: #include < s t d i o. h> # define PI i n t main ( void ) { / c i r c l e. c / double radius ; p r i n t f ( " \ n%s \ n \ n%s ", " This program computes the area of a c i r c l e. ", " I n p u t the r a d i u s : " ) ; scanf ( "%l f ", &r a d i u s ) ; p r i n t f ( " \ n%s \ n%s%.2 f%s%.2 f%s%.2 f \ n%s%.5 f \ n \ n ", " Area = PI r a d i u s r a d ius ", " = ", PI, " ", radius, " ", radius, " = ", PI r a d i u s r a d ius ) ; return 0; 11 / 81
15 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 12 / 81 Kildekode Kildekode gcc -E Kildekode Præprocessering Oversættelse Kompilering gcc -S Assemblerkode gcc -c Assemblering Objektkode Maskinkode Udførsel Fortolkning Linkning Maskinkode Udførsel Fortolkning
16 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 13 / 81 gcc -ansi -pedantic -Wall -O -o ting ting.c Vi vil have alle advarsler som ANSI kræver Vi følger ANSI-standarden Output skal hedde ting Vi optimerer for at fange flere mulige fejl Vi vil også have en masse andre advarsler
17 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer 14 / 81 Kontrolstrukturer 13 Sekventiel kontrol 14 Logiske udtryk 15 Short circuit evaluering 16 Udvælgelse af kommandoer
18 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer 15 / 81 #include < s t d i o. h> i n t main ( void ) { / seconds. c / long i n t input, temp, h, m, s ; p r i n t f ( " Giv mig et h e l t a l! \ n " ) ; scanf ( "%l d ", &i n p u t ) ; h= i n p u t / 3600; temp= input h 3600; m= temp / 60; s= temp% 60; p r i n t f ( " \ n%l d sekunder svarer t i l \ %l d timer, %l d m i n u t t e r og %l d sekunder \ n ", input, h, m, s ) ; return 0; start gør noget gør noget gør mere slut
19 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer Udvælgelse af kommandoer: start Gentagelse af kommandoer: start gør noget gør noget ja betingelse nej nej betingelse gør eet gør andet ja gør noget gør mere gør mere slut if slut while; for 16 / 81
20 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer 17 / 81 Udvælgelse: if( logisk udtryk ) Gentagelse: while( logisk udtryk ) Logiske udtryk: x<y, x<=y, x>=y, x>y, x!=y, x==y!a, A&&B, A B, hvor A og B selv er logiske udtryk har værdien falsk (0) eller sandt (1, i de fleste(!) compilere) && har højere prioritet end brug parenteser! (Hvad er værdien af 3==5 1==1 && 1==2?... ) [oper.c]
21 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer 18 / 81 # include < s t d i o. h> i n t main ( void ) { / l i g h e d. c / i n t a, b, l i g ; p r i n t f ( " Vi sammenligner to t a l. \ n \ Output 0 betyder at de er f o r s k e l l i g e. \ n \ n \ Må jeg bede om to h e l t a l?\ n " ) ; scanf ( "%d %d ", &a, &b ) ; l i g = ( a == b ) ; p r i n t f ( " \ noutput : %d \ n ", l i g ) ; return 0;
22 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer 19 / 81 Observation: Hvis A er falsk, da er A&&B også falsk Hvis A er sandt, da er A B også sandt i udtrykket A&&B beregnes B kun hvis A er sandt og i udtrykket A B beregnes B kun hvis A er falsk Smart, men kilde til fejl
23 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer 20 / 81 # include < s t d i o. h> i n t main ( void ) { / lighed2. c / i n t a, b ; char l i g ; p r i n t f ( " Vi sammenligner to t a l. \ n \ n \ Må jeg bede om to h e l t a l?\ n " ) ; scanf ( "%d %d ", &a, &b ) ; ( a == b ) && ( l i g = ) ; ( a!= b ) && ( l i g = u ) ; p r i n t f ( "%d er %c l i g %d \ n ", a, l i g, b ) ; return 0;
24 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer 21 / 81 Udvælgelse med &&: (a == b) && (lig = ); kryptisk... Udvælgelse med if: if (a== b) lig = ; det var bedre! ja lig= a==b nej
25 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer 21 / 81 Udvælgelse med &&: (a == b) && (lig = ); kryptisk... Udvælgelse med if: if (a== b) lig = ; det var bedre! if (a==b) lig = ; else lig = u ; ja lig= a==b nej lig= u i f ( u dtryk ) kommando1 ; else kommando2 ; først beregnes udtryk hvis udtryk er sandt, udføres kommando1 hvis udtryk er falsk, udføres kommando2
26 Sekventiel kontrol Logiske udtryk Short circuit evaluering Udvælgelse af kommandoer # include < s t d i o. h> i n t main ( void ) { / lighed3. c / i n t a, b ; char l i g ; p r i n t f ( " Vi sammenligner to t a l. \ n \ n \ Må jeg bede om to h e l t a l?\ n " ) ; scanf ( "%d %d ", &a, &b ) ; i f ( a== b ) { l i g = ; else { l i g = u ; p r i n t f ( "%d er %c l i g %d \ n ", a, l i g, b ) ; return 0; 22 / 81
27 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme 23 / 81 Kontrolstrukturer, Kommandoblokke; scope 18 Udvælgelse med if, Udvælgelse med switch 20 Gentagelse med while 21 Gentagelse med for 22 Opsummering
28 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme 24 / 81 Problem: Vil gerne udvælge mellem to blokke af kommandoer Løsning: Sammensætning af kommandoer: i f ( a== b ) { c= 1; d= 2; else { c= 7; d= 5; blok blok ja kommando kommando betingelse nej kommando kommando
29 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme 25 / 81 blok = antal kommandoer omkranset af { og en blok behandles som én kommando blokke kan indlejres i hinanden
30 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme 25 / 81 blok = antal kommandoer omkranset af { og en blok behandles som én kommando blokke kan indlejres i hinanden i starten af en blok kan variabelerklæringer forekomme!! disse variable er lokale for blokken (deres scope er blokken)
31 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme blok = antal kommandoer omkranset af { og en blok behandles som én kommando blokke kan indlejres i hinanden i starten af en blok kan variabelerklæringer forekomme!! disse variable er lokale for blokken (deres scope er blokken) #include < s t d i o. h> i n t main ( void ) { / blok. c / i n t a=5; p r i n t f ( " Før : a==%d \ n ", a ) ; { / en blok / i n t a=7; / d e k l a r a t i o n / p r i n t f ( " I : a==%d \ n ", a ) ; p r i n t f ( " E f t e r : a==%d \ n ", a ) ; #include < s t d i o. h> i n t main ( void ) { / blok2. c / i n t a=5; p r i n t f ( " Før : a==%d \ n ", a ) ; { / en blok / a=7; / assignment! / p r i n t f ( " I : a==%d \ n ", a ) ; p r i n t f ( " E f t e r : a==%d \ n ", a ) ; return 0; return 0; 25 / 81
32 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme en else knytter sig altid til den inderste if brug kommandoblokke for at undgå tvivl! 26 / 81 Dangling else -problemet: i f ( a == 1) i f ( b == 2) p r i n t f ( "A" ) ; else p r i n t f ( "B" ) ; i f ( a == 1) { i f ( b == 2) { p r i n t f ( "A" ) ; else { p r i n t f ( "B" ) ; ja a==1 nej ja a==1 nej ja b==2 nej ja b==2 nej printf("b") printf("a") printf("b") printf("a")
33 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme Hvad hvis der er flere end to valgmuligheder? Brug switch! #include < s t d i o. h> i n t main ( void ) { / switch. c / i n t a ; char dyr ; p r i n t f ( " Giv mig et h e l t a l! \ n " ) ; scanf ( "%d ", &a ) ; switch ( a ) { case 1: dyr= " hest " ; break ; case 2: dyr= " g r i s " ; break ; case 3: dyr= " abe " ; break ; default : dyr= " ko " ; break ; p r i n t f ( " \ ndu er en %s! \ n ", dyr ) ; return 0; 27 / 81
34 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme switch ( u d t r y k ) { case const1 : command1 ; case const2 : command1 ;... case constn : commandn ; default : command ; først beregnes udtryk. Resultatet skal være et heltal eller noget der ligner (f.x. en char) udtryk == const i command i udføres. Herefter udføres command i+1 osv. udtryk!= const i for alle i default-kommandoen udføres, og herefter de efterfølgende! Hvis der ingen default er, gøres ingenting. man ønsker næsten altid at afslutte et case med en break-kommando; så springes de efterfølgende kommandoer over. 28 / 81
35 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme while ( udtryk ) kommando ; først beregnes udtryk hvis udtryk er sandt, udføres kommando, og løkken startes forfra hvis udtryk er falsk, afsluttes løkken nej udtryk ja kommando #include < s t d i o. h> i n t main ( void ) { / while. c / i n t h = 0; while ( h!= 1234) { p r i n t f ( " I n d t a s t det hemmelige h e l t a l : " ) ; scanf ( "%d ", &h ) ; p r i n t f ( " \ nhurra! \ n " ) ; return 0; 29 / 81
36 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme for ( i n i t ; c o n d i t i o n ; update ) kommando ; (den mest generelle løkkekonstruktion i C) 1 først udføres init 2 så beregnes condition, og hvis den er falsk, afbrydes 3 kommando udføres 4 update udføres, og vi springer tilbage til trin 2. #include < s t d i o. h> i n t main ( void ) { / f o r. c / i n t i = 1; p r i n t f ( "%d e l e f a n t \ n ", i ) ; for ( i = 2; i <=10; i ++) { p r i n t f ( "%d e l e f a n t e r \ n ", i ) ; return 0; 30 / 81
37 Kommandoblokke; scope Udvælgelse med if, 2. Udvælgelse med switch Gentagelse med while Gentagelse med for Opsumme 31 / 81 Udvælgelse If Switch Gentagelse While For Struktur Komando blokke
38 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 32 / 81 Funktioner 23 Funktioner 24 Eksempel 25 Parametre 26 Rekursive funktioner 27 Parametre til main()
39 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 33 / 81 at opdele et større program i mindre enheder funktioner abstraktion! top-down-programmering type navn ( parametre ) { d e k l a r a t i o n e r ; kommandoer ;
40 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 34 / 81 Et program der indlæser et tal; hvis tallet er primtal udskrives PRIMA, ellers udskrives næste primtal: #include < s t d i o. h> i n t main ( void ) { / prim. c / i n t t a l ; t a l = i n d l a e s ( ) ; / / et f u n k t i o n s k a l d i f ( prim ( t a l ) ) { / / et f u n k t i o n s k a l d p r i n t f ( "PRIMA \ n " ) ; else { t a l = nextprime ( t a l ) ; / / endnu et p r i n t f ( " Next prime i s %d \ n ", t a l ) ; return 0;
41 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 35 / 81 At indlæse et heltal: / en f u n k t i o n s d e f i n i t i o n / i n t i n d l a e s ( void ) { i n t t a l ; p r i n t f ( " \ nenter a number : " ) ; scanf ( "%d ", & t a l ) ; return t a l ;
42 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 36 / 81 Find ud af om et heltal er et primtal (Er det den bedste måde at gøre det på?): i n t prim ( i n t t a l ) { i n t isprime= 1; i n t i ; for ( i = 2; i <= t a l 1; i ++) { i f ( t a l % i == 0) { isprime = 0; break ; return isprime ; break: Springer ud af en switch, while, do eller for
43 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 37 / 81 Returner næste primtal: i n t nextprime ( i n t t a l ) { t a l ++; while (! prim ( t a l ) ) { t a l ++; return t a l ; Bemærk genbrug af prim-funktionen.
44 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() Funktioner skal erklæres før de bliver brugt: #include < s t d i o. h> i n t i n d l a e s ( void ) ; i n t prim ( i n t t a l ) ; i n t nextprime ( i n t t a l ) ; i n t main ( void ) { / prim. c / i n t t a l ; t a l = i n d l a e s ( ) ; / / et f u n k t i o n s k a l d i f ( prim ( t a l ) ) { / / et f u n k t i o n s k a l d p r i n t f ( "PRIMA \ n " ) ; else { t a l = nextprime ( t a l ) ; / / endnu et p r i n t f ( " Next prime i s %d \ n ", t a l ) ; return 0; 38 / 81
45 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 39 / 81 Hele programmet: prim.c
46 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 40 / 81 type navn ( parametre ) { d e k l a r a t i o n e r ; kommandoer ; En parameter i en funktionsdefinition kaldes en formel parameter. En formel parameter er et variabelnavn. En parameter i et funktionskald kaldes en aktuel parameter. En aktuel parameter er et udtryk der beregnes ved funktionskaldet.
47 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 40 / 81 type navn ( parametre ) { d e k l a r a t i o n e r ; kommandoer ; Antallet og typer af aktuelle parametre i kaldet skal modsvare antallet og typer af formelle parametre i definitionen. definition: i n t days_per_month ( i n t m, i n t y ) { kald: dmax= days_per_month ( m, y ) ;
48 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 40 / 81 type navn ( parametre ) { d e k l a r a t i o n e r ; kommandoer ; Antallet og typer af aktuelle parametre i kaldet skal modsvare antallet og typer af formelle parametre i definitionen. I C overføres funktionsparametre som værdiparametre. Dvs. værdien af parametren kopieres til brug i funktionen, ændringer af værdien har ingen indvirkning på programmet udenfor funktionen, når funktionskaldet ender, ophører værdien med at eksistere.
49 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 40 / 81 type navn ( parametre ) { d e k l a r a t i o n e r ; kommandoer ; Antallet og typer af aktuelle parametre i kaldet skal modsvare antallet og typer af formelle parametre i definitionen. I C overføres funktionsparametre som værdiparametre. Dvs. værdien af parametren kopieres til brug i funktionen, ændringer af værdien har ingen indvirkning på programmet udenfor funktionen, når funktionskaldet ender, ophører værdien med at eksistere. Dette kan omgåes ved brug af pointers
50 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 40 / 81 type navn ( parametre ) { d e k l a r a t i o n e r ; kommandoer ; Antallet og typer af aktuelle parametre i kaldet skal modsvare antallet og typer af formelle parametre i definitionen. I C overføres funktionsparametre som værdiparametre. Dvs. værdien af parametren kopieres til brug i funktionen, ændringer af værdien har ingen indvirkning på programmet udenfor funktionen, når funktionskaldet ender, ophører værdien med at eksistere. Her er den værdi der kopieres adressen på et sted i hukommelsen
51 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 41 / 81 rekursiv funktion = funktion der kalder sig selv Eksempel: fakultetsfunktionen: n! = n = n (n 1)! unsigned long f a k u l t e t ( unsigned long n ) { i f ( n == 1) { return 1; else { return n f a k u l t e t ( n 1 ) ; [fak.c] smart og kompakt måde at kode på (men nogle gange ikke særlig hurtig afvikling)
52 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 42 / 81 Eksempel: Fibonaccital: f 1 = 1 f 2 = 1 f n = f n 1 + f n 2 1, 1, 2, 3, 5, 8, 13, 21, 34,... unsigned long f i b o ( i n t n ) { switch ( n ) { case 1: case 2: return 1; break ; default : return f i b o ( n 1) + f i b o ( n 2 ) ; [fibo.c]
53 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 43 / 81 i n t main ( void ) { en funktion! Generel form: i n t main ( i n t argc, char argv ) { Parametrene tages fra kommandolinien. argc er antallet af argumenter argv er et array af strenge med alle argumenter; argv[0] er programnavnet Eksempel:./argtest 15 hest argc == 3 argv[0] == "argtest" argv[1] == "15" argv[2] == "hest" [argtest.c]
54 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() i f ( argc == 1) { p r i n t f ( " E r r o r : %s needs one argument \ n ", myself ) ; else { / convert argv [ 1 ] to i n t / t a l = s t r t o l ( argv [ 1 ], &endptr, 1 0 ) ; p r i n t f ( " \ nthe f a c t o r i a l of %l u i s %l u \ n ", t a l, f a k u l t e t ( t a l ) ) ; return 0; 44 / 81 Eksempel: Et fakultetsprogram der tager tallet som input på kommandolinien: #include < s t d i o. h> #include < s t d l i b. h> unsigned long f a k u l t e t ( unsigned long n ) ; i n t main ( i n t argc, char argv ) { / fak2. c / char myself= argv [ 0 ] ; unsigned long t a l ; char endptr ; / needed f o r s t r t o l /
55 Funktioner Eksempel Parametre Rekursive funktioner Parametre til main() 45 / 81 cstdlib/strtol/
56 Typer Typekonvertering Arrays 46 / 81 Datatyper 28 Typer 29 Typekonvertering 30 Arrays
57 Typer Typekonvertering Arrays 47 / 81 C er et programmeringssprog med statisk, svag typning: hver variabel har en bestemt type typen skal deklareres explicit og kan ikke ændres ved kompilering efterses om der er type-fejl mulighed for implicitte typekonverteringer også mulighed for eksplicitte typekonverteringer. En variabels type bestemmer hvilke værdier den kan antage i hvilke sammenhænge den kan bruges
58 Typer Typekonvertering Arrays 48 / 81 Typer i C: void, den tomme type skalære typer: aritmetiske typer: heltalstyper: short, int, long, char!; enum kommatals-typer: float, double, long double pointer-typer sammensatte typer: array-typer struct [typer.c]
59 Typer Typekonvertering Arrays 49 / 81 Boolean values
60 Typer Typekonvertering Arrays #include < s t d i o. h> typedef struct { unsigned i n t a l d e r ; i n t penge ; char navn ; Person ; i n t main ( void ) { / s t r u c t. c / Person p1 ; p1. a l d e r = 30; p1. penge = 300; p1. navn = " U l r i k Nyman" ; p r i n t f ( "%s er %d år og har %d penge ", p1. navn, p1. penge, p1. penge ) ; return ( 0 ) ; 50 / 81
61 Typer Typekonvertering Arrays 51 / 81 Type Bytes Bits Range short int ,768 -> +32,767 (32kb) unsigned short int > +65,535 (64Kb) unsigned int > +4,294,967,295 ( 4Gb) int ,147,483,648 -> +2,147,483,647 ( 2Gb) long int ,147,483,648 -> +2,147,483,647 ( 2Gb) signed char > +127 unsigned char > +255 float 4 32 double 8 64 long double 12 96
62 Typer Typekonvertering Arrays 52 / 81 implicitte konverteringer: integral promotion: short og char konverteres til int widening: en værdi konverteres til en mere præcis type narrowing: en værdi konverteres til en mindre præcis type. Information går tabt! [conversions.c] eksplicitte konverteringer: ved brug af casts for ( i = 2; i <= ( i n t ) s q r t ( x ) ; i ++) {
63 Typer Typekonvertering Arrays Et array er en tabel af variable af samme type der kan tilgås via deres indeks. i n t t a l [ 3 ] ; t a l [ 0 ] = 5 ; t a l [ 1 ] = 4 ; t a l [ 2 ] = t a l [ 0 ] + t a l [ 1 ] ; et array skal deklareres med angivelse af type, og helst også størrelse: type a[n] laveste indeks er 0, højeste er N 1 indgangene lagres umiddelbart efter hinanden 53 / 81
64 Typer Typekonvertering Arrays 54 / 81 Pas på! C ser ikke efter om et indeks man forsøger at tilgå ligger indenfor arrayets grænser: #include < s t d i o. h> i n t main ( void ) { / array bad. c / i n t a [ 3 ] ; / Menigsløst r e s u l t a t / p r i n t f ( "%d \ n ", a [ 3 ] ) ; / FARLIGT! / / a [ 3 ] = 17; / return 0; Programmet skriver i et hukommelsesområde det ikke har reserveret! I bedste tilfælde er det kun programmet der crasher...
65 Scope Storage class Memorisering 55 / 81 Scope 31 Scope 32 Storage class 33 Memorisering
66 Scope Storage class Memorisering Scope ( virkefelt ) af en variabel er de dele af programmet hvor variablen er kendt og tilgængelig. I C: Scope af en variabel er den blok hvori den er erklæret Variable i en blok skygger for variable udenfor der har samme navn huller i scope! #include < s t d i o. h> i n t main ( void ) { / blok. c / i n t a=5; p r i n t f ( " Før : a==%d \ n ", a ) ; Eksempel fra lektion 1: { / en blok / i n t a=7; / d e k l a r a t i o n / p r i n t f ( " I : a==%d \ n ", a ) ; p r i n t f ( " E f t e r : a==%d \ n ", a ) ; return 0; 56 / 81
67 Scope Storage class Memorisering Storage class af variable medvirker til at bestemme deres scope. auto (default): lokal i en blok static: lokal i en blok, men bibeholder sin værdi fra én aktivering af blokken til den næste. Eksempel: #include < s t d i o. h> i n t nextsquare ( void ) { s t a t i c i n t s= 0; s ++; return s s ; i n t main ( void ) { i n t i ; for ( i = 1; i <= 10; i ++) { p r i n t f ( "%d \ n ", nextsquare ( ) ) ; return 0; 57 / 81
68 Scope Storage class Memorisering 58 / 81 Tilbage til Fibonaccital: f 1 = 1 f 2 = 1 f n = f n 1 + f n 2 unsigned long f i b o ( i n t n ) { switch ( n ) { case 1: case 2: return 1; break ; default : return f i b o ( n 1) + f i b o ( n 2 ) ; Problem: kører meget langsomt pga. utallige genberegninger Løsning: Husk tidligere beregninger vha. et static array ( dynamisk programmering )
69 Scope Storage class Memorisering 59 / 81 Memoriseret udgave af fibo: unsigned long f i b o ( i n t n ) { unsigned long r e s u l t ; s t a t i c unsigned long memo[max] ; / t h i s gets i n i t i a l i s e d to 0! / switch ( n ) { case 1: case 2: return 1; break ; default : r e s u l t = memo[ n ] ; i f ( r e s u l t == 0) { / need to compute / r e s u l t = f i b o ( n 1) + f i b o ( n 2 ) ; memo[ n ] = r e s u l t ; return r e s u l t ; [fibo2.c]
70 Udseende Kommentarer Symbolske konstanter 60 / 81 Programmeringsstil 34 Udseende 35 Kommentarer 36 Symbolske konstanter
71 Udseende Kommentarer Symbolske konstanter 61 / 81 C er et programmeringssprog i fri format, dvs. stor frihed mht. formatering: mellemrum, tabs og linieskift kan indsættes (og udelades) næsten overalt. eget ansvar at koden er letlæselig! indentér! brug mellemrum omkring operatorer sæt afsluttende på deres egen linie inddel koden i logiske enheder vha. tomme linier en masse andre (og til dels modsigende!) konventioner find din egen stil!
72 Udseende Kommentarer Symbolske konstanter 62 / 81 Sætning: Kode er sværere at læse end at skrive. brug mange kommentarer. / en kommentar der f y l d e r 2 l i n i e r / (Det er ikke kun andre der skal kunne forstå din kode; måske er det dig selv der 4 uger efter forsøger at finde ud af hvad det her program gør.) kommentér hver enkelt funktion indsæt programmets navn i en kommentar skriv en kommentar om hvad det her program gør (medmindre programmet selv fortæller det) hvis en kodelinie tog specielt lang tid at skrive, er den nok også svær at forstå. Skriv en kommentar. fortæl hvad variablene betyder
73 Udseende Kommentarer Symbolske konstanter 63 / 81 Hvis der er en konstant i dit program der ikke er lig 0 eller 1, vil du sandsynligvis lave den værdi om senere. definér konstanten symbolsk vha. præprocessoren: # define SVAR 42 og referér til det symbolske navn i koden: p r i n t f ( " The answer i s %d ", SVAR ) ; Præprocessoren erstatter, som det første skridt, inden kompilering, alle forekomster af SVAR i koden med 42, undtagen hvis SVAR står som del af en streng.
74 Pointers Referenceparametre 64 / 81 Pointers 37 Pointers 38 Referenceparametre
75 Pointers Referenceparametre 65 / 81 Husk: En variabel er en navngiven plads i computerens lager. En pointer er en pegepind der peger på denne plads.
76 Pointers Referenceparametre 65 / 81 Husk: En variabel er en navngiven plads i computerens lager. En pointer er en pegepind der peger på denne plads. Declaring a pointer: i n t ptr_example ; / / Declares a p o i n t e r to an i n t.
77 Pointers Referenceparametre 65 / 81 Husk: En variabel er en navngiven plads i computerens lager. En pointer er en pegepind der peger på denne plads. Declaring a pointer: i n t ptr_example ; / / Declares a p o i n t e r to an i n t. Getting the address of a variable: i n t my_int = 3; ptr_example = &my_int. / / makes ptr_example p o i n t to / / the address of my_int.
78 Pointers Referenceparametre 65 / 81 Husk: En variabel er en navngiven plads i computerens lager. En pointer er en pegepind der peger på denne plads. Declaring a pointer: i n t ptr_example ; / / Declares a p o i n t e r to an i n t. Getting the address of a variable: i n t my_int = 3; ptr_example = &my_int. / / makes ptr_example p o i n t to / / the address of my_int. Dereferencing: ptr_example = 2; / / Sets the value of the data / / pointed to by ptr_example.
79 Pointers Referenceparametre 66 / 81 &j betegner adressen af variablen j pti betegner den værdi, som pti peger på &i er det samme som i (og & pti er det samme som pti) = dereference, & = reference
80 Pointers Referenceparametre 67 / 81 Eksempel: i n t ptr_example ; / / Declares a p o i n t e r to an i n t. i n t ptr_example ; / / Declares a p o i n t e r to an i n t. i n t ptr2, p t r 3 ; i n t main ( void ) { p t r 3 = 5; p t r 2 = 5; / / gives warning
81 Pointers Referenceparametre 68 / 81 *s should be sticky. Eksempel: i n t ptr_example ; / / Declares a p o i n t e r to an i n t. i n t ptr_example ; / / Declares a p o i n t e r to an i n t. i n t ptr2, p t r 3 ; i n t main ( void ) { p t r 3 = 5; p t r 2 = ( i n t ) 5; / / using a cast / / s t i l l not a good idea.
82 Pointers Referenceparametre 69 / 81 &j betegner adressen af variablen j pti betegner den værdi, som pti peger på &i er det samme som i (og & pti er det samme som pti) = dereference, & = reference
83 Pointers Referenceparametre 70 / 81 Problem: Funktioner i C kan ikke ændre på deres parametre (og give ændringer tilbage til hovedprogrammet) værdiparametre.
84 Pointers Referenceparametre 70 / 81 Problem: Funktioner i C kan ikke ændre på deres parametre (og give ændringer tilbage til hovedprogrammet) værdiparametre. Løsning: Kald funktionen med pointers som parametre:
85 Pointers Referenceparametre 70 / 81 Problem: Funktioner i C kan ikke ændre på deres parametre (og give ændringer tilbage til hovedprogrammet) værdiparametre. Løsning: Kald funktionen med pointers som parametre: Eksempel: en funktion der bytter om på to heltal: void swap ( i n t x, i n t y ) { i n t tmp ; tmp = x ; x = y ; y = tmp ; Bemærk at swap ikke laver om på de to pointers; kun på de værdier de peger på! [swap.c]
86 Pointers Referenceparametre 71 / 81 Eksempel: en funktion der bytter om på to heltal: i n t main ( void ) { i n t a = 3, b = 7; p r i n t f ( " Before : %d %d \ n ", a, b ) ; swap(&a, &b ) ; p r i n t f ( " A f t e r : %d %d \ n ", a, b ) ; return 0; void swap ( i n t x, i n t y ) { i n t tmp ; tmp = x ; x = y ; y = tmp ;
87 Arrays Arrays og pointere Eksempel Out of bounds 72 / 81 Arrays 39 Arrays 40 Arrays og pointere 41 Eksempel 42 Out of bounds
88 Arrays Arrays og pointere Eksempel Out of bounds Et array er en tabel af variable af samme type der kan tilgås via deres indeks. i n t t a l [ 3 ] ; t a l [ 0 ] = 5 ; t a l [ 1 ] = 4 ; t a l [ 2 ] = t a l [ 0 ] + t a l [ 1 ] ; et array skal deklareres med angivelse af type, og helst også størrelse: type a[n] laveste indeks er 0, højeste er N 1 indgangene lagres umiddelbart efter hinanden &a[k] == &a[0] + k sizeof(type) 73 / 81
89 Arrays Arrays og pointere Eksempel Out of bounds 74 / 81 I C er et array det samme som en konstant pointer til dets første indgang: #include < s t d i o. h> i n t main ( void ) { / array pt. c / i n t a [ 3 ], i ; a = 5; ( a + 1) = 4; ( a + 2) = a + ( a + 1 ) ; for ( i = 0; i < 3; i ++) { p r i n t f ( "%d : %d \ n ", i, a [ i ] ) ; return 0;
90 Arrays Arrays og pointere Eksempel Out of bounds #include < s t d i o. h> / array pt 2.c / i n t main ( void ) { i n t a [ 5 ] = { 1, 2, 3, 4, 5 ; i n t pta, i ; pta = a ; / or, pta= &a [ 0 ] ; / pta = 4; pta ++; pta = ( pta 1) 2; pta += 3; ( pta )++; p r i n t f ( " index : %d \ n ", pta a ) ; a pta for ( i = 0; i < 5; i ++) { p r i n t f ( " a[%d ] : %d \ n ", i, a [ i ] ) ; return 0; 75 / 81
91 Arrays Arrays og pointere Eksempel Out of bounds #include < s t d i o. h> / array pt 2.c / i n t main ( void ) { i n t a [ 5 ] = { 1, 2, 3, 4, 5 ; i n t pta, i ; pta = a ; / or, pta= &a [ 0 ] ; / pta = 4; pta ++; pta = ( pta 1) 2; pta += 3; ( pta )++; p r i n t f ( " index : %d \ n ", pta a ) ; a pta for ( i = 0; i < 5; i ++) { p r i n t f ( " a[%d ] : %d \ n ", i, a [ i ] ) ; return 0; 75 / 81
92 Arrays Arrays og pointere Eksempel Out of bounds #include < s t d i o. h> / array pt 2.c / i n t main ( void ) { i n t a [ 5 ] = { 1, 2, 3, 4, 5 ; i n t pta, i ; pta = a ; / or, pta= &a [ 0 ] ; / pta = 4; pta ++; pta = ( pta 1) 2; pta += 3; ( pta )++; p r i n t f ( " index : %d \ n ", pta a ) ; a pta for ( i = 0; i < 5; i ++) { p r i n t f ( " a[%d ] : %d \ n ", i, a [ i ] ) ; return 0; 75 / 81
93 Arrays Arrays og pointere Eksempel Out of bounds #include < s t d i o. h> / array pt 2.c / i n t main ( void ) { i n t a [ 5 ] = { 1, 2, 3, 4, 5 ; i n t pta, i ; pta = a ; / or, pta= &a [ 0 ] ; / pta = 4; pta ++; pta = ( pta 1) 2; pta += 3; ( pta )++; p r i n t f ( " index : %d \ n ", pta a ) ; a pta for ( i = 0; i < 5; i ++) { p r i n t f ( " a[%d ] : %d \ n ", i, a [ i ] ) ; return 0; 75 / 81
94 Arrays Arrays og pointere Eksempel Out of bounds #include < s t d i o. h> / array pt 2.c / i n t main ( void ) { i n t a [ 5 ] = { 1, 2, 3, 4, 5 ; i n t pta, i ; pta = a ; / or, pta= &a [ 0 ] ; / pta = 4; pta ++; pta = ( pta 1) 2; pta += 3; ( pta )++; p r i n t f ( " index : %d \ n ", pta a ) ; a pta for ( i = 0; i < 5; i ++) { p r i n t f ( " a[%d ] : %d \ n ", i, a [ i ] ) ; return 0; 75 / 81
95 Arrays Arrays og pointere Eksempel Out of bounds #include < s t d i o. h> / array pt 2.c / i n t main ( void ) { i n t a [ 5 ] = { 1, 2, 3, 4, 5 ; i n t pta, i ; pta = a ; / or, pta= &a [ 0 ] ; / pta = 4; pta ++; pta = ( pta 1) 2; pta += 3; ( pta )++; p r i n t f ( " index : %d \ n ", pta a ) ; a pta for ( i = 0; i < 5; i ++) { p r i n t f ( " a[%d ] : %d \ n ", i, a [ i ] ) ; return 0; 75 / 81
96 Arrays Arrays og pointere Eksempel Out of bounds #include < s t d i o. h> / array pt 2.c / i n t main ( void ) { i n t a [ 5 ] = { 1, 2, 3, 4, 5 ; i n t pta, i ; pta = a ; / or, pta= &a [ 0 ] ; / pta = 4; pta ++; pta = ( pta 1) 2; pta += 3; ( pta )++; p r i n t f ( " index : %d \ n ", pta a ) ; a pta for ( i = 0; i < 5; i ++) { p r i n t f ( " a[%d ] : %d \ n ", i, a [ i ] ) ; return 0; 75 / 81
97 Arrays Arrays og pointere Eksempel Out of bounds 76 / 81 Pas på! C ser ikke efter om et indeks man forsøger at tilgå ligger indenfor arrayets grænser: #include < s t d i o. h> i n t main ( void ) { / array bad. c / i n t a [ 3 ] ; / Menigsløst r e s u l t a t / p r i n t f ( "%d \ n ", a [ 3 ] ) ; / FARLIGT! / / a [ 3 ] = 17; / return 0; Programmet skriver i et hukommelsesområde det ikke har reserveret! I bedste tilfælde er det kun programmet der crasher...
98 Strenge Eksempel Noter string.h 77 / 81 Strenge 43 Strenge 44 Eksempel 45 Noter 46 string.h
99 Strenge Eksempel Noter string.h 78 / 81 En streng i C er et nulafsluttet array af chars: char s [ ] = { A, a, l, b, o, r, g, \0 ; eller tilsvarende, en pointer til char: char s ; s= " Aalborg " ; Følgende initialisering går også: char s [ ] = " Aalborg " ; Men som assignment er den gal: char s [ ] ; s= " Aalborg " ; [streng-init.c]
100 Strenge Eksempel Noter string.h p r i n t f ( "%s \ n ", s ) ; return 0; 79 / 81 Lav alle forekomster af a om til i : #include < s t d i o. h> i n t main ( void ) { / abrakadabra. c / char s [ ] = " abrakadabra " ; / v i r k e r / / char s= " abrakadabra " ; / / v i r k e r IKKE / char p ; p r i n t f ( "%s \ n ", s ) ; p = s ; while ( p!= \0 ) { i f ( p == a ) { p= i ; p++;
101 Strenge Eksempel Noter string.h 80 / 81 en streng kan defineres som et array af char eller en pointer til char begge er nulafsluttet: sidste indgang er \0 ( sentinel ) i strenge der er defineret som et array, kan tegnene ændres i strenge der er defineret som en pointer, kan tegnene ikke ændres tegnet a er forskellig fra strengen a : a = 97 a =[ a, \0 ] den tomme streng: =[ \0 ]
102 Strenge Eksempel Noter string.h Biblioteket string.h leverer funktioner til håndtering af strenge: int strcmp( char s, char t) sammenligner s og t i leksikografisk orden < 0: s kommer før t = 0: s er lig med t > 0: s kommer efter t unsigned int strlen( char s) returnerer antallet af tegn i s (minus \0 ) char strcpy( char s, char t) kopierer t til s returnerer en pointer til s Pas på: Hvis der ikke er plads nok i s, går det galt! char strcat( char s, char t) tilføjer t til slutningen af s returnerer en pointer til s samme kommentar som for strcpy og en del flere [streng-eks.c] 81 / 81
Programmering i C. Lektion september 2009
Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form
Læs mereProgrammering i C. Lektion september 2009
Programmering i C Lektion 4 18. september 2009 Pointers Referenceparametre 2 / 19 Pointers 1 Pointers 2 Referenceparametre Pointers Referenceparametre 3 / 19 Husk: En variabel er en navngiven plads i computerens
Læs mereProgrammering i C. Lektion 4. 5. december 2008
Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )
Læs mereProgrammering i C. Lektion oktober 2008
Programmering i C Lektion 2 20 oktober 2008 Historie Processen At kompilere 2 / 23 Fra sidst 1 Historie 2 Processen 3 At kompilere Historie Processen At kompilere 3 / 23 ALGOL 60 1963 CPL 1966 BCPL 1969
Læs mereProgrammering i C. Lektion september 2009
Programmering i C Lektion 2 14. september 2009 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 2 / 27 Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler
Læs mereProgrammering i C. Lektion november 2008
Programmering i C Lektion 3 18. november 2008 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler Kontrolstrukturer Udvælgelse Gentagelse
Læs merePointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable:
Programmering i C Lektion 5 11. december 2008 Pointers 1 Pointers 2 Referenceparametre 2 / 23 Husk: En variabel er en navngiven plads i computerens lager. En pointer er en pegepind der peger på denne plads.
Læs mereProgrammering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale
Programmering i C Lektion 1 16. september 2008 Målgruppe Indhold Form Materiale Kursusintroduktion 1 Målgruppe 2 Indhold 3 Form 4 Materiale 2 / 21 Målgruppe Indhold Form Materiale Folk der har styr på
Læs mereEksempel: Skat i år 2000
Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)
Læs mere1. Variable og assignment
1. Variable og assignment Dette er starten af det faglige indhold i første lektion af 'Programmering i C'. Før dette følger et antal mere praktiske slides, som vi ikke har medtaget i denne 'tematiske udgave'
Læs mereProgrammering i C. Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet. Sammendrag
Programmering i C Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet Sammendrag Dette er et undervisningsmateriale om introducerende programmering i et imperativt sprog. Mere konkret er det et
Læs mereSproget Rascal (v. 2)
Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik
Læs mereSproget Limba. Til brug i G1 og K1. Dat1E 2003
Sproget Limba Til brug i G1 og K1 Dat1E 2003 Abstract Limba er et simpelt imperativt sprog med hoballokerede tupler. Dette dokument beskriver uformelt Limbas syntaks og semantik samt en fortolker for Limba,
Læs mereProgrammering i C Intro og grundlæggende C 5. marts 2007
Programmering i C Intro og grundlæggende C 5. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan for kurset Ma. 5/3: Ma. 19/3: Ma. 2/4: To. 12/4: Formål, intro, grundlæggende Videre, sprogkonstruktioner
Læs mereLRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) int wmid, wmevent; PAINTSTRUCT Introduktion ps; til HDC hdc; programmering med switch (message) case WM_COMMAND: wmid = LOWORD(wParam);
Læs mereStudiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Studiepraktik Thomas Bøgholm boegholm@cs.aau.dk Mikkel Hansen mhan@cs.aau.dk Jacob Elefsen jelefs12@student.aau.dk 1 Studiepraktik -- program Program onsdag 10.00 10.15 Registrering af fremmøde og gennemgang
Læs merePython programmering. Per Tøfting. MacFest
Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer
Læs mereIntroduktion til C programmering
Introduktion til C programmering Rasmus Erik Voel Jensen Uge 17 voel@math.ku.dk Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler
Læs mereProgrammering i C Videre med C (2 af 4) 19. marts 2007
Programmering i C Videre med C (2 af 4) 19. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Brush-up fra sidst Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner
Læs mereSproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract
Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget
Læs mereNoter til C# Programmering Selektion
Noter til C# Programmering Selektion Sætninger Alle sætninger i C# slutter med et semikolon. En sætning kontrollerer sekvensen i programafviklingen, evaluerer et udtryk eller gør ingenting Blanktegn Mellemrum,
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4
DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens
Læs mereForelæsning Uge 4 Mandag
Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde
Læs mereProgrammering for begyndere Lektion 2. Opsamling mm
Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger
Læs mereKursusarbejde 3 Grundlæggende Programmering
Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:
Læs mereKursus 02199: Programmering. Kontrol af programudførelsen. afsnit 3.1-3.5. if (indkomst > 267000) topskat = (indkomst-267000) * 0.
Kursus 02199: Programmering afsnit 3.1-3.5 Anne Haxthausen IMM, DTU 1. Kontrol af programudførn (afsnit 3.1) 2. Valg-sætninger (if og switch) (afsnit 3.2 og 3.3) 3. Bloksætninger (afsnit 3.2) 4. Logiske
Læs mere//--------------------------------- Definition af porte og funktioner -------------------------
Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Læs merePHP 3 UGERS FORLØB PHP, MYSQL & SQL
PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at
Læs mereLØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4
LØKKER METODER C S HISTORIE Grundlæggende programmering Lektion 4 1 LEKTIER UML struktur diagrammer om biler 2 OPERATORER Syntaks til at udføre forskellige beregninger og handlinger Booleans og hvorfor
Læs mereGrundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering
Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af
Læs mereStart på Arduino og programmering
Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget
Læs mereNavn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003
Side 1 af 8 Dato: 14-05-2003 Til Sigurd Som aftalt vil jeg her fremsende vores program til vores 80C535 kit og display. Det gik jo ud på at vi skulle starte med at få den til at intialiserer displayet,
Læs mereFølgende definition fortæller i bund og grund, at en type er en mængde af værdier. Så simpelt er det faktisk.
17. Typer I lektionen, som starter med dette kapitel, studerer vi typer i C. Vi har allerede ved flere lejligheder set på typer. I denne lektion vil vi dog være mere systematiske end vi hidtil har været.
Læs mereForelæsning Uge 4 Mandag
Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder
Læs mereForelæsning Uge 2 Torsdag
Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug
Læs mere5. Kontrolstrukturer - Motivation og Oversigt
5. Kontrolstrukturer - Motivation og Oversigt I dette og de følgende afsnit vil vi - vigtigst af alt - møde forgreninger og løkker. Sådanne kaldes kontrolstrukturer, fordi vi med disse kan kontrollere
Læs mereOnline kursus: Programming with ANSI C
Online kursus 365 dage DKK 1.999 Nr. 90198 P ekskl. moms Denne kursuspakke giver dig et bredt kendskab til sproget C, hvis standarder er specificeret af American National Standards Institute (ANSI). Kurserne
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:
Læs mereInteger.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else
Programmering 1999 Forelæsning 2, fredag 3. september 1999 Betingede ordrer: if-, if Indlejrede betingede ordrer Løkker med begrænset iteration: for Løkker med ubegrænset iteration: while Betingede ordrer,
Læs mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mereUgeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
Læs mereAAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal
Læs mere16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13%
Samuel Alberg Thrysøe, PhD, PostDoc, Kontakt info: Email: sat@iha.dk, Tlf: +45 25533552 2 4. 5 Waveform Chart Waveform Graph XY Graph Indicator Graph 4. 33% Waveform Chart Waveform Graph XY Graph Indicator
Læs mereMETODER ARV KLASSER. Grundlæggende programmering Lektion 5
METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen
Læs mereErklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).
Indholdsfortegnelse til Bilag 1.: Side 1: Include filer. Side 1: Erklæring af variabler. Side 2: Void indstil (Indstiller starttidspunkt og måleinterval). Side 3: Void indstil (Indstiller starttidspunkt
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
Læs mereJava Programmering. En bog for begyndere. Skrevet af Henrik Kressner
Java Programmering En bog for begyndere Skrevet af Henrik Kressner Indholdsfortegnelse Introduktion...3 1 Introduktion til Java...4 1.1 Javakoden...4 1.2 Det første program...6 1.2 Skriv til skærmen...6
Læs mereKapitel 4 Løkker i C#
Kapitel 4 Løkker i C# Løkker en vigtig del af alle programmeringssprog, og C# er ikke andeles. En løkke er en måde at udføre en del af koden gentagne gange. Ideen er at du fortsætter med at udføre en opgave
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgaver
Læs mereForelæsning Uge 4 Torsdag
Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?
Læs mereForelæsning Uge 2 Mandag
Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgaver
Læs mereSammenlign og byt. Et eksempel på dokumentering af et program
Sammenlign og byt Et eksempel på dokumentering af et program Sammenlign og byt Jeg har valgt, som et eksempel, at dokumentere et meget enkelt program som indlæser to tal, sammenligner dem og udskriver
Læs mereLær Python dag 1 - modul 1
Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen
Læs mereVideregående Programmering for Diplom-E Noter
Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså
Læs mereProgrammering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen
Programmering Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen Oversigt Undervisningen Hvad er programmering Hvordan er et program organiseret? Programmering og fysik Nobelprisen
Læs mereSoftware Construction 1 semester (SWC) Spørgsmål 1
Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /
Læs mereNoter til C# Programmering Iteration
Noter til C# Programmering Iteration Programflow Programmer udfører det meste af deres arbejde vha. forgrening og løkker. Løkker Mange programmeringsproblemer kan løses ved at gentage en handling på de
Læs mereForelæsning Uge 4 Torsdag
Forelæsning Uge 4 Torsdag Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Projektopgave Kaninjagt Lommeregner (for MAT studerende) Klassevariabler og klassemetoder
Læs mere#AlleKanKode. Lektion 2 - Konstanter og Variabler
#AlleKanKode Lektion 2 - Konstanter og Variabler Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger
Læs mereSoftware Construction 1. semester (SWC) januar 2014 Spørgsmål 1
Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),
Læs mereJavaScript. nedarvning.
JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man
Læs mereIndholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13
1 Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Hvad er en makro... 10 Hvad kan du bruge en makro til... 10 Hvad en makro er (Visual Basic for Applications)... 11 Det hele sker
Læs mereOpfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner
Forelæsning 4.1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner finden findalle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave
Læs mereInternt interrupt - Arduino
Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt
Læs mereSortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Læs mereForelæsning Uge 4 Torsdag
Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?
Læs mere#AlleKanKode. Lektion 4 - Kontrol flow
#AlleKanKode Lektion 4 - Kontrol flow Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger osv. Andre
Læs mereForelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999
sammenligninger, hvor Programmering 1999 Forelæsning 17, tirsdag 2 november 1999 Søgning efter en given værdi i en tabel Lineær søgning og binær søgning Effektivitet: maskinuafhængig vurdering af køretid
Læs mere21. Introduktion til arrays
21. Introduktion til arrays I dette kapitel vil vi introducere arrays. Vi vil se på de væsentligste overordnede egenskaber af arrays, og vi vil se på nogle forhold, som er specifikke for C. 21.1. Arrays
Læs mereSWC eksamens-spørgsmål. Oversigt
SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition
Læs mereIntroduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
Læs mereKursusarbejde 2 Grundlæggende Programmering
Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................
Læs mereEt alfabet er en ordnet mængde af bogstaver og andre tegn
16. Tegn og alfabet I dette kapitel studerer vi tegn. Tegn udgør grundbestanddelen i enhver form for tekstbehandling. I senere kapitler, nærmere betegnet kapitel 27 - kapitel 31, ser vi på sammensætningen
Læs mereDynamisk programmering
Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer
Læs mereIndhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...
Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens
Læs mereKontrol-strukturer i PHP
Denne guide er oprindeligt udgivet på Eksperten.dk Kontrol-strukturer i PHP Denne artikel gennemgår kontrolstrukturer i PHP. 'if', 'switch', 'while' og 'for' bliver gennemgået. Den forudsætter lidt grundlæggende
Læs mere#AlleKanKode. Lektion 3 - Operatorer
#AlleKanKode Lektion 3 - Operatorer Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger osv. Andre vil
Læs mere//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!
Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for
Læs mereForelæsning Uge 4 Mandag
Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder
Læs mereCrash Course i Programmering. HumTek, RUC
Crash Course i Programmering HumTek, RUC Kursus mål At give en basal introduktion til programmering i sproget Processing At give et overblik over sprogets potentiale At have det sjovt :-) Kursus form Meget
Læs mereLektion 2. Grundlæggende programmering i VR
Lektion 2 Grundlæggende programmering i VR Plan for i dag Introduktion til Unity Vi laver vores første programmer Introduktion til C# Vi koder vores første af meget få ting uden Unity Behandling af data
Læs mereÅben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser
3/10/96 Seminaret den 26/10 vil omhandle den sidste fase af analysen og de første skridt i kodegenereringen. Det drejer sig om at finde betydningen af programmet, nu hvor leksikalsk og syntaktisk analyse
Læs mereInput/Output: Brugergrænseflader. dopsys
Input/Output: Brugergrænseflader dopsys Interaktion med bruger Visse devices lægger et fundamentalt sæt af spilleregler for vores brug af computere Generisk tilbagemelding, hvad laver den : Billedskærm
Læs mereDANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Læs mereSortering. Eksempel: De n tal i sorteret orden
Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden
Læs mereEn streng er en sekvens af data af samme type. En tekststreng er en streng af datatypen tegn
27. Tekststrenge i C Denne lektionen er om tekststrenge, som både har berøringspunkter med arrays og pointers. Programmering med tekststrenge er vigtig i enhver form for tekstbehandling. Lektionen udspænder
Læs mereModuler i Standard ML
Moduler i Standard ML Hans Hüttel December 2001 I løbet af datalogikurset har vi haft glæde af en hel række forskellige standardmoduler som f.eks. Math, Int, Real og String. Disse moduler kan, har vi set,
Læs mereDM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode
- 3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode Jacob Aae Mikkelsen - 191076 12. december 2005 1 Indhold 1 Opgave beskrivelse 2 2 Muligheder for optimering 2 2.1 efter branch.........................
Læs mereC Programmering V1.37
Indholdsfortegnelse Indledning...3 1 I gang med C...5 1.2 Variabler...12 1.3 Intelligens...17 1.6 Afrunding...38 1.7 Opgaver...41 2 Grundbegreber...42 2.1 Blokke...42 2.2 Datatyper...47 2.3 Typekonvertering...49
Læs mereFlowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.
Flowchart Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Et godt program til at tegne flowcharts med er, EDGE-Diagrammer, eller Smartdraw.
Læs mereSortering af information er en fundamental og central opgave.
Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,
Læs mereSortering af information er en fundamental og central opgave.
Sortering 1 / 36 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,
Læs mereCPUer og maskinkode DM534. Rolf Fagerberg
CPUer og maskinkode DM534 Rolf Fagerberg CPUers opbygning En CPU er bygget op af elektriske kredsløb (jvf. sidste forelæsning), som kan manipulere bits. En CPU manipulerer flere bits ad gangen, deres antal
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereProgrammering C RTG - 3.3 09-02-2015
Indholdsfortegnelse Formål... 2 Opgave formulering... 2 Krav til dokumentation af programmer... 3 ASCII tabel... 4 Værktøjer... 5 Versioner af ASCII tabel... 6 v1.9... 6 Problemer og mangler... 6 v2.1...
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereForelæsning Uge 2 Torsdag
Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet
Læs mere