NemProgrammering.dk logo

Funktioner i SWIFT

Lav din egen app kursus » Funktioner i SWIFT # 11

Information om denne video

Underviser: Jeppe Borggaard Jørgensen   Video: 17:54   Lektion nr. 11 af 21

Funktioner er måden hvorpå vi kan gruppere vores kode ét centralt sted, og så genbruge flere andre steder i vores kode. Det er med til at gøre vores kode mere overskuelig, læsevenlig, og fejlfri. Ved at centralisere bestemte områder af koden, sikrer vi også at isolere potentielle fejl til funktionen i stedet for flere steder i vores kode.

Læsevenligheden bliver væsentligt forbedret. Funktionerne er sjældent brugt som “udestående” funktioner som vi gør her, men de er vigtige før vi kan forstå det vi kalder OOP-programmering.

Øvelse 1

Lav en funktion, der finder det højeste tal i et array og returnerer tallet, så du kan udskrive det.
HINT -> Brug et Array som parameter.

Øvelse 2

Lav en funktion, der finder det højeste OG det laveste tal i et array.
Du skal have 2 funktioner, der hver identificerer det højeste og det laveste.
Funktionerne skal KUN have kendskab til hinanden.

De skal IKKE returnere noget, men blot udskrive værdien selv.

Løsningsforslag til øvelser

Øvelse 1

//: Playground - noun: a place where people can play
import Cocoa
func highestNumber(numbersArray: [Int]) -> Int {
 var highest = numbersArray[0];
  for number in numbersArray {
    if (number > highest) {
    highest = number;
   }
 }
return highest;
}
let numbers = [1, 10, -5, 5];
print(highestNumber(numbersArray: numbers));

Øvelse 2

//: Playground - noun: a place where people can play
import Cocoa
// Function that finds and prints highest and lowest number in array
func findHighestAndLowest(numbersArray: [Int]) {
  highestNumber(numbersArray: numbersArray);
  lowestNumber(numbersArray: numbersArray);
}
// Finds highest number in array
func highestNumber(numbersArray: [Int]) {
  var highest = numbersArray[0];
  for number in numbersArray {
   if (number > highest) {
   highest = number;
   }
 }
print("Højeste: \(highest)");
}
// Find lowest number
func lowestNumber(numbersArray: [Int]) {
  var lowest = numbersArray[0];
  for number in numbersArray {
    if (number < lowest) {
    lowest = number;
    }
  }
print("Laveste: \(lowest)");
}
let numbers = [1, 10, -5, 5];
findHighestAndLowest(numbersArray: numbers);

Spørgsmål og kommentarer

Det er ikke muligt at skrive kommentarer / stille spørgsmål til dette indhold

  • Kim U. siger:

    Hej.

    Jeg knokler med at forstå funktioner, men kan ikke se hvor fejlen er.
    Kan du hjælpe med at bryde min kode, ned og forklare delelementerne, så jeg forhåbentlig forstår konceptet :)

    func highNumber(high: Int) -> Int{
    var highest = high
    for number in numbers {
    if (number > highest){
    highest = number
    }
    }
    return highest
    }
    let numbers = [2, 3, 4, 5, 6]

    print(highNumber(high: numbers))

    1. Jeppe J. siger:

      Hej Kim,

      Jeg tror måske du er hoppet lidt for “hurtigt” frem i lektionerne, da dine problemer som sådan ikke omhandlede brugen af funktioner, men nogle andre emner som variabler, for-loops og typer.

      Jeg vil anbefale dig lige at tage et ekstra kig på Lektion 9 (for-loops) og video 2 (variabler) for lige at være helt sikker på du forstår de emner de gennemgår, så du kan få bygget et stærkt fundament :-)

      Jeg har her rettelser til din kode:
      func highNumber(high: Array) -> Int {
      var highest = 0

      for number in high {
      if (number > highest){
      highest = number
      }
      }
      return highest
      }

      let numbers = [2, 3, 4, 5, 6]

      print(highNumber(high: numbers))

      1. I din funktions parameter-felt skal du tage et array der indeholder Integers ind – som du har skrevet det, tager du bare en enkelt integer ind som parameter.

      2. Din linje var highest = high sætter faktisk bare en variabel “highest” til at være den værdi du giver med som parameter, også kaldet high. Jeg har sat den til 0, for det er netop dit start-scenarie, og du kan ikke sammenligne en integer med et array.

      3. du prøver at lave en for-loop på number in numbers? Hvor er numbers henne? Du har kaldt den “high” I din parameter-type.

      Ellers er resten korrekt formuleret :)

      Jeg håber det giver mening og kan hjælpe dig på vej.
      Held og lykke med resten af kurset.

  • Emil Pilgaard F. siger:

    Hej,
    Efter jeg har set videoen om funktioner 5 gange, er jeg stadig ikke helt med. Jeg kan sagtens se det smarte i funktionerne. Det giver god mening, at man laver nogle slags ‘kommandoer’, som man så kan bruge senere i sin kode. Der hvor det ikke giver mening for mig længere, er når vi snakker om returtyper og i det hele taget at skulle sende noget retur – jeg forstår det simpelthen ikke. Jeg kan ikke se forskellen på om man laver en funktion med void – altså uden returtype, eller om man laver en funktion med en returtype. I min opfattelse virker det unødvendigt at lave en returtype til en funktion, og jeg tænker at “func greet(person: String)” gør samme job som “func greet(person: String) -> String”

    Min tankegang må tilsynladende betyde, at der er noget jeg ikke helt har fanget. Hjælp mig gerne til at forstå formålet med en returtype, og hvorfor man ikke kan nøjes uden. :-)

    Mvh. Emil