ASDD1
ASDD1
Département Informatique
1ère Année LMD
Programme :
Chapitre 1 : Introduction
Chapitre 2 : Algorithme séquentiel simple
Chapitre 3 : Les structures conditionnelles (en langage algorithmique et en C)
Chapitre 4 : Les boucles (en langage algorithmique et en C)
Chapitre 5 : Les tableaux et les chaines de caractères
Chapitre 6 : les types personnalisés
1
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
1. Introduction
1.1. L'informatique
Le mot informatique a été créé en 1962 par Philippe Dreyfus. Il s’agit d’une contraction des deux mots
« information » et « automatique » : INFORmation autoMATIQUE.
L’informatique est la science du traitement automatique de l'information grâce à l’ordinateur, C-à-d automatiser
l’information que nous manipulons. Elle a pour objet d'élaborer et de formuler l'ensemble de commandes,
d'ordres ou d'instructions permettant de commander l'ordinateur et de l'orienter lors du traitement.
2
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
2. Introduction à l’algorithmique
Le mot « algorithme » vient de la transcription latinisée d’Al-Kwharizmi, nom d’un célèbre mathématicien
arabe, et du mot grec arithmos qui signifie « nombre ».
2.2 Exemples Introductifs :
Exemple 1 : Je suis dans la rue, et je veux rentrer à la maison qui se trouve dans un immeuble équipé d’un
ascenseur. Proposer un algorithme pour prendre l’ascenseur ?
Prendre l’ascenseur
1. Appuyer sur le bouton d’appel
2. Ouvrir la porte de l’ascenseur
3. Entrer dans l’ascenseur
4. Attendre la fermeture de la porte
5. Appuyer sur le bouton de l’étage
6. Descendre de l’ascenseur
Exemple 2 :
Additionner 2 nombres à l’aide d’une calculatrice :
1. Allumer la Calculatrice.
2. Taper le 1er nombre.
3. Appuyer sur la touche (+)
4. Taper le 2eme nombre.
5. Appuyer sur la touche (=)
2.3 Définitions :
Algorithme : un algorithme est une suite d’actions (opérations) à exécuter, pour l’obtention d’une solution
(résultat) à un problème posé. Donc, plus précisément, un algorithme est une description d’un traitement destiné
à être réalisé sur un ordinateur grâce à un langage de programmation pour accomplir une tâche donnée.
Un algorithme est appelé aussi « pseudo-code ».
L'algorithmique : désigne la discipline qui étudie les algorithmes et leurs applications en informatique
Action : est une étape d’algorithme, c’est un évènement de durée déterminée.
- Dans les exemples 1 et 2, chaque étape est une action.
- Il est important de noter que : la séquence (l’ordre) d’actions doit être respectée (1, 2, 3, 4, 5).
Organigramme : est une représentation graphique de l’enchaînement d’une suite d’actions. Un organigramme
utilise des symboles graphiques : Début
La somme de 2
le début et la fin d’un traitement. nombres à l’aide
d’une calculatrice Entrer le 1er nombre
Pour la majorité des actions. dans l’exemple 2
peut-être Additionner-le avec
Pour l’action de test (condition). schématisée le 2nd nombre
comme suit :
Indique le sens de cheminement des actions. Afficher le résultat
Fin
3
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
Du problème au résultat :
Problème : exemples…
Analyse : phase de réflexion qui permet de :
Comprendre le PB
Dégager les Données (entrées)
Dégager les résultats (sorties)
Formaliser la solution trouvée par un algorithme
Algorithme : Suite organisée d’actions pour l’obtention d’une solution à un pb posé
Traduction : pour son exécution sur ordinateur, un algorithme doit être transformé en un programme
exprimé par un langage de programmation tel que C, Java,…
Programme : un programme informatique est une succession (suite) d’instructions (actions)
exécutables par l’ordinateur. Ces instructions écrites dans un langage de programmation et traduisant un
algorithme. Les programmes sont traduits en binaires (0 et 1) par un compilateur, pour qu’ils soient
compréhensibles par la machine. Exemple de langage de programmation (langage évolué) : Pascal, C,
C++, Basic, …
Compilateur : est un programme qui permet de traduire un texte écrit dans un langage de
programmation en langage machine (0,1).
Exécution : l’exécution se fait en séquence (La 1ere instruction, puis la 2° instruction,….)
Pendant l’exécution :
Programme en Résultats
Données
cours d’exécution
Exemple 3 :
Pb : Calculer la moyenne de 2 nombres entiers X et Y.
Analyse : Pour calculer la moyenne de 2 nombres X et Y, il faut additionner ces deux nombres, puis diviser le
résultat par 2.
Données : X , Y. Résultat : Moyenne.
Algorithme
1. Lecture de X et Y.
2. Calculer : Somme = X+Y.
3. Calculer : Moyenne = Somme/2.
4. Afficher le résultat (Moyenne).
4
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
Déclaration
Constante < définition de constantes>
Type < définition de types>
Variable <définition de variables>
Début
Action 1
Action 2
……. <Partie Instructions> (Corps)
Action n
Fin
Remarque :
1. Une fois qu’un type de données est associé à une variable le contenu de cette variable doit
obligatoirement être du même type.
5
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
2. Si plusieurs variables sont de même type, nom-de-variable est remplacée par une suite de
noms de variables séparés par des virgules.
Règle: La variable doit être déclarée avant d’être utilisée, elle doit être caractérisée par :
Un nom (Identificateur)
Un type qui indique l’ensemble des valeurs que peut prendre la variable (entier, réel, booléen,
caractère, chaîne de caractères, …)
Une valeur
Règles sur les identificateurs :
Le choix du nom d’une variable est soumis à quelques règles qui varient selon le langage, mais en général :
Un nom doit commencer par une lettre alphabétique. Exemple : E1 (1E n’est pas valide)
Doit être constitué uniquement de lettres, de chiffres et du soulignement (« _ ») (Éviter les
caractères de ponctuation et les espaces). Exemples : SMI2008, SMI_2008. (SMP 2008, SMP-
2008, SMP;2008 : sont non valides)
Doit être différent des mots réservés du langage (par exemple en 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é (en c,
le nom doit faire au plus 32 caractères).
En c, Les majuscules sont distinguées des minuscules : a et A sont deux noms différents.
Conseil : pour la lisibilité du code choisir des noms significatifs qui décrivent les données manipulées.
Exemples : NoteEtudiant, Prix_TTC, Prix_HT
5. Opérations de base
Pour pouvoir comprendre et utiliser correctement les opérations de base en algorithmique, on doit tout d’abord
aborder les notions d’opérateur, d’opérande et d’expression.
5.1. Opérateurs
6
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
À chaque type est associé un ensemble d’opérations (ou opérateurs). Un opérateur est un symbole d’opération
qui permet d’agir sur des variables ou de faire des “calculs”.
5.1.1. Opérateurs numériques
Ce sont les quatre opérations arithmétiques tout ce qu’il y a de classique.
+ : addition
- : soustraction
* : multiplication
/ : Division
Avec en plus pour les entiers div et mod, qui permettent respectivement de calculer une division entière et le
reste de cette division. Mentionnons également le ^ qui signifie « puissance ». 45 au carré s’écrira donc 45 ^ 2.
5.1.2. Opérateurs logiques (ou booléens)
Il s’agit du ET, du OU, du NON et du Ou Exclusif XOR.
5.2. Opérandes
Un opérande est une entité (variable, constante ou expression) utilisée par un opérateur dans une expression.
5.3. Expression
Une expression est formée d’opérandes et d’opérateurs. Un opérande peut être une constante ou une variable.
L’évaluation d’une expression repose sur les règles de priorité entre operateurs selon l’ordre (du plus prioritaire
au moins prioritaire) suivant :
1) Operateur unaires appliqués à un seul opérande : non, -, +
2) Operateurs multiplicatifs : *, /, div, mod, et.
3) Operateurs additifs : +, -, ou
4) Operateurs de relation : <,<=,>,>=,=,≠
Remarque :
- Pour des opérateurs de même priorité, l’expression est évaluée de gauche à droite.
- S’il y a des parenthèses, on commence par évaluer les plus internes
- Pour donner le type d’une expression (arithmétique, logique, chaine de caractère, …), il faut vérifier sa
syntaxe(la façon d’écriture)
5.3 Les opérations utilisables sur les types :
Les opérations utilisables sur le type entier sont :
arithmétiques : +,-,*,/ (division réelle), div(la division entière), mod (le reste de la
division entière )
de relation : <,<=,>,>=,≠
Les opérations utilisables sur le type réel sont :
arithmétiques : +,-,*, /
de relation : <,<=,>,>=,≠
Les opérations utilisables sur le type booléen(logique) sont :
logique :et, ou, non
de relation : <,>,=,≠ (nous avons faux<vrai)
les opérateurs succ et pred qui retournent respectivement successeur et le prédécesseur
d’un booléen. Exp : succ(faux)=vrai et pred(vrai)=faux
l’operateur ord, exp : ord(faux)=0 et ord(vrai)=1.
Les opérations utilisables sur le type caractère sont :
de relation : <,<=,>,>=,≠ (car les caratères sont ordonnées selon un code machine tel que
ASCII(American Standard Code for Information Interchange)).
les opérateurs succ et pred qui retournent respectivement successeur et le prédécesseur
d’un booléen. Exp : succ(‘A’)=’B’ et pred(‘C’)=’B’
l’operateur ord et chr : ord(‘A’)=65 et chr(65)=’A’ (si la machine utilise le code ASCII)
Les opérations utilisables sur le type chaine de caractères sont :
de relation : <,<=,>,>=,≠ (car les caratères sont ordonnées )
la fonction concat sert à concaténer 2 chaines. Exp : concat (‘Tia’,’ret’)
la fonction length qui fournit la longueur d’une [Link] : length(‘Tiaret’)=6
Exemple :
Var
i,j,k : entier ;
x,y,z : réel ;
7
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
A,B : logique ;
c: caractère ;
ch1, ch2 : chaine de caractère
Evaluer et donner le type des différentes expressions suivantes :
-k-j div 2 expression correcte
i mod x + y expression erronée : mod n’est pas valide sur le type réel
i et non A<k+j expression erronée : et doit s’appliquer sur deux opérandes logiques
c=’e’ ou c=’f’ expression erronée : ou n’est pas valide sur le type caractère
(c=’e’) ou (c=’f’) expression correcte
Length(concat(ch1,ch2)) expression correcte
6. Instructions de base
Une instruction est une action élémentaire commandant à la machine un calcul, ou une communication avec
l'un de ses périphériques d'entrées ou de sorties. Les instructions de base sont : l’affectation et les instructions
d’entrée sorties.
6.1. Affectation:
C’est l’action qui consiste à attribuer une valeur à une variable V (ayant un espace mémoire), l'affectation est
notée par le signe ←. cette action est notée : V ← E(attribue la valeur de E à la variable V :
E peut être une valeur, une autre variable ou une expression
V et E doivent être de même type ou de types compatibles
L’affectation ne modifie que ce qui est à gauche de la flèche
Syntaxe
Affectation d’une valeur à une variable : Nom-variable valeur ;
Affectation d’une variable à une variable : Nom-variable1 Nom-variable2 ;
Affectation du résultat de calcul à une variable: Nom-variable nom-variable1 opérateur nom-variable2;
Ou encore l’affectation du résultat de plusieurs calcul à une variable :
Nom-variable nom-variable1 opérateur1 nom-variable2 … opérateur-n nom-variable n ;
Exemple : A ((A+B)*2)
Variable Avant l’action Après l’action
A 2 10
B 3 3
Algorithme Nom_de_l’algorithme
Constante
Variable Entête
Liste des variables
Début
Action 1
Action 2 Corps
…….
Action n
Fin
Où la déclaration des variables se fait dans l’entête de l’algorithme et les autres tâches (initialisation, traitement
et affichage) se font dans le corps de l’algorithme.
Exemple : calcul de la somme de deux entiers
Algorithme addition ;
Var A, B, Somme : entier ;
Début
Lire (A) ;
Lire (B) ;
Somme ← A+B ;
Ecrire (‘La somme=’,Somme) ;
Fin.
8. Représentation d’un algorithme par un organigramme
Un organigramme (parfois appelé algorigramme) est une représentation graphique d’un algorithme. En
général, on peut représenter un algorithme sous forme structurée ou sous forme graphique. Les opérations dans
un organigramme sont représentées par les symboles dont les formes sont normalisées. Ces symboles sont reliés
entre eux par des lignes fléchées qui indiquent le chemin.
9
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
Exemple :
L’algorithme de l’exemple précédent (somme de deux entiers) peut être représenté sous l’organigramme
suivant :
Il est souple et puissant. Le langage C est utilisé pour des projets aussi variés que des systèmes
d’exploitation, des traitements de textes, des graphiques, des tableurs ou même des compilateurs pour
d’autres langages ;
Disponible pour tous les types de processeurs et de systèmes d’exploitation ;
Le langage C contient peu de mots. Une poignée d’expressions appelées mots clés servent de bases pour
l’élaboration des fonctions ;
il a influencé de nombreux langages plus récents dont C++, Java, C# et PHP ; sa syntaxe en particulier est
largement reprise ;
Le langage C est modulaire. Son code peut (et devrait) être écrit sous forme de sous-programmes appelés
fonctions. Ces fonctions peuvent être réutilisées pour d’autres applications ou programmes.
int main()
{ <déclaration des variables locales du programme principal>
<instructions>
}
10
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
Un programme C est un ensemble de fonctions. Tout programme comporte au moins une fonction principale
désignée par main.
A. La fonction main
La fonction main est la fonction principale des programmes en C. Elle se trouve obligatoirement dans tous les
programmes. L'exécution d'un programme entraîne automatiquement l'appel de la fonction main.
B. Les commentaires
Un commentaire commence toujours par les deux symboles '/*' et se termine par les symboles '*/'. Exemples :
/* Ceci est un commentaire correct */
C. Utilisation des bibliothèques de fonctions
Pour pouvoir les utiliser, il faut inclure des fichiers en-tête ( extension .H) dans les programmes par
L'instruction #include.
Exemple :
#include<stdio.h>
Int main()
{ /* ce programme affiche le message « Bonjour » */
printf("Bonjour") ;
return 0 ;
}
9.2 Les types prédéfinis
A) Les entiers
définition description domaine min domaine max nombre d'octets
short entier court -32768 32767 2
int entier standard -2147483648 2147483647 4
long entier long -2147483648 2147483647 4
unsigned short entier court 0 65535 2
unsigned int entier standard 0 65535 2
unsigned long entier long 0 4294967295 4
B) Les réels
définition précision mantisse domaine min domaine max nombre d'octets
float simple 6 3.4 * 10-38 3.4 * 1038 4
double double 15 1.7 * 10-308 1.7 * 10308 8
long double suppl. 19 3.4 * 10-4932 1.1 * 104932 10
C) Les caractères
définition description domaine min domaine max nombre d'octets
char Caractère -128 127 1
unsigned char Caractère 0 255 1
11
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
B . Opérateurs logiques
&& et logique (and)
|| ou logique (or)
! négation logique (not)
C. Opérateurs de comparaison
== égal à
!= différent de
<, <=, >, >= plus petit que, ...
D . Opérateurs d'affectation
= Affectation ordinaire X=Y
+= ajouter à X+=Y X=X+Y
-= diminuer de X-=Y X=X-Y
*= multiplier par X*=Y X=X*Y
/= diviser par X/=Y X=X/Y
%= modulo X%=Y X=X%Y
-- Décrémentation de 1 X-- X=X-1
++ Incrémentation de 1 X++ X=X+1
X = i++ passe d'abord la valeur de i à X et incrémente après
X = i-- passe d'abord la valeur de i à X et décrémente après
X = ++i incrémente d'abord et passe la valeur incrémentée à X
X = --i décrémente d'abord et passe la valeur décrémentée à X
9.6 Lecture
La lecture en langage C s’effectue avec l’utilisation de la fonction scanf qui permet de saisir des données au
clavier et de les stocker aux adresses spécifiées par les arguments de la fonction.
Scanf ("chaîne de contrôle", argument-1,..., argument-n)
Exemple: Int x ; scanf ("%d",&x);
9 .7 Ecriture
L’écriture en C s’effectue à travers la fonction printf.
Sa syntaxe est : printf ("chaîne de contrôle ", expression-1, ..., expression-n);
Exemple: Int x,y,s ; s=x+y ; printf ("La some = %d \n",s);
Exemple:
#include <stdio.h>
#include <math.h>
main()
{
const float Pi=3.14159;
float R,S,C ;
printf (" Entrez le rayon du cercle: ");
scanf ("%f",&R);
S=Pi* (pow (R,2));
C=2*Pi*R;
printf ("La circonference du cercle = %f\n",C);
}
12
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
Introduction
Les instructions Structurées (ou structures de contrôle) sont des instructions composées qui permettent de
spécifier des traitements complexes, à partir d’instructions élémentaires, et d’exprimer la façon dont
s’enchainent ces instructions. Il existe trois classes de ces instructions, à savoir : la séquence (l’enchainement
naturel), l’alternative (l’enchainement conditionnel) et l’itération (l’enchainement répété).
Dans le cas des structures conditionnelles (alternatives) L’exécution d’un bloc d’instructions peut être
conditionnée par la vérification d’une condition.
Il existe plusieurs formes de structure de contrôle :
Remarque: En langage C, si on ne met pas les accolades, le compilateur va considérer uniquement la première
instruction comme instruction subordonnée à la structure if.
Exemple : Ecrire un algorithme qui affiche la valeur absolue d’un nombre entier A
13
Universitaire de Tiaret Matière: Algorithmique et Structure de Données1
Exemple : Ecrire un algorithme qui fait la comparaison de deux nombres entiers positifs N1 et N2.
5- Le branchement (sauts) :
Une instruction de branchement nous permet de sauter à un endroit du programme et continuer l’exécution à
partir de cet endroit. Pour réaliser un branchement il faut tout d’abord indiquer la cible du branchement via une
étiquette <etiq>. Ensuite on saute à cet endroit par l’instruction aller à <etiq> (go to <etiq> en C).
Algorithme Langage C
Aller à <etiq> goto <etiq> ;
Action 1 Action 1 ;
Action 2 Action 2 ;
. .
Action N-2 Action N-2 ;
<etiq> : Action N-1 etiq : Action N-1 ;
Action N Action N ;
Action N+1 Action N+1 ;
Exemple 1 :
5.1 Le branchement inconditionnel: c’est un branchement sans condition, il n’appartient pas à un bloc
(Si (cond) Alors). Voir l’exemple 1.
5.1 Le branchement conditionnel: c’est un branchement avec condition, il appartient pas à un bloc
(Si (cond) Alors).
Exemple 2 :
16