Velkommen til INF1060. Introduksjon til operativsystemer og datakommunikasjon

Like dokumenter
Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF1060 høsten 2017

Programmeringsspråket C

Programmeringsspråket C

Programmeringsspråket C

IN 147 Program og maskinvare. Velkommen til IN 147. Program- og maskinvare

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

INF2270 Datamaskinarkitektur

Del 1 En oversikt over C-programmering

INF1070. Velkommen til. Datamaskinarkitektur. Motto: Hvordan bygger man en datamaskin? INF1070

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

Velkommen. Velkommen til INF2270. Datamaskinarkitektur. Motto: Datamaskinen på tvers

INF 1000 høsten 2011 Uke september

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

INF1000 undervisningen INF 1000 høsten 2011 Uke september

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

INF2270 Datamaskinarkitektur

INF2270 Datamaskinarkitektur

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

Velkommen til. INF våren 2017

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

INF1000 : Forelesning 1 (del 2)

Kapittel 1 En oversikt over C-språket

Hvordan en prosessor arbeider, del 1

Velkommen til. IN1010 Objektorientert programmering Våren 2018

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker

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

Programmeringsspråket C Del 3. Hans Petter Taugbøl Kragset

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

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

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

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

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

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset

Grunnleggende programmering i C

Velkommen til. INF våren 2016

IN 147 Program og maskinvare

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

Programmeringsspråket C Del 2

IN 147 Program og maskinvare

Løsningsforslag til eksamen i INF1000 våren 2006

En oppsummering (og litt som står igjen)

INF Uke 10. Ukesoppgaver oktober 2012

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

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Programmeringsspråket C Del 3

UNIVERSITETET I OSLO

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

Kort om kursene IN1900, MAT-IN1105, IN-KJM1900

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

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Programmeringsspråket C Del 3

Vektorer. Dagens tema. Deklarasjon. Bruk

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

Velkommen til INF Kompilatorteknikk

Velkommen til INF2100

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

Velkommen til INF2100 Jeg er Dag Langmyhr

Kort om kursene IN1900, MAT-IN1105, IN-KJM1900

Kapittel 9: Sortering og søking Kort versjon

Programmeringsspråket C Del 2. Michael Welzl

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

Kort om kursene INF1100 og MAT-INF1100L

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

INF1000: noen avsluttende ord

Feilmeldinger, brukerinput og kontrollflyt

INF-103 Fra brukergrensesnitt til maskinvare

INF-103. Velkommen til. Første time. Fra brukergrensesnitt til maskinvare. eller Datamaskinen på tvers. Andre time

Velkommen til INF5110 Kompilatorteknikk

IN1010 Objektorientert programmering Våren 2019

Ukeoppgaver 1: 30. aug 3. sep (INF Høst 2010)

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

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

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

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

Del 4 Noen spesielle C-elementer

Programmeringsspråket C Del 2

Velkommen til INF Kompilatorteknikk

INF1000: Forelesning 7

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

INF1000: Forelesning 7. Konstruktører Static

Programmeringsspråket C Del 2

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

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

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

Dagens tema: Datastrukturer

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter denne uken! Klart for første oblig

INF1000 Eksamensforberedelser og -tips. Høst 2014 Siri Moe Jensen

Forelesning inf Java 1

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix

Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004

Kapittel 1: Datamaskiner og programmeringsspråk

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Transkript:

Velkommen til INF1060 Introduksjon til operativsystemer og datakommunikasjon 1

Forelesere Pål Halvorsen (paalh@ifi.uio.no) Nettverk og Distribuerte systemer (ND) (ved Simula) Tor Skeie (tskeie@ifi.uio.no) Nettverk og Distribuerte systemer (ND) (ved Simula) Michael Welzl (michawe@ifi.uio.no) Nettverk og Distribuerte systemer (ND) (ved IFI) Organisasjon: (alle organisatoriske spørsmål, vedr. oppgaver osv.): Hans Petter Taugbøl Kragset (hpkragse@ifi.uio.no) 2

Pensum-bøker Modern Operating Systems Andrew S. Tanenbaum, 2008. Pearson. 3rd edition. ISBN: 0136006639 http://www.pearsonhighered.com/product?isbn=0136006639 Alternativt: Operating Systems: A Systematic View William S. Davis and T.M. Rajkumar, 2004. Addison-Wesley. 6th edition. ISBN: 0-321-26751-6 Innføring i Datakommunikasjon Øyvind Hallsteinsen, Bjørn Klefstad og Olav Skundberg, 2008. Gyldendal Norsk Forlag, 2.utgave. ISBN 9788205384149. 3

Anbefalt litteratur The C programming Language Brian W. Kernighan, Dennis M. Ritchie. Prentice Hall. 2.utgave. ISBN 0-13-110362-8 C: A Reference Manual Samuel P. Harbison and Guy L. Steele, 2002. Prentice Hall. 5. utgave. ISBN: 0-13-089592-X 4

Hjemmeside Kursets hjemmeside: www.uio.no/studier/emner/matnat/ifi/inf1060/h16/ Er hovedkanalen for løpende informasjon om kurset. Lysark til forelesningene blir lagt på hjemmesiden Ukeoppgaver legges ut hver uke; senere kommer også løsningsforslag. Ukesoppgavene er også pensum! Obligatoriske oppgavene legges ut på hjemmesiden Hjemmeeksamen legges ut på hjemmesiden Viktige beskjeder dukker opp ved behov 5

Undervisningstilbud Forelesninger Introduserer konsepter, basis for pensum i faget Plenumstimer Dypere forståelse gjennom oppgaveløsning og eksemplifisering. Det er her du lærer C!!! Orakeltimer Én-til-én hjelp med oppgaver Ukesoppgaver Mengdetrening Obligatoriske oppgaver Tvungen trening til eksamen 6

Piazza Piazza brukes som Q&A-plattform http://piazza.com/uio.no Søk opp INF1060 Still spørsmål, få svar - hjelp andre, få hjelp! 12 min gjennomsnittlig responstid i fjor (!) 7

Obligatoriske oppgaver Det er tre obligatoriske oppgaver: To programmeringsoppgaver, en teorioppgave Én hjemmeeksamen De skal leveres individuelt Karakter på hjemmeeksamen teller 40% av sluttkarakteren Den avsluttende skriftlige eksamenen teller 60% Det blir digital eksamen Mer informasjon kommer senere (nærmere eksamen) 8

Følg med på hjemmesiden! 9

Forventninger Hva kan dere forvente å få ut av å ta kurset? Kjennskap til programmeringsspråket C og trening i å bruke det Forstå hva et operativsystem er og hvordan det fungerer Forstå grunnleggende egenskaper ved kommuniserende systemer Kunne skrive enkle programmer som kommuniserer over nettverk 10

Kursevalueringen 2015 Hva har vi gjort for å gjøre ting bedre? Nye obligatoriske oppgaver Ny hjemmeeksamen Forbedrede slides første tre forelensinger Økt bevissthet på deres bakgrunn (1000/1010) Tydeliggjøring av kursets form Vi tar dette på alvor! Har du tilbakemeldinger tas de imot med enorm takk! 11

Programmeringsspråket C (Foilene om C er basert på foiler laget av Dag Langmyhr) Bakgrunn: Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960-75 Navnet kommer fra BCPL B C Opphavsmannen heter Dennis Ritchie ANSI-standard i 1989 ( C89 ) ISO-standard i 1990 revidert versjon i 1999 ( C99 ) (ANSI-standard i 2000, men ANSI C betyr vanligvis C89) 12

Formålet med C Tilgang til maskinens ressurser Lite maskinavhengige programmer Kompakte programmer Raske programmer 13

C - Fordeler og ulemper Fordeler Kompilerer til svært rask kode Standarisert godt Ulemper Ikke innebygget feilhåndtering/feilmeldinger Portabilitet Fordel og ulempe Frihet Gjør hva du vil, men lite hjelp å få 14

Hvorfor er det nyttig å lære C? Det er flere grunner: C er fremdeles et veldig utbredt språk C brukes i mange større programmeringsprosjekter C og Unix er uløselig knyttet sammen Med C kan man skrive raskere kode enn de fleste andre språk Programmering i C gir en følelse av hvordan datamaskinen fungerer 15

Hello World Alle lærebøker i programmering har med følgende lille eksempel: #include <stdio.h> int main(void) { printf("hello 1060!\n"); } (Det var Kernighan & Ritchies første bok om C som startet denne moten!) I Java ser programmet slik ut: class Hello { public static void main(string args[]) { System.out.println("Hello 1060!"); } } 16

Kompilering Følgende kommando brukes til å kompilere programmet: $ gcc hello.c -o hello Det kompilerte programmet kjøres med: $./hello Alternativ til gcc: clang - http://clang.llvm.org/ 17

Navn Store og små bokstaver: Det er forskjell på store og små bokstaver I C. MAIN, Main og main er tre helt ulike navn. 18

Funksjoner En C-funksjon ligner veldig på en metode i Java. Den består alltid av fire deler: type på returverdien. navn på funksjonen. parameterliste med typeangivelse av hver parameter. kroppen som er selve funksjonen. parameterliste type navn #include <stdio.h> int main(void) { printf("hello 1060!\n"); } kropp 19

Tekstkonstanter Brukes akkurat som i Java. String Spesialtegn: String\n 20

Utskrift printf (ikke automatisk linjeskift!): printf( Ikke linjeskift ); printf( Nå med linjeskift!\n ); Utskrift av tall: printf( Velkommen til %d, alle sammen, 1060); 21

Datatyper i C I C har vi diverse datatyper som følger: Navn Bytes char minst 1 Vi vet også størrelsesrekkefølgen: char <= short <= etc. short minst 2 int minst 2 long minst 4 Siden C99 har vi også long long med minst 8 byte 22

Datatyper i C: signed / unsigned Datatypene finnes signed eller unsigned f.eks. signed char, unsigned char Samme størrelse i minne, en annen måte å lagre taller på: 2-komplement unsigned char: binær 11111111 = 255 (tallene 0.. 255) signed char: binær 11111111 = -1, 11111110 = -2,.. (tallene -128.. 127) 23

Operatorer C har alle de vanlige, aritmetiske operatorene + - * / % Disse kan (som i Java) brukes ved tilordning av verdier: a += 5; //a = a + 5; a *= 10; //a = a * 10; a++; //a += 1; a--; //a -= 1; 24

Sammenligninger Sammenligningsoperatorer er de samme som i Java: == Likhet!= Ulikhet < Mindre enn <= Mindre enn eller lik > Større enn >= Større enn eller lik IKKE bland == og = 25

Logiske verdier/operatorer Logiske verdier: Det finnes ingen boolean type i C! I stedet brukes heltall der 0 er false og alle andre verdier er true. Logiske operatorer (som i Java) &&! 26

Binære operatorer Binære operatorer (som i Java): ~ not & and or ^ xor a b ~a a & b a b a ^ b 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 NB! Ikke bland sammen logiske og binære operatorer! int a = 1 && 4; // a = 1 int b = 1 & 4; // b = 0 // 1: 0001 // 4: 0100 27

OBS om C syntax Stort sett det samme som i Java... MEN: Java kompilatoren forhindrer at typer blandes Trolig fordi blanding av typer viste seg å være en vanlig feilkilde med C (og C++) Siden det ikke finnes noen egen boolean typ, og 0 tolkes som feil, er det viktig å skille bruk av = vs. ==, & vs. && etc. 28