Anteckningar 1: Grundläggande saker

Relevanta dokument
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Programmering för språkteknologer I, VT2012. Rum

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Programmering A. Johan Eliasson

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

F4. programmeringsteknik och Matlab

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Objektorienterad Programmering (TDDC77)

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering för språkteknologer II, HT2011. Rum

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

SMD 134 Objektorienterad programmering

OOP Objekt-orienterad programmering

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

TDIU01 - Programmering i C++, grundkurs

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Föreläsning 3-4 Innehåll

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Att skriva till och läsa från terminalfönstret

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Objektorienterad Programmering (TDDC77)

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

TDDC77 Objektorienterad Programmering

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

TDDC77 Objektorienterad Programmering

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

PROGRAMMERING-Java Omtentamina

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Typkonvertering. Java versus C

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

JAVA Mer om klasser och objektorientering

Objektorienterad programmering D2

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

PROGRAMMERING-JAVA TENTAMINA

OOP Objekt-orienterad programmering

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Arrayer (fält)

Tentamen OOP

Instuderingsfrågor, del D

TUTORIAL: KLASSER & OBJEKT

Objektorienterad programmering i Java

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Föreläsning 1 & 2 INTRODUKTION

2D1342 Programkonstruktion för F1, ht 2006

Objektorienterad programmering Föreläsning 5

I ett program hantera man ofta samlingar av objekt av samma typ.

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Visual Basic, en snabbgenomgång

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

TDIU01 - Programmering i C++, grundkurs

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

Objektorienterad programmering i Java

Föreläsning 3: Booleans, if, switch

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

1 Egna klasser. 1.1 En punkt-klass

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Objektorienterad Programmering (TDDC77)

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Programmeringsteknik I

Java, klasser, objekt (Skansholm: Kapitel 2)

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Föreläsning 1 & 2 INTRODUKTION

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Classes och Interfaces, Objects och References, Initialization

Kompilera och exekvera Javakod

Programmeringsteknik med C och Matlab

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objektorienterad programmering i Java

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Transkript:

UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering grundkomponenter Data finns i variabler och är deklarerade som tillhöriga en viss typ. Enkla instruktioner/operationer. Subrutiner: Namngivna underprogram. Kontrollmekanismer: Göra saker villkorligt en gång eller upprepat. Läs Eck, 1.3 1.5 (Resten av Kapitel 1 allmänbildning; Quiz bra). 2 Variabler och typer Variabler använder vi för att hålla reda på den information som ett program bearbetar. Variabler är av olika sorter, och i Java håller man mycket strikt koll på variablernas innehåll. Varje variabel deklareras som tillhörig en viss typ. int mittheltal = 3; String mittord = "tomaterna"; Dessa satser deklarerar de två variablerna mittheltal och mittord som varande av typerna int och String. Typen int avser heltal (eng. integer ) med vissa storleksbegränsningar och String avser strängar, alltså sekvenser av tecken. Dessa satser tilldelar även variablerna konkreta värden, och visar hur heltal och strängar skrivs. Deklaration och tilldelning kan göras separat, så här: String mittord; mittord = "tomaterna"; // deklaration // tilldelning Det vanliga är dock att man deklarerar och gör en första tilldelning (initierar variabeln) på samma rad. Notera även att vi kan skriva kommentarer med hjälp av //. Allt som kommer efter // på en rad räknas som kommentar och tolkas ej som programkod. Läs Eck, 2.2 (om variabler och enkla typer). 2.1 Javas datatyper tre huvudsakliga sorter Det finns tre huvudsakliga sorter av dataentiteter i Java: Objektstyper/klasstyper är den prototypiska formen för godtyckliga behållare för data i objektorienterad programmering. De kan fånga olika typer av struktur. De ingår i begreppshierarkier och är alla av överordnade typen Object. Klasserna kan vara standardklasser som ingår i Java (som String) eller vara användardefinierade. 1

Enkla typer för enkla värden som är generellt användbara, alltså sanningsvärden, olika sorts tal och tecken. Det finns åtta stycken. Fält (arrayer): linjära behållare med fast längd för godtyckliga typer av dataentiter, indexerade från 0 till n 1, om längden är n. Man måste konkret deklarera vad ett fält skall innehålla, t.ex. int[] för fält av int (heltal), String[] för fält av String-objekt (strängar). Läs Eck, 5.1 (om variabler, referenser och objekt). 2.2 Några enkla typer boolean int long float double char sanningsvärde, med värdena true och false. heltal. heltal, större intervall. decimaltal. decimaltal, större intervall och precision. tecken. 3 Objekt och metoder, några första punkter En viktig typ av värden på variabler är s.k. objekt. Dessa är givetvis av central betydelse i objektorienterad programmering, som Java exemplifierar. Typen String är en objektstyp (dock inte int, som bara är en enkel typ ). En annan viktig sak i objekt-orienterad programmering är metoder. Dessa representerar saker man kan göra och man kan definiera egna metoder eller använda befintliga (som finns färdiga i Java). Ett viktigt sätt att använda metoder är att utföra dem på objekt. Objekt och metoder passar ihop, och detta är en grundprincip i objekt-orienterad programmering. Två metoder som man kan utföra på String-objekt är substring och length. substring är en fördefinierad metod som utförs på ett String-objekt och utifrån två heltal ger oss en delsträng, nämligen den delsträng som börjar på positionen som anges av första talet och avslutas vid positionen som anges av andra talet (tecknet där inkluderas ej). Det är viktigt att bestämma att returtypen för metoden just är String. De två heltalen skickas till metoden som s.k. argument. Vi får på så sätt ett metodanrop genom att t.ex. skriva mittord.substring(mittheltal,6), där variablerna införts som ovan. Detta metodanrop returnerar "ate" (som ligger på positionerna 3 5 i mittord = "tomaterna"). Sammanfattningsvis tillhör metoden klassen String och dess returtyp är (också) String och den tar två argument, båda av typen int. I dokumentationen ställs det upp så här, (se http://download.oracle.com/javase/6/docs/api/java/lang/string.html): public String substring(int beginindex, int endindex) Metoden length är enklare. Den ger ett int-värde från strängen men tar inget argument. public int length() Det kan se ut så här när vi använder denna metod. int mittandraheltal = mittord.length(); Läs Eck, 2.3 (om strängar). 2

4 Skriva och köra program Man anropar en viss klass, som exempel (HelloWorld), som måste ligga i filen HelloWorld.java, och där måste det finnas en (klass)metod main, som ger den procedur som skall utföras. Läs Eck, 2.1. 4.1 Kompilera ett program Så här kompilerar vi vårt program i Linux, med kommandot javac(ompilator). Detta kan ge oss varningar och felmeddelanden, men i detta fall är kompilatorn helt nöjd. Den har därmed skapat en fil som heter HelloWorld.class med sådan bytekod som Javainterpretatorn kör. mindator> javac HelloWorld.java 4.2 Köra ett program Vi kan bara köra ett program efter kompilering, och det vi kör är bytekodsfilen (i detta fall HelloWorld.class). Vi kan t.ex. anropa den så här (extensionen.class skrivs inte ut): mindator> java HelloWorld 5 For-slingor public class ForExempel { public static void main (String[] kommradsarg) { TextIO.put("Ange ett tal: "); int num = TextIO.getlnInt(); // Vi skriver ut så många plustecken. for (int i=0; i < num; i++) { System.out.print("+"); ; System.out.println(""); ForExempel.java 6 Strängar och for-slingor Läs Eck, 3.4 (for-slingor). Läs Eck, 2.4.3 (TextIO.java behövs även här.). ForExempel2.java 3

public class ForExempel2 { public static void main (String[] kommradsarg) { TextIO.put("Ange ett ord: "); String word = TextIO.getlnWord(); // Vi skapar och skriver ut alla "unigram". for (int i=0; i < word.length(); i++) { System.out.println(word.substring(i,i+1)); ; Ger detta (Ange ett ord: är programmets prompt): mindator> javac ForExempel2.java mindator> java ForExempel Ange ett ord: huset h u s e t 7 While-slingor Läs Eck, 3.1.2 (while-slingor). 8 Övningar Läs Eck, 2.4.3 (ladda ned TextIO.java, som behövs för dessa övningsprogram). (I) Gör övningar Eck kapitel 2. Quiz är också bra. (II) Gör om for-slingan till en helt ekvivalent while-slinga i ForExempel2.java. (III) Gör om Ecks övning 2.4 anpassad för svenska mynt och valuta! 9 Laborationer serie 1 (inlämning) (1) Utgå från ForExempel2.java och utforma programmet så att det skriver ut bigram istället. Och skulle fungera väl för et godtyckligt långt inputord. Alltså, t.ex.: mindator> java ForExempelBi Ange ett ord: raset ra as se et 4

(2) Utgå från ForExempel2.java och utforma programmet så att det skriver ut ngram av godtycklig längd (n) istället. Och skulle fungera väl för et godtyckligt långt inputord. Alltså, t.ex.: Ange ett ord: Göteborg och ange ngram-längd: 5 Göteb ötebo tebor eborg (3) Utgå från ForExempel.java och utforma ett program (så enkelt och generellt som möjligt) som ger denna typ av beteende: Ange ett tal: 7 + ++ +++ ++++ +++++ ++++++ +++++++ 5