Løsningsforslag til eksamen i INF103
|
|
- Solbjørg Hoff
- 7 år siden
- Visninger:
Transkript
1 Løsningsforslag til eksamen i INF103 Dag Langmyhr (oppgave 2 og 5) Olav Lysne (oppgave 3 og 6) 15. desember 2001 Sigbjørn Næss (oppgave 1 og 4) 1 Boolsk algebra Sannhetsverditabellen i deloppgave a er vist i tabell 1. a 2 a 1 a 0 F 1 F Tabell 1: Sannhetsverditabell for oppgave 1a Ut fra denne tabellen ser man at F 1 = a 2 a 1 a 0 + a 2 a 1a 0 + a 2a 1 a 0 og at F 2 = a 2 a 1a 0 + a 2 a 1 a 0 + a 2 a 1 a 0. Skjemaet er rett frem gitt disse to ligningene. Kall to stykker av kretsen fra oppgave 1a for henholdsvis K 1 og K 2,og utgangene fra de to kretsene K F 1 1, KF 2 1, KF 1 2 og KF 2 2. G vil være 1 når enten K F 1 1 = KF 1 2 = 1 eller K F 2 1 = 1 og a 3 = a 4 = a 5 = 0 eller K F 2 2 = 1 og a 0 = a 1 = a 2 = 0. For å implementere G trenger man dermed to stykker av kretsen fra oppgave a, seks invertere, tre AND-porter og én OR-port, som vist i figur 1 på neste side. (Denne kretsen kan lett forenkles.) 2 Oversettelse Jeg har skrevet funksjonen litt anderledes (men den fungerer likt!) for å gjøre den enklere å oversette. Dette er ingen forutsetning for å få en god karakter; en oversettelse «rett frem» vil bli bedømt som like god. 1 ;;; Rutinenavn: maxa 2 ;;; Synopsis: Finner største element i en vektor. 3 ;;; Signatur i C: short maxa (short a[], short n) 4 ;;; Inn-parametre: R0: adressen til a 5 ;;; R1: n 6 ;;; Ut-parametre: R0: den største verdien 7 ;;; 8 ;;; Teknikk: 1
2 a 0 a 1 a 2 K 1 F 1 F 2 G a 3 F 1 a 4 a 5 K 2 F 2 Figur 1: Løsning på oppgave 1b 9 ;;; Følgende C-kode er oversatt: 10 ;;; 11 ;;; short maxa (short *a, short n); 12 ;;; { 13 ;;; short max = *a; 14 ;;; 15 ;;; while (--n > 0) { 16 ;;; ++a; 17 ;;; if (max - *a < 0) max = *a; 18 ;;; } 19 ;;; 20 ;;; return max; 21 ;;; } 22 ;;; 23 ;;; Denne versjonen vil alltid gi samme resultat som den som er gitt 24 ;;; i oppgaven, men den egner seg bedre for oversettelse til LC2. 25 ;;; 26 ;;; Registre: R0: a 27 ;;; R1: n 28 ;;; R2: *a 29 ;;; R3: max maxa: st R2,saveR2 ; /* Gjem unna R2 32 st R3,saveR3 ; og R3. */ 33 ldr R3,R0,#0 ; max = *a; loop: add R1,R1,#-1 ; --n 36 brnz exit ; while ( > 0) { add R0,R0,#1 ; ++a; 39 ldr R2,R0,#0 ; t = - *a; 40 not R2,R2 ; /* -*a beregnes som 41 add R2,R2,#1 ; (not *a)+1. */ 42 add R2,R2,R3 ; if (max + t 43 brzp loop ; < 0) { 44 ldr R3,R0,#0 ; max = *a; 45 br loop ; } } 46 2
3 47 exit: add R0,R3,#0 ; R0 = max; 48 ld R2,saveR2 ; /* Hent tilbake R2 49 ld R3,saveR3 ; og R3. */ 50 ret ; return R0; saver2:.fill 0 ; Gjemmested for R2 53 saver3:.fill 0 ; og R3. 3 Socket-programmering Det viktige i deloppgave a er at studentene viser at de har forstått hva som må til for å få den skisserte kommunikasjonsløsningen til å fungere. Det dreier se altså om å få overført de riktige dataene, samt å håndtere det at enkelte deler av det de må overføre har en udefinert lengde. Mitt forslag er følgende: 1. Oppkobling 2. Overføring av to tegn som angir lengde på filnavnet. Her antas det at ingen filnavn er lengre enn 99 tegn langt. 3. Overføring av filnavnet med n tegn, hvor n er lik det antall som ble kommunisert under punkt to. 4. Overføring av 12 tegn som angir tidspunktet for når prislisten skal tas i bruk. 5. Overføring av tre tegn som angir lengden på den første linjen i prislisten. 6. Så lenge det ikke er angitt at den neste linjen inneholder 0 tegn (a) Overføring av en linje i prislisten med det antall tegn som tidligere har blitt kommunisert. (b) Overføring av tre tegn som angir lengden på den neste linjen i prislisten. 7. Nedkobling. Dette lar seg også løse ved å først angi antall tegn på hele filen (inkludert linjeskift), hvorpå det hele overføres samlet altså uten while-løkke. Funksjonene safereadbyte, saferead, safewrite og TCPlyttesocket i deloppgave b er forelest, og det holder derfor at de henviser til forelesningsnotatene for disse. Hoveddelen av denne oppgaven består derfor i programmeringen av main. 1 #include <netinet/in.h> 2 #include <sys/socket.h> 3 #include <netdb.h> 4 #include <stdio.h> 5 #include <string.h> /* Leser nøyaktig ett byte fra en socketforbindelse */ 9 char safereadbyte(int so) 10 { 11 int bytes; 12 char buf[1]; bytes = read(so, buf, 1); 15 if (bytes<0) { 3
4 16 perror("error in saferead"); 17 if (close(so)) perror("close"); 18 exit(1); 19 } 20 if (bytes<=0) { 21 printf("server: end of file on %d\n",so); 22 if (close(so)) perror("close"); 23 exit(1); 24 } 25 return buf[0]; 26 } /* Leser nøyaktig l bytes fra en socketforbindelse */ 29 int saferead(int so, char buf[], int l) 30 { 31 int i; 32 for (i=0; i<l; i++){ 33 buf[i]=safereadbyte(so); 34 } 35 return l; 36 } /* Skriver til socket på samme måte som "write", men gir i tillegg 39 en feilmelding dersom det ikke gikk bra */ 40 int safewrite(int so, char buf[], int l) 41 { 42 int i; 43 if (i=write(so, buf, l)==0) 44 { 45 printf("kunne ikke skrive til socket"); 46 exit(1); 47 } 48 return i; 49 } /* Oppretter en TCP lyttesocket. Klienter er forventet å opprette 52 forbindelse på det portnummerer som blir sendt med som parameter */ int TCPlyttesocket(int portnummer) 56 { 57 struct sockaddr_in serveraddr, clientaddr; 58 int clientaddrlen; 59 int request_sock; 60 int i; /* Opprett request-socket */ 63 if ((request_sock = socket(af_inet, SOCK_STREAM, IPPROTO_TCP)) < 0) { 64 printf("feil under oppretting av socket\n"); 65 exit(1); 66 } /* Opprett adressestruct */ 69 bzero((void *) &serveraddr, sizeof(serveraddr)); 70 serveraddr.sin_family = AF_INET; 71 serveraddr.sin_addr.s_addr = INADDR_ANY; 72 serveraddr.sin_port = htons(portnummer); /* Tillat socketen å gjenbruke et portnummer som forrige inkarnasjon 75 av tjeneren fremdeles kan tenkes å legge beslag på */ 76 i = 1; 77 setsockopt(request_sock, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i)); 4
5 78 79 /* bind adressen til socketen */ 80 if (bind(request_sock, (struct sockaddr *)&serveraddr, sizeof serveraddr) < 0) { 81 printf("feil under bind\n"); 82 exit(1); 83 } /* aktiver lytting på socketen */ 86 if (listen(request_sock, SOMAXCONN) < 0) { 87 printf("feil under listen\n"); 88 exit(1); 89 } return request_sock; 92 } main(int argc, char *argv[]) 96 { 97 int lyttesocket, datasocket; 98 struct sockaddr_in klientaddr; 99 int klientaddrlen, intlengde; 100 char tidspunkt[12], filnavnlengde[2],filnavn[50],lengde[3], buffer[121]; FILE *fil; /* Start lytting på et portnummer */ 105 lyttesocket = TCPlyttesocket(2100); /* Ta imot oppkobling fra klienten */ 108 klientaddrlen = sizeof(klientaddr); 109 datasocket = accept(lyttesocket,(struct sockaddr *)&klientaddr, &klientaddrlen); 110 if (datasocket < 0) printf("feil under tilkobling av klienten \n"); /* ta imot filnavnet */ 114 saferead(datasocket, filnavnlengde, 2); 115 saferead(datasocket, filnavn, atoi(filnavnlengde)); /* Åpne filen */ 118 filnavn[atoi(filnavnlengde)] = \0 ; 119 fil = fopen(filnavn, "w"); /* ta imot tidspunktet filen skal tas i bruk */ 122 saferead(datasocket, tidspunkt, 12); /* Så lenge du ikke har mottatt en tom linje - fortsett lesingen */ /* les inn lengden på første posten */ 127 saferead(datasocket, lengde, 3); 128 intlengde = atoi(lengde); /* Så lenge du ikke har mottatt en tom linje - fortsett lesingen */ 131 while (intlengde!= 0) { 132 saferead(datasocket, buffer, intlengde); 133 buffer[intlengde] = \0 ; 134 fprintf(fil, "%s \n", buffer); /* les inn lengden på neste posten */ 137 saferead(datasocket, lengde, 3); 138 intlengde = atoi(lengde); 139 } 5
6 /*lukk filen*/ 142 fclose(fil); /* lukk lsocketene */ 145 close(lyttesocket); 146 close(datasocket); /* Informer systemet om den nye prislisten */ 149 newpricelist(filnavn, tidspunkt); 150 } 4 Flervalgsoppgave Rikige svaralternativ er vist i tabell 2. a b c d e f g h Tabell 2: Riktig svar på oppgave 4 Kommentar til 4b Om man ikke har kalkulator, kan man enten regne 2 20 =(2 10 ) 2 = eller man kan ressonere: 2 10 er omtrent 1000; da er 2 20 omtrent Siden svaret må være et partall, må det være alternativ 1. 5 Programmet time Det viktigste i denne oppgaven er ikke tidtagingen (hvor koden kan kopieres rett fra oppgaveteksten) men prosesshåndteringen. Siden programmet som skal utføres er oppgitt med fullt filnavn, blir koden ganske enkel: 1 #include <limits.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <time.h> 5 #include <sys/times.h> 6 #include <sys/types.h> 7 #include <unistd.h> 8 #include <sys/wait.h> 9 10 #include "safefork.c" extern char **environ; int main (int argc, char *argv[]) 15 { 16 int status; 17 time_t start = time(null); 18 struct tms ts; if (argc < 1) { 21 printf("usage: time command [param...]\n"); exit(1); 6
7 22 } if (safefork() == 0) { 25 /* Barnet: */ 26 execve(argv[1], &argv[1], environ); 27 perror("time"); exit(0); 28 } wait(&status); 31 times(&ts); 32 printf(" real %4ds\n", time(null)-start); 33 printf(" user %4ds\n", (ts.tms_utime+ts.tms_cutime)/clk_tck); 34 printf(" sys %4ds\n", (ts.tms_stime+ts.tms_cstime)/clk_tck); 35 return 0; 36 } 6 Operativsystemer På denne oppgaven er det svært mange svar som vil være fornuftige. Det viktige her er derfor ikke om de har «gjettet riktig», men at den begrunnelsen de gir for sine valg demonstrerer at de har forstått problemområdet. 6a Her finnes det prosesser med harde sanntidskrav. De må slippe til CPU-en med en viss fast frekvens. Det gjør at vi må ha en preemptiv skeduleringsmeknisme. Når vi ser bort fra nedlasting til disk og brukergrensesnittet, er de kravene som stilles av de andre prosesstypene ganske like. Vi foreslår derfor en enkelt round-robin skedulering mellom disse prosessene. For å tilfredsstille de kravene prosessene har om prosentvis andel av CPU-ens tid, må antallet prosesser begrenses. Dette overlates til høynivåskeduleringen. For brukergrensesnittets del foreslår vi her at den inngår i round robinskeduleringen på lik linje med de andre. På den måten blir det enklere å sikre at brukergrensesnittet ikke konsumerer så mye CPU-tid at den ødelegger for en filmavspilling for eksempel. De prosesene som kun driver med nedlasting av data kan (men må ikke) skeduleres for seg med lavest prioritet. Man må i tilfelle sørge for at de ikke opplever «sulting». Det kan for eksempel sikres ved at høynivåskeduleringen ikke slipper til så mange sanntidsprosesser at det ikke blir noe CPU-tid igjen. 6b Ofte er det bare tilgjengelighet av tilstrekkelig internminne som vurderres under høynivåskedulering. I dette tilfellet er det en del sanntidsprosesser som krever tilgang til en viss prosentandel av CPU-ens tid. Derfor er det naturlig her å vurdere CPU-tid ved høynivåskeduleringen, slik at det ikke slippes til flere prosesser enn det faktisk er regnekraft til. 6c Filene som skal håndteres her skal skrives og leses kun sekvensielt. Siden de også er av fast størrelse (en film og et musikkstykke endrer ikke størrelse) peker sekvensiell allokering seg ut. Det gir imidlertid to problemer: 7
8 Fragmentering. Det kan lett oppstå en situasjon hvor den ledige plassen på disk er delt opp i så mange små stykker at det ikke kan finnes en sekvensiell enhet som er stor nok Under opptak og innlesing av en film/et stykke kan man ofte på forhånd ikke avgjøre hvor stor den er. Følgelig er det vanskelig å vite hvor stort sekvensielt lagringsområde en trenger. Disse problemene kan lettest løses ved periodisk defragmentering og å tillate at en fil kan bestå av flere sammenhengende sekvenser (for eksempel ved pekere, eller indekser). 6d Ettersom vi over har valgt sekvensiell allokering, blir det viktig å finne en metode for håndtering av ledig diskplass som muliggjør enkel gjenfinning av lange sekvenser av ledige blokker. Et «bitmap» med en bit per blokk som angir om den er ledig eller ikke er derfor å foretrekke fremfor Kø/pekerkjede. Ulempen ved dette valget er at vi ikke lenger så lett kan kontrollere at den sist slettede filen ikke er den første som blir overskrevet. Det er likevel rimelig å ofre «angrefrist» på sletting av filer for å effektivisere disklesingen her. 8
Interprosess kommunikasjon. Berkeley Sockets. Hvordan identifiserer jeg hvem jeg vil snakke til? Hva må programmene gjøre?
Interprosess kommunikasjon Berkeley Sockets Hvordan få to maskiner til å snakke sammen Maskin A...... typedef struct { char sawreceive; char sawsend; int packetpointer; char buf[packetlength+1]; linksession;
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF103 Fra brukergrensesnitt til maskinvare Eksamensdag: 15. desember 2001 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider.
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
DetaljerLøsningsforslag til eksamen i INF103
Løsningsforslag til eksamen i INF03 Kjell Åge Bringsrud (oppgave 5) Dag Langmyhr (oppgave 2 og 3) Carsten Griwodz (oppgave 4) Sigbjørn Næss (oppgave og 6) 6. desember 2002 Boolsk algebra og CPU-design
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
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
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
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF103 Fra brukergrensesnitt til maskinvare Eksamensdag: 11. desember 2003 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider.
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
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
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
DetaljerLøsningsforslag til eksamen i INF2270
Løsningsforslag til eksamen i INF227 Oppgave 9 Omid Mirmotahari Oppgave 6 Dag Langmyhr. juni 24 Eksamen INF227 Sensorveiledning Oppgave 2 Kretsforenkling Hva er funksjonsuttrykket for Output gitt av A
DetaljerProgrammering i C++ Løsningsforslag Eksamen høsten 2005
Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det
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
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,
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
DetaljerDagens 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
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF103 Fra brukergrensesnitt til maskinvare Eksamensdag: 16. desember 2002 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider.
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
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 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
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:
DetaljerLøsningsforslag til eksamen i IN 147 og IN 147A
Løsningsforslag til eksamen i IN 17 og IN 17A Dag Langmyhr Øystein Gran Larsen Våren 1996 1 Oversettelse I vårt forslag har vi lagt større vekt på at oversettelsen skal vært «rett frem» og lett forståelig
DetaljerÅ løse eksamensoppgaver
Å løse eksamensoppgaver Programmeringsoppgaver Flervalgsoppgaver Prøveeksamen Eksamen Hva er hensikten med oppgavene? Programmeringsoppgaver Vil typisk være å skrive en funksjon eller oversette en funksjon
DetaljerTDT4102 Prosedyre og Objektorientert programmering Vår 2015
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2015 Øving 3 Frist: 2014-02-07 Mål for denne øvinga:
DetaljerOppgave 2: Gå til roten (/) av systemet. Finn minst tre forskjellige måter å gå tilbake til hjemmekatalogen din på.
Løsningsforslag for oppgavene i operativsystemer, uke 43 (18.10-22.10) På terminalstue: Oppgave 1: List alle filer og kataloger under XVUELQ som har filnavn som begynner på b. OVXVUELQE Oppgave 2: Gå til
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
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
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
DetaljerDagens tema. LC-2 LC-2 er en «ekstrem-risc»; den har 16 instruksjoner og 3 adresseringsmåter.
Dagens tema Mer programmering i assemblerspråk Masking Hopp, tester og flagg Varianter over ld og st Vektorer og tekster Rutiner Stakker Programmering i assembler Dere kjenner sikkert den gamle gåten:
DetaljerDel 2 Tabeller, arrays, strenger
Del 2 Tabeller, arrays, strenger 1 RR 2016 Tabeller Variabel som kan holde mange verdier. Styrer bruken med indeks. Det er ingen indekskontroll i C. int tab[5] = {2, 4, 6, 8, 10}; tab[4] = 12; int tab[100]
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1060 Introduksjon til operativsystemer og datakommunikasjon Eksamensdag: 9. desember 2005 Tid for eksamen: 14.30 17.30 Oppgavesettet
DetaljerINF1000: noen avsluttende ord
Pensum INF1000: noen avsluttende ord Arne og Ole Christian Det som er gjennomgått på forelesningene Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige
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
DetaljerLøsningsforslag til eksamen i IN 147(A)
Løsningsforslag til eksamen i IN 147(A) Dag Langmyhr (oppgave 1, 2 og 6) Sigbjørn Næss (oppgave 3, 4 og 5) 29. mai 2000 1 Oversettelse Assemblerversjonen av split ser slik ut: 1 #include 2 3.text
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 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
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
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 14. juni 2012 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 10 sider. Vedlegg: Tillatte hjelpemidler: INF2270
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
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. 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
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?
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 15. juni 2006 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 7 sider. Vedlegg: INF1070 Datamaskinarkitektur Ingen
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
DetaljerOving 2. Oppgave 1. #include <stdio.h> int main(int argc, char **argv) { char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); } Oppgave 2
Oving 2 Oppgave 1 int main(int argc, char **argv) char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); Oppgave 2 char navn[25]; printf( "Hei hva heter du?\n" ); scanf("%s", navn); printf ("Hei:
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerGenerell informasjon
Introduksjon Oppgave Tittel Oppgavetype Generell informasjon Dokument 1.1 Kompendiet Langsvar Arkitektur Oppgave Tittel Oppgavetype 2.1 Pipeline Flervalg (flere svar) 2.2 Boolsk Algebra Flervalg (flere
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
DetaljerIN 147 Program og maskinvare
Dagens tema Parallellitet Eksempelprogrammet Litt om X En enkelt pakke for tegning på skjerm Et program for å tegne fraktaler Kommunikasjon mellom prosesser Rør Felles lager Ark 1 av 24 Forelesning 28.4.1998
DetaljerTDT4102 Prosedyreog objektorientert programmering Vår 2016
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyreog objektorientert programmering Vår 2016 Øving 4 Frist: 2016-02-12 Mål for denne øvingen:
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF2270 Datamaskinarkitektur Eksamensdag: 11. juni 2009 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 10 sider. Vedlegg: Ingen
DetaljerTDT4102 Prosedyreog objektorientert programmering Vår 2016
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyreog objektorientert programmering Vår 2016 Øving 2 Frist: 2016-01-29 Mål for denne øvingen:
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
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
DetaljerTDT4258 Eksamen vår 2013
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Side 1 av 8 TDT4258 Eksamen vår 2013 Løsningsforslag Oppgave 1 Flervalgsoppgave (16 poeng) Du får 2 poeng
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
DetaljerOppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre
Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre Ark 1 av 12 Forelesning 12.5.1999 Operativsystemer I kurset har vi fokusert på UNIX, men prinsippene gjelder i større eller
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
DetaljerINF1000: noen avsluttende ord
Pensum Det som er gjennomgått på forelesningene INF1000: noen avsluttende ord Arne og Fredrik Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige virkninger
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
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på
DetaljerDagens tema: Parallellstyring
Nyttige forklaringer Sikker opprettelse av nye prosesser Hva er en kommandotolker? Dagens tema: Parallellstyring Generelt Synkronisering med filer Synkronisering med rør Synkronisering med felles lager
DetaljerDagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.
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 ut? Variabler,
DetaljerProgrammeringsspråket C Del 2. Michael Welzl
Programmeringsspråket C Del 2 Michael Welzl 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det nedover til 0 $> gcc countdown.c -o countdown $>./countdown ===== Countdown
DetaljerLøsningsforslag til eksamen i IN 147(A)
Løsningsforslag til eksamen i IN 147(A) Dag Langmyhr (oppgave 1, 4 og 6) ØysteinGranLarsen (oppgave 2, 3 og 5) 31. mai 1999 1 Oversettelse Funksjonen strxxx går gjennom en tekst og finner adresessen til
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
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å
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1400 Digital teknologi Eksamensdag: 5. desember 2005 Tid for eksamen: 9-12 Vedlegg: Tillatte hjelpemidler: Oppgavesettet er
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
DetaljerGenerelt om permanent lagring og filsystemer
Generelt om permanent lagring og filsystemer Filsystem Den delen av OS som kontrollerer hvordan data lagres på og hentes frem fra permanente media Data deles opp i individuelle deler, filer, som får hvert
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å
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
DetaljerObligatorisk oppgave 1 INF1020 h2005
Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte
DetaljerIntro Rask kode x86-op Optimalisering Inline-kode Konklusjon
Dagens tema Dagens tema Raskere kode Når er det viktig? Hvordan måle eksekveringshastighet? Hvordan oppnår man raskere kode? Blanding av C og assemblerkode Er hastighet så viktig? Når er eksekveringshastighet
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
DetaljerInnhold. Oppgave 1 Oversettelse (vekt 15%)
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 147 Program- og maskinvare Eksamensdag: 29. mai 2001 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 10 sider. Vedlegg: Tillatte
Detaljerløsningsforslag-uke5.txt
INF 1000 LØSNINGSFORSLAG TIL UKEOPPGAVER FOR UKE 5 1) Setningen er kompakt skrivemåte for int[] a; a = new int[50]; hvor den første setningen deklarerer arrayen a, og den andre setningen oppretter et array-objekt
DetaljerLitt om Javas class-filer og byte-kode
Litt om Javas class-filer og byte-kode INF 5110, 11/5-2010, Stein Krogdahl (Dessverre litt få figurer) Disse formatene ble planlagt fra start som en del av hele Java-ideen Bt Byte-koden gir portabilitet
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
Detaljerprogrameksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"
Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte En større problemstilling I uke 4 skrev vi et program for å sjekke om et gen (en tekstfil) inneholdt ordet "TGA"
DetaljerInformasjon Prøveeksamen i IN1000 høsten 2018
Prøveeksamen IN1000-INF1001-H18 Informasjon Prøveeksamen i IN1000 høsten 2018 Tid Fra tirsdag 6.11 kl. 14:15 til tirsdag 13.11 kl. 12:00 (Normal eksamenstid er 4 timer) Oppgavene Oppgave 2b og 2c er flervalgsoppgaver.
DetaljerInnhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java
INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:
DetaljerLøsningsforslag til eksamen 24. november 2015
Operativsystemer med Linux Løsningsforslag til eksamen 24. november 2015 Oppgave 1 a) Et OS deler tiden inn i små deler, typisk et hundredels sekund, og fordeler slike korte timeslices til alle prossene
DetaljerOppgave 1 - Linux kommandolinje (%)
Løsningsforslag Eksamen høst 2017 Operativsystemer Oppgave 1 - Linux kommandolinje (%) a) pwd b) ps Oppgave 2 - Bash-scripting (%) a) ping -i 5 www.hin.no b) ping -c 1 www.hin.no ping -c 1 -t 1 www.hin.no
DetaljerProsesser. Dagens tema. Hva er en prosess? En prosess er et program under utførelse.
Dagens tema (kapittel 15 i Englander-boken) Prosesser Hvordan starte prosesser Å vente på prosesser Å utføre programmer Hva gjør en kommandotolker? Signaler Obligatoriske oppgave 2 Prosesser Hva er en
DetaljerIN 147 Program og maskinvare
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
DetaljerEt større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte
Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte Plan for forelesingen Beskrive en større problemstilling Planlegge programmet Skrive koden, én klasse om gangen
Detaljerbestår av 7 sider inklusiv denne forsiden og vedlegg. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.
Høgskolen i østfold EKSAMEN Emnekode: ITD13012 Dato: Emnenavn: Datateknikk Eksamenstid: 10.5.16 9.00 12.00, 3 timer Hjelpemidler: To A4-ark (fire sider) med egne notater Faglærer: Robert Roppestad "Ikke-kommuniserende"
DetaljerForelesning 5. Diverse komponenter/større system
Forelesning 5 Diverse komponenter/større system Hovedpunkter Komparator Dekoder/enkoder MUX/DEMUX Kombinert adder/subtraktor ALU En minimal RISC - CPU 2 Komparator Komparator sammenligner to 4 bits tall
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
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00
DetaljerEksamensoppgave i TDT4258 Energieffektive datamaskinsystemer
Institutt for datateknikk og informasjonsvitenskap Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer Faglig kontakt under eksamen: Asbjørn Djupdal Tlf.: 909 39452 Eksamensdato: 29. mai 2013
DetaljerTDT4102 Prosedyre og Objektorientert programmering Vår 2014
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyre og Objektorientert programmering Vår 2014 Øving 1 Frist: DD.MM.YYYY Mål for denne øvinga:
Detaljer