ASDD1
ASDD1
ASDD1
Programme :
Chapitre 1 : Introduction
Chapitre 2 : Algorithme séquentiel simple et Instruction de base
Chapitre 3 : Les structures conditionnelles
Chapitre 4 : Les boucles
Chapitre 5 : Les tableaux et les chaines de caractères
Chapitre 6 : les types personnalisés
1
Matière: Algorithmique et Langage
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
Quatrième Génération d'ordinateurs :
Après l'apparition du ''microprocesseur''. Le premier microprocesseur est fabriqué par la société INTEL en
1971. Les ordinateurs (microordinateur) qui sont construits autour de microprocesseur constituent les
ordinateurs de la 4ème génération.
Exemple de microordinateurs:
– MICRAL 8008 (1973)
– ALTAIR 8008 (1973)
– APPLE1 (1976)
– IBM PC (1981)
– PENTUIM etc. ...
Actuellement l'évolution des ordinateurs tend à exploiter le laser, les fibres optiques, la biochimie ou ordinateur
moléculaire.
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
2.4 Propriétés d’un algorithme :
. Le concepteur d’un algorithme doit prévoir tous les cas possibles d’exécution.
. Un algorithme doit être toujours fini (nombre d’actions fini)
. La solution d’un même problème, peut être décrite avec plusieurs algorithmes (façons).
. Un algorithme est plus efficace qu’un autre, s’il est plus clair et plus rapide (moins d’actions)
. Pour la mise en pratique d’un algorithme sur l’ordinateur, il faut passer par un langage de programmation ou
programme.
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
Chapitre II : Algorithme séquentiel simple
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
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
À 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 chaine.Exp : length(‘Tiaret’)=6
Exemple :
Var
i,j,k : entier ;
x,y,z : réel ;
7
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
Exemple :
L’algorithme de l’exemple précédent (somme de deux entiers) peut être représenté sous l’organigramme
suivant :
10
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
Chapitre 3 : Les structures conditionnelles (en langage algorithmique et en C)
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
Organigramme Algorithme Langage C
Si (condition) Alors If (condition)
Instruction 1 Instruction 1 ;
Faux Vrai Sinon else
Condition
Instruction 2 Instruction 2 ;
Fin Si
Instruction(s) 2 Instruction(s) 1 If (condition)
Si (condition) Alors {
Instruction 1 Instruction 1 ;
Instruction 2 Instruction 2 ;
La suite des instructions else }
Instruction 3 else
Instruction 4 {
Fin Si Instruction 3 ;
Instruction 4 ;
}
Exemple : Ecrire un algorithme qui détermine si le nombre entier introduit est pair ou impair.
Solution en LA Solution en Langage C
Algorithme pair_impair ; #include<stdio.h>
Var a : entier ; int main()
Début {
Lire (a) ; int a;
Si (a mod 2 = 0) alors printf("Donner a: ");
Ecrire (a,’est pair’) ; scanf("%d",&a);
Sinon if (a%2 == 0)
Ecrire (a,’ est impair’) ; printf("%d est pair \n", a);
Fin si else
Fin printf("%d est impair \n",a);
return 0 ;
}
3. Structures conditionnelles imbriquées
Une structure de contrôle conditionnelle est dite imbriquée lorsqu'elle permet de résoudre des problèmes
comportant plus de deux traitements en fonction des conditions. L'exécution d'un traitement entraîne
automatiquement la non-exécution des autres traitements.
Algorithme Langage C
Si (condition 1) Alors If (condition)
Traitement 1 Traitement 1 ;
Sinon else if (condition 2)
Si (condition 2) Alors Traitement 2 ;
Traitement 2 else if (condition 3)
Sinon Traitement 3 ;
Si (condition 3) Alors else if
Traitement 3 ……………
Sinon else if (condition n-1)
…………. Traitement n-1 ;
Sinon else
Si (condition n-1) Alors Traitement n ;
Traitement n-1
Sinon
Traitement n
Fin Si
Fin Si
Fin Si
Fin Si
Fin Si
14
Exemple : Ecrire un algorithme qui fait la comparaison de deux nombres entiers positifs N1 et N2.
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