Vous êtes sur la page 1sur 10

Chapitre 3 : Généralités sur l’algorithmique et la programmation

A la fin de ce chapitre l’étudiant sera capable de :


- Définir un algorithme
- Donner la structure générale d’un algorithme
- La différence entre un algorithme et un programme
- Définir un organigramme
- Définir quelques concepts importants à l’écriture d’un algorithme et d’un
programmation en C
3.1- Définition d’un algorithme et Programme
Méthodologie à adopter face à un problème
1- Analyser le problème
2- Algorithme
3- Programmation
3.1.1 Algorithme
 Un algorithme est une suite d’instructions qui, une fois exécutées correctement, conduit
à un résultat donné. Les instructions doivent être élémentaires et non ambiguës.
NB : Pour fonctionner, un algorithme doit donc contenir uniquement des instructions
compréhensibles par celui qui l’exécute.
 Qualités pour écrire de bons algorithmes.
La maitrise des algorithmes requiert les qualités suivantes ;
- L’intuition : elle s’obtient dans les exercices
- Etre méthodique et rigoureux : En effet, chaque fois qu’on écrit une série
d’instructions qu’on croit juste, il faut systématiquement se mettre mentalement
à la place de la machine qui va exécuter.
Pour cela, on doit vérifier si le résultat obtenu est bien celui que l’on voulait.
 Les types d’instructions compréhensibles par un ordinateur
Un ordinateur quel qu’il soit, n’est fondamentalement capable de comprendre que
quatre catégories d’instructions :
- L’affectation des variables
- La lecture ou l’écriture
- Les tests
- Les boucles
Un algorithme informatique se ramène au bout du compte à la combinaison de ces quatre
petites briques de base. Il peut y avoir quelques-unes, quelques dizaines et jusqu’à
plusieurs centaines de milliers dans certains programmes.
 Conventions d’écriture des algorithmes
Pour écrire un algorithme, on peut utiliser :
1
- Une représentation graphique avec des carrés, rectangles et des losanges
Cette représentation est appelée Organigramme. Le défaut des organigrammes c’est
que lorsqu’un algorithme grossit, cette représentation n’est plus pratique.
L’organigramme est présenté au 3.2.
- La deuxième convention c’est le pseudocode ; il s’agit d’une série de conventions
permettant de résoudre un problème. Cette série de conventions ressemble à un
langage de programmation authentique, dont on aurait évacué la plupart des
problèmes de syntaxe. Le pseudocode est purement conventionnel. Aucune machine
n’est sensée le connaitre. Il peut varier légèrement d’un enseignant à un autre, ou
d’un livre à un autre.
3.1.2 Programme
 Un programme est un algorithme écrit dans un langage compréhensible par un
ordinateur. Il existe plusieurs types de langages de programmation. Le langage de
programmation nous allons utiliser est le C.
Il existe aussi plusieurs logiciels de programmation, nous pouvons citer entre autre
Code Blocks, Visual C++.
Devoir : Chercher les langages de programmation autres que le C, et classifier les en
types :
- Procéduraux et fonctionnels
- Evènementiels
- Objets
- Impératifs
- Inventeur
Exemple : Le C est impératif, procédural et fonctionnel
 Pourquoi doit-on apprendre l’algorithmique pour apprendre à programmer
Il faut, car les algorithmes expriment les instructions résolvant un problème donné,
indépendamment des particularités de tel ou tel langage.
3.2 Organigramme
L’organigramme n’est pas un outil d’analyse, mais plutôt de visualisation, de contrôle et de
communication de l’algorithme. L’algorithme constitue la solution au problème et
l’organigramme la représentation de la solution.
Cette représentation n’est facilement comprise que grâce à l’utilisation de symboles connus de
tous. Et grâce au respect de quelques règles élémentaires de construction. Le tableau suivant
présente les symboles qu’on utilise.

2
 Symboles organigramme
Symboles Significations
Opération sur les données et instructions. Par exemple un calcul,
une affectation. Est aussi utilisé pour les instructions dont les
symboles standardisés n’existent pas.

Sous-Algorithme ou sous-programme. Block d’instructions


permettant d’exécution d’une tâche incluse dans l’ensemble de
l’algorithme. Permet aussi d’éviter de répéter l’écriture de ces
instructions lorsque la tache apparait plusieurs fois.

Entrée-sortie ; mise à disposition ; enregistrement des informations.

Symbole test : décision d’un choix parmi d’autre en fonction des


conditions.
Lorsqu’un chemin n’est pas choisi c’est-à-dire lorsque la condition
est fausse, on le barre par un trait oblique ( / ). On peut aussi inscrire
le oui pour signifier le test « vrai » ou le non pour signifier le test
« faux ».
Renvoi : connexion utilisée au début et à la fin de la ligne pour en
assurer la continuité.

Liaison : permet de relier les différents symboles.

Début, fin ou interruption d’un programme.

Commentaire : permet d’apporter des compléments d’informations


sur les opérations effectuées.

 Exemple
Soit à resoudre le problème suivant sous forme d’organigramme :
Résoudre l’équation 𝑎𝑥 + 𝑏 = 0

3
si a = 0 et b ≠ 0 , ⟹ pas de solution
Analyse : { a = 0 et b = 0 , ⟹ infinité de solution
si
b b
si a ≠ 0 x = − a ⟹ S = {− a }

Organigramme
Début

Lire a, lire b

a=0

a=0

Ecrire pas Ecrire une infinité


𝑏 de solution de solution
𝑥⟵−
𝑎

FIN

Devoir : Représenter sous forme d’organigramme la résolution d’une équation de 2nd degré ;
puis de l’algorithme de détermination du pgcd de deux nombres.
3.3 Vocabulaire de base
Pour la suite de ce cours, la compréhension des concepts suivants est d’une importance capitale.
Nous allons également dans la mêlée, donner certains concepts du langage que vous allez
approfondir en vous appuyant sur le cours de langage C mis à votre disposition (Programmation
langage C, sébastien varrette, nicolas bernard).
 Syntaxe : C’est une règle d’écriture dans un langage donné.
 Déclaration : en algorithmique, on ne manipule pas les données sans les déclarer. Les
syntaxes de déclaration des constantes et des variables sont les suivants :
Constantes : objet donc l’état ne change pas pendant le déroulement de
l’algorithme.

La flèche est le symbole de l’affectation. Pour le cas présent, on a attribué à


la constante <IdentConst>, la valeur <Valeur>

4
Exemple

En langage C : #define Nom − constante = Valeur ;

Variables : Objet dont le contenu peut changer lors du déroulement de l’algorithme.


Var <IdentificateurVariable> : <TypeVariable> ;
Variable <IdentificateurVariable> en <TypeVariable> ;
 Type de donnée : Dans un programme, on manipule différents types de données
- Les booléens : valeur pouvant être fausse ou vraie. En langage C, on n’a pas de
type booléen.
- Les entiers
Exemple : Var A : entier
Variable A en entier
En langage C ; int A ; ici on réserve 16 bits (2 octets). Les entiers longs (long
int A) seront codés sur 32 bits.
- Les réels :
En algorithmique : déclaration des réels
Var A : Réel
Variable A en réel
En langage C, on a des réels simples qui sont codés sur 4 octets. Ce sont les
flottants.
Déclarations : float A ;
- Les réels doubles qui sont codés sur 8 octets
Déclarations : double B ;
Il y a les réels longs qui sont codés sur 10 octets (long double)
- Type ASCII ; en algorithmique
Déclaration : Var A : caractère
Variable A en caractère
Pour affecter : 𝐴 ← "𝑡"
- Commentaires : Si le nombre à utiliser dépasse 256, mieux vaut déclarer le
type bit qui n’utilise qu’un octet.
C’est le compilateur ne se retrouvera pas si on ne met pas de point.
En langage C, on écrit char A , pour affecter, on écrit : char A = ‘ t ’ ;
- Chaine de caractères : ensemble de caractères
En algorithmique : Var A en caractère ;

5
chaine A ;

chaine 𝐵 ← "𝑡𝑜𝑡𝑜" ;
En anglais string.
 En langage C, on manipule les chaines sous forme de tableaux ou de pointeurs.

Syntaxe : 𝐜𝐡𝐚𝐫 〈𝐍𝐨𝐦 𝐯𝐚𝐫𝐢𝐚𝐛𝐥𝐞〉[〈𝐥𝐨𝐧𝐠𝐮𝐞𝐮𝐫〉] ;

𝐜𝐡𝐚𝐫 𝐍𝐨𝐦[𝟏𝟎] ; (pour dire que le nom a au plus dix caractères)


Exemple : Nom [10] = "NANA"
N A N A ‘’ ‘’ ‘’ ‘’ ‘’ ‘’ ‘/0’ Caractère nul

Caractère vide
 Tableau de donné : C’est un ensemble de données de même type.
Syntaxe : En algorithmique
Tableau 〈Nom tableau〉[〈Longueur〉] en type caractère
tableau T[10] en entier
En langage C :

int A[10] ;

char A[20] ;

On peut aussi dire char A ;

L’affectation se fait : int A[10] = {1, 2, 5, 7, 8} ;

 Identificateur : Nom explicite d’une constante, d’une variable ou bien d’une fonction.
Les variables doivent être de préférence en majuscules, les identificateurs doivent être
de type alpha numérique. On ne doit pas commencer par un chiffre et un identificateur
ne doit pas contenir les caractères suivant : ! ↔ (espace) ? ; −(trait de 6 ou tiret) ′ /
\
Remarque : Les Under scores sont permis : on peut écrire Nom_1 mais pas 𝐍𝐨𝐦− 1

 Mots clés en langage C: auto, break, case, char, const, continue, default, do, double,
else, enum, extern, float, for, gets, if, int, long, register, return, short, signed, size of,
static, struct, switen, type def, unsigned, void (utilisée pour la procedure), union,
volatile, while, à ne pas utilizer comme identificateur de variable.
NB : En langage C, la casse est importante

Toto # toto # TOTO # toTo # ToTo # … …

6
3.4 Sous algorithme

Un sous algorithme est un bloc d’instructions conçu pour réaliser un traitement bien déterminé.
Il ne dépend pas du contexte de l’algorithme. Il est appelé par l’algorithme. Un sous algorithme
peut aussi appeler un autre sous algorithme. Il est matérialisé dans un algorithme sous forme de
procédure ou fonction.

Une fonction se différencie d’une procédure par le fait qu’elle fournit un résultat.

Remarque : La procédure renvoie plusieurs résultats tandis que la fonction renvoie à un et un


seul résultat.

Nous préciserons la structure d’une procédure et d’une fonction dans la structure d’un
algorithme. Le volet procédure et fonction est détaillé dans le chapitre y relatif.

3.5 Structure d’un algorithme et d’un programme

 Structure d’un algorithme

Un algorithme est organisé en plusieurs parties :

- L’entête : c’est la syntaxe suivante : Algorithme 〈𝐍𝐨𝐦𝐀𝐥𝐠𝐨𝐫𝐢𝐭𝐡𝐦𝐞〉

Le nom de l’algorithme doit refléter le contenu. A la suite du nom de l’algorithme on


ajoute les objectifs de l’algorithme, les données en entrées et les résultats.

- Les déclarations
o Constantes : Const〈NomConst〉 ← 〈Valeur〉
o Les types : il s’agit essentiellement des types définis
o Les variables : Var〈NomVariable〉 ∶ 〈Type〉
o Définition des procédures et fonctions :
𝐏𝐫𝐨𝐜é𝐝𝐮𝐫𝐞 〈NomProcédure〉(< liste des paramètres >)
∕∕ déclarations
Début
// Liste des instructions

Fin

7
𝐅𝐨𝐧𝐜𝐭𝐢𝐨𝐧 〈NomFonction〉(< liste des paramètres >) ∶ 〈Typefonction〉

∕∕ déclarations

Début
//Liste des instructions

Renvoyer 〈Valeur〉
Fin

Remarque : les paramètres sont séparés par des virgules

- Corps de l’algorithme

Debut

//liste des instruction

FinAlgo

 Exemple d’algorithme

Ecrire un algorithme qui calcule la surface d’un cercle

Algorithme CalculSurfaceCercle (ou encore Calcul_Surface_Cercle)

/*Objectifs : Calculer la surface d’un cercle */

//Donnée : R ; Résultat : S

Const Pi ⟵ 3,14

Var : R, S ; réel

Début

Ecrire « Entrez le rayon »

Lire (R)

S ⟵ Pi*R*R

Ecrire (« la surface est », ‘S’)

Fin

8
3.6 Structure d’un programme en langage C

Pour cette partie, relative essentiellement à la programmation en langage C, vous référez au


livre mis à votre disposition.

- Directives de compilation
#include 〈stdio. h〉

#include 〈math. h〉

#define 〈NomConstante〉 = 〈Valeur〉

- Déclaration des types : les types définis c’est par le mot clé typedef
- Déclaration des variables
〈TypeVar〉 〈NomVar〉 ;
int A ;
char B ;
int A = 0 ;
- Définition des fonctions et procédures
〈Typefonction〉 〈Nomfonction〉(< Liste des paramètres >){

return〈valeur〉 ;
}
Exemple :
int factoriel(int n){

return fact ;
}
Void 〈Nomprocédure〉(Liste des paramètres){

9
Exemple : void Essai(){

printf (‘’Bonsoir Monsieur’’)

En langage C, le corps de l’algorithme c’est


int main( ) {
//Liste des instructions
return 0 ;
}
Réécrivons l’algorithme de calcul de surface en langage C
#include 〈stdio. h〉
#define Pi = 3,14 ;
int main(){
float S, R ;
printf(‘’entrer le rayon’’) ;
scanf(‘’%f’’&R) ;
S = Pi*R*R ;
printf(‘’La surface est %d’’, S) ;
return 0 ;
}

Devoirs :
1- Formatage des entrées sorties en C
2- Chercher les exemples de fichiers qu’on peut inclure dans un programme.
3- Ecrire un programme qui calcule la combinaison en utilisant une fonction
factorielle existant dans une bibliothèque dans un fichier.h

10

Vous aimerez peut-être aussi