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

Like dokumenter
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

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

IN 211 programmeringsspråk H 99

Programmeringsspråket C

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

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

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

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

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

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

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

Dagens tema: Kjøresystemer II

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

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

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

Programmeringsspråket C

IN 147 Program og maskinvare

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

2 Om statiske variable/konstanter og statiske metoder.

Programmeringsspråket C

2 Om statiske variable/konstanter og statiske metoder.

Velkommen til. INF våren 2016

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

UNIVERSITETET I OSLO

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

Kapittel 1 En oversikt over C-språket

Skal bindes opp til en deklarasjon av samme navn

Semantisk Analyse del III

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

UNIVERSITETET I OSLO

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

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

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Del 1 En oversikt over C-programmering

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

Forelesning inf Java 1

IN 147 Program og maskinvare

Velkommen til INF2100 Jeg er Dag Langmyhr

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

Generiske mekanismer i statisk typede programmeringsspråk

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

UNIVERSITETET I OSLO

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

Kap 6.4: Typesjekking Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 19. og 23. mars Dagens tema: Typer og typesjekking

Velkommen til INF2100

Plan: Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk. Innføring i ML. typer enkle funksjoner (Fortsetter med ML i to uker til)

Skal bindes opp til en deklarasjon av samme navn

Kap 6.3: Symboltabellen Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 17. mars Dagens tema:

Dagens tema: Datastrukturer

IN 147 Program og maskinvare

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.

Dagens tema. Perl: Mer om regulære uttrykk Filer Lister og tabeller Kompilering og interpretering (kapittel ) IN 211 Programmeringsspråk

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

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

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

Velkommen til INF1060. Introduksjon til operativsystemer og datakommunikasjon

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

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

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

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene

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

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

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

Programmeringsspråket C Del 3

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

2012 2a. C rc; void main() { rc = new C (); rc.m2(); } } INF 3110/ INF /28/13 1

Velkommen til INF5110 Kompilatorteknikk

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

Programmeringsspråket C Del 3

Løsningsforslag til eksamen i IN 211 høsten 2002

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Diverse eksamensgaver

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

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

Forelesning inf Java 1

Feilmeldinger, brukerinput og kontrollflyt

INF1000 : Forelesning 4

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

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

Del 4 Noen spesielle C-elementer

Datatyper og typesjekking

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

Variable Man kan bruke variable i ML. ML (kap 5 og 6) Nye datatyper INF3110/4110 INF3110/4110 INF3110/4110 INF3110/4110. Variable i ML.

Obligatorisk Innlevering 2

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

Dagens tema: INF2100. Syntaksanalyse. Hva annet gjør en kompilator? Sjekking av navnebruk. Testutskrifter

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

Velkommen til. INF våren 2017

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)

Datatyper og typesjekking

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk

Hva er kompilering? Dagens tema. En kompilator En kompilator leser Minila koden og lager Flok koden.

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

Transkript:

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

Foreleser Ragnhild Kobro Runde E-post: ragnhilk@ifi.uio.no Kontor: 3345 Treffetid: torsdager 14.30-15.30 Dagens tema Introduksjon til IN 211 Pensum og andre praktiske opplysninger Hva handler kurset om? Hvorfor er det lurt å ta kurset? Generelt om språk Binding (2.2.3) Variables skop, type, levetid og annet (2.3) Forelesning 20.8.2001 Ark 2 av 18

Praktiske opplysninger Undervisning Forelesninger: Mandag 14.15-16 Gruppeundervisning: 1 dobbeltime I tillegg: Selvstudium! (3 vekttall 12 timer i uken?) Obligatorisk oppmøte Oppdatert informasjon http://www.ifi.uio.no/~in211/. Husk nyhetsgruppen: ifi.in211 Forutsetninger IN115 (rekursjon, lister, trær,... ) Lese C-programmer Programmere Java Forelesning 20.8.2001 Ark 3 av 18

Pensum Ghezzi & Jazayeri: Programming language concepts (tredje utgave), John Wiley & sons, 1998. Krogdahl & Ore: Om syntaks og syntaksanalyse, kompendium 47. Kan kjøpes i bokhandelen. Kristoffersen: Funksjonell programmering i standard ML, kompendium 61. Kan leses og skrives ut fra kursets hjemmeside. I tillegg: Forelesninger, obligatoriske oppgaver og ukeoppgaver. Forelesning 20.8.2001 Ark 4 av 18

Hvorfor så mange språk? Hvorfor lager man ikke ett godt språk og er ferdig med saken? IBM prøvde seg i 1964 med PL/I som er kjent for at den tillot IF THEN = ELSE THEN ELSE = THEN+1 ELSE THEN = ELSE; Det er gode grunner til at det er mange språk: Oppgavene er ulike i størrelse, kompleksitet samt hva slags problem som skal løses. Det er forskjellige krav til hastighet, plass, sikkerhet,... Programmerere er ulike! Informatikken er ennå en ung vitenskap. Forelesning 20.8.2001 Ark 5 av 18

I IN 211 vil vi ta for oss hvordan man beskriver et språk hva som skjer bak kulissene eksempler på ulike typer språk: Perl skript- og søkespråk Logla prosedyrespråk ML funksjonelt språk Prolog logisk språk og litt om diverse andre språk. Dessuten vil dere få trening i å programmere Java. Forelesning 20.8.2001 Ark 6 av 18

Binding Programmer består av entiteter med tilhørende attributter (egenskaper). Eksempler: En variabel haretnavnogentype. En rutine har et navn og formelle parametre (med typer). En setning har assosierte aksjoner. Det å sette verdien til en slik attributt kalles binding. Dette kan skje på fire stadier: Forelesning 20.8.2001 Ark 7 av 18

I språkdefinisjonen: Betydningen angis i språkets definisjon. Eksempel: I Java representerer int et heltall som er et kjent matematisk begrep. Dermed vet vi hvordan +, * etc. skal oppføre seg. I implementasjonen: Implementatøren foretar et valg. Eksempel: I C er det ikke angitt hvor mange byte som trengs til en int. Under kompileringen: Betydningen kan endre seg fra program til program, men vil være konstant hele tiden programmet kjøres. Eksempel: I Pascal er typen Integer predefinert, men kan redefineres i et program. Under kjøring: Definisjonen kan endre seg mange ganger under kjøringen. Eksempel: En variabels verdi vil endre seg. De tre første bindingene kalles statiske bindinger, den siste kalles dynamisk binding. Forelesning 20.8.2001 Ark 8 av 18

Hva er en variabel? Sett fra en programmerers synspunkt, har en variabel følgende egenskaper: navn skop levetid type adresse i lageret verdi Navn En variabel får navnet i en deklarasjon. Noen språk (som Perl) krever ingen eksplisitt deklarasjon; de har en implisitt deklarasjon. Forelesning 20.8.2001 Ark 9 av 18

Skop Enhver deklarasjon har sitt skop, dvs. den delen av programmet hvor den er synlig. Enhver forekomst er kun i skopet til én deklarasjon med samme navn. Skrives det ut 1 eller 2? #include <stdio.h> int x = 1; void f() { printf("x = %d\n", x); } int main() { int x = 2; f(); } Forelesning 20.8.2001 Ark 10 av 18

Språkets skopregler forteller hva skopet er. De vanligste er: C Skopet starter ved deklarasjonsstedet. Simula Skopet starter ved begin i blokken. Java Som C for lokale variable og som Simula for metoder og klasser. Perl Som C for variable og som Simula for funksjoner. Alle disse språkene (unntatt Perl) har statisk skop. Alle disse skopene varer til blokkens avslutning (med end eller }). For alle språkene gjelder at lokale redeklarasjoner kan gi «hull» i skopet. Forelesning 20.8.2001 Ark 11 av 18

Skop fra deklarasjonsstedet #! /local/bin/perl -w $x = 1; if ($x > 0) { print "x = $x\n"; my $x = 2; print "x = $x\n"; } print "x = $x\n"; exit 0; En kjøring gir følgende utskrift: x= x= x= Forelesning 20.8.2001 Ark 12 av 18

Skop i hele blokken begin integer x = 1; begin procedure P1; begin OutText("x = "); OutInt(x, 0); OutImage; end P1; integer x = 2; P1; end; OutText("x = "); OutInt(x, 0); OutImage; end Resultatet av kjøringen: x= x= Forelesning 20.8.2001 Ark 13 av 18

Problem med skop à la C Hvordan kan to funksjoner kalle hverandre når de først er kjent etter deklarasjonen? Løsningen er å tillate separat deklarasjon av signaturen. float f2(int a, int b); int f1(float x) {... f2(...,...)... } float f2(int a, int b) {... f1(...)... } Forelesning 20.8.2001 Ark 14 av 18

Dynamisk skop Noen språk har dynamisk skop, med regelen: En forekomst binder til den sist evaluerte deklarasjon som ikke er avsluttet (med end eller }). Eksempel: Perl har både statisk skop (med my) og dynamisk skop (med local). #! /local/bin/perl -w sub skriv_x { print "x = $x\n"; } sub p_statisk { my $x = 2; skriv_x(); } sub p_dynamisk { local $x = 3; skriv_x(); } $x = 1; skriv_x(); p_statisk(); p_dynamisk(); exit 0; Resultatet blir: x= x= x= Forelesning 20.8.2001 Ark 15 av 18

Levetid En variabels levetid er den tiden den opptar plass i lageret. Dette er normalt den tiden programmet er i variabelens skop, men det er unntak: En variabel lever selv om den midlertid er skjult av en annen variabel. Noen språk har nøkkelord som gir utvidet levetid (som static i Java og C). Ved å bruke dynamisk allokering (new ijava,malloc i C) får brukeren full kontroll over levetiden. Type En variabels type angir et sett av verdier og mulige operasjoner på disse. Mer om typer neste uke! Forelesning 20.8.2001 Ark 16 av 18

Adresse i lageret («l-value») Hvor en variabel plasseres i lageret er oftest dynamisk bestemt. (Mer om dette senere i kurset.) Verdien («r-value») En variabels verdi er det mest dynamiske vi har, men selv der finnes unntak: I noen språk kan man definere konstanter som er kjent under kompileringen (som #define i C). Noen språk kan «fryse» en variabel slik at verdien siden ikke endres (som final ijava). Forelesning 20.8.2001 Ark 17 av 18

Initialverdi Hvilken verdi har en variabel når den opprettes? Noen muligheter: en tilfeldig verdi (gitt av hva som lå der før) en fast verdi (0 i Simula) en initialverdi må alltid oppgis (Modula-3) det er umulig å bruke en variabel før den har fått en verdi (Java) Forelesning 20.8.2001 Ark 18 av 18