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

Like dokumenter
Programmeringsspråket C

Programmeringsspråket C

Programmeringsspråket C

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

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

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

Velkommen til INF1060. Introduksjon til operativsystemer og datakommunikasjon

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

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

INF2270 Datamaskinarkitektur

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

Velkommen til. INF våren 2017

INF2270 Datamaskinarkitektur

Velkommen til INF1060 høsten 2017

INF2270 Datamaskinarkitektur

IN1010 Objektorientert programmering Våren 2019

INF-103 Fra brukergrensesnitt til maskinvare

Velkommen til INF2100 Jeg er Dag Langmyhr

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

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

Velkommen til INF2100

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

IN 147 Program og maskinvare

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

Velkommen til. IN1010 Objektorientert programmering Våren 2018

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

Dagens tema: Enda mer MIPS maskinkode

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

Forelesning inf Java 1

Del 1 En oversikt over C-programmering

Hvordan en prosessor arbeider, del 1

Dagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer

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

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Velkommen til. INF våren 2016

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

2 Om statiske variable/konstanter og statiske metoder.

VELKOMMEN TIL MAT-INF1100(L) Knut Mørken Rom 1033, Niels Henrik Abels hus

Kapittel 1 En oversikt over C-språket

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

MAT-INF 1100: Obligatorisk oppgave 1

INF 1000 høsten 2011 Uke september

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

INF1000 undervisningen INF 1000 høsten 2011 Uke september

MAT-INF 1100: Obligatorisk oppgave 1

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

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

2 Om statiske variable/konstanter og statiske metoder.

IN 147 Program og maskinvare

INF3110 Programmeringsspråk. Velkommen til kurset INF 3110/4110. Programmeringsspråk 1/24

INF 3110/4110. Velkommen til kurset. Programmeringsspråk. Først det praktiske

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

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

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

Eksamen IN1010/INF1010 våren 2018

En oppsummering (og litt som står igjen)

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

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

Kort om kursene INF1100 og MAT-INF1100L

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

INF1000: noen avsluttende ord

Forelesning inf Java 5

Forelesning inf Java 5

Vektorer. Dagens tema. Deklarasjon. Bruk

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

INF1000: noen avsluttende ord

UNIVERSITETET I OSLO

Forelesning inf Java 1

Programmeringsspråket C Del 2

Dagens 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

VELKOMMEN TIL MAT-INF 1100

Oversikt. Hva er programmering & Java forkurset til INF1000. Hva er en datamaskin. Arne Maus Inst for Informatikk Univ. i Oslo

Kapittel 1: Datamaskiner og programmeringsspråk

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.

En snarvei til INF2100

VELKOMMEN TIL MAT-INF1100(L) Knut Mørken Rom 1033, Niels Henrik Abels hus

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

INF1000: Forelesning 7

INF1000: Forelesning 7. Konstruktører Static

VELKOMMEN TIL MAT-INF1100

Forelesere. Velkommen til programmeringsspråkenes verden IN211. Praktiske opplysninger. Faglige forutsetninger. Ragnhild Kobro Runde

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

Feilmeldinger, brukerinput og kontrollflyt

IN 147 Program og maskinvare

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

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

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

Læreboken på 45 minutter

IN 147 Program og maskinvare

Velkommen til INF Kompilatorteknikk

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

Dagens tema Kapittel 8: Objekter og klasser

Transkript:

Velkommen til IN 147 Program- og maskinvare Dagens tema: Presentasjon av kurset Litt om programmeringsspråket C Registrering av oppmøte Ark 1 av 22 Forelesning 22.1.2001

Foreleserne Sigbjørn Næss Digitaltekniker E-post: Kontor: NERA sigbjorn Kristin Skar Databehandler - arbeider i driftsgruppen E-post: kritisk Kontor: 3415 Telefon: (228) 524 61 Forelesning 22.1.2001 Ark 2 av 22

Kurset Hvadreierkursetsegom? Forelesningene Gruppeundervisningen IN 147 og IN 147A Obligatoriske oppgaver Informasjon Forelesning 22.1.2001 Ark 3 av 22

Hva handler IN 147 om? 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 001010 1000 11100... Forelesning 22.1.2001 Ark 4 av 22

Mål for IN 147 Vi skal studere hvorledes man programmerer på et maskinnært nivå for å få tilgang til datamaskinens ressurser, og hvorledes maskinen er konstruert for tilby støtte for programmeringen. Motto for IN 147 Hva er det egentlig som skjer? Prosessor Som eksempel skal vi bruke prosessoren MIPS som blant annet brukes av Silicon Graphics. Dessuten finnes en simulator kalt xspim (prøv man xspim). Forelesning 22.1.2001 Ark 5 av 22

Forelesningene Forelesningene foregår i Auditorium 1, Helga Engs hus mandager 16.15 18 og onsdager 8.15 10.00. Kopi av lysarkene brukt ved mine forelesninger vil bli lagt ut ved terminalstuen i Niels Henrik Abels hus før forelesningene. En oversikt over kurset og alle forelesningene (med lysark) finnes på VVV-siden http://www.ifi.uio.no/~in147/. Dagens forelesning kan for eksempel skrives ut med print -multi4 ~in147/forelesninger/mandag-uke04.pdf Forelesning 22.1.2001 Ark 6 av 22

Gruppeundervisningen IN 147 har en litt egen form for gruppeundervisning. Gruppeundervisningen varer tre timer hver uke. Studentene skal skrive ut ukens oppgaver og gjøre seg kjent med dem før gruppeøvelsen, men ikke løse dem. Gruppene deles i smågrupper på 3 5 personer som skal prøve å løse ukens problemer. Problemene vil oftest være programmeringsoppgaver, men kan også være diskusjonspreget. Noen ganger innebærer oppgaven at studentene må lese utdelt stoff. Gruppelærerne skal være tilgjengelig for spørsmål, men skal ellers ikke delta i løsningen av gruppeoppgavene. Løsningsforslag til oppgavene legges ut på nettet hver fredag. Forelesning 22.1.2001 Ark 7 av 22

Spørretimen (fellesøvelsen) NB! Tidspunktet for spørretimen vil bli endret! I spørretimen kan studentene spørre foreleserne om alt mulig (faglig). Typiske spørsmål kan være: «Jeg skjønte ikke... i forelesningen; kan dere gjenta forklaringen?» «Hvorfor står det... i løsningsforslaget til oppgave...?» «I læreboken står det... ; kan dere forklare dette nærmere?» «Jegharhørtat...;stemmerdet?» Foreleserne vil ikke legge frem noe selv, men bare svare på spørsmål fra studentene. Still gjerne spørsmålene via e-post før spørretimen, slik at vi kan forberede klare svar. Denne formen for gruppeundervisning vil kreve mer initiativ fra studentenes side, men vi tror den vil gi dere betydelig mer utbytte. Forelesning 22.1.2001 Ark 8 av 22

Våre forventninger til dere For at dere skal få fullt utbytte av kurset, forventer vi som forelesere at dere går på forelesningene, deltar aktivt på gruppeøvelsene, tenker ut spørsmål til spørretimen, og programmerer en del selv. Forelesning 22.1.2001 Ark 9 av 22

IN 147 og IN 147A Kurset finnes i to varianter: IN 147 gir 5 vekttall og IN 147A gir 3 vekttall. Begge kursene går samlet fra starten, men IN 147A avsluttes seks uker før IN 147. Forskjeller i innhold Det innholdet man går glipp av ved å ta bare IN 147A, er operativsystemer og I/U, og parallellitet og parallelle datamaskiner. Valg av kurs Det er anledning til å utsette valget mellom IN 147 og IN 147A. Alle er nemlig påmeldt i begge kursene! Man må så melde seg av det kurset man ikke skal ta senest 15. mai (som er to uker før eksamen 29. mai). Forelesning 22.1.2001 Ark 10 av 22

Pensum Læreboken er Patterson & Hennessy: Computer organization & design; the hardware/ software interface, second edition; Morgan Kaufmann, 1998. Dessuten trenger man en oppslagsbok i C. Jeg anbefaler Kernighan & Ritchie: The C programming language, second edition (ANSI C); Prentice Hall, 1988. Nærmere spesifikasjon av pensum finnes på VVV-siden til kurset. Obligatoriske oppgaver Det vil bli tre obligatoriske oppgaver i IN 147 og to i IN 147A. Disse er ennå ikke endelig fastlagt. Forelesning 22.1.2001 Ark 11 av 22

Informasjon Informasjon om IN 147 vil bli spredt via følgende kanaler: forelesningene, gruppeøvelsene, VVV-siden til kurset (http://www.ifi.uio.no/~in147/), filområdet ~in147, og nyhetsgruppen ifi.in147. Siste gang Dette er siste gang IN 147(A) går. Høsten 2001 overtar INF-103. Forelesning 22.1.2001 Ark 12 av 22

Obligatorisk fremmøte Det er foreløbig påmeldt 295 studenter til IN 147(A) og vi venter mange etteranmeldinger. For å finne ut hvor mange som virkelig skal følge kurset, blir det registrert hvem som har møtt frem i dag. De andre mister plassen sin! Husk å registrere deg før du går i dag! Forelesning 22.1.2001 Ark 13 av 22

Programmeringsspråket C 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 1988. Formål: Kunne programmere oversiktlig; lettlest kode. Tilgang til maskinens ressurser. Lite maskinavhengige programmer. Kompakte programmer. Raske programmer. Forelesning 22.1.2001 Ark 14 av 22

Cs fortrinn Mulig å skrive raske programmer. Gode muligheter for strukturering av data og program. Svært kompakt kode: Simula C n := n+1; A[++n] *= 3.1; A[n] := A[n]*3.1; Mulig å skrive elegante, oversiktlige og portable programmer. Fast standard (ANSI C) fra høsten 1988. Finnes overalt. Forelesning 22.1.2001 Ark 15 av 22

Cs svake sider Ofte lite portable hvis man ikke tenker på det mens man koder; bedre etter ANSI-C. C tilbyr programmereren større frihet. Kompilatoren vil derfor oppdage færre feil. Java c = (char)((int)c + 1); C c = c+1; Muligheter for kryptisk kode: A[*(*x)++ = y] += 4; Å programmere i Java er som å kjøre en Volvo stasjonsvogn; den duver rolig av gårde på veien, men man kommer trygt frem. Å programmere i C er som å kjøre en Ferrari; den kan gå uhyggelig fort i svingene, men man havner av og til i grøften. ukjent opphavsmann En skrivefeil i C er ingen feil; det er bare et annet program. også ukjent opprinnelse Forelesning 22.1.2001 Ark 16 av 22

Hvorfor er det nyttig å lære C? Det er flere grunner: C er sannsynligvis det mest utbredte språket i dag. C brukes i et flertall av større programmeringsprosjekter. C og UNIX er uløselig knyttet sammen. Med C kan man skrive raskere kode enn de fleste andre språk. Med C kan man skrive svært kompakt kode. Programmering i C gir en følelse av hvorledes datamaskinen fungerer. Forelesning 22.1.2001 Ark 17 av 22

Et minimalt eksempel «Alle» lærebøker i programmering har med følgende lille eksempel: #include <stdio.h> int main(void) { printf("hallo, alle sammen!\n"); } (Det var Kernighan & Ritchies første bok som startet denne moten!) I Java ser programmet slik ut: class Hello { public static void main(string args[]) { System.out.println("Hallo, alle sammen!"); } } Kompilering Følgende kommando kan brukes for å kompilere programmet: cc hallo.c -o hallo Forelesning 22.1.2001 Ark 18 av 22

Forklaring Program Et program er en liste av deklarasjoner av variable og funksjoner: Java Klasse-deklarasjoner C Deklarasjoner Hovedprogrammet «Hovedprogrammet» er en funksjon ved navn main: Java public static void main(... ) { }. { C int main(void) }. Store og små bokstaver Det er forskjell på store og små bokstaver i C. MAIN, Main og main er tre helt ulike navn. Forelesning 22.1.2001 Ark 19 av 22

Funksjoner En C-funksjon ligner veldig på en metode i Java. Den består alltid av fire deler: type på returverdien. Hvis ingen returverdi, skrives void. navn på funksjonen. parameterliste med typeangivelse av hver parameter. Til forskjell fra Java: hvis det ikke er noen parametre, skrives void. kroppen som er selve funksjonen. Den er omsluttet av { og }. Returverdien angis med en return-setning. Forelesning 22.1.2001 Ark 20 av 22

Tekstkonstanter Tekstkonstanter skrives med " foran og bak. Java "En tekst" C "En tekst" I C kan vi legge inn spesialtegn i teksten; det vanligste er \n som angir linjeskift. Java "Hei!\n" C "Hei!\n" Forelesning 22.1.2001 Ark 21 av 22

Utskrift Utskrift skjer via kall på funksjonen printf. Eventuelt linjeskift legges inn i teksten. Java C System.out.print("Hei, "); printf("hei, "); System.out.println("dere!"); printf("dere!\n"); Utskrift av tall Med %d i teksten kan man angi at det skal settes inn et tall. Dette tallet må komme senere i parameterlisten. Java C System.out.println(a + " og " + b); printf("%d og %d\n", a, b); Forelesning 22.1.2001 Ark 22 av 22