Begreber og Redskaber 1
Jan 16, 2016
Begreber og Redskaber 1
Plan for kurset• Formål
– Give et begrebsmæssigt grundlag for programudvikling, samt overblik over udvalg af redskaber og metoder en programmør kan bruge
• Forstå – hvad et programmeringssprog er– hvordan man kan strukturere data– algoritmer til søgning og sortering
Målgruppe• Studerende der lige har eller samtidig
lærer at programmere
• Dette semester: hovedparten følger indledende programmering
• For resten – måske ikke meget hårdt i starten
• God balast til programmeringsprojekt
• På Indledende Programmering: praktisk erfaring – her teoretisk baggrund
Emner i kurset• Repræsentation af tal i maskinen
– Næste gang ccj2: kap 2 + note (jfr kursussiden)– Heltal, negative tal, kommatal, logiske værdier
• Håndkøring af programmer
• Rekursion
• Sortering
• Datastrukturer
• Stak, kø, hægtede lister
• Afprøvning af programmer
Idag• Hvordan kører man et java program?
• Hvad er de grundlæggende dele af Java?
• Lidt historie
• Syntaks hvad man skriver
• Semantik hvad det betyder
• Pragmatik hvordan det bruges
Et java programpublic class HelloWorld{
public static void main(String[] args){
// Hovedprogram!
System.out.println(”Hej”);
}
}
Bestanddele af program• Variable og typer
• Regneudtryk
• Sætninger
• Underprogrammer
• Klasser
• Biblioteker
Variable og typer• Variabel erklæring
•int i;
• Variabel initialisering•int i = 1;
• Variabel tildeling•i = 1;
• Variabel inkrementering•i++;
Typer• Heltal (int,..)
• Kommatal (float, double)
• Logiske værdier (boolean)
• Tegn (char)
• Tekststrenge (String)
• Og så er der også klasser og objekter...
Udtryk• Sammenligning (==,>=,<=,<,>,!=)
• Aritmetik (+,-,*,/,%)
• Tildeling (=,+=,++)
• Betinget udtryk (? : )
Eksempel
int i = 3+4;
boolean b = (i++ ==7);
Tekststrenge• ”dette er en tekststreng”• Sammenhæftning af strenge med +
• Næsten alt kan konverteres til tekststrenge, f.eks. når det står efter +
Eksempel
int i = 7; String s;
s = ”i = ” + i;
Udskrivning• System.out.println(udtryk);• System.out.println();• System.out.print(udtryk);
Udtryk er streng, tal, tegn, logisk værdi,..
Eksempel
System.out.println(”Hello”);
Sætninger• If: if(exp) stmt else stmt• While: while(exp) stmt• Do: do stmt while(exp)• For: for(exp;exp;exp)stmt• Switch: switch(exp){
case exp: stmt..}
• Andet:break,continue,return,try
Hvad mer??• Klasser, nedarvning og beskyttelse
• Overlæsning, overskrivning, polymorfi
• Interface, abstrakte klasser
• Tabeller
• Undtagelser, parallelitet
• Et hav af standard klasser
Kan man skrive til programmer? • Nå ja – men det er ikke helt let!
Eksempel
try{
DataInputStream in = DataInputStream(System.in);
String s = in.readLine();
System.out.println("Read : "+s);
}catch(java.io.IOException e){}
SyntaksFra ccj2
2.2 AssignmentvariableName = expression;
6.1 The while statement
while(condition) statement
Osv..
Syntaks• Præcedens regler
• i*j+k*l
• Associativitet• a-b-c (a-b)-c• a=b=c a=(b=c)
• Dangling else–if() if() stmt; else stmt
Semantik• Hvad betyder det?
Hvad er forskellem på & og &&?
Hvornår er to strenge ens?
Hvordan virker % for negative tal?
Osv...
Pragmatik• Konventioner
– Klassenavne med stort bogstav– Felter og metoder med små bogstaver– Konstanter med kun store bogstaver
• Ideomer– for(;;){ .. if(..)break; ..}
• God stil– Indrykninger, kommentarer,..
Lidt historieMaskiner:• 1. Generation: 1940 →
– Radiorør, kviksølvrør, DASK 1952
• 2. Generation 1950 →– Transistorer, GIER 1959
• 3. Generation 1964 →– Integrerede kredsløb
• 4. Generation – Højt integrerede kredsløb VLSI,
• 5. Generation– Multiprocessormaskiner
DatamaskinerTidlige mekaniske maskiner
Babbage, Pascal, Zuse
30’erne. Teori: Turingmaskinen, Church, Curry, von Neumen. Beregnelige funktioner
40-45. Beregningsmaskiner
Eniac (43-44, USA) radiorør (19000stk) til beregning af kanonskud
Zuse (1945, Tyskland) relæer
Colosus (1943, A Turing, England) radiorør (1500stk) Krypto-analyse af Enigma koder
DatamaskinerFra 1948. Universelle maskiner
Programmerbare.
EDVAC rapport 1944
EDSAC (Wilkes,Cambridge,England)
ACE (Turing, Manchester, England)
1948 Transistoren
1964 Integrerede kredsløb
1970 Chip, Intel 4004 (2250 transistorer, 1280 ½byte data, 4k instruktioner)
ProgrammeringssprogMaskiner:• 1. Generation: 1940’erne
– Maskinkode
• 2. Generation 1948-54– Assembler, AUTOCODE (1952)– Tidlige maskinspecifikke sprog
• 3. Generation 1964 →– Højniveausprog: Java, C, C++, Pascal,
• 4. Generation – Specielle programmeringsomgivelser til særlige formål
• 5. Generation– Naturligt sprog
ProgrammeringssprogFortran, 1954Cobol, 1959-60Algol 1960Basic 1964C 1972Simula 1967Pascal 1972C++ 1986Java 1995
Andre sprog
Logikprogrammering
prolog 1972
Funktionsprogrammering
Lisp 1960
ML, Haskell, Scheme
OpgaverCcj2: P1.1, P1.2• Skriv program der tegner et juletræ /\ / \ / \ / \ -------- || ||Næste gang Ccj2: R2.8, R2.9, R2.17