IN 147 Program og maskinvare

Størrelse: px
Begynne med side:

Download "IN 147 Program og maskinvare"

Transkript

1 Dagens tema Mer om C Et eksempel til (med diverse forklaringer) Representasjon av tegn og logiske verdier Vektorer Statusverdi Innhenting av definisjoner Inkrementering og dekrementering av variable for-setningen Lesing fra og skriving til filer Et siste eksempel Ark 1 av 25 Forelesning

2 Oversikt over kurset Kurset IN 147 Program- og maskinvare dreier seg om grensesnittet mellom programmer og datamaskinen: Idé Lag et program som... Java p=newelem(4); C *pi++=&a; Assemblerspråk addi $7,$0,3 Maskinkode Forelesning Ark 2 av 25

3 Om programmeringsspråk Et program er et sett instruksjoner til datamaskinen om hva den skal gjøre. Dette kan skrives i ulike språk: Java, Simula, C,... Både Java, Simula og C er imperative språk og har derfor svært mange elementer felles, selv om utseendet (syntaksen) kan variere: Java Simula C System.out.print("?"); OutText("?"); printf("?"); Java og Simula er objektorienterte språk og har klasser med tilhørende muligheter; det har ikke C. C er Java uten klasser (nesten)! Dag Langmyhr Java og C ligner svært på hverandre når det gjelder setninger, uttrykk og bruk av enkle variable. Derfor vil vi bruke Simula i sammenligningene når C- og Java-koden er lik eller nesten lik. Forelesning Ark 3 av 25

4 Et litt større eksempel #include <stdio.h> /* Hvor mange hele fot utgjør disse tommene? */ int finn_fot(int tommer) { return tommer/12; /* Hvor mange rene tommer er det i dette målet? */ int rene_tommer(int tommer) { int fot = tommer/12; return tommer - 12*fot; int main(void) { int tom; printf("angi et mål i tommer: "); scanf("%d", &tom); while (tom!= 0) { if (tom > 0 && tom <= 999) printf("%5d tommer = %d fot %d tommer\n", tom, finn_fot(tom), rene_tommer(tom)); else printf("programmet godtar kun verdier 0-999!\n"); printf("gi et nytt mål i tommer (0 for avslutning): "); scanf("%d", &tom); Forelesning Ark 4 av 25

5 Kommentarer Kommentarer omgis av /* og */. De kan stå hvor som helst. Java C // Lurt! /* Lurt! */ Deklarasjon av variable Variable kan deklareres først i en funksjon eller mellom funksjonene. En deklarasjon består av tre deler: Variabelens type. Variabelens navn. Flere variable kan deklareres, adskilt av komma. En initialverdi for sistnevnte variabel; kan droppes. En variabel uten angitt initialverdi får en tilfeldig startverdi. Simula C integer a, b, c; int a, b, c; real x; float x = 3.14; x := 3.14; Forelesning Ark 5 av 25

6 Predefinerte typer Disse typene er alltid definert i C: Simula C char Små tall ( 128 til 127) integer int Større tall ( til 32767) long integer long Kjempetall real float Flyt-tall long real double Store flyt-tall Innlesning Til innlesning brukes scanf. Første parameter angis hva som skal leses inn: %c for tegn, %d for heltall og %f for flyt-tall. Simula a := InInt; x:=inreal;y:=inreal; C scanf("%d", &a); scanf("%f%f", &x, &y); Legg merke til & foran variabelnavnet; den må være der. Forelesning Ark 6 av 25

7 Setninger Tilordning I C og Java brukes = for tilordning. Simula a:=5; C a=5; If-setninger If-setninger er som de fleste andre språk. Simula C ifa<0then if (a < 0) a:=-a; a=-a; ifa<0then if (a < 0) b:=-1 b=-1; else else b:=1; b=1; Legg merke til at det skal stå parenteser rundt testen, og at det skal være ; foran else. Forelesning Ark 7 av 25

8 While-løkker While-løkker er også som i de fleste andre språk: Simula C while a > 0 do while (a > 0) begin { b := b*a; a := a-1 b = b*a; a = a-1; end; I C og Java avsluttes alle setninger med ; (unntatt etter ). Sammensatte setninger Flere setninger kan slås sammen til én med { og i C og Java. Simula C begin...end {... Forelesning Ark 8 av 25

9 Diverse småtterier Sammenligning Verdier sammenlignes med følgende Simula C = eller == == = <> eller =/=!= < < < <= <= > > > >= >= Logiske operasjoner Disse skrives slik: Simula C not! and && or Forelesning Ark 9 av 25

10 Lagring av tegn C har ingen egen type for å lagre tegn (som char i Java eller character i Simula). I stedet benyttes heltall. Java C char c; int c;?? 63 Hvilken koding som brukes, vil variere fra én maskin til en annen. I den vestlige verden brukes stort sett nå ISO , ogsåkjent som ISO LATIN-1. På neste ark er vist en oversikt over hvilke tegn som finnes i Latin-1. I øvre venstre hjørne står verdien som brukes til å representere tegnet. (I to andre hjørner står den oktale og heksadesimale verdien. De omtales i onsdagens forelesning.) Forelesning Ark 10 av 25

11 A B C D E F A B C D E F ISO ! " # $ % & ( ) * +,. / : ; < = >? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ a b c d e f g h i j k l m n o p q r s t u v w x y z { ~ A 4A 6A B 4B 6B C 4C 6C D 4D 6D E 4E 6E F 4F 6F A 5A 7A B 5B 7B C 5C 7C D 5D 7D E 5E 7E F ª «- ± ² ³ µ ¹ º» ¼ ½ ¾ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß F 7F A B C D E F A B C D E F A Denne tabellen finnes på /local/lib/ps/iso8859-table.ps. à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ A1 C1 E A2 C2 E A3 C3 E A4 C4 E A5 C5 E A6 C6 E A7 C7 E A8 C8 E A9 C9 E AA CA EA AB CB EB AC CC EC AD CD ED AE CE EE AF CF EF B0 D0 F B1 D1 F B2 D2 F B3 D3 F B4 D4 F B5 D5 F B6 D6 F B7 D7 F B8 D8 F B9 D9 F BA DA FA BB DB FB BC DC FC BD DD FD BE DE FE BF C0 E DF FF April 1995, DFL, Ifi/UiO Forelesning Ark 11 av 25

12 Lagring av logiske verdier C har heller ingen type for å lagre logiske verdier (som boolean i Java og Simula). Her benyttes også heltall: Verdi Betydning 0 usann (= false) 0 sann (= true) Dette betyr at testen i if- ogwhile-setninger tester på 0 og 0. Det er derfor det samme om vi skriver if (a!= 0)... if (a)... De fleste synes imidlertid at det første er lettere å lese. Forelesning Ark 12 av 25

13 Statusverdi Hvorfor er main en int-funksjon? I mange operativsystemer (deriblant UNIX) kan et program fortelle systemet hvorledes kjøringen gikk. UNIX benytter følgende kode: Verdi Betydning 0 OK Feil (De ulike feilverdiene kan fortelle hva slags feil det er snakk om.) Funksjonen main returnerer programmets statusverdi. Funksjonen exit Enhver funksjon kan avslutte kjøringen og angi programmets statusverdi med funksjonen exit, for eksempel exit(1); Forelesning Ark 13 av 25

14 Bruk av statusverdi Statusverdien som kommer fra et program kan brukes på ulike måter. I vår standard kommandotolker (bash) kan man skrive program 1 && program 2 Da blir program 2 kun utført hvis program 1 gikk bra. Likeledes kan man skrive program 1 program 2 Da blir program 2 kun utført hvis program 1 feilet (dvs returnerte status > 0). Forelesning Ark 14 av 25

15 Vektorer I C deklarerer man vektorer (matriser, «array-er») ved å angi antall elementer i hakeparenteser etter variabelnavnet. Simula C integer array A(1:10); int a[10]; real array B(-1:1); float b[3]; A(2) := 17; a[1] = 17; B(0) := B(-1)+B(1); b[1] = b[0]+b[2]; Java C int a[] = new int[10]; int a[10]; float b[] = new float[3]; float b[3]; a[1] = 17; a[1] = 17; b[1] = b[0]+b[2]; b[1] = b[0]+b[2]; Nedre grense er alltid 0 i C (som i Java)! Det er opp til oss som programmerere å foreta omregningen. Forelesning Ark 15 av 25

16 Vektorer som parametre Når en parameter er en vektor, trenger man ikke oppgi antallet elementer: void null_ut(int v[], int n) { /* Nuller ut en vektor med n elementer. */ int i = 0; while (i < n) { v[i] = 0; i = i+1; Forelesning Ark 16 av 25

17 Definisjonsfiler I C bruker man ofte programpakker, og da må man hente inn de nødvendige definisjoner. Dette gjøre med direktivet #include. Simula external class Xx; C #include <xx.h> Java import Xx; C #include <xx.h> (Merk at #-tegnet må stå helt til venstre på linjen! Det skal heller ikke være noe ; til slutt.) De to vanligste pakkene er stdio.h («standard I/O») definerer alt som har med lesing og skriving å gjøre. stdlib.h («standard library») definerer de vanligste C-funksjonene, for eksempel exit. Vi skal siden benytte andre pakker. I C-boken til Kernighan & Ritchie står en oversikt over de viktigste pakkene. Forelesning Ark 17 av 25

18 Inkrementering og dekrementering Siden det å øke eller senke en variabel med 1 er så vanlig, har C en egen notasjon for dette: ++a og a samt a++ og a. Hvis ++ eller står foran variabelen, økes variabelen før vi får dens verdi. Hvis ++ eller står etter variabelen, økes variabelen etter at vi får dens verdi. Følgende program tester det: #include <stdio.h> int main(void) { int a = 5; printf(" ++a er %d\n", ++a); printf("nå er a %d\n", a); printf(" a++ er %d\n", a++); printf("nå er a %d\n", a); return 0; Resultatet er ++a er 6 Nå er a 6 a++ er 6 Nå er a 7 Forelesning Ark 18 av 25

19 Andre former for oppdatering C (og Java) har også en annen variant som gjør programmene mer kompakte: a op= uttrykk gjør det samme som a=aop uttrykk Eksempler Simula A:=A+2; a+=2; A[4*X+Y] := A[4*X+Y]/2; a[4*x+y] /= 2; C Forelesning Ark 19 av 25

20 For-setningen C (og Java) har en annen løkke i tillegg til while-løkken: Simula for I := 1 step 1 until N do for (i=1; i<=n; ++i) Sum := Sum+I; sum += i; for I := A step -1 until B do for (i=a; i>=b; i) X(I) := X(I-1); x[i] = x[i-1]; Denne løkken er egentlig mer generell. Løkken for ( initiering ; test ; oppdatering ) kropp er en kompakt skrivemåte for initiering ; while ( test ) { kropp ; oppdatering ; Den første løkken er altså egentlig i=1; while (i <= n) { sum += i; ++i; C Forelesning Ark 20 av 25

21 Lesing fra fil Man må gjøre følgende når man skal lese fra fil: Deklarere fil-variabelen som FILE *. Åpne filen med funksjonen fopen med filnavn og "r" (for «read») som parametre. Hvis filen ikke finnes, returneres NULL. Lese fra filen med fscanf (som virker som scanf) eller fgetc (som leser ett og ett tegn). Lukke filen med fclose. #include <stdio.h> int main(void) { FILE *f; int a, b; f = fopen("2tall","r"); if (f == NULL) { printf("umulig å lese filen 2tall.\n"); return 1; fscanf(f, "%d%d", &a, &b); fclose(f); printf("%d + %d = %d\n", a, b, a+b); return 0; Forelesning Ark 21 av 25

22 Skriving til fil Skriving til fil er tilsvarende lesing fra fil. Man må gjøre følgende: Deklarere fil-variabelen som FILE *. Åpne filen med funksjonen fopen med filnavn og "w" (for «write») som parametre. Hvis filen ikke lar seg åpne, returneres NULL. Skrive til filen med fprintf (som virker som printf). Lukke filen med fclose. #include <stdio.h> int main(void) { FILE *f; int i; f = fopen("potens.tab","w"); if (f == NULL) { printf("umulig å skrive til potens.tab\n"); return 1; fprintf(f, " n n² n³\n"); for (i = 0; i <= 10; ++i) { fprintf(f, "%2d %3d %4d\n", i, i*i, i*i*i); fclose(f); return 0; Forelesning Ark 22 av 25

23 Dette gir følgende resultat: maskin navn> more potens.tab n n² n³ Forelesning Ark 23 av 25

24 Et avsluttende eksempel #include <stdio.h> #include <stdlib.h> int main(void) { FILE *f; int nc[256], i, c; for (i = 0; i <= 255; ++i) nc[i] = 0; f = fopen("min.fil","r"); if (f == NULL) { printf("kan ikke lese min.fil!\n"); exit(1); c = fgetc(f); while (c!= EOF) { ++nc[c]; c = fgetc(f); fclose(f); for (i = 0; i <= 255; ++i) { if (nc[i] > 0) { if ((32<=i && i<=126) 161<=i) printf(" %c ", i); else printf("%3d", i); printf(":%4d\n", nc[i]); return 0; Forelesning Ark 24 av 25

25 Programmet på forrige ark leser en fil min.fil tegn for tegn. Så skriver det ut hvor mange forekomster det er av hvert tegn. Bruker vi det på seg selv, får vi følgende resultat: 10: 32 : 131! : 2 " : 12 # : 2 % : 3 & : 2 : 3 ( : 17 ) : 17 * : 1 + : 6, : 6. : 4 0 : 5 1 : 4 2 : 5 3 : 2 4 : 1 5 : 5 6 : 3 : : 1 ; : 18 < : 7 = : 14 > : 3 E : 2 F : 2 I : 1 K : 1 L : 3 N : 1 O : 1 U : 1 [ : 5 \ : 2 ] : 5 : 1 a : 2 b : 1 c : 16 d : 7 e : 14 f : 21 g : 2 h : 3 i : 37 k : 2 l : 9 m : 3 n : 21 o : 6 p : 5 r : 9 s : 5 t : 12 u : 3 v : 1 w : 1 x : 1 { : 5 : 2 : 5 Forelesning Ark 25 av 25

Dagens 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. 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,

Detaljer

Dagens 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. 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

Detaljer

Programmeringsspråket C

Programmeringssprå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

Detaljer

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

Dagens 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

Detaljer

Vektorer. Dagens tema. Deklarasjon. Bruk

Vektorer. 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å

Detaljer

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

Dagens 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 17. januar 2005 Ark 1 av 23 Vektorer Alle programmeringsspråk har mulighet til

Detaljer

Dagens 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 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?

Detaljer

Dagens tema: INF2100. Utvidelser av Minila array-er. tegn og tekster. Flass- og Flokkode. prosedyrer. Prosjektet struktur. feilhåndtering.

Dagens tema: INF2100. Utvidelser av Minila array-er. tegn og tekster. Flass- og Flokkode. prosedyrer. Prosjektet struktur. feilhåndtering. Dagens tema: Utvidelser av Minila array-er tegn og tekster Flass- og Flokkode array-er prosedyrer Prosjektet struktur feilhåndtering del 0 Dag Langmyhr,Ifi,UiO: Forelesning 6. september 2005 Ark 1 av 19

Detaljer

Dagens 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. 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å

Detaljer

Velkommen til INF2100. Bakgrunnen for INF2100. Hva gjør en kompilator? Prosjektet. Jeg er Dag Langmyhr

Velkommen til INF2100. Bakgrunnen for INF2100. Hva gjør en kompilator? Prosjektet. Jeg er Dag Langmyhr Kursopplegg Velkommen til INF2100 en en for INF2100 Jeg er ([email protected]). Dagens tema: Hva går kurset ut på? for kurset Hvordan gjennomføres kurset? Hvordan får man det godkjent? Pause (med registrering

Detaljer

Datamaskinen LC-2. Dagens tema. Tall i datamaskiner Hvorfor kan LC-2 lagre tall i intervallet ? Hvorfor er det akkurat celler i lageret?

Datamaskinen LC-2. Dagens tema. Tall i datamaskiner Hvorfor kan LC-2 lagre tall i intervallet ? Hvorfor er det akkurat celler i lageret? Dagens tema Datamaskinen LC-2 En kort repetisjon Binære tall Litt om tallsystemer generelt Binære tall Heksadesimale og oktale tall Programmering av LC-2 Maskinkode Assemblerkode Kjøring av LC-2-programmer

Detaljer

Dagens tema. Datamaskinen LC-2 En kort repetisjon. Binære tall Litt om tallsystemer generelt. Binære tall. Heksadesimale og oktale tall

Dagens tema. Datamaskinen LC-2 En kort repetisjon. Binære tall Litt om tallsystemer generelt. Binære tall. Heksadesimale og oktale tall Dagens tema Datamaskinen LC-2 En kort repetisjon Binære tall Litt om tallsystemer generelt Binære tall Heksadesimale og oktale tall Programmering av LC-2 Maskinkode Assemblerkode Kjøring av LC-2-programmer

Detaljer

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2 Programmeringsspråket C Del 2 Michael Welzl E-mail: [email protected] 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

Detaljer

Offentlig utvalg for punktskrift, OUP Norsk standard for 8-punktskrift punktskrift 24. oktober 2004 sist endret

Offentlig utvalg for punktskrift, OUP Norsk standard for 8-punktskrift punktskrift 24. oktober 2004 sist endret Offentlig utvalg for punktskrift, OUP Norsk standard for 8-punktskrift punktskrift 24. oktober 2004 sist endret 19.10.2007 Desimal Hex Beskrivelse Tegnets utseende Punktkode 0 0000 4578

Detaljer

Digital representasjon

Digital representasjon Digital representasjon Alt er bit! Hvordan lagre tall tekst bilder lyd som bit i en datamaskin Hvordan telle binært? Binære tall Skal vi telle med bit ( og ), må vi telle binært. Dette gjøres egentlig

Detaljer

Digital representasjon

Digital representasjon Hva skal jeg snakke om i dag? Digital representasjon [email protected] Hvordan lagre tall tekst bilder lyd som bit i en datamaskin INF Digital representasjon, høsten 25 Hvordan telle binært? Binære tall Skal

Detaljer

Kapittel 1 En oversikt over C-språket

Kapittel 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

Detaljer

Del 1 En oversikt over C-programmering

Del 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

Detaljer

Velkommen til INF2100

Velkommen til INF2100 Kursopplegg Velkommen til INF2100 Jeg er ([email protected]). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får man det godkjent? Pause (med registrering av fremmøte)

Detaljer

Dagens 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 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

Detaljer

ISO Dagens tema. Tegn. Uttrykk. I Minila lagres kun heltall, men de kan tolkes som tegn. Det siste om Minila.

ISO Dagens tema. Tegn. Uttrykk. I Minila lagres kun heltall, men de kan tolkes som tegn. Det siste om Minila. April 1995, DFL, Ifi/UiO Dagens tema Dagens tema Det siste om Minila og tekster Flink maskinen Litt datamaskinhistorie Registre og lagre Instruksjoner Flok kode Flass kode I Minila lagres kun heltall,

Detaljer

Programmeringsspråket C

Programmeringssprå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;

Detaljer

Digital representasjon

Digital representasjon Hva skal jeg snakke om i dag? Digital representasjon [email protected] Hvordan lagre tall tekst bilder lyd som bit i en datamaskin Hvordan telle binært? Binære tall For å bruke bit (0 og 1) som tall, må vi

Detaljer

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring

Detaljer

IN 147 Program og maskinvare

IN 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

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

Programmeringsspråket C

Programmeringssprå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

Detaljer

Dagens tema C, adresser og pekere

Dagens 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

Detaljer

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 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

Detaljer

Dagens tema. Oppsummering om assemblerspråk. Programmering i C. Bakgrunn. Et minimalt eksempel med forklaring. Datatyper i C.

Dagens tema. Oppsummering om assemblerspråk. Programmering i C. Bakgrunn. Et minimalt eksempel med forklaring. Datatyper i C. Dagens tema Oppsummering om assemblerspråk Programmering i C (kapittel 11 og 12 i Patt&Patel-boken) Bakgrunn Et minimalt eksempel med forklaring Datatyper i C Operatorer i C Et eksempel til med forklaring

Detaljer

Dagens 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 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

Detaljer

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

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 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I

Detaljer

Forelesning inf Java 4

Forelesning inf Java 4 Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette

Detaljer

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

Oppgavene 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

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Michael Welzl E-mail: [email protected] 29.08.13 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen

Detaljer

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

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: [email protected] Utdanning: Dataingeniør, 2000 Cand.Scient,

Detaljer

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr Fra Python til Java En introduksjon til programmeringsspråkenes verden [email protected] Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden [email protected] Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000 (Uke 5) Mer om løkker, arrayer og metoder INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden [email protected] Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

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

Dagens 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

Detaljer

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator? Kursopplegg Velkommen til INF2100 Bakgrunnen Bakgrunnen for INF2100 Jeg er Dag Langmyhr ([email protected]). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får

Detaljer

Betinget eksekvering og logiske tester i shell

Betinget eksekvering og logiske tester i shell Betinget eksekvering og logiske tester i shell Betinget eksekvering *? Programmet utfører operasjon(er) bare hvis en logisk betingelse er sann Bash tilbyr to kontrollstrukturer for å kunne gjøre betinget

Detaljer

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

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon Oversikt INF1000 Uke 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning Uttrykk

Detaljer

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon Velkommen til INF-1060 Introduksjon til operativsystemer og datakommunikasjon 22.08.12 INF1060 1 Forelesere: Pål Halvorsen ([email protected]) Nettverk og Distribuerte systemer (ND) (ved Simula) Tor Skeie

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon Velkommen til INF-1060 Introduksjon til operativsystemer og datakommunikasjon 21.08.2007 INF1060 1 Forelesere: Pål Halvorsen ([email protected]) Nettverk og Distribuerte systemer (ND) (ved Simula) Kjell

Detaljer

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator Litt mer om uttrykk: ++ og -- INF : Forelesning Løkker og arrayer Mye og viktig stoff. Du MÅ løse oppgaver selv for å lære!. september 6 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for

Detaljer

Del 4 Noen spesielle C-elementer

Del 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

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

Programmering Høst 2017

Programmering Høst 2017 Programmering Høst 2017 Tommy Abelsen Ingeniørfag - Data Innledning Dette er et dokument med litt informasjon og eksempler om kontrollstrukturer, samt oppgaver til forskjellige kontrollstrukturer. Spør

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

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

OPPGAVE 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.

Detaljer

Eksamensoppgaver 2014

Eksamensoppgaver 2014 Eksamensoppgaver 2014 Først kommer alle de relevante små-oppgavene og deretter den store oppgaven. Oppgave 1 (4 p) a) Hva er verdien til tall etter at følgende kode er utført? tall = (5+3)*2 tall = tall+2

Detaljer

Velkommen til INF2100 Jeg er Dag Langmyhr

Velkommen til INF2100 Jeg er Dag Langmyhr Velkommen til Jeg er Dag Langmyhr ([email protected]). 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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen Forkurs INF1010 Dag 1 Andreas Færøvig Olsen ([email protected]) Tuva Kristine Thoresen ([email protected]) Institutt for Informatikk, 6. januar 2014 Forkurs INF1010 - dag 1 Hello, World! Typer Input/output

Detaljer

INF1000 : Forelesning 1 (del 2)

INF1000 : Forelesning 1 (del 2) INF1000 : Forelesning 1 (del 2) Java Variable og tilordninger Heltall, desimaltall og sannhetsverdier Utskrift på skjerm Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet

Detaljer

Læringsmål og pensum. Oversikt

Læringsmål og pensum. Oversikt 1 2 Læringsmål og pensum TDT4105 Informasjonsteknologi grunnkurs: Uke 39 Betingede løkker og vektorisering Læringsmål Skal kunne forstå og programmere betingede løkker med while Skal kunne utnytte plassallokering

Detaljer

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning Dagens tema Typer (Kapittel 3 frem til 331) Innføring i ML (Kapittel 743 & ML-kompendiet) Typer En (data-)type består av: en mengde verdier en mengde operasjoner man kan anvende på disse verdiene Eksempel:

Detaljer

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

Oversikt. 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

Detaljer

INF1000 Eksamen 2014 (modifisert)

INF1000 Eksamen 2014 (modifisert) INF1000 Eksamen 2014 (modifisert) Oppgave 1 (4 poeng) a) Hva er verdien til tall etter at følgende kode er utført? tall = (5+3)*2 tall = tall+2 b) Anta at følgende programsetninger utføres. Hva skrives

Detaljer

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

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder: Lese fra fil Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo INF1000 : Forelesning 5 Vi må først importere pakken easyio Vi åpner

Detaljer

TDT4110 IT Grunnkurs Høst 2016

TDT4110 IT Grunnkurs Høst 2016 TDT4110 IT Grunnkurs Høst 2016 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Løsningsforslag til Auditorieøving 1 1 Teori 1. Hvilket tall kan IKKE lagres

Detaljer