Functions, parameters, and return values · Fonctions, paramètres et valeurs de retour
Why functions
- A function is a named piece of work. You write it once and call it whenever you need it.
- Functions keep programs short and clear, and let you build big jobs from small ones.
- You have already used
printf— a function from<stdio.h>. Now you write your own.
Pourquoi des fonctions
- Une fonction est une unité de travail nommée. Vous l'écrivez une fois et l'appelez chaque fois que vous en avez besoin.
- Les fonctions gardent les programmes courts et clairs, et permettent de construire de grandes tâches à partir de petites.
- Vous avez déjà utilisé
printf— une fonction de<stdio.h>. Maintenant, vous écrivez la vôtre.
Parameters and return values
- The values you pass in are the parameters. The value you hand back is the return value.
int max2(int a, int b)takes twointparameters and returns oneint.return x;ends the function right away and givesxback to the caller.
Paramètres et valeurs de retour
- Les valeurs que vous passez sont les paramètres. La valeur que vous renvoyez est la valeur de retour.
int max2(int a, int b)prend deuxintparamètres et retourne unint.return x;termine immédiatement la fonction et retournexà l'appelant.
void functions, and building big from small
- A function that returns nothing has the return type
void. It does work but hands back no value. - One function can call another.
max3can callmax2twice to do its job. - Small functions that each do one thing are easier to read and to fix.
Fonctions void, et construire du grand à partir du petit
- Une fonction qui ne retourne rien a le type de retour
void. Elle effectue du travail mais ne retourne aucune valeur. - Une fonction peut en appeler une autre.
max3peut appelermax2deux fois pour accomplir sa tâche. - Les petites fonctions qui font chacune une seule chose sont plus faciles à lire et à corriger.
C copies your arguments
- When you call a function, C gives it a copy of each argument.
- So changing a parameter inside the function does not change the caller's variable.
- Keep this in mind — in a later lesson, pointers let a function reach the original.
Le C copie vos arguments
- Lorsque vous appelez une fonction, le C lui donne une copie de chaque argument.
- Ainsi, modifier un paramètre à l'intérieur de la fonction ne modifie pas la variable de l'appelant.
- Gardez cela à l'esprit — dans une leçon ultérieure, les pointeurs permettent à une fonction d'accéder à l'original.
#include <stdio.h>
void try_double(int x) {
x = x * 2; // changes only the COPY
}
int main(void) {
int n = 5;
try_double(n);
printf("%d\n", n); // still 5 — the original did not change
return 0;
}
Common mistakes
- A function used before it is defined needs a prototype above
main. - Arguments pass by value — pass a pointer to change the caller's variable.
Erreurs courantes
- Une fonction utilisée avant d'être définie nécessite un prototype au-dessus de
main. - Les arguments sont passés par valeur — passez un pointeur pour modifier la variable de l'appelant.
Now you try
- Write each function with the exact name and parameters shown, and
returnthe right value. - You may call one of your functions from another.
- Do not write a
main— the checker provides one.
À vous maintenant
- Écrivez chaque fonction avec le nom exact et les paramètres indiqués, et
returnla bonne valeur. - Vous pouvez appeler l'une de vos fonctions depuis une autre.
- N'écrivez pas de
main— le vérificateur en fournit une.
Functions: call and return · Fonctions : appel et retour
A call pushes a frame with its parameters; return pops it. · Un appel empile une frame avec ses paramètres ; return la dépile.
Write int max2(int a, int b) returning the larger of two numbers, and int max3(int a, int b, int c) returning the largest of three. Make max3 call · appel max2. Do not · non write a main. · Écrivez int max2(int a, int b) retournant le plus grand de deux nombres, et int max3(int a, int b, int c) retournant le plus grand de trois. Faites que max3 appelle max2. Ne pas écrire de main.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete int power(int base, int exp) so it returns base raised to exp (assume exp >= 0). Use a loop. power(2, 10) is 1024. Do not · non write a main. · Complétez int power(int base, int exp) pour qu'il retourne base élevé à la puissance exp (supposez exp >= 0). Utilisez une boucle. power(2, 10) est 1024. Ne pas écrire de main.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Complete int clamp(int x, int lo, int hi) so it keeps x within [lo, hi]: return lo if · si x is below lo, hi if · si x is above hi, otherwise x. Do not · non write a main. · Complétez int clamp(int x, int lo, int hi) pour qu'il maintienne x dans [lo, hi] : retournez lo si x est sous lo, hi si x est au-dessus de hi, sinon x. Ne pas écrire de main.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.