Studentportalen http://www.studentportalen.uu.se UNIX-konton (systemansvariga P4118) Lärare: Tom Smedsaas, Tom.Smedsaas@it.uu.se



Relevanta dokument
Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering

Studentportalen UNIX-konton (systemansvariga P4118) Lärare: Anna Eckerdal,

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen

Föreläsning 1: Introduktion till kursen

Programmering A. Johan Eliasson

OOP Objekt-orienterad programmering

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

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

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

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

Parameteröverföring. Exempel. Exempel. Metodkropp

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

F4. programmeringsteknik och Matlab

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

TDIU01 - Programmering i C++, grundkurs

Objektorienterad Programmering (TDDC77)

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmeringsteknik I

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

Föreläsning 1 & 2 INTRODUKTION

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

Introduktion till programmering och Python Grundkurs i programmering med Python

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

(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

SMD 134 Objektorienterad programmering

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Programmeringsteknik I

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

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

Objektorienterad programmering i Java

Objektorienterad programmering Föreläsning 4

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Föreläsning 2 - Intro till Java

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Programmeringsteknik II

Lektion 1 Introduktion till DrJava och Java

Föreläsning 1 & 2 INTRODUKTION

TDIU01 (725G67) - Programmering i C++, grundkurs

Enkla datatyper minne

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Grundkurs i programmering - intro

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

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

TDDC77 Objektorienterad Programmering

Variabler, värden och typer

Variabler, värden och typer

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Program & programmering

Språket Python - Del 1 Grundkurs i programmering med Python

Föreläsning 2. Operativsystem och programmering

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Tentamen OOP

NetBeans 7. Avsikt. Projektfönster

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Planering Programmering grundkurs HI1024 HT data

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

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

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

Övning2. Variabler. Data typer

Föreläsning 2. Föreläsningen kommer ta upp valda delar av detta

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

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

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

Introduktion C-programmering

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Extramaterial till Matematik Y

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Repetition C-programmering

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Planering Programmering grundkurs HI1024 HT TIDAA

SMD 134 Objektorienterad programmering

Föreläsningsmaterial (Syntax och variabler)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

i LabVIEW. Några programmeringstekniska grundbegrepp

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

[] Arrayer = Indexerad variabel

Objektorienterad Programmering DAT043. Föreläsning 1 15/1-18 Moa Johansson

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

Anteckningar 1: Grundläggande saker

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Transkript:

Föreläsning 1: Intro till kursen och programmering Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/ht12 Studentportalen http://www.studentportalen.uu.se UNIX-konton (systemansvariga P4118) Lärare: Tom Smedsaas, Tom.Smedsaas@it.uu.se rum P2414, tel: 471 2989 Anna Eckerdal, Anna.Eckerdal@it.uu.se rum P2415, tel: 471 7893 1

Kursmaterial Kursbok: o o o Introduction to computing & programming with Java, Guzdial and Ericson; (Ej för Programmeringsteknik 2) Java software solution, Lewis & Loftus; Eller motsvarande Material på webben, t.ex o o o Kurshemsida: lektionsmaterial, föreläsningsanteckningar Studentportalen: KONTROLLERA SJÄLV FRAMSTEG Dokumentation av programmeringsspråket java 2

Kursmaterial (forts) Programmeringsmiljöer, minimalt: en editor (egentligen en IDE) en kompilator och en javamotor Integrerade miljöer ( IDE ): DrJava BlueJ Eclipse NetBeans... Tips: Installera på egen dator, se kurshemsidan. Kan arbeta med egen laptop i datasal 3

Kursupplägg 6 lektioner OK använda egen laptop i datasalarna Arbeta två och två: byts av vid tangentbordet! Kan utföras hemifrån Ingen redovisning men rekommenderas starkt! Gör klart innan nästa föreläsning Mycket tid vid tangentbordet! 6 obligatoriska uppgifter Redovisas muntligt i datasal. Börja i tid! Får arbeta och redovisa två och två Sammanlagt 21 tillfällen i labsal (UNIX-salar Pollax) Föreläsningar (9) Tentamen (obligatorisk) - skriftlig 4

Examination Obligatoriska uppgifter (3hp) Tentamen (2hp) Lektionerna är frivilliga, men vi rekommenderar starkt att ni gör dem, och gör dem färdiga innan nästa föreläsning 5

Kursmål Redogöra för de grundläggande begreppen klass, objekt, inkapsling och därtill hörande underbegrepp; Analysera problem och designa lösningar genom att använda ovanstående begrepp; Använda programmeringsspråk Java genom att förklara vad ett givet program utför skriva och använda klasser som innehåller instansvariabler, metoder och konstruktorer Skriva program med flera samverkande klasser; Använda en programutvecklingsmiljö; Testa och felsöka program. 6

Lektion 1 Innehåller mycket material, men med kunskaper i Matlab kan man (kanske) hoppa över en del och komma igenom det mesta (utom de avslutande övningsuppgifter) Inställningar av DrJava i UNIX-lab Intro till DrJava och intro till Java: Aritmetik, uttryck, tilldelningar. I mån av tid: tecken och strängar Övningsuppgifter, teorifrågor 7

Varför ska man lära sig programmera? Datorer och program finns överallt Programmering = problemlösningsverktyg Användbart i utbildning och yrkesliv Java: en bra grund OOP: spritt på universitet och industri Kul! 8

Vad man lär sig... Analysera och strukturera problem Modellera översätta problemet till datorn Få en bild av: Vad innebär programmering? Programmeringstänk Vad menas med objektorienterad programmering? Programmeringsbegrepp: objekt, klass, metod... Syntax: språkets byggstenar (if, while,...) 9

Ex. drjava, grafik/turtles World w = new World(); Turtle t = new Turtle(w); t.turn(5); t.forward(8); int i=1; int move=3; while (i<50) { t.forward(move); t.turn(20); Thread.sleep(100); i=i+1; move=move+1; } 10

Vad är ett program? En samlad ordning instruktioner som talar om för datorn vad vi vill att den skall göra. Datorn förstår bara 1:or och 0:or Instruktionerna måste egentligen alltså ges på ett språk som består av enbart av nollor och ettor 11

Programmering i begynnelsen De första datorerna (instruerades) programmerades genom att ställa in strömbrytare och koppla ihop kablar. Detta representerade sekvenser av 1 or och 0 or. Programmeringsspråket bestod alltså av strömbrytare/kablar 12

På hålkort (7 rader ggr 80 kolumner) kunde man lagra instruktioner (programsatser), t.ex. ett kort med instruktionen (högnivåspråk): x=16 Instruktionen består av fyra tecken. Man kodade tecken till binära tal (7-bit). De fyra tecknen i exemplet lagras som binära tal (7 bit) i kolumn 1-4 på kortet. I första kolumnen lagras tecknet x, i 2:a tecknet =, i 3:e tecknet 1 och i 4:e tecknet 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x = 1 6 13

För att programmera behövs ett språk Tre olika typer av språk Maskinspråk (maskinkod) språket man programmerade i datorns begynnelse. Assemblerspråk Högnivåspråk 14

Maskinspråk Datorns eget språk Språket består bara av nollor och ettor Olika sorters datorer har olika språk Ex. på 3 st maskinkodsinstruktioner 1100 1000 1001 1111 0100 0011 1011 0001 0110 0011 1011 1000 Knöligt att prata med datorn via ett sådant (lågnivå)språk! 15

Högnivåspråk exempel y = a*x*x + b*x + c; z = {1,2,3,4}; sum = 0; tal = 1; while (tal<=99) { sum = sum+tal; tal = tal+2; } print(sum); World w = new World(); Turtle t = new Turtle(w); t.turn(5); t.forward(8); 16

Högnivåspråk Instruktioner av ord och fraser Lättare att läsa/förstå för människan, men ej för datorn. Instruktionerna måste översättas till maskinkod Översättningen kallas kompilering och görs med ett program kompilatorn. Instruktionerna kan fungera på olika datortyper, men måste kompileras till rätt maskinkod. 17

Mer om högnivåspråk Finns inbyggda funktioner/metoder, bibliotek Språk stöder olika sorters programmeringsprinciper: exvis ett objektorienterat språk Källkod och kompilator Ett språk har en syntax, dvs en grammatik Instruktionerna kan fungera på olika datortyper, men måste kompileras till rätt maskinkod. 18

Vilket högnivåspråk? Det finns många olika programmeringsspråk Se t ex http://en.wikipedia.org/wiki/programming_language Kan skriva program i vilket du vill Datorn bryr sig inte om vilket, eftersom det översätts till maskinkod. Språket har däremot betydelse för programmeraren. Hur lång tid tar det att skriva programmet? Hur svårt är det att ändra programmet? Hur lång tid tar det att köra programmet? 19

Programmeringsspråket Java Objektorienterat Syntaktiskt likt språk som C++ och C Stor mängd fördefinierade standardiserade komponenter (klasser): Internet Grafik Implementerat på alla vanliga datorsystem Fritt att ladda ned från Internet

Java-språkets beståndsdelar På låg nivå: konstanter till exempel 42 och -3.14 operatorer till exempel +, = och > variabler till exempel x och numberoffiles reserverade ord till exempel int, if och class specialtecken till exempel { och }

Java-språkets beståndsdelar (forts) Ovanstående sätts ihop till deklarationer: int a, b; double x; och (utförande) satser: a = 2; b = a*a + 1; System.out.print( Math.sin(b) ); Deklarationer och satser sätts ihop till metoder (funktioner) som följer syntax-(språk-)reglerna int roll() { return value = (int) (Math.random()*6) + 1; }

Java-språkets beståndsdelar (forts) Deklarationer och metoder sätts ihop till klasser public class Dice { private int value; public int roll() { return value = (int)(math.random()*6) + 1; } public int getvalue() { return value; } } Klasser samlas i paket (men det tar vi inte upp här och nu)

Identifierare Identifierare används som namn på variabler, metoder, klasser, mm. Exempel: myname Syntax: en bokstav följt av bokstäver, siffror och/eller understrykningstecken (x1 ok, 2f fel!) Nationella bokstäver är tillåtna men... Skiljer på versaler och gemena. Namngivning viktigt! (namn, adress bättre än x1, x2) Följ de namnkonventioner som nns! (Introducerar fi vi succesivt)

Deklarera variabler I Matlab: x_koordinat = 2; I Java: int x_koordinat = 2; // int betyder integer Variabler och konstanter måste deklareras, dvs tala om om du t ex behöver ett decimaltal eller heltal, och om det ska vara ett stort eller litet tal.

Datatyper Variabler och konstanter måste deklareras. Primitiva datatyper (till skillnad från objektreferenser) i Java. Heltalstyper och exempel: byte 1, -72 short 257 int 63246 int a = 4; long 123456789099 Flyttalstyper: float 1F, 0.5F double 1., -2e-5 double height = 7.8; Teckentyp: char x, +, 1 Logisk typ: boolean true, false

Datatyper (forts) byte 8 bitar [-128, 127] short 16 bitar [-32768, 32767] int 32 bitar ungefär [ 2*10 9, 2*10 9 ] long 64 bitar 18 ungefär [ 9*10, 9*10 18 ] float 32 bitar ungefär ±3.4*10 ±38, 7 siffrors noggrannhet double 64 bitar ungefär ±1.7*10 ±308, 15 siffrors noggrannhet

Datatyper (forts) Vad skiljer heltalstyper från yttalstyper? fl Heltal kan inte ha decimaldelar (naturligtvis) Heltalsaritmetiken är exakt (är det alltid sant?) Flyttalen kan ha decimaldelar Flyttalen kan inte alltid representeras exakt Flyttalsaritmetik är inte alltid exakt Vad skiljer olika heltalstyper från varandra? Olika talområden Vad skiljer olika yttalstyper från varandra? fl Olika omfång (största och minsta värde) Olika noggrannhet

Variabler En variabel har 1. ett namn även kallad identi erare fi 2. en typ dvs en mängd värden 3. ett värde ur ovanstående mängd Variabler måste alltid deklareras med typ och namn. Exempel: double x, y; int pagelength; Man kan ange värde i samband med deklarationen. Exempel: double dissipation = 0.5; int linesperpage = 60; boolean first = true; Deklarationer och satser avslutas med semikolon.

Operatorer De vanliga aritmetiska: +, -, *, /, % (rest). Ingen upphöjt till. Tilldelning = Ökning och minsknings ++ och -- (pre- och postfix- varianter) Aritmetik med tilldelning: +=, -=,... Relations: ==,!=, <, <=,... Logiska:!, &&,,...... Vanliga prioriteter, ändras med parenteser.

Tänk på Heltalsaritmetik Operationer med heltalstyper ger alltid heltalsresultat. Trunkering vid division. Exempel: x=2/3; //ger 0 y=17/9; //ger 1 Tilldelning ( = ): är inte matematiskt lika med! Regel: Från höger till vänster, inifrån och ut Exempel: x = 2*(3+4); (MEN 3=x; är fel!) En variable deklarerad som long (64 bitar) får inte plats i en variabel deklarerad som int (32 bitar), men tvärt om. Exempel: int n = 10; double h = 238/n; // Ok, heltal till double, men int b = h*0.12; //FEL, h är double

Typkonvertering Man kan ibland göra en tvingande typkonvertering, exempel: int x = 2/3; // resultatet blir 0 double x = 2/3; // resultatet blir 0.0 double x = 2.0/3; // resultatet blir 0.666667 double x = (int)(2/3) // Typkastning, resultatet blir 0.666667 Observera att typkastning kan leda till helt felaktigt resultat! Exempel: short i = 123456789; // Ger felutskrift kompileringsfel short i = (short)123456789; // Ej felutskrift men galet resultat

Matematiska funktioner (metoder) double y = Math.pow(5,3); //beräknar 5 upphöjt till 3 Exempel på fler metoder i klassen Math: Math.sin(x) Math.exp(x) //testa Math.exp(1) Math.log(x) Math.sqrt(x) Math.random() Math.pow(x,y) x och y är av typen double (eller någon typ som automatiskt kan konverteras till double) Metoderna returnerar ett värde av typen double

Gör & kör Java Programtext (sk källkod, skrivs i texteditor, t ex drjava).java-fil Javabytekod,.class-fil Kompilator (ett program som kollar syntaxen och översätter till bytekod) Interpretator exekverar, dvs kör, bytekoden

Lite datorhistoria Jag tror det finns en marknad i världen för kanske fem datorer. IBMs styrelseordförande Thomas Watson, 1943 Datorer behöver i framtiden inte väga mer än 1,5 ton. Popular Machines 1949 Det finns inget skäl till att någon skulle vilja ha en dator i sitt hem. Ken Olsen, Digital, 1977 35