Programmeren in Swift Playgrounds Typen en initialisatie

Programmeren in Swift Playgrounds


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

In deze les zitten 30 slides, met interactieve quiz, tekstslides en 2 videos.

time-iconLesduur is: 30 min

Onderdelen in deze les

Programmeren in Swift Playgrounds


Les 5: Typen en initialisatie

Slide 1 - Tekstslide

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

Slide 2 - Quizvraag

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

Slide 3 - Tekstslide

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 - Tekstslide

Slide 5 - Tekstslide

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 - Tekstslide

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 - Tekstslide

Slide 8 - Tekstslide

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 - Tekstslide

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 - Tekstslide

Slide 11 - Tekstslide

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

Slide 12 - Tekstslide

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 - Tekstslide

Slide 14 - Tekstslide

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 - Tekstslide

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 - Tekstslide

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 - Tekstslide

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 - Tekstslide

Slide 19 - Tekstslide

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 - Tekstslide

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 - Tekstslide

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 - Tekstslide

Welke commando's kunnen we geven?

Kunnen we functies gebruiken?

Kunnen we for-lussen gebruiken?

Slide 24 - Tekstslide

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 - Tekstslide

  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 - Tekstslide

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 - Tekstslide

  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 - Tekstslide

Slide 30 - Tekstslide