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.

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

Föreläsning REPETITION & EXTENTA

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

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

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

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

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

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

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

F4. programmeringsteknik och Matlab

OOP Objekt-orienterad programmering

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

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

Objektorienterad Programmering (TDDC77)

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

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

JAVAUTVECKLING LEKTION 4

Objektorienterad programmering i Java

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

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

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

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

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

Grundläggande programmering

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

Programmering A. Johan Eliasson

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

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

JAVAUTVECKLING LEKTION 7

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

Föreläsning 9-10 Innehåll

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

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

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Planering Programmering grundkurs HI1024 HT 2014

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

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

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

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

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

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

[] Arrayer = Indexerad variabel

Tentamen OOP

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Kompilera och exekvera Javakod

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

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

SMD 134 Objektorienterad programmering

Föreläsning 5-6 Innehåll

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

Datastrukturer. Föreläsning Innehåll. Program med vektor Exempel. Deklarera vektorer

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

Undervisning. Examination

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

Redovisning av inlämningsuppgifter

EDAA01 Programmeringsteknik - fördjupningskurs

1 Iteration. 1.1 for-satsen

OOP Objekt-orienterad programmering

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

Introduktionsmöte Innehåll

Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

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

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

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

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

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Tentamen , Introduktion till Java, dtaa98, dtea53

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

Eclipse en handledning

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

Objektorienterad Programmering (TDDC77)

Kursinformation Grundkurs i programmering med Python

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

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

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

TENTAMEN OOP

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

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

Del A (obligatorisk för alla)

Editering, Kompilering och Exekvering av Javaprogram

2 Eclipse en handledning

OOP Objekt-orienterad programmering

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

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

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

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

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

TDIU01 - Programmering i C++, grundkurs

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

Objektorienterad Programmering (TDDC77)

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

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: Matlab som verktyg för numeriska problem (v. 6 8)

Java finns överallt

En solid bas: Java och andra språk C / C++ (inbyggda system, hårdvarunära programmering) Python (script, textbehandling, ) Java Matlab (numeriska beräkningar) 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 projektet hjälper dig att klara tentamen i slutet av maj

Kursmoment Föreläsningar Övningar Laborationer (10 st) och ett projekt Obligatoriska (ger 4,5 hp) 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 (3/3) Tentamen (3 hp) 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 10 12 Resurstid 13 15 Föreläsning Resurstid Lab Lab 15 17 Resurstid Lab BME F N små variationer vissa veckor

Matlab vecka 6 8 (endast F) måndag tisdag onsdag torsdag fredag 8 10 Föreläsning 10 12 13 15 Lab 15 17 Lab

Nyheter sedan förra året Fler labbgrupper samtidigt (jämna ut belastningen) Två nya laborationer (3 och 8) Projekt och parlaboration ersätter inlämningsuppgifter Nya Matlab-laborationer (F) 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 Senast på fredag 20/1! Gruppindelningen (F1.01-12, N1.01-08) gäller hela vårterminen Labbanmälan används för registrering 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

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å skärmen.

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; 5200 12.5 nbr1 Vid tilldelning läggs variabelns värde i motsvarande minnescell/er. 5208 5216 0.7 13.2 nbr2 sum nbr1 = 12.5; nbr2 = 0.7; sum = nbr1 + nbr2; Minnet är uppdelat i minnesceller. Variabelns namn hänvisar alltså till en minnescell.

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); } }

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 körs precis i början. Andra ledet testas före varje varv, även det första. Villkoret avgör om for-satsen ska fortsätta. Tredje ledet kö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) { }

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); Fyll i while (scan.hasnextint()) { int nbr = scan.nextint(); } Fyll i System.out.println("Det största talet är " + max);

Algoritm beräkning av min/max (pseudokod, dvs inte riktig Java-kod) 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;

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)