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



Like dokumenter
Programmeringsspråket C

En oppsummering (og litt som står igjen)

IN 147 Program og maskinvare

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

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

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

Programmeringsspråket C

Del 4 Noen spesielle C-elementer

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Utførelse av programmer, metoder og synlighet av variabler i JSP

Kanter, kanter, mange mangekanter

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Cs preprosessor. Dagens tema. Betinget kompilering

INF Seminaroppgaver til uke 3

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

Programmeringsspråket C

Programmeringsspråket C Del 2

Oppgave 1 JK-flip-flop (Total vekt 20%)

Vektorer. Dagens tema. Deklarasjon. Bruk

IN 147 Program og maskinvare

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

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.

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Løse reelle problemer

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Løsningsforslag Øving 7

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

Hvordan en prosessor arbeider, del 1

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4102 Prosedyreog objektorientert programmering Vår 2016

INF1000 Metoder. Marit Nybakken 16. februar 2004

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

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

Kontinuasjonseksamen

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

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

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

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Programmeringsspråket C Del 3

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

INF109 - Uke 1b

Programmeringsspråket C Del 3

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

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Diverse eksamensgaver

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Shellscripting I. Innhold

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Oppgave 1 Oversettelse (vekt 16%)

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

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

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015

INF1000: Forelesning 4. Mer om arrayer Metoder

Kapittel 1 En oversikt over C-språket

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

Del 1 En oversikt over C-programmering

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

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

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

Enkle generiske klasser i Java

IN 147 Program og maskinvare

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

KONTINUASJONSEKSAMEN

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

Dagens tema: Mer av det dere trenger til del 1

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

Oppgave 1 - Java og prosesser (20%)

Programmeringsspråket C Del 3

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

Algoritmer og Datastrukturer

INF1000 : Forelesning 4

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Hva er en algoritme? Har allerede sett på mange algoritmer til nå i IT1101. Forholdet mellom en algoritme og et program. Algoritme program prosess

Tabellen viser en serie med verdier for den uavhengige variabelen, og viser den tilhørende verdien til den avhengige variabelen.

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

TDT Prosedyre- og objektorientert programmering

INF1040 Oppgavesett 5: XML

Løsningsforslag til eksamen i INF2270

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Programmeringsspråket C Del 3

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

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

Transkript:

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 i en fot.) Programmet skal avslutt når brukeren angir 0. Eksempel på kjøring: Oppgave 2. Tilordningen > tommer Gi et mål i tommer: 7 7 tommer er 0 fot og 7 tommer. Gi et nytt mål i tommer: 76 76 tommer er 6 fot og 4 tommer. Gi et nytt mål i tommer: 0 t = (time(null)/3600+2)%24; vil sette t til klokkeslettet, altså hvilken time det er på dagen (0-23). (Senere i kurset får vi forklaring på hvordan dette virker.) Ta utgangspunkt i «Hallo, alle sammen!»-programmet som ble vist på forelesningen 29.8. Modifisér dette slik at det skriver «God morgen, alle sammen!» klokken 6-9 «God dag, alle sammen!» klokken 10-17 «God kveld, alle sammen!» klokken 18-21 «God natt, alle sammen!» ellers. Oppgave 3. Programmet unsigned short a, b, sum; a = 20000; b = 50000; sum = a+b; printf("%d + %d = %d\n", a, b, sum); gir følgende resulat når det kjøres: 20000 + 50000 = 4464 Forklar hvorfor. Kan vi oppdage slike feil? Oppgave 4. C-programmet vist på foil 38 på onsdagens forelesning skriver egentlig 1

tabellen slik: 10: 32 ' ': 131 '!': 2 '"': 12 '#': 2 osv. (dvs. to rader nedover) Skriv om programmet slik at det skriver svaret i seks kolonner slik det ble vist på lysark 39. Oppgave 5. Gitt følgende program der funksjonen `strcatc' utvider teksten `s' med tegnet `c': #include <string.h> void strcatc (char s[], char c)... char teststr[20]; void test (char c) printf("før: \"%s\".", teststr); strcatc(teststr, c); printf("\tetter innsetting av '%c': \"%s\".\n", c, teststr); strcpy(teststr, ""); /* Initiering er nødvendig! */ test('a'); test('b'); test('c'); test('.'); test('.'); test('å'); Programmet sjekker om funksjonen virker ved å teste den på ulike data. Når programmet kjøres, skal det skrive: Før: "". Før: "a". Før: "ab". Før: "abc". Før: "abc.". Før: "abc..". Etter innsetting av 'a': "a". Etter innsetting av 'b': "ab". Etter innsetting av 'c': "abc". Etter innsetting av '.': "abc.". Etter innsetting av '.': "abc..". Etter innsetting av 'å': "abc..å". Skriv funksjonen `strcatc'. Hint Notasjonen «char s[]» angir at `s' er en char-vektor. Når en vektor overføres som parameter, trenger vi ikke angi antall elementer, men vi må ha med hakeparentesene slik at C-kompilatoren forstår at det er en vektor. 2

Oppgave 6. Skriv C-funksjonen char strgetc (char s[], int pos) som gir oss tegnet i posisjon nr `pos' i teksten `s'. (Første posisjon er nr 0, andre nr 1, osv.) Hvis det angitte tegnet ikke finnes i teksten, skal funksjonen returnere tegnet '?'. Skriv også et lite testprogram. Oppgave 7. Følgende program short a, b, sum; a = 20000; b = 20000; sum = a+b; printf("%d + %d = %d\n", a, b, sum); gir dette resultatet når det kjøres: 20000 + 20000 = -25536 Hvorfor skjer det? Oppgave 8. Skriv en test kan legges inn i programmet i forrige oppgave som skriver ut teksten «Overflyt!» om slikt skjer. Oppgave 9. Skriv en makro #define STREQ(s1,s2) som sjekker om de to tekstene er like. Tanken er at den kan brukes i if-tester: if (STREQ(s,"Abc"))... Oppgave 10. På forelesningen ble det vist en MIN-makro med mange parenteser: #define MIN(x,y) ((x)<(y)? (x) : (y)) Hvorfor er ikke definisjonen kun #define MIN(x,y) x<y? x : y? Med andre ord: finn C-uttrykk hvor den siste definisjonen vil gi et galt resultat. Oppgave 11. Dette programmet 3

char c[4]; short s; int i; s = 1; for (i = 4; i < 6; ++i) printf("c[%d] = %d\n", i, c[i]); gir følgende resultat når det kompileres og kjøres på en Sun-maskin: c[4] = 0 c[5] = 1 og følgende på en av våre Linux-maskiner med Intel-prosessor: c[4] = 1 c[5] = 0 Hva skyldes forskjellen? NB! Det er ikke spesifisert hvorledes C-variable skal legges i lageret. Dette programmet forusetter at de legges rett etter hverandre slik at c[4] og c[5] henter byte fra s. Slik gjøres det også for de angitt systemene, men det er ikke sikkert programmet vil virke om man endrer på det eller bruker en annen kompilator. Senere skal vi komme frem til en annen og bedre måte. Hint. Husk at vi har en byte-maskin. Hvordan ser minnet ut -- byte for byte -- der `c' og `s' er lagret? Oppgave 12. Skriv C-funksjonen int hexval (unsigned char c) som konverterer et hex-tegn ('0'-'9', 'a'-'f' eller 'A'-'F') til sin verdi 0-15. Vi kan anta at det alltid er et hex-tegn i c når funksjonen kalles. Her er et kort testprogram du kan bruke til å sjekke om funksjonen virker: int hexval (unsigned char c)... /* Også vektorer kan initialiseres! */ unsigned char ca[5] = '0', '4', 'A', 'b', 'f' ; 4

int i; for (i = 0; i < 5; ++i) printf("hexval('%c') gir %d\n", ca[i], hexval(ca[i])); Oppgave 13. Standardfunksjonen int strcmp (unsigned char s1[], unsigned char s2[]) sammenligner to tekster og returnerer en verdi som er <0 om s1 kommer før s2 =0 om s1 og s2 er like >0 om s1 kommer etter s2 Skriv `strcmpx' i C; den skal oppfører seg likt `strcmp'. Her er et testprogram: int strcmpx (unsigned char s1[], unsigned char s2[]) : void test (unsigned char s1[], unsigned char s2[]) printf("strcmpx(\"%s\", \"%s\") gir %d\n", s1, s2, strcmpx(s1,s2)); test("abc", "Ab"); test("abc", "Abc"); test("abc", "Abcd"); Oppgave 14. Spiller det noen rolle om parametrene er deklarert som «char», «signed char» eller «unsigned char»? 5