Sfa 23 24 Algo Et C Agitel
Sfa 23 24 Algo Et C Agitel
Sfa 23 24 Algo Et C Agitel
ET A LA PROGRAMMATION
EN LANGAGE C
Dr MAMBE Moïse
Objectifs et plan du cours
❑ Objectifs
- Apprendre les outils de base de l'algorithme et de la programmation;
- Être capable de mettre en œuvre ces outils pour analyser des problèmes
simples et écrire les programmes correspondants.
❑ Plan
Chapitre 1 : Généralités sur l’algorithmique
Chapitre 2 : Opérations de base
Chapitre 3 : Structures de décision
Chapitre 4 : Structures de répétition)
Chapitre 5 : Structures de données élémentaires : les tableaux
Chapitre 6 : Fonctions et procédures
Chapitre 7 : Bases de la programmation en Langage C
2
Chapitre 1
Généralités sur l’algorithmique
et la programmation
3
Démarche de programmation
Pour palier un problème dont la résolution peut être confiée à un ordinateur, il faut
une bonne démarche de programmation.
L'algorithme le plus célèbre est l'algorithme d'Euclide (vers 300 avant J.-C.)
permettant de calculer le PGCD de deux nombres dont on ne connait pas la
factorisation.
5
Définition d’algorithme
Définition 1: Un algorithme est une suite d’instructions ayant pour but de résoudre
un problème donné. Ces instructions doivent être exécutées de façon automatique
par un ordinateur.
7
Représentation d’un algorithme
Historiquement, deux façons pour représenter un algorithme:
L’Organigramme :
- représentation graphique avec des symboles
(carrés, losanges, etc.)
- offre une vue d’ensemble de l’algorithme
- représentation quasiment abandonnée aujourd’hui
Le pseudo-code :
- représentation textuelle avec une série de conventions ressemblant
à un langage de programmation
- plus pratique pour écrire un algorithme
- représentation largement utilisée
Début
instruction 1 Corps de l’algorithme
…………… (Description de la méthode de
instruction n résolution)
Fin
9
Partie déclarative
Ces objets algorithmiques sont regroupés dans cette partie en plusieurs natures
on peut citer les constantes, les types, les fonctions, les procédures, les
variables, etc.
Cette année nous verrons les constantes, les variables, les types et les
fonctions.
10
Corps de l’algorithme
Algorithme NombrePair
Variables
nbre, res : entiers
Début
écrire (‘Quel nombre voulez-vous vérifier?’)
lire(nbre)
res ← nbre mod 2
Si (res = 0) alors
écrire (nbre, ‘ est pair. ’)
Sinon
écrire (nbre, ‘ est impair. ’)
Finsi
Fin 12
Séquence des instructions
Les opérations d'un algorithme sont habituellement exécutées les unes à la suite
des autres, de façon séquentielle (de haut en bas et de gauche à droite).
Par exemple, enfiler ses chaussettes puis enfiler ses chaussures n’est pas pareil à
enfiler ses chaussures puis enfiler ses chaussettes.
Exemples de programmes
14
Langage de programmation
Définition: Le langage de programmation est un code de communication,
permettant à un être humain de dialoguer avec une machine en lui soumettant des
instructions et en analysant les données matérielles fournies par le système.
15
Algorithme et programme
➢ L’élaboration d’un algorithme précède l’étape de programmation.
✓ Un programme est un algorithme (la réciproque est fausse).
➢ L'algorithme est indépendant du langage de programmation.
(Par exemple, on utilisera le même algorithme pour une solution en langage Java,
ou bien en C++ ou encore en Visual Basic).
➢ La rédaction d’algorithmes est un exercice de réflexion qui se fait généralement sur
du papier, mais il existe des applications informatiques pour les implémenter .
Par exemple :
16
Chapitre 2
Les opérations de bases
17
Notion et définition de variable
➢ En algorithme, on peut définir une variable comme un objet algorithmique pour
représenter une entité du monde réel qui peut prendre plusieurs valeurs en des
instants différents, mais une seule à la fois.
18
Identificateurs : règles
Un identificateur (le nom d’un objet algorithmique) est un mot constitué d’un
nombre quelconque de caractères pris dans la liste suivante :
❖ tous les caractères minuscules de a à z
❖ tous les caractères majuscules de A à Z
❖ tous les chiffres de 0 à 9
❖ le caractère _
Pour être valable, un identificateur ne doit pas contenir d’autres caractères
que cette liste, et ne doit pas commencer par un chiffre.
L’identificateur doit être différent des mots réservés du langage (par exemple en
langage C: int, float, double, switch, case, for, main, return, …).
La longueur du nom doit être inférieure à la taille maximale spécifiée par le
langage utilisé.
Remarque : Pour la lisibilité des algorithmes, il faut opter pour des identificateurs
simples et significatifs.
19
Par exemple, age est un meilleur choix que x pour désigner l'âge d’une personne.
Identificateurs : Exemple
- Les identificateurs suivants sont valables :
Hellow , Ma_Procedure, _1, Numero2
20
Types des variables
21
Déclaration des variables
La déclaration de variables est effectuée par la forme suivante :
Variable
liste d'identificateurs (séparé par des virgules) : type
Exemple:
Variable
age, i : entier
moyenne : réel
sexe : caractère
nom : chaine
Remarques
- Pour chaque type de variables, il existe un ensemble d'opérations correspondant.
- La déclaration d’une variable est l'association d'un nom avec un type,
permettant de mémoriser une valeur de ce type. 22
Variable particulière : La constante
Une constante est une variable particulière dont la valeur ne change pas au cours
de l'exécution du programme, elle peut être un nombre, un caractère, ou une
chaine de caractères.
Exemple :
Pour calculer la surface des cercles, la valeur de pi est une constante mais le rayon est
une variable.
Constante
PI=3,14
23
Expressions et opérateurs
Une expression peut être une valeur, une variable ou une opération constituée de
variables reliées par des opérateurs.
Une expression est évaluée de gauche à droite mais en tenant compte des priorités
des opérateurs. 24
Priorité des opérateurs
Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de priorité est le suivant
(du plus prioritaire au moins prioritaire) :
➢ () : les parenthèses
➢ ^ : (élévation à la puissance)
➢ * , / (multiplication, division)
➢ % ou mod, exemple : 5%2 vaut 1, (ne concerne que les entiers)
➢ + , - (addition, soustraction) exemple: 9 + 3 * 4 vaut 21
En cas de besoin, on utilise les parenthèses pour indiquer les opérations à effectuer
en priorité
Exemple : (9 + 3) * 4 vaut 48
25
À priorité égale, l’évaluation de l’expression se fait de gauche à droite.
Opérations de base
Un algorithme est formé de cinq types d'opérations essentielles considérées comme
des petites briques de base pour sa construction :
26
Affectation
L’affectation consiste à attribuer une valeur à une variable dans l’algorithme (dans le
code d’un programme)
29
L’opération d’entrée : l’écriture
30
Exercice : lecture et écriture
Écrire un algorithme qui permet d’effectuer la saisie deux nombres entiers et de faire
la somme.
Solution
Algorithme Calcul
Variable
nbre1, nbre2, som : entier
Début
écrire(ʹEntrez le premier nombre ʹ)
lire(nbre1)
écrire(ʹEntrez le deuxième nombre ʹ)
lire(nbre2)
som ← nbre1 + nbre2
écrire(ʹ La somme est : ʹ, som)
31
Fin
Travail à faire
Exercice 1
A partir de la saisie de 3 nombres écrire l'algorithme permettant de calculer et
d’afficher à l’écran leur somme, leur produit et leur moyenne.
Exercice 2
Écrire un algorithme permettant de
1. Saisir la valeur de deux variables x et y
2. Afficher la valeur de leur différence (x-y)
3. Permuter leur valeur
4. Afficher encore la valeur de leur différence (x-y)
32
Algorithme CalculMath
Variable
nb1, nb2, nb3, som, pro, moy : réel
Début
écrire (''Entrer le premier nombre'')
lire (nb1)
écrire (''Entrer le deuxième nombre'')
lire (nb2)
écrire(''Entrer le troisième nombre'')
lire (nb3)
som ← nb1 + nb2 + nb3
pro ← nb1 * nb2 * nb3
moy ← som /3
écrire('' La somme est : '', som)
écrire('' Le produit est : '', pro)
écrire('' la moyenne est : '', moy)
Fin
33
Chapitre 3
Les structures de décision
34
Instructions de décision
si (condition) alors
séquence d’instructions
finsi
36
Instructions conditionnelles
si (condition) alors
séquence d’instruction 1
sinon
séquence d’instruction 2
finsi
37
Exemple de Si…Alors…Sinon
Algorithme ValeurAbsolue1
Variable
x : réel
Début
écrire(" Entrez un réel ")
lire(x)
si x < 0 alors
écrire("la valeur absolue de ", x, " est ",-x)
sinon
écrire("la valeur absolue de ", x, " est ",x)
finsi
Fin
38
Exemple de Si…Alors
Algorithme ValeurAbsolue2
Variable
x, y : réel
Début
écrire(" Entrez un réel : " )
lire(x)
y← x
si x < 0 alors
y ← -x
finsi
écrire("la valeur absolue de ", x, " est ",y)
Fin
39
Exercice (tests)
Écrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui teste et
affiche s'il est divisible par 7 ou non
Algorithme Divsible_par7
Variable
n : entier
Début
écrire(" Entrez un entier : ")
lire(n)
si (n%7=0) alors
écrire(n," est divisible par 7")
Sinon
écrire(n," n'est pas divisible par 7")
Finsi
Fin 40
Conditions composées
Une condition composée est une condition formée de plusieurs conditions simples
reliées par des opérateurs logiques :
ET, OU, OU exclusif (XOR) et NON
Exemple :
• x compris entre 2 et 6 : (x >= 2) ET (x <= 6)
• n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
42
Tests imbriqués : exemple 1
Algorithme test_imbrique1
Variable
n : entier
Début
écrire("entrez un nombre : ")
Lire (n)
si n < 0 alors
écrire("Ce nombre est négatif")
sinon si n = 0 alors
écrire("Ce nombre est nul")
sinon
écrire("Ce nombre est positif")
finsi
finsi
Fin
43
Tests imbriqués : exemple 2
Algorithme test_imbrique2
Variable
Remarque : dans l’exemple 2
n : entier
on fait trois tests
Début
systématiquement alors que
écrire("entrez un nombre : ")
dans l’exemple 1, si le nombre
lire (n)
est négatif on ne fait qu'un seul
si (n < 0) alors
test
écrire("Ce nombre est négatif")
finsi
Conseil : utiliser les tests
si (n = 0) alors
imbriqués pour limiter le
écrire("Ce nombre est nul") nombre de tests et placer
finsi d'abord les conditions les plus
si (n > 0) alors probables
écrire("Ce nombre est positif")
finsi
Fin 44
L'instruction SELON (AVEC ou CAS)
Lorsque l’on doit comparer une même variable avec plusieurs valeurs,
comme par exemple :
si a=1 alors
instruction1
sinon si a=2 alors
instruction2
sinon si a=4 alors
instruction4
sinon . . .
finsi
finsi
finsi
On peut remplacer cette suite de si par l’instruction selon 45
L'instruction Selon : Sa syntaxe
Selon v
v1 : action 1
v2 : action 2
...
vn : action n
autre : action par défaut
Fin Selon
47
Structures itératives ou de répétitions : les
boucles
Ces structures servent à répéter l'exécution d'un groupe d'instructions un certain
nombre de fois. Pour les utiliser il faut respecter trois conditions (l’initialisation de
la variable condition, la condition d’arrêt et l’incrémentation ou relance). On
distingue trois sortes de boucles en langages de programmation :
• La boucle tant que : on y répète des instructions tant qu'une la condition est vrai et
si la condition est fausse on arrête.
• La boucle répéter … jusqu'à : on y répète des instructions tant que la condition soit
fausse et c’est on arrête si la condition est vraie.
• La boucle pour ou avec compteur : on y répète des instructions en faisant évoluer
un compteur (variable particulière) entre une valeur initiale et une valeur finale. Tant
que le compteur est dans l’intervalle on répète sinon on arrête.
48
La boucle Tant que
Initialisation de la condition
TantQue (condition) faire
instructions
Relance
FinTantQue
NB: Il est possible que les instructions à répéter ne soient jamais exécutées.
49
Les boucles Tant que : remarques
Le nombre d'itérations dans une boucle Tant Que n'est pas connu au moment
d'entrée dans la boucle. Il dépend de l'évolution de la valeur de la condition
Une des instructions du corps de la boucle doit absolument changer la valeur de la
condition de vrai à faux (après un certain nombre d'itérations), sinon le programme va
tourner indéfiniment
50
Boucle Tant que : remarques
Pour initialiser la variable condition on doit avoir recours à l’une des actions
suivantes :
La relance est très importante et obligatoire dans le corps de la boucle tant que
51
Tant que : exemple 1
Condition est évaluée après chaque itération. Les instructions entre Répéter et
jusqu’à sont exécutées au moins une fois et leur exécution est répétée jusqu’à ce
que la condition soit vraie (tant qu'elle est fausse)
Algorithme calcul
Variables
som, i : entier
Debut
som ← 0
i←0
Répéter
i ← i+1
som ← som+i
Jusqu'à ( som > 100)
écrire(" La valeur cherchée est N= ", i)
Fin
56
Les boucles Tant que et Répéter jusqu’à
Différences entre les boucles Tant que et Répéter jusqu'à :
57
Les boucles Pour
Pour compteur ← Valeur initiale à Valeur finale par pas Faire
instructions
FinPour
58
Les boucles Pour
Remarque : le nombre d'itérations dans une boucle Pour est connu
avant le début de la boucle
Compteur est une variable de type entier (ou caractère). Elle doit être
déclarée
Pas est un entier qui peut être positif ou négatif. Pas peut ne pas être
mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le nombre
d'itérations est égal à finale - initiale+ 1
Valeur Initiale et Valeur finale peuvent être des valeurs, des variables
définies avant le début de la boucle ou des expressions de même type
que compteur 59
Principe de fonctionnement de la boucle POUR
Remarques
Une boucle pour peut être exécutée 0,1 ou n fois.
On ne peut utiliser la boucle POUR que si on connaît au préalable
combien de fois le traitement sera répété.
60
Boucle Pour : exemple (forme 1)
Calcul de x à la puissance n où x est un réel non nul et n un entier
positif ou non nul
…
Variables
x, puiss : réel
n, i : entier
Début
écrire(" Entrez respectivement les valeurs de x et n ")
Lire (x, n)
puiss ← 1
Pour i ← 1 à n faire
puiss← puiss*x
FinPour
écrire (x, " à la puissance ", n, " est égal à ", puiss)
61
Fin
Boucle Pour : exemple (forme 2)
Calcul de x à la puissance n où x est un réel non nul et n un entier
positif ou nul (forme 2 avec un pas négatif)
…
Variables
x, puiss : réel
n, i : entier
Debut
écrire (" Entrez respectivement les valeurs de x et n ")
lire (x, n)
puiss ← 1
Pour i ← n à 1 par pas -1 faire
puiss← puiss*x
FinPour
écrire (x, " à la puissance ", n, " est égal à ", puiss)
62
Fin
Boucle Pour : remarques
Exemple :
Pour i ← 1 à 5 faire
i ←i -1
écrire (" i = ", i)
Finpour
63
Travail à faire
Exercice 1
Ecrire un algorithme qui permet d’entrer 10 notes au
clavier et de calculer leur somme et leur moyenne
Exercice 2
Écrire un algorithme qui permet de calculer n!, avec n
un entier saisi au clavier
64
Algorithme somme_moyenne
Variable
note, moyenne, somme : réel
i : entier
Début
somme ← 0
Pour i ← 1 à 10 faire
Lire(note)
somme ← somme+note
Finpour
écrire ("la somme est", somme)
moyenne ← somme/10
écrire ("la moyenne est", moyenne)
Fin 65
Lien entre Pour et TantQue
La boucle Pour est un cas particulier de Tant Que (cas où le nombre
d'itérations est connu et fixé) . Tout ce qu'on peut écrire avec Pour peut
être remplacé avec Tant Que (la réciproque est fausse)
Exemple: Exécution
68
Choix d'un type de boucle
▪ Si on peut déterminer le nombre d'itérations avant l'exécution
de la boucle, il est plus naturel d'utiliser la boucle Pour
70
Tableaux : introduction
Supposons que l'on veut calculer le nombre d’étudiants ayant une note
supérieure à 10 pour une classe de 20 étudiants.
Jusqu’à présent, le seul moyen pour le faire, c’est de déclarer 20
variables désignant les notes N1, …, N20:
• La saisie de ces notes nécessite 20 instructions lire.
• Le calcul du nombre des notes >10 se fait par une suite de tests de 20
instructions Si :
nbre ← 0
Si (N1 >10) alors nbre ←nbre+1 FinSi
…
Si (N20>10) alors nbre ←nbre+1 FinSi
cette façon n’est pas très pratique
C’est pourquoi, les langages de programmation offrent la possibilité de
rassembler toutes ces variables dans une seule structure de donnée 71
appelée tableau qui est facile à manipuler
Tableaux
Un tableau est un ensemble d'éléments de même type désignés par
un identificateur unique Une variable entière nommée indice permet
d'indiquer la position d'un élément donné au sein du tableau et de
déterminer sa valeur
Exemples :
x ← tab[1]
La variable x prend la valeur du premier élément du tableau (45 selon le
tableau précédent)
tab[6] ← 43
Cette instruction a modifiée le contenu du 6ème élément du tableau (43
au lieu de 13)
74
Tableaux : exemple 1
Pour le calcul du nombre d'étudiants ayant une note supérieure à 12
avec les tableaux, on peut écrire :
…
Constante N=10
Variables i ,nbre : entier
notes : tableau[N] de réel
Début
nbre ← 0
Pour i ← 1 à N faire
Si (notes[i] >12) alors
nbre ←nbre+1
FinSi
FinPour
écrire ("le nombre de notes supérieures à 12 est : ", nbre)
75
Fin
Tableaux : exemple 2
Solution
Etape 1 : déclarer un tableau de 20 éléments de type réel
Etape 2 : Entrer les notes dans le tableau
Etape 3 : Calculer la somme des notes
Etape 4 : Calculer la moyenne en divisant la somme des notes
par 20
Etape 5 : Afficher la moyenne
78
Intérêts
79
Environnement d’un sous-programme
80
Environnement d’un sous-programme
81
Environnement d’un sous-programme
Début
Fin
83
Syntaxe générale d’une fonction En tête
Début
instructions Corps de la fonction
Retourner valeur
Fin
84
Procédures
Une procédure « P » doit être définie une seule fois dans un algorithme « A » et peut
être appelée plusieurs fois par « A » ou par une autre procédure de « A ».
85
Exemple
Algorithme avec procédure permettant d’élever un nombre entier au carré.
Algorithme Elevation_au_carre
Variable nbre : entier
Procédure Carre(n:entier)
Début
Ecrire(" Le carré de ",n, " est ",n*n )
Fin
Début
Ecrire(" Veuillez entrer un entier svp! ")
Lire(nbre)
Carre(nbre)
86
Fin
Fonction
Une fonction est un sous-programme qui calcule, à partir de paramètres éventuels,
une valeur d’un certain type utilisable dans une expression du programme appelant.
Il s’agit donc de sous-programmes nommés et typés qui calculent et retournent une
et une seule valeur.
✓ Le type de cette valeur est celui de la fonction.
87