Programmeren in Swift Playgrounds Typen en initialisatie

Programmeren in Swift Playgrounds


Les 5: Typen en initialisatie
1 / 30
next
Slide 1: Slide
InformatiekundeMiddelbare schoolhavoLeerjaar 1

This lesson contains 30 slides, with interactive quiz, text slides and 2 videos.

time-iconLesson duration is: 30 min

Items in this lesson

Programmeren in Swift Playgrounds


Les 5: Typen en initialisatie

Slide 1 - Slide

In welk hoofdstuk ben je nu?
A
Commando's / Functies
B
For-lussen
C
Spiralen
D
Voorwaardelijke code

Slide 2 - Quiz

Levels Voorwaardelijke code
We kijken terug naar de puzzels uit het hoofdstuk Voorwaardelijke code en je krijgt de oplossingen van deze puzzels

Slide 3 - Slide

Controleren op schakelaars
Doel: Een if-instructie gebruiken om alleen gedeactiveerde schakelaars om te zetten. 
Je ziet 3 schakelaars op het pad en de schakelaar kan uit of aan staan. Je moet een if-instructie gebruiken om elke schakelaar te controleren voordat je deze omzet.
Gebruik hierbij isOnClosedSwitch als voorwaarde in de if-instructie die in het voorbeeld wordt omschreven.

Slide 4 - Slide

Slide 5 - Slide

Oplossing 1
moveForward()
moveForward()
if isOnClosedSwitch {
    toggleSwitch()
}
moveForward()
if isOnClosedSwitch {
    toggleSwitch()
}
moveForward()
if isOnClosedSwitch {
    toggleSwitch()
}
Oplossing 2
moveForward()
for i in  1 ... 3 {
    moveForward()
    if isOnClosedSwitch {
        toggleSwitch()
        }
}

Slide 6 - Slide

Gebruik van else if
Doel: if en else if gebruiken om een schakelaar om te zetten of een edelsteen te verzamelen.
Schakelaars en edelstenen verschijnen op willekeurige plekken.
Om te bepalen of je een schakelaar moet aanzetten of een edelsteen moet pakken, gebruik je een if-instructie om 1 mogelijke voorwaarde te controleren en een else if-blok om de andere voorwaarde te controleren.

Gebruik in je code het gegeven voorbeeld.

Slide 7 - Slide

Slide 8 - Slide

Oplossing 1
moveForward()
if isOnClosedSwitch {
    toggleSwitch()
} else if isOnGem {
   collectGem()
}
moveForward()
if isOnClosedSwitch {
    toggleSwitch()
} else if isOnGem {
   collectGem()
}
Oplossing 2
for i in  1 ... 2 {
    moveForward()
    if isOnClosedSwitch {
        toggleSwitch()
     } else if isOnGem {
        collectGem()
     }
}

Slide 9 - Slide

Voorwaardelijke code herhalen
Doel: Een if-instructie binnen een lus gebruiken om een schakelaar om te zetten of een edelsteen te verzamelen.
De puzzel telt 12 tegels die een edelsteen, een schakelaar of een portaal bevatten.
In plaats van de code uit te schrijven, kun je gebruik maken van een lus.
Volg de gegeven stappen hierbij.

Slide 10 - Slide

Slide 11 - Slide

Oplossing
for i in 1 ... 12
  moveForward()
if isOnClosedSwitch {
    toggleSwitch()
} else if isOnGem {
   collectGem()
}

Slide 12 - Slide

Slimmere functies definiëren
Doel: Een functie, een lus en een voorwaarde gebruiken om edelstenen te verzamelen of schakelaars te activeren.
Deel de puzzel op in basispatronen. Er zijn 3 hoofdpaden, elk met 2 mogelijke tegels voor een edelsteen of een schakelaar.
Volg de gegeven stappen.

Slide 13 - Slide

Slide 14 - Slide

Oplossing

func collectOrToggle() {
  moveForward()
  moveForward()
  if isOnGem {
       collectGem()
  } else if isOnClosedSwitch {
       toggleSwitch()
  }
}


collectOrToggle()
collectOrToggle()
turnLeft()
moveForward()
moveForward()
turnLeft()
collectOrToggle()
collectOrToggle()
turnRight()
moveForward()
turnRight()
collectOrToggle()
collectOrToggle()

Slide 15 - Slide

Hoofdstuk 5 Typen en initialisatie
Hoe weet je dat een kat geen hond is? Ze hebben veel dingen gemeen: Ze hebben een vacht en 4 poten, en ze worden vaak als huisdier gehouden. Maar toch kun je ze uit elkaar houden, omdat sommige kenmerken verschillend zijn. Ze maken bijvoorbeeld verschillend geluid.
als je een artikel kiest uit een verkoopautomaat, verwacht je dat er een voorwerp met specifiek eigenschappen uitkomt. Iedereen die dat artikel kiest, heeft dezelfde verwachtingen.

Slide 16 - Slide

Lesdoelen Typen en initialisatie

  • Je kunt beschrijven wat typen en  initialisatie zijn.
  • Je kunt laten zien hoe typen en initialisatie in een alledaagse situatie worden gebruikt.
  • Je kunt programmeren met typen en initialisatie.
  • Belangrijkste termen: Booleaanse waarde, puntnotatie, initialisatie, instantie, integer, methode, eigenschap, type.

Slide 17 - Slide

Hoofdstuk 5 Typen en Initialisatie
Kenmerken die in code uniek zijn, noemen we eigenschappen. En een type is een groep dingen die een specifieke eigenschap gemeen hebben. Je kunt typen zien als voorwerpen die je kunt beschrijven en gebruiken. Typen kunnen beschrijvende eigenschappen hebben. Bijvoorbeeld 'aan', 'uit', 'open' of 'dicht'. Typen kunnen ook methode-eigenschappen hebben. Dit zijn gedragingen die specifiek zijn voor een bepaalde groep. Zo kan een methode-eigenschap van een kat 'climbTree' zijn, en voor een hond 'buryBone'. 
Voor deze les gebruiken we weer Leren programmeren 2.

Slide 18 - Slide

Slide 19 - Slide

Slide 20 - Video

Definities
Type: Een "voorwerp" met eigenschappen. Er kunnen er meerdere van bestaan. Dit noem je een instantie of exemplaar. Een type moet je definiëren. (bijvoorbeeld: choco-reep)

Instantie: Een specifiek type. (een mars)

Initialisatie: Het gebruik van een specifiek type in de code.

Slide 21 - Slide

Definities
Syntaxis: Regels voor het schrijven van code die een computer begrijpt. Heel simpel: Hoe je code hoort te schrijven. Bijvoorbeeld camelCase.

Puntnotatie: Een soort syntaxis die wordt gebruikt om de eigenschappen te benaderen of de methoden aan te roepen van een instantie. Bijvoorbeeld: greenPortal.isActive.

Slide 22 - Slide

Een portaal deactiveren
Doel: het portaal deactiveren om de schakelaars te bereiken. 
Om het portaal te deactiveren gebruik je puntnotatie om de waarde van de eigenschap isActive van een specifieke instantie van een portaal te wijzigen.

greenPortal.isActive = true > Hoe kunnen we deze aanpassen?

Slide 23 - Slide

Welke commando's kunnen we geven?

Kunnen we functies gebruiken?

Kunnen we for-lussen gebruiken?

Slide 24 - Slide

Slide 25 - Video

Je expert initialiseren
Doel: Een instantie van het type Expert initialiseren en het raadsel oplossen met de methode turnLockup().
Deze puzzel bevat een nieuw element: Een slot. Om het raadsel op te lossen, moet het slot omdraaien, waardoor er een platform wordt verhoogd vlak voor een onbereikbare edelsteen.
Byte, die we tot nu toe commando's hebben laten uitvoeren, had bepaalde vaardigheden zoals moveForward(), collectGem() en toggleSwitch(). Maar Byte kan geen sloten omdraaien. Hiervoor is een ander figuurtje nodig, een expert. En hij heet: Expert! Omdat hij niet verandert, declareer (een stukje code om iets nieuws te introduceren) je deze met behulp van een constante (het kan niet veranderen). Vervolgens initialiseer je het figuurtje door er het type Expert aan toe te wijzen.
Dit doe je als volgt: let expert = Expert()

Slide 26 - Slide

  1. Initialiseer je expert.
  2. Geef commando's met de puntnotatie: expert.moveForward()
  3. Gebruik de methode turnLockUp() bij het slot om het pad tussen de platforms te onthullen.
  1. Welke commando's kunnen we geven?
  2. Kunnen we functies gebruiken?
  3. Kunnen we for-lussen gebruiken?

Slide 27 - Slide

Instantietypen gebruiken
Doel: Eén instantie van het type Expert initialiseren en één van het type Character.
Wanneer je programmeert, is het gebruikelijk om meerdere instanties en elementen te laten samenwerken om een groter probleem op te lossen. Als je bijvoorbeeld een fotobewerkinsapp maakt, werk je met een camera om beelden vast te leggen en met een filterbibliotheek om interessante effecten toe te passen.
In deze puzzel moet je de mogelijkheid van je expert om sloten om te draaien gebruiken om je figuurtje via het portaal naar een platform op afstand te helpen.
Volg de gegeven stappen.
Maak gebruik van de puntnotatie.

Slide 28 - Slide

  1. Initialiseer je expert en je character
  2. Geef commando's met de puntnotatie: expert.moveForward()
  3. Geef je expert de opdracht om het slot om te draaien. Let op; de ene keer gebruik je turnLockUp, de andere keer turnLockDown.

Slide 29 - Slide

Slide 30 - Slide