Del 1 En oversikt over C-programmering

Like dokumenter
Kapittel 1 En oversikt over C-språket

Del 4 Noen spesielle C-elementer

Del 2 Tabeller, arrays, strenger

Programmeringsspråket C

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Programmeringsspråket C Del 2

IN 147 Program og maskinvare

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

IN 147 Program og maskinvare

Grunnleggende programmering i C

Programmeringsspråket C Del 2. Michael Welzl

Programmeringsspråket C

Del 3. Pekere RR 2016

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

IN 147 Program og maskinvare

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering

Repetisjon fra sist - 1: Plan for dagen. Repetisjon fra sist 2: Hva jeg glemte sist: Nyttige Kommandoer

Programmeringsspråket C

GJØVIK INGENIØRHØGSKOLE

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Vektorer. Dagens tema. Deklarasjon. Bruk

INF1000 (Uke 4) Mer om forgreninger, While-løkker

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Dagens tema. Oppsummering om assemblerspråk. Programmering i C. Bakgrunn. Et minimalt eksempel med forklaring. Datatyper i C.

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Leksjon 2. Setninger og uttrykk

Dagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15

Leksjon 2. Setninger og uttrykk

Programmeringsspråket C Del 3

INF1000 : Forelesning 4

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

IN 147 Program og maskinvare

Hvordan en prosessor arbeider, del 1

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

2. Pekere og referanser.

Dagens tema. Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer

Programmeringsspråket C Del 3. Hans Petter Taugbøl Kragset

Dagens tema INF1070. Signaturer. Typekonvertering. Pekere og vektorer. struct-er. Definisjon av nye typenavn. Lister

TDT4110 IT Grunnkurs Høst 2015

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene

Pekere og referanser.

Dagens tema. Kort repetisjon om rutiner. Programmering i C Variable og adresser. Vektorer. Tekster. Preprosessoren. Separat kompilering

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Java 4. Mer om easyio Mer om forgreninger Løkker. 7. september 2004

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Velkommen til INF1060. Introduksjon til operativsystemer og datakommunikasjon

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Løsningsforslag til 2. del av Del - EKSAMEN

Programmering Høst 2017

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

INF1000 : Forelesning 3

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

Inn og ut i C/C++ 1. Inn og ut i C/C++

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Dagens tema INF1070. Vektorer (array-er) Tekster (string-er) Adresser og pekere. Dynamisk allokering

Dagens tema INF1070. Info om C. Cs preprosessor. Feilsøking. Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29

Informasjon om C. Dagens tema INF1070 INF1070 INF1070 INF1070. Den viktigste kilden til informasjon om C (utenom en god. C-funksjonene.

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Cs preprosessor. Dagens tema. Betinget kompilering

Signaturer. Dagens tema. En vanlig feil int-funksjon. Dette kan noen ganger gi rare feilmeldinger: INF1070 INF1070 INF1070 INF1070

Leksjon 3. Kontrollstrukturer

Dagens tema. Rutiner i LC-2 Og her er tilsvarende kode for LC-2: Funksjoner i C Her er det samme programmet i C: Kort repetisjon om rutiner

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Leksjon 3. Kontrollstrukturer

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

UNIVERSITETET I OSLO

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene

IN 147 Program og maskinvare. Dagens tema

Leksjon 3. Kontrollstrukturer

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Rekker (eng: series, summations)

Forelesning inf Java 5

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Forelesning inf Java 5

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset

Transkript:

Del 1 En oversikt over C-programmering 1 RR 2016

Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av funksjoner/prosedyrer. C-kode mapper effektivt til maskinkode. Tillater hardware-nær koding med pekere. Ofte benyttet for programmering av mikrokontrollere, digitale signalprosessorer og IO-systemer. C er «utgangspunktet» for en rekke høynivåspråk som; C++, C#, Java, JavaScript, Python, PHP 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

Header filer 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 Ex: #include <stdio.h> 4

Grunnleggende datatyper char - holder tegn (ascii verdi), små heltall (-128 -> 127). int - heltall (16 bit eller 32 bit) float - desimaltall double - dobbel presisjon desimaltall void - verdiløs C har følgende modifikatorer signed både positive og negative tall unsigned bare positive tall long utvider tallområdet short krymper tallområdet long double - desimaltall med utvidet tallområde: 80 bit long int stort heltall : 32 bit 5

Datatyper Type Antall bit Verdi område char 8-128 til 127 int 16 (32) -32768 til 32767 float 32 ± (3.4 E-38 3.4 E 38) double 64 ± (1.7 E -308 1.7 E 308 ) void verdiløs 6

Utskrift til skjerm printf() #include <stdio.h> void main() int verdi; // Deklarerer en int variabel verdi = 111; // Tilordner en verdi printf( Verdien er: %d, verdi); return; // Kan utelates når void benyttes. %d angir heltallsformat. 7

Hvordan virker printf()? Funksjonen skriver tekst og verdier til skjerm. Benytter en format-spesifikator (format tegn %) for å angi datatypen som skal skrives ut. printf( Verdien er: %d, verdi); Format tegn: %d int (heltall) %f float (desimaltall) %c char (enkelt tegn) %s string (tekst streng) %p pointer (peker - adresse) 8

Eksempel med printf(). void 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); Resultat: ch er X, f er 100.123000, d er 987.654000 9

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. & tegnet angir at adressen til int_var benyttes. 10

Eksempel på bruk av scanf(). void main() int tall; float f; double d; printf("tast inn et heltall. "); scanf("%d", &tall); printf("tast inn desimaltall. "); scanf("%f", &f); printf("tall er %d. f er %f.", tall, f); 11

Operatorer I C er det flere grupper med operatorer Aritmetiske ( +, -, *, /, %, ++, --) Sammenligning ( <, >, <=, >=, ==,!= ) Logiske ( &&,,! ) Bitvise ( &,, ^, ~ ) ( og, eller, xor, enerkomplement)

Egen 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); // Lokale variabler // funksjonskall // funksjonskall 13

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 14

Funksjon med returverdi int mul(int x, int y); // prototyp til mul() void main() int i=4, j=5; printf( res = %d, mul(10, 20) ); printf( res = %d, mul(i, j) ); return; int mul(int x, int y) // her starter mul()funksjonen return (x*y); // retur med int verdi. 15

Valg og løkker i C. Valg 1. if - else 2. switch Løkker - gjentagelse av den samme blokken 1. for 2. while 3. do- while Program hopp 1. break 2. return

break setningen Når en break setning utføres inne i en løkke blir løkken umiddelbart avsluttet. int main(void) int tall; while (1) // uendelig løkke printf( Skriv et tall: ); scanf( %d, &tall); if (tall < 0) break; return 0; // hopper ut av løkka

switch - (multippelt valg). switch ( test uttrykk ) case konstant1: setning1; break; case konstant2: setning2; break; case konstant3: setning3; break;... default: default statement;

Eksempel på switch int main(void) int tall; printf("\nskriv inn et heltall: "); scanf("%d", &tall); switch (tall) case 1: printf("\ndu har tastet tallet 1.\n"); break; case 2: printf("\ndu har tastet tallet 2.\n"); break; case 3: printf("\ndu har tastet tallet 3.\n"); break; case 4: printf("\ndu har tastet tallet 4.\n"); break; default: printf("\ntallet er ikke mellom 1 og 4.\n"); return 0;

Uendelig løkke for(;;)... // uendelig løkke

Ny linje \n int main() printf( en\n ); printf( to\n ); printf( tre ); printf( fire\n ); return 0; // \n - linjeskift. Resultat en to trefire 21

Tegn-variabler i C char er datatypen for tegn char benytter en byte, tallområde -128 til 127. En char kan holde alle tegn som er definert i ASCII tabellen. Et lite eksempel: char ch1 = a,ch2 = 65; printf( %c %d %c %d,ch1,ch1,ch2,ch2); NB!! Legg merke til at et tegn angis mellom apostrofer. eks: char bokstav = G ;

Streng konstanter printf( Dette er en streng ); Tegnene som er omsluttet med anførselstegn er en streng konstant. Strenger lagres i datamaskinen som en serie (tabell) med ASCII char verdier. ASCII verdi null - avslutter alle strenger, og blir derfor kalt nulltermineringstegnet.

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 24

C biblioteket Består av funksjoner som utfører en rekke oppgaver I/O operasjoner matematiske operasjoner manipulering av strenger pluss mye mer Absoluttverdi får vi med abs() og fabs() Kvadratrot får vi med sqrt() strcpy(), strcmp(). NB!! Husk å ta med riktige header-filer. Får feilmelding hvis «noe» mankerer. 25

Operatorer og prioritet Nivå Operatorer Assosiativitet 1 (). [] -> Venstre til høyre 2 * &! ~ ++ -- + - sizeof Høyre til venstre 3 * / % Venstre til høyre 4 + - Venstre til høyre 5 << >> Venstre til høyre 6 < <= > >= Venstre til høyre 7 ==!= Venstre til høyre 8 & Venstre til høyre 9 ^ Venstre til høyre 10 Venstre til høyre 11 && Venstre til høyre 12 Venstre til høyre 13?: Høyre til venstre 14 = *= /= %= += -= <<= >>= &= ^= = Høyre til venstre 15, Venstre til høyre