IN 147 Program og maskinvare
|
|
- Gustav Olsen
- 6 år siden
- Visninger:
Transkript
1 Dagens tema: Kort repetisjon Mengder Lister Enkle listeoperasjoner Programmering av en listepakke Lister med hode og hale Toveislister Hvaeretoperativsystem? En meget kort oversikt over operativsystemenes historie Ark 1 av 24 Forelesning
2 Kunngjøringer Torsdag 22. mars (i morgen) blir det ingen fellesøvelse. IN147-A Dette er siste uke med forelesninger for de som tar kun IN147-A. Obligatorisk oppgave 2 Jeg minner om at obligatorisk oppgave 2 er lagt ut; frist 6. april. Det tar tid å programmere assemblerkode, så start nå! Hint Ingen vettug programmerer skriver linjer assemblerkode og forventer at det virker: Skriv først en triviell utgave (f eks strcpy). Lag et testprogram som sjekker den grundig. Utvid med 3 10 linjer kode. Sjekk grundig på nytt. Å finne fornuftige utviklingssteg er en del av oppgaven! Forelesning Ark 2 av 24
3 Kort repetisjon Cs preprosessor er en tekstbehandler som før kompilering 1. Henter inn filer 2. Ekspanderer makroer 3. Styrer betinget kompilering Eksempel: #ifdef LINUX #include "linux.h" #endif #ifdef SUN #include "sunos.h" #endif Definisjoner kan settes ved kompilering: maskin navn> cc -c -DSUN prog.c Forelesning Ark 3 av 24
4 Programmet make er et hjelpemiddel til å holde orden på kompilering av et stort program med mange separatkompilerte filer. Eksempel: CC = cc CFLAGS = -O -I/hom/kritisk/include -DSUN -DIFI BIN = func1.o func2.o prog.o prog: $(BIN) $(CC) $(CFLAGS) $(BIN) -o prog prog.o: prog.c incl.h $(CC) $(CFLAGS) -c prog.c func1.o: func1.c incl.h $(CC) $(CFLAGS) -c func1.c func2.o: func2.c incl.h $(CC) $(CFLAGS) -c func2.c Forelesning Ark 4 av 24
5 Mengder På en tippekupong kan man velge mellom tre tips: H, U og B. Man kan imdlertid gardere: HU, HB, UB eller HUB. I alt finnes det 8 verdier i mengden over mulige tips i hver kamp: {, {H, {U, {B, {H,U, {H,B, {U,B og {H,U,B. En slik verdi kan lagres som et bit-mønster med 3bit: H U B {H,B x x x x x Forelesning Ark 5 av 24
6 Operasjoner på mengder Det fine med denne representasjonen er at maske-operasjonene fungerer: Snitt ({H,B {H,U={H) kan implementeres som and. Union ({H,B {H,U={H,U,B) kan implementeres som or. Differanse ({H,B\{H,U={B) kan implementeres som and og not. For å teste om et element er med i en mengde må man bruke and og kanskje sll. Forelesning Ark 6 av 24
7 Lister Enkle lister Operasjoner på lister Et par eksempler Hode og hale Toveis lister Fordelene med lister: Dynamiske; plassforbruket tilpasses under kjøringen. Fleksible; innenbyrdes rekkefølge kan lett endres. Generelle; kan simulere andre strukturer. Ulemper med lister: Det kan lett bli en del leting, så lange lister kan være langsomme i bruk. Forelesning Ark 7 av 24
8 En enkel liste struct elem { struct elem *neste; diverse data ; struct elem *liste; liste 0 Listepekeren liste peker på første element. Denne listen kan simulere Stakker Køer Prioritetskøer Forelesning Ark 8 av 24
9 Operasjoner på lister Innsetting først i listen p->neste = liste; liste = p;... liste liste... p p Innsetting midt i listen (etter px) p->neste = px->neste; px->neste = p; Forelesning Ark 9 av 24
10 Innsetting sist i listen siste liste 0 p 0 if (liste == NULL) liste = p; else siste = liste; /* Finn siste element. */ while (siste->neste) siste = siste->neste; siste->neste = p; p->neste = NULL; siste liste p 0 Dette kan gjøres raskere hvis vi i utgangspunktet har en peker til siste element. Forelesning Ark 10 av 24
11 Innsetting i sortert liste Se eksempel på ark 15. Fjerning av element Vi vil fjerne elementet p peker på fra listen, hvor px peker på ps forgjenger. p px liste 0 px->neste = p->neste; p->neste = NULL; p px liste 0 0 Forelesning Ark 11 av 24
12 Et eksempel liste.h: Dette er en definisjonsfil for en programpakke for listehåndtering. Vi antar at det kun er én liste, og at liste peker på den. struct data { struct data *neste; char navn[200]; ; extern struct data *liste; extern void inn_forst(struct data *p), inn_sist (struct data *p), inn_sort (struct data *p); Forelesning Ark 12 av 24
13 navn.c: Dette er et eksempel på et program som bruker listepakken. #include <stdio.h> #include <string.h> #include <stdlib.h> #include "liste.h" struct data *liste; int main(void) { struct data *elem; char nytt_navn[200]; liste = NULL; while (fgets(nytt_navn, 200, stdin)!= NULL) { elem = (struct data *)malloc(sizeof(struct data)); strcpy(elem->navn, nytt_navn); inn_sort(elem); elem = liste; while (elem!= NULL) { printf("%s", elem->navn); elem = elem->neste; Forelesning Ark 13 av 24
14 Eksempel på kjøring Hvis datafilen data.in ser slik ut: Næss, Sigbjørn Burud, Arild Sokolov, Stanislav Tetlie, Ole Jørgen Lunde, Christian Kibsgaard Skar, Kristin vil følgende to kommandoer kompilere og kjøre programmet navn.c: maskin navn> cc navn.c liste.c -o navn maskin navn> navn < data.in Burud, Arild Lunde, Christian Kibsgaard Næss, Sigbjørn Skar, Kristin Sokolov, Stanislav Tetlie, Ole Jørgen Forelesning Ark 14 av 24
15 liste.c: #include <string.h> #include "liste.h" void inn_forst(struct data *p) { p->neste = liste; liste = p; void inn_sist(struct data *p) { struct data *px = liste; if (liste == NULL) liste = p; else { while (px->neste!= NULL) px = px->neste; px->neste=p; p->neste = NULL; void inn_sort(struct data *p) { struct data *px; if (liste == NULL) { /* Listen er tom. */ liste=p; p->neste=null; return; px = liste; if (strcmp(p->navn,px->navn) < 0) {/* p skal først i listen. */ inn_forst(p); return; /* Finn ut hvor i listen p skal settes inn. */ while (px->neste!=null && strcmp(p->navn,px->neste->navn)>0) px = px->neste; p->neste = px->neste; px->neste=p; /* Sett inn p bak px. */ Forelesning Ark 15 av 24
16 Hode og hale Rutinene for peker-strukturer blir enklere hvis vi utstyrer listene med hode og hale. 0 hode hale liste2.c: Funksjonen inn sort blir mye kortere: void inn_sort(struct data *p) { struct data *px = liste; /* Finn ut hvor i listen p skal settes inn. */ while (strcmp(p->navn,px->neste->navn)>0) px = px->neste; p->neste = px->neste; /* Sett inn p bak px. */ px->neste=p; Forelesning Ark 16 av 24
17 navn.c: Hovedprogrammet må utvides litt for å initiere listens hode og hale. #include <stdio.h> #include <string.h> #include <stdlib.h> #include "liste.h" struct data hode, hale, *liste; int main(void) { struct data *elem; unsigned char nytt_navn[200]; /* Initiér listens hode og hale. */ hode.neste = &hale; strcpy(hode.navn,""); hale.neste = NULL; strcpy(hale.navn,"ÿÿÿ"); liste = &hode; while (fgets(nytt_navn,200,stdin)!= NULL) { elem = (struct data *)malloc(sizeof(struct data)); strcpy(elem->navn, nytt_navn); inn_sort(elem); elem = hode.neste; while (elem!= &hale) { printf("%s", elem->navn); elem = elem->neste; Forelesning Ark 17 av 24
18 Toveislister Toveislister gjør også noen operasjoner enklere. Siden vi vil ha oversikt over både forgjenger og etterfølger til et element, blir for eksempel det å fjerne elementer fra listen enkelt. liste Forelesning Ark 18 av 24
19 Hva er et operativsystem? Det er to måter å se det på: Et operativsystem gir brukeren en virtuell datamaskin å arbeide med. Eksempel: Brukeren kan lese en blokk fra disk uten å tenke på sektorer, spor, formatering, plassering, etc. Et operativsystem administrerer ressurser. Flere prosesser og brukere konkurrerer om ressurser: prosessor-tid, hukommelse, aksess til disken, skriver, etc. Forelesning Ark 19 av 24
20 Operativsystemenes historie 1. generasjon ( ) En bruker har maskinen for seg selv. Intet egentlig operativsystem. Eksempel fra kjøring på en Nord-12 maskin i 1973: 1. Les inn et hullbånd med tekstredigeringsprogrammet. 2. Les inn et hullbånd med den tidligere versjonen av kildekoden. Rett koden. 3. La maskinen skrive ut et hullbånd med den rettede kildekoden. 4. Les inn et hullbånd med assembleren. 5. Les inn hullbåndet med kildekoden. 6. Maskinen skriver ut et hullbånd med binærkode. 7. Les inn dette båndet og kjør programmet. Forelesning Ark 20 av 24
21 2. generasjon ( ) Operatørene har overtatt. En tredeling av kjøringen: 1. Brukeren leverer en bunke hullkort. Mange slike bunker («batch»-er) kopieres over på magnetbånd ved hjelp av en billig maskin. 2. Hoveddatamaskinen har et primitivt operativsystem og leser én og én jobb fra magnetbåndet og utfører denne. Eventuell utskrift skrives til et annet magnetbånd. 3. Den billige datamaskinen leser magnetbåndet og skriver innholdet på en linjeskriver. Dette er starten på operativsystemene. Forelesning Ark 21 av 24
22 3. generasjon ( ) Multiprogrammering. Flere jobber kan kjøres samtidig. Dette gir flere fordeler: Jobber som krever både regnekraft og I/U kan spare tid ved å kjøres samtidig: P1: P2: Datamaskinen kan nå også lese hullkort og styre skriveren uten at det koster for mye. Tidsdeling gir brukerne direkte kontakt med maskinen. Stormaskiner og minimaskiner. Operativsystemer som MULTICS, UNIX, VMS,... Forelesning Ark 22 av 24
23 4. generasjon (1980 ) Mikromaskiner; maskinen tilbake til den enkelte bruker. Operativsystemenes utvikling gjentas én gang til: 1. Uten noe egentlig operativsystem. 2. Enkle énprosessystemer som CP/M, TOS, MS-DOS, Finder, Multiprogrammering med systemer som MP/M, OS/2, Windows 95, Windows NT, UNIX, MACH,... Nytt er nettverk og vindussystemer. Forelesning Ark 23 av 24
24 Utviklingen av UNIX Kommersiell: Bell Labs: Berkeley: 1970 Version 1 Version 5 Version 6 Version 7 3BSD BSD System III System V 4.2BSD System V.3 4.3BSD SunOS 1990 System V.4 Solaris Linux Irix 2000 Forelesning Ark 24 av 24
Dagens tema: Datastrukturer
Dagens tema: Datastrukturer Matriser Dynamiske matriser Ringbuffere Mengder Lister Enkle listeoperasjoner Programmering av en listepakke Lister med hode og hale Toveislister Onsdag 24.3 Avslutning av IN147A
DetaljerIN 147 Program og maskinvare
Dagens tema Operativsystemer Hva er et operativsystem? En meget kort oversikt over operativsystemenes historie Systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer
DetaljerIN 147 Program og maskinvare
Dagens tema Mer om C Cs preprosessor Allokering av variable Separat kompilering Programmet make Pekere i C Operasjoner på pekere Pekere og vektorer Referanseparametre Pekere til «alt» og «ingenting» Dynamisk
DetaljerDagens 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 Cs preprosessor Separat kompilering av C funksjoner C og minnet Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15 Cs preprosessor Før selve kompileringen går C kompilatoren gjennom
DetaljerDagens tema. Nyttige programmer Programmet make. Hvis én fil endres, hvilke filer må da kompileres på nytt?
Dagens tema Nyttige programmer Programmet make Flyt-tall Representasjon av flyt-tall Standarden IEEE 754 Systemkall i Unix Programmet make Det er mange praktiske problemer forbundet med programmering av
DetaljerDagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix
Dagens tema Nyttige programmer Programmet make Flyt-tall Representasjon av flyt-tall Standarden IEEE 754 Systemkall i Unix Ark 1 av 24 Programmet make Det er mange praktiske problemer forbundet med programmering
DetaljerCs preprosessor. Dagens tema. Betinget kompilering
Dagens tema Dagens tema Inkludering av filer Cs preprosessor Cs preprosessor Separat kompilering av C funksjoner C og minnet Før selve kompileringen går C kompilatoren gjennom koden med en preprosessor
DetaljerDagens tema INF1070. Signaturer. Typekonvertering. Pekere og vektorer. struct-er. Definisjon av nye typenavn. Lister
Dagens tema Signaturer Typekonvertering Pekere og vektorer struct-er Definisjon av nye typenavn Lister Dag Langmyhr,Ifi,UiO: Forelesning 24. januar 2005 Ark 1 av 20 Signaturer I C gjelder alle deklarasjoner
DetaljerIN 147 Program og maskinvare. Dagens tema
Dagens tema Kort repetisjon Unioner Cs preprosessor Allokering av variable Separat kompilering Programmet make Datastrukturer Matriser Dynamiske matriser Ringbuffere Oblig2 Obligatorisk oppgave nr. 2 slippes
DetaljerDagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene
Dagens tema Dagens tema Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene Inkludering av filer Cs preprosessor Før selve kompileringen går C-kompilatoren gjennom
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 29.08.13 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 9/1/2005 inf1060 V05 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen malloc
DetaljerProgrammeringsspråket C Del 3
Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen
DetaljerSignaturer. Dagens tema. En vanlig feil int-funksjon. Dette kan noen ganger gi rare feilmeldinger: INF1070 INF1070 INF1070 INF1070
Dagens tema Signaturer Tyekonvertering Pekere og vektorer struct-er Definisjon av nye tyenavn Lister Dag Langmyhr,Ifi,UiO: Forelesning 24. januar 25 Ark 1 av 2 Dag Langmyhr,Ifi,UiO: Forelesning 24. januar
DetaljerDel 4 Noen spesielle C-elementer
Del 4 Noen spesielle C-elementer 1 RR 2016 Header-filer inneholder Prototypene til funksjonene i standard biblioteket Verdier og definisjoner som disse funksjonene bruker #include #include
DetaljerDagens tema INF1070. Info om C. Cs preprosessor. Feilsøking. Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29
Dagens tema Info om C Cs preprosessor Feilsøking Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Informasjon om C Den viktigste kilden til informasjon om C (utenom en god oppslagsbok) er
DetaljerInformasjon om C. Dagens tema INF1070 INF1070 INF1070 INF1070. Den viktigste kilden til informasjon om C (utenom en god. C-funksjonene.
Dagens tema Info om C Cs preprosessor Feilsøking Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 2 av 29 NAME sqrt - square root function
DetaljerProgrammeringsspråket C Del 3. Michael Welzl
Programmeringsspråket C Del 3 Michael Welzl 1 Vektorer og minneallokering Vektorer blir ikke initialisert å allokere en vektor er bare en statisk måte å allokere minne på. char a, b[4], c; a = 3; b[0]
DetaljerDagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene
Dagens tema Dagens tema Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene Inkludering av filer Cs preprosessor Før selve kompileringen går C-kompilatoren gjennom
DetaljerDagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere
Dagens tema Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere Formål: Nyttige å bruke under programmeringen Trening i programmering i C
DetaljerPekere og vektorer. Dagens tema. I C gjelder en litt uventet konvensjon:
Pekere og vektorer I C gjelder en litt uventet konvensjon: Dagens tema Det siste om C Pekere og vektorer Pekere til pekere Vanlige pekerfeil struct-er og typedef Lister Feilsøking Bruk av et vektornavn
DetaljerDagens tema. Det siste om C Pekere og vektorer. Pekere til pekere. Vanlige pekerfeil. struct-er og typedef. Lister. Feilsøking
Dagens tema Det siste om C Pekere og vektorer Pekere til pekere Vanlige pekerfeil struct-er og typedef Lister Feilsøking Ark 1 av 35 Pekere og vektorer I C gjelder en litt uventet konvensjon: Bruk av et
DetaljerProgrammeringsspråket C Del 2
Programmeringsspråket C Del 2 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 30.08.2005 inf1060 H05 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 30.08.2005
DetaljerProgrammeringsspråket C Del 2
Programmeringsspråket C Del 2 Michael Welzl E-mail: michawe@ifi.uio.no 8/25/10 inf1060 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 8/25/10 inf1060
DetaljerProgrammeringsspråket C Del 2
Et eksempel Programmeringsspråket C Del 2 Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no inf1060 1 inf1060 2 Forklaring:
DetaljerDagens tema. Kort repetisjon om rutiner. Programmering i C Variable og adresser. Vektorer. Tekster. Preprosessoren. Separat kompilering
Dagens tema Kort repetisjon om rutiner Programmering i C Variable og adresser Vektorer Tekster Preprosessoren Separat kompilering Innlesning og utskrift mot skjerm og fil Ark 1 av 31 Hva er en rutine?
DetaljerDel 1 En oversikt over C-programmering
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
DetaljerProgrammeringsspråket C
Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger
DetaljerProgrammeringsspråket C Del 3. Hans Petter Taugbøl Kragset
Programmeringsspråket C Del 3 Hans Petter Taugbøl Kragset Repetisjon I C er ikke array en egen type, men variabler kan være arrayer! Pekere C-strenger Veldig likt Java på mange måter Programmering er fortsatt
DetaljerDagens 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
Dagens tema Kort repetisjon om rutiner Programmering i C Variable og adresser Vektorer Tekster Preprosessoren Separat kompilering Innlesning og utskrift mot skjerm og fil Hva er en rutine? En rutine (også
DetaljerProgrammeringsspråket C
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
DetaljerDagens tema. Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer
Dagens tema Dagens tema Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer Adresser som parametre Et eksempel La oss lage en funksjon som
DetaljerDagens tema: Enda mer MIPS maskinkode
Dagens tema: Enda mer MIPS maskinkode (P&H: 3.6 3.8 + 6.1 + A.6 + A.10) Pseudoinstruksjoner Flere instruksjoner Mer om funksjonskall Stakken Avhengigheter Direktiver Alt er bit! Kommunikasjon med C Ark
DetaljerDet viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Data.data Stakk %EAX %ECX %EDX %EBP %ESP Prosessor Kode Minne.text Hovedkortet Grovt sett inneholder et hovedkort En prosessor
DetaljerOppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Grovt sett inneholder det En prosessor Minne (for både program og data) Klokke Kontrollere for periferutstyr.
DetaljerProgrammeringsspråket C
Programmeringsspråket C Programmeringsspråket C Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard i 1988;
DetaljerDagens tema C, adresser og pekere
Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Ark 1 av 26 Adresser Som nevnt tidligere ligger
DetaljerArk 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.
Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Adresser Som nevnt tidligere ligger data og programkode
DetaljerDagens tema INF2270. Signaturer. Typekonvertering. Pekere og vektorer. struct er. Definisjon av nye typenavn. Lister. Info om C
Dagens tema Signaturer Typekonvertering Pekere og vektorer struct er Definisjon av nye typenavn Lister Info om C Dag Langmyhr,Ifi,UiO: Forelesning 29. januar 2007 Ark 1 av 23 Signaturer I C gjelder alle
DetaljerDagens tema: Koding. Programmering i høynivåspråk. Navn. Mitt forslag:
Dagens tema Dagens tema: Koding Hvorfor er stil viktig? Programmering i høynivåspråk Høynivåprogrammering, kommentarer og stil Kompilering av store programsystemer Prosjekter, samarbeide og versjoner Når
DetaljerDagens tema: Koding. Høynivåprogrammering, kommentarer og stil Kompilering av store programsystemer Prosjekter, samarbeide og versjoner
Dagens tema Dagens tema: Koding Høynivåprogrammering, kommentarer og stil Kompilering av store programsystemer Prosjekter, samarbeide og versjoner Hvorfor er stil viktig? Programmering i høynivåspråk Når
DetaljerOversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays
Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson
DetaljerHvordan en prosessor arbeider, del 1
Hvordan en prosessor arbeider, del 1 Læringsmål Kompilator, interpret og maskinkode CPU, registre Enkle instruksjoner: de fire regnearter Mer informasjon om temaet Internett Lokalnett (LAN) Mitt program
DetaljerIN 147 Program og maskinvare. Velkommen til IN 147. Program- og maskinvare
Velkommen til IN 147 Program- og maskinvare Dagens tema: Presentasjon av kurset Litt om programmeringsspråket C Registrering av oppmøte Ark 1 av 22 Forelesning 22.1.2001 Foreleserne Sigbjørn Næss Digitaltekniker
DetaljerIN 147 Program og maskinvare
Dagens tema Basistyper i C Typekonvertering Formater i printf Pekere i C En kort repetisjon om pekere Hva er egentlig en peker? Pekere til alt og ingenting Pekere som parametre Pekere og vektorer Ark 1
DetaljerOppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin.
Oppgaver uke 35: Oppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin. Oppgave 1. Skriv et C-program som leser mål i tommer og skriver det ut i fot og tommer. (Det er 12 tommer
DetaljerKapittel 1 En oversikt over C-språket
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
DetaljerEn oppsummering (og litt som står igjen)
En oppsummering (og litt som står igjen) Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen En oppsummering Oppsummering Pensum læreboken til og med kapittel 7 forelesningene de
DetaljerOPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?
OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.
DetaljerDagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer
Dagens program Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer Nyttige forklaringer Sikker opprettelse av nye prosesser Hva
DetaljerDet viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Hovedkortet Grovt sett inneholder et hovedkort En prosessor Minne (for både program og data) Klokke Kontrollere for periferutstyr.
DetaljerOppgave 1 JK-flip-flop (Total vekt 20%)
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 147 Program- og maskinvare Eksamensdag: 12. mai 1997 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 6 sider. Vedlegg: Tillatte
DetaljerPensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering
Oppsummering Pensum Grovt sett er alt fra forelesningene og øvingsoppgavene pensum. Detaljert oversikt finnes på kurssidene. Hovedtanker fra kurset Litt om eksamen Hvorfor har dere lært dette? Ikke mange
DetaljerFra Python til Java, del 2
Fra Python til Java, del 2 Hvordan kjøre Java? På Ifis maskiner På egen maskin Et eksempel Array-er For-setninger Lesing og skriving Metoder Biblioteket Hva trenger vi egentlig? Å kjøre Java For å kunne
DetaljerDebugging. Tore Berg Hansen, TISIP
Debugging Tore Berg Hansen, TISIP Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging...
DetaljerDen siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen
Den siste dagen Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen En oppsummering Oppsummering Pensum Læreboken til og med kapittel 7, kompendiet, forelesningene
DetaljerSignaturer. Dagens tema
Signaturer I C gjelder alle deklarasjoner fra deklarasjonsunktet og ut filen. Følgende rogram: int main (void) x = 4; return ; int x; gir denne feilmeldingen: > gcc gal dekl.c o gal dekl gal dekl.c: In
DetaljerDet viktigste i en moderne datamaskin er hovedkortet («motherboard»):
Hovedkortet Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Data.data Stakk %EAX %ECX %EDX %EBP %ESP Prosessor Kode Minne.text Hovedkortet Grovt sett inneholder et hovedkort En prosessor
DetaljerProgrammeringsspråket C Del 2. Hans Petter Taugbøl Kragset
Programmeringsspråket C Del 2 Hans Petter Taugbøl Kragset Repetisjon I C er ikke array en egen type, men variabler kan være arrayer! 28.08.17 Hans Petter Taugbøl Kragset 2 Arrays Java int[] arr1 = {1,
DetaljerLøsningsforslag til 2. del av Del - EKSAMEN
Løsningsforslag til 2. del av Del - EKSAMEN Emnekode: ITD13012 Emne: Datateknikk Dato: 21. Mai 2013 Eksamenstid: kl 9:00 til kl 12:00 Hjelpemidler: 4 sider (A4) (2 ark) med egne notater. Ikke-kummuniserende
DetaljerLøsningsforslag til 2. del av Del - EKSAMEN
Løsningsforslag til 2. del av Del - EKSAMEN Emnekode: ITD13012 Emne: Datateknikk Dato: 19. Mai 2014 Eksamenstid: kl 9:00 til kl 12:00 Hjelpemidler: 4 sider (A4) (2 ark) med egne notater. Ikke-kummuniserende
DetaljerMinneområder Det er vanlig å dele opp minnet til en prosess i disse ulike områdene: Fast minne Store og små indianere «align» ing struct er
Dagens tema: Minnet Minneområder Det er vanlig å dele opp minnet til en prosess i disse ulike områdene: Fast minne Store og små indianere «align» ing struct er 0xfffffffc Variable Stakk Lister Noen nyttige
DetaljerDagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.
Dagens tema Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet
DetaljerRepetisjon fra sist - 1: Plan for dagen. Repetisjon fra sist 2: Hva jeg glemte sist: Nyttige Kommandoer
-lxxx -c -S -E -o -g -O -I -L gcc Make man l cpp ar ranlib nm valgrind Plan for dagen Repetisjon fra sist - 1: Nyttige Kommandoer Repetisjon Språkmekanismer for programflyt Datatyper &
DetaljerEKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.
EKSAMEN Emnekode: ITF22506 Emne: Operativsystemer Dato: 12. desember 2007 Eksamenstid: kl. 9.00 til kl. 13.00 Hjelpemidler: 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre
DetaljerDagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering
Dagens tema Vektorer (array er) Tekster (string er) Adresser og pekere Dynamisk allokering Dag Langmyhr,Ifi,UiO: Forelesning 23. januar 2006 Ark 1 av 23 Vektorer Alle programmeringsspråk har mulighet til
DetaljerDagens tema. Dynamisk allokering Signaturer Definisjon av typer og nye typenavn Typekonvertering Pekere, vektorer og lister Dokumentasjon
Dagens tema Dagens tema Dynamisk allokering Signaturer Definisjon av typer og nye typenavn Typekonvertering Pekere, vektorer og lister Dokumentasjon Verdt å huske på! Husk! Nøkkelen til å forstå C er å
DetaljerNybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker
Nybegynnerkurs i C Øyvind Grønnesby 14. oktober 2004 Introduksjon pass-by-value svakt typet portabel assembler siste ISO-standard er C99 Hello world #i n c l u d e < s t d l i b. h> #i n c l u d e
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1060 Introduksjon til operativsystemer og datakommunikasjon Eksamensdag: 8. desember 2004 Tid for eksamen: 14.30 17.30 Oppgavesettet
DetaljerForelesning inf Java 1
Forelesning inf1000 - Java 1 Tema: Javas historie Bestanddelene i et Java-program Programvariabler Ole Christian Lingjærde, 22. august 2012 Litt Java-historikk The Green Team I 1991 opprettet Sun Microsystems
DetaljerDatamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?
Dagens tema Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin? x86 prosessoren Enkel assemblerprogrammering Dag Langmyhr,Ifi,UiO:
DetaljerForhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema INF1070 INF1070 INF1070
Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer Dagens tema Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Charles Babbage Midt på 1800
DetaljerOversikt. Historie Struktur Moderne UNIX systemer Moderne UNIX kernel struktur 1 UNIX. 2 Linux. 3 Process. 4 Process models
Oversikt UNIX 1 UNIX Historie Struktur Moderne UNIX systemer Moderne UNIX kernel struktur 2 Linux 3 Process 4 Process models 5 Hvordan kjøre operativsystemet 6 Prosesshåndtering i UNIX SVR4 Lars Vidar
DetaljerØving 0 - Xcode TDT4102
Øving 0 - Xcode TDT4102 Frivillig Øving Mål for denne øvingen: Bli kjent med programmeringsverktøy Lage et første program kun med teksteditor og kompilator Lage et første program med Xcode Denne øvingen
DetaljerIntroduksjon til dataanlegget ved Institutt for informatikk. Marc Bezem Institutt for informatikk Universitetet i Bergen
Introduksjon til dataanlegget ved Institutt for informatikk Marc Bezem Institutt for informatikk Universitetet i Bergen August 2005 1 Introduksjonskurset Målgrupper: Alle studenter som skal ta INF100 Andre
DetaljerLøsningsforslag til eksamen i INF103
Løsningsforslag til eksamen i INF03 Kjell Åge Bringsrud (oppgave 4 og 5) Dag Langmyhr (oppgave 2 og 3). desember 2003 Sigbjørn Næss (oppgave og 6) Boolsk algebra Sannhetsverditabellen er vist i tabell
DetaljerVelkommen til INF2100
Kursopplegg Velkommen til INF2100 Jeg er Dag Langmyhr (dag@ifi.uio.no). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får man det godkjent? Pause (med registrering
DetaljerDagens tema: Kjøresystemer II
Dagens tema Kjøresystemer II En kort repetisjon (Ghezzi&Jazayeri 2.7.3) Språk med blokker (Ghezzi&Jazayeri 2.7.4) Dynamisk allokering (Ghezzi&Jazayeri 2.7.5) Parametre (Ghezzi&Jazayeri 2.7.7) Ark 1 av
DetaljerVelkommen til INF2100 Jeg er Dag Langmyhr
Velkommen til Jeg er Dag Langmyhr (dag@ifi.uio.no). Bakgrunn for I INF1000 20 har dere lært å rammere, men bare små rammer (< 1000 linjer). Hensikten med er å gi mer rammeringstrening Dagens tema: Hva
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 14. juni 2007 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 9 sider. Vedlegg: INF1070 og INF2270 Datamaskinarkitektur
DetaljerDel 3. Pekere RR 2016
Del 3 Pekere 1 RR 2016 Peker/pointer En peker er en variabel som kan holde adressen (peke til) til en annen variabel. Pekere vil gi oss muligheten for å gå direkte til en adresse i minne, og lese/skrive
DetaljerDagens tema. Makroer Ofte gjentar man kodelinjer når man skriver assemblerkode. Da kan det lønne seg å definere en makro:
Dagens tema Makroer Sanntidsprogrammering Avbrudd Bruker- og supermodus Blanding av C og assemblerkode Selvmodifiserende kode Makroer Ofte gjentar man kodelinjer når man skriver assemblerkode. Da kan det
DetaljerTDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python
TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python Professor Guttorm Sindre Institutt for datateknikk og informasjonsvitenskap Læringsmål og pensum Mål Vite hva et
DetaljerDagens tema INF1010 INF1010 INF1010 INF1010
I eksemplene om lister og binære trær har vi hittil hatt pekerne inne i objektene i strukturen. ( Innbakt struktur ).Eksempel: Dagens tema Implementasjon av strukturer (lister, binære trær) class { ; ;
DetaljerVektorer. Dagens tema. Deklarasjon. Bruk
Dagens tema Dagens tema Deklarasjon Vektorer Vektorer (array-er) Tekster (string-er) Adresser og pekere Dynamisk allokering Alle programmeringsspråk har mulighet til å definere en såkalte vektor (også
DetaljerIN 147 Program og maskinvare
Dagens tema Deklarasjon av nye typer Typekonvertering mellom pekere Regning med pekere Pekere til funksjoner Pekere til pekere til... Vanlige feil ved bruk av pekere Feilsøking Debuggere lint Kompilatormeldinger
DetaljerKjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (
Kjøresystemer Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Statiske språk (2.7.1-2.7.2) FORTRAN, COBOL Stakk-baserte språk (2.7.3-2.7.4) ALGOL 60 Dynamiske språk
DetaljerOversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program
Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning
DetaljerRepetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri.6,.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/5 Repetisjon: Statiske språk uten rekursive
DetaljerINF 1000 høsten 2011 Uke september
INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første
DetaljerIN 147 Program og maskinvare
Dagens program Repetisjon Basistyper i C Typekonvertering Formater i printf Deklarasjon av nye typer Pekere i C En kort repetisjon om pekere Pekere som parametre Pekere og vektorer Regning med pekere Pekere
DetaljerDagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:
DetaljerDagens tema INF1070. Makroer. Sanntidsprogrammering. Avbrudd. Bruker- og supermodus. Blanding av C og assemblerkode. Selvmodifiserende kode
Dagens tema Makroer Sanntidsprogrammering Avbrudd Bruker- og supermodus Blanding av C og assemblerkode Selvmodifiserende kode Dag Langmyhr,Ifi,UiO: Forelesning 2. mai 2005 Ark 1 av 20 Makroer Ofte gjentar
DetaljerINF1000 undervisningen INF 1000 høsten 2011 Uke september
INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første
DetaljerHva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først
Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid
DetaljerKurset består av to relativt uavhengige deler. Foreleser: Hårek Haugerud, rom PS431
gruppe Hva er? Operativsystemer Kurset består av to relativt uavhengige deler 1 /kommandolinje, Forelesning mandag 2 Operativsystmer(OS), Forelesning torsdag Foreleser: Hårek Haugerud, haugerud@hioa.no,
Detaljer