• Allt mellan
Kommentarer
/*
och
*/
• Varje kommentar byts ut mot en blank av kompilatorn
/* Exempel på uttryck, tilldelningsoperatorn och
kommentarer*/
#include <stdio.h>
int main(void)
{
int x,y;
x
y
x
y
...
}
F2
=
=
=
=
7;
3;
2*y;
5;
/*
/*
/*
/*
x
y
x
y
får
får
får
får
värdet
värdet
värdet
värdet
7 */
3 */
6 */
5, x påverkas ej */
Programmeringsteknik, 4p vt-00
1
Identifierare
• Får innehålla siffror, bokstäver (A..Z, a..z) och _
• Måste inledas med bokstav (A..Z, a..z) eller _
• Antalet särskiljande tecken varierar,
i ANSI-C minst de 31 första
• Identifierare som inleds med _ används i stort sett
uteslutande för systemprogramändamål
• Nyckelorden reserverade identifierare som ej kan
omdefinieras.
F2
Programmeringsteknik, 4p vt-00
2
Strängkonstanter
• Omges av dubbelsnuttar ”hejsan”
• ’a’ ≠ ”a”
F2
Programmeringsteknik, 4p vt-00
3
Operatorer & skiljetecken
• Aritmetiska operatorer (% resten vid heltalsdivision)
• % kontextberoende
int a=0;b=7;
printf(”a=%i och b=%i”,a,b);
a = b%3;
• Operatorer , skiljetecken och blanktecken separerar
element i språket
F2
Programmeringsteknik, 4p vt-00
4
Prioritetsordning
• I vilken ordning ett uttryck evalueras
• Parenteser bryter denna ordning
• Associativiteten avgör ordningen vid lika prioritet
F2
Programmeringsteknik, 4p vt-00
5
++ & --
• Unära operatorer för att öka resp. minska med ett
• Både post- och prefix (ex. sid 85)
• Bör användas mycket försiktigt!
F2
Programmeringsteknik, 4p vt-00
6
Tilldelningsoperatorn
• Lägst prioritet
• Associerar höger-vänster
• Variabel på vänster sida
• Uttryck på höger sida (Obs! typerna)
F2
Programmeringsteknik, 4p vt-00
7
#include
• alla rader som inleds med # är direktiv till preprocessorn
• include fungerar som ”klistra in”/paste i ett
ordbehandlingsprogram
• Primära syftet är att tillhandahålla funktionsprototyper
i t.ex. stdio.h finns bl.a. följande prototyper :
extern int printf (const char *format, ...);
extern int scanf (const char *format, ...);
• Koden för dessa funktioner är redan kompilerad och läggs till
i ett senare skede
F2
Programmeringsteknik, 4p vt-00
8
Datatyper
• Värdemängd [-128,…,127] (konstanter)
F2
• Operationer
[+,- *,/,%….]
• Relationer
[<,>,<=,….]
• Egenskaper
[udda,jämna]
Programmeringsteknik, 4p vt-00
9
Datatyper
• Minnet uppbyggt av bytes (8 informationsbitar)
• Varje byte finns i en minnesadress
• I en byte lagras ett bitmönster
Hur skall ett bitmönster tolkas?
Positivt binärt tal (0..255)
Binärt tal med tecken (-128..+127)
F2
Programmeringsteknik, 4p vt-00
10
Datatyper i C
F2
typ
bytes
bitar
char
minst 1 minst 8
talomrŒde signed
-128...127
short minst 2 minst 16
-32000...32000
int
minst 2 minst 16
-32000...32000
long
minst 4 minst 32
-2 miljarder...2 miljarder
Programmeringsteknik, 4p vt-00
11
forts. datatyper
F2
typ
bytes
bitar
char
minst 1 minst 8
talomrŒde unsigned
0...255
short minst 2 minst 16
0...65000
int
minst 2 minst 16
0...65000
long
minst 4 minst 32
0...4 miljarder
Programmeringsteknik, 4p vt-00
12
Mer än en byte
•
unsigned måste anges, men signed är automatisk
• Flyttal
– float
– double
– long double
• Tecken
– Char
F2
Programmeringsteknik, 4p vt-00
13
Tecken & typen char
• Alla uppräkningsbara typer (integral type) är heltal
• Alla sådana kan anv. för att representera tecken ’4’, ’.’, ’ä’…
• En variabel av typen char kan lagra ett litet heltal
(1 byte - men längden odef. I C)
• Oftast 8 bitar ->256 distinkta värden
• ASCII - numrering av teckenuppsättningen (app. D s.703)
F2
Programmeringsteknik, 4p vt-00
14
... & typen char
• Variabler av typen char, kan delta i aritmetiska ber.
char c;
c = ’5’;
printf(”%i %i %i”,c,c+1,c+2);
• I utskrifter kan man välja format, och få antingen ASCIIvärdet eller tecknet
F2
Programmeringsteknik, 4p vt-00
15
/*
* testar fenomenet med tecken som heltal
*/
exempel
På min Mac!
#include <stdio.h>
int main(void)
{
unsigned char c = 'z'; /* med unsigned fungerar det!! */
printf(”I ASCII-tabellen ? z -> %c %c %c \n\n",c+1,c+2,c+3);
c = ’å’;
printf("ord('å')=%u ",c);
c = ’ä’;
printf("ord(’ä')=%u ",c);
c = ’ö’;
printf("ord(’ö')=%u ",c);
}
F2
return 0;
Programmeringsteknik, 4p vt-00
16
Heltal & flyttal
• int är den ”normala” heltalstypen (char, short,
long, unsigned)
• Suffix används för att ange heltalstypen för en konstant
(u,l,ul)
• Flyttalstyperna: float, double, long double
(double default för konstanter)
F2
Programmeringsteknik, 4p vt-00
17
Representation av flyttal
• Normaliserat
• Signifikanta siffror
• Exponentdel
F2
Programmeringsteknik, 4p vt-00
18
Operatorn sizeof
• För att ta reda på hur många bytes som reserverats för ett
objekt
– typer
– variabler
– uttryck
• Garanterat att
char ≤ short ≤ int ≤ long
float ≤ double ≤ long double
F2
Programmeringsteknik, 4p vt-00
19
getchar & putchar
• Används för att läsa resp. skriva ett tecken i taget
• EOF definieras i stdio se ex. s.124
F2
Programmeringsteknik, 4p vt-00
20
Matematiska funktioner
• Finns i bibliotek
• Inkluderas med #include math.h
• Argumentet & resultatet av typen double
• int abs(int)
(i stdlib.h)
• double fabs(double) (i math.h)
F2
Programmeringsteknik, 4p vt-00
21
Typkonvertering
• Flera slag av implicit konv. i uttryck
• cast - explicit konvertering (typ)
• Obs! cast operatorn är unär och har samma prioritet som
övriga unära op.
F2
Programmeringsteknik, 4p vt-00
22