Grundläggande C-programmering
|
|
- Maj-Britt Nyberg
- för 7 år sedan
- Visningar:
Transkript
1 Grundläggande C-programmering - För maskinorienterad programmering Ulf Assarsson Läromoment: Datatyper, typedef, #define, struct, arrayer, synlighet Preprocessing, kompilering, länkning IDE,.c- /.h-filer, Inför: Programmering av grafisk LCD-display Kopplat?ll: Arbetsbok kap 5 Lab 2 + Lab 3 Läsanvisningar: Arbetsbok Datablad LCD - Grafisk
2 C Bakgrund Short Code, 1949, 1:st high level language Autocode, early 50 ies. Fortran, IBM, ~57. Lisp, 58. Cobol 60 (Common Business-oriented language. BASIC, ALGOL 60 (ALGOrithmic Language 1960). Simula, 60:ies. C, ~1969. Prolog, Ada, ~1975 Pascal, ~1975. ML,
3 C Bakgrund Maskinnära programmering: Behöver språk med pekare?ll absoluta adresser Basic, Ada 95 (och senare versioner), C, C++, C# (med nyckelordet unsafe), Objec?ve-C, D, COBOL, Fortran. C C (Ada 1995) C# D
4 C Historik B, Bell Labs ~1969 C: Utvecklades först av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ef utav de mest använda språken. 4
5 C respek?ve Assembler Varför C istället för assembler? Färre rader kod, mindre risk för fel, snabbare Varför förstå hur C kompileras?ll assembler? prestandaop?mering och resonera kring prestanda ( tex för datorgrafik, GPU:er, HPC). Hur mycket snabbare är en while-loop än rekursion? Loop-unroll? energikonsump?on säkerhet/robusthet/risker Kunna debugga Kunna mixa C/asm vid drivru?nsprogrammering eller prestandakri?ska förlopp. RTI return from interupt (behövs dock ej för cortex-m4) SIMD: Intel s SSE 5
6 Översikt C fyra lek?oner Lekt 1: IDE, variabler (dekl. +?lldeln.), typkonverteringar, ASCII, funk?oner, variabelsynlighet, programstruktur, kompilering/länkning, define, typedef, structs pekare,. Lekt 2: Pekare forts, pekare?ll funk?oner, vola?le, portadressering, structs med funk?onspekare Lekt 3: unions, #include-guards, mer källkodstruktur, Kodningskonven?oner: minneshantering, funk?onsanrop, adressrymd, stack frame, Lekt 4: dubbelpekare, mixa C och assembler 6
7 C Standarder 1978, K&R C (Kernighan & Ritchie) 1989, C89/C90 (ANSI-C) 1999, C99 (Rev. ANSI-standard) 2011, C11 (Rev. ANSI-standard) 7
8 Hello world! program #include <stdio.h> int main() printf( Hello World!\n"); return 0; 8
9 C vs Java. Några skillnader: C: saknar klasser. Har dock structs för sammansafa datatyper. struct Course char* name; float credits; int numberofparticipants; ; Booleans är ej egen typ. true/false finns ej. 0 är false. Ef värde!= 0 är true. Därför definierar man osa TRUE/FALSE som 1 resp 0. 1 && 1 = Implementa?onsspecifikt för kompilatorn. 9
10 Mer C: Type conversion default: convert narrower format to the wider format Synlighet: global synlighet, synlighet i funk?on resp scope. #include <stdio.h> int x; int foo(int x) if( x == 0 ) int x = 4; return x; return x; float a; a = 1.0 / 3; // a == int main() x = 1; x = foo(0); printf("x is %i", x); return 0; 10
11 Integrerad utvecklings miljö (IDE) Kör Bygg T ex CodeLite som är gra?s och open-source. (hfp://codelite.org/ ) hfp:// 11
12 Från terminalen > gcc o hello.exe main.c > hello.exe Hello World! > Bygg Kör 12
13 Ef Programs Adressrymd Alla program som körs, har något associerat minne, vilket typiskt är indelat i: Code Segment Data Segment (Holds Global Data) Stack (where the local variables and other temporary informa?on is stored) Heap The Stack grows downwards Stack The Heap grows upwards Heap Data Segment Ökande adresser Code Segment
14 Variabler #include <stdio.h> int x; int main() char y; x = 32; y = 'a'; x = x + y; Typ Variabelnamn printf("x har nu värdet %i och y har värdet %i som kodar tecknet %c\n", x, (int)y, y); return 0; Utskris: x har nu värdet 129 och y har värdet 97 som kodar tecknet a 14
15 Deklara?oner och?lldelningar #include <stdio.h> int x; int main() char y; x = 32; y = 'a'; Deklara?oner Tilldelningar x = x + y; printf("x har nu värdet %i och y har värdet %i som kodar tecknet %c\n", x, (int)y, y); return 0; En deklarerad variabel som ännu inte?lldelats ef värde är oini)erad 15
16 Typkonverteringar #include <stdio.h> int x; int main() char y; Implicit typkonvertering x = 32; y = 'a'; x = x + y; Explicit typkonvertering printf("x har nu värdet %i och y har värdet %i som kodar tecknet %c\n", x, (int)y, y); return 0; Typkonvertering kallas också cast, och man säger af man castar. 16
17 ASCII Finns det bara en ASCII-tabell? Finns flera olika ASCII extensions (övre 128 värdena), beroende på språk. ISO , also called ISO La)n 1, ISO for Eastern European languages, and ISO for Cyrillic languages (Terminaler använder inte nödvändigtvis ASCII-tabellen Console däremot osast.) 17
18 C89 deklara?oner först #include <stdio.h> int x; int main() x = 32; En?lldelning innan deklara?onerna är EJ?llåtet enligt C89 char y = 'a'; x = x + y; printf("x har nu värdet %i och y har värdet %i som kodar tecknet %c\n", x, (int)y, y); return 0; Fungerar ibland ändå (t ex i CodeLite), men för vår ARM-kompilator måste C99 explicit anges som kompilatorflagga. 18
19 Enable C99 Sd 19
20 Funk?oner #include <stdlib.h> int foo(int x, char y) int sum = 0; argument while(y-- > 0) sum += x*y; return sum; Returvärde av returtyp Argumenten är pass-by value. int var1; char var2 = 7; var1 = foo(5, var2); var2 har forwarande värdet 7 eser funk?onsanropet 20
21 Synlighet/Visibility/Scope Global synlighet (global scope) Filsynlighet (file scope) Lokal synlighet (e.g. func?on scope) 21
22 Synlighet #include <stdlib.h> char x; int foo() // x är synlig // y är inte synlig char y; 22
23 Synlighet på funk?onsnivå #include <stdlib.h> char x; int foo(float x) // argumentet x (float) är synligt 23
24 Synlighet på funk?onsnivå #include <stdlib.h> char x; int foo() int x = 4; return x; 24
25 Vilken synlighet har högst prioritet? #include <stdio.h> int x; int foo(int x) if( x == 0 ) int x = 4; return x; return x; int main() x = 1; x = foo(0); printf("x is %i", x); return 0; Vad är x? 25
26 Funk?onsprototyper #include <stdio.h> // funktionsprototyp int foo(int x); int main() printf("x is %i", foo(0)); return 0; int foo(int x) // funktionskropp 26
27 Typedef alias för typer typedef unsigned int uint32, uint32_t; typedef signed short int int16; typedef unsigned char *ucharptr; typedef int postnr; typedef int gatunr; postnr x = 41501; gatunr y = 3; x = y; // helt OK uint32 a, b = 0, c; int16 d; ucharptr p; // Lurighet: * ingår inte i typdeklarationen typedef char* byteptr, byteptr2; // fel! typedef char* byteptr, byte; // rätt typedef char *byteptr, byte; // tydligare! typedef förenklar/förkortar ufryck, vilket kan öka läsbarheten. typedef unsigned char uint8, ; typ alias/typnamn 27
28 Array (Fält) #include <stdio.h> char namn1[] = 'E', 'm', 'i', 'l', '\0'; char namn2[] = "Emilia"; char namn3[10]; int main() printf("namn1: %s \n", namn1); printf("namn2: %s \n", namn2); printf("sizeof (namn2): %i \n", sizeof(namn2)); int a[] = 3, 2, 1, 0; int b[5]; float c[6] = 2.0f, 1.0f; int main() a[0] = 5; b[4] = a[2]; c[3] = 3.0f; return 0; return 0; Utskris: namn1: Emil namn2: Emilia sizeof(namn2): 7 28
29 Structs (sammansafa datatyper) Sv: Poster optional struct StructName typ medlem1; typ medlem2; variabel1, variabel2 ; optional Ekvivalenta skrivsätt: struct Player // Player kan här skippas int age; char* name; player1, player2; Eller: struct Player int age; char* name; ; struct Player player1, player2; Eller: typedef struct tplayer // tplayer kan skippas int age; char* name; Player ; Player player1, player2; 29
30 Structs (sammansafa datatyper) Initieringar av structs Vanligt förekommande: typedef struct int age; char* name; Player; //Player är nu typalias för denna struct. Fördel: slipper skriva struct Player Player player1 = 15, "Ulf"; Player player2 = 20, "John Doe"; // eller t ex player1.age = 16; player1.name = "Striker"; Structs kan innehålla andra structs: typedef struct int x; int y; Position; typedef struct int age; char* name; Position pos; Player; Player player1 = 15, "Striker, 5, 10; // eller t ex player1.pos.x = 6; player1.pos.y = 11; // player1.pos = 5,10 // går tyvärr ej i C. // Ofullständing initiering OK! Player player1 = 15, "Striker, 5; 30
31 Structs (sammansafa datatyper) I uppgift 39: typedef struct tpoint unsigned char x; unsigned char y; POINT; #define MAX_POINTS 20 typedef struct tgeometry int numpoints; int sizex; int sizey; POINT px[ MAX_POINTS ]; GEOMETRY, *PGEOMETRY; Skapa och initiera en variabel av typen GEOMETRY: GEOMETRY ball_geometry = 12, 4, 4, // POINT px[20] 0,1, // px[...] 0,2, 1,0, 1,1, 1,2, 1,3, 2,0, 2,1, 2,2, 2,3, 3,1, 3,2 // Här utnyttjar vi ofullständig // initiering (12 av 20) ; 31
32 Programstruktur // main.c #include <stdio.h> #include "foo.h" int main() printf("x is %i", foo(0)); return 0; // foo.h int foo(int x); // foo.c #include <stdlib.h> int foo(int x) if( x == 0 ) int x = 4; return x; return x; c-fil Inkluderar header-fil header-fil Innehåller funk?onsprototyper c-fil header-filen måste inte ha samma namn som c-filen, men det är enklare så. 32
33 33
34 Definieras osa i stdint.h Men för arm-kompilatorn har vi inga färdiga.h-filer. Kan finnas online 34
35 Från källkod?ll exekverbar 1. Preprocessing 2. Kompilering 3. Länkning 35
36 Preprocessorn // main.c #include <stdio.h> #include "foo.h" Copy-paste av filer #define MAX_SCORE 100 #define SQUARE(x) (x)*(x) Find-and-replace av strängar int main() printf("högsta möjliga poäng är %i\n", MAX_SCORE); printf("kvadraten av 3 är %i\n", SQUARE(1+2)); printf("x is %i", foo(0)); return 0; Preprocessorn arbetar på källkoden på textnivå. 36
37 Kompilering Processar en.c-fil i taget: Skapar en objekwil (dvs.o-fil), per.c-fil, som innehåller: Maskinkod för instruk?oner Symboler för addresser För funk?oner/variabler i objekwilen. För funk?oner/variabler i andra objekwiler/bibliotek. 37
38 38
39 Build 39
40 Länkning Säfer samman (flera) objekwiler?ll en exekverbar fil (.exe /.s19 el dyl). Översäfer symbolerna?ll (rela?va) adresser. 40
41 41
42 Aritme?ska operatorer Basic assignment Addi?on Subtrac?on Unary plus (integer promo?on) +a Unary minus (addi?ve inverse) -a Mul?plica?on Division Modulo (integer remainder) Increment Decrement Prefix Poswix Prefix Poswix a = b a + b a - b a * b a / b a % b hfp://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#arithme?c_operators ++a a++ --a a-- 42
43 Jämförelseoperatorer Equal to Not equal to Greater than Less than Greater than or equal to a == b a!= b a > b a < b a >= b Less than or equal to a <= b hfp://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#comparison_operators.2frela?onal_operators 43
44 Logiska operatorer Logical nega?on (NOT)!a Logical AND Logical OR a && b a b hfp://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#logical_operators 44
45 Bit opera?oner Bitwise NOT ~a Bitwise AND Bitwise OR Bitwise XOR Bitwise les shis Bitwise right shis a & b a b a ^ b a << b a >> b hfp://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#bitwise_operators 45
46 Sammansafa?lldelsningsoperatorer Operator name Syntax Meaning Addi?on assignment a += b a = a + b Subtrac?on assignment a -= b a = a - b Mul?plica?on assignment a *= b a = a * b Division assignment a /= b a = a / b Modulo assignment a %= b a = a % b Bitwise AND assignment a &= b a = a & b Bitwise OR assignment a = b a = a b Bitwise XOR assignment a ^= b a = a ^ b Bitwise les shis assignment a <<= b a = a << b Bitwise right shis assignment a >>= b a = a >> b hfp://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#compound_assignment_operators 46
47 If-else satser int x = -4; if( x == 0 ) //... if( x ) //... else //... Utvärderar?ll falskt, kör ej. Utvärderas?ll sant, kör, ty ( x!= 0 ) Noll betraktas som falskt. Allt som är skilt från noll betraktas som sant. 47
48 Loopar int x = 5; int x = 5; while( x!=0 ) x--; while( x ) x--; int x; for( x=5; x; ) x--; Tre ekvivalenta loopar. Om inga måsvingar används så är loopkroppen ef enda ufryck. 48
49 Kort om pekare?ll portar #define PORT_DISPLAY_BASE 0x // MD407 port E #define portodrlow ((volatile unsigned char *)(PORT_DISPLAY_BASE+0x14)) #define portodrhigh ((volatile unsigned char *)(PORT_DISPLAY_BASE+0x14+1)) // Skriv 5 till porten *portodrlow = 5; // Förklaring: Innehållet på den här adressen i RAM-minnet sätts lika med 5 * ((volatile unsigned char *)0x ) = 5; Type-cast av talet 0x till en pekare till en unsigned byte. Volatile innebär här att kompilatorn inte får optimera bort tilldelningen. char c = * ((volatile unsigned char *)0x ); // Läsning Mer nästa lek?on 49
50 Grafisk display uppg lab #define B_SELECT 4 static void graphic_ctrl_bit_set( unsigned char x ) *portodrlow &= ( ~B_SELECT ); // Clear SELECT bit *portodrlow = ( ~B_SELECT & x );// Man bör nollställa SELECT-biten, ty den // kan vara 1. // *portodrlow = x; // ej tillräckligt! static void graphic_ctrl_bit_clear( unsigned char x ) *portodrlow &= ( ~B_SELECT & ~x); // Clear SELECT and bits x 50
51 Grafisk display uppg lab static void graphic_write(unsigned char val, unsigned char controller) *portodrhigh = val; select_controller( controller ); // Add this line! delay_500ns(); graphic_ctrl_bit_set( B_E ); delay_500ns(); graphic_ctrl_bit_clear( B_E ); if( controller & B_CS1 ) select_controller( B_CS1); graphic_wait_ready(); if( controller & B_CS2 ) select_controller( B_CS2); graphic_wait_ready(); sta?c unsigned char graphic_read(unsigned char controller) display_read(controller); // a dummy read return display_read(controller); *portodrhigh = 0; graphic_ctrl_bit_set( B_E ); select_controller( 0 ); 51
Repetition C-programmering
Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition
Läs merIntroduktion C-programmering
Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder
Läs merGrundläggande C-programmering del 1 - För maskinorienterad programmering
Grundläggande C-programmering del 1 - För maskinorienterad programmering Ulf Assarsson Läromoment: Datatyper, arrayer, synlighet Preprocessing, kompilering, länkning IDE,.c- /.h-filer, Läromoment för hemuppgifterna
Läs merGrundläggande C-programmering del 1 - För maskinorienterad programmering
Grundläggande C-programmering del 1 - För maskinorienterad programmering Ulf Assarsson Läromoment: Datatyper, arrayer, synlighet Preprocessing, kompilering, länkning IDE,.c- /.h-filer, Läromoment för hemuppgifterna
Läs merIntroduk)on C- programmering
Introduk)on C- programmering Ulf Assarsson Originalslides av Viktor Kämpe C Bakgrund Short Code, 1949, possibly 1:st high level language for a real machine Autocode, early 50 ies. Fortran, IBM, ~57. Lisp,
Läs merGrundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Läs merGrundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Läs merUlf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volafle, #define Arrayer av pekare, arrayer av arrayer Hemuppgi9er: v2. Föregående
Läs merProgrammering av inbyggda system. Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe
Pekare och Arrayer Ulf Assarsson Originalslides av Viktor Kämpe Pekare Pekarens värde är en adress. Pekarens typ berä>ar hur man tolkar bitarna som finns på adressen. char str[] = "apa"; char* p = &str[0];
Läs merPekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe
Pekare och Arrayer Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Här jag jag lagt upp eb något större projekt som är programmerat i C, så ab ni kan se eb mer realisgskt exempel på
Läs merStructs och funktionspekare
Grundläggande C-programmering del 3 Structs och funktionspekare Ulf Assarsson Läromoment: Structs, pekare till structs (pilnotation), array av structs, Portadressering med structs Funktionspekare, structs
Läs merIntroduk)on C-programmering
Introduk)on C-programmering Ulf Assarsson Originalslides av Viktor Kämpe 2 C Bakgrund Short Code, 1949, 1:st high level language Autocode, early 50 ies. Fortran, IBM, ~57. Lisp, 58. Cobol 60 (Common Business-oriented
Läs merDemonstration och konsultation Arbetsbokens avsnitt 5 och 6 LCD Grafisk display Introduktion till laboration 3
LCD Display och Grafik Demonstration och konsultation Arbetsbokens avsnitt 5 och 6 LCD Grafisk display Introduktion till laboration 3 Målsättning: Efter lektionen ska alla självständigt kunna slutföra
Läs merFortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe
Fortsä'ning Pekare Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Pekare och Arrayer/VK 3 Förra föreläsningen Pekare Bll data Arrayer fix storlek och adress Dynamisk minnesallokering
Läs merProgrammering av inbyggda system. Pekare och Arrayer. Viktor Kämpe
Pekare och Arrayer Viktor Kämpe Pekare Pekarens värde är en adress. Pekarens typ berättar hur man tolkar bitarna som finns på adressen. unsigned char* pek 0x3026 0x3026 0110 0001 typ värdet är en adress...
Läs merFortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe
Fortsä'ning Pekare Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Pekare och Arrayer/VK 3 Förra föreläsningen Pekare Bll data Arrayer fix storlek och adress Dynamisk minnesallokering
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Läs merUlf Assarsson. Grundläggande C-programmering del 3. Läromoment: Grundläggande C-programmering del 3
Grundläggande C-programmering del 3 Ulf Assarsson Läromoment: Grundläggande C-programmering del 3 enum, union, byte-adressering med unions, include-guards Pekare och arrayer, 2D-arrayer dubbelpekare Kopplat.ll:
Läs merProgrammering av inbyggda system. Kodningskonventioner. Viktor Kämpe
Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK
Läs merProgrammering av grafisk display
Programmering av grafisk display Arbetsboken avsnitt 5 - Drivrutrin för grafisk display, s. 86-96. Datablad LCD Grafisk under resurser på kurshemsidan, s.14-23. Lab 3 - Drivrutiner - Enkel grafik Lab 5
Läs merEn kort text om programmering i C.
En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,
Läs merGrundläggande C-programmering del 4 Mer programstruktur samt Dynamisk minnesallokering Ulf Assarsson
Grundläggande C-programmering del 4 Mer programstruktur samt Dynamisk minnesallokering Ulf Assarsson Läromoment: Synlighet static, #extern, (inline), #if/#ifdef, #include guards, enum, union, little/big
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs merProgrammering av grafisk display
Programmering av grafisk display Arbetsboken avsnitt 5 - Drivrutrin för grafisk display, uppg. 5.10-5.16. Datablad LCD Grafisk under resurser på kurshemsidan, s.14-23. Lab 3 - Drivrutiner - Enkel grafik
Läs merProgrammering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world
Programmering i C Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur Kernighan, Ritchie: The C Programming Language, Second edition, Steve Oualline:
Läs merDatatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Läs merDet finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
Läs merÖversikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström
DST 1 Nicholas Wickström IDE, Högskolan i Halmstad 2009 1 Outline 1 Vad är Hårdvara? (Datorsystemmodell; processor m. periferi, IO, Minne) Typiskt för hårdvarunära programmering (datablad, register, datastrukturer,...)
Läs merC-programmering. Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur
C-programmering Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur I Bilting, Skansholm: Vägen till C I Kernighan, Ritchie: The C Programming Language,
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merUlf Assarsson. Grafisk display + seriekommunika3on (USART) Läromoment: USART Grundläggande C-programmering del 2
Grafisk display + seriekommunika3on (USART) Ulf Assarsson Läromoment: USART Grundläggande C-programmering del 2 Pekare portadressering med structs structs med funk.onspekare Kopplat.ll: Arbetsbok avsni5:
Läs merKompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Läs merEnkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
Läs merProgrammeringsteknik för Ingenjörer VT06. Föreläsning 10
Programmeringsteknik för Ingenjörer VT06 Föreläsning 10 Dagens föreläsning Repetition Strukturer Programmeringsteknik för ingenjörer, VT06 2 Deklaration: char name1[10]; char *name2; Repetition - Strängar
Läs merC-programmering del 4. Ulf Assarsson. extern, sta.c, Överkurs: const, inline, Gameloop, grafikloop, fraktalt berg
C-programmering del 4 Ulf Assarsson Läromoment: extern, sta.c, Överkurs: const, inline, Gameloop, grafikloop, fraktalt berg Kopplat.ll: Lab 5 - spelprogrammering Kombinera C och assembler Anropa assembler-ru.ner
Läs merProgrammering av inbyggda system
GPIO, In- och utmatning Demonstration och konsultation ST407 GPIO konfigurering och användning Arbetsbokens avsnitt 4 och 5 LCD ASCII-display Keyboard Introduktion till laboration 2 Demonstrationsövning
Läs merGrunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY
Grunderna i C++ ARK 385: Virtuella Verktyg i en Materiell värld AT Arkitektur & Teknik Chalmers Tekniska Högskola 2009 - Kursen skapades (3 förel.) 2010-6 förel. + 2 projekt 2011-8 förel. Helt omarbetade
Läs merF4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Läs merProgrammering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Läs merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merFöreläsning 3: Booleans, if, switch
TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt
Läs merInnehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java
Innehåll EDAF30 Programmering i C++ 1. Introduktion 1 Om kursen Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Presentation av C++ Historik Inledning Datatyper och variabler 1. Introduktion 2/1 Viktiga
Läs merTentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
Läs merC-programmering, föreläsning 2 Jesper Wilhelmsson
C-programmering, föreläsning 2 Jesper Wilhelmsson Funktioner void Globala och lokala variabler, scope static Arrayer Strängar ASCII, ANSI Argument till main Slumptal Funktioner Nu är det dags att börja
Läs merPoster ( structar ) Postdeklarationer
Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.
Läs merTDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Läs merEDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment
EDAf30: Programmering i C++, 7.5 hp EDAF30 Programmering i C++ 1. Introduktion Sven Gestegård Robertz Datavetenskap, LTH 2015 Mål: Kursens syfte är att ge kunskaper i objektorienterad programmering i C++.
Läs merClasses och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Läs merTDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 3 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Operatorer Java Standard Library Inmatning Operatorer operatorer En operator är en
Läs merGrundkurs Programmering
HI124 Grundkurs Programmering F7b: Funktioner på djupet! A. Cajander, STH 6 1 5 42 3.14f a float char short circuit order of subexp eval. Dagens fokus = + - * / % ++ -- + - * / % & ^ > ==!= > < >=
Läs merData, typ, selektion, iteration
Data, typ, selektion, iteration En programmeringkurs på halvfart IDT, MDH ttp://www.negative-g.com/nolimits/no%20limits%20defunct%20coasters.htm 1 Dagens agenda Talrepresentation Typkonvertering Sekvens
Läs merEtt enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1
Ett enkelt program i C++, hello.cpp C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel int
Läs merTDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om
Läs merC konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.
C C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories. För att användas vid implementering av UNIX. Bygger på de tidigare språken BCPL och B. Målsättning: Att få ett högnivåspråks
Läs mergrundläggande C++, funktioner m.m.
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel Ett enkelt program i C++, hello.cpp #include
Läs merGrundläggande datalogi - Övning 1
Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b
Läs merProgrammering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
Läs merImperativ programmering. Föreläsning 3
Imperativ programmering 1DL126 3p Föreläsning 3 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering
Läs merIntroduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Läs merF5: Högnivåprogrammering
F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via
Läs merGRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse
GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion
Läs merF5: Högnivåprogrammering
1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Läs merClasses och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Läs merAssemblerprogrammering för ARM del 2
Assemblerprogrammering för ARM del 2 Ur innehållet Programflöde Subrutiner, parametrar och returvärden Tillfälliga (lokala) variabler Läsanvisningar: Arbetsbok kap 2 Quick-guide, instruktionslistan Assemblerprogrammering
Läs merI Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Läs merEn klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.
2 1 0 / ) - & 9 > ; 7 * ( ) ) En klass behöver både deklaration och definition Deklaration i h (hh) och definition i cc (cpp) Private är förvalt Student::learn() Student::Student() Student::~Student()
Läs merTillämpad programmering
Tillämpad programmering C++ objekt Johan Montelius 1 struct struct Person { string name; int age; ; Person p; p.name = Joe ; p.age = 42; cout
Läs merÖvning2. Variabler. Data typer
Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man
Läs mer2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida:
2D1387, Programsystemkonstruktion med C++ 00/01 1 Slide 1 2D1387, Programsystemkonstruktion med C++ Johnny Bigert, johnny@nada.kth.se Kursens hemsida: http://www.nada.kth.se/kurser/kth/2d1387 Varför vill
Läs merProgramsystemkonstruktion med C++
Programsystemkonstruktion med C++ Övning 1 Daniel Aarno bishop@kth.se Översikt övning 1 Kompilering och länkning Makefile Preprocessordirektiv Funktioner Funktionen main() Datatyper Minneshantering Pekare
Läs merLathund. Pacific C för MS-DOS
Lathund Pacific C för MS-DOS Revision 2 2003-08-28 Anders Arvidsson Karl-Johan Krantz Synpunkter välkomnas! Innehållsförteckning 1 Introduktion...3 1.1 Assembler kontra C...3 1.2 Kodexempel...3 1.3 PACIFIC
Läs mer1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler
1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp
Läs merÖvning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Läs merWinstrand Development
C# 2013-01-15 1 Winstrand Development C# med ASP.NET Innehåll Sidhänvisningar ser ut såhär Och hänvisar till Murach 2010 s. 23 Winstrand Development för EC Utbildning 2013-01-15 2 .NET Framework 3 Winstrand
Läs merImperativ programmering. Föreläsning 2
Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.
Läs merFöreläsning 3. Programmering, C och programmeringsmiljö
Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock
Läs merLektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)
Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades
Läs merITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Läs merFöreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden
Föreläsning 7 Uttryck, Operatorer Och Kontrollflöden Nyckelord I Java abstract double int super boolean else interface switch break extends long synchronized byte final native this case finally new throw
Läs merInnehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar
Innehåll EDAF30 Programmering i C++ 3. Mer om klasser. Funktionsanrop Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Klasser pekaren this const för objekt och medlemmar Kopiering friend inline 2 Funktionsanrop
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Läs merAgenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då
Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de
Läs merF5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander
F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean
Läs merTypkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
Läs merProgrambibliotek. Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek
Programbibliotek Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek Läsanvisningar: Arbetsbok kapitel 8 Programbibliotek 1 Programbibliotek
Läs merFörsta exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,
Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, 2003 09 11 Ronnie Johansson, rjo@nada.kth.se Vi kommer att titta på: Kompilering och länkning make och Makefile Preprocessordirektiv main() funktionen
Läs merProgrammering för språkteknologer I, VT2012. Rum
Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska
Läs merInnehåll. Pekare Exempel
Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2017 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.
Läs merProgrammering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26
Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val
732G11 Linköpings universitet 2011-01-26 1 2 3 4 Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron ==
Läs merObjektorienterad programmering Föreläsning 4
Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion
Läs merProgrambibliotek. Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek
Programbibliotek Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek Programbibliotek 1 Programbibliotek Programbibliotek 2 Programbibliotek
Läs merOperatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera
Föreläsning 2 Operatorer Tilldelning Kodblock if satsen Logiska uttryck Att programmera En operator tar ett eller två data och producerar ett svar. Typexemplet är +. Den tar t.ex två heltal och producerar
Läs merÖvning 3 i 2D1324. Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning
Övning 3 i 2D1324 Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning Avancerad c-programering och repetition Typisk h-fil #ifndef special_a
Läs merProgrammering I Tobias Wrigstad fredag, 2009 augusti 28
Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,
Läs mer#include <stdio.h> #include <string.h>
#include #include void fun(char s[]) int i=-1; while(s[++i]!=0) if('a'
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel
732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public
Läs merFöreläsning 10. Pekare (Pointers)
Föreläsning 10 Pekare (Pointers) Dagens kluringar int a=5; int f(int b) a--; b++; return b; int main() int a=3; printf("%d,",f(a)); printf("%d",a); return 0; int f(int a) if(a==1) return a; else return
Läs mer