Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Grundlæggende Programmering (GP) Efterår Forelæsning 1 – Velkommen

Lignende præsentationer


Præsentationer af emnet: "Grundlæggende Programmering (GP) Efterår Forelæsning 1 – Velkommen"— Præsentationens transcript:

1 Grundlæggende Programmering (GP) Efterår Forelæsning 1 – Velkommen! Vi begynder Slides ligger på hjemmesiden. Du er velkommen til at printe dem nu. Martin Lillholm

2 Anybody here who doesn’t understand Danish?
Sprog ... Anybody here who doesn’t understand Danish? English Alternative Introduction to Programming – Concepts and Tools Afternoon/evening course Kurset undervises på dansk, men: Bogen er på engelsk Noget supplerende materiale på engelsk Sprogbrug

3 Agenda Motivation, forudsætninger og indhold Praktiske oplysninger
Forelæsninger, øvelser, afleveringsopgave, hjemmeside,… Datamater/computere Materiel (hardware), programmel (software), netværk Programmering Opgaver, algoritmer og datastrukturer Programmeringssprog, syntaks og semantik Programudvikling Java Om Java og Java-programmer Hello.java, HelloGUI.java og HelloApplet.java

4 Motivation Hvorfor overhovedet lære at programmere ?
Forudsætning for alle tekniske kurser på ITU Solidt fundament for at forstå mulighederne og begrænsningerne inden for informationsteknologi (IT) Også selv om du ikke ender med en teknisk profil/linie Der er stadig gode jobmuligheder for dygtige programmører Struktureret problemløsning i al almindelighed Hvor lige netop Java ? Solidt højniveaus objektorienteret programmeringssprog Velegnet til grafiske brugergrænseflader (GUIs) og internet-applikationer Velegnet begyndersprog (i nogle henseender) I lærer ikke kun Java...

5 Forudsætninger Har prøvet at bruge en computer
, browsere (eksempelvis Outlook og Internet Explorer) Lidt tekstbehandling (eksempelvis Word) Filer, kataloger (directories/foldere) Opnår kendskab til ITUs systemer svarende til Sysadms introduktion Fortvivl ikke, hvis det ikke lige passer på dig. Kan du meget mere: Eksempelvis allerede programmere? (Bundet kursusvalg, shopping-periode)

6 Indhold i GP Tre spor: GUIs Programmering Objektorienteret (Grafiske
tankegang Brugergrænseflader)

7 Indhold i GP Basale komponenter i en computer
Programmeringsproccesen: Design, algoritme, datastrukturer, programmering, afprøvning Variable, navne Kontrolstrukturer (if-then-else, for, while, do...) Datatyper (int, float, double, klasser, ...) Algoritmer (søgning og sortering) Introduktion til objektorienteret programmering (klasser, objekter, abstraktion, indkapsling, arv og polymorfi) Undtagelser (exceptions) Grafiske brugergrænseflader (GUIs) Appletter (programmer der kan køre i en browser)

8 Forelæsninger 12 fredage i efteråret 2005 fra 9.15–12 i 2A14 (her )
Første gang fredag den 2. september Herefter fredage til og med fredag 25. november (Undtagen efterårsferie – fredag den 21. oktober) I alt ca. 36 timer Pensum gennemgås i hovedtræk Læs før forelæsningerne Læs igen bagefter og i forbindelse med øvelserne Stil endelig spørgsmål – det er jer der skal lære noget Pauser – op til jer

9 Øvelser 11 fredage i efteråret fra i et af lokalerne: (4A56, 4A58) Samme dage som forelæsningerne – dog ikke i dag. I alt ca. 33 timer ”Programmeringsvagt” tirsdag ? Opgaveregning, programmering, afleveringsopgaver: Opgavesæt offentliggøres inden øvelserne - ugesedler (Onsdag tilstræbes, men senest fredag morgen) Instruktor - brug ham, stil spørgsmål! Maskiner med Java, editorer (tekstredigeringsværktøjer), udviklingsmiljøer (IDE’er) og Word mv. på ITU. Printere

10 Obligatoriske Opgaver
10 stk. obligatorisk ugeopgaver Vurderes til godkendt/ikke godkendt, løses i grupper af to. Mindst 8 af 10 opgaver skal godkendes for at blive indstillet til eksamen. Opgaver skal afleveres til tiden! (Også for jeres egen skyld) Lad nu være med at snyde! Færdighedstræning; programmering læres ikke ved at læse en bog. Ingen obligatorisk opgave første gang. Stilles onsdag (fredag) – afleveres onsdag – retur fredag.

11 Selvstudier Læs før og efter forelæsningerne
Løs opgaverne; både de almindelige og de obligatoriske Skriv programmer på livet løs ... I alt mindst 77 timer ... altså mindst 6.5 time per uge ud over forelæsninger og øvelser – gennemsnit. Adgang til ITU og maskiner 24x7

12 Eksamen Onsdag den 4. januar 2006 klokken 9.00
Fire timers skriftlig eksamen Alle ikke-elektroniske hjælpemidler er tilladte Vurderes efter 13-skalaen Gamle eksamensopgaver på hjemmesiden Vejledende løsninger offentliggøres løbende ”Prøveeksamen” sidst i semesteret – en af de obligatoriske opgaver.

13 Hjemmeside og litteratur
Primær informationskilde Pensum, forelæsninger Ugesedler med opgaver Oversigt over litteratur og supplerende materialer Litteratur: Java Software Solutions, Foundations of Program Design John Lewis og William Loftus, ISBN: Kan købes hos Samfundslitteratur 2 stk. noter af Peter Sestoft (se hjemmeside) Yderligere noter efter behov

14 Egen Computer? Skal jeg have en computer for at følge GP?
Nej, er det korte svar Maskiner med Java, editorer (tekstredigeringsværktøjer), udviklingsmiljøer (IDE’er) og Word mv. på ITU. Adgang til ITU 24x7 Er det en fordel at have en computer? Afhænger af arbejdsvaner Hvordan kan jeg bruge min computer til GP? Alle programmer man har brug for kan downloades gratis (Nogle findes på CD’en der følger med bogen) Se på hjemmesiden

15 Er GP svært ... ?

16 Projektperioden De fire uger efter kursusperioden Valgfrit emne
Typisk inspireret af et af de tre kurser Find grupper og tænk over hvad I vil! Forelæsning senere på semestret Søgemaskiner Biograf-booking Ray-tracer Eye-Toys Ruteopmåling ... Men lad os allerede tidligt snakke sammen, hvis I vil skrive 4-ugers projekt i GP 7,5 E C T S GP 7,5 E C T S ? 7,5 E C T S ? 12 4 7,5 ECTS

17 Hvem er vi ? Forelæser og kursusansvarlig: Instruktor: Martin Lillholm
Adjunkt i Innovationsafdelingen, ITU Kontor: 4D16, Instruktor: René Kofoed, studerende ITU

18 Hvad laver jeg ? Observed world (3D) Girl sitting on grass in
front of building. Tanja? ITU Ørestaden Inference (machine) Abstraction Prior knowledge (models)

19 Computer Vision / Image Analysis

20 Hvad er en computer (datamat) ?
Hardware (materiel): chips harddiske tastatur skærm printer CPU (Central Processing Unit) ... Harddisken Software (programmel): Operativsystem: Windows *, Linux, Unix, Mac OS, ... Applikationsprogrammer: Word, Notepad, Matlab, browsere, ... Datamater: PC, Laptop, Mobiltelefon, vaskemaskine, ...

21 Programmer og data i filer
En simpel computer Maskinkode Skærm Tastatur Eksternt lager CPU Internt Lager Floppy disk Harddisk Programmer og data i filer Ind- og uddata (Input og output)

22 Hvad er et program ? Et program er interne ordrer (maskinkode) til en datamat. Interne ordrer kan medføre eksterne, synlige resultater. F.eks. beregning og visning af en saldo, tegning af en graf, . . Afviklingen af et program er 100% mekanisk. Programmer er generelle; kan løse uendelig mange problemer af en bestemt slags. Programmer er dumme; kan ikke improvisere eller ‘forstå’. Computere er hurtige; derfor kan programmer alligevel virke smarte.

23 Hvordan udføres et program?
Program indlæses fra disk eller andet medie til det interne lager. Den første/næste instruktion i programmet hentes ind i CPU´en. CPU´en udfører instruktionen. CPU´en gemmer måske resultatet af en beregning i det interne lager eller på harddisken. CPU´en udskriver måske resultatet af en beregning på skærmen. CPU´en modtager måske noget inddata fra en bruger. CPU Internt Lager Floppy disk Harddisk Skærm Tastatur

24 Netværk Et netværk forbinder to eller flere computere og eventuelt andre enheder (printere, scannere, ...) Efterhånden standard at alle computere er forbundet til et netværk. Klienter Tynde klienter (afhængig af en server) Tunge klienter (selvstændig maskine) Servere Filservere (h:) Webservere Databaseservere Printserver Mailserver

25 Local Area Network (LAN)
Et lokalnet (LAN) forbinder typisk maskiner i samme bygning eller i samme område. LAN Knudepunkter, switche Trådløst (typisk 11+Mbit) Klienter Typisk 100+Mbit Server (eks. filserver H:) Backbone (typisk Gbit el. Fiber)

26 Wide-Area Networks (WANs)
Et net (WAN) forbinder typisk to eller flere lokalnet. Det bedst kendte af slagsen hedder Internettet ... et netværk af netværk (internetworking) LAN

27 WWW, URL, HTML, ... Internettet kan bruges til at kommunikere, benytte services og udveksle information: , billeder, lyd, tekst, tal eller kort sagt data. (Var) ikke altid lige let: ftp, telnet, nn, ... World Wide Web (WWW) er et system, der benytter internettet til at lette specielt kommunikation af tekst, billeder og lyd. Hypertekst og hypermedier ... browsere (Mosaic, Netscape, Internet Explorer, Mozilla, ...) HTML (HyperText Markup Language) benyttes til at skrive (hjemmesider) på WWW (.html, .htm).

28 Mere HTML ... Tekst- og medieformatteringssprog ... tekst (ASCII) dokumenter <HTML> <HEAD> ... </HEAD> <BODY> </BODY> </HTML> <HTML> <HEAD> <TITLE>Vores første HTML dokument</TITLE> </HEAD> <BODY> Her begynder hovedteksten. <H1>Her er en overskrift</H2> Her fortsætter hovedteksten, men nu kommer der et <IMG SRC="C:\home\figs\746.jpg">billede</A> <P>og et nyt afsnit med et <A HREF = "http://www.itu.dk/courses/GP/E2005/">link</A> </BODY> </HTML> Start tag Slut tag URL (Uniform Resource Locator) Pegepind (link) til tekst, billed, lyd ...

29 Filer Tekstfiler ASCII (typisk) Extensions - .txt .html .htm . Java
Konventioner ~ indhold Binære filer .zip, .doc, .mp3, .wav

30 Programmeringssprog Hvordan kommer vi fra vores ideer til noget en maskine kan afvikle ? Problem Analyse Design (Algoritme + datastrukturer) Implementering (Programmering) Programmeringssprog som Java Haskell Miranda Prolog BASIC C# C++ ML LISP Fortran C Pascal Assembler Maskinkode

31 Hvad er et programmeringssprog?
Et (højniveau) programmeringssprog er en notation/regelsæt for instrukser til datamaten. Man skal være meget omhyggelig med programmeringssprog: Korrekt: label.setForeground(Color.blue); Helt forkert (Java skelner mellem store og små bogstaver): label.setforeground(color.blue); Hvordan kommer vi fra et vilkårligt programmeringssprog til maskinkode?

32 Hvad er programmering egentlig…
Problem / opgave Analyse Algoritmer + datastrukturer Design (evt. OO) Implementation (i eksempelvis Java) Oversættelse Afprøvning Find det største af 10 positive tal …

33 Fra kildekode til ”kørende program” (generelt)
Via oversætter: Kildekode (source) (Editor) Oversætter (compiler) Linker (Linker) Hello.c (tekst/ASCII) Hello.o (maskinkode) Hello.exe Resultat Via fortolker: Fortolkeren forsimpler processen, men giver et ekstra lag under afviklingen. Sænker normalt hastigheden. Kildekode (source) (Editor) Fortolker (interpreter) Hello.c Resultat

34 Fra kildekode til ”kørende program” (Java)
Via oversætter og fortolker: Java Virtual Machine Kildekode (Editor) Oversætter Fortolker (JVM) Hello.java tekst (ASCII) Hello.class (Java mellemkode eng. bytecode) Resultat Hvorfor nu det ? Platformsuafhængigt (platform = arkitektur + operativsystem) PC (AMD/Intel) + Windows PC (AMD/Intel) + Linux Mac + Mac OS X Browser Vilkårlig ”dims” med JVM Hurtigere end alm. fortolkere (mellemkode tættere på maskinkode)

35 Kommandoliniefortolker
Et eksempel ... Kildekode i Notepad Hello.java Oversættes med javac Hello.java Afvikles med java Hello Kommandoliniefortolker (eng. Command Line) SUNs Java oversætter SUNs JVM (køretidsmiljø)

36 Integrerede Udviklingsmiljøer
Et integreret udviklingsmiljø samler (Integrated Development Environment, IDE) Tekstredigering (og fremmer det ofte) Oversættelse til mellemkode Afvikling Aktiv understøttelse af eks. et sprogs syntaks. BlueJ JCreator

37 Et Java programs Struktur
Ved at vælge Java, vælger vi også en række regler (eller notationen) for hvordan vi kan/skal skrive programmer. Et Java-program består af En eller flere klasser (En klasser består af 0 eller flere felter) og En klasse består af en eller flere metoder En metode består af en eller flere ordrer Hvis en klasse indeholder en main metode kan den udføres med bl.a. køretidsmiljøet java. Afviklingen starter med første ordre i main. Regler for hvordan vi må/kan skrive programmer kaldes et programmeringssprogs Syntaks. En ordres betydning/konsekvenser når den udføres kaldes dens Semantik.

38 Et Java programs struktur
// comments about the class blok start public class MyProgram { } // comments about the method public static void main (String[] args) { } klassens krop metode header metodens krop blok slut

39 Blanktekst (whitespace) og layout
Mellemrum, tabulatorstop og linieskift Benyttes til at adskille ordrer, tegn og ord Mindst et er nødvendigt; resten smag, behag, layout og indrykning. Lincoln.java – L&L side 28 Lincoln2.java – L&L side 34 Lincoln3.java – L&L side 35

40 Kommentarer Beskriver og dokumenterer, hvordan et program fungerer.
Påvirker ikke programmets virkemåde. Til for at lette læsning og forståelsen af et program. Alle klasser og metoders hovedformål bør kort beskrives vha. kommentarer – med måde ... Kommenter gerne på et højere abstraktionsniveau To typer // En kommentar på en enkelt linie // En til af samme slags /* En kommentar der strækker sig over flere linier */ Undgå overflødige kommentarer: x = x + 2 // Der ligges to til x

41 Reserverede ord Javas reserverede ord: abstract boolean break byte
case catch char class const continue default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while

42 Tre Typer Java programmer
”Almindelige” Ind- og uddata typisk via tastatur, kommandolinien eller filer. Programmer med GUI Programmer med grafisk brugergrænseflade Vinduer, dialogbokse, knapper, ... Mus Appletter Programmer der kan afvikles i en browser Ellers som programmer med GUI Hvorfor er appletter interessante?

43 Hello.java Hello.java (se hjemmeside)

44 HelloGUI.java HelloGUI.java (se hjemmeside)

45 HelloApplet.java HelloApplet.java (se hjemmeside)
HelloApplet.html (se hjemmeside)

46 Objektorienteret Programmering 101
Et program skrives typisk for at løse et problem Problemløsning i flere faser Forstå problemet Design en løsning (algoritmer + datastrukturer) Implementer (programmerer) en løsning Fejlretning Test løsningen Faserne overlapper oftest Hvordan forstår vi problemet og designer en løsning der egner sig til at blive implementeret på en datamat? OO en mulighed…

47 Mere OO - objekter Objekter egner sig til modellere ting fra den virkelige verden Tilstand Opførsel, tjenester (metoder) En bankkonto har en tilstand: Saldo Rente Med en bankkonto kan man bl.a. Få oplyst saldoen Indsætte penge Hæve penge Overtrække ... Metoder kan ændre et objekts tilstand

48 Mere OO – Klasser Klasser er en slags arbejdstegning for objekter
Klasser er koncepter og eksisterer ikke som selvstændige entiteter i et kørende program Et objekt er en realisation af en klasse (en instans) Objekters metoder defineres i klasser Ud fra en klasse kan man instantiere mange objekter af samme slags, men ikke nødvendigvis med samme tilstand Mere OO senere i kurset – på nær et lille eksempel.

49 Mere OO – et eksempel En klasse Et objekt (konceptet) (realisationen)
Bank- konto En klasse (konceptet) Johns bankkonto Saldo: 5257,- Et objekt (realisationen) Jens bankkonto Saldo: ,- Tanjas bankkonto Saldo: ,- Flere objekter samme klasse

50 Ses næste gang


Download ppt "Grundlæggende Programmering (GP) Efterår Forelæsning 1 – Velkommen"

Lignende præsentationer


Annoncer fra Google