Kapittel 1 En oversikt over C-språket RR 2015 1
Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske beregninger Benytter egenutviklede funksjoner Benytter funksjoner med parametre 2
Det første C programmet. /* Et program som skriver tekst til skjermen */ #include <stdio.h> // Inkluderer header fil int main() // main() er hvor programmet starter { printf( Dette er et C program. ); return 0; } 3
Kommentarer Kommentarer i C. /* Dette er en kommentar som går over flere linjer */ /* Dette er en kommentar som tar en linje */ // Dette er en enkelt linje kommentar. C++ variant. Kommentarer: Er for mennesker. Forklarer hvordan programmet fungerer. Ignoreres av kompilatoren. 4
Header filer Inneholder informasjon som kompilatoren trenger. Headerfiler inneholder informasjon om funksjoner og data som er definert i C sitt standard library. F.eks må vi inkludere stdio.h for å benytte printf() funksjonen. Alle headerfiler har endelsen.h Som f.eks stdio.h math.h stdlib.h Preprosessor kommandoer. (begynner med # tegnet) er kommandoer som kompilatoren utfører før den kompilerer programmet. Før programmet kompileres erstatter kompilatoren linjen #include <stdio.h> med innholdet i filen stdio.h 5
Funksjonen main() Er stedet hvor programmet starter Alle C program skal ha en og bare en main() funksjon int main() { } C setninger // blokk Parentesene () forteller kompilatoren at main() er en funksjon Krøllparantesene { } markerer start og stopp for koden til funksjonen main(); - angir en blokk. 6
Setning - statement Blokk - compound statements Er kode som er avgrenset med krøllparentesene { } Den første linjen i blokken er setningen; printf( Dette er et C program. ); Hver setning avsluttes med semikolon ; Under kjøring utføres en og en setning etter hverandre Et C program består av en eller flere setninger 7
Å skriv tekst til skjermen Setningen printf( Dette er et C program. ); skriver strengen Dette er et C program. til skjermen Streng - string er en sekvens med tegn som er avgrenset med Dette er et C program. // angir en streng 8
return 0; avslutter programmet og returnerer 0 til den kallende prosessen som i dette tilfellet er operativsystemet 0 betyr at programmet terminerer korrekt Andre verdier betyr at programmet terminerer på grunn av en eller annen feil Er lov å utelate return i main(), må da skrive: void main() { }... // Kan eventuelt skrive bare return; 9
return-type funk-navn(parameterliste) { } Generell form til funksjoner funksjons kropp. (Deklarasjoner og C setninger.) return-type kan bruke en hvilken som helst type. void brukes hvis funksjonen ikke returnerer noen verdi. en funksjon kan bare returnere en verdi med return. Parameterlisten spesifiserer type og navn til variablene i funksjonen er tom hvis funksjonen ikke har parametere 10
Funksjonskroppen begrenses med krøllparentesene { og } består av C setninger som spesifiserer hva funksjonen skal gjøre kan også inneholde kall til andre funksjoner funksjonen avslutter og returnerer til den kallende funksjonen når; programmet kommer til siste krøllparentes } eller når en return setning utføres 11
Grunnleggende datatyper char - holder tegn (ascii verdi) Små heltall (-128 -> 127). int - heltall float - desimaltall double - dobbel presisjon desimaltall void - verdiløs 12
Program med en variabel #include <stdio.h> int main() { int verdi; // Deklarerer en int variabel verdi = 111; // Tilordner en verdi printf( Verdien er: %d, verdi); verdi = 555; printf( Ny verdi er: %d, verdi); return 0; } 13
Kommaseparert liste. int gallon, liter; Mer om deklarasjon Samme som: int gallon; int liter; Flere variabler av samme type kan deklareres i samme setning ved å separere de med komma. 14
Hvordan virker printf()? printf() funksjonen kan skrive formatert til skjerm. Dvs at vi kan skrive ut innholdet i tekststrenger, variabler og konstanter. Må benytte en formatspesifikator (format tegn %) for å angi datatypen som skal skrives ut. printf( Verdien er: %d, verdi); %d int (heltall) %f float (desimaltall) %c char (enkelt tegn) %s string (tekst streng) %p pointer (peker - adresse) 15
Eksempel med printf(). #include <stdio.h> int main() { char ch; float f; double d; } ch='x'; f=100.123; d=987.654; printf("ch er %c, ", ch); printf("f er %f, ", f); printf("d er %f, ", d); return 0; Resultat: ch er X, f er 100.123001, d er 987.654000 16
Lese fra tastaturet med scanf() Setningen scanf() benyttes for å lese data etter et gitt format fra tastaturet. Skal vi lese et heltall så benyttes formen; scanf( %d, &int_var); Det første argumentet angir formatet data skal tolkes med. I dette tilfelle som heltall, derfor %d. Det andre argumentet angir hvor innleste data skal legges. I dette tilfelle i en heltallsvariabel int_var. 17
Eksempel på bruk av scanf(). int main() { int tall; float f; double d; printf("tast inn et heltall. "); scanf("%d", &tall); printf("tast inn desimaltall. "); scanf("%f", &f); printf("tast inn et desimaltall. "); scanf("%lf", &d); } printf("tall er %d. f er %f. d er %f", tall, f, d); return 0; 18
Aritmetiske operatorer. Det er 5 aritmetiske operatorer i C. + addisjon - subtraksjon * multiplikasjon / divisjon % modulus (rest etter heltalls divisjon) Hva blir; 5/2 5.0/2 5%2 4%2 19
En liten beregning. int main() { float gallon, liter; printf("skriv inn antall gallon: "); scanf("%f", &gallon); liter = gallon * 3.7854; printf("%f gallon tilsvarer %f liter.", gallon, liter); } return 0; 20
Funksjoner er elementer som C program bygges opp av. En funksjon inneholder en eller flere C setninger. I gode C programmer utfører en funksjon kun en mindre oppgave. Alle funksjoner har et navn som brukes når funksjonen skal kalles. En funksjon har ( ) bak navnet sitt. To typer funksjoner: - egendefinerte-funksjoner (dem vi lager selv) - biblioteks-funksjoner 21
Hvordan lage egne funksjoner? return-type funk-navn(parameterliste) { } funksjons kropp. (Deklarasjoner og C setninger.) 22
En egendefinerte funksjon void minfunk(void); // prototyp til minfunk() int main() { } minfunk(); // kaller minfunk() printf( I main() ); minfunk(); // kaller minfunk() printf( Tilbake i main() ); return 0; 23
minfunk(void) void minfunk(void) // funksjonshode { // definisjon av minfunk() printf( I minfunk() ); } return; 24
Implementasjon av funksjoner Funksjons prototypen void minfunk(); forteller kompilatoren at minfunk er navnet til en funksjon void forteller at minfunk() ikke returnerer noen verdi funksjonsprototypen skal deklareres før main() Det er kun main() funksjonen som ikke trenger en prototyp Funksjonskroppen ( hva funksjonen skal utføre) inneholder setningene som funksjonen skal utføre Nb! Ikke semikolon etter funksjonshodet 25
Funksjon med parametere void mul(int x, int y); // prototyp til mul() void main() { int i, j; mul(10, 20); i = 4; j = 5; mul(i, j); return; } // Lokale variabler // funksjonskall // funksjonskall 26
Funksjonen mul() /* Funksjon som multipliserer to tall og skriver resultatet til skjerm. **************************************/ void mul(int x, int y) { } printf( x*y= %d, x*y ); return; // skriver ut resultatet 27
Parametere og argumenter Funksjons-argumenter: brukes i funksjonskallet til å sende verdier til en funksjon mul(10, 20); // 10 og 20 er argumenter i = 4; j = 5; mul(i, j); // i og j er argumenter Funksjons-parametrer: brukes av funksjonen til å motta verdier i funksjonskallet void mul(int x, int y) // x og y er funksjons-parametre 28
Funksjon med returverdi int mul(int x, int y); int main() { int i=4, j=5; // prototyp til mul() printf( res = %d, mul(10, 20) ); printf( res = %d, mul(i, j) ); return 0; } int mul(int x, int y) { return (x*y); } // her starter mul()funksjonen // retur med int verdi. 29
Noen biblioteksfunksjoner #include <stdio.h> #include <math.h> / / for abs() og sqrt() int main() { } printf("%d\n", abs(-10) ); printf("%f\n", fabs(-12.5) ); printf("%f\n", sqrt(16) ); return 0; Absoluttverdi får vi med abs() og fabs() Kvadratrot får vi med sqrt() 31
Ny linje \n int main() { } printf( en\n ); printf( to\n ); printf( tre ); printf( fire\n ); return 0; // \n - linjeskift. Resultat en to trefire 32
Semikolon I C indikerer ; (semikolon) slutten på en logisk enhet x = y; y = x + 1; mul(x, y); er det samme som x = y; y = x + 1; mul(x, y); 33
C nøkkelord I C er det definert 32 nøkkelord C nøkkelord og C syntaks er programmeringsspråket C. I C er det forskjell på store og små bokstaver. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigne continue for signed void default goto sizeof volatile do if static while 34
Identifikatorer i C Er navn på variabler og funksjoner som vi lager. Regler for navn kan bestå av 1 til uendelig mange tegn. de 1024 første tegnene er signifikante. må starte med en bokstav i det engelske alfabetet eller med tegnet _ (underscore) de neste kan være bokstaver, tall eller _ det er forskjell på store og små bokstaver // antall, _navn, x8, topp_av_fil, MAX, max NB! æ, ø, å kan ikke brukes i identifikatorer. C nøkkelord kan heller ikke brukes. 35
C biblioteket Består av funksjoner som utfører en rekke oppgaver I/O operasjoner matematiske operasjoner manipulering av strenger pluss mye mer NB!! Husk å ta med riktige header-filer. 36