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

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

Programmering i C. Lektion september 2009

Programmering i C. Lektion oktober 2008

Introduktion til C programmering

Programmering i C. Lektion september 2009

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

Online kursus: Programming with ANSI C

Programmering i C. Lektion november 2008

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

Programmering for begyndere Lektion 2. Opsamling mm

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

Start på Arduino og programmering

5. Kontrolstrukturer - Motivation og Oversigt

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

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

Mircobit Kursus Lektion 1

Eksempel: Skat i år 2000

Lær Python dag 1 - modul 1

Programmering i C. Lektion december 2008

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

2) Det er let at være produktiv med Python, da Python som regel kun har mellem 67 og 80% færre linier end tilsvarende C eller Java kode.

ECE 551: Digital System * Design & Synthesis Lecture Set 5

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

Fra programmering til mikroprocessor

Internt interrupt - Arduino

Programmering i C. Lektion september 2009

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

HTML, PHP, SQL, webserver, hvad er hvad??

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

Python 3 kursus lektion 1:

Det er muligt at chekce følgende opg. i CodeJudge: og

Kontrol-strukturer i PHP

Oracle PL/SQL. Overview of PL/SQL

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

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.

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

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

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Løsning af skyline-problemet

Programmering og Problemløsning, 2017

Processer og tråde. dopsys 1

Python 3 Matematik Programmerings kursus:

ArbejsskadeAnmeldelse

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

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

#AlleKanKode. Lektion 2 - Konstanter og Variabler

PHP guide af Daniel Pedersen

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

Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M

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

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

Forelæsning Uge 4 Mandag

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

1. Variable og assignment

C Programmering V1.37

Forelæsning Uge 2 Torsdag

SWC eksamens-spørgsmål. Oversigt

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Python programmering. Per Tøfting. MacFest

Algoritmedesign med internetanvendelser ved Keld Helsgaun

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

Introduktion til funktioner, moduler og scopes i Python

Fagets IT Introduktion til MATLAB

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

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

Kapitel 4 Løkker i C#

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

DDD Runde 2, 2015 Facitliste

Unitel EDI MT940 June Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004)

Algoritmer og invarianter

Software Construction 1 semester (SWC) Spørgsmål 1

Linear Programming ١ C H A P T E R 2

Kursusarbejde 2 Grundlæggende Programmering

Peter Kellberg. Rundt om Danmarks Statistiks makroer. Design, Standardisering, Teknik

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Programmering og Problemløsning, 2017

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

Engineering of Chemical Register Machines

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

Hvis du synes at det ligner græsk så fortvivl ikke, inden artiklen er omme vil du synes at det er logik for begyndere.

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.

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

! #!! $ % $! & " &'"! & *+ "! " $ $ ""!,-! $!.! $! " # 1!! &' "

! "# $$ &'()*"* +*, & &"*0* & "# % %- %

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

Kursusarbejde 3 Grundlæggende Programmering

Forelæsning Uge 4 Mandag

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

Komplekse tal og Kaos

what is this all about? Introduction three-phase diode bridge rectifier input voltages input voltages, waveforms normalization of voltages voltages?

Rekursion og dynamisk programmering

" #" $ " "!% &'% ' ( ) * " & #

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

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Programmering og Problemløsning, 2017

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13%

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Undervisningsbeskrivelse

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Transkript:

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 I princippet nok til de fleste programmer Slutter med en simpel lommeregner Slide 2

Brush-up fra sidst Introduktion (historie, hvor bruges C) Værktøjet Dev-C++ (gratis og bl.a. på dansk) Kodeprocessen (Kode Kompiler Link Eksekver) Layout i en C-fil (#include, main, ) Datatyper (int, short, long, float, double, char) Variabler og aritmetik Input og output (scanf og printf) Slide 3

Kontrolløkker: Loops (1) Indtil nu sekventiel afvikling Første linje, så næste linje, Én efter én Uholdbart hvis et program skal køre "x antal mange gange", i flere timer eller "altid" Slide 4

Kontrolløkker: Loops (2) Eksempel: Skriv "Hello World" 5 gange. Nemt nok: #include <stdio.h> main() printf("hello World\n"); printf("hello World\n"); printf("hello World\n"); printf("hello World\n"); printf("hello World\n"); Hvad hvis vi nu bedes om 100 gange, 1.000 eller 10.000 gange "Hello World"? Ikke længere en smart måde! Slide 5

Kontrolløkker: Loops (3) Løkken while indføres nu: while (condition) statements; eller do statements; while (condition) F.eks. med logiske expressions: #include <stdio.h> main() int i = 0; while (i < 20) /* true så længe i < 20 */ printf("hello World\n"); i = i + 1; /* eller i++; */ Man kan bruge: < Mindre end > Større end <= Mindre end eller lig med >= Større end eller lig med == Lig med!= Ikke lig med Slide 6

Kontrolløkker: Loops (4) Uendelig løkke #include <stdio.h> main() while (1 == 1) /* Altid true */ printf("hello World\n"); Slide 7

Kontrolløkker: Loops (5) Ofte anvendt konstruktion med en while-løkke: counter = start_value; while (counter <= finish_value) statements; counter++; Dette er en for-løkke: for (counter = start_value; counter <= finish_value; counter++ ) statements; Enklere konstruktion Inkrementeringsvariablen counter indlejres Slide 8

Kontrolløkker: Loops (6) Eksempel på for-løkke: C = 5 ( F 9 32) Resultat: 0-17.8 20-6.7 40 4.4 60 15.6 80 26.7 100 37.8 120 48.9 140 60.0 160 71.1 180 82.2 200 93.3 220 104.4 240 115.6 260 126.7 280 137.8 300 148.9 #include <stdio.h> main() int fahr; #include <stdio.h> main() float fahr, celsius; for (fahr = 0; fahr <= 300; fahr = fahr + 20) printf("%4d %6.1f\n", fahr, (5.0/9.0)*(fahr-32)); fahr = 0; while ( fahr <= 300 ) celsius = (5.0/9.0) * (fahr-32.0); printf("%4.0f %6.1f\n", fahr, celsius); fahr = fahr + 20; Slide 9

Conditional Execution: if, else (1) Vi har brug for at kunne indføre en mekanisme, der kun udføres, hvis bestemte forhold er tilstede. Dette hedder i programmeringssprog if: if (condition) statement; /* Udføres kun hvis condition er opfyldt => true */ F.eks.: if (total > 0) printf("ok"); Slide 10

Conditional Execution: if, else (2) Eksempel med både if og while: #include <stdio.h> main() int a, b; while (a < 999) printf("\nenter first number: "); scanf("%d", &a); printf("\nenter second number: "); scanf("%d", &b); if (a<b) printf("\nfirst number is less than second\n\n"); if (b<a) printf("\nsecond number is less than first\n\n"); Slide 11

Conditional Execution: if, else (3) Udfør hvis condition opfyldt, ellers gør noget andet: If/else if (condition) statement1; else statement2; if (condition1) statement1; else if (condition2) statement2; else statement3; Slide 12

Conditional Execution: if, else (4) Logical Expressions (igen) Man kan bruge: < Mindre end > Større end <= Mindre end eller lig med >= Større end eller lig med == Lig med!= Ikke lig med Slide 13

Conditional Execution: if, else (5) Eksempel med både if / else: #include <stdio.h> main () int num1, num2; printf("\nenter first number "); scanf("%d", &num1); printf("\nenter second number "); scanf("%d", &num2); if (num2 == 0) printf("\n\ncannot devide by zero\n\n"); else printf("\n\nanswer is %d\n\n", num1 / num2); Slide 14

Funktioner (1) I andre sprog kan de hedde subrutiner eller procedurer Funktioner er geniale! Basalt: En mængde kode, der er grupperet og givet et navn. Kan bruges ved at kalde navnet på funktionen. I gamle dage: goto Slide 15

Funktioner (2) Eksempel: Funktion der kan: printf("hello"); total = total + l; Funktionen: demo() printf("hello"); total = total + 1; Kaldes således: main() demo(); Slide 16

Funktioner (3) Fordele ved funktioner: Samme funktion kan kaldes mange gange og fra forskellige steder Et stort program kan med fordel splittes op i mindre dele (=funktioner) med logiske navne Citat: "Functions are the building blocks of programs." Slide 17

Funktioner (4) For at lave brugbare funktioner skal der være en mulighed for at give data til en funktion: sum( int a, int b) int result; result = a + b; men result er destroyed, når funktionen er færdig. Altså: Funktioner har deres eget scope! Slide 18

Funktioner (5) Returnering af værdier: int sum(int a, int b) int result; result = a + b; return result; Kan kaldes på følgende måder: #include <stdio.h> main() int r; r = sum(1, 2); printf("resultatet er %d: \n", r); /* Giver 3 */ r = sum(1, 2) * 3; printf("resultatet er %d: \n", r); /* Giver 9 */ r = (3 + sum(1, 2)) / 3; printf("resultatet er %d: \n", r); /* Giver 2 */ Slide 19

Funktioner (6) Generelt er formen: Return-type FunctionName(type declared parameter list) statements that make up the function; Slide 20

Funktioner (7) Standard-funktioner i C (uddrag) stdio.h: I/O functions: getchar() returns the next character typed on the keyboard. putchar() outputs a single character to the screen. printf() as previously described scanf() as previously described string.h: String functions strcat() concatenates a copy of str2 to str1 strcmp() compares two strings strcpy() copys contents of str2 to str1 ctype.h: Character functions isdigit() returns non-0 if arg is digit 0 to 9 isalpha() returns non-0 if arg is a letter of the alphabet isalnum() returns non-0 if arg is a letter or digit islower() returns non-0 if arg is lowercase letter isupper() returns non-0 if arg is uppercase letter math.h: Mathematics functions acos() returns arc cosine of arg asin() returns arc sine of arg atan() returns arc tangent of arg cos() returns cosine of arg exp() returns natural logarithim e fabs( returns absolute value of num sqrt() returns square root of num time.h: Time and Date functions time() returns current calender time of system difftime() returns difference in secs between two times clock() returns number of system clock cycles since program execution stdlib.h: Miscellaneous functions malloc() provides dynamic memory allocation rand() random number srand() used to set the starting point for rand() Slide 21

Afsluttende eksempel: Simpel lommeregner #include <stdio.h> main() int mode; int tal1, tal2, resultat; else /* Skriv de 2 tal */ printf("\n Skriv tal 1: "); scanf("%d", &tal1); /* Mode */ printf("\nmads' simple lommeregner\n\n"); printf(" 0 = Afslut programmet\n"); printf(" 1 = Addition (+)\n"); printf(" 2 = Subtraktion (-)\n"); printf(" 3 = Multiplikation (*)\n"); printf(" 4 = Division (/)\n"); printf("\nskriv mode: "); scanf("%d", &mode); if (mode == 0) return; /* Afslutter programmet */ if (mode < 0 mode > 4) printf("\nugyldig mode...\n\n");... Fortsættes printf("\n Skriv tal 2: "); scanf("%d", &tal2); /* Foretag udregningen */ if (mode == 1) resultat = tal1 + tal2; else if (mode == 2) resultat = tal1 - tal2; else if (mode == 3) resultat = tal1 * tal2; else if (mode == 4) resultat = tal1 / tal2; printf("\nresultatet er: %d\n\n", resultat); Slide 22

Brush-up Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner I princippet nok til de fleste programmer Slide 23

Hvad mangler vi? Alt det forudgående er faktisk nok for at kunne lave de fleste programmer. For at have været hele paletten igennem, mangler vi: switch som alternativ til if/else break, continue Data typer Globale variabler const variabler Arrays Pointers Strenge Strukturer (struct) Filhåndtering Slide 24

Næste gang Praksis Find selv på en opgave F.eks. de avancerede emner på foregående side eller Jeg finder på en opgave Slide 25

Mangler I noget? Sig til, hvis I mangler info om et specifikt emne. Så kan vi tage det med næste gang. Slide 26