Digitale systemer II Praktiske opplysninger: To dobbelt timer forelesning pr uke. Ett tema/kapittel pr uke (med noen unntak) Øvingstimer på PC (tre grupper mandag 12:45, onsdag 12:45 og torsdag 10:30). Stud.ass., PI455 7 obligatoriske lab oppgaver. Egen plan kommer. Prosjekt på slutten av semesteret Mye selvstendig arbeid! Arbeidskrav: 7 laboppgaver (3 LEGO, 4 Arduino) Prosjektoppgave Øvinger på PC er frivillige. Vurdering: 70% eksamen, 30% prosjekt Begge deler må være bestått! 1
Hva dreier kurset seg om? Vi skal lære et språk som benyttes til å kommandere en maskin. Vi må da lære en del gloser hva ordene betyr. I C dreier dette seg om 32 ord; vi skal ikke bruke riktig alle. Vi må også lære syntaks hvordan bygge opp setninger. Etasje forvirret en heisen tok sjuende til elefant. En forvirret elefant tok heisen til sjuende etasje. For å skape gode tekster må vi tenke klart og uttrykke oss klart. Det dunkelt sagda är det dunkelt tänkta. Esaias Tegnér. 2
C programmering C er et høynivåspråk. Det er gammelt, start ca 1972, Kernigan & Richie: "The C programming Language" kom i 1978. Det finnes flere varianter av C, vi skal bruke ANSI C eller standard C (som læreboka er basert på). 3
Skrive, kompilere og kjøre et C program Mittprogram.c Mittprogram.obj Mittprogram.exe 4
Vårt første program grupperer #include <stdio.h> int main(void) { printf("hello world"); } return 0; Inkluder standard I/O Programmet begynner her Avslutter kommandoen Skriver ut tekst og evt variable 5
For å kjøre programmet: Skriv programmet i TextPad eller en annen editor. Velg start, programs, Microsoft Visual studio 2012, Visual studio tools, Developer Command Prompt for VS2012. Det kommer da opp et kommandovindu. Gå til den katalogen der programmet ditt er lagret (Mittprogram.c) (det gjør du ved cd.. for å gå oppover i treet, cd katalognavn for å gå nedover. skriv >cl /TC Mittprogram.c For å kjøre programmet: >Mittprogram hello.c 6
Vår første "glose" printf Syntaks: printf("tekst..."); Resten er nødvendig innpakning som blir klarere etter hvert #include <stdio.h> int main(void) { printf("hello world"); } return 0; 7
Kommentarsetninger: Sekvenser som begynner med /* og slutter med */ ignoreres av kompilatoren, det er kommentarer som er beregnet på mennesker. Eksempel: /************************************* * lang kommentar * **************************************/ int polse; // antall solgte pølser Bruk flittig! 8
Skrive ut andre ting enn ren tekst: \n ny linje \t tabulator (systemavhengig) \\ for å skrive \ \" for å skrive " \a lyd Spesialtegn \verdi(oktal) æ \211 ø \233 å \206 Æ \222 Ø \235 Å \217 \ escape karakter \n escape sekvens \t... Dette kan avhenge av tegnsettet som er satt opp 9
Et C program består av en sekvens av instruksjoner som utføres i rekkefølge. Rekkefølgen kan være viktig: ta en dusj ta på underbukse ta på bukse ta på sokker ta på T skjorte spis frokost puss tenner ta på sko gå på jobben juletre.c 10
Variable: lagerplass for data Variable har navn, som består av bokstaver og/eller tall og/eller karakteren "_". Første tegn må være en bokstav eller_. Eksempler: tall, sum, navn, antall_studenter, uke2, et_veldig_langt_variabelnavn_kan_vaere_upraktisk Store og små bokstaver er forskjellige; u2 og U2 er forskjellige variable. 11
Vi kan gi verdier til variable int x; x=5; x settes lik 5 Alternativt: int x=5; Dette må ikke forveksles med påstanden eller det logiske uttrykket x==5, som kan være sant eller usant! 12
Andre typer: float char flyttall et tegn short heltall, mindre presisjon long heltall, høyere presisjon double flyttall, høy presisjon...(det finnes flere) 13
Vi kan utføre aritmetiske operasjoner: int x=5; int y=6; int sum; sum=x+y; Høyresiden (5+6) regnes ut, og settes inn i variabeles sum Andre regneoperasjoner: minus * multiplikasjon / divisjon 14
Hvordan skrive ut verdien av en variabel For heltall: int x=6; printf("x=%d",x); Dette gir x=6 Tallet i tekststrengen erstattes av en "conversion spesifier" (for heltall %d). Variablene som skal settes inn listes opp etter komma. int x=6; int y=7; printf("x=%d og y=%d",x,y); Dette gir x=6 og y=7 15
Hvordan lese inn verdier fra tastaturet? #include <stdio.h> int main(void) { int x; printf("les inn verdien av x"); scanf("%d",&x);...//resten av programmet } return 0; 16
Viktig! Ny "glose" scanf Syntaks: scanf("format",&variabel,&variabel...); Vi skriver %d ved utskrift og innlesing av heltall. Tilsvarende "conversion spesifier" for flyttall er %f %10.2f betyr at bredden på feltet er 10 tegn, to desimaler "Conversion spesifier" for char er %c 17
Eksempel: Lag et program som leser inn to heltall fra tastaturet, og skriver ut summen av tallene. Planlegging: Vi må ha variable til å lagre de to tallene (int x og int y), og summen (int sum). 1. les inn x 2. les inn y 3. beregn summen og legg resultatet i sum 4. skriv ut resultatet (verdien i sum). 18
Flytskjema: start deklarer x,y,sum les inn x les inn y sum=x+y skriv ut sum slutt 19
#include <stdio.h> int main(void) { int x; int y; int sum; printf("les inn første tall"); scanf( "%d", &x); printf("les inn andre tall"); scanf( "%d", &y); sum=x+y; printf("summen av %d og %d er %d", x,y,sum); } return 0; 20
Les inn to flyttall og beregn produktet. 21
Oppsummering: printf scanf %d,%f int,float 22
23
Før vi bruker variable må vi deklarere dem, vi setter av plass, forteller hvilken datatype vi skal bruke int max; Vi setter av plass til et heltall, og gir det navnet max Minnet max Vi må vite hvor mye plass som skal settes av (her 4 byte), og hvordan innholdet i denne plasseringen skal tolkes. 24
25