Skip to content

Latest commit

 

History

History
300 lines (241 loc) · 6.8 KB

ProgIntro.org

File metadata and controls

300 lines (241 loc) · 6.8 KB

Programmering

Hva er programmering?

  • Eksperimentering
  • Kreativt
  • Problemløsing

Processing

Variabler

  • Navngitte data
  • Verdien kan endres
  • Flere forskjellige typer

Heltall

  • int (kort for integer)
  • Tall uten desimaler
int a = 5;

Flyttall

  • float (kort for floating point number)
  • Tall med desimaler
  • Ikke helt presise (7,2 siffer)
float pi = 3.14;

Sannhetsverdier (boolske verdier)

  • boolean (etter George Boole)
  • En verdi som er sann (true) eller usann (false)
boolean awesome = true;

Tegn

  • char (kort for character)
  • Bokstaver, tall og andre symboler
char c = 'c';

Strenger (tekst)

  • String (en streng med tegn)
  • En sammensatt datatype
String text = "Can I haz cheezeburger?";

Uttrykk

Produserer verdier

Enkle uttrykk

  • Direkteverdier (5, 3.14, ‘c’, true, etc.)
  • Variabelreferanser (a, pi, c, awesome, etc.)
  • Funksjonskall (add(5, 3), mer om funksjoner senere)

Aritmetiske uttrykk

  • Pluss +, minus -, gange *, dele /
  • Brukt på heltall, får man heltall
  • Hvis ett tall er et flyttall, får man flyttall
  • Når man deler heltall, rundes svaret mot null (desimalene forsvinner)
5 + 3 // 8
5 - 3 // 2
pi * 2 // 6.28
11 / 5 // 2
11 / 5.0 // 2.2

Sammenlikningsuttrykk

  • To verdier kan sammenliknes
  • Mer enn >, mer enn eller lik >=, mindre enn <, mindre enn eller lik >=, lik ==, ulik !=
  • Produserer boolske verdier
3 > 3 // false
3 >= 3 // true
3 < 3 // false
3 <= 3 // true
3 == 3 // true
3 != 3 // false

Logiske uttrykk

  • Slår sammen boolske verdier
  • Og &&, eller ||, ikke ! (logisk negering)
true && true // Gir true
true && false // Gir false
true || false // Gir true
false || false // Gir false
!true // Gir false

Setninger

Instruksjoner for hva et program gjør.

Tilordning

  • Sette verdien til en variabel
  • Variabel til venstre, og et uttrykk til høyre for likhetstegn
a = 5 + 3;
a = a + 1;
pi = 3.14159;
awesome = !awesome;
c = 'C';

Funksjonskall

  • En setning som setter i gang en funksjon
  • Lar deg utføre sammensetninger av setninger
doLotsOfStuff();

Flytkontroll

Setninger som lar deg bestemme flyten i et program.

Dvs. du kan gjøre forskjellige ting avhengig av tilstanden.

Hvis x, så y

if lar deg utføre setninger basert på om et uttrykk er sant

if (age < 18) {
    println("No drinks for you!");
}

Hvis, ellers

else er en valgfri utvidelse hvis innhold utføres om uttrykket er usant

if (age < 18) {
    println("No drinks for you!");
} else {
    println("Old'd!");
}

Hvis, eller hvis, ellers

else if lar deg utføre andre setninger hvis uttrykket i if-testen var usant, men et annet uttrykk er sant

if (age < 18) {
    println("No drinks for you!");
} else if (age < 30) {
    println("Awesome!");
} else {
    println("Old'd!");
}

Løkker

  • Lar deg gjøre ting flere ganger
  • Finnes i forskjellige varianter, men vi ser på én: for each-løkken
  • for each-løkken lar deg gjøre noe med mange verdier av en type
  • Kan leses for hver x i liste
int sum = 0;
for (int x : listOfIntegers) {
    sum = sum + x;
}

Funksjoner

En samling setninger som kan utføres ved å kalle på funksjonen

Parametere

  • Funksjoner kan ta parametere
  • Verdiene til parameterne blir tilgjengelige som variabler i funksjonen
void printNumber(int number) {
    println("Got number: " + number);
}

Returverdier

  • Funksjoner kan returnere en verdi
  • Returtypen void betyr at funksjonen ikke retunerer en verdi
int add(int a, int b) {
    println("Adding " + a + " and " + b);

    return a + b;
}

Sammensatte datatyper

En sammensatt datatype kan bestå av flere verdier

Klasser

  • En klasse beskriver hvordan en datatype ser ut
  • Inneholder funksjoner for å jobbe med et objekt av klassen
  • Har en spesiell funksjon for å initialisere objekter (konstruktør)

Objekter

  • En verdi som har en klasse som type
  • this er navnet på objektet en metode ble kalt for,

    eller objektet som initialiseres i konstruktøren

Eksempel

class Circle {
    float radius;

    // Konstruktør
    Circle(float radius) {
        this.radius = radius;
    }

    // Metode som returnerer omkrets
    float circumference() {
        return 2 * radius * PI;
    }
}

Oppgaver

Tekst på skjermen

  • Lag tre variabler:
    • int a
    • float b
    • String c
  • Gi variablene verdier
  • Skriv verdiene av disse variablene på skjermen med text-funksjonen
  • Prøv å endre verdiene og skriv de samme variablene på to steder

Bevegende sirkel

  • Lag to variabler:
    • float x
    • float y
  • Gi dem en startverdi, for eksempel midten av skjermen
  • Tegn en sirkel med ellipse-funksjonen på posisjonen til sirkelen
  • For hver opptegning øker eller senker du x og y

Følg musepekeren

  • Ta utgangspunkt i den bevegende sirkelen
  • Istedenfor x og y, bruker du mouseX og mouseY

Nullstilling med musetrykk

  • Ta utgangspunkt i den bevegende sirkelen
  • Lag funksjonen mouseClicked og endre x og y til musens posisjon
  • La fortsatt x og y variere over tid
void mouseClicked() {
    // Endre posisjonen her
}

Flere sirkler

  • Ta utgangspunkt i Circles-prosjektet
  • Legg til en draw-funksjon i Circle-klassen som kan brukes til å tegne en sirkel
  • Legg til opptegning av alle sirklene i listen i draw-funksjonen til programmet (Hint: bruk en løkke)
  • Legg til flere sirkler når brukeren trykker med musa
  • Hvis du får tid, kan du:
    • Utvide funksjonaliteten til sirklene (bevegelse, størrelse og liknende)

Tegn med musa

  • Det finnes også en boolsk variabel som heter mousePressed
  • Den er sann om museknappen er holdt inne
  • Oppdater x og y til musens posisjon hvert bilde
  • Tegn en strek med funksjonen line fra forrige posisjon til musens posisjon, hvis museknappen er holdt inne
  • Hva skjer om du oppdaterer x og y før du tegner streken?
  • Hvis du får tid, kan du:
    • Gjøre det mulig å bytte farger