Föreläsning 1 & 2 INTRODUKTION



Relevanta dokument
Föreläsning 1 & 2 INTRODUKTION

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.

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

"if"-satsen. Inledande programmering med C# (1DV402)

Föreläsning 1-2 innehåll

Föreläsning 3-4 Innehåll

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

Tentamen OOP

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

Programmering A. Johan Eliasson

Föreläsning REPETITION & EXTENTA

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

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

SMD 134 Objektorienterad programmering

Redovisning av inlämningsuppgifter

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

Programmeringsteknik med C och Matlab

Grundläggande programmering med C# 7,5 högskolepoäng

Editering, Kompilering och Exekvering av Javaprogram

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

F4. programmeringsteknik och Matlab

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

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

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

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

Tentamen, EDAA20/EDA501 Programmering

Objektorienterad Programmering (TDDC77)

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

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

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

SMD 134 Objektorienterad programmering

Institutionen för datavetenskap 2014/15

Objektorienterad programmering D2

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

Björn Abelli Programmeringens grunder med exempel i C#

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

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

Objektorienterad programmering i Java

Chapter 3: Using Classes and Objects

Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

Övningar Dag 2 En första klass

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

OOP Objekt-orienterad programmering

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Objektorienterad programmering i Java

Objektorienterad Programmering (TDDC77)

IT för personligt arbete F6

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

JAVAUTVECKLING LEKTION 4

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

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

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

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

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

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

Grundläggande programmering

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Tentamen i Objektorienterad programmering

OOP Objekt-orienterad programmering

Testning. 1. Inledning

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

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Föreläsning 9-10 Innehåll

Att använda pekare i. C-kod

Lösningsförslag, tentamen FYTA11 Javaprogrammering

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Inledande programmering med C# (1DV402) Summera med while"-satsen

Föreläsning 6: Introduktion av listor

HF0010. Introduktionskurs i datateknik 1,5 hp

Klassdeklaration. Metoddeklaration. Parameteröverföring

Laboration 10 - NetBeans

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

Tentamen , Introduktion till Java, dtaa98, dtea53

Kompilera och exekvera Javakod

Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING

Chapter 4: Writing Classes/ Att skriva egna klasser.

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008

Tentamen, EDA501 Programmering M L TM W K V

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

[] Arrayer = Indexerad variabel

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

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Grunderna i stegkodsprogrammering

Objektsamlingar i Java

Skillnader mellan Python och Java

JAVAUTVECKLING LEKTION 7

Programexempel: tärningsspel

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Algoritmexempel. Föreläsning 5-7 Innehåll. Summering Mönster. Summering Exempel: alternerande harmoniska serien

Föreläsning 2: Avlusning och antilustekniker

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Transkript:

Föreläsning 1 & 2 INTRODUKTION

Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga klasser Läs själv i läroboken: 1 3.2

Vad ska du lära dig? I EDA011 & EDA017: Lösa problem med hjälp av dator Grundläggande programmering Grundläggande objektorientering och programspråket Java I EDA017 även: Simulering och beräkning i Matlab (vecka 6 9)

Java finns överallt

En solid bas: Java och andra språk C / C++ (inbyggda system, hårdvarunära programmering) Python (script, textbehandling, ) Java Matlab (simulering, beräkning) Haskell / Scala (funktionell programmering) JavaScript (webapplikationer)

Hur lär man sig programmera? Ingen åskådarsport! Lyssna och diskutera Läs Öva övningar, laborationer, inlämningsuppgifter Öva bokens övningar Fråga! Olika förkunskaper Laborationer, övningar och inlämningsuppgifter hjälper dig att klara tentamen i juni

Kursmoment Föreläsningar Övningar Laborationer (9st) och inlämningsuppgifter (2st) Obligatoriska (ger 4,5hp) Använd egen dator om du vill Anmäl dig, gå till rätt grupp och var förberedd! Resurstider Gör övningar, få svar på frågor, få hjälp med inlämningsuppgifter Delmålskontroll (4/3) Tentamen (3hp) godkända laborationer/inlämningsuppgifter krävs!

Laborationer: regler Laborationerna är individuella och obligatoriska! Gör förberedelserna noga ofta helt nödvändigt för att hinna med! Är du sjuk? Anmäl det till mig, få hjälp på resurstillfällena och redovisa på resurstid eller uppsamlingstid (nästa labbtillfälle är OK om handledaren har tid) Hinner du inte med hela? Se till att handledaren noterar din närvaro, och fortsätt på resurstid och uppsamlingstid. Laborationerna (och inlämningsuppgifterna) är helt centrala när du lär dig programmera!

Kursveckorna under VT1 måndag tisdag onsdag torsdag fredag 8 10 Föreläsning Lab Resurstid 10 12 Lab Lab Resurstid 13 15 Föreläsning Resurstid Lab 15 17 Lab BME F N små variationer vissa veckor

Matlab vecka 6 9 (endast F) måndag tisdag onsdag torsdag fredag 8 10 Föreläsning 10 12 Lab 13 15 15 17 Lab 3 föreläsningar (v6 9); 4 laborationer (v6 9) obligatoriskt prov

Nyheter sedan förra året Fler labbgrupper samtidigt (jämna ut belastningen) Delmålskontroll (liten dugga/övning) Frågeforum Inlämningsuppgift 1:1 ny (felsökning) Frivillig labb 10 (extra programmeringsträning) Använd era kursombud!

Kursens websida cs.lth.se/eda011-017 Visar vad som händer i kursen, vecka för vecka Läsanvisningar Föreläsningsbilder (och vissa exempel) Laborationsanmälan Tips för Eclipse på din egen dator Frågeforum

Läsvecka 1 Anmäl dig till en labbgrupp (anmälan öppnar efter föreläsningen) Gruppindelningen (F1.01-12, N1.0108) gäller hela vårterminen Skaffa kursbok+kompendium (KFS) Fyll i förkunskapsenkäten Gör övning 1 Installera Eclipse (om du vill) Börja titta på laboration 1

EDA011/EDA017 Programmeringsteknik Färdighet och förmåga För godkänd kurs skall studenten kunna konstruera och implementera algoritmer för att lösa enkla uppgifter kunna implementera Javaklasser utgående från givna specifikationer kunna strukturera program, både med hjälp av underprogram och med hjälp av klasser och metoder kunna använda enkla verktyg för att skriva in, testa och felsöka program

Laborationer och Eclipse en rundtur

Programmering

Vad är ett datorprogram? En följd av instruktioner som beskriver hur datorn ska lösa ett problem. Instruktionerna skrivs i ett programspråk, t ex Java.

Algoritm En algoritm är en följd av klara och tydliga instruktioner som beskriver hur man ska göra för att lösa ett problem. Ex: matrecept

Exempel på en algoritm Uppgift: Beräkna summan av talen 12.5 och 0.7 och skriv ut summan på datorns skärm. Algoritm: 1. Tal nr 1 är 12.5. 2. Tal nr 2 är 0.7. 3. Summan = tal nr 1 + tal nr 2. 4. Skriv ut summan.

Exempel på programkod Uppgift: Beräkna summan av talen 12.5 och 0.7 och skriv ut summan på datorns skärm. Programkod: double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; System.out.println("Summan av talen är " + sum);

Exempel på Javaprogram public class Calculator { Satser som utförs då programmet exekveras } public static void main(string[] args) { } double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; Programmets namn System.out.println("Summan av talen är " + sum); Detta är ett litet men fullständigt program. Det beräknar summan av två tal och skriver ut den på datorns skärm.

Editera kompilera exekvera Editera Skriv in programkoden och spara i en fil vars namn har tillägget.java. Kompilera Programkoden kontrolleras. Om den är korrekt översätts den till bytekod. Bytekoden lagras i en fil vars namn har tillägget.class. Kompileringen görs automatiskt av Eclipse när.java-filen sparas. Eventuella felmeddelanden visas direkt i Eclipse. Exekvera Programmet körs, dvs. bytekodsinstruktionerna i programmet utförs.

Datorns delar Processor eller CPU (central processing unit) den enhet i datorn som utför instruktioner. Primärminne används för att lagra program och dess data när programmen körs. Sekundärminne, t ex hårddisk / SSD där program och data lagras när de inte används. In- och utenheter, t ex skärm, tangentbord, mus för att vi ska kunna kommunicera med maskinen. Kommunikationskanaler för att kommunicera med andra datorer eller apparater.

Variabler Variabler används för att lagra värden som programmet måste komma ihåg. Variabler har ett namn och en datatyp. Variablerna måste deklareras. Typ namn Exempel: double nbr1; nbr1?

Tilldelningssats I en tilldelningssats ger man en variabel ett nytt värde. Ex: double nbr1, nbr2, sum; nbr1 = 12.5; nbr2 = 0.7; sum = nbr1 + nbr2; nbr1 nbr2 sum 12.5 0.7 13.2

Variabler i datorns minne Variablernas värden lagras i datorns primärminne. Vid deklarationen av en variabel reserveras plats för variabeln i minnet. double nbr1; double nbr2; double sum; Vid tilldelning läggs variabelns värde i motsvarande minnescell/er. 5200 5208 5216 12.5 0.7 13.2 nbr1 nbr2 sum nbr1 = 12.5; nbr2 = 0.7; sum = nbr1 + nbr2; Minnet är uppdelat i minnesceller. Variabelns namn hänvisar alltså till en minnescell.

Variabler och värden Ofta ger man variabler värden redan när man deklarerar dem, även om deklaration och tilldelning är olika saker. Istället för int nbrofstudents; double height; nbrofstudents = 64; height = 6.3; skriver vi ofta int nbrofstudents = 64; double height = 6.3; Variabelns och uttryckets typer måste stämma.

Tilldelningssats - övning Variabler av typ int används för heltalsvärden. Vilka värden har variablerna när följande satser exekverats? int u, x, y, z; x = 10; y = 2 * x + 1; z = (y + x) + (y - x); x = x + 1; u x y z

Utskrift (på datorns skärm) Utskrift av en teckensträng (text; omges av citationstecken): System.out.println("Skriv två tal"); Utskrift av en variabels värde (OBS! inga citationstecken): System.out.println(sum); Flera saker kan skrivas ut i samma println-sats (med + mellan). System.out.println("Summan av talen är " + sum);

Inläsning från tangentbordet Exempel: Två tal läses in från tangentbordet. Det första värdet lagras i variabeln nbr1. Det andra värdet lagras i variabeln nbr2. Skapa först ett Scanner-objekt som kan användas för att läsa från tangentbordet: Scanner scan = new Scanner(System.in); Med scan.nextdouble() läser man nästa tal (av typen double) som skrivs på tangentbordet: double nbr1 = scan.nextdouble(); double nbr2 = scan.nextdouble();

Calculator, bättre program import java.util.scanner; public class Calculator { public static void main(string[] args) { System.out.println("Skriv två tal"); Scanner scan = new Scanner(System.in); double nbr1 = scan.nextdouble(); double nbr2 = scan.nextdouble(); double sum = nbr1 + nbr2; System.out.println("Summan av talen är " + sum); } }

Pascals räknemaskin

Import-sats Genom att skriva en import-sats först i filen talar vi om att vi kommer att använda en klass från ett klasspaket (en samling redan färdiga klasser). import java.util.scanner; I det här fallet importeras klassen Scanner som används för inläsning från tangentbordet. (Vissa saker är alltid tillgängliga, även utan import, t.ex. System.out)

Exempel med alternativ Exempel: Scanner scan = new Scanner(System.in); double nbr1 = scan.nextdouble(); int nbr2 = scan.nextint(); if (nbr2!= 0) { System.out.println("Kvoten mellan talen är " + (nbr1 / nbr2)); } else { System.out.println("Du försökte dividera med 0."); }

Logiska uttryck I if-satsen väljs alternativ beroende på ett logiskt uttryck (nbr2!= 0 i exemplet). Logiska uttryck får, då programmet körs, ett av två möjliga värden: true eller false. Logiska uttryck används bland annat som villkor i if- och whilesatser. Exempel: if (x < 5) // väljs om x är mindre än 5 if (x == 100) // väljs om x är 100 if (x!= 100) // väljs om x inte är 100

Alternativ if (villkor) { satser; } else { satser; } // utförs om villkoret är uppfyllt // utförs annars if (villkor) { satser; } // utförs om villkoret är uppfyllt

Repetition: for- och while-satser ett bestämt antal ggr: for (int i = start; i <= slut; i++) { satser; } Satserna utförs för i-värdena start, start+1, start+2,..., slut. i++ betyder samma sak som i = i + 1 så länge ett villkor är uppfyllt: while (villkor) { satser; }

Exempel med repetition ett bestämt antal gånger Scanner scan = new Scanner(System.in); int sum = 0; for (int i = 1; i <= 5; i++) { sum = sum + scan.nextint(); } System.out.println(sum);

Exempel med repetition ett okänt antal gånger Exempel: Scanner scan = new Scanner(System.in); int sum = 0; while (scan.hasnextint()) { sum = sum + scan.nextint(); } System.out.println(sum);

Repetition med for Första ledet är det som görs första varvet. Andra ledet testas före varje varv, även det första. Tredje ledet utförs efter varje varv. Alltid enligt följande mönster: for (int i = start; i <= slut; i++) { satser; } // utförs för i-värdena start, start+1, // start+2,..., slut.

for och while for (int i = 1; i <= 5; i++) { System.out.println(i); } int i = 1; while (i <= 5) { System.out.println(i); i++; } Ekvivalenta för maskinen men berättar olika saker för programmeraren! (När antalet upprepningar är känt använder man ofta en for-sats.)

Övning på repetition Skriv satser för att beräkna och skriva ut summan av 2 + 4 + 6 + 8 +... + 50.

Variabler, uttryck och typer Typ Används till Exempel double Reella tal double r = 3.72; double c = r * 2 * Math.PI; int Heltal int a = 5; int b = a + 3; boolean Villkor, logiska värden (true eller false) boolean isadult = (a >= 18); if (isadult) { }

Algoritm beräkning av min/max Beräkning av minsta värde: min = "stort värde"; för alla värden { value = "nästa värde"; if (value < min) { min = value; } } Att beräkna maximum går till på liknande sätt: max = "litet värde"; för alla värden { } value = "nästa värde"; if (value > max) { } max = value;

Konstanter för största och minsta tal Dessa konstanter kan användas när man behöver ett mycket litet eller stort tal. int i1 = Integer.MIN_VALUE; // -2147483648 int i2 = Integer.MAX_VALUE; // 2147483647 double d1 = Double.MIN_VALUE; // 4.9E-324 (OBS! >0) double d2 = Double.MAX_VALUE; // 1.8E308 Med E menas gånger 10 upphöjt till

Övning Beräkna det största talet av ett antal heltal som läses in från tangentbordet. Fyll i den kod som saknas. Scanner scan = new Scanner(System.in); while (scan.hasnextint()) { int nbr = scan.nextint(); } System.out.println("Det största talet är " + max); Fyll i Fyll i

Vad händer här? Scanner scan = new Scanner(System.in); System.out.println("Skriv 7 tal:"); int result = Integer.MAX_VALUE; for (int i = 0; i < 7; i++) { int nbr = scan.nextint(); if (nbr < result) { result = nbr; } } System.out.println(result); Indata: 23 19 18 19 21 17 20 Vilket värde skrivs ut?

Värden i datorn har begränsad precision Allt i datorn (int, double, objekt och annat) representeras i minnet som binära tal Variabler av typ int representeras av 32 binära siffror (bit=binary digit; en av bitarna representerar talets tecken) Integer.MAX_VALUE = Variabler av typ double representeras av 64 binära siffror (uppdelade på exponent, signifikand och tecken) (Det finns sätt i Java att representera större tal vid behov.)

Läsvecka 1 Gör övning 1 Börja titta på laboration 1 Om du inte redan gjort det: Anmäl dig till en labbgrupp Skaffa kursbok+kompendium (KFS) Fyll i förkunskapsenkäten Installera Eclipse (om du vill)