Programmeringsspråket C



Like dokumenter
Programmeringsspråket C

Programmeringsspråket C

IN 147 Program og maskinvare. Velkommen til IN 147. Program- og maskinvare

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

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

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF1060. Introduksjon til operativsystemer og datakommunikasjon

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

IN 147 Program og maskinvare

Del 1 En oversikt over C-programmering

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

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

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

Kapittel 1 En oversikt over C-språket

IN 147 Program og maskinvare

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

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

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

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.

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

Programmeringsspråket C Del 2

INF 1000 høsten 2011 Uke september

Vektorer. Dagens tema. Deklarasjon. Bruk

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

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Oppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin.

Velkommen til INF1060 høsten 2017

Hvordan en prosessor arbeider, del 1

Grunnleggende programmering i C

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

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.

Cs preprosessor. Dagens tema. Betinget kompilering

En oppsummering (og litt som står igjen)

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

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

Programmeringsspråket C Del 2. Michael Welzl

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

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

IN 147 Program og maskinvare

Programmeringsspråket C Del 3

Kapittel 1: Datamaskiner og programmeringsspråk

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Programmeringsspråket C Del 3

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

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

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

Dagens tema: Datastrukturer

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

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Programmeringsspråket C Del 3

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

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

2 Om statiske variable/konstanter og statiske metoder.

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

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

Dagens tema Kapittel 8: Objekter og klasser

Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen

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

Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)

Kapittel 1: Datamaskiner og programmeringsspråk

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

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

IN 147 Program og maskinvare

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Ukeoppgaver 1: 30. aug 3. sep (INF Høst 2010)

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

Klasser, objekter, pekere og UML. INF gruppe 13

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

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Forelesning inf Java 5

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Forelesning inf Java 5

INF1000: Forelesning 4. Mer om arrayer Metoder

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

Løsningsforslag til 2. del av Del - EKSAMEN

2 Om statiske variable/konstanter og statiske metoder.

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix

Fra Python til Java, del 2

INF1000 Metoder. Marit Nybakken 16. februar 2004

Oversikt. Hva er programmering & Java forkurset til INF1000. Hva er en datamaskin. Arne Maus Inst for Informatikk Univ. i Oslo

INF1000 Behandling av tekster

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 4. Metoder. Program, klasse og metode

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

Dagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer

6108 Programmering i Java. Leksjon 4. Metoder. Roy M. Istad 2015

Dagens tema. Nyttige programmer Programmet make. Hvis én fil endres, hvilke filer må da kompileres på nytt?

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

INF2100. Oppgaver uke 40 og

Java. INF1000 : Forelesning 2. Ulike varianter for ulike behov. Java Standard Edition (Java SE) Java:

Transkript:

Programmeringsspråket C Programmeringsspråket C Laget til implementasjon av Unix ved AT&Ts Bell labs i Palo Alto 1969 73. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard i 1988; omtrent alle følger den nå. I 1999 kom C99 og i 2011 kom C11, men ikke særlig mange følger dem fullt ut. Vi vil derfor stort sett ignorere dem.

Programmeringsspråket C Formål Kunne programmere oversiktlig; lettlest kode. Tilgang til maskinens ressurser. Lite maskinavhengige programmer. Kompakte programmer (dvs lite kode). Raske programmer. Korte programmer (dvs få linjer).

Hva er bra? Cs fortrinn Mulig å skrive raske programmer. Gode muligheter for strukturering av data og program. Svært kompakt kode: Simula C n := n+1; A[++n] *= 3.1; A[n] := A[n]*3.1; Mulig å skrive elegante, oversiktlige og portable programmer. Fast standard (ANSI C) fra høsten 1988. Finnes overalt.

Hva er mindre bra? Cs svake sider Ofte lite portable hvis man ikke tenker på det mens man koder; bedre etter ANSI C. C tilbyr programmereren større frihet. Kompilatoren vil dog oppdage færre av de feil programmereren gjør. Muligheter for kryptisk kode: A[*(*x)++ = y] += 4;

Sagt om C Sagt om C Å programmere i Java er som å kjøre en Volvo stasjonsvogn; den duver rolig av gårde på veien, men man kommer trygt frem. Å programmere i C er som å kjøre en Ferrari; den kan gå uhyggelig fort i svingene, men man havner noen ganger i grøften. ukjent opphavsmann I C er det viktigere at det går fort enn at svaret blir riktig! En skrivefeil i C er ingen feil; det er bare et annet program. enda en ukjent meningsytrer

Hvorfor lære C? Hvorfor er det nyttig å lære C? Det er flere grunner: C er blant de aller mest utbredte språk i dag. C brukes i svært mange større programmeringsprosjekter. C og Unix er uløselig knyttet sammen. Med C kan man skrive raskere kode enn med de fleste andre språk. Med C kan man skrive svært kompakt kode (dvs bruke lite minne). Programmering i C gir en følelse av hvorledes datamaskinen fungerer.

«Hallo, alle sammen» Et minimalt eksempel «Alle» lærebøker i programmering har dette eksemplet: #include <stdio.h> int main(void) { printf("hallo, alle sammen!\n"); } (Det var Kernighan & Ritchies første bok om C som startet denne moten!) I Java ser programmet slik ut: class Hello { public static void main(string args[]) { System.out.println("Hallo, alle sammen!"); } }

Kompilering Kompilering Følgende kommando kan brukes for å kompilere programmet: gcc hallo.c -o hallo Det kompilerte programmet kjøres med hallo eller helst./hallo

Et C-program Program Et program er en liste av deklarasjoner av variabler og funksjoner: Java Klasse-deklarasjoner C Deklarasjoner

Et C-program Hovedprogrammet «Hovedprogrammet» er en funksjon ved navn main: Java public static void main(string arg[]) {.. } } C int main(void) {

C-funksjoner Funksjoner En C-funksjon ligner veldig på en metode i Java. Den består alltid av fire deler: 1 type på returverdien; hvis ingen, skriv void 2 navn på funksjonen 3 parameterliste med typeangivelse av hver parameter Til forskjell fra Java: hvis det ikke er noen parametre, skrives void. 4 kroppen som er selve funksjonen. Den er omsluttet av { og }

C-tekster Tekstkonstanter Tekstkonstanter skrives med " foran og bak. Java "En tekst" C "En tekst" I C må vi ofte vi legge inn spesialtegn i teksten; det vanligste er \n som angir linjeskift. Java "Hei!\n" C "Hei!\n"

Utskrift i C Utskrift Utskrift skjer via kall på funksjonen printf. Eventuelt linjeskift legges inn i teksten. Java C System.out.print("Hei, "); printf("hei, "); System.out.println("dere!"); printf("dere!\n");

Utskrift i C Utskrift av tall Med %d i teksten kan man angi at det skal settes inn et tall. Dette tallet må komme senere i parameterlisten. Java System.out.println(a + " og " + b); C printf("%d og %d\n", a, b);

Heltall i C Heltall i C C har litt andre heltallstyper enn Java: Navn Alternativt Ant byte Java signed char char 1 byte unsigned char char 1 short signed short 2 short unsigned short 2 int signed int 2 4 unsigned int unsigned 2 4 long signed long 4 int unsigned long 4 Standarden sier at det er udefinert om «char» betyr «signed char» eller «unsigned char», så det varierer.