Programmering hh.se/db2004 Föreläsning 1 Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Välkomna till en kurs i programmering! Att programmera är att få datorn att bete sig på ett viss sätt. I många andra kurser och senare i arbetslivet kommer det att krävas att ni får datorn att göra visa saker! Programmering handlar både om problemlösning och kodning (att skriva ner en lösning i ett programmeringsspråk). Center for Research on Embedded Systems IDE-sektionen Fortsättning Administrivia Fler kurser i Programmering 1 Programmering 2 Algoritmer och datastrukturer 3 Avancerad objektorienterad programmering 4 Datorsystemteknik I och II 5 Programmering av Inbyggda System Hemsida All material och information finns under hemsidan www2.hh.se/staff/vero/programmering som kan nås från hh.se/db2004 Lärare 1 Verónica Gaspes (Kursansvarig) 2 Daniel Petersson (Labassistent) Examination 1 Skriftlig tentamen (betyg) 2 Projektarbete (inlämning) 3 Laborationer (uppvisning)
Att använda en dator i denna kurs Datorerna i labsalen Unix Vi kommer att använda Unix miljöer i programmeringskursen. I labbsalen finns linux datorer. Ni som har mac har även Unix. Jag kommer visa vad ni behöver göra för att komma igång i labsalen. Under kursens hemsida finns en dokument med lite mer information. Source: The New Yorker Ikonen högst upp längst till höger öppnar en webläsare. Gå till hh.se/db2004 Terminalen Kommandon Under menyn Applications, under Accessories kan ni välja Terminal. Då öppnas ett fönster där man kan ge kommandon till datorn.
Vem a r Karel? Vem a r Karel? Roboten Karel Karel kan go ra va ldigt fa saker och bor i en mycket enkel va rld. Syfte Kursen handlar om programmeringsmetodik, men fo r att kunna o va beho ver vi ett spra k. I kursen a r spra ket Java. Fo rsta veckan presenterar vi principer vi kommer att illustrera under kursens ga ng. Karel erbjuder ett enklare spra k a n Java. Va rlden Gator lo per va gra tt och heter 1, 2, 3,... Karel va nd mot o st i korsningen 1sta gatan / 1sta avenyn. Karel kan move(), turnleft(), pickbeeper(), putbeeper() Avenyer lo per lodra tt och de heter 1, 2, 3,... Murar som avgra nsar visa delar av va rlden. Fo rema len som kan finnas pa korsningar heter beepers
Kommandon och tillstånd Detaljer Karels tillstånd Karel har en position i världen, en riktning och ett antal beepers i en säck. Kommandon Karel kan svara mot de kommandon vi nämnde tidigare. När Karel utför ett kommando förändras hans tillstånd. Om Karel gör en move() så ändras hans position, en korsning i den riktning han är vänd mot. Om Karel gör en turnleft() ändras hans riktning 90 till vänster. Om Karel gör en pickbeeper() eller putbeeper() ändras antalet beepers i hans säck (och världen förändras med!) Begränsningar Några kommandon medför visa begränsningar, om Karel försöker göra något ogiltig uppstår ett fel: Om Karel försöker ta sig genom en mur. Om Karel försöker ta upp en beeper där det inte finns någon. Om Karel försöker lämna en beeper och han har inga säcken. Parenteserna De toma parentaserna i kommandon är nödvändiga. Att programmera Karel Strikt syntax! För att få Karel att utföra ett uppdrag måste man skriva ner alla kommandon på ett mycket exakt sätt. Man måste följa syntaktiska regler som definierar vilka kommandon och språkregler är gilltiga. Nu övergår föreläsningen till att med exempel programmera Karel! Ni finner allt jag säger i den lilla skriften om Karel som finns under kursens hemsida.
Att använda programbibliotek Att beskriva en klass Kommentarer Att beskriva ett beteende /* * File: BeeperPickingKarel.java * ----------------------------- * The BeeperPickingKarel class extends the basic Karel class * by defining a "run" method with three commands. These * commands cause Karel to move forward one block, pick up * a beeper, and then move ahead to the next corner. */
Objektorientering Tillstånd & Beteende Programmeraren fokuserar på att modellera beteendet hos objekt. Beteenden påverkar ett objekts tillstånd. Detta sätt att organisera program låter programmeraren fokusera på delar av programmet i taget (objektorientering underlättar att modularisera ett program). Klasser & Instanser I Karel och senare i Java det man använder för att beskriva tillstånd och beteende är klasser. En klass är som ett mönster eller ett mall för objekt som delar ett beteende och tillståndsattribut. Dessa objekt kallas för instanser av klassen. Att definiera klasser med utvidgning Klassen BeeperPickingKarel bygger på allt som klassen Karel erbjuder. En instans av BeeperPickingKarel är också en robot som bor i samma typ av värld och har samma tillståndsattribut och reagerar på samma kommandon som en instans av Karel. Nya kommandon Lätt att förstå programmet public class BeeperTotingKarel extends Karel { turnright(); turnleft(); putbeeper(); Nya kommandon Att definiera metoder public class BeeperTotingKarel extends Karel { // som ovan private void turnright(){ turnleft();turnleft();turnleft(); Detta gör ett program lättare att förstå, och då även att modifiera i framtiden.
Mer om nedbrytning Att välja rätt nedbrytning Karel lagar en väg Rekomendationer Varje delproblem bör utföra en begreppsmässig enkel uppgift. Varje delproblem bör utföra en uppgift som är så allmän som möjligt så att den kan användas i flera sammanhang. Hur väljer man rätt nedbrytning? Till exempel: 1 Flytta till gropen. 2 Fyll gropen genom att lämna en beeper där. 3 Flytt till nästa korsningen. Övningar Övning 1 Inloggning Kommandon i linux terminalen Kompilering och felmeddelanden Exekvering och programfel Programmering