Introduktion til C programmering



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

Programmering i C. Lektion december 2008

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

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

DM507 Algoritmer og datastrukturer

DM502. Peter Schneider-Kamp

DM507 Algoritmer og datastrukturer

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Lær Python dag 1 - modul 1

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

Programmering I Java/C#

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

Programmering C RTG

Programmering for begyndere Lektion 2. Opsamling mm

02101 Indledende Programmering Introduktion til Eclipse

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Operativsystemer - dopsys

Principper for Samtidighed og Styresystemer

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

DM507 Algoritmer og datastrukturer

Undervisningsbeskrivelse

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

Crash Course i Programmering. HumTek, RUC

CPUer og maskinkode DM534. Rolf Fagerberg

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

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

Introduktion til DM507

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

Komplekse tal og Kaos

JavaScript. nedarvning.

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

Python 3 kursus lektion 1:

DM507 Algoritmer og datastrukturer

Abstrakte datatyper C#-version

DM507 Algoritmer og datastrukturer

Processer og tråde. dopsys 1

Dokumentation af programmering i Python 2.75

Introduktion til funktioner, moduler og scopes i Python

Start på Arduino og programmering

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

BRP Kursusintroduktion og Java-oversigt

Objects First with Java A Practical Introduction Using BlueJ

Softwareudvikling: Miljøer

Computere og Netværk (dcomnet)

Test af It-komponent

Start på programmering (IT-hæfter fra Libris)

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september (Tak til Jakob Bardram for nogle slides) Dagens begreber

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.

Algoritmer og invarianter

DM507 Algoritmer og datastrukturer

Installation af en virtuel maskine

Python 3 Matematik Programmerings kursus:

Dat 2/BAIT6/SW4: Syntaks og semantik En manual for studerende

IT på Social og Sundheds Skolen Fyn Juni 2019

DM507 Algoritmer og datastrukturer

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

CV for Lasse Nielsen

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

Arduino Programmering

Introduktion til programmering. Intro

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Transkript:

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 på tavle Teori: Sprog og maskiner C som sprog imperativt, kompileret, eksplicit statisk typet og maskinnært Værktøj, igang i praksis 1

Kursets formål, omfang, indhold og fokus Basal C-programmering 2,5 ects = 5 7½ time/uge, heraf 4 45min forelæsning og øvelser. Praktisk implementation/kendskab, learning by doing Teoretisk fundament, smagsprøver på underliggende matematik Anvendelighed beregninger, cairo, datalogisk forståelse Sjovt og smukt 2

Litteratur Absolute Beginner s Guide to C grundbog, pensum/kursusniveau, forklarer grundigt og er rimeligt let læst dos, imperativ Online dokumentation api, man-pages, kdevelop K&R: The C programming language Bogen om C, forudsætter kendskab til programmering, supplerende litteratur 3

Ugeopgaver, forelæsninger og øvelser Ugeopgaver, obligatoriske, learning by doing, eksperimentér, egne idéer, grupper, opgave per person, afleveres per mail (voel@math. ku.dk) inden Søndag, angiv holdnummer. Opgaver; sværhedsgrad, omfang Noter; stikord, spørgsmål, kommentarer Forelæsning: Grundlæggende programmering og teoretiske tangenter. Blandet niveau, 1-2 timer og umiddelbart derefter øvelser Øvelser: Arbejd med ugeopgaverne, individuel feedback og hjælp fra instruktor 4

Foreløbig kursusplan Uge 17-19. Grundlæggende C programmering, kontrolflow og arrays, funktioner og api. Bog del 1, 2, 3, 5. Programmeringssprog, binære tal, interface implementation Uge 20-21. Pointere og stakke, sortering og søgning. Bog del 4. Maskinmodeller, algoritmer og datastrukturer Uge 22-24. Projekt, samt repetetion og uddybning 5

NB: Holdtidspunkt Grupper Aftal møde Navne 6

Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler på tavle Teori: Sprog og maskiner C som sprog imperativt, kompileret, eksplicit statisk typet og maskinnært Værktøj, igang i praksis 7

Hvad er et program Computer vs. mennesker Tal, logik Sekventiel udførsel, opskrift Bogstaveligt, - ingen fejltolerance 8

Hello World... /* Simple program that prints a greeting to the screen */ #include <stdio.h> /* needed for printf */ int main(int argc, char** argv) { printf("hello world!\n"); return 0; } 9

...Hello World /* Kommentarer */ int main(...) {...} hovedfunktion, startpunkt printf(...) udskrivning "tekstreng hvor \n betyder linjeskift" statements; Detaljer: #include <standardbiblioteker> og return 0 printf... udskriv heltal, %d udskriv flydende kommatal, %f 10

Hello World... /* Simple program that prints a greeting to the screen */ #include <stdio.h> /* needed for printf */ int main(int argc, char** argv) { printf("hello world!\n"); printf("... and hello %d %f\n", 17, 41.99999999); return 0; } 11

Eksempel med variable... /* just some semirandom calculations */ #include <stdio.h> int main(int argc, char** argv) { int i, j; float f; f = 0.2617994; j = 11000; scanf("%d", &i); j = j + i * i - 33; printf("%d\n%f\n", j*j, f * i); return 0; } 12

...eksempel med variable int og float - deklarering af variable. Heltal og flydende kommatal. andre typer: double, char, short, long og henholdsvis signed og unsigned. Ændring fra bog: heltal < 2.147.483.648 scanf indlæsning, omvendt printf. Bemærk & tildeling =, almindelige regneoperationer + - * / % 13

Eksempel med if-else... #include <stdio.h> int main(int argc, char** argv) { int svar, resultat = 17 * 42; printf("hvad er 17*42?\n"); if(scanf("%d", &svar)!= 1) { printf("et tal tak!\n"); } else if(svar == resultat) { printf("korrekt udregnet!\n"); } else if(svar < resultat) { printf("nej, 17*42 er mere end det...\n"); } else { printf("nej, du gættede for højt...\n"); } return 0; } 14

...eksempel med if-else if(betingelse) {så... } else {ellers... } { blok; statements...; } Sammenligning ==!= < > >= <= Tildeling = vs. sammenligning == ikke ligning Flydende tal og sammenligninger. 15

Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler på tavle Teori: Sprog og maskiner C som sprog imperativt, kompileret, eksplicit statisk typet og maskinnært Værktøj, igang i praksis 16

Hvad er en computer CPU, registre og hukommelse. C vs. maskinkode Gå til næste instruktion, læs og udfør, ad nauseum Eksempel: 1 = load, 2 = store,..., 7 = float division, 8 = compare,..., 17 = jump if not equal,... Registre 1-4, instruktionsposition. int i = 20; if(i!= 0) { i = 100 / i; }... 143 144 145 146 147 148... 712 (i) 713...... 1 712 2 8 2 0 17 3 1 713 3 7 3 2 2 2 712 2... 20 100... 17

Sprog maskinkode Oversættelse fra tekstfil til maskinkode Preprocessor, oversætter, linker gcc -o programnavn kildekode.c gcc -Wall -g -o programnavn kildekode.c Oversættelse, fortolkning, just-in-time kompilering 18

Programmeringssprog Syntaks vs. semantik; C: printf("hello World\n"); scheme: (display "Hello World\n") java: System.out.println("Hello World"); python: print "Hello World" dansk: Skriv Hello World på skærmen Typesystem: Eksplicit vs. implicit, statisk vs. dynamisk Eksplicit lagerstyring vs. garbage collection Maskinnært vs. højere niveau (højniveau vs. assembler) Generelt systemprogrammeringssprog, vs. scripting (python, ruby, lua) vs. domænespecifikke sprog (maple, octave, R, SQL) Imperativt vs. objektorienteret (java, ecmascript) vs. funktionsorienteret (sml, haskell, lisp, scheme, λ-kalkyle) vs. deklarativt (prolog) 19

Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler på tavle Teori: Sprog og maskiner C som sprog imperativt, kompileret, eksplicit statisk typet og maskinnært Værktøj, igang i praksis 20

Værktøj, igang i praksis Redigér, oversæt, kør kræver blot en editor (e.g. emacs) og en c-compiler (e.g. gcc) kan installeres under windows via cygwin. Integreret udviklingsmiljø kdevelop under linux lettere at bruge, automatisk oversættelse, automake etc. Start af projekt i kdevelop: Menu: Project New Project... Vælg C, Simple Hello world program, og indtast programnavn, og hvor i jeres hjemmekatalog programmet skal ligge next, next, next, next, finish. 21

Kdevelop fortsat [F8] oversætter programmet. Svar Run them hvis den spørger om den skal køre automake etc. [shift] + [F9] kører programmet, hvis der er lavet ændringer oversætter den det først. Vinduet under programteksten, er uddata fra oversætteren. Hvis der er fejl i programmet, så det ikke kan oversætte, vil der her stå årsagen. Klik på fejlbeskeden for at gå til pågældende linje i programmet Debug ([F9]), breakpoints (højreklik, toggle breakpoint), stepping. 22

Øvelser Gruppearbejde, taktisk vs. strategisk (extreme programming) Linux - vælg kde-session ved login, kdevelop i menu Litteratur: Kapitel 2: main Kapitel 3 /*Kommentarer*/ Kapitel 4 printf Kapitel 5 variable int, float Kapitel 8 scanf Kapitel 9 aritmetik Kapitel 11 if else 23

Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler på tavle Teori: Sprog og maskiner C som sprog imperativt, kompileret, eksplicit statisk typet og maskinnært Værktøj, igang i praksis 24