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

Relaterede dokumenter
Introduktion til C programmering

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

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

Lær Python dag 1 - modul 1

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

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

Programmering i C. Lektion december 2008

#AlleKanKode. Lektion 2 - Konstanter og Variabler

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

Start på Arduino og programmering

Programmering I Java/C#

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

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

Programmering for begyndere Lektion 2. Opsamling mm

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

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.

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

Softwareudvikling: Miljøer

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

Fra programmering til mikroprocessor

Programmering C RTG

Lektion 2. Grundlæggende programmering i VR

JavaScript. nedarvning.

Crash Course i Programmering. HumTek, RUC

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

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni jun 2011 MapBasic &.

Mircobit Kursus Lektion 1

Bits, bit operationer, integers og floating point

Python programmering. Per Tøfting. MacFest

Introduktion til funktioner, moduler og scopes i Python

// Definition af porte og funktioner

Intro til AVR. Mads Pedersen, OZ6HR

Test af It-komponent

Abstract Syntax Notation One ASN.1

DM507 Algoritmer og datastrukturer

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

SWC eksamens-spørgsmål. Oversigt

DM507 Algoritmer og datastrukturer

Arduino Programmering

Python 3 kursus lektion 1:

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

DM507 Algoritmer og datastrukturer

Embedded controller, almen.

Opgaver til C# - Beregninger og udskrift til skærm

Introduktion til programmering. Af mikroprocessor Atmel ATmega328P i en Arduino Uno

DM507 Algoritmer og datastrukturer

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

Grundlæggende netværksteknologi. Grundlæggende datatekniske begreber og operativsystemer.

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

Introduktion Indtastning Funktioner Scripts Optimering. Matlab

Microcontroller, Arduino

R E D C A P M A N U A L. Importér data til REDCap fra CSV-fil. Opbyg din eksisterende database i REDCap Version 1.0

C++ Gratis PDF-udgave Forlaget Libris

Datatekniker med programmering som speciale

Netværk & elektronik

Fagets IT Introduktion til MATLAB

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

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

OrCAD Capture TCL IDE med Eclipse

C Programmering V1.37

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

Kapitel 2 Variabler i C#

Undervisningsbeskrivelse

Undtagelseshåndtering i C#

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

Visual Basic for begyndere

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

Komplekse tal og Kaos

21. Introduktion til arrays

Repræsentation af tal

DM507 Algoritmer og datastrukturer

ITS MP 013. Talsystemer V009. Elevens navn. IT Skolen Boulevarden 19A-C 7100 Vejle Tel.:

Transkript:

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 Praksis (opgave eller vælg selv) Microcontroller-specifikt Slide 2

Plan i dag Formål Introduktion Værktøjet Dev-C++ Kodeprocessen Layout i et C-program Hello World det berømte begyndereksempel! Grundlæggende Datatyper Variabler Input/output Afsluttende eksempel: Konvertering fra ºF til ºC Slide 3

Formål Vi har haft gang i flere microcontrollere Programmeret i assembler, basic og C Ønske om mere C Almindelige Windows-programmer Microcontroller Slide 4

Forbehold Det tager LANG tid at blive en god programmør Vi kan kun introducere en lillebitte brøkdel Der findes masser af gode tutorials på nettet Værktøj på dansk, men alt kode er engelsk (engelske keywords) - det kommer man ikke uden om Slide 5

Introduktion til C Slide 6

C i forhold til andre sprog C-programmer kan ikke eksekveres direkte som visse andre sprog (Basic, javascript, PHP, ASP: VBscript m.fl.) Skal oversættes til en.exe fil Andre sprog skal køres i en fortolker (Java, C# m.fl.), men C (og C++) kan altså afvikles direkte fra.exe filen. C++ er en objektorienteret modernisering af C. Slide 7

Hvor bruges C i dag? (1) Operativsystemer Sprog-kompilere Sprog-fortolkere Teksteditorer Drivere (f.eks. til printere og netværk) Databaser Moderne applikationer Alt muligt andet Generelt: Næsten lige så hurtigt som Assembler-kode og meget mere effektivt at kode i Slide 8

Hvor bruges C i dag? (2) Mange nyere højniveau-sprog som C++, C# og Java har elementer fra C Fint med kendskab til C, når man skal lære disse nye sprog Nye Windows-programmer vil typisk blive skrevet i et af disse nyere højniveau-sprog Microcontrollere (PIC, AVR, 8051, MSP430 mv.) programmeres stadig primært i C Slide 9

Historie 1972: 1978: Dennis Ritchie ved Bell Labs skriver C C Programming Language publiceres af Kernighan & Ritchie 1983-88: "ANSI C" standard af American National Standards Institute Slide 10

Hvad skal vi bruge? C compiler Omsætter fra C-kode til noget som computeren kan forstå Mange muligheder Kommandoprompt DOS Linux-lignende miljø (Cygwin) Integrated Development Environment (IDE) Grafisk brugerflade Hjælpefunktioner Vi vælger Dev-C++ http://www.bloodshed.net/dev/devcpp.html Både C og C++ Bl.a. DANSK! Slide 11

Intro til værktøjet Dev-C++ Installation Opsætninger Projekter filer Kompiler, kør, debug Short-cuts gode! Slide 12

Kode-proces 1. Skriv programkode 2. Kompiler 1. 2. Skriv programkode: 3. Kompiler 4. Link Eksekver I Et en C-program.c fil skrives kan ikke programkode, Sidste startes Den færdige led er umiddelbart, som linkningen,.exe er fil men kan nu menneskelig som skal startes. binder oversættes læseligt. det program, man selv har skrevet, til binære tal, sammen som kan med forstås eksterne af en CPU. rutiner Der og genereres funktioner. en midlertidig Resultatet objekt-fil er en.exe (.obj/.o). fil. 3. Link 4. Eksekver Slide 13

Layout i en C-fil preprocessor directives global declarations main() { local variables to function main; statements associated with function main; } f1() { local variables to function 1; statements associated with function 1; } f2() { local variables to function f2; statements associated with function 2; }... ( ) bruges I forbindelse med funktioner { } bruges til at afgrænse en funktion ; (semikolon) bruges til at terminere C statements Preprocessor directives: F.eks. inkludering af eksterne funktioner, som #include <stdio.h> Slide 14

Første C-program Det populære "Hello World" eksempel #include <stdio.h> main() { } /* Print to the screen */ printf("hello World\n"); Inkludér andre biblioteker Definition af main-funktionen, som starter programmet Kommandoer indkapsles i { } Kommentarer skrives i /* */ Kald af standard-funktionen printf, som printer til skærmen (\n er et linjeskift) Slide 15

Datatyper Basale datatyper: int - integer: Heltal, f.eks. 42 short - short integer long - long integer float - floating point tal: Kommatal, f.eks. 42.5 double - double-precision floating point char - character: Enkelt karakter, f.eks. 'a' Størrelsen er maskin- og kompiler-afhængig. Normalt er en int 16 eller 32 bit (dvs. 2 eller 4 bytes) Slide 16

Variabler og aritmetik type variabelnavn; int a; /* Variabel kaldet a af typen integer */ a = 10; /* Tildel variabel a værdien 10 */ a = a + 5; /* Tildel variabel a værdien af a + 5 */ double sum; /* Variabel kaldet sum af typen double */ sum = 12.50 /* Tildel variable sum værdien 12.50 */ char c; /* Variabel kaldet c af typen character */ c = 'A'; /* Tildel variabel c karakteren A */ Bør være lower-case Skal begynde med bogstav eller _ (ikke tal) int a = 10; /* Initialiser variabel med værdi i starten */ int a, b, c; /* 3 variabler af typen integer */ int a; int b; int resultat; a = 10; b = 3; resultat = a + b; /* Addition, resultat = 13 */ resultat = a b; /* Subtraktion, resultat = 7 */ resultat = a * b; /* Multiplikation, resultat = 30 */ resultat = a / b; /* Division, resultat = 3, ikke 3.333333 (heltal) */ Slide 17

Input og output, scanf og printf (1) Input scanf og output printf er en del af ANSI-specifikationen og ligger i biblioteket stdio.h printf(string, variable, variable, variable...) /* Generel form */ % Format Specifiers printf("hello World"); /* printf uden variabler */ int total = 42; printf("total = %d", total); /* Print signed integer (%d) */ scanf(control string, variable, variable,...) /* Generel form */ Format Datatype Display %c char single character %d (%i) int signed integer %e (%E) float or double exponential format %f float or double signed decimal %g (%G) float or double use %f or %e as required %o int unsigned octal value %p pointer address stored in pointer %s array of char sequence of characters %u int unsigned decimal %x (%X) int unsigned hex value int a; scanf("%d", &a) /* Input lægges som signed integer (%d) i variabel a */ Slide 18

Input og output, scanf og printf (2) #include <stdio.h> main() { int a, b, c; printf("\nthe first number is "); scanf("%d", &a); printf("the second number is "); scanf("%d", &b); c = a + b; } printf("the answer is %d \n", c); Slide 19

Afsluttende eksempel Konvertering fra Fahrenheit til Celsius C = 5 ( F 9 32) /* Konverterer fra Fahrenheit til Celsius vha. formlen C = (5/9)( F-32) */ #include <stdio.h> main() { int fahr, celsius; printf("\nskriv Fahrenheit: "); scanf("%d", &fahr); celsius = 5 * (fahr-32) / 9; } printf("%d F => %d C\n", fahr, celsius); Slide 20

Brush-up 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 21

Links (danske) Dansk introduktion til C http://our-site.dk/service/kurser/c/c.php Kursus på Aalborg Universitet http://www.cs.auc.dk/~normark/c-prog- 04/html/notes/index.html PDF til ovenstående kursus http://www.cs.auc.dk/~normark/c-prog- 04/html/notes/leno-print-page.html Slide 22

Links Kursus på University of Washington http://www.eskimo.com/~scs/cclass/cclass.html theforger's Win32 API Tutorial http://www.winprog.org/tutorial/ Cprogramming.com http://www.cprogramming.com/ http://www.cprogramming.com/tutorial.html#ctutorial http://www.cprogramming.com/tutorial.html#advanced FoosYerDoos (brugergrænseflader i Win32 API) http://www.foosyerdoos.fsnet.co.uk/ Slide 23

Næste gang Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner Så er vi faktisk godt i gang vi kan lave næsten alle programmer Næste gang igen: Praksis Kom gerne med egen computer Opgave eller vælg selv Slide 24