C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.

Relevanta dokument
Enkla datatyper minne

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

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

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

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

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

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

Loopar och datatyper. Föreläsning 3

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Objektorienterad programmering Föreläsning 4

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Data, typ, selektion, iteration

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

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

Loopar och datatyper. Föreläsning 3

En kort text om programmering i C.

TDIU01 - Programmering i C++, grundkurs

Programmering A. Johan Eliasson

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde.

Repetition C-programmering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Lathund. Pacific C för MS-DOS

F4. programmeringsteknik och Matlab

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Introduktion C-programmering

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Parameteröverföring. Exempel. Exempel. Metodkropp

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Hantering av textsträngar och talsträngar. William Sandqvist

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

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

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.

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

+LVWRULHQ. .XUVLQQHKnOO 2EMHNWRULHQWHUDGSURJUDPXWYHFNOLQJ ª 2EMHNWRULHQWHUDGDQDO\V ª 2EMHNWRULHQWHUDGGHVLJQ ª 2EMHNWRULHQWHUDGSURJUDPPHULQJ

SMD 134 Objektorienterad programmering

Föreläsning 2 - Intro till Java

Objektorienterad Programmering (TDDC77)

Tecken & Strängar. Kapitel 7

Programmeringsteknik med C och Matlab

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

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

F2 Datarepresentation talbaser, dataformat och teckenkodning

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

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

JAVAUTVECKLING LEKTION 3

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

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

Planering Programmering grundkurs HI1024 HT data

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

Lathund. C för inbyggda system

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

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

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT 2014

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

float Mindre rella tal ( floating point number ) double Rella tal/flyttal ( double precision floating point number )

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Objektorienterad Programmering (TDDC77)

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

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

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Mattias Wiggberg Collaboration

TDIU01 - Programmering i C++, grundkurs

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Exempelsamling Assemblerprogrammering

F3 Datarepresentation teckenkodning och datakompression EDAA05 Datorer i system! Roger Henriksson!

TDDC77 Objektorienterad Programmering

F3 Datarepresentation teckenkodning och datakompression

2 Pekare och dynamiska variabler.

Winstrand Development

C++ - En introduktion

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

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Användning av stack: evaluera uttryck i RPN

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Heltal(int) Programmeringsteknik 54

Lathund. C för inbyggda system

Övning2. Variabler. Data typer

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

Exempel ( )

TDDC77 Objektorienterad Programmering

Att komma igång. Föreläsning 1

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

kind spelling Scanning

Instuderingsfrågor till Steg 1

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Programmering i C, 7,5 hp

Tentamen i. Programmering i språket C

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

TDDC76 - Programmering och Datastrukturer

Transkript:

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 fördelar men ändå ha kvar kontakten med Maskinvaran 1

Första standard : Appendix i boken The C Programming Language, Dennis Ritchie och Brian Kernighan, Prentice-Hall, 1978. Kallas K&R C ANSI-standard, 1989. Kallas ANSI-C Reviderad ANSI-standard 1999. Kallas C99. 2

Språk påverkade av C: C++ Java C# Objective-C Ett antal skriptspråk, t.ex. Perl 3

Det första programmet Filen ex1.c #include <stdio.h> int main() { printf("hello!\n"); return 0; } > gcc ex1.c > gcc -o hello.exe ex1.c > hello.exe Hello! > 4

Programutvecklingsystem: Bara gcc Allmänt: gcc.gnu.org, Speciellt för Windows: www.mingw.org Fungerar fint tillsammans med Notepad++, notepad plus plus.org Dev C++ (enkelt intuitivt, gcc ingår) www.bloodshed.net/dev/devcpp.html Eclipse www.eclipse.org/downloads Visual Studio web.student.chalmers.se/msdnaa/elms_login.php?action=signin Code::Blocks, Gnat, NetBeans, 5

Reserverade ord: auto break case char const continue default do double else enum extern float for goto if inline int long register restrict return short signed sizeof static struct switch typedef union unsigned void volatile while _Bool _Complex _Imaginary 6

Variabler: char teck; int tal; teck = x ; // tilldelning tal = 5; char teck = A ; // initiering int tal = 0; float maxtal = max(a, b); int i, j, k; int i = 1, j = 2, k = 3; int m, n = 5; const char slut = \0 ; const int max_antal = 1000; const int storlek = n * k; const antal_element = 50; // varning i C99 const grans_1 = 28, grans_2 = 48, grans_3 = 60; //varning i C99 7

Heltalstyper: _Bool minst 1 bit signed char minst 8 bitar unsigned char minst 8 bitar [signed] short [int] minst 16 bitar unsigned short [int] minst 16 bitar [signed] int minst 16 bitar unsigned [int] minst 16 bitar [signed] long [int] minst 32 bitar unsigned long [int] minst 32 bitar long long int minst 64 bitar unsigned long long int minst 64 bitar I C99 även: uint_32_t, int_least16_t, int_fast32_t, etc. 8

Konstanter (konstanta värden i programkoden), s.k. literaler: 4 33 9 100000 // decimala konstanter 01 077 02653271 // oktala konstanter 0x1 0X75 0Xff 0xD7A02 // hexadecimala konstanter Heltalskonstanter får normalt typen int. Kan ändras: 45L får typen long int 0653U får typen unsigned int 0x4a65l får typen long int 0501u får typen unsigned int 0775ul får typen unsigned long int 8239775LL får typen long long int 9

Kodning av skrivbara symboler (tecken): ASCII, 7 bitar, 128 tecken, bokstäver a-z, siffror, vanliga specialtecken Latin_1, 8 bitar, 256 tecken, ASCII + västeuropeiska bokstäver + fler specialtecken Unicode, max 24 bitar, max 1 114 112 tecken från alla väldens hörn Varje tecken har ett unikt nummer, en s.k. code point Tecken nummer 0-127 har samma kod som i ASCII Tecken som kan kodas med max 16 bitar ingår i Basic Multilingual Plane (BMP) UTF_32, 32 bitar används för varje tecken UTF_16, ett eller två 16-bitars ord används för varje tecken UTF_8, ett, två eller tre 8-bitars ord (bytes) används för varje tecken, kallas multibyte character i C 10

Teckenkonstanter (får typen int): a F > 7 Escape-sekvenser: \ enkelapostrof \" dubbelapostrof \? frågetecken \\ tecknet \ \0 (null-character) Ett tecken där alla bitar har värdet 0. \a (alert) Ger en ljud- eller ljussignal på terminalen. \b (backspace) Flyttar utskriftspositionen ett steg till vänster. \f (form feed) Flyttar utskriftspositionen till början på nästa sida. \n (new line) Flyttar utskriftspositionen till början på nästa rad. \r (carriage return) Flyttar utskriftspositionen till början på aktuell rad. \t (horisontal tab) Flyttar fram utskriftspositionen till nästa tabstopp. \v (vertical tab) Flyttar utskriftspositionen till början på den rad som är markerad som nästa vertikala tabulatorstopp. \5 \53 \160 \377 // oktal teckenkod \x9 \xd \x5b \x3ff // hexadecimal teckenkod 11

I C99: wchar_t (16 eller 32 bitar) kan representera alla tecken som ingår i BMP i Unicode wchar_t cw = L'\u03B1'; /* lilla alfa */ I standarförslag: char16_t och char32_t char16_t c16 = u'\u20ac'; /* euro-tecknet */ char32_t c32 = U'\U0001D121'; /* C-klav */ 12

Textsträngsliteraler där varje tecken ligger i en char: "A string literal" printf("rad 1\nRad 2\tJag piper nu\a\n"); "C:\\Cpp3\\Ex\\kap3\\temp.txt" "Han ropade: \"Stopp!\"" Textsträngsliteraler där varje tecken ligger i en wchar_t: L"Price: 10\u20AC" /* 20AC är koden för euro-tecknet */ 13

Flyttalstyper: float double long double Flyttalskonstanter (får typen double): 567.7 0.0041 5.0 57. 0.3.003.0 0. Kan ha exponentdel: 0.98765e15 3.11E-5 1.e+12.543E-17 249e25 0e0 Flyttalskonstanter får normalt typen double. Kan ändras: 7.45f 0.624e-7f 0.0F // får typen float 7.123456768656574L 0.93432e50L // får typen long double 14

15 long double högsta typen double float unsigned long long int long long int unsigned long int long int unsigned int int unsigned short int short int unsigned char signed char _Bool lägsta typen

Automatiska typomvandlingar Operanderna till en operator kan omvandlas. Vid tilldelning omvandlas uttrycket i högerledet till den typ som operanden till vänster har. En aktuell parameter till en funktion kan ibland omvandlas. (Se kap 6.) Värdet som returneras från en funktion omvandlas till den typ som funktionen skall ge som resultat. Vid operatorer: de vanliga aritmetiska typomvandlingarna. Den operand som har lägst typ omvandlas till den andra operandens typ. Bivillkor: lägst typen int. 16

Explicita typomvandlingar (casts) (typnamn) uttryck (unsigned int) i (long double) (x + y) (char) k Tillåtet för aritmetiska typer och pekartyper 17

printf, utskrift av heltal: d Värdet tolkas som int, utskrift på decimal form i Samma som d u Värdet tolkas som unsigned int, decimal utskrift o Värdet tolkas som unsigned int, oktal utskrift x Värdet tolkas som unsigned int, hexadecimal utskrift X Samma som x ld Värdet tolkas som long int, decimal utskrift li Samma som ld lu Värdet tolkas som unsigned long int, decimal utskrift lo Värdet tolkas som unsigned long int, oktal utskrift lx Värdet tolkas som unsigned long int, hexadecimal utskrift lx Samma som lx ll Kan stå framför istället för bara l. Man får då long long int, unsigned long long int, etc 18

printf, utskrift av flyttal: f,lf Värdet tolkas som double. Utskrift sker på vanlig form med minst en heltalssiffra. Antalet decimaler bestäms av precisionsangivelsen. Om precision inte anges skrivs 6 decimaler ut. e,le Värdet tolkas som double. Utskrift sker på exponentform med en heltalssiffra. Antalet decimaler bestäms av precisionsangivelsen. Om precision inte anges skrivs 6 decimaler ut. E,lE Samma som e men med den skillnaden att ett stort E används i stället för ett litet e i utskriften. g,lg Värdet tolkas som double. Utskrift sker antingen på vanlig form eller på exponentform. Om värdet är stort (exponenten är större än precisionen) eller litet (exponenten är mindre än -4) sker utskriften på exponentform, annars på vanlig form. G,lG Samma som formen g men med den skillnaden att ett stort E används i stället för ett litet e om utskriften sker på exponentform. Lf Samma som formen f men värdet tolkas som long double. Le Samma som formen e men värdet tolkas som long double. LE Samma som formen E men värdet tolkas som long double. Lg Samma som formen g men värdet tolkas som long double. LG Samma som formen G men värdet tolkas som long double. 19

printf, utskrift av text: c en char innehållande en teckenkod, motsvarande tecken skrivs ut s en pekare till ett fält med char innehållande teckenkoder, motsvarande text skrivs ut lc en wchar_t innehållande en teckenkod, motsvarande tecken skrivs ut ls en pekare till ett fält med wchar_t innehållande teckenkoder, motsvarande text skrivs ut 20

scanf, inläsning av heltal: hd De inlästa tecknen tolkas som ett decimalt heltal och placeras i en variabel av typen short int. hu De inlästa tecknen tolkas som ett decimalt heltal och placeras i en variabel av typen unsigned short int. d De inlästa tecknen tolkas som ett decimalt heltal och placeras i en variabel av typen int. u De inlästa tecknen tolkas som ett decimalt heltal och placeras i en variabel av typen unsigned int. ld De inlästa tecknen tolkas som ett decimalt heltal och placeras i en variabel av typen long int. lu De inlästa tecknen tolkas som ett decimalt heltal och placeras i en variabel av typen unsigned long int. ho De inlästa tecknen tolkas som ett oktalt heltal och placeras i en variabel av typen short int. o De inlästa tecknen tolkas som ett oktalt heltal och placeras i en variabel av typen int. lo De inlästa tecknen tolkas som ett oktalt heltal och placeras i en variabel av typen long int. hx De inlästa tecknen tolkas som ett hexadecimalt heltal och placeras i en variabel av typen short int x De inlästa tecknen tolkas som ett hexadecimalt heltal och placeras i en variabel av typen int. lx De inlästa tecknen tolkas som ett hexadecimalt heltal och placeras i en variabel av typen long int. ll istället för l betyder att typen blir long long int, etc 21

scanf, inläsning av flyttal: e, f, g De inlästa tecknen skall tolkas som ett reellt tal och placeras i en variabel av typen float. le, lf, lg De inlästa tecknen skall tolkas som ett reellt tal och placeras i en variabel av typen double. Le, Lf, Lg De inlästa tecknen skall tolkas som ett reellt tal och placeras i en variabel av typen long double. 22

scanf, inläsning av tecken och texter: c en pekare till en char, ett tecken läses in s en pekare till ett fält med char innehållande, ett ord läses in, nolltecken läggs till [text] som s, men matchar bara tecken som ingår i text ^[text] som s, men matchar bara tecken som inte ingår i text l framför, som ovan men för wchar_t, inlästa tecken tolkas som multibyte characters 23

typedef float vikt, volym; typedef unsigned char text[100]; volym vol1, vol2; vikt vi1, vi2, vi3; text if1, if2; typedef unsigned short int wchar_t; /* tänkbar definition av wchar_t */ 24