Kapittel 1 En oversikt over C-språket

Like dokumenter
Del 1 En oversikt over C-programmering

Del 4 Noen spesielle C-elementer

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

Programmeringsspråket C

IN 147 Program og maskinvare

Del 2 Tabeller, arrays, strenger

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

Grunnleggende programmering i C

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

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

Programmeringsspråket C Del 2

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

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

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

Programmeringsspråket C

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

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

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

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

Programmeringsspråket C

Cs preprosessor. Dagens tema. Betinget kompilering

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

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.

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

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

Vektorer. Dagens tema. Deklarasjon. Bruk

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

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

Del 3. Pekere RR 2016

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

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

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

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

Hvordan en prosessor arbeider, del 1

IN 147 Program og maskinvare. Dagens tema

GJØVIK INGENIØRHØGSKOLE

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

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

Forelesning inf Java 5

IN 147 Program og maskinvare

Forelesning inf Java 5

Programmeringsspråket C Del 2. Michael Welzl

INF1000 : Forelesning 4

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

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

IN 147 Program og maskinvare

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

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

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

Blokker og metoder INF1000 (Uke 6) Metoder

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

INF1000: Forelesning 4. Mer om arrayer Metoder

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

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.

Leksjon 2. Setninger og uttrykk

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

Leksjon 2. Setninger og uttrykk

Beskrivelse av programmeringsspråket Simpila INF Kompilatorteknikk Våren 2012

Utførelse av programmer, metoder og synlighet av variabler i JSP

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

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

Programmeringsspråket C Del 3

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

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

Programmeringsspråket C Del 3

INF1000 : Forelesning 3

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

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Pekere og referanser.

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

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

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

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

Mer om C programmering og cuncurrency

2. Pekere og referanser.

Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

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

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

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen

Visuell Programmering: Kom i gang med Processing

Oversikt. INF1000 Forelesning 6. Variable Deklarasjon. Variabel en plass i lageret int radius;

Digitale systemer II

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

2 Om statiske variable/konstanter og statiske metoder.

Oversikt. INF1000 Uke 3. Repetisjon Program. Repetisjon Program. Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter denne uken! Klart for første oblig

Kontinuasjonseksamensoppgave i IMT1082 Objekt-orientert programmering

Transkript:

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