Föreläsning 1 sept 03 (måndag v 36).

Välkommen till kursen och DD Chapter 1.

En dators delar. (Cf DD 1.3 Computer Organization)

Bilden visar hur vi kan tänka oss datorn när vi kör redigeringsprogrammet emacs.

Ett redigeringsprogram (engelska editor) används för att redigera och framställa texter, t ex texten i ett javaprogram.

Koden som styr datorn. Programspråk.

(Cf DD 1.6, 1.7, 1.8, 1,10)

Klasser och klassbiblotek (Cf DD 1.9).

Vi skriver ett javaprogram som en text (en massa tecken, dvs bokstäver, siffro, mellanslag osv) . Texten definierar en (eller flera) klassdefinitioner som vi sparar på en (eller flera) filer på skivminnet.

Hur får man datorer att köra ett visst program?

När vi vill köra ett visst program måste vi ju fylla primärminnet i CPU med koden

som finns på ett sekundärminne.

Dessutom: Hur kan vi hålla reda på alla filer? Hur kan många datorer dela på filer?

Hur kan vi kommunicera mellan datorer osv ?

Jo en dator har ett "chefsprogram", ett OperativSystem (OS),

som hjälper oss med allt detta. Även internetbläddare som Explorer och Netscape kan

göra en del av detta.

Exempel på OS:

UNIX Windows 20 Linux MacOS.

Institutionens för Numerisk Analys och datalogi (Nadas) teknologdatorer använder en UNIX-variant som heter Solaris. För att bekvämt göra labbarna i denna kurs är det bra om du kan en hel del av vad som står i " Unixanvändning på Nada eller Krama din dator!". Om filhantering och filträdet berättas i avsnitet 7.3 sid 20. Lämpligt öva på UNIX på labbarna v 36. Javamiljön på NaDa (Numerisk analys och Datalogi

på KTH) (Cf DD 1.13, Krama din dator avsnitt 15 sid 56).

Fas 1. Vi skriver ett javaprogram som en text. Texterna definierar en (eller flera) klasser som vi sparar på en (eller flera) filer på skivminnet. Filerna på skivminnet skall sluta på .java.

Detta arbete görs på datorn med hjälp av ett redigeringsprogram (editor), t ex emacs.

Detta har jag försökt illustera ovan på bilden i avsnittet en dators delar.

Fas 2. En kompilator används för att översätta texten i ett programspråk till mer maskinära kod.

Javakompilatorn javac översätter korrekt javatext till kod för en påhittad dator JVM. Koden

lagras på en class-fil.

Vad händer i datorn, när vi kör kompilatorn javac ?

Man får datorn att göra en kompilering av en javatext på filen Forsta.java med kommandot

...>javac Forsta.java

Om texten är korrekt fås resultatet på en fil Forsta.class , annars skrivs felrapporter på skärmen.Fas 3, 4, 5. Laddning, verifiering och tolkning. Se DD. Körning av tolkprogrammet (interpretern gör att datorn förvandlas till en JVM, (Java Virtual Maskin).

JVM-datorn finns alltså inte, utan vi kör på en Sun-dator. Men en dator kan alltid köra ett tolk-program (en interpretator) som gör att datorn fungerar som en annan dator. Körning

av programmet java på Sun i äldre Sun-java-miljö gör att en Sun fungerar som en JVM.

Pss kan internet-bläddare somNetscape och Explorer bli JVM maskiner och köra en viss sorts översatta java-program, s k applets. Modernare java-miljöer gör kod för den verkliga maskinen.

Faser 3,4,5 får man utförda genom komandot

...> java Forsta

Vad händer i JVM-datorn/datorn, när vi kör koden i Forsta.class , dvs vi kör vårt program?

Bra om du på labbarna v 36 kompiler och kör ett färdigt program, t ex gör uppgifterna i kapitel 15 i Krama din dator.Vad blir det av klasserna när de hamnar i minnet?

Javatexten består alltså av klassdefinitioner som översätts. Resultatet

finns på filer med subskript .class.

Klassdefinitioner kan innehålla definitioner av klassmetoder (kallas också statiska metoder) och klassvariabler (kallas också statiska variabler). När klassfilen som är resultatet av översättningen av en sådan klassdefinition laddas i minnet så finns exakt en plats i minnet för varje klassvariabel och klassmetod. Att använda klasser på detta sätt liknar traditonell programmering, och sådana klasser (med en enda klassmetod, main) beskrivs i DD i kap2, kap 4 och kap5.

Klassdefinitioner kan också eller istället innehålla definitioner av instansmetoder och instansvariabler. Klassfilen som är resultatet av översättningen av en sådan klassdefinition används för att under körningen skapa objekt i minnet. Man skapr ofta många objekt av samma klass. Detta kallas objektinriktad programmering och behandlas på allvar från och med kap 8 i DD. Användning av färdiga objekt, specillt applets-objekt, behandlas i bl a kap 3. Avslutande kommentarer:

Varför datorer är användbara till så mycket :

Några användningar:

Beräkningar

Simuleringar

Kommunikation

Komponeter i tekniska system

Är det roligt med datorer?

Det beror mycket på programmet och yttre enheterna.

Är det roligt att programmera datorer?

Det är ju roligt att bestämma själv hur datorn skall fungera.

Man måste kunna en hel del om:

Tangentbordet

Redigeringsprogrammet (t ex Emacs)

Hur man kompilerar och kör och håller reda på filer (t ex kunna Unix)

Programspråkets "meningsbyggndsregler" (t ex Javas syntax)

Vad programspråkets konstruktioner betyder (t ex Javas semantik)

Programspråkets klassbibliotek med färigskrivna hjälpbegrepp

Hur man uttrycka lösningen på sitt problem i programspråket

Kunna hitta en lösning på sitt problem

Förstå sitt problem, vad man skall göra

Bakgrundskunskper som underlättar är bl a

Teori för programspråk och olika programmeringsparadigmer,

t ex teori för Objektinriktad design och objektinriktad programmering

Teori för Datastrukturer och Algoritmer

Teori för numerisk analys och numeriska metoder

Övning 1.

Frågor på hårdvara.

1. När en datorn exekverar ett program, var finns programmet, som består av kod (översatta metoder)?

2. När en datorn exekverar ett program, var finns variablerna?

3. Vad är det grekiska ordet för föreskrift, dvs något som säger hur något skall gå till?

4. Varför har man yttre enheter? Vad är det för vits med sekundärminnen?

5. Nämn några yttre enheter och media för lagring av data.

6. Nämn några yttre enheter gjorda för kommunikation med människor.

(Några allmänbildningsfågor som inte har så mycket med kursen att göra)

7. Primärminnet, och de flesta sekundärminnet lagrar data och kod som mönster av

"ettor" och nollor". En minnesposition för en "etta" eller "nolla" kallas en "bit".

Vad kallas 8 bit? (Ordet påminner om det engelska ordet för "tugga"=mumsbit, bite).

8. På en hålremsa eller hålkort (stenålder) lagras en bit som hål i pappret/inte hål i pappret.

Vilket fysikaliskt fenomen utnyttjas i skivminnen? I primärminnen?CD?

9. Hur stort är primärminnet på en 10 000 kronors dator?

10. Hur stort är sekundärminnet ("hård disken") på en 10 000 kronors dator?

11. Översättningen av Java-kommandon blir kod som består av något som kallas instruktioner.

Ungefär hur många instruktioner per sekund kan en modern dator göra?

12. Vad är sorten för "per sekund" , /s?

Frågor på filer, Unix.

1. Vad menas med en fil?

2.. Vad menas med ett filträd?

3. Vad menas med en katalog? Engelskt namn för kataloger?

4. Vad menas med en sökväg?

5. Hur börjar en sökväg?

6. Delarna i en sökväg separeras med ett visst tecken i Unix. I Emacs?

7. Vad kan man göra med hjälp av en dators OS (operativsystem) ?

6. Nämn några olika OS (operativsystem).

7. En del av det man brukar göra med hjälp av OS kan man istället gära med

internet-bläddrar-program. Nämn några sådana program.

8. I en bläddrare, hur kommer man vidare till en ny sida?

9. I en modern bläddare, hur startar man ett program ( dvs en applet)?

Frågor på Emacs, tecken och tangentbord.

1. Hur startas Emacs?

2. Vad menas med en buffer i Emacs?

3. Vad heter redigeringsprogram på engelska?

4. Kan java-kompilatorn direkt läsa i Emacs buffer. Om inte, vad skall man göra?

5. Kan man med Emacs redigera en fil man skivit förut?

6. Emacs styrs med menyer. Hur använder man menyer?

7. Om man ledsnar på att använda menyer och istället vill styra datorn med knapptryckningar,

hur kan man i Emacs få reda på vilka knappar man skall använda?

8. Vad menas med C-x ?

9. Det finns fyra mönster med två binära siffror, nämligen 00, 01, 10, 11. Hur många

med tre siffror? fyra siffror? n-siffror? 7-siffror?8-siffror?

10. Om ett tangentbord ska kunna sända iväg 256 olika tecken, är det lite mycket att ha

256 olika tangenter. Hur gör man istället?

11. Nämn några "ändra betydelsen på andra knappar"-knappar!

12. När en skärm tar emot ett tecken blir det i regel en krumelur på skärmen. Men

vissa tecken, styr-tecken, gör istället sådant som ny rad, ringer en klocka osv.

Vad heter styrtecken på engelska? Hur genereras ofta sådan tecken på tangentbordet?

Finns det styrtecken som också har egna tangenter?

13. Nämn några bokstäver! Engelska för bokstav?

14. Nämn några siffror. Är 123 en siffra? Engelska för siffra?

15. Flera bokstäver betecknar ofta ett ord. Vad kalls det som sifferkombinationer betecknar ( t ex 123)?

Motsvarande engelska ord?

16. Nämn några specialtecken.

17. Svenskar betraktar åäö osv som särskilda bokstäver. Internationellet ser man dock ofta på saken som

så att det är a och o med "tilläggskrumelurer". vad kallas "tillägggskrumelurer" med ett lärt

ord (svårt) ? Vad kallas dubbelprickarna (svårt)?

Hur man programmerar och kör Java-program.

1. Beskriv hur man skriver, kompilerar och kör ett Java program. Antag att det man skriver

är korrekt.

2. Vad menas med syntaxfel, typfel? Åtgärd?

3. Vad menas med exekveringsfel, logiskt fel? Åtgärd?

4. Vad heter java-kompilatorn? Hur körs den?

5. Vad vill java-kompilatorn ha för argument? Suffix? (efterled på namnet?). Skrivs ut?

6. Vilket resultat ger java-kompilatorn ? Suffix? (efterled på namnet?)

7. Vad heter java-tolken? Hur körs den under Unix?

8. Vad vill java-tolken ha för argument? Suffix? Skrivs ut?

9. Vilket händer när tolken körs?

Frågor på Java (efter förläsning 2, efter DD2).

1. Skriv en mall för en klassdeklaration ( eller ett exempel där du skriver vad delarna kallas).

2. I din mall, vilka ord är reserverade och vilka namn väljs av programmeraren?

3

5. Vilket namn har huvudprogrammet (huvudmetoden) i Java?

6. Vad är det som är så speciellt ( när programmet skall köras) med huvudprogrammet i Java?

7. Nämn den befolkningsrikaste ön i Indonesien?

8. Vilken kolonialvara är denna ös viktigste exportprodukt?

10. Java konstruerades för att kunna köras på alla möjliga maskiner. Därför innehåller

klassfilen kod för en "påhittad" dator JVM Java Virtual maschine. Hur går det ofta till att

köra klassfilen på en viss dator?

11. Internätbläddare kan också köra en viss sorts Java-program. Vad kallas sådana

(i regel ganska små) applikationsprogram?

12. Vad betyder ordet virtuell? Applikation? Vad är det för skillnad mellan en star och en starlet?

13. Vad kallas följande tecken och gissa vad de används till i Java:

+ - * / ( ) = ; { }

14. Vad kallas följande tecken :

[ ] ~ & # @

Java vett och etikett

Källkod är skriven av och för människor, och därför ska den göras lättläst. Nedanstående rekommendationer underlättar för läsaren väsentligt och bör följas om man inte har mycket goda skäl till att bryta mot dem.

Använd alltid beskrivande namn på identifierare.

Följ befintlig praxis:

Skriv Klasser med inledande STOR bokstav.

Skriv variabler med inledande liten bokstav.

Skriv metoder() med inledande liten bokstav. Glöm inte heller metodparenteserna.

Skriv namnSomBestårAvFleraOrd med STOR första bokstav i varje ord

(dock; för första ordets första bokstav har vi ju särskilda regler, ovanstående regler).

Undvik l (lilla 'L') och O (stora bokstaven).

Indentera, ("intanda", tillfoga lagom antal blanktecken i början på rader) källkoden.

I Emacs används TAB-tangenten (ibland märkt ->|) för att indentera aktuell rad.

Gör detta uppifrån och ned i programmet.

Skriv luftigt. Utnyttja mellanslag mellan operatorer (som t e x '+', '-', '*', '/' eller '=').

Frågor på vett och ettikett mm

1. Måste man följa regler för vett och ettikett? Kollar kompilatorn reglerna och "layouten"?

2. Bör man följa regler för vett och ettikett?

3. Vilka soters namn skall börja med STOR bokstav enligt vett- och ettikets-regleran?

4. Vilka soters namn skall börja med liten bokstav enligt vett- och ettikets-regleran?

5. Vilken regel gäller för filnamnet på en fil med java-text?

6. Människor organiserar ofta saker och ting i grupper, grupperna buntas ihop i supergrupper,

supergrupperna buntas ihop i supersupergrupper osv. Sådan strukturer kallas i bland för

trädstukturer.

6. Rita en trädstuktur för följande begrepp: Ryggradsdjur, männsikor, myror, apor, insekter, djur, primater.

6. Vilken svensk ordnade systematiskt faunan i en trädstruktur?

7.

10. Om du ser på innehållsförteckningen i en bok ( DD) är trädstukturen i föregående

fråga framhävd genom blankteckensinskjutning. Kan man alltid visa trädstukturer med

blankteckensinskjutning?

12. Vad heter tandläkare på engelska? Blankteckensinskjutning ("intandning")?

13. Om man tycker att det är jobbigt att skriva en massa blanktecken (= mellanslag) för att

indetera, kan man om Emacs är lämpligt inställd istället använda en annan tangent? Vilken?

14. Vad är TAB förkortning av?

15. Vad kallas en uppsättning utseenden på olika tecken( till exempel bokstäver?)

Exempel: ( Hejsan , Hejsan, Hejsan).

16. De här frågorna är skrivna i typnittet Palatino. Tar t ex 'm' och 'i' lika stor plats i typsnittet Palatino?

17. Finns det typsnitt där alla tecken tar lika stor plats? Fördelar och nackdelar med sådana typsnitt?

18. Nämn ett typsnitt där alla tecken tar lika stor plats!

19. Beskriv reglerna för hur { } placeras i en metoddeklaration.

20- Hur skrivs och används kommentarer i Java?