Programmering i C. Lektion september 2009

Relaterede dokumenter
Programmering i C. Lektion november 2008

Programmering i C. Lektion september 2009

Programmering i C. Lektion oktober 2008

Programmering i C. Lektion september 2009

Programmering i C. Lektion december 2008

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Programmering i C. Lektion september 2009

Programmering i C Videre med C (2 af 4) 19. marts 2007

// Definition af porte og funktioner

Introduktion til C programmering

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

Kursusarbejde 3 Grundlæggende Programmering

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

Sproget Rascal (v. 2)

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Kursusarbejde 2 Grundlæggende Programmering

Pointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable:

Programmering i C Intro og grundlæggende C 5. marts 2007

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

5. Kontrolstrukturer - Motivation og Oversigt

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

Moderne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette

Kontrol-strukturer i PHP

Anvendelse af del og hersk princippet involverer altså problemopdelning og løsningskombination.

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Introduktion til funktioner, moduler og scopes i Python

Online kursus: Programming with ANSI C

Programmering i C. Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet. Sammendrag

10. Funktioner - Lasagne

Et alfabet er en ordnet mængde af bogstaver og andre tegn

Python programmering. Per Tøfting. MacFest

up/ansi Eksamensspørgsmål

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit if (indkomst > ) topskat = (indkomst ) * 0.

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Input/Output: Brugergrænseflader. dopsys

Forelæsning Uge 2 Mandag

Start på Arduino og programmering

DANMARKS TEKNISKE UNIVERSITET

#AlleKanKode. Lektion 4 - Kontrol flow

Rekursion C#-version

Forelæsning Uge 2 Mandag

Internt interrupt - Arduino

En streng er en sekvens af data af samme type. En tekststreng er en streng af datatypen tegn

Brug af digitale ind og udgange

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Parameterisering af databasekald med ASP og ADO

Algoritmer og invarianter

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

Forelæsning Uge 4 Mandag

DM507 Algoritmer og datastrukturer

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 05/ Arduino, Loops, løkker, programfunktioner mm.

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, klasse dm032-1a

Procedurer og funktioner - iteration og rekursion

Spil Master Mind. Indledning.

1. Variable og assignment

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

DM507 Algoritmer og datastrukturer

Jeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Fra programmering til mikroprocessor

Eksempel: Skat i år 2000

Python 3 kursus lektion 1:

It og informationssøgning Forelæsning september 2006 Nils Andersen. Underprogrammer og betingelser. Standardfunktioner, typeomsætning

Programmering for begyndere Lektion 2. Opsamling mm

DM507 Algoritmer og datastrukturer

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

DM507 Algoritmer og datastrukturer

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

Lær Python dag 1 - modul 1

Blockprog Rev1.0. Block programmering CS1/CJ1. Qiuck guide OMRON

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4

Introduktion Til Konkurrenceprogrammering

Dynamisk programmering

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Lige siden den elektroniske computers opfindelse i slutningen af 1940, har det været muligt at få en computer til at beregne ting.

Ugeseddel 4 1. marts - 8. marts

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag

Udarbejdet af CFU Absalon

SWC eksamens-spørgsmål. Oversigt

Asus computer og hvad man kan gøre ved den. For flere år siden købte jeg en lille maskine der hed Asus Eee Pc 900.

Noter og opgaver. Programmering A IMADA. Niels Kjeldsen & Jacob Aae Mikkelsen. Med grundig korrektur og rettelser af Edmund Christiansen

Black Jack --- Review. Spring 2012

Videregående Programmering for Diplom-E Noter

Sammenlign og byt. Et eksempel på dokumentering af et program

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Skriftlig eksamen i Datalogi

Dynamisk programmering

Transkript:

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 5 Kommentarer 6 Format - scanf og printf

Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 3 / 27 Sekventiel kontrol Udvælgelse Gentagelse start start start gør noget gør noget gør noget gør noget gør mere slut betingelse ja nej gør eet gør andet gør mere slut nej betingelse ja gør noget gør mere slut

Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 4 / 27 med if i f ( udtryk ) kommando1 ; else kommando2 ; med switch switch ( u d t r y k ) { case const1 : command1 ; case const2 : command1 ;... case constn : commandn ; default : command ; med den betingede operator?: udtryk? udtryk1 : udtryk2 f.x. min =( a< b? a : b ) ; (smart, men undgå!)

Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 5 / 27 med while med for med do fx while ( udtryk ) kommando ; for ( i n i t ; c o n d i t i o n ; update ) kommando ; do kommando ; while ( u d t r y k ) ; do scanf ( "%c ", &ans ) ; while ( ans!= n && ans!= y ) ;

Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 6 / 27 Løsninger på Opgave 3 fra sidste gang. med while: gaet.c med for (måske lidt søgt... ): gaet2.c

Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf #include < s t d i o. h> #include < s t d l i b. h> #include <time. h> i n t main ( void ) { / gaet. c / i n t hemtal ; i n t gaet= 0; i n t forsoeg= 0; p r i n t f ( " \nwe generate a random number between 1 and 1000\n \ and l e t you guess i t, at each step t e l l i n g you \ n \ the r e l a t i o n between your guess and our number. \ n " ) ; / i n i t i a l i s e random number generator / srand ( ( unsigned i n t ) time ( 0 ) ) ; / generate random number between 1 and 1000 / hemtal= rand ()% 1000+ 1; while ( gaet!= hemtal ) { forsoeg ++; p r i n t f ( " \ nenter your guess : " ) ; scanf ( "%d ", &gaet ) ; i f ( gaet!= hemtal ) p r i n t f ( " Your guess i s too %s. \ n ", gaet < hemtal? " small " : " big " ) ; else p r i n t f ( " \ nsuccess! \ nyou needed %d t r i e s. \ n ", forsoeg ) ; 7 / 27

Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 8 / 27 To typer af kommentarer #include < s t d i o. h> i n t main ( void ) { / P r i n t out the sentence " Hello, world! " / p r i n t f ( " Hello, world! \ n " ) ; return 0; / / Returnerer værdien 0

Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 9 / 27 http://www.cplusplus.com/reference/clibrary/ cstdio/scanf/ http://www.cplusplus.com/reference/clibrary/ cstdio/printf/

10 / 27 Funktioner 7 Funktioner 8 Eksempel 9 Parametre 10 Rekursive funktioner 11 Parametre til main()

11 / 27 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 ;

12 / 27 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;

13 / 27 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 ;

14 / 27 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

15 / 27 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.

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; 16 / 27

17 / 27 Hele programmet: prim.c

18 / 27 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.

19 / 27 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 ) ;

20 / 27 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.

21 / 27 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

22 / 27 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

23 / 27 rekursiv funktion = funktion der kalder sig selv Eksempel: fakultetsfunktionen: n! = 1 2 3 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)

24 / 27 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]

25 / 27 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]

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; 26 / 27 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 /

27 / 27 http://www.cplusplus.com/reference/clibrary/ cstdlib/strtol/