Imperativ programmering. Föreläsning 2

Relevanta dokument
Föreläsning 3: Booleans, if, switch

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

F4. programmeringsteknik och Matlab

Exempel på ett litet Ada-program

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Klassdeklaration. Metoddeklaration. Parameteröverföring

Imperativ programmering

En kort text om programmering i C.

Imperativ programmering. Föreläsning 3

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

TDIU01 - Programmering i C++, grundkurs

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

OOP Objekt-orienterad programmering

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Imperativ programmering. Föreläsning 4

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Tentamen Grundläggande programmering

Programmering i C, 7,5 hp

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Programmeringsteknik I

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Twincat: PLC Control

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Program & programmering

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Repetition C-programmering

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

KOMPLETTERANDE HEMTENTAMEN 2 TDDB53

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Introduktion C-programmering

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Deklarationer/definitioner/specifikationer

Föreläsning 5: Introduktion av pekare

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

TENTAMEN OOP

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Språket Python - Del 1 Grundkurs i programmering med Python

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Enkla datatyper minne

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT 2014

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Det finns många flaggor till g++,

KOMPLETTERANDE HEMTENTAMEN TDDB53

Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Agenda (obs! halvdag)

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

KOMPLETTERANDE HEMTENTAMEN TDDB53

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Föreläsning 3-4 Innehåll

Polymorfi. Objektorienterad och komponentbaserad programmering

Övning2. Variabler. Data typer

Malmö högskola 2008/2009 CTS

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Föreläsning 6: Introduktion av listor

Malmö högskola 2012/2013 Teknik och samhälle

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Blandat. Föreläsning 5

Programmeringsteknik I

Minnestilldelning (allokering) och frigörande (avallokering) av minne

OOP Tenta

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

kind spelling Scanning

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Malmö högskola 2007/2008 Teknik och samhälle

Planering Programmering grundkurs HI1024 HT data

Föreläsning 6: Metoder och fält (arrays)

Datastrukturer och algoritmer

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Repetition i Pascal. Exemplen fac. Exemplen fac i Pascal. Exemplen fac motivering. Orginalet

Kapitel 16: Programmering

Visual Basic, en snabbgenomgång

Introduk+on +ll programmering i JavaScript

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Logik och kontrollstrukturer

Transkript:

Imperativ programmering 1DL126 3p Föreläsning 2

Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner. Dessa kallas helt oväntat för instruktionsuppsättningar.

Instruktioner Tre typer: Tilldelning Operatorer Kontrollflöde

Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Instruktionerna förändrar omgivningens tillstånd. Detta sker genom tilldelning.

Vad är en tilldelning? En tilldelning förändrar ett värde i maskinen - maskinens tillstånd förändras. Tillstånd - Ett foto av maskinens minne. Tillståndet ärver sin betydelse direkt från värddatorn i ett imperativt språk.

Minnet Minnet består av en serie platser. En adress är numret på en plats i minnet. Varje plats kan innehålla ett tal. Talet som ligger på en plats i minnet kallas innehållet på den adressen.

Minnet 0 1 2 3 4 5 6 7 8 9 10 11 12...

Minnet 0 1 2 3 4 5 6 7 8 9 10 11 12 42 127 0 76 2 208... 0 1 2 3 4 5 6 7 8 9 10 11 12 75 3 35 87 63 12 52 4 98...

Tilldelning L-value R-value <uttryck> 1 = <uttryck> 2 Plats i minnet Värde som kan lagras där

L-value och R-value M[j] L-value - En plats (j) R-value - Innehållet

Adressering M[j] - Direkt adressering M[M[j]] - Indirekt adressering R-värdet från M[j] är L-värde för M[M[j]]

Bindning Att binda - Associera ett namn med en plats i minnet. Namnet refererar till platsen. En abstraktion i programmeringsspråken.

Bindning Namnet binds vid första användning: x = 42; Namnet måste bindas innan användning: (Deklaration) var x; x = 42; Deklaration kan även specificera typ: int x; var x : integer;

Bindning 0 1 2 3 4 5 6 7 8 9 10 11 12 42 127 0 76 2 208... x foo

Bindning Statisk bindning - sker innan programmet körs. Dynamisk bindning - sker medan programmet körs.

Statisk bindning Funktioner i C - Koden kan inte ändras under körning. void foo() { blah = 1; } void bar() { foo(); }

Dynamisk bindning Generisk programmering i t.ex. Java, Ada, C++. public void foo(list<string> l) { } l.add("bar");

Bindning Vi kan binda om ett namn så att det refererar till en annan plats i minnet. OBS! Inget ändras i själva minnet.

Bindning var x = 42, foo = 208; 0 1 2 3 4 5 6 7 8 9 10 11 12 42 208... x foo

Bindning x = &M[2]; 0 1 2 3 4 5 6 7 8 9 10 11 12 42 208... x foo

Bindning En viktig skillnad mellan imperativa språk och funktionella språk: Imperativa språk kan ändra i bundet minne. Kallas att mutera.

Bindning *x = 38; 0 1 2 3 4 5 6 7 8 9 10 11 12 42 38 208... x foo

Instruktioner Tre typer: Tilldelning Operatorer Kontrollflöde

Operatorer Grundläggande funktioner i språket. Matematiska operationer Booleska operationer Strängoperationer Minnesoperationer

Operatorer Tre typer: Unära: Binära:!x, &x, *x, ~x, @x, ^x x + y, x - y, x * y, x / y Namngivna: sizeof(x)

Operatorer Överlagring - Samma operator kan användas till flera olika saker. tal + tal sträng + sträng OBS! Inte tal * tal *var C++ tillåter egen överlagring av operatorer.

Instruktioner Tre typer: Tilldelning Operatorer Kontrollflöde

Kontrollflöde Instruktioner som används för att styra programmet. Påverkar inte tillståndet i maskinen. Villkorliga hopp Ovillkorliga hopp Loopar

Kontrollflöde Villkorliga hopp: C / C++ / Java if (x == 10) sats; Ada if x = 10 then sats; if (x > 10) sats; else if (x < 10) sats; if x > 10 then sats; elsif x < 10 then sats;

Kontrollflöde Villkorliga hopp: C / C++ / Java if (x == 10) sats; Pascal if x = 10 then sats; if (x > 10) sats; else if (x < 10) sats; if x > 10 then sats else if x < 10 then sats;

Kontrollflöde Switch / case C / C++ / Java switch (heltal) { } case 54: satser; break; case 78: satser; break; default: satser;

Kontrollflöde Ada: case Heading is when North => Y := Y + 1; when South => Y := Y - 1; when East => X := X + 1; when West => X := X - 1; end case;

Kontrollflöde Ovillkorliga hopp: goto, longjmp, gosub Procedurell programmering förbjuder ovillkorliga hopp (bortsett från return, break, exit, continue...) Java har inte goto

Kontrollflöde Loopar - Fasta for (x = 0; x < 10; x++) for x in integer range 0.. 10 loop end loop (reverse) for i := 0 to 10 do (downto)

Kontrollflöde For-each (Java): for (Object x : list) foo(x); For över ett intervall (Ada): for elm in arr'range loop arr(elm) := 0;

Kontrollflöde Loopar - dynamiska while (antal < 10) do { } while (antal < 10); repeat until antal = 10;

Kontrollflöde Loopar i Ada loop end loop; loop exit when x = 10; end loop;

Kontrollflöde Nyckelord i loopar break Avbryter loopen continue Hoppar tillbaka till början exit (Ada)

Obligatorisk uppgift Skriv ner det viktigaste / det du minns bäst från dagens föreläsning