Programmering Välkomna till en kurs i programmering! Fortsättning

Download Report

Transcript Programmering Välkomna till en kurs i programmering! Fortsättning

V¨alkomna till en kurs i programmering!
Programmering
hh.se/DB2004
F¨
orel¨asning 1
Att programmera ¨ar att f˚
a datorn att bete
sig p˚
a ett viss s¨att.
Ver´
onica Gaspes
www2.hh.se/staff/vero
www2.hh.se/staff/vero/programmering
I m˚
anga andra kurser och senare i
arbetslivet kommer det att kr¨avas att ni f˚
ar
datorn att g¨ora visa saker!
Programmering handlar b˚
ade om
probleml¨osning och kodning (att skriva ner
en l¨
osning i ett programmeringsspr˚
ak).
Center for Research on Embedded Systems
IDE-sektionen
Forts¨attning
Administrivia
Fler kurser i Programmering
1
Programmering
2
Algoritmer och datastrukturer
3
Avancerad objektorienterad
programmering
4
Datorsystemteknik I och II
5
Programmering av Inbyggda System
Hemsida
All material och information finns under hemsidan
www2.hh.se/staff/vero/programmering
som kan n˚
as fr˚
an
hh.se/db2004
L¨arare
1 Ver´
onica Gaspes (Kursansvarig)
¨
2 Mattias Enervall (Ovningsassistent)
Examination
1 Skriftlig tentamen (betyg)
2
Projektarbete (inl¨amning)
3
Laborationer (uppvisning)
Kursv¨ardering
Att anv¨anda en dator i denna kurs
Unix
Vi kommer att anv¨anda Unix
milj¨
oer i programmeringskursen. I
labbsalen finns linux datorer. Ni
som har mac har ¨aven Unix.
Jag kommer visa vad ni beh¨
over
g¨
ora f¨
or att komma ig˚
ang i
labsalen. Under kursens hemsida
finns en dokument med lite mer
information.
Datorerna i labsalen
Ikonen h¨
ogst upp
l¨angst till h¨
oger
¨oppnar en
webl¨asare.
G˚
a till
hh.se/db2004
Terminalen
Under menyn
Applications,
under Accessories
kan ni v¨alja
Terminal.
D˚
a¨
oppnas ett
f¨
onster d¨ar man
kan ge
kommandon till
datorn.
Source: The New Yorker
Kommandon
Vem ¨ar Karel?
Vem ¨ar Karel?
Karel l¨ar sig Java
Syfte
Kursen handlar om
programmeringsmetodik, men f¨or
att kunna ¨ova beh¨over vi ett
spr˚
ak. I kursen ¨ar spr˚
aket Java.
F¨orsta veckan presenterar vi
principer vi kommer att illustrera
under kursens g˚
ang. Karel
erbjuder ett enklare spr˚
ak ¨an
Java.
Roboten Karel
Kommandon och tillst˚
and
Karel kan g¨
ora v¨aldigt f˚
a saker
och bor i en mycket enkel v¨arld.
V¨arlden
Gator l¨
oper v˚
agr¨att och heter
1, 2, 3, . . .
Karel v¨and mot ¨
ost i korsningen
1sta gatan / 1sta avenyn.
Karel kan move(), turnLeft(),
pickBeeper(), putBeeper()
Detaljer
Begr¨ansningar
N˚
agra kommandon medf¨
or visa
begr¨ansningar, om Karel f¨
ors¨
oker
g¨ora n˚
agot ogiltig uppst˚
ar ett fel:
Om Karel f¨
ors¨
oker ta sig
genom en mur.
Om Karel f¨
ors¨
oker ta upp en
beeper d¨ar det inte finns
n˚
agon.
Om Karel f¨
ors¨
oker l¨amna en
beeper och han har inga
s¨acken.
Avenyer l¨
oper lodr¨att och de
heter 1, 2, 3, . . .
Murar som avgr¨ansar visa
delar av v¨arlden.
F¨
orem˚
alen som kan finnas p˚
a
korsningar heter beepers
Karels tillst˚
and
Karel har en position i v¨arlden, en
riktning och ett antal beepers i en
s¨ack.
Kommandon
Karel kan svara mot de
kommandon vi n¨amnde tidigare.
N¨ar Karel utf¨
or ett kommando
f¨
or¨andras hans tillst˚
and.
Om Karel g¨or en move() s˚
a
¨andras hans position, en
korsning i den riktning han ¨ar
v¨and mot.
Om Karel g¨or en turnLeft()
¨andras hans riktning 90◦ till
v¨anster.
Om Karel g¨or en
pickBeeper() eller
putBeeper() ¨andras antalet
beepers i hans s¨ack (och
v¨arlden f¨or¨andras med!)
Att programmera Karel
Strikt syntax!
F¨
or att f˚
a Karel att utf¨
ora ett uppdrag m˚
aste man skriva ner alla
kommandon p˚
a ett mycket exakt s¨att. Man m˚
aste f¨olja syntaktiska
regler som definierar vilka kommandon och spr˚
akregler ¨ar gilltiga.
Exempel: parenteserna
De toma parentaserna i kommandon ¨ar n¨odv¨andiga.
Nu ¨
overg˚
ar f¨
orel¨asningen till att med exempel programmera Karel!
Ni finner allt jag s¨ager i den lilla skriften om Karel som finns under
kursens hemsida.
Ett Karel-programs anatomi
import stanford.karel.*;
public class BeeperPickingKarel extends Karel {
public void run() {
move();
pickBeeper();
move();
}
}
Ett Karel-programs anatomi
Att beskriva en klass
Ett Karel-programs anatomi
Att anv¨anda programbibliotek
import stanford.karel.*;
public class BeeperPickingKarel extends Karel {
public void run() {
move();
pickBeeper();
move();
}
}
Ett Karel-programs anatomi
Att beskriva ett beteende
import stanford.karel.*;
import stanford.karel.*;
public class BeeperPickingKarel extends Karel {
public void run() {
move();
pickBeeper();
move();
}
}
public class BeeperPickingKarel extends Karel {
public void run() {
move();
pickBeeper();
move();
}
}
Ett Karel-programs anatomi — Kommentarer
Objektorientering
/*
* File: BeeperPickingKarel.java
* ----------------------------* The BeeperPickingKarel class extends the basic Karel class
* by defining a "run" method with three commands. These
* commands cause Karel to move forward one block, pick up
* a beeper, and then move ahead to the next corner.
*/
import stanford.karel.*;
public class BeeperPickingKarel extends Karel {
public void run() {
move();
pickBeeper();
move();
}
}
Att definiera klasser med utvidgning
import stanford.karel.*;
public class BeeperPickingKarel
public void run() {
move();
pickBeeper();
move();
}
}
Klassen BeeperPickingKarel
bygger p˚
a allt som klassen Karel
erbjuder.
Tillst˚
and & Beteende
Programmeraren fokuserar p˚
a att modellera beteendet hos objekt.
Beteenden p˚
averkar ett objekts tillst˚
and. Detta s¨att att organisera
program l˚
ater programmeraren fokusera p˚
a delar av programmet i
taget (objektorientering underl¨attar att modularisera ett program).
Klasser & Instanser
I Karel och senare i Java det man anv¨ander f¨or att beskriva
tillst˚
and och beteende ¨ar klasser. En klass ¨ar som ett m¨onster eller
ett mall f¨
or objekt som delar ett beteende och tillst˚
andsattribut.
Dessa objekt kallas f¨
or instanser av klassen.
En uppgift f¨or b¨ararKarel
extends
Karel {
En instans av BeeperPickingKarel
¨ar ocks˚
a en robot som bor i
samma typ av v¨arld och har
samma tillst˚
andsattribut och
reagerar p˚
a samma kommandon
som en instans av Karel.
Nya kommandon
import stanford.karel.*;
public class BeeperTotingKarel extends Karel {
public void run() {
move();
pickBeeper();
move();
turnRight();
move();
turnLeft();
move();
move();
putBeeper();
move();
}
}
Mer om nedbrytning
Nya kommandon
Att definiera metoder
import stanford.karel.*;
public class BeeperTotingKarel extends Karel {
public void run() {
// som ovan
}
private void turnRight(){
turnLeft();turnLeft();turnLeft();
}
}
Detta g¨or ett program l¨attare att f¨orst˚
a, och d˚
a ¨aven att modifiera
i framtiden.
Att v¨alja r¨att nedbrytning
Karel lagar en v¨ag
Rekomendationer
Varje delproblem b¨
or utf¨
ora en begreppsm¨assig enkel uppgift.
Varje delproblem b¨
or utf¨
ora en uppgift som ¨ar s˚
a allm¨an som
m¨
ojligt s˚
a att den kan anv¨andas i flera sammanhang.
Hur v¨aljer man r¨att nedbrytning?
Till exempel:
1
Flytta till gropen.
2
Fyll gropen genom att l¨amna en beeper d¨ar.
3
Flytt till n¨asta korsningen.
¨
Ovningar
¨
Ovning
1
Inloggning
Kommandon i linux terminalen
Kompilering och felmeddelanden
Exekvering och programfel
Programmering