Programmeringsbegrepp

Slides:



Advertisements
Liknande presentationer
Visual Basic - Genomgång
Advertisements

INTRODUKTION TILL PROGRAMMERING
F2 - Intro till Java1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): • Vad behövs för att kunna programmera? • DrJava • Java •
hej och välkomna EKVATIONER Ta reda på det okända talet.
Programstruktur: C för enchipsdatorer
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
De fundamentala datatyperna
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Att programmera i språket Java
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
IT för personligt arbete F6
Java. Kortfattat om Java Syntaxen påminner i hög grad om C++ Stöd för objektorientering Kod kan köras i en virtuell maskin som finns tillgänglig för nästan.
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
Programmering B PHP Lektion 2
INTRODUKTION TILL PROGRAMMERING
Programmering B PHP Lektion 3
Föreläsning 11 Arrayer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Repetition inför slutprovet
Ali Ghodsi Variabler En variabel är en sorts behållare som man kan placera data i Man måste ange typ och namn för alla variabler.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Internet A Javaskript.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Funktioner, styrstrukturer, manipulering av matriser
Grundläggande programmering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Objektorienterad Programmering i C++ I
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 3 Operatorer Flödeskontroll Primitiva datatyperKlasser i API och egna klasser int double byte float char boolean short long String BufferedReader.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
OOP&M - teori1 OOP– Föreläsning vecka Genomgång uppgifter Arbetsmetoder Repetition Kapitel 14 Metoder.
Föreläsning 1 Introduktion till kursen. Algoritmer
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Selektion jämförande och logiska operatorer
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
KPP053, HT2015 MATLAB, Föreläsning 4
Python.
Iteration – Repetitionssats - while
Presentationens avskrift:

Programmeringsbegrepp Elektronisk publicering

Idag Programspråk Algoritmer Operatorer Programblock och satser Objektorientering

Programspråk… …kräver en exakt syntax …kräver en exakt semantik Känns det bekant?

Programspråk Maskinkod Assembleringsspråk Högnivåspråk Ettor och nollor Assembleringsspråk Enklare kommandon Högnivåspråk Mer likt människans sätt att uttrycka sig på Dagens programmeringsspråk

Flödet… Algoritm skapas Programmerare kodar algoritmen i ett högnivåspråk En kompilator kompilerar koden till assemblerspråk/maskinkod

Programspråk FORTRAN – 50-talet, främst anpassat för numeriska beräkningar (t ex simuleringar av en kärnreaktion) COBOL – sent 50-tal, främst anpassat för affärer, banker, företag PASCAL – tidigt 70-tal, generellt språk LISP – 60, populärt inom AI PROLOG – 70, bygger på logik

Nyare språk Java C++ C# Programspråk anpassade för webben: PHP ASP Visual Basic JavaScript …och XSLT

Många programspråk finns… …varför? Två skäl: 1 - Teknologisk utveckling kräver nya språk 2 - Nya områden och nya tillämpningar kräver nya språk

Programmering... ...handlar om problemlösning Problemlösning kan liknas vid ett recept... ...men det något vackrare ordet algoritm används nog mest frekvent i de här sammanhangen

Algoritmer En algoritm ≈ Ett recept Steg för steg-instruktioner för att lösa ett problem

Ett exempel på en algoritm 1 Notera 0, peka på första lönen i listan 2 Öka aktuellt värde med lönen som är utpekad 3 Om slut på listan 3.1 Skriv ut summan 4 Annars 4.1 Peka på nästa lön

Ett exempel på en algoritm Start Note 0; Point to first salary Add salary pointed at noted number At end of list? YES NO Output noted number Point to next salary stop Harel, D. (1992) Algorithmics – The spirit of computing

Alla problem kan lösas med… Sekvens – en serie instruktioner som alltid utförs i samma ordning Selektion – vägval, ett styrt val av en operation Iteration – upprepning av en eller flera operationer, styrs i regel av ett avbrottsvillkor Rekursion – ett problem delas upp systematiskt i mindre, likartade delar (egentligen en typ av iteration)

I slutändan… En dator är bra på att fatta enkla beslut och göra beräkningar Komplicerade beslut måste delas upp i enkla delar som datorn kan förstå För att göra detta skapas algoritmer Hur fantastiskt ett program än må vara så består det fortfarande bara av funktioner och variabler

Programblock och satser Vid det här laget är ni ju redan bekanta med krullparenteserna { } Allt mellan två krullparenteser hör ihop Det som finns mellan dem är satser En sats är ett kommando som får något att hända Satser som ger ett värde kallas för uttryck

Programblock och satser if (pris>40) { document.write "Oj, vad dyrt!"; } else if ((pris<40) && (pris>20)) { document.write "Priset är OK!"; else { document.write "Oj, vad billigt!";

Variabler och konstanter Variabel – ett utrymme där man lagrar data En variabel är av en datatyp Variabeln och dess datatyp deklareras vanligtvis innan den ska användas Konstant – en variabel vars värde aldrig ändras

Datatyper Heltal (byte, short, int, long)‏ Decimaltal (float, double)‏ Text (char, string)‏ Datum (date, datetime)‏ Boolesk (boolean)‏

Deklarera variabler ActionScript C# var pos_x:Number = 0; var pos_y:Number = 8; var str:String = "en sträng text"; C# int pos_x = 0; int pos_y = 8; string str = "en sträng text";

Namnge variabler Beskrivande namn Följ tumreglerna: kalle är inte ett bra namn på en heltalsvariabel som lagrar längd Följ tumreglerna: Inled alltid med en bokstav Första bokstaven är gemen Varje följande ord börjar med versal Alla andra bokstäver är små Efter första tecknet kan vanligtvis siffror samt understreck förekomma

NULL NULL är ett värde som är ingenting NULL är ett värde som är odefinierat NULL är inte lika med 0, "" (tomma strängen) eller empty Kort och gott: vi vet inte vad värdet ska vara

Konkatenering Att sammanfoga något till en serie Två ihopslagna textsträngar är resultatet av en konkatenering s1 = 'Detta är en sträng'; s2 = ' som snart ska slås ihop med denna sträng'; print s1 + s2;

Kommentarer /* klassisk C-kommentar */ // C++-kommentar <!-- HTML-kommentar --> Används för att lägga in kommentarer i koden eller kommentera bort kod

Operatorer Specialtecken för jämförelser a == b a är ekvivalent med b a != b a är inte ekvivaltent med b a > b a är större än b a < b a är mindre än b a >= b a är större än eller ekvivaltent med b a <= b a är mindre än eller ekvivalent med b

Operatorer… …fungerar egentligen som funktioner där argument tas emot och returvärden skickas tillbaka Argumenten a och b skickas till funktionen som returnerar resultatet av jämförelsen

Aritmetiska operatorer a + b addition a – b subtraktion a * b multiplikation a / b division a % b modulusdivision

Logiska operatorer a > b || a > c a är större än b eller c a > b && a > c a är större än b och c ! a a är falskt Tänk på att resultatet av en jämförelse alltid har något av värdena sant eller falskt

Tilldelningsoperatorn = a = b a tilldelas värdet av b a = a * b a tilldelas värdet av a multiplicerat med värdet av b a += b a tilldelas värdet av a plus värdet av b Tilldelningsoperatorn kan användas med alla aritmetiska operatorer

Öka på och minska Inkrementering och dekrementering a ++ a ökas på med 1 a -- a minskas med 1

Villkor, uttryck och operatorer Vägval Om det här gäller, gör a Annars om det här gäller gör b Annars gör c

Vägval om (uttryck) sats annars om (uttryck) annars

Vägval, if – else if - else if (pris>40) { print "Oj, vad dyrt!"; } else if ((pris<40) && (pris>20)) { print "Priset är OK!"; else { print "Oj, vad billigt!";

Vägval, switch switch (veckodagNr) { case '1': print "Det måste vara måndag"; case '2': print "Det måste vara tisdag"; case '3': print "Det måste vara onsdag"; case '4': print "Det måste vara torsdag"; case '5': print "Det måste vara fredag"; default: print "Det måste vara helg"; }

Slingor: for for (kontrollvariabel initieras ; villkor ; ändring av kontrollvariabelns värde)‏ sats

For-loopen, exempel for (pris; pris<40; pris++) { if (pris%2==0) { print pris; } else { print "Priset är inte jämnt delbart med 2";

While-loopen while (pris<40) { if (pris%2==0) { document.write pris; else { document.write "Priset är inte jämnt delbart med 2"; } pris++;

While-loopen while (cont=='j') { ... print "Kör igen (j/n)?"; cont = userInput; }

Rekursion Rekursion är en... …lösningsteknik där ett större problem löses genom att reducera det till ett mindre problem av samma form En subrutin, eller procedur, anropar sig själv Förvirrande? "För att förstå rekursion så måste man förstå rekursion."

Rekursion static void countDown(int n) { if (n < 1) { print "Start!"; } else { print "T minus " n " seconds"; countDown(n - 1); countDown(60);

Vektor (array)‏ En lista av likadana typer Varje position i listan har en egen adress, ett eget index vektor[0]='David' Matris = flera vektorer på rad vektor[0][0]='David' vektor[0][1]='1981' vektor[1][0]='Kalle' vektor[1][1]='1984'

Vektorer En vektor kan vara flerdimensionell (matris)‏ twoDimArray[2][1] = 'x' Här fungerar vektorn som en tabell threeDimArray[2][1][4] = 'x' Här fungerar vektorn mer som ett 3-dimensionellt rum En vektor kan innehålla andra vektorer, som i sin tur kan innehålla andra vektorer Här finns möjligheten att ha olika längd på vektorerna inom en viss vektor

Metoder och funktioner En svart låda som tar emot n antal värden som argument och returnerar (vanligtvis) max ett värde I objektorienterad programmering är metod namnet som används En metod definieras i en klass och alla objekt i klassen kan "använda" metoden Värden som tas emot benämns som argument

Metoder och funktioner Funktioner skall... ha lämpliga namn utföra en sak kommenteras

Funktion… function showHide(x) { var e = document.getElementById(x); if (e.style.display=='none') { e.style.display='block'; } else { e.style.display='none';

…och dess anrop <a href="javascript:showHide('e1')"> Visa/dölj

Strukturell programmering Programmet ses som en serie instruktioner som utförs i en sekvens Problemet bryts ned i en serie enkla steg Pascal, Basic mfl

Objektorientering En modell för modern programmering Fokuserar på de delar som programmet är uppbyggt av samt relationen mellan dessa delar Exempel på språk som har stöd för ett objektorienterat angreppssätt: C++, C#, Java och Simula Med ett objektorienterat synsätt ser man på ett datorprogram som en slags modell av den verklighet som programmet ska samverka med Stegvis förfining

Stegvis förfining 1. Problem: Du är hungrig Förfining 1... 1. Skaffa mat 1.1 Om du känner dig lat 1.1.1 Beställ pizza 1.2 annars 1.1.2 Laga maten själv

Förfining 2... 1. Skaffa mat 1.1 Om du känner dig lat 1.1.1 Beställ pizza 1.1.1.1 Ring pizzerian 1.1.1.2 Vänta tills pizzan är färdig 1.1.1.3 Hämta pizzan 1.2 annars 1.1.2 Laga maten själv

Fortsättning: 1.1.2 Laga maten själv 1.1.2.1 För varje ingrediens; kontrollera att tillräcklig mängd finns 1.1.2.2 Om tillräcklig mängd inte finns 1.1.2.2.1 Skriv ingrediens och mängd på en inköpslista 1.1.2.3 Om inköpslistan är tom 1.1.2.3.1 Börja laga maten 1.1.2.4 annars 1.1.2.4.1 Handla ingrediens 1.1.2.4.2 Stryk ingrediens från listan 1.1.2.4.3 Gå till 1.1.2.3

Objektorientering Allt är objekt Allt har egenskaper Ett objektorienterat språk bygger på klasser Klasserna inkapslar i sig data i form av variabler samt metoder/funktioner

Vad är en klass? Här: något som beskriver något annat class="text"  .text { egenskaper } En mall för likartade objekt som har likartade egenskaper men (ofta) olika egenskapsvärden Klassen människa har egenskaper som längd, vikt, hårfärg, hudfärg etc En specifik människa har längden 179 cm, vikten 75 kg, hårfärgen mörkblond, hudfärgen vit etc

En klass innehåller också metoder Vad kan en människa göra? Gå Springa Köra bil Kommunicera etc…

Bakgrund till objektorientering Simuleringsprojekt i Oslo på 60-talet Biltrafik Kassaköer i butiker …och liknande Grundtanke: det skulle vara lätt att prata om bilar, kunder och liknande samt deras beteenden Därför infördes begreppen klasser, objekt och attribut (även arv)‏

Klasser, objekt och attribut Klass = den allmänna mallen för ett objekt Objekt = en instans av klassen Attribut = egenskaper hos objektet Glasklart, eller hur?

Exempel: boksamling Klass = den allmänna mallen för en bok Objekt = en instans av klassen, det vill säga en bok i det här fallet Attribut = egenskaper hos objektet bok

Tänkbara metoder för boksamlingen Skapa ny bok Ge titel Ge författare Ge lånestatus Ändra titel Ändra författare Ändra lånestatus

En viss koppling till XHTML… p.text { color: black; font-family: georgia; } <p class="text">Detta HTML-element är en instans av klassen text. Det har egenskaper i form av svart text och teckensnittet georgia.</p>

Fler exempel När vi talar om en bok i allmänhet talar vi om en klass När vi talar om en specifik bok talar vi om ett objekt Eftersom en klass är en mall för ett objekt kan vi använda mallen för att skapa nya objekt

Kod- och stilkonventioner Sätt aldrig mer än en sats på en rad Om en sats blir för lång låter du den fortsätta på nästa rad, sätt en extra tabb för den delen som hamnar på nästa rad Använd ny rad för klamrarna som inleder och avslutar ett programblock Gör indrag för varje nytt programblock som påbörjas innan det föregående blocket är slut (indentering)‏

Indentering <receptsamling> <recept> <namn>Pasta Bolognese</namn> <ingrediens> <namn>Köttfärs</namn> <kategori>Kött</kategori> <mangd enhet="gram">400</mangd> </ingrediens> <namn>Krossade tomater</namn> <kategori>Grönsaker</kategori> </recept> </receptsamling>

Indentering static void countDown(int n) { if (n < 1) { print "Start!"; } else { print "T minus " n " seconds"; countDown(n - 1); countDown(60);