Föreläsning 1 Introduktion till kursen. Algoritmer L&L kap 1.1, 1.2, S kap 1.1-1.3
Datorns uppbyggnad, själva hårdvaran: CPU (Central Processing Unit, "processorn") RAM (primärminnet, arbetsminnet, main memory) i/o (input/output) devices: tangentbord, skärm, mus, printer, mikrofon, joystick, osv. sekundärminne (secondary memory devices) hårddisk, CD, dvd, osv.
CPU ALU Primärminne Styrenhet Register
Mjukvara är program och data som behandlas av hårdvaran, exempelvis: operativsystem (Windows, UNIX, Linux, MacOS,...) applikationsprogram (Word, Explorer, emacs, BlueJ,....) GUI (fönster, ikoner, knappar,...)
I primärminnet finns minnesceller, varje minnescell har en adress, en slags placering i primärminnet. Varje minnescell består av 8 bitar (=1 byte) och varje bit kan lagra en binär siffra, alltså 1 eller 0.
Det finns bara 10 olika sorts människor.
Det finns bara 10 olika sorts människor. De som förstår binära tal, och de som inte gör det.
Vad är ett program?
Vad är ett program? Ett program är en ordnad samling instruktioner som talar om för datorn vad vi vill att den skall göra.
Maskinspråk Kod som datorn “förstår”, består endast av ettor och nollor. Varje datortyp har sin egen variant. 1100 1000 1001 1111 0100 0011 1001 0001 ... 0101 ...
Assemblerspråk Enkla “ord” som representerar ett fåtalinstruktioner för processorn. Enklare för människor att förstå, men fortfarande svårt och oöverskådligt. Varje datortyp har sin egen variant. ld $v0, 0($a0) ld $v1, 8($ao) add $v0, $v1, $v0
Högnivåspråk Avancerade konstruktioner av ord och fraser. Lätt att läsa men måste översättas (kompileras) i flera steg till processorns maskinspråk. Fungerar (i princip) likadant på alla datorer. a = a + b
Det här kommer vi komma tillbaka till flera gånger i kursen och det viktigaste är egentligen att ni har en bild av hur det hänger ihop i grova drag, inte på detaljnivå. Varje del här består av flera olika vetenskapsområden i sig!
OK, då vet vi att det finns hårdvara som “gör'” det hela men för att det ska finnas något att göra så måste det finnas programinstruktioner och det är det vi ska gå igenom på den här kursen, hur man skapar mjukvaran. Givetvis kommer ni inte bli färdigutbildade programmerare men ni kommer att lära er filosofin i mjukvaruutveckling och praktisera den.
annars gör yy (villkor) Algoritm = en detaljerad steg-för-steg-beskrivning på hur ett givet problem ska lösas. EX · Gör först si (direkta order) · Gör sedan så (direkta order) · Om x inträffar gör xx annars gör yy (villkor) · Gör zz fyra gånger (repetition)
Objekt Orienterad Analys/Design. Men eftersom Java är ett helt objektorienterat språk så bör man också tänka på ett objektorinterat sätt när man jobbar med problemet. På så sätt styr man in sitt resonemang på rätt spår. Man gör en Objekt Orienterad Analys/Design.
Hur??? 1. Finna objekt (substantiv) och operationer (verb) 2. Beskriva attribut, fastställa relationer mellan objekt 3. Utveckla scenarier (användningsfall) 4. KonkretiserVada modellen i analysfasen, lägga till detaljer. Punkterna 3 och 4 bruker man få göra om några gånger. Det kan vara bra att använda sig av algoritmer i dessa punkter!
Det var i början av 70-talet som man var tvungen att komma på strategier att hantera de allt större och mer komplexa programmen. De strategierna eller teknikerna används än idag. I praktiken följer man inte alltid dessa strikt, men de tjänar som ledsnöre.
Att hitta klasser, attribut och metoder. Det kommer bilar till en vägkorsning. Vid korsningen finns trafikljus som kan visa olika färg. Bilarna kan bromsa och gasa. Bilarna har hastighet och position.
Det finns många olika programmeringsspråk, Se här!
Basen för de naturliga logaritmerna, e, kan beräknas som följande summa: 1 1 1 1 1 1 1 -- + -- + -- + -- + -- + -- + -- + 0! 1! 2! 3! 4! 5! 6! ...
pascal APL C++