Vous êtes sur la page 1sur 84

ENSEIGNER LE

CODE

2ème Session

Formati on en Algorithme,
Programmati on C et Scratch

3 – 7 Mai 2021
Happy Coders
ENSEIGNER LE
CODE

Formati on en Algorithme,
Programmati on C et Scratch

3 – 7 Mai 2021
Happy Coders
Academy
Présentation du plan de la session
3
La formation sera travaillée sur 5 semaines selon 3 types d’activités:
 La formation code

 La formation créative

 La formation pédagogie
Généralités sur langage C :
Par structure, on entend que tout programme ne peut être écrit que dans cette structure.
L'écriture d'un programme C dans n'importe quelle autre structure conduira donc à une
erreur de compilation.

La structure d'un programme C est la suivante :


1. Inclusion de fichiers d'en-tête
2. Déclaration de la méthode principale
3. Déclaration de variables
4. Corps
5. Type de retour
Introduction & généralités :
1.Environnement de développement :

On va utiliser durant cette formation le logiciel Code::Blocks, pour installer merci de


télécharger

Lien de téléchargement :
https://dw.uptodown.com/dwn/w76tVn7onjw1uZFTLSx7oITIvPZjunF1Rt-
CzyZHrNClBA8b7HGl5D5PpOCED30epYeOF0P6EHNSakgSrau2EieyGamb2ryiCc51lEbSZUpl
fvCONufLIt2ECT8iy-sw/kKreF6YzAafQyObm4Lf3BGVvAJ6hxnV20cQLFBSjMix7WV--
Sg8yms4gOK1pLcb6_3quvQ7qgBICXY941G9tvaTaAuC5mzUwcjovIFhbPfd77kYwQB9iWnc
la6riLS6-/UgWFyxWbsgagrZUAnvsdaSIlA_Ysn1pIi07L7bOTEU8UzsvJbW3rSsK45aBlMdHw
66-UyERw-9hU8RrJ6hL-Eg==/
Introduction & généralités :
1.Inclusion de fichiers d'en-tête “Bibliothèques” :

Le premier et le plus important composant est l'inclusion des fichiers d'en-tête dans un
programme C.

Un fichier d'en-tête est un fichier


d'extension .h qui contient des déclarations de
fonction C et des définitions de macro à
partager entre plusieurs fichiers source.
Quelques fichiers d'en-tête C:

Syntaxe pour inclure un fichier d'en-tête


dans C :
Introduction & généralités :
2. Déclaration de la méthode principale

3. Déclaration de variables
Introduction & généralités :
4.Corps

5.Type de retour
Partie 2 :

• Types de données
• Variables et constantes littérales
• Opérateurs
• Conditions et boucles
• Exercices et Challenges
Types de données
•char: Le type de données le plus fondamental en C. Il stocke un seul caractère et
nécessite un seul octet de mémoire dans presque tous les compilateurs.

•int: une variable int est utilisée pour stocker un entier.

•float: Il est utilisé pour stocker des nombres décimaux (nombres avec une valeur à
virgule flottante) avec une simple précision.

•double : Il est utilisé pour stocker des nombres décimaux (nombres avec une valeur à
virgule flottante) avec une double précision.
Types de données
Types de données
Variables et constantes littérales

Une variable en termes simples est un lieu de stockage auquel de la mémoire est
allouée. Fondamentalement, une variable utilisée pour stocker une forme de données.
Différents types de variables nécessitent différentes quantités de mémoire et disposent d'un
ensemble d'opérations spécifique qui peut leur être appliqué.

 Déclaration • Exemple :
Variables et constantes littérales
 Constante

Si vous voulez définir une variable dont la valeur ne peut pas être changée, vous pouvez utiliser
le mot-clé const. Cela va créer une constante.

• Exemple1
Ici, PI est une constante; sa valeur ne peut être changée

• Exemple2
Vous pouvez également définir une constante en utilisant
#define
Variables et constantes littérales
 Variables locales

Les variables déclarées à l'intérieur d'une fonction ou d'un bloc sont appelées variables locales.
Ils ne peuvent être utilisés que par des instructions contenues dans cette fonction ou ce bloc de code.
Les variables locales ne sont pas connues pour les fonctions en dehors de leurs portées.
• Exemple :
Variables et constantes littérales
 Variables globales • Exemple
Les variables globales sont
définies en dehors d'une fonction,
généralement en haut du programme.
Les variables globales conservent
leurs valeurs tout au long de la vie de
votre programme et sont accessibles
dans n'importe quelle fonction définie
dans le programme.
Variables et constantes littérales
Lorsqu'une variable locale est définie, elle n'est pas initialisée par le système, vous devez
l'initialiser vous-même. Les variables globales sont automatiquement initialisées par le système
lorsque vous les définissez comme suit :

C'est une bonne pratique de programmation d'initialiser les variables correctement. Dans le cas contraire, votre programme
pourrait produire des résultats inattendus, car les variables non initialisées prendront une valeur inattendue(garbage value)
déjà disponible à leur emplacement mémoire.
Opérateurs

•Opérateurs arithmétiques (+, -, *, /,%, post-incrémentation, pré-incrémentation, post-


décrémentation, pré-décrémentation)

• Opérateurs relationnels (==,! =,>, < ,> = & <=)

• Opérateurs logiques (&&, || et !)

• Opérateurs binaires (&, |, ^, ~, >> et <<)

• Opérateurs d'affectation (=, +=, -=, *=, etc)

• Autres opérateurs (conditionnel, virgule, sizeof, address, redirection)


Opérateurs
1. Opérateurs arithmétiques
Opérateurs
2. Opérateurs relationnels et logiques
Opérateurs
3. Opérateurs binaires

4. Opérateurs divers
PRINTF
SCANF
Opérateurs
• Exemples
Opérateurs
• Exemples
Conditions et boucles
1. Structure conditionnelle if • Exemple:

L'instruction if évalue la condition à l'intérieur


de la parenthèse():
• Si la condition est évaluée à true, les instructions
à l'intérieur du corps de if sont exécutées.
• Si la condition est évaluée à false, les
déclarations à l'intérieur du corps de if ne sont
pas exécutées.
Conditions et boucles
2. Structure conditionnelle if-else

Si la condition est évaluée à true:


 les instructions à l'intérieur du corps
• Exemple
de if sont exécutées.
 les instructions à l'intérieur du corps
de else sont exclues de l'exécution.
 Si la condition est évaluée à false:
 les instructions à l'intérieur du corps
de else sont exécutées.
 les instructions à l'intérieur du corps
de if sont exclues de l'exécution.
Conditions et boucles
3. Structure conditionnelle if - else if - else
Conditions et boucles
3. Structure conditionnelle if - else if - else
• Exemple
L'instruction switch est une
instruction multidirectionnelle
utilisée pour gérer les décisions. Cela
fonctionne presque exactement
comme la déclaration if-else. La
différence est que l’instruction switch
génère un code plus lisible par
rapport à l'instruction if-else. De plus,
elle s'exécute parfois plus rapidement
que son homologue if-else.
Conditions et boucles
Exercice : Calculatrice simple
Conditions et boucles
4. Boucles

En programmation, une boucle est une séquence d'instructions qui est répétée jusqu'à ce
qu'une certaine condition soit atteinte. Il existe principalement deux types de boucles:

 Boucles à entrée contrôlée: dans ce type de boucles, la condition est testée avant d'entrer
dans le corps de la boucle. boucle for et boucle while sont des boucles d'entrée contrôlées.

 Boucles à sortie contrôlée: dans ce type de boucles, la condition est testée ou évaluée à
l'extrémité du corps de la boucle. Par conséquent, le corps de boucle s'exécutera au moins
une fois, que la condition soit true ou false. do-while est une boucle de sortie contrôlé.
Conditions et boucles
5. Boucle for

Une boucle for est une structure de contrôle répétitive qui nous permet d'écrire une boucle
exécutée un nombre de fois spécifique. La boucle nous permet de réaliser n nombre d’étapes sur une
seule ligne.

• Syntaxe • Exemple
Conditions et boucles
6. Boucle While

Les boucles while sont utilisées dans des situations où nous ne connaissons pas le nombre exact
d'itérations de boucle auparavant. L'exécution de la boucle est terminée sur la base d'une condition.

• Syntaxe • Exemple
Conditions et boucles
7. Boucle do-While

Dans les boucles do while, l'exécution de la boucle est également terminée sur la base d'une
condition de test. La différence principale entre la boucle do while et la boucle while est dans la
boucle do while, la condition est testée à la fin du corps de la boucle.

• Syntaxe • Exemple
Conditions et boucles
8. Boucle infinie

la boucle infinie est un morceau de codage qui n'a pas de sortie fonctionnelle de sorte qu'il se
répète indéfiniment. Une boucle infinie se produit quand une condition évalue toujours à true.

• Syntaxe
Conditions et boucles
9. Instruction break

Lorsqu'une instruction break est rencontrée dans la boucle, le contrôle du programme quitte
immédiatement la boucle et reprend l'exécution avec l'instruction suivant la boucle.

L'instruction break est presque toujours utilisée avec l'instruction if ... else à l'intérieur de la
boucle
• Exemple
Conditions et boucles
10. Instruction continue

Lorsque l'instruction continue est rencontré dans une boucle, toutes les déclarations après
l'instruction continue sont omis et la boucle continue avec la prochaine itération.
• Exemple
Challenges
Conditions
EXERCICES
Exercice 1:
Ecrire un programme C qui permet de dire si un entier est pair ou impair.

Exercice 2:
Ecrire un programme C qui lit un caractère et détermine s'il fait partie des alphabets ou non. Et s'il l'est, dire
en plus s’il est une minuscule ou une majuscule.

Exercice 3:
Ecrire un programme C qui lit un entier et dit s'il est un carré parfait ou non.
On rappelle qu'un entier est carré parfait, si sa racine carrée est entière. Ex: les nombre 1 (1x1), 4 (2x2)
et 9 (3x3) sont tous des carrés parfaits.
Boucles
EXERCICES
Exercice 1:
Ecrire un programme C qui lit un entier et l'affiche inversé. On choisira de ne pas afficher chiffre par chiffre
mais de construire l'entier inversé puis l'afficher.
Ex: si l'entrée est 12345 on doit afficher l'entier 54321.

Exercice 2:
Ecrire un programme C qui lit une série d'entiers positifs inférieurs à 100 terminée par 0. Et qui doit négliger
toute entrée strictement supérieure à 100. Puis calcule et affiche la somme et le max des éléments de cette
série.

Exercice 3:
Ecrire un programme C qui lit un entier puis détermine s'il est premier ou non.
On rappelle qu'un entier est dit premier s'il a exactement deux diviseurs différents; 1 et lui-même.
Ex: 2, 3, 7, 17, 101 sont tous premiers, et 4, 10, 27 ne le sont pas.
Partie 3 :

• Tableaux
1.Définition
2.Mémoire
3.Manipulations
4.Chaînes de caractères
5.Tableaux multidimensionnels
• Exercices et Challenges
Tableaux
1. Définition :
Type complexe homogène :
Type de données décrivant une information composite, constituée de plusieurs valeurs qui sont toutes elles-
mêmes du même type.
Élément d’un tableau :
Il désigne l’une des valeurs contenues dans le tableau.
Taille d’un tableau :
C’est le nombre d’éléments que le tableau peut contenir au plus.
Exemple :
Définition d’un tableau de 10 entiers appelé tab
short tab[10];

Comme on le voit ci-dessus, il y a 3 éléments dans la déclaration d’un tableau :


 D’abord le type de ses éléments (ici : short) ;
 Ensuite l’identificateur désignant le tableau (ici : tab) ;
 Et enfin, la taille du tableau, toujours entre crochets [] (ici : 10).
Tableaux
2. Mémoire :
Un tableau est représenté en mémoire de façon contigüe, c'est-à-dire que le premier élément est suivi du
second, qui est directement suivi du troisième, etc.

Représentation contigüe : tous les éléments constituant le tableau sont placés en mémoire les uns après
les autres.

L’exemple suivant représente le tableau


déclaré précédemment, qui contient 10
entiers de type short. Remarquez
comme ces entiers sont placés les uns
après les autres dans la mémoire
(chacun d’eux occupant 2 octets Pour un type de données occupant 𝑠 octets en mémoire, un tableau de
consécutifs). taille 𝑛 occupera 𝑛×𝑠 octets en mémoire
Donc, pour un tableau de type xxxx[] dont le premier élément est situé à l’adresse 𝑎, l’élément xxxx[k] aura
pour adresse l’octet 𝑎+sizeof xxxx ×𝑘.
Tableaux
3. Manipulation :
Index d’un élément :
Numéro de l’élément dans la séquence constituant le tableau.
Attention …!
Il s’agit bien de la position de l’élément dans le tableau, et non pas de son adresse dans la mémoire. Dans
l’exemple précédent, on a donné la formule pour calculer l’adresse d’un élément, qui était 𝑎+sizeof xxxx ×𝑘.
Ici, l’index de cet élément correspond à la valeur 𝑘.

Exemple :
accès au 4ème élément du tableau tab
tab[3]

On veut stocker la valeur 52 dans le 4ème élément du tableau :


tab[3] = 52;

On veut afficher la valeur du 4ème élément du tableau :


printf("%d",tab[3]);
Tableaux
3. Manipulation :
Il n’est pas possible de modifier un tableau de manière globale, i.e. tous les éléments à la fois : il faut
procéder élément par élément. Par exemple, même si on veut affecter la valeur 0 à tous les éléments d’un
tableau, il faut le faire un élément à la fois.

Exemple :
On veut remplir notre tableau tab avec les 10 premiers nombres pairs :
tab[0]=0; tab[5]=10;
tab[1]=2; tab[6]=12;
tab[2]=4; tab[7]=14;
tab[3]=6; tab[8]=16;
tab[4]=8; tab[9]=18;

Challenge 1 :
Trouver deux autres façons de remplir le tableau avec les 10 premiers nombres pairs.
Tableaux
3. Manipulation :
Solutions Challenge 1:
1ère méthode : Création directe.

Dans ce cas-là, il n’est pas nécessaire d’indiquer la taille du tableau entre crochets, car elle est spécifiée par le
nombre d’éléments présents entre les accolades.

2ème méthode : A l’aide d’une boucle


Initialisation du tab comme dans l’exemple précédent, mais en utilisant une boucle :
Tableaux
4. Chaînes de caractères :
En langage C, les tableaux sont utilisés pour représenter les chaînes de caractères :

Chaîne de caractères :
C’est une séquence de caractères formant du texte.
Une chaîne peut contenir aussi bien des caractères imprimables que non-imprimables.
Une chaîne définie sous la forme d’une constante littérale est notée à l’aide des guillemets (").
exemple : une chaîne de caractère composée des 5 premières lettres de l’alphabet sera notée "abcde"

Les tableaux utilisés en C pour représenter des chaînes sont toujours de type char. Donc, formellement, le
type d’une chaîne de caractère est noté char[]. De plus, un caractère spécial est utilisé pour indiquer la fin
de la chaîne :

Caractère de fin de chaîne :


Noté '\0', ce caractère non-imprimable indique que la chaîne se termine au caractère précédent.
Tableaux
4. Chaînes de caractères :
c h a i n e s \n c h a i n e \n

Les chaînes de caractères ‘chaines’ et ‘chaine’ dans un tableau de taille 8


Remarque…!
Pour être valide, une chaîne doit forcément se terminer par un '\0'. Si ce caractère de fin de chaîne manque, il
est très probable qu’une erreur d’exécution se produise
L’initialisation d’une chaîne de caractère à la déclaration peut être effectuée en utilisant la syntaxe suivante
classique des tableaux :

char s[] = {'c', 'h', 'a', 'i', 'n', 'e', '\0'}";

Il existe également une méthode spécifique aux chaînes de caractères, utilisant la notation des guillemets :

char s[] = "chaine";


Tableaux
5. Tableaux multidimensionnels :

Un tableau C est une séquence d’éléments d’un certain type. Et ce type peut être simple (par exemple un
tableau d’entiers de type int), mais aussi complexe.
Un tableau est un type complexe. Il est donc bien possible de déclarer des tableaux de tableaux, ce qui permet
de manipuler des tableaux multidimensionnels.

int m[N][P];

4 et 𝑃= ...?
𝑁= ...? 3
Tableaux
L’accès à un élément est effectué comme pour un tableau unidimensionnel, à l’exception du fait qu’il faut
préciser un index pour chacune des dimensions.

m[2][1];

Comme pour les tableaux unidimensionnels, on peut réaliser une initialisation lors de la déclaration.

int matrice[][P]={{1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}};

Ici, on n’a pas précisé la première dimension, car c’est optionnel. Par contre, on a forcément besoin de la
seconde pour pouvoir déterminer l’adresse d’un élément du tableau.
Challenges
Tableaux
EXERCICES
Exercice 1:
Ecrire un programme C qui lit un entier n, puis n autres entiers positifs dans un tableau, l'affiche puis calcul la
somme, le max, et le min de ses éléments.
Exercice 2:
Ecrire un programme C qui lit un entier n, puis n autres éléments dans un tableau. Et, affiche ce dernier avant
et après la suppression de toutes les occurrences d'un nombre entré par l'utilisateur.
Exercice 3:
Ecrire un programme C qui lit un entier n. Puis n autres entiers inférieurs à 100, dans un tableau. Et affiche le
nombre d'occurrences de chaque élément du tableau de la façon suivante:
Si le tableau est: 1 2 5 2 1 2, on affiche:
• 1 est répété 2 fois.
• 2 est répété 3 fois.
• 5 est répété 1 fois.
Pas nécessairement dans un ordre précis, mais chaque élément ne doit être cité qu’une seule fois.
Tableaux
EXERCICES
Exercice 4:
Ecrire un programme C qui construit la table de multiplication des entiers entre 1 et 9 puis l'affiche.
Exercice 5:
Ecrire un programme C qui lit un entier n inférieur à 10, et une matrice (tableau à deux dimensions)
carrée nxn. Puis l'affiche et vérifie si tous les entiers entre 1 et n2 y sont présents ou non.
Ex: la matrice 3x3 suivante vérifie cette contrainte.
253
196
748
Exercice 6:
Ecrire un programme C qui lit un tableau de taille nxm, et cherche tous les points-col qui s'y trouvent.
Un point-col est un élément qui est max sa ligne et min sur sa colonne.
Tableaux
1 0 0 0 0 0 1 0
EXERCICES 0 1 0 0 0 1 0 0
0 0 1 0 1 0 0 0
Exercice 7:
0 0 0 1 0 0 0 0
Ecrire un programme C qui lit une position (i,j) d'un tableau 8x8, rempli par 0 0 1 0 1 0 0 0
des zéros. Et marque toutes les cases des deux diagonales qui passent par
0 1 0 0 0 1 0 0
cette position en y mettant des uns. 
1 0 0 0 0 0 1 0
Ex: la position choisie (3,3) en rouge, le résultat attendu :
0 0 0 0 0 0 0 1

Exercice 8:
Ecrire un programme C qui lit un tableau nxn, et vérifie s'il est magique ou
non. Un tableau est dit magique, si la somme des éléments de chaque ligne,
4 9 2
de chaque colonne et de chaque une des deux diagonales est la même.
En plus il doit contenir tous les entiers entre 1 et n2. 3 5 7
L'exemple suivant montre un carré magique de dimension 3x3 : 8 1 6
Tableaux
EXERCICES
Exercice 9:
Ecrire un programme C qui lit les dimensions n et m d'un tableau à deux dimensions, le remplit d'une manière
spirale en utilisant les entiers de l'intervalle 1 à n*m comme indiqué sur le tableau ci-dessous:

1 2 3 4 5 6

16 17 18 19 20 7

15 24 23 22 21 8

14 13 12 11 10 9
Correction
Challenges
Partie 4 :

• Fonctions
1.Création
2.Appel
3.Paramètres
4.Résultats
5.Emplacement
• Exercices et Challenges
Fonctions
La fonction permet de décomposer un programme complexe en plusieurs parties plus simples et
relativement indépendantes.
La notion de fonction apparait dans deux contextes différents : d’abord lorsqu’on crée une fonction, puis
lorsqu’on utilise une fonction déjà créée.

1. Création
La fonction correspond à un bloc de code source portant un nom, et se compose des parties suivantes :
• Un en-tête qui comprend :
o Le type de retour ;
o L’identificateur ;
o Les paramètres.

type nom_fonction(type paramètre1, type2 paramètre2...)

• Le corps, qui décrit le traitement effectué par la fonction, et qui est constitué d’un bloc de code source.
Fonctions
Dans le corps, l’instruction return permet de renvoyer la valeur d’une expression en tant que résultat de la
fonction :

return expression;
Cette valeur doit posséder le type qui est précisé dans l’en-tête.

exemples :
• Une fonction qui affiche bonjour et passe à la ligne :

void bonjour(void)
{ printf("bonjour\n");
}

Remarquez que cette fonction n’a pas de paramètre et ne retourne aucune valeur au reste du programme.
Fonctions
Fonctions
Fonctions
Fonctions
exemples :
• Une fonction qui affiche n étoiles * et passe à la ligne :
void etoiles (int n)
{ int i;
for (i=1;i<=n;i++)
printf("*\t");
printf("\n");
}

Cette fonction a un seul paramètre (l’entier n) et ne retourne rien.

• Une fonction implémentant une application linéaire (au sens mathématique) :


} float f(float x)
{ int y = 3 * x + 1;
return y;
}

Cette fonction reçoit en paramètre un réel 𝑥 et retourne le réel 3𝑥+1.


Fonctions
2. Appel
Pour utiliser une fonction, on doit effectuer un appel en lui passant des expressions correspondant aux
paramètres dont elle a besoin. La syntaxe est la suivante :
nom_fonction(p1,p2,...);

exemples :
bonjour(); etoiles(7);

Fonctions appelée : la fonction qui est explicitement nommée dans l’appel, et que l’on veut exécuter.
Fonction appelante : la fonction qui effectue l’appel, i.e. la fonction contenant l’instruction d’appel.
int main(int argc, char** argv)
{ int z;
z = f2(23);
...
}
Fonctions
3. Paramètres
On distingue deux sortes de paramètres, en fonction de leur emplacement dans le code source :

Paramètre formel (réel) :


variable déclarée dans l’en-tête de la fonction
il s’agit de variables. Ces paramètres-là sont caractérisés par un type attendu. Ce sont des variables
locales à la fonction. Autrement dit :
1) Elles ne sont accessibles que dans le bloc de la fonction, et pas à l’extérieur ;
2) L’espace mémoire qui leur est alloué est réservé au début de l’exécution de la fonction, et libéré à la
fin de son exécution.

Paramètre effectif :
expression passée à la fonction lors d’un appel.
Il s’agit d’expressions. Autrement dit, lors d’un appel de fonction, on n’a pas forcément besoin de
passer des variables en tant que paramètres. En effet, une variable est une expression, mais une expression
n’est pas forcément une variable.
Fonctions
3. Paramètres
1. Passage par valeur :
int somme (int a, int b)
{ int s;
s = a + b;
return (s);
}
Void main ()
{
scnaf("%d",&K);
scnaf("%d",&L);
int M;
M = somme(K,L);
printf("La somme est: %d",M);
}

Cette méthode de renvoyer un résultat est d’utiliser return. Or, return ne peut renvoyer qu’une seule
valeur. Donc, avec cette méthode, on ne peut renvoyer qu’une seule valeur à la fois.Ceci peut être considéré
comme une limitation forte
Fonctions
3. Paramètres
2. Passage par adresse :

void carre(int n, int* res)


{
*res = n * n;
}

int main(int argc, char** argv)


{ int x = 4;
int r;
carre(x,&r);
}

Lorsqu’on appelle carre, le paramètre formel n est une copie de x, tandis que le paramètre res est une
copie de l’adresse de r. Lorsqu’on modifie *res dans carre, on modifie en réalité r dans main. Puis la fonction
carre se termine, les variables n et res sont désallouées, mais la valeur 16 qui a été stockée dans r n’est pas
affectée.
Fonctions
4. Résultat
Si la fonction renvoie une valeur, c’est-à-dire si son type de retour n’est pas void, alors cela signifie
qu’elle a été conçue pour calculer un résultat et le rendre accessible à la fonction qui a réalisé l’appel.
La plupart du temps, cela veut dire que la fonction appelante veut utiliser ce résultat. Il faut donc en tenir
compte lors de l’appel.

exemples :
int double(int a)
{ int resultat = a * 2;
return resultat;
}

Supposons qu’on veut utiliser cette fonction dans la fonction main, par exemple pour doubler la valeur 14
et afficher le résultat. Alors on ne peut pas effectuer l’appel suivant :
int main(int argc, char** argv)
{ printf("Le résultat est : %d\n",double(14));
}
Fonctions
4. Résultat
Supposons qu’on veuille afficher une fois le résultat, puis une fois le résultat plus 1 :
int main(int argc, char** argv) Problème !
{ printf("Le résultat est : %d\n",double(14));
printf("Le résultat plus 1 est : %d\n",double(14)+1); On réalise deux fois
exactement le même
}
calcul, ce qui est peu
efficace. Évidemment,
Une méthode plus efficace consiste à stocker le résultat dans une variable et à utiliser dans cet exemple le
calcul est extrêmement
cette variable plusieurs fois. Non seulement c’est plus efficace en termes de temps de rapide, en pratique.
calcul, mais aussi et surtout en termes de lisibilité : Mais imaginez qu’il
s’agisse d’une fonction
prenant 1 heure à
int main(int argc, char** argv)
s’exécuter : notre
{ int res; programme durera
res = double(14); alors 2 heures au lieu
printf("Le résultat est : %d\n",res); d’une seule !
printf("Le résultat plus 1 est : %d\n",res+1);
}
Fonctions
5. Emplacement
Une fonction doit être connue (mais pas forcément complètement définie) du compilateur avant sa
première utilisation dans le programme. Cela signifie que sa déclaration doit précéder son appel, mais que sa
définition peut lui succéder.
Le compilateur va indiquer une
int main(int argc, char** argv)
erreur dans la fonction main, car
{ int r = multiplication(12,13);
on veut utiliser une fonction
...
multiplication qui n’a jamais été ni
}
déclarée ni définie.
int multiplication(int x, int y)
{ int resultat;
resultat = x * y;
return resultat;
}
Challenges
Fonctions
EXERCICES
Exercice 1:
Ecrire un programme C qui définit et utilise une fonction de prototype int Somme(int,int) qui prend en
paramètres deux entiers et renvoie leur somme.
Exercice 2:
Ecrire un programme C qui détermine le max de quatre entiers à l'aide d'une fonction Max_4, et qui doit
utiliser une autre fonction Max_2 qui trouve le max de deux entiers.
Exercice 3:
Ecrire un programme C qui affiche les carrés des éléments d'un tableau d'entiers en utilisant les deux
méthodes suivantes:
• la première se base sur une fonction Affiche_Carre qui prends en paramètre le tableau est affiche les carrés
de tout ses éléments;
• la deuxième utilise une fonction Carre qui affiche le carré d'un entier entré en paramètre.
Fonctions
EXERCICES
Exercice 4:
Ecrire un programme C qui définit et utilise une fonction Permuter qui permute les valeurs de deux variables
réelles.
Exercice 5:
Ecrire un programme C, qui définit et utilise une fonction Inserer, qui insère un entier dans un tableau. L'entier
à insérer et la position d'insertion sont lus par cette fonction même.
Exercice 6:
Ecrire un programme C qui définit quatre fonctions pour effectuer les tâches suivantes:
• Réservation de l'espace mémoire pour un tableau d'entiers dynamique à deux dimensions;
• Lecture du tableau;
• Affichage du tableau;
• Libération de l'espace mémoire réservé.
Fonctions
EXERCICES
Exercice 7:
Ecrire un programme C qui définit et utilise une fonction Trier qui trie, dans un ordre croissant, les éléments
d'un tableau d'entiers.

Exercice 8:
Ecrire un programme C qui définit une fonction récursive qui calcule la somme des entiers entre zéro et un
nombre passé en paramètre.
Partie 4 :

• Atelier créativité
1.Choix des projets
2.Réalisation des projets (Travail de groupes)
3.Présentation des projets
• Quiz
Atelier créativité
Fin de la journée 2

Vous aimerez peut-être aussi