Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Määrittely, Tyyppi ja Palautus | Funktiot
C:n Perusteet

bookMäärittely, Tyyppi ja Palautus

Edellisestä oppitunnista opit funktioiden perusrakenteen:

main.c

main.c

copy
123456
func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }

Määrittely

Ennen funktion käyttämistä se täytyy määritellä. Funktion kutsuminen ennen sen määrittelyä aiheuttaa virheen.

Voit joko määritellä koko funktion samanaikaisesti sen toteutuksen kanssa (kuten yllä on esitetty) tai käyttää prototyyppiä, johon palaamme lyhyesti tämän osion lopussa.

Funktioiden tyypit ja paluuarvot

Funktion tyyppi ilmoittaa kääntäjälle funktion tuloksen tietotyypin. Esimerkiksi, jos funktio laskee kahden kokonaisluvun summan, odotetaan tulokseksi kokonaislukua.

main.c

main.c

copy
12345678
int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }

Tietotyypin ja paluuarvon tyypin yhteensopimattomuus voi aiheuttaa funktion (tai jopa koko ohjelman) virheellisen toiminnan.

main.c

main.c

copy
12345678
int sumFunction() { double number1 = 6.985; double number2 = 231.465; double result = number1 + number2; return result; // This will lead to an incorrect result }

Kun lasketaan ei-kokonaislukuja, odotetaan tarkkaa tulosta. Tyypin epäyhtenäisyyden vuoksi tulos on kuitenkin virheellinen.

main.c

main.c

copy
1234567891011121314151617
#include <stdio.h> int func() { double number1 = 6.985; // Not `int` nubmer double number2 = 231.765; // Not `int` number double result = number1 + number2; return result; // Output of function } int main() { // Call and immediately printing the result of our function printf("Expected Result is 238.75, but result is %d\n", func()); return 0; }

Kaksi pääasiallista tekijää aiheuttaa tämän virheen:

  • Väärä paluuarvon tyyppi (tulisi olla double);
  • Väärän muotoilumääreen (%d) käyttö printf()-funktiossa (tulisi olla %f).

Oikea versio olisi:

main.c

main.c

copy
1234567891011121314151617
#include <stdio.h> double func() { double number1 = 6.985; // `int` nubmer double number2 = 231.765; // `int` number double result = number1 + number2; return result; // Output of function } int main() { // Print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }

Tämä tarkoittaa, että funktion tulos voidaan suoraan sijoittaa muuttujille/taulukoihin tai jopa välittää muille funktioille. Esimerkkinä tästä on, kuinka käytimme tulosta printf-funktion kanssa yllä olevissa tilanteissa.

Note
Huomio

Muotoilumäärite liukuluvuille on %f.

On myös syytä mainita, että funktiossa voi olla useita return-lauseita, jotka aktivoituvat eri ehdoilla.

question mark

Olet määritellyt count-funktion, miten kutsut sitä main-funktiossa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you explain more about function prototypes?

What happens if I use the wrong return type in my function?

Can you give an example of a function with multiple return statements?

Awesome!

Completion rate improved to 2.63

bookMäärittely, Tyyppi ja Palautus

Pyyhkäise näyttääksesi valikon

Edellisestä oppitunnista opit funktioiden perusrakenteen:

main.c

main.c

copy
123456
func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }

Määrittely

Ennen funktion käyttämistä se täytyy määritellä. Funktion kutsuminen ennen sen määrittelyä aiheuttaa virheen.

Voit joko määritellä koko funktion samanaikaisesti sen toteutuksen kanssa (kuten yllä on esitetty) tai käyttää prototyyppiä, johon palaamme lyhyesti tämän osion lopussa.

Funktioiden tyypit ja paluuarvot

Funktion tyyppi ilmoittaa kääntäjälle funktion tuloksen tietotyypin. Esimerkiksi, jos funktio laskee kahden kokonaisluvun summan, odotetaan tulokseksi kokonaislukua.

main.c

main.c

copy
12345678
int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }

Tietotyypin ja paluuarvon tyypin yhteensopimattomuus voi aiheuttaa funktion (tai jopa koko ohjelman) virheellisen toiminnan.

main.c

main.c

copy
12345678
int sumFunction() { double number1 = 6.985; double number2 = 231.465; double result = number1 + number2; return result; // This will lead to an incorrect result }

Kun lasketaan ei-kokonaislukuja, odotetaan tarkkaa tulosta. Tyypin epäyhtenäisyyden vuoksi tulos on kuitenkin virheellinen.

main.c

main.c

copy
1234567891011121314151617
#include <stdio.h> int func() { double number1 = 6.985; // Not `int` nubmer double number2 = 231.765; // Not `int` number double result = number1 + number2; return result; // Output of function } int main() { // Call and immediately printing the result of our function printf("Expected Result is 238.75, but result is %d\n", func()); return 0; }

Kaksi pääasiallista tekijää aiheuttaa tämän virheen:

  • Väärä paluuarvon tyyppi (tulisi olla double);
  • Väärän muotoilumääreen (%d) käyttö printf()-funktiossa (tulisi olla %f).

Oikea versio olisi:

main.c

main.c

copy
1234567891011121314151617
#include <stdio.h> double func() { double number1 = 6.985; // `int` nubmer double number2 = 231.765; // `int` number double result = number1 + number2; return result; // Output of function } int main() { // Print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }

Tämä tarkoittaa, että funktion tulos voidaan suoraan sijoittaa muuttujille/taulukoihin tai jopa välittää muille funktioille. Esimerkkinä tästä on, kuinka käytimme tulosta printf-funktion kanssa yllä olevissa tilanteissa.

Note
Huomio

Muotoilumäärite liukuluvuille on %f.

On myös syytä mainita, että funktiossa voi olla useita return-lauseita, jotka aktivoituvat eri ehdoilla.

question mark

Olet määritellyt count-funktion, miten kutsut sitä main-funktiossa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 5. Luku 2
some-alt