Repetition C-programmering

Relevanta dokument
Introduktion C-programmering

Grundläggande C-programmering del 1 - För maskinorienterad programmering

Grundläggande C-programmering del 1 - För maskinorienterad programmering

Grundläggande C-programmering

Introduk)on C- programmering

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

TDDC77 Objektorienterad Programmering

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe

En kort text om programmering i C.

TDIU01 - Programmering i C++, grundkurs

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Föreläsning 10. Pekare (Pointers)

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Klassdeklaration. Metoddeklaration. Parameteröverföring

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Funktionens deklaration

TDIU01 - Programmering i C++, grundkurs

Det finns många flaggor till g++,

Grundkurs Programmering

6.1 Kompilering och lite grundläggande information

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Programmering av inbyggda system. Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe

Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

Tentamen Grundläggande programmering

Programmering för språkteknologer I, VT2012. Rum

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

C-programmering. Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur

Introduk)on C-programmering

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

Övning2. Variabler. Data typer

C++ - En introduktion

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 3. Programmering, C och programmeringsmiljö

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

Objektorienterad programmering Föreläsning 4

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Uttryck och villkor. Föreläsning 2

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

C-programmering, föreläsning 2 Jesper Wilhelmsson

TDDC77 Objektorienterad Programmering

Exempel på ett litet Ada-program

Poster ( structar ) Postdeklarationer

Imperativ programmering. Föreläsning 2

Uttryck och villkor. Föreläsning 2

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Pekare och arrayer. Indexering och avreferering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Planering Programmering grundkurs HI1024 HT 2014

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Obligatorisk uppgift 5

Programmering i C, 7,5 hp

Föreläsning 2 Programmeringsteknik och C DD1316

Objektorienterad Programmering (TDDC77)

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Tentamen ges för: Tentamensdatum: Tid:

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Grundläggande C-programmering del 4 Mer programstruktur samt Dynamisk minnesallokering Ulf Assarsson

grundläggande C++, funktioner m.m.

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

TDDC76 - Programmering och Datastrukturer

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Grundläggande datalogi - Övning 1

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

*Pekarvärden *Pekarvariabler & *

Styrteknik: MELSEC FX och numeriska värden

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

PROMETHEUS. Ett typat, objektorienterat programmeringsspråk av Tim Andersson.

DD1314 Programmeringsteknik

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

F4. programmeringsteknik och Matlab

1 Funktioner och procedurell abstraktion

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

C-programmering, föreläsning 1 Jesper Wilhelmsson

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

Övning från förra gången: readword

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Data, typ, selektion, iteration

Innehållsförteckning

Planering Programmering grundkurs HI1024 HT TIDAA

Programmeringsteknik med C och Matlab

Transkript:

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 C-programmering / VK 2

C Standarder 1978, K&R C (Kernighan & Ritchie) 1989, C89/C90 (ANSI-C) 1999, C99 (Rev. ANSI-standard) 2011, C11 (Rev. ANSI-standard) Repetition C-programmering / VK 3

Hello world! program #include <stdio.h> int main() { printf( Hello World!\n"); return 0; Repetition C-programmering / VK 4

Integrerad utvecklings miljö (IDE) Kör Bygg T ex CodeLite som är gratis och open-source. (http://codelite.org/ ) Repetition C-programmering / VK 5

Från terminalen > gcc o hello.exe main.c > hello.exe Hello World! > Bygg Kör Repetition C-programmering / VK 6

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; Utskrift: x har nu võrdet 129 och y har võrdet 97 som kodar tecknet a Repetition C-programmering / VK 7

Deklarationer och tilldelningar #include <stdio.h> int x; int main() { char y; x = 32; y = 'a'; Deklarationer 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 tilldelats ett värde är oinitialiserad Repetition C-programmering / VK 8

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 att man castar. Repetition C-programmering / VK 9

Repetition C-programmering / VK 10

C89 deklarationer först #include <stdio.h> int x; int main() { x = 32; En tilldelning innan deklarationerna är EJ tillå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 inte i XCC12 som vi ska använda senare. Repetition C-programmering / VK 11

Funktioner #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 fortfarande värdet 7 efter funktionsanropet Repetition C-programmering / VK 12

Synlighet/Visibility/Scope Global synlighet Fil synlighet Local synlighet (global scope) (file scope) (e.g. function scope) Repetition C-programmering / VK 13

Synlighet på fil nivå #include <stdlib.h> char x; int foo() { // x är synlig // y är inte synlig char y; Repetition C-programmering / VK 14

Synlighet på funktionsnivå #include <stdlib.h> char x; int foo(float x) { // argumentet x (float) är synligt Repetition C-programmering / VK 15

Synlighet på funktionsnivå #include <stdlib.h> char x; int foo() { int x = 4; return x; Repetition C-programmering / VK 16

Vilken synlighet har högst prioritet? #include <stdio.h> int x; int foo(int x) { if( x == 0 ){ int x = 4; return x; Ok enligt C99, men ej C89 return x; int main() { x = 1; x = foo(0); printf("x is %i", x); return 0; Vad är x? Repetition C-programmering / VK 17

Funktionsprototyper #include <stdio.h> // funktionsprototyp int foo(int x); int main() { printf("x is %i", foo(0)); return 0; int foo(int x) { // funktionskropp Repetition C-programmering / VK 18

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 funktionsprototyper c-fil header-filen måste inte ha samma namn som c-filen, men det är enklare så. Repetition C-programmering / VK 19

Från källkod till exekverbar 1. Preprocessing 2. Kompilering 3. Länkning Repetition C-programmering / VK 20

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å. Repetition C-programmering / VK 21

Kompilering Processar en c-fil i taget Skapar en objektfil som innehåller: Maskinkod för instruktioner Symboler för addresser För funktioner/variabler i objektfilen. För funktioner/variabler i andra objektfiler/bibliotek. Repetition C-programmering / VK 22

Länkning Sätter samman (flera) objektfiler till en exekverbar fil (.exe). Översätter symbolerna till (relativa) adresser. Repetition C-programmering / VK 23

Aritmetiska operatorer Basic assignment Addition Subtraction Unary plus (integer promotion) +a Unary minus (additive inverse) -a Multiplication Division Modulo (integer remainder) Increment Decrement Prefix Postfix Prefix Postfix a = b a + b a - b a * b a / b a % b http://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#arithmetic_operators ++a a++ --a a-- Repetition C-programmering / VK 24

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 http://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#comparison_operators.2frelational_operators Repetition C-programmering / VK 25

Logiska operatorer Logical negation (NOT)!a Logical AND Logical OR a && b a b http://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#logical_operators Repetition C-programmering / VK 26

Bit operationer Bitwise NOT ~a Bitwise AND Bitwise OR Bitwise XOR Bitwise left shift Bitwise right shift a & b a b a ^ b a << b a >> b http://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#bitwise_operators Repetition C-programmering / VK 27

Sammansatta tilldelsningsoperatorer Operator name Syntax Meaning Addition assignment a += b a = a + b Subtraction assignment a -= b a = a - b Multiplication 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 left shift assignment a <<= b a = a << b Bitwise right shift assignment a >>= b a = a >> b http://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#compound_assignment_operators Repetition C-programmering / VK 28

If-else satser int x = -4; if( x == 0 ){ //... if( x ){ //... else { //... Utvärderar till falskt, kör ej. Utvärderas till sant, kör, ty ( x!= 0 ) Noll betraktas som falskt. Allt som är skilt från noll betraktas som sant. Repetition C-programmering / VK 29

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 loop-kroppen ett enda uttryck. Repetition C-programmering / VK 30

Nästa föreläsning: Pekare Repetition C-programmering / VK 31

Pekare Har ett värde och en typ Värdet är en minnesadress. Typen talar om vad som finns där. Repetition C-programmering / VK 32

Operatorer för pekare Operator name Syntax Array subscript a[b] Indirection ("object pointed to by a") *a Reference ("address of a") &a Structure dereference ("member b of object pointed to by a") Structure reference ("member b of object a") a->b a.b http://en.wikipedia.org/wiki/operators_in_c_and_c%2b%2b#member_and_pointer_operators Sista operatorn är för att referera medlemmar av en struktur (struct), så ej en pekare operator. Repetition C-programmering / VK 33