120 likes | 253 Views
#include <stdio.h> Ligner litt på import i java. Setter inn hele fila stdio.h i programteksten. Definerer en del io funksjoner slik at signaturen er kjent. I dette tilfellet vil vi benytte printf() funksjonen. Denne kan ta et varierende antall argumenter og sende disse til std. Output.
E N D
#include <stdio.h> Ligner litt på import i java. Setter inn hele fila stdio.h i programteksten. Definerer en del io funksjoner slik at signaturen er kjent. I dette tilfellet vil vi benytte printf() funksjonen. Denne kan ta et varierende antall argumenter og sende disse til std. Output.
Innebygde typer C har ingen type boolean. Bruk int og gi denne en ikkenull verdi for true og 0 fo false. Lokale variable må deklareres før de brukes. Java: for(int i=0;i<10;i++) C: int i; for (i=0; i<10; i++) CodeVision har Size bit 1 char - unsigned char - signed char 8 int – short – unsigned int – signed int 16 long – unsigned long – float – double 32
/* basic syntax */ #include <stdio.h> Int main(void){ int num1 = 4, num2 = 10, i; double ratio; // C vil ikke gi melding om uinitialiserte var. for (i=1 ;i <=num1; i++) print(”%d ”,i); while(num1 >0){ printf (”\n”); num1--; } printf(”\n”); if(num1 != 0) ratio =num2 /num1; else ratio = num2/3.0; printf (”%f\n”,ratio); return 0; } // if(num1 = 1) er tillatt i C . Tilordner 1 til num1 og sjekker om den er !=0
Eks ”%-10.4f”,fl skriver ut fl venstreorientert på et felt på 10 karakterer. 4 siffer etter komma.
Scanf() Scanf() leser inn data fra std. Input. Eks. int ival; scanf(”%d”, &ival); //Leser inn integer til ival. & tegnet markerer adressen til ival Og må være med!
Pekere - eksempel #include <stdio.h> .. Int x=123,y; Int *p1, *p2; P1= &x; p2=&y; *p= 99; printf(”x = %d, y= %d\n”,x,y); printf(”x = %d, y= %d\n”,*p1,*p2); printf(”p1=%p, p2=%p\n”,p1,p2); …
Eksempel på korrekt og feil program void swap(int *a, int *b){ int temp; temp =*a; *a = *b; *b = temp; } void swap(int a, int b){ //Feil ……Feil int temp; temp =a; a = b; b = temp; }
Tabeller Tabeller i C kjenner ikke sin dimnsjon som i Java Eks. int i ,*p;int liten_tab[10];for(i = 0; i<10; i++) liten_tab[ i ] = i; Dersom en tabell sendes til en subrutine er det samme somå sende en peker (som peker på samme type element) Skriv(liten_tab); er ekvivalent med Skriv(&liten_tab[0]) ellerp=&liten_tab[0]; Skriv(p); Rutinen Skriv(..) vil se slik ut: void Skriv(int *p){ int i;for(i=0;i<10;i++)printf(”%d\n”,*p++); }
Strings Stringer i C er karaktertabeller avsluttet med en null. ’\0’ =0x00 Char strOne[]= {’s’,’t’,’r’,,’i’,’n’,’g’,’ ’,’e’,’n’,’\0’}; printf(”Stringen = %s\n”,strOne); //Skriver ut ”string en” strOne[6] = ’\0’; printf(”Stringen = %s\n”,strOne); //Skriver ut ”string” Vi har en del standardmetoder som virker på stringer int strlen(char *p); Returnerer lengden på stringen (leter seg frem til null) int strstr(char *p1, ”ab”); Søker etter stringen ”ab” i stringen som p1 peker på. Int strcpy(char *p1, ”test”); kopierer ”test” til p1.Int strcat(char *p1, ” END”) Concatenerer stringer (legger ”END” etter p1)
Struct En struct minner litt om class i Jave, men kan bare ha atributter typedef struct { int x; int y; } punkt; punkt p,q; p.x=10; p.y=20; Vi kan også lage en tabell med punkt punkt ptab[10];
Pekere til strukturer punkt p, *pp; pp= &p; p.x= 10; Dette er ekvivalente utsagn (*pp).x=10; ” pp->x=10; Forenklet notasjon En komponent i en struktur kan være en struktur hvilket kan gi en del særekombinasjoner
PREPROCESSOR kjører først og substituerer verdier med #define Inkluderer filer som står etter #include og kutter ut deler av fila avhengig av kontrollelementer som #ifdef #elif #else #endif #define PI 3.1415926535 #define SQR(a) (sqrarg=(a),sqrarg*sqrarg) #include "filename" /* from the current directory */ #include /* from the system directories (modified by -I) */ #define DEBUG /* defines the symbol DEBUG */ #ifdef DEBUG /* code here is compiled if DEBUG is defined */ #elif defined UNIX /* code here is compiled if DEBUG is not defined, and UNIX is defined */ #else /* code here is compiled if neither DEBUG or UNIX are defined */ #endif #if 0 /* code here is never compiled */ #endif