Algo&c
Algo&c
programmation C
Plan du cours
Introduction à l'algorithmique 01
Un ordinateur pour qu’il puisse effectuer des tâches aussi variées il suffit de le programmer.
Notion de programme
L’ordinateur est capable de mettre en mémoire un programme qu’on lui fournit puis l’exécuter.
L’ordinateur possède un ensemble limité d’opérations élémentaires qu’il sait exécuter. Un programme est
constitué d’un ensemble de directives, nommées instructions, qui spécifient :
les opérations élémentaires à exécuter.
la façon dont elles s’enchaînent.
Pour s’exécuter
Exemple: un programme de paie nécessite des informations données : noms des employés, situations de famille,
nombres d’heures supplémentaires, etc…
Les résultats seront imprimés sur les différents bulletins de paie.
Le processus de la programmation
Les différentes étapes du processus de programmation: Lors de l’étape d’exécution, il
se peut que des erreurs
Dans un deuxième temps, on syntaxiques sont signalées,
exprime dans un langage de ce qui entraîne des
Dans un premier temps, on
programmation donné, le corrections en général simple
procède à ce qu’on appelle
résultat de l’étape précédente. ou des erreurs sémantiques
l’analyse du problème posé
Ce travail, quoi qu’il soit facile, plus difficiles à déceler.
ou encore la recherche d’un
algorithme qui consiste à exige le respect strict de la
définir les différentes étapes syntaxe du langage de
La programmation de la résolution du problème. programmation.
consiste, avant tout, à C’est la partie essentielle
déterminer la démarche dans le processus de
permettant d’obtenir, à programmation.
l’aide d’un ordinateur, la
solution d’un problème
donné. CODAGE
Dans ce dernier cas, le programme
produit des résultats qui ne
correspondent pas à ceux
ANALYSE escomptés : le retour vers l’analyse
sera alors inévitable.
Le processus de la programmation se
déroule en deux phases
Donc, la résolution d’un problème passe tout d’abord par la recherche d’un algorithme.
Introduction à l'algorithmique
C’est Quoi un Algorithme ?
Définition:
Un algorithme est une suite d'instructions présentées dans l'ordre des traitements.
Un algorithme peut être représenté sous 2 formes: organigramme ou pseudo-code
Les instructions sont des opérations composées de variables, de constantes et d’opérateurs.
L’algorithme sera toujours accompagné d’un lexique qui indique, pour chaque variable, son type et son rôle.
Un algorithme est délimité par les mots clés début et fin.
La partie des instructions (Entrées, Traitement et Sorties) Plus utilisé, plus proche de la structure
d’un vrai programme
Introduction à l'algorithmique
Données: variable et constante
Définition
Une Données représente une
information liée à un élément du
problème traité par l’algorithme.
Données
−Lorsqu’on déclare une variable, on lui attribue un nom et on lui réserve un emplacement mémoire. La taille de cet emplacement
mémoire dépend du type de variable. C’est pour cette raison qu’on doit préciser lors de la déclaration le type du variable.
−La syntaxe d’une déclaration de variable est la suivante :
Exemple:
Parmi les identificateurs suivants, indiquer ceux qui sont valides et ceux qui ne le sont pas ?
17S ; Surface Disque; Prix-Total ; N1 ; a?b.
Réponse:
17S : n’est pas valide, puisqu’il commence par un caractère numérique. Doit être : S17
Surface Disque: n’est pas valide, puisqu’il contient un espace. Doit être : SurfaceDisque ou
Surface_Disque.
Prix-Total : n’est pas valide, puisque il contient le signe « - » (moins). Doit être : Prix_Total ou
PrixTotal.
N1 : est valide
a?b : n’est pas valide, puisqu’il contient le caractère « ? ». Doit être : ab.
Introduction à l'algorithmique
Types des variables
Type numérique
Commençons par le cas très fréquent, celui d’une variable destinée à recevoir des nombres. Généralement, les langages de
programmation offrent les types suivants :
−ENTIER:
ENTIER
Le type entier désigne l’ensemble des nombres entiers négatifs ou positifs dont les valeurs varient entre -32 768 à 32 767.
On écrit alors :
VARIABLES i, j, k : ENTIER
−REEL:
Le type réel comprend les variables numériques qui ont des valeurs réelles. La plage des valeurs du type réel est :
-3,40x1038 à -1,40x1045 pour les valeurs négatives
1,40x10-45 à 3,40x1038 pour les valeurs positives
On écrit alors :
VARIABLES x, y : REEL
Introduction à l'algorithmique
Types des variables
Type chaîne
Appelé également caractère ou alphanumérique, dans une variable de ce type, on stocke des caractères, qu’il s’agisse de lettres, de
signes de ponctuation, d’espaces, ou même de chiffres.
On écrit alors :
VARIABLE nom, prenom, adresse : CHAINE
Une chaîne de caractères est notée toujours soit entre guillemets, soit entre des apostrophes. Cette notation permet d’éviter les
confusions suivantes :
•Confondre un chiffre et une suite de chiffres. Par exemple, 423 peut représenter le nombre 423 (quatre cent vingt-trois), ou la suite de
caractères 4, 2, et 3.
•La confusion qui consiste à ne pas pouvoir faire la distinction entre le nom d'une variable et son contenu.
Remarque : Pour les valeurs des variables de type chaîne, il faut respecter la casse. Par exemple, la chaîne « Salut » est différente de la
chaîne « salut ».
Type booléen
Dans ce type de variables on y stocke uniquement des valeurs logiques VRAI ou FAUX, TRUE ou FALSE, 0 ou 1.
Un opérateur est un signe qui relie deux variables pour produire un résultat. Les opérateurs dépendent des types de variables mis en jeu.
Pour le type numérique on a les opérateurs suivants :
+ : Addition * : Multiplication -: Soustraction / : Division ^ : Puissance
Pour le type chaîne, on a un seul opérateur qui permet de concaténer deux chaînes de caractères. Cet opérateur de concaténation est noté &.
Par exemple : la chaîne de caractères « Salut » concaténer à la chaîne « tout le monde » donne comme résultat la chaîne « Salut tout le monde ».
Expressions
Une expression est un ensemble de variables (ou valeurs) reliées par des opérateurs et dont la valeur du résultat de cette combinaison est unique.
Par exemple :
7 5+4 x + 15 – y/2 nom & prenom
où x et y sont des variables numériques (réels ou entiers) et nom et prenom sont des variables chaîne.
Dans une expression où on y trouve des variables ou valeurs numériques, l’ordre de priorité des opérateurs est important. En effet, la multiplication
et la division sont prioritaires par rapport à l’addition et la soustraction.
Par exemple, 12 * 3 + 5 donne comme résultat 41. Si l’on veut modifier cette ordre de priorité on sera obligé d’utiliser les parenthèse.
Par exemple, 12 * (3 + 5) donne comme résultat 96.
Algorithme
L’instruction d’affectation
L’instruction d’affection est opération qui consiste à attribuer une valeur à une variable. On la notera avec le signe .
Cette instruction s’écrit : VARIABLE valeur
Exemple : MONTANT 3500.
Si dans une instruction d’affectation, la variable à laquelle on affecte la valeur et la valeur affectée ont des types différents, cela provoquera une
erreur. On peut aussi attribuer à une variable la valeur d’une variable ou d’une expression de façon générale.
On écrit : VARIABLE EXPRESSION
Exemple : A B
A B*2+5
Dans ce cas, l’instruction d’affectation sera exécutée en deux temps : D’abord, on calcule la valeur de l’expression, puis on affecte la valeur
obtenue à la variable à gauche.
On peut même avoir des cas où la variable de gauche qui figure dans l’expression à droite. Par exemple : A A+5
Dans cette exemple, après l’exécution de l’instruction d’affectation la valeur de la variable A sera augmenter de 5.
Remarque: l’ordre dans lequel sont écrites les instructions est essentiel dans le résultat final.
Exemple : CAS I CAS II Après exécution des deux instructions d’affection, la valeur de A sera :
A 15 A 30 - Cas I : 30
A 30 A 15 - Cas II : 15
Algorithme
Données: Entrées et Sorties
Données
Données
Intermédiaires
−Une autre instruction permet au programme de communiquer des valeurs à l’utilisateur en les affichant à l’écran. La syntaxe de cette
instruction d’écriture est :
ECRIRE NomVariable
ou de façon générale
ECRIRE Expression
−Remarque : Avant de lire une variable, il est fortement conseillé d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doit
frapper. La même chose pour l’instruction d’écriture.
Exemple :
Variables A, CARRE : Réels
Début
Ecrire ‘Entrez un nombre’
Lire A
CARRE A*A
Ecrire ‘Le carré de ce nombre est : ’
Ecrire CARRE
Fin
Algorithme
La structure alternative
Les conditions simples:
−Une condition simple consiste en une comparaison entre deux expressions du même type. Cette comparaison s'effectue avec des opérateurs
de comparaison. Voici la liste de ces opérateurs accompagnés de leur signification dans le cas des types numérique ou chaîne :
Signification Signification
Opérateur
numérique chaîne
= égal à égal à
−Pour la comparaison du type chaîne c'est l'ordre alphabétique qu'est utilisé dans le cas où l'on compare deux lettres majuscules ou
minuscules. Mais si l'on compare majuscules et minuscules, il faut savoir que les majuscules apparaissent avant les minuscules. Ainsi, par
exemple : "M" < "m".
La structure alternative
Algorithme
Les conditions complexes:
−Certains problèmes exigent parfois de formuler des conditions qui ne peuvent pas être exprimées sous la forme simple vu précédemment. A cet
effet, la plupart des langages autorisent des conditions formées de plusieurs conditions simples reliées entre elles par ce qu'on appelle des
opérateurs logiques. Ces opérateurs sont : ET, OU et NON.
est VRAI si condition est FAUX, et il sera FAUX si condition est VRAI.
SI condition ALORS
bloc 1 d'instructions
SINON
bloc 2 d'instructions
FIN SI
−Si la condition mentionnée après SI est VRAI, on exécute le bloc1 d'instructions (ce qui figure après le mot ALORS); si la condition est
fausse, on exécute le bloc2 d'instructions (ce qui figure après le mot SINON).
−Dans ce programme, on vérifie si la valeur de a est supérieure à 0, on affichera le message ''valeur positive''. Dans le cas contraire, il sera
affiche le message ''valeur négative''.
Algorithme
La structure alternative
−La structure alternative peut prendre une autre forme possible où l'une des parties du choix est absente. Elle s'écrit dans ce cas :
SI condition ALORS
bloc d'instructions
FIN SI
Exemple : Dans un programme de calcul du montant d'une facture, on applique une remise de 1% si le montant dépasse 5000 Dhs. Nous
écrirons :
SI montant > 5000 ALORS
montant montant * 0.99
FIN SI
Dans des langages de programmation, la structure alternative peut prendre une autre forme qui permet d’imbriquée plusieurs. Sa
syntaxe est :
SELON expression
valeur1 : action1
valeur2 : action2
…
valeurN : actionN
SINON : action
FIN SELON
Si expression est égale à valeur i, on exécute action i et on passe à la suite de l’algorithme. Sinon on exécute action et on passe
à la suite de l’algorithme.
Les structures répétitives
Algorithme
Reprenons le programme du surveillant général qui calcule la moyenne des notes. L’exécution de ce programme fournit la moyenne des
notes uniquement pour un seul élève. S’il l’on veut les moyennes de 200 élèves, il faut ré exécuter ce programme 200 fois. Afin d’éviter
cette tâche fastidieux d’avoir ré exécuter le programme 200 fois, on peut faire recourt à ce qu’on appelle les structures répétitives.
On dit aussi les structures itératives ou boucles.
Une structure répétitive sert à répéter un ensemble d’instructions. Il existe trois formes de structures répétitives : POUR, TANT QUE,
REPETER.
La structure POUR
Cette structure permet de répéter des instructions un nombre connu de fois. Sa syntaxe est :
POUR compteur = val_initial A val_final PAS DE incrément
Instructions à répéter
FIN POUR
compteur c’est ce qu’on appelle compteur. C’est une variable de type entier.
val_initial et val_final sont respectivement les valeur initiale et final prise par le compteur. Ce sont des valeurs entières.
incrément est la valeur d’augmentation progressive du compteur. La valeur par défaut du pas est de 1.
Dans de telle on peut ne pas le préciser.
Les structures répétitives
Algorithme
Remarques : Pour un pas positif, la valeur négative doit être inférieure à la valeur finale. Pour un pas négatif, valeur négative doit être
supérieure à la valeur finale.
Si la valeur initiale est égale à la valeur finale, la boucle sera exécutée une seule fois.
Exemple : Réécrivons le programme du surveillant général de façon qu’il puisse calculer les moyennes de 200 élèves.
Cette structure permet de répéter les instructions tant qu’une condition est satisfaite. Sa syntaxe est :
TANT QUE condition
Instructions à répéter
FIN TANT QUE
condition c’est une condition qu’on appelle parfois condition d’arrêt. Cette condition est testée avant la première exécution.
Cette structure diffère de la première par le fait qu’on va répéter des instructions pour un nombre de fois inconnu au préalable.
Exemple : Reprenant toujours le programme de notre surveillant. S’il ne sait pas combien de moyennes à calculer on ne pourra pas utiliser
la structure POUR. Dans ce cas on est obligé d’utiliser la structure TANT QUE. Le programme sera alors :
Algorithme
Les structures répétitives
Cette structure sert à répéter des instructions jusqu’à ce qu’une condition soit réalisée. Sa syntaxe est :
REPETER
Instructions à répéter
JUSQU'A condition
Considérons le programme suivant :
Variables a , c : Entiers
DEBUT
REPETER
Lire a
c c*c
Ecrire c
JUSQU'A a = 0
Ecrire « Fin »
FIN
Les tableaux
Algorithme
Les tableaux à une seul dimension
Imaginez que l’on veuille calculer la moyenne des notes d’une classe d’élèves. Pour l’instant on pourrait l’algorithme suivant :
Si l’on veut toujours calculer la moyenne des notes d’une classe mais en gardant en mémoire toutes les notes des élèves pour d’éventuels
calculs (par exemple calculer le nombre d’élèves qui ont des notes supérieurs à la moyenne). Dans ce cas il faudrait alors déclarer autant
de variables qu’il y a d’étudiants. Donc, si l’on a 10 élèves il faut déclarer 10 variables et si l’on a N il faut déclarer N variables et c’est pas
pratique. Ce qu’il faudrait c’est pouvoir par l’intermédiaire d’une seule variable stocker plusieurs valeurs de même type et c’est le rôle des
tableaux.
Les tableaux
Algorithme
Les tableaux à une seul dimension
−Un tableau est un ensemble de valeurs de même type portant le même nom de variable. Chaque valeur du tableau est repérée par un
nombre appelé indice.
−Les tableaux c’est ce que l’on nomme un type complexe en opposition aux types de données simples vus précédemment.
−La déclaration d’un tableau sera via la syntaxe suivante dans la partie des déclarations :
Exemples :
Tableau Note (20) : Réel
Note (20) est un tableau qui contient vingt valeurs réelles.
Tableau nom (10) , prenom (10) : Chaîne
Nom (10) et prenom (10) sont deux tableaux de 10 éléments de type chaîne.
Un tableau peut être représenté graphiquement par (exemple Note (15)) :
Les tableaux
Algorithme
Si l’on veut accéder (en lecture ou en écriture) à la i ème valeur d’un tableau en utilisant la syntaxe suivante :
nom_tableau (indice)
Par exemple si X est un tableau de 10 entiers :
X (2) -5
met la valeur -5 dans la 2 ème case du tableau
En considérant le cas où a est une variable de type Entier, a X (2)
met la valeur de la 2 ème case du tableau tab dans a, c’est- à- dire -5
Lire X (1)
met l’entier saisi par l’utilisateur dans la première case du tableau
Ecrire X (1)
affiche la valeur de la première case du tableau
Remarques :
- Un tableau possède un nombre maximal d’éléments défini lors de l’écriture de l’algorithme (les bornes sont des constantes explicites, par
exemple 10, ou implicites, par exemple MAX). Ce nombre d’éléments ne peut être fonction d’une variable.
- La valeur d’un indice doit toujours :
• être un nombre entier
• être inférieure ou égale au nombre d’éléments du tableau
Les tableaux
Algorithme
Exemples:
Les représentations graphiques des tableaux X (4) et voyelle (6) après exécution de ces programmes.
1. Considérons les programmes suivants:
Tableau X (4) : Entier
DEBUT
X (1) 12
X (2) 5
X (3) 8
X (4) 20
FIN
Tableau voyelle (6) : Chaîne
DEBUT
voyelle (1) «a»
voyelle (2) «e»
voyelle (3) «i»
voyelle (4) «o»
voyelle (5) «u»
voyelle (6) «y»
FIN
Les tableaux
Algorithme
Exemples:
2. Que fournira l’exécution de ce programme :
Tableau suite (8) : Entier
Variable i : Entier
DEBUT 1
Suite (1) 1
1
2
Suite (2) 1
3
POUR i = 3 A 8 5
suite (i) suite (i - 1) + suite (i - 2) 8
FIN POUR 13
POUR i = 1 A 8 21
Ecrire suite (i)
FIN POUR
FIN
Ecrire un algorithme permettant de saisir 5 réelles au clavier, les stocker dans un tableau, calculer leur somme et les afficher avec leur
somme à l’ecran.
Les tableaux
Algorithme
Les tableaux dynamiques
Il arrive fréquemment que l’on ne connaisse pas à l’avance le nombre d’éléments que devra comporter un tableau. Bien sûr, une solution
consisterait à déclarer un tableau avec une taille très grande. Cela pourra avoir comme conséquence soit que cette taille ne nous nous
suffira pas ou qu’une place mémoire immense sera réservée sans être utilisée.
Afin de surmonter ce problème on a la possibilité de déclarer le tableau sans préciser au départ son nombre d’éléments. Ce n’est que dans
un second temps, au cours du programme, que l’on va fixer ce nombre via une instruction de re-dimensionnement : Redim.
Exemple :
On veut saisir des notes pour un calcul de moyenne, mais on ne sait pas combien il y aura de notes à saisir. Le début de l’algorithme sera
quelque chose du genre :
Tableau Notes () : Réel
Variable nb en Entier
DEBUT
Ecrire “Combien y a-t-il de notes à saisir ?“
Lire nb
Redim Notes(nb-1)
…
FIN
Les tableaux
Algorithme
Les tableaux multidimensionnels
Nous avons vu qu’un tableau à une dimension correspond à une liste ordonnée de valeurs, repérée chacune par un indice.
Dans tous les langages de programmation, il est possible de définir des tableaux à deux dimensions (permettant par exemple de représenter
des matrices). Ainsi, on pourra placer des valeurs dans un tableau à deux dimensions et cela consiste comme dans le cas des tableaux à
une dimension à donner un nom à l’ensemble de ces valeurs. Chaque valeur est alors repérée par deux indices qui précise la position.
On déclare un tableau à deux dimensions de la façon suivante :
Exemple :
Soit T (3 , 5) un tableau d’entiers. On peut représenter graphiquement par :
T (1 , 4) et T(3 , 4) sont deux éléments du tableau. Entre parenthèse on trouve les valeurs des
indices séparées par une virgule. Le premier sert à repérer le numéro de la ligne, le second le
numéro de la colonne.
Les tableaux
Algorithme
Les tableaux multidimensionnels
On accède en lecture ou en écriture à la valeur d’un élément d’un tableau à deux dimensions en utilisant la syntaxe suivante :
Nom_tableau (i , j)
Par exemple si T est défini par : Tableau T ( 3 , 2) : Réel
T (2 , 1) -1.2; met la valeur -1.2 dans la case 2,1 du tableau
En considérant le cas où a est une variable de type Réel, a T (2 , 1); met -1.2 dans a
Exemple
Remplissage d’un tableau à deux dimensions
Tableau X (2 , 3) : Entier
Variables i , j , val : Entiers
DEBUT
val 1
POUR i = 1 A 2
POUR j = 1 A 3
X (i , j) val
val val + 1
FIN POUR
FIN POUR
POUR i = 1 A 2
POUR j = 1 A 3
Ecrire X (i , j)
FIN POUR
FIN POUR
Fin
Les fonctions et procédures
Algorithme
En programmation, donc en algorithmique, il est possible de décomposer le programme qui résout un problème en des sous-programmes qui
résolvent des sous parties du problème initial. Ceci permettra d’améliorer la conception du programme et ainsi sa lisibilité.
L’utilisation des sous-programmes s’avère utile aussi dans le cas où on constate qu’une suite d’actions se répète plusieurs fois.
Il existe deux types de sous-programmes les fonctions et les procédures. Un sous- programme est obligatoirement caractérisé par un nom (un
identifiant) unique.
Le nom d’un sous-programme comme le nom d’une variable doit :
Contenir que des lettres et des chiffres
Commencer obligatoirement par une lettre
Le programme qui utilise un sous- programme est appelé programme appelant. Un sous-programme peut être invoqué n'importe où dans le
programme appelant en faisant référence à son nom.
Un programme ainsi doit suivre la structure suivante :
Définition des constantes
Définition des types
Déclaration des variables
Définition des sous- programmes
DEBUT
Instructions du programme principal
FIN
Les fonctions et procédures Algorithme
Les fonctions
Une fonction est un algorithme autonome, réalisant une tâche précise. Il reçoit des paramètres (valeurs) en entrée et retourne une valeur en sortie
(résultat). La notion de fonction est très intéressante car elle permet, pour résoudre un problème, d’employer une méthode de décomposition en sous-
problèmes distincts. Elle facilite aussi la réutilisation d’algorithmes déjà développés par ailleurs.
Déclaration d’une fonction
Une fonction est introduite par un en-tête, appelé aussi signature ou prototype, qui spécifie :
- Le nom de la fonction, les paramètres donnés et leur type, le type du résultat.
- La dernière instruction de la fonction indique la valeur retournée.
Une fois la fonction définie, il est possible (en fonction des besoins) à tout endroit du programme appelant de faire appel à elle en utilisant
simplement son nom suivi des arguments entre parenthèses.
Les parenthèses sont toujours présentes même lorsqu’il n’y a pas de paramètre.
Les arguments spécifiés lors de l’appel de la fonction doivent être en même nombre que dans la déclaration de la fonction et des types prévus.
Dans le programme appelant ces arguments sont appelés paramètres effectifs.
La valeur ainsi renvoyée par la fonction peut être utilisée dans n’importante quelle expression compatible avec son type.
Exemple 2:
Exemple 1:
Fonction Factorielle ( nbr : Entier): Entier
Fonction Puissance ( A : Entier): Entier
Variables
Variables
R,i: Entiers
P: Entier
Début
Début
R<------1
P<------ A ^ 2
Pour i-----1 à nbr
Retourne P
R----R*i
Fin
Fin Pour
Retourne R
Fin
Les fonctions et procédures
Algorithme
Les fonctions
Appel de la fonction
Remarques: