Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering 1 Rita Kovordányi 2 Personal Kursledare, föreläsare: Rita Kovordányi, ritko@ida.liu.se Kursassistent: Johan Jernlås, jojer@ida.liu.se Kursadministratör: Helene Meisinger, helwi@ida.liu.se Kursens mål Att lära sig imperativ programmering Att kunna lösa problem på ett systematiskt sätt Att vara driven Ta egna initiativ Leta upp relevant information i boken och på webben Förmåga att skriva välstrukturerade program Programmering 1 Rita Kovordányi 3 Programmering 1 Rita Kovordányi 4 Kursens innehåll Imperativ programmering T.ex. matematiska beräkningar, slumptalsgenerering Grundläggande begrepp Variabeldeklarationer Beräkningssteg Kontrollstrukturer Vilken väg i koden programmet ska följa Kommer även att beröra Objekt Metoder Litteratur Nilsson & Silborn (2001). Programmering A: Java. Gleerups utbildning AB. Web-resurser länkade från kurshemsidan, samt egen sökning T.ex. on-line Java manualer på Suns hemsidor Programmering 1 Rita Kovordányi 5 Programmering 1 Rita Kovordányi 6 1
Examination Dugga Labbserie Utförs i par Alla labbar ger U/G Mindre skrivning: dugga Görs individuellt Kan ge U/G/VG Obligatoriskt tillfälle! Datum finns på hemsidan 45 min, inga pauser, inga hjälpmedel tillåtna Ett antal frågor valda från bokens övningsexempel Det ges ett extra tillfälle om någon missar duggan p.g.a. sjukdom Programmering 1 Rita Kovordányi 7 Programmering 1 Rita Kovordányi 8 Dugga i sal von Neumann hus B, 1 tr Labbar Sex stycken labbar Utförs i par Välbeprövat sätt att arbeta En skriver kod, en tittar på och ger råd Byter roller efter en kvart Lättare att undvika slarvfel och säreget tänkande mot hus E Programmering 1 Rita Kovordányi 9 Programmering 1 Rita Kovordányi 10 Labbar (forts) Labblokalerna Rekommenderade inlämningsdatum finns på kurshemsidan Håll gärna en arbetstakt av ungefär en labb per vecka Inlämning av kod kan ske när som helst, muntlig redovisning i samband med kommande labbtillfälle Definitivt inlämningsdatum för alla labbar finns på hemsidan En vecka efter sista labbtillfället Programmering 1 Rita Kovordányi 11 Programmering 1 Rita Kovordányi 12 2
Laborationernas uppläggning Tre typer av uppgifter på varje labb Arbeta med kursboken Öva på programmeringshandgrepp Skriv egen kod Muntlig redovisning Lämna in kod skriftligt Kursupplägg Laborationsbaserad kurs Tre stödföreläsningar Lektioner/genomgång i början av labbarna Självstudier i PC-pul och framför egen dator hemma Ca. 3 dagars arbete/vecka Mycket av denna tid ligger utanför schemat Ni har fri tillång till alla PC-pul när dessa inte är bokade av andra kurser Programmering 1 Rita Kovordányi 13 Programmering 1 Rita Kovordányi 14 Rekommenderat arbetssätt Ju mer du förbereder dig, desto effektivare kommer du att kunna jobba vid labbtillfället Inför varje labbtillfälle: Läs igenom labbinstruktionerna på kurshemsidan Läs relevanta avsnitt i kursboken Läs länkad information på webben Sök gärna upp annan bakgrundsinformation Försök att lösa labbuppgifterna på egen hand Rekommenderat arbetssätt (forts) På labbarna: Undvik att behöva läsa långa avsnitt i boken! Försök att lösa labbuppgifterna på egen hand innan du frågar labbhandledaren Detta är kärnan i all programmering! Att fundera själv Ger dig bättre utgångspunkt när du sedan ställer frågor och diskuterar lösningar med labbhandledaren Programmering 1 Rita Kovordányi 15 Programmering 1 Rita Kovordányi 16 Rekommenderat arbetssätt (forts) Efter varje labbtillfälle: Avsluta labbuppgifterna Förbered att lämna in vid nästa labbtillfälle Lättläst kodstruktur Enhetlig namngivning, indentering, enhetlig placering av klammer Obs! Era lösningar måste vara era. Kopiering av lösningar är inte tillåtet! Jobba igenom repetitionsfrågorna i kursboken Ger bra övning inför duggan! Programmering Programmering 1 Rita Kovordányi 17 3
Vad är programmering? Sats: en rad i ditt program Vill att datorn ska beräkna åt mig Program = stegvis instruktioner T.ex. x1 = 3; x2 = 5; mean = (x1 + x2) / 2; // beräkna snittet print(mean); // skriv ut mean på skärmen mean = (x1 + x2) / 2; Variabler Konstant ; markerar slutet på satsen Program (kod) Kommentarer Sats (i detta fall: tilldelning av ett värde till variabeln mean) Programmering 1 Rita Kovordányi 19 Programmering 1 Rita Kovordányi 20 Tillstånd (state) Vi förutsätter att x1 var 3 och x2 var 5 när satsen kördes av datorn När tilldelningssatsen har körts kommer variabeln mean därför att ha värdet 4 mean kommer att ha detta värde så länge ingen ny sats instruerar datorn att sätta ett nytt värde på mean Datorn kan ha olika tillstånd, där olika variabler har olika värden Inte alltid en rak sekvens Ibland finns alternativa sätt för datorn att stega igenom koden T.ex. if (div == 0) // avoid dividing with 0 print( Attempted to divide with 0! ); else svar = (x1 + x2) / div; Beräkningen följer olika vägar beroende på vilket värde div råkar ha Programmering 1 Rita Kovordányi 21 Programmering 1 Rita Kovordányi 22 Kontrollstruktur Den väg beräkningen tar igenom programmet Påverkas t.ex. av vilka if-satser det finns i programmet Påverkas även av vilka värden olika variabler har Mer än matematisk beräkning Vill kanske även kunna presentera resultatet på ett snyggt sätt Programmering 1 Rita Kovordányi 23 Programmering 1 Rita Kovordányi 24 4
Vi kommer att använda Programmeringsspråket Java JSE 1.6 (Java Platform, Standard Edition 6) Eclipse Galileo IDE (Integrated Development Environment) Programmering 1 Rita Kovordányi 26 Java Högnivåspråk Inte beroende av vilken typ av dator den körs på Kan t.ex. köras på olika typer av grafikprocessorer Trots att olika grafikprocessorer förstår olika kommandon kommer din Java-kod ändå kunna köras Plattforsoberoende Inte beroende av vilket operativsystem den körs på Trots att olika operativsystem kan utföra olika operationer kommer dina program kunna köras på Mac, PC, Unix (Linux) Hur har man löst detta? Java Virtual Machine (JVM) Specialskrivna program för varje dator/plattform Beter sig som en låtsas-dator, som in sin tur kommunicerar med ditt program Utåt sett visar JVM upp samma ansikte, oavsett vilken plattform den körs på Programmering 1 Rita Kovordányi 27 Programmering 1 Rita Kovordányi 28 JVM Ditt program skickar instruktioner till JVM och inte till operativsystemet på den specifika datorn Dina Java-program kan köras på alla datorer och plattformar, förutsatt att JVM finns installerad på dem Java (JVM) fungerar m.a.o. som en egen plattform Dvs. på samma sätt som Windows eller Linux JVM får man om man laddar ner Java Runtime Environment (JRE) Följer med JSE Javaprogram körs i två steg 1. Kompilering av din källkod (.java) Din ursprungliga kod Översättning av hela ditt program till instruktioner som JVM kan förstå Resultatet kallas bytecode (.class) 2. Interpretering av bytecode (körning på JVM) Stegvis översättning av varje programrad till operativsystemskommandon Stegvis körning på datorn Programmering 1 Rita Kovordányi 29 Programmering 1 Rita Kovordányi 30 5
Ett Javaprograms byggstenar Typer Vilken typ en variabel kan vara T.ex. int (dvs. integer) Variabler T.ex. i Värden T.ex. 90 Dessa bygger upp satser Ex. på sats: variabeldeklaration Tala om vilken typ en variabel är Först anges typen, därefter variabelnamnet int i; Instruerar datorn att reservera plats för en variabel av typ integer i sitt minne Programmering 1 Rita Kovordányi 31 Programmering 1 Rita Kovordányi 32 Typen viktig Olika typer tar olika stor plats i minnet Hjälper datorn att hålla koll på olika variabler Vill t.ex. inte dividera med en variabel som inte är ett tal Enkla variabeltyper Heltal int Decimaltal double Logisk variabel (två möjliga värden: true, false) boolean Programmering 1 Rita Kovordányi 33 Programmering 1 Rita Kovordányi 34 Klasser: komplexa variabeltyper Ex. String (en sträng, dvs. en rad med bokstäver) String welcomephrase; Variabeltilldelning Låt en variabel få ett visst värde int i; i = 3; Ett annat exempel: String welcomephrase; welcomephrase = Hej! ; Programmering 1 Rita Kovordányi 35 Programmering 1 Rita Kovordányi 36 6
Använda variabeln Skriv ut en hälsning i terminalfönstret System.out.println(welcomePhrase); Vem som ska skriva ut och var Skriv ut och byt rad Namnkonvention Klasser startar med versaler (stor bokstav) Ex. String, Color Enkla variabeltyper och variabelnamn börjar med gemener Ex. int, i, color Använd versaler för att skilja åt ord Ex. welcomephrase Programmering 1 Rita Kovordányi 37 Programmering 1 Rita Kovordányi 38 Snygg kodstruktur Klammer används i Java för att strukturera koden Viktigt både för datorn och för mänskliga ögat T.ex. Arbeta i Eclipse if (div == 0) { System.out.println( Attempted to divide with 0! ); } else { svar = (x1 + x2) / div; } Programmering 1 Rita Kovordányi 39 Starta upp Eclipse Eclipse-fönstret Starta upp Eclipse genom att dubbelklicka på dess ikon Programmering 1 Rita Kovordányi 41 Programmering 1 Rita Kovordányi 42 7
Skapa nytt projekt Programmering 1 Rita Kovordányi 43 Programmering 1 Rita Kovordányi 44 Skapa ny klass Programmering 1 Rita Kovordányi 45 Programmering 1 Rita Kovordányi 46 Tips and Tricks Hur köra igång ditt Javaprogram? Programmering 1 Rita Kovordányi 47 8
För att kunna starta Ditt program måste innehålla en start-del: main public static void main(string[] args) { < dina programsatser; } > För att köra: Välj Run As Java Application eller tryck Alt-Shift X, J (Alt-Shift-X följt av J) HelloWorld public class HelloWorld { public static void main(string[] args) { String name; name = JOptionPane.showInputDialog("Enter your name"); JOptionPane.showMessageDialog(null, "Hello " + name); } } Din egentliga kod Programmering 1 Rita Kovordányi 49 Programmering 1 Rita Kovordányi 50 9