Editering, Kompilering och Exekvering av Javaprogram

Storlek: px
Starta visningen från sidan:

Download "Editering, Kompilering och Exekvering av Javaprogram"

Transkript

1 UMEÅ UNIVERSITET Institutionen för informatik B.1, Programmeringens grunder, 5 poäng Editering, Kompilering och Exekvering av Javaprogram Introduktion Syftet med kursmomentet Programmeringens grunder (B.1) är som namnet antyder att skapa förutsättningar för att du som student ska kunna tillägna dig grundläggande kunskaper om programmering. En sådan kunskap utgörs av olika aspekter. Dels innebär det att ha kunskap om programmering som ett generellt fenomen, fritt från vad som är specifikt för det ena eller andra programmeringsspråket. Det innebär också att ha specifik och primärt praktisk kunskap om de verktyg som används i samband med programmering. Denna text är ämnad att ge ett stöd för den senare aspekten av programmeringskunskap. Mer specifikt är den tänkt att utgöra en startpunkt för att du ska kunna komma igång praktiskt med att programmera i Java. Om texten fyller sitt syfte ska den hjälpa dig att behärska de handgrepp som är förknippade med det som kallas editering, kompilering och exekvering av Javaprogram. Däremot har texten inte som syfte att förmedla något om innehållet i Javaprogram. Institutionen för informatik har en relativt varierad datormiljö med tre primära plattformar: Windows på PC, Solaris (UNIX) på Sun och OS X på Macintoshdatorer. Texten är primärt fokuserad på den senare plattformen, men i stort är handgreppen de samma för övriga plattformar. Editering Editering avser allt det praktiska arbetet där du konkret skapar och förändrar datorprogram genom att skriva och redigera text i en texteditor. En texteditor är i sin enklaste (och ofta fullt tillräckliga form) en spartansk ordbehandlare utan funktionalitet för att arbeta med typografisk layout. På Macintoshplattformen finns ett antal olika editorer installerade. Den editor som denna text tar upp är en editor som heter Smultron. Om du under kursens gång väljer att använda denna editor eller någon annan är i sig inte viktigt.

2 Övning 1: Skapa en mapp för att spara dina javaprogram Innan vi börjar med att editera kan det vara en god idé att skapa en mapp där du lagrar dina javaprogram. Under kursen kommer du att göra många javaprogram. Försök att tänka på dessa program som hörande till olika projekt där varje projekt har en egen mapp. På det sättet kommer det bli lättare att hålla ordning på de program du gör. Förslagsvis kan du skapa en mapp som heter Javafiler under den befintliga mapp som du har som heter Documents (eller Dokument beroende på språkinställningar). Övning 2: Skriv ett Javaprogram med Smultron In den här övningen ska du skriva ett javaprogram med hjälp av editorn Smultron. Du hittar programmet under den övre ikonen med namnet Program (se nedanstående bild). Fig. 1: Här hittar du Smultron När du startar programmet kommer det att se ut ungefär som i figur 2, dvs ett tomt fönster som väntar på att fyllas med text. Det program som du ska skriva in ska ha namnet Textpresentation.java så i det här läget kan du spara det tomma dokumentet och ge det namnet Textpresentation.java. Spara filen i den mapp du just skapat.

3 Fig. 2: Ett tomt Smultronfönster Vi har förberett ett litet javaprogram som du kan skriva in i editorn. Programmet utgörs av följande text: import javax.swing.joptionpane; class Textpresentation public static void main(string[] args) String namn; namn = JoptionPane.showInputDialog("Vad heter du?"); JOptionPane.showMessageDialog(null,"Hej, " + namn); System.exit(0);

4 Programmet är tänkt att uppmana användaren att skriva in sitt namn varpå en hälsning presenteras. Försök skriva av det exakt som det står beskrivet ovan. Några av de tecken som finns i programmet (och sannolikt i de flesta javaprogram som du kommer att skriva) kan vara svåra att hitta på tangentbordet, särskilt på Macintoshtangentbord. Tecknena i fråga är hakparenteser ([ och ]) samt klammertecken ( och ). Hakparenteserna får du fram genom att hålla ned tangentbordets alt-tangent och därefter trycka på någon av parentestangenterna. Klamrarna når du på samma sätt men genom att dessutom hålla ned shifttangenten. Ytterligare en sak att tänka på är att programsatserna i olika utsträckning är inskjutna åt höger. Detta är så kallad indentering av programkoden. Detta kan göras genom att upprepade gånger trycka på mellanslagstangenten. Ett bättre och rekommenderat sätt är att använda sig av tabtangenten. En god idé nu och i framtida programmeringsprojekt är att successivt spara programmet som du editerar i den folder som du skapat för programmet. När du skrivit in programmet bör det se ut ungefär som i figur 3. Fig. 3: Textpresentation.java i Smultron

5 Kompilering Nästa steg i programmeringsprocessen är att översätta det program som du editerar till ett fomat som en dator kan tolka som en samling instruktioner som ska utföras. Allmänt kallas denna översättning för kompilering. I javasammanhang innebär en kompilering en översättning från sk källkod till bytekod. Kompilering av källkod hörande till andra programmeringspråk (t ex C eller C++) innebär ofta en översättning från källkod till maskinkod. Övning 3: Kompilering av javaprogram Den kompilator som hör till java är ett program som heter javac. Det är inte ett grafiskt program utan program som normalt startas från ett konsol- eller terminalfönster. På Macintoshplattformen kan du öppna ett terminalfönster genom att starta terminalprogrammet som du hittar under Verktygsprogram eller Utilities (se figur 4). Fig. 4: Här hittar du terminalprogrammet

6 Det första du bör göra är att gå till den katalog/folder där du sparade javaprogrammet som du skrev in i editorn med hjälp av UNIX-kommandot cd. I exemplet i figur 5 kan du se hur användaren först förflyttar sig till Documents, därefter till Javafiler. Den allmänna formen för kompileringskommandot är: javac programnamn.java Det kursiverade programnamn kommer att variera beroende på det namn du gett ditt program. I övningsexemplet så är namnet Textpresentation.java. Kommandot för att kompilera detta program blir således: javac Textpresentation.java I exemplet i figur 5 så har jag gett just detta kommando. Som resultat har kompilatorn presenterat information om ett fel i mitt program. Denna typ av fel är ett så kallat kompileringsfel som innebär att programmeraren på ett eller annat sätt har skrivit sitt program på ett sådant sätt att kompilatorn inte godkänner programmet som ett korrekt javaprogram. Korrekt i det här sammanhanget ska främst förstås som att programmet inte uppfyller de krav på vad som är tillåtet och möjligt att göra i ett javaprogram. Ett datorprogram kan dessutom ha logiska fel som kompilatorn inte ger någon information om. I exemplet så har jag felaktigt skrivit JoptionPane när det i själva verket ska vara JOptionPane. Med andra ord är det enda felet att jag skrivit ett gement o istället för ett versalt O. Efter att ha använt editorn för att korrigera problemet så har jag utfört kompileringskommandor ytterligare en gång. Som framgår av figur 5 så presenterar kompileringskommandot ingen information när kommandor är utfört. Detta tyder på att kompileringen lyckats. Försök att kompilera din version av Textpresentation.java. När kompileringen lyckats kommer kompilatorn ha skapat en fil som heter Textpresentation.class (prova att utföra ls-kommandot för att se om så är fallet). Filer med ändelsen class innehåller den bytekod som kompilatorn producerar.

7 Fig. 5: Kompilering med kompileringsfel Exekvering När programmet är kompilerat utan kompilerings är det i regel färdigt för exekvering, dvs färdigt att köras. I samband med Javaprogrammering så finns det ett särskilt verktyg, ett program som används för att tolka och utföra den bytekod som kompilatorn skapat. Detta program heter kort och gott java. Den allmänna formen för exekveringskommandot är: java programnamn Det kursiverade programnamn är just namnet på ditt program 1. Observera att ingen filändelse ska anges. 1 En mer korrekt beskrivning som ni kan ha i åtanke längre fram är att den parameter som anges till java-kommandot är namnet på den kompilerade klass som innehåller en mainmetod.

8 Övning 4: Exekvering av javaprogram Prova att exekvera det javaprogram som du har editerat och kompilerat. Figur 6: Exekvering av javaprogram. Om exekveringen fungerar som det är tänkt ska först en dialogruta presenteras där du ombeds att skriva in ditt namn. När du gjort det och klickat på OK-knappen kommer denna ruta att stängas och ersättas av en ny dialogruta med en hälsning (se figur 7).

9 Figur 7: Resultatet av exekveringen

10 Ytterligare Övningar Övning 5 Nedanstående program är ett något längre program som innehåller lite fler beståndsdelar än det föregående (t ex kommentarer, variabler, villkor och iteration som vi kommer att behandla under första kursveckan). En annan skillnad är att det använder terminalfönstret för presentation av resultat snarare än genom grafiska dialogrutor. För att ytterligare träna på de handgrepp som editering, kompilering och exekvering innebär kan du skapa ett nytt dokument i editorn och skriva in nedanstående kodm kompilera och exekvera den. Spara programmet så att det får namnet Fibonacci.java. Tänk på att det i detta skede inte på något sätt förväntas att du ska förstå innebörden av alla de programsatser som finns i programmet. Syftet är att du ska träna på de praktiska förutsättningarna för att lära dig programmering. /* Detta program skriver ut de 15 första talen i den så kallade Fibonacciserien. Utmärkande för denna serie är att ett tal i serien är lika med summan av de två föregående talen. Serien innehåller två specialfall: det första och andra talet är lika med 1. Detta ger serien 1, 1, 2, 3, 5, 8... */ class Fibonacci public static void main(string[] args) int t1,t2, tal; t1 = 1; t2 = 1; for(int i=1; i <= 15; i++) if(i>2) tal = t1 + t2; t1=t2; t2=tal; else tal = t1; System.out.println("Fibonaccital " + i + " är: " + tal);

11 Övning 6 Programmet skriver ut de femton första talen i Fibonacciserien. Hur tror du att programmet kan editeras för att det istället ska skriva ut de 30 första talen?