0% ont trouvé ce document utile (0 vote)
81 vues25 pages

Algorithmique 1

Le document présente le plan du cours d'Algorithmes et structures de données 1 à l'Université Batna2, incluant des chapitres sur l'introduction à l'informatique, les algorithmes séquentiels, les structures conditionnelles, et les types personnalisés. Il aborde également des concepts fondamentaux tels que l'informatique, l'algorithmique, les algorithmes, et les langages de programmation. Enfin, il décrit les étapes de résolution de problèmes et les bases d'un langage algorithmique.

Transféré par

yahiaoui.walidd
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
81 vues25 pages

Algorithmique 1

Le document présente le plan du cours d'Algorithmes et structures de données 1 à l'Université Batna2, incluant des chapitres sur l'introduction à l'informatique, les algorithmes séquentiels, les structures conditionnelles, et les types personnalisés. Il aborde également des concepts fondamentaux tels que l'informatique, l'algorithmique, les algorithmes, et les langages de programmation. Enfin, il décrit les étapes de résolution de problèmes et les bases d'un langage algorithmique.

Transféré par

yahiaoui.walidd
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Batna2

Faculté de Maths et Informatique


Département du Socle Commun Mathématique et Informatique
Année universitaire 2020-2021

Algorithmes et structure de données 1

Plan du cours :
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

Madame Malika Bachir - première année, premier semestre 2019-2020. Batna

[Link]
Chapitre 1 Introduction

Chapitre 1
Introduction
1 Bref historique sur l’informatique
2 Introduction à l’algorithmique

Ce chapitre a pour objectif de présenter en bref c’est quoi l’informatique, ensuite de présenter l’objet
de ce cours qui est l’algorithmique.

1. Introduction
1.1. L'informatique
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.
1.2. L’information
L’information est un ensemble d’événements qui peuvent être communiqué à l’ordinateur. Elle peut
être : texte, son, image, vidéo, …
1.3. L’ordinateur
L’ordinateur est un appareil très puissant permettant de traiter les informations avec une très grande
vitesse, un degré de précision élevé et a la faculté de stocker toutes ces informations. L’ordinateur peut
recevoir des données en entrée, puis effectuer des opérations sur ces données en fonction d’un
programme, et enfin fournir des résultats en sortie.
L’ordinateur est composé de deux parties : la partie matérielle et la partie logicielle. La combinaison de
ces deux parties forme ce qu’on appelle : système informatique.
1.3.1. Partie matérielle (Hardware)
C’est la partie physique et palpable du système informatique. Elle est divisée en :
 L’unité centrale
 Les périphériques
a. L’unité centrale (UC)
C’est l’élément fonctionnel central de tout ordinateur et c’est là où s’effectue l’essentiel du traitement
de l’information. A l’intérieur on trouve comme composant principal ce qu’on appelle la carte mère.
Sur la carte mère on trouve toutes l’électroniques de l’ordinateur, comme composants principales on
trouve le microprocesseur (CPU) et la mémoire interne.
 Le microprocesseur c’est le cerveau de l’ordinateur c-à-d c’est le responsable de toute opération
effectuée à l’intérieur de l’ordinateur (exp. imprimer une page, dessiner un tableau, écouter une
chanson, faire un calcul, envoyer un mail, etc.). Classiquement, le processeur est composé de trois
parties :
 L'unité logique, dont la mission est d'assurer les opérations de type logique (supérieur,
inférieur, égal, intersection (ET), union (OU)... ;
 L'unité arithmétique, capable de réaliser les opérations mathématiques ;
 L'unité de commande et de contrôle, permettant de contrôler le fonctionnement de
l'ordinateur.
2

[Link]
Chapitre 1 Introduction

 La mémoire est distinguée en deux types : RAM et ROM.


 La RAM est la mémoire centrale ou la mémoire vive de l'ordinateur, qui charge les éléments de
programme à faire fonctionner (c’est l’espace de travail du processeur). Cette mémoire est
appelée vive puisque son contenu change toujours, elle est purement volatile c-à-d son contenu
s'efface lorsque l'ordinateur n'est plus alimenté en électricité.
 La ROM est la mémoire qui contient un programme nécessaire pour le démarrage de
l’ordinateur (BIOS), elle s’appelle mémoire morte puisque son contenue ne change jamais par
un simple utilisateur (ni modifier, ni supprimer, ni ajouter).
Comme la RAM ne peut pas sauvegarder les informations de l’utilisateur (mémoire volatile), ainsi que
la ROM (mémoire morte), alors d’où peut on sauvegarder par exemple un travail de toute la journée ?
c’est là intervenu ce qu’on appelle supports de stockage (ou mémoires externes, mémoires auxiliaires,
mémoires de masse).
 Les supports de stockage : permettent de sauvegarder les informations. Exemples : disque dur,
Lecteur de disquettes, lecteur de disques amovibles (Zip ou autre), lecteur de cédéroms ou DVD
gravés, clé USB, disque dur externe, … etc.
b. Les périphériques
C’est tout accessoire qu’on peut connecter à un ordinateur. La connexion se fait au moyen de câbles
branchés sur des ports spécifiques (des ouvertures) situés généralement à l’arrière de l’unité centrale.
On distingue :
 Périphériques d’entrée : Ils permettent de véhiculer les informations du monde extérieur vers la
mémoire de l’ordinateur. Exp : le clavier, la souris, le scanner, le microphone, lecteur de codes-
barres, crayon à lecture optique.
 Périphériques de sorties : permettent de véhiculer les informations de la mémoire de l’ordinateur
vers le monde extérieur. Exp : l’écran, l’imprimante, les enceintes audio.
1.3.2. Partie logiciel (software)
Tout ce qui concerne les programmes nécessaires pour le bon démarrage et l’utilisation du micro-
ordinateur. Un programme est une série d'instructions (opérations) que la machine peut exécuter pour
effectuer des traitements donnés.
Un logiciel est en général un ensemble de programmes visant à effectuer automatiquement un
traitement ou une tâche complexe.
Une machine peut héberger plusieurs logiciels au choix de son utilisateur. Cependant, un système
d'exploitation dit aussi système opératoire est un logiciel de base qui doit faire l'objet de la première
installation. Un système d'exploitation fut un ensemble de programmes assurant d'une part, le
fonctionnement de toutes les composantes matérielles d'un ordinateur et d'autre part, la
communication Homme/Machine. Exp : MS-DOS (Microsoft Disk Operating System), Windows 95,
Windows 98, 2000, XP, Unix et Linux.
Une fois l’homme peut communiquer l’ordinateur, qu’est ce qu’il peut faire avec cette machine ? 
Ce sont les logicielles d’applications qui lui indiquent ce qu’il veut faire.
Le logiciel d’application est destiné aux taches particulières et à chaque logiciel d’application
correspond une tache précise.

[Link]
Chapitre 1 Introduction

Exemple des applications de l’ordinateur :


 MS Word…………..traitement de texte
 MS Excel……………analyse financière et graphique.
 MS Power Point……….présentation assistée par l’ordinateur.
 Real one Player………..pour lire la musique
 Exploitation de CD
 Le chat, le mail, Messenger, ….
 La programmation : qui est l’objet de ce cours
Alors, nous essayons de répondre à ces trois questions :
1. C’est quoi la programmation ?
2. Pourquoi programmer ?
3. Comment programmer ?
En bref, nous pouvons dire :
La programmation est l’ensemble des activités orientées vers la conception, la réalisation, le test et
la maintenance de programmes.
Un programme est une suite d’instructions ou opérations pour résoudre un problème donné, pour
soulager l’homme de l’effort, pour gagner du temps et plus particulièrement pour éviter les fautes.
Pour programmer, nous devons d’abord connaitre et maîtriser ce qu’on appelle Algorithme. Alors
l’algorithme est la base de la programmation qui vous suit durant toutes les années de vos études.
Si on veut donner la définition d’un algorithme, on dit qu’elle est similaire à celle du programme ? alors,
qu’elle est la différence.
L’algorithme est une suite d’instructions ou opérations finies et ordonnées pour résoudre un problème
donné, écrit dans le langage de l’utilisateur (un langage qui n’est pas compris par l’ordinateur), tandis
que le programme est écrit dans un langage comprit par l’ordinateur, ce langage est appelé langage
de programmation.
Nous pouvons dire qu’un programme est un algorithme traduit dans un langage de programmation.

Nous verrons ces notions en détaille dans les chapitres qui suivent.

[Link]
Chapitre 2 Algorithme Séquentiel Simple

Dans ce chapitre, nous présentons des notions de base sur l’algorithmique, c-à-d comment écrire un
algorithme qui résout un problème donné tout, à savoir : utiliser les actions de base (affectation,
lecture, écriture), définir les notions de variable et constante, définir le types d’une variable et déclarer
une variable, …
__________________________________________________________________________________

1. Notion d’algorithme
Un programme informatique permet à l’ordinateur de résoudre un problème, mais avant de
communiquer à l’ordinateur comment résoudre ce problème, il faut en premier lieu pouvoir le
résoudre nous même  faire un algorithme.
1.1. L'algorithmique désigne la discipline qui étudie les algorithmes et leurs applications en
informatique
1.2. Un algorithme est une méthode permettant de résoudre un problème donné en un temps fini;
le mot algorithme vient du nom du célèbre mathématicien arabe Al Khawarizmi (Abu Ja'far Mohammed
Ben Mussa Al-Khwarismi)

1.3. Le programme ne sera que la traduction de l'algorithme dans un langage de programmation,


c'est-à-dire, un langage plus simple que le français dans sa syntaxe, sans ambiguïtés, que la machine
peut utiliser et transformer pour exécuter les actions qu'il peut décrire. Pascal, C, Java et Visual Basic
sont des noms de langages de programmation.
1.4. Algorithme et programme
 L’élaboration d’un algorithme précède l’étape de programmation
 Un programme est un algorithme
 Un langage de programmation est un langage compris par l'ordinateur
 L’élaboration d’un algorithme est une démarche exigeante de résolution de problème
 La rédaction d’un algorithme est un exercice de réflexion qui se fait sur papier
 L'algorithme est indépendant du langage de programmation, par exemple, on utilisera le même
algorithme pour une implantation en Java, ou bien en C++ ou en Visual Basic
 L’algorithme est la résolution brute d’un problème informatique.
1.5. 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
5

[Link]
Chapitre 2 Algorithme Séquentiel Simple
Le pseudo-code : représentation textuelle avec une série de conventions ressemblant à un langage de
programmation (il s’agit d’un langage informel proche du langage naturel et indépendant de tout
langage de programmation).
 Il est plus pratique pour écrire un algorithme
 Sa représentation est largement utilisée
1.6. Etapes de résolution d'un problème (Algorithme)
1. Comprendre l'énoncé du problème
2. Décomposer le problème en sous-problèmes plus simple à résoudre
3. Associer à chaque sous problème, une spécification :
 Les données nécessaires
 Les données résultantes
1. La démarche à suivre pour arriver au résultat en partant d'un ensemble de données.
2. Elaboration d'un algorithme
1.7. Réalisation d’un programme
La résolution d’un problème donné passe par une succession d’étapes à savoir :
Problème  Enoncé explicite  Algorithme  Programme
Durant l'écriture d'un programme, on peut être confronté à 2 types d'erreur :
 Les erreurs syntaxiques : elles se remarquent à la compilation et sont le résultat d'une mauvaise
écriture dans le langage de programmation.
 Les erreurs sémantiques : elles se remarquent à l'exécution et sont le résultat d'une mauvaise
analyse. Ces erreurs sont beaucoup plus graves car elles peuvent se déclencher en cours
d'exploitation du programme.
1.8. Langages de programmation (langages informatiques)
Un 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. Le langage de programmation est l’intermédiaire entre le programmeur et la
machine. Il permet d’écrire des programmes (suite consécutive d’instructions) destinés à effectuer une
tache donnée.
On distingue deux types de langages :
 Langages procéduraux : Fortran, Cobol, Pascal, C, …
 Langages orientés objets : C++, Java, C#,…
Le choix d'un langage de programmation n'est pas facile, chacun a ses spécificités et correspond mieux
à certains types d'utilisations.

[Link]
Chapitre 2 Algorithme Séquentiel Simple
1.9. Bases d’un langage algorithmique
1.9.1. Structure de Base
En pseudo-code la structure générale d’un algorithme est la suivante :
Algorithme nom_de_l'algorithme
CONST {Définition des constantes}
TYPE {Définition de types} ils sont facultatifs (s’il n’y a pas de var ou const ou
VAR {Déclaration de variables} type on ne les écrit pas)
DEBUT
{Suite d'instructions}
FIN.
 Partie en-tête : c’est la première ligne de l’algorithme, elle commence par le mot algorithme suit
d’un espace puit le nom de l’algorithme.
 Partie déclarations : dans cette partie, toutes objets utilisés dans la résolution du problème doivent
êtres déclarés.
 Partie traitement : cette partie commence par le mot Début et se termine par le mot Fin, elle
contient les actions utilisées dans la résolution du problème.
1.9.2. Instructions de base
Un algorithme est formé de quatre types d’instructions considérées comme des petites briques de
base :
1. L’affectation de variables
2. La lecture et/ou l’écriture
3. Les tests
4. Les boucles
Avant de décrire ces instructions, nous présentons d’abord la notion de variable et constante.
1.9.3. Constantes et variables
On sépare les objets en deux classes : les constantes et les variables.
[Link]. Notion de variable
Les données manipulées dans un algorithme sont appelées des variables. Une variable sert à stocker la
valeur d’une donnée dans un langage de programmation. Elle désigne un emplacement mémoire dont
le contenu peut changer au cours d’un programme (d’où le nom de variable).
Chaque emplacement mémoire a un numéro qui permet d'y faire référence de façon unique : c'est
l'adresse mémoire de cette cellule.
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
Identificateurs : règles
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)

[Link]
Chapitre 2 Algorithme Séquentiel Simple
 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
Remarque : en pseudo-code algorithmique, on va respecter les règles citées, même si on est libre
dans la syntaxe
Types des variables
Le type d’une variable détermine l’ensemble des valeurs qu’elle peut prendre. Les types offerts par la
plupart des langages sont :
 Type numérique (entier ou réel)
 Byte (codé sur 1octet): de [-27,27[ ou [0, 28[
 Entier court (codé sur 2 octets) : [-215,215[
 Entier long (codé sur 4 octets): [-231,231[
 Réel simple précision (codé sur 4 octets) : précision d’ordre 10-7
 Réel double précision (codé sur 8 octets) : précision d’ordre 10-14
 Type logique ou booléen : deux valeurs VRAI ou FAUX
 Type caractère : lettres majuscules, minuscules, chiffres, symboles, ... . Exemples : ’A’, ’b’, ’1’, ’?’, …
 Type chaîne de caractère : toute suite de caractères. Exemples : " " , " Nom, Prénom", "code
postale: 1000", …
A) Entier : Pour représenter les nombres entiers, les opérations utilisables sur les entiers sont :
 Toutes les opérations élémentaires de bases sont permises : + , - , * , /
 Les opérateurs de comparaison classiques : <, >, =, ...
 La division / est la division euclidienne (ou entière). Ex : 11 / 4 = 2 et non pas 2.75 !)
 Il existe l’opérateur modulo %, qui donne le reste de la division euclidienne. Ex : 11%4 = 3
B) Réel : Pour représenter les nombres réels, les opérations utilisables sur les réels sont :
 Les opérations arithmétiques classiques : + (addition), - (soustraction), * (produit), / (division)
 Les opérateurs de comparaison classiques : <, >, =, ...
 La division / donne un résultat décimal
 L’opérateur modulo % n’existe pas
C) Booléen : Une variable de type logique (booléen) peut prendre deux valeurs : VRAI ou FAUX. Les
opérations principales les plus utilisées sont :
• Les opérateurs logiques : NON, ET, OU
Tables de vérité :

A B A ET B A OU B A NON A
FAUX FAUX FAUX FAUX
FAUX VRAI
FAUX VRAI FAUX VRAI
VRAI FAUX
VRAI FAUX FAUX VRAI
VRAI VRAI VRAI VRAI

[Link]
Chapitre 2 Algorithme Séquentiel Simple
• Opérateurs de comparaison : =, ≤, ≥, ≠
D) Caractère
Il s'agit du domaine constitué des caractères alphabétiques et numériques. Une variable de ce type ne
peut contenir qu'un seul et unique caractère. Les opérations élémentaires réalisables sont les
comparaisons : <, >, =, ...
E) Chaine de caractère
Une chaine de caractère est un objet qui peut contenir plusieurs caractères de manière ordonnée.

Déclaration des variables


Rappel : toute variable utilisée dans un programme doit avoir fait l’objet d’une déclaration préalable
En pseudo-code, la déclaration de variables est effectuée par la forme suivante :
Variables liste d'identificateurs : type
Exemple :
Variables i, j, k : entier
x, y : réel
OK : booléen
Ch1, ch2 : chaîne de caractères
En C : types de base :
 char (caractères) Par exemple : ’a’...’z’, ’A’...’Z’,...
 int (entiers) Par exemple : 129, -45, 0, ...
 float (réels) Par exemple : 3.14, -0.005, 67.0, ...
De façon générale leur déclaration est comme suit :
<type> <nom> ;
<type> <nom1>,<nom2>,<nom3> ;
Exemples :
int a;
float valeur, res;
char a,b,c ;

Déclarer une variable revient à lui réserver un emplacement mémoire. On ne connait pas sa valeur
initiale !
[Link]. Notion de constante
Une constante est une variable 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. En pseudo-code,
Constante identificateur=valeur (par convention, les noms de constantes sont en majuscules)
Exemple : pour calculer la surface des cercles, la valeur de pi est une constante mais le rayon est une
variable.
 Constante PI=3.14, MAXI=32
 Une constante doit toujours recevoir une valeur dès sa déclaration.
En C :
1. Les constantes littérale : Exp. Int a=10 ; float tax_rate = 0.28;
2. Les constantes symboliques
2.1. #define PI 3.14159 (#define peut se trouver n’importe où dans le code source, mais son effet est limité à la
partie de code qui la suit. En général, les programmeurs groupent tous les #define ensemble, au début du
fichier, avant la fonction main() ).
2.2. const float pi = 3.14159;

[Link]
Chapitre 2 Algorithme Séquentiel Simple
1.9.4. Opérations de base
Dans ce qui suit nous décrivons la liste des opérations de base pouvant composer un algorithme. Elles
sont décrites en pseudocode (pseudolangage).
[Link]. Affectation
L’affectation consiste à attribuer une valeur à une variable (c’est-à-dire remplir ou modifier le contenu
d'une zone mémoire). En pseudo-code, l'affectation est notée par le signe ←
 Var← e : a ribue la valeur de e à la variable Var
 e peut être une valeur, une autre variable ou une expression
 Var 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
Exemples 1 : i ←1, j ←i , k ←i+j , x ←10.3 , OK ←FAUX , ch1 ←"SMI" , ch2 ←ch1 , x ←4 , x ←j
(avec i, j, k : entier; x :réel; ok :booléen; ch1,ch2 :chaine de caractères)
Exemples non valides : i ←10.3 , OK ←"SMI" , j ←x
Exemples 2
a ←10 a reçoit la constante 10
a ← (a*b)+c a reçoit le résultat de (a*b)+c
d ←'m' d reçoit la lettre m
Remarques
 Le langage de programmation C utilisent le signe égal = pour l’affectation ←.
 Lors d’une affectation, l’expression de droite est évaluée et la valeur trouvée est affectée à la
variable de gauche. Ainsi, A←B est différente de B←A
 L’affectation est différente d'une équation mathématique :
 Les opérations x ← x+1 et x ← x-1 ont un sens en programmation et se nomment respectivement
incrémentation et décrémentation.
 A+1 ← 3 n'est pas possible en langages de programma on et n'est pas équivalente à A ← 2
 Certains langages donnent des valeurs par défaut aux variables déclarées. Pour éviter tout problème
il est préférable d'initialiser les variables déclarées.
Exemple en C
int n;
int p;
n = 10;
p = 2*n-3;
Quelques opérateurs bien pratiques
 i + + : opérateur permettant d’ajouter une unité à la variable i (de type int ou char)
 i - - : idem mais pour retirer une unité
 x* = y, x/ = y, x- = y, x+ = y : opérateurs permettant de multiplier (diviser, soustraire ou ajouter) x par y (pas
de restriction de type)

[Link]. La lecture
Lire(variable)
Cette opération permet d'attribuer à une variable une valeur introduite au moyen d'un organe d'entrée
(généralement le clavier).
Exemples de lecture
Lire(a) On demande à l'utilisateur d'introduire une valeur pour a
Lire(a,b,c) On demande à l'utilisateur d'introduire 3 valeurs pour a, b et c respectivement

10

[Link]
Chapitre 2 Algorithme Séquentiel Simple

En C :
Saisie avec scanf.
 Permet de lire sur l’entrée standard (le clavier)
 scanf(‘‘<code format>‘‘, &<variable>); avec <code format> = %d, %f ou %c pour lire un entier, un flottant
ou un caractère.
Exemples
 int n; scanf(‘‘%d‘‘, &n);
 float x; scanf(‘‘%f‘‘, &x);
 char a ; scanf((‘‘%c‘‘, &a);

Remarque : Le programme s'arrête lorsqu'il rencontre une instruction Lire et ne se poursuit qu'après
la saisie de l’entrée attendue par le clavier et de la touche Entrée (cette touche signale la fin de l’entrée)
Conseil : Avant de lire une variable, il est fortement conseillé d’écrire des messages à l’écran, afin de
prévenir l’utilisateur de ce qu’il doit frapper
[Link]. L’écriture
Ecrire(expression)
Elle communique une valeur donnée ou un résultat d'une expression à l'organe de sortie.
Exemples d'écriture
Ecrire('bonjour') Affiche le message bonjour (constante)
Ecrire(12) Affiche la valeur 12
Ecrire(a,b,c) Affiche les valeurs de a, b et c
Ecrire(a+b) Affiche la valeur de a+b
Ecrire(a, b+2, "Message") Affiche la valeur de a, puis la valeur de l’expression b+2 et enfin le mot
’’message’’ .

Exemples en C
 printf(‘‘hello nn ‘‘);
 int x=10; printf(‘‘valeur de x = %dnn ‘‘,x);
 int x=10; float y = 3.4; printf(‘‘valeur de x = %d et de y+x = %fnn ‘‘,x,y+x);
Principaux codes de format
 %d pour le type int
 %c pour le type char
 %f pour le type float
Caractères de mise en forme
 /n : retour à la ligne
 /r : retour en début de ligne courante
 /t : tabulation

1.9.5. Syntaxe générale de l’algorithme


Algorithme exemple
Constantes var1=20 , var2="bonjour!"
Variables
var3, var4 : réels
var5 : caractère
Début // corps de l’algorithme
Instructions 1
Instructions 2
………….
Instructions n
Fin

11

[Link]
Chapitre 2 Algorithme Séquentiel Simple
Notes :
 Les instructions d'un algorithme sont habituellement exécutées une à la suite de l'autre, en
séquence (de haut en bas et de gauche à droite).
 L'ordre d’exécution est important
 On ne peut pas changer cette séquence de façon arbitraire
1.9.6. 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
Exemples : 1, b, a*2, a+ 3*b-c, …
L'évaluation de l'expression fournit une valeur unique qui est le résultat de l'opération
Les opérateurs dépendent du type de l'opération, ils peuvent être :
 Des opérateurs arithmétiques : +, -, *, /, % (modulo), ^(puissance)
 Des opérateurs logiques : NON(!), OU(| |), ET (&&)
 Des opérateurs relationnels : =, <, >, <=, >=
 Des opérateurs sur les chaînes : & (concaténation)
 Une expression est évaluée de gauche à droite mais en tenant compte des priorités des opérateurs.
Remarque :
 On ne peut pas additionner un entier et un caractère
 Toutefois dans certains langages on peut utiliser un opérateur avec deux opérandes de types
différents, c’est par exemple le cas avec les types arithmétiques (4 + 5.5)
 La signification d’un opérateur peut changer en fonction du type des opérandes, par exemple
o L’opérateur + avec des entiers effectue l’addition, 3+6 vaut 9
o Avec des chaînes de caractères il effectue la concaténation, "bonjour" + " tout le monde" vaut
"bonjour tout le monde"

1.9.7. 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)
• % (modulo)
• +, - (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
 À priorité égale, l’évaluation de l’expression se fait de gauche à droite
1.9.8. Les opérateurs booléens
Associativité des opérateurs et et ou a et (b et c) = (a et b) et c
Commutativité des opérateurs et et ou a et b = b et a a ou b = b ou a
Distributivité des opérateurs et et ou a ou (b et c) = (a ou b) et (a ou c) a et (b ou c) = (a et b) ou (a et c)
Involution (homographie réciproque) : non non a = a _ Loi de Morgan : non (a ou b) = non a et non b
non (a et b) = non a ou non b
Exemple : soient a, b, c et d quatre entiers quelconques :
(a<b)| |((a>=b)&&(c==d))  (a<b)| |(c==d) car (a<b)| |(!(a<b)) est toujours vraie
12

[Link]
Chapitre 2 Algorithme Séquentiel Simple
Exercice 1 :
Quel est le type de chaque variable :
A=1, B=vrai, test= 12.23, specialite=’m’,
Exercice 2 :
Soient A, B deux variables de types entiers, C, D deux variables de type réel, E, F deux variables de type
booléen.
Quel est le type des variables suivants : A1, B1, C1, A2, B2, C2, D2, A3, B3, C3, D3
A1  A+B ; B1A*B; C1A/B;
A2C+D; B2C*D; C2C/D; D2A*C;
A3E ou F; B3E et F; C3(A>B) ; D3Faux ;
Exercice 3 :
Quel sont les identificateurs valides et ceux qui ne sont pas valides :
A, cA, 12, 1A, A1, A12m, bougie, test?, SI .
Exercice 4 :
Donnez les valeurs des variables A, B et C après exécution des instructions suivantes ?
Variables A, B, C : Entier
Début
A←7
B ← 17
A←B
B ← A+5
C←A+B
C←B–A
Fin
Exercice 5 :
Donnez les valeurs des variables A et B après exécution des instructions suivantes ?
Variables A, B : Entier
Début
A←6
B←2
A←B
B←A
Fin
Les deux dernières instructions permettent-elles d’échanger les valeurs de A et B ?
Exercice 6 :
Écrire un algorithme permettant d’échanger les valeurs de deux variables A et B ?
Exercice 7 :
Écrire un algorithme qui permet d’effectuer la saisie d’un nom, d’un prénom et affiche ensuite le nom
complet.
Exercice 8 :
Écrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui calcule et affiche le carré
de ce nombre.
Exercice 9
On dispose de trois variables A, B et C. Ecrivez un algorithme transférant à B la valeur de A, à C la valeur
de B et à A la valeur de C (quels que soient les contenus préalables de ces variables).
Exercice 10 :
Ecrire un programme qui permet d’introduire un nombre et d’afficher son double ainsi que sa moitié.

13

[Link]
Chapitre 3 Les structures conditionnelles (en langage algorithmique et en C)

Ce chapitre a pour but de présenter l’action conditionnelle dans ces trois formes : l’action
conditionnelle simple (réduite et alternée), l’action conditionnelle généralisée (imbriquée) et l’action
conditionnelle à choix, ainsi une traduction de ces formes en langage C. le chapitre est terminé par une
suite d’exercices à résoudre pour vous entraîner à domicile.

Souvent les problèmes nécessitent l'étude de plusieurs situations qui ne peuvent pas être traitées par
les séquences d'actions simples. Par exemple pour résoudre une équation de second degré, après le
calcul du déterminant on a besoin de tester ce dernier s’il est positif, négatif ou nul. Les instructions
lire(), ecrire() et affectation  ne peuvent indiquer ce signe ; autres instructions sont alors s’imposent,
ce sont les structures conditionnelles qui le permettent.

On appelle structure conditionnelle les instructions qui permettent de tester si une condition (voir
page 16) est vraie ou non.

1. Définition
La structure de contrôle conditionnelle permet à un programme de modifier son traitement en fonction
d'une condition. Il existe trois formes d'instructions conditionnelles :
 Forme simple
 Forme généralisée (imbriquée)
 Forme à choix
1.1. La structure de contrôle conditionnelle simple
Elle est distinguée par deux formes : réduite et alternée
a) La forme réduite
1 Définition : Une structure de contrôle conditionnelle est dite à forme simple réduite lorsque le
traitement dépend d'une condition. Si la condition est évaluée à « vrai », le traitement est exécuté.
2 Vocabulaire et syntaxe :
Algorithme Code C
Si (condition) Alors If (condition)
Instruction 1 Instruction 1 ;
Fin Si

Si (condition) Alors If (condition)


Instruction 1 {
Instruction 2 Instruction 1 ;
……………….. Instruction 2 ;
Instruction n ………………..
Fin Si Instruction n ;
}

Remarque : Instruction peut être n’importe quelle action utilisée dans l’algorithme (←, lire, écrire, si,
sinon, pour, tant que, répéter)
b) La forme alternative :

14

[Link]
Chapitre 3 Les structures conditionnelles (en langage algorithmique et en C)
1 Définition : Une structure de contrôle conditionnelle est dite à forme alternative lorsque le
traitement dépend d'une condition à deux états : Si la condition est évaluée à « vrai », le premier
traitement est exécuté ; Si la condition est évaluée à « faux », le second traitement est exécuté.
2 Vocabulaire et syntaxe :
Algorithme Code C
Si (condition) Alors If (condition)
Instruction 1 Instruction 1 ;
Sinon else
Instruction 2 Instruction 2 ;
Fin Si

Si (condition) Alors If (condition)


Instruction 1 {
Instruction 2 Instruction 1 ;
else Instruction 2 ;
Instruction 3 }
Instruction 4 else
Fin Si {
Instruction 3 ;
Instruction 4 ;
}
1.2. La structure de contrôle conditionnelle généralisée
1 Définition : Une structure de contrôle conditionnelle est dite généralisé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.
2 Vocabulaire et syntaxe :
Algorithme Code 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
15

[Link]
Chapitre 3 Les structures conditionnelles (en langage algorithmique et en C)
Remarques :
 Il est préférable de mettre les événements les plus probables en premier lieu.
 Chaque traitement peut comporter une ou plusieurs instructions.
1.3. La structure de contrôle conditionnelle à choix
Une structure de contrôle conditionnelle est dite à choix lorsque le traitement dépend de la valeur que
prendra un sélecteur. Ce sélecteur est de type entier, caractère ou booléen.
1 Vocabulaire et syntaxe :
Algorithme Code C
Selon sélecteur Faire switch (selecteur)
Valeur 1 : Action 1 {
Valeur 2 : Action 2-1 case Valeur 1 : Action 1 ; break ;
Action 2-2 case Valeur 2 : Action 2-1 ;
Action 2-n Action 2-2 ;
Valeur3,valeur 4: Action4 Action 2-n ; break ;
Valeur 5 .. Valeur 7 :Action 6 case Valeur3 :
….. case valeur 4 : Action4 ; break ;
Valeur N : Action N case Valeur5 :
Sinon case valeur 6
Action R case valeur 7 : Action 5 ; break ;
FinSelon ……..
case Valeur N : Action N ; break ;
default :
Action R ;
}

2. La Condition
La condition est une expression booléenne simple ou une suite composée d’expressions booléennes.
Une condition simple est composé d’un seul opérateur de comparaison (=, ≠, <, ≤, >,≥).
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.
Exemples :
 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)
 x est vrai et y est faux : (x=vrai) et (non y)
 Deux valeurs et deux seulement sont identiques parmi a, b et c : (a=b) XOR (a=c) XOR (b=c)
L'évaluation d'une condition composée se fait selon des règles présentées généralement dans ce qu'on
appelle tables de vérité.
Exercices pour résoudre à domicile
Exercice 1
Ecrire les algorithmes qui permettent de :
1- Résoudre une équation du premier degré : ax+b=0, où a, b sont des réels donnés par l’utilisateur.
2- Résoudre une équation du deuxième degré : ax²+bx+c=0, où a, b et c des réels données par
l’utilisateur.

16

[Link]
Chapitre 3 Les structures conditionnelles (en langage algorithmique et en C)
Exercice 2
1) Ecrivez l’algorithme qui lit une valeur d’angle en degrés, la convertit en radian et affiche le résultat.
2) Ecrivez également l’algorithme qui lit une valeur d’angle en radian, la convertit en degrés et affiche
le résultat.
Exercice 3
Ecrivez un algorithme qui permet de lire un certain temps en seconde puis le transforme en heures,
minutes et secondes.
Exercice 4
Ecrire un algorithme qui calcule la moyenne d’un étudiant pour sept notes avec les coefficients 2,1,4,3,
1,4,2. Puis afficher selon cette moyenne s’il est admis ou ajourné.
Exercice 5
Algorithme exo5_1 Algorithme exo5_2 Algorithme exo5_3
Variable Variable Variable
a,b,c : entier a,b,c : entier a,b,c : entier
Début Début Début
Lire(a,b) Lire(a,b) Lire(a,b)
c  a+b C  a+b c  a+b
Si (c) < 0 alors Si c < 0 alors Si c < 0 alors
c  -(a+b) Ecrire( -c ) Ecrire( -c )
Fsi Fsi Sinon
Ecrire(c) Si c ≥ 0 alors Ecrire( c )
Fin Ecrire( c ) Fsi
Fsi Fin
Fin

1. Exécuter (donner la trace d’exécution) les algorithmes exo5_1 , exo5_2 et exo5_3 pour :
- a= -10 , b = 5
- a = 10, b = -29
- a = 5, b = -2
- a=8,b=6
- a = -4 , b = 9
2. Que faites ces algorithmes ?
3. Quelle est la meilleure solution (le meilleur algorithme) ?
Exercice 6
Les habitants d’une ville paient l’impôt selon les règles suivantes :
-les hommes de plus de 20 ans paient l’impôt
-les femmes paient l’impôt si elles ont entre 18 et 35 ans
-les autres ne paient pas d’impôt
Ecrire un algorithme qui demande l’âge et le sexe (‘M’ ou ‘F’) d’un habitant et affiche si celui -ci est
imposable . Tester l’algorithme avec une femme de 20 ans, un homme de 18 ans et un homme de 35
ans.

17

[Link]
Chapitre 4 Les boucles (en langage algorithmique et en C)

Une boucle à quoi ça sert ?


Une boucle permet de répéter une instruction (ou une liste d’instructions) plusieurs fois.
Il y a principalement trois types de boucles :
 Les boucles pour répéter une instruction un certain nombre de fois, il s’agit de la boucle Pour
 Les boucles pour répéter une instruction jusqu’à une condition d’arrêt, il s’agit des boucles Tant
que et répéter
Le passage dans une boucle est appelé itération
Soit l’exemple suivant :
Algorithme Exemple1
Début
Ecrire(1)
Ecrire(2)
Ecrire(3)
Ecrire(4)
Ecrire(5)
Fin
Et soit l’exemple : Ecrire un algorithme / programme qui affiche le nombre 2 à 1000 fois ?

1. La boucle Pour
L’instruction de boucle Pour permet de répéter l’exécution d’un bloc d’instructions. Elle utilise un
compteur d’itération, une valeur initiale et une valeur finale du compteur. Le compteur est
incrémenté automatiquement de 1. Elle se caractérisent par le fait que l’on connait à l’avance le
nombre d’itérations que l’on va devoir effectuer.
La syntaxe de l’instruction de la boucle Pour est :

Algorithme Code C
1) 1)
Pour cpt de vi à vf Faire For (cpt=vi ; vi<=vf ; vpt++)
<instruction_1> <instruction_1> ;
Fin Pour
2) 2)
Pour cpt de vi à vf Faire For (cpt=vi ; vi<=vf ; vi++)
<instruction_1> { <instruction_1> ;
<instruction_2> <instruction_2> ;
…….. …….. ;
<instruction_n> <instruction_n> ;
Fin Pour }
Rq : cpt : le compteur, vi : Valeur initiale, vf : Valeur finale

Dans la boucle Pour, à chaque instant, on connait le nombre d’itérations déjà effectuées et aussi le
nombre d’itérations restantes.

18

[Link]
Chapitre 4 Les boucles (en langage algorithmique et en C)

2. La boucle Tantque (TQ)


Les boucles tant que permettent d’effectuer des itérations tant qu’une certaine condition est vérifiée.
On ne connait pas le nombre d’itérations à effectuer, mais à chaque itération, on vérifie si la condition
est vraie ou fausse. Dès que cette condition est fausse, on sort de la boucle.
La syntaxe de l’instruction de la boucle Tant-que est :

Algorithme Code C
1) 1)
Tantque <condition> Faire while <condition>
<instruction_1> <instruction_1> ;
Fin Tantque
2) 2)
Tantque <condition> Faire while <condition>
<instruction_1> { <instruction_1> ;
<instruction_2> <instruction_2> ;
…….. …….. ;
<instruction_n> <instruction_n> ;
Fin Tantque }
Rq : le nombre de répétition des instructions dans la boucle tantque est [0..k]
3. La boucle Répéter
L’instruction de boucle Répéter permet de répéter l’exécution d’un bloc d’instructions. À chaque
itération, une expression booléenne (condition) est réévaluée :
 Si l’expression donne TRUE : donc on arrête la boucle et on exécuter l’instruction qui vient après
Répéter ;
 Si l’expression donne FALSE : on continue la boucle en exécutant l’itération suivante
La syntaxe de l’instruction de la boucle Répéter est :

Algorithme Code C
1) 1)
Répéter Do
<instruction_1> <instruction_1> ;
Jusqu’à <condition> while <condition>
2) 2)
répéter Do
<instruction_1> { <instruction_1> ;
<instruction_2> <instruction_2> ;
…….. …….. ;
<instruction_n> <instruction_n> ;
Jusqu’à <condition> }
while <condition> ;

19

[Link]
Chapitre 4 Les boucles (en langage algorithmique et en C)
Rqs :

 Le nombre de répétition des instructions dans la boucle répéter est [1..k]


 En général, si la première itération est réalisée sans condition, on peut utiliser l’instruction
Répéter au lieu de l’instruction Tant-que.
 L’instruction Répéter est équivalente à Tantque.
 L’instruction Pour est un cas spécial de l’instruction Tantque.
Remarques sur les instructions itératives
Une instruction peut être une instruction simple ou un bloc. Les différentes boucles peuvent être
imbriquées, il faut donc s’astreindre à une certaine mise en page pour faciliter la lecture d’un
programme.
4. Ruptures de séquence
Quand on veut sortir d’une boucle alors que la condition de passage est encore valide, on utilise des
opérations appelées rupture de séquence.
Les ruptures de séquence sont utilisées lorsque plusieurs conditions (conditions multiples)
conditionnent l’exécution d’un ensemble d’instructions.
En C, les ruptures d’instructions sont réalisées par quatre instructions qui correspondent à leur niveau
de travail :
 continue
 break
 goto
 return
Deux appels de fonctions de la bibliothèque permettent aussi de modifier l’ordre d’exécution du
programme, il s’agit de :
void exit (int status) : l’appel à cette fonction permet de terminer l’exécution du programme.
void longjmp(jmp_buf env, int val) : qui permet de sauter à un point de reprise mis dans le programme.

4.1. continue
Cette instruction permet le passage à l’itération suivante dans une boucle en sautant à la fin du bloc.

4.2. break
Il permet de sortir d’un bloc associé à une instructions répétitive ou alternative contrôlée par les
instructions : if, for, while ou do while. Il ne permet de sortir que d’un niveau d’imbrication.

4.3. return

Elle provoque la terminaison de l’exécution de la fonction dans laquelle elle se trouve et le retour à la
fonction appelante

4.4. goto
Permet d’aller n’importe où à l’intérieur d’une fonction. Il est associé à une étiquette appelé label, un
label est une chaine de caractères suivie par du double points « : »

20

[Link]
Chapitre 4 Les boucles (en langage algorithmique et en C)
La commande de branchement goto et l’instruction repérer par étiquette doivent se trouver dans la
même fonction.
Exemple :

Algorithme Code C
Algorithme exemple #include<stdio.h>
Variable x,i : entier main()
Début {
x0, i1 int i,x;
loop : xx+i i=1; x=0;
ii+1 loop : x=x+i;i++;
si (i<100) alors if (i<100)
aller à loop goto loop;
fsi printf("%f",x);
ecrire(x) }
Fin

Exercice 1
Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse
convienne. En cas de réponse supérieure à 20, on fera apparaître un message : « Plus petit ! », et
inversement, « Plus grand ! » si le nombre est inférieur à 10.
Exercice 2
Ecrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les dix nombres suivants.
Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 à 27.
Exercice 3
Ecrire un algorithme qui demande un nombre de départ, et qui ensuite écrit la table de multiplication
de ce nombre, présentée comme suit (cas où l'utilisateur entre le nombre 7) :
Table de 7 :
7x1=7
7 x 2 = 14
7 x 3 = 21

7 x 10 = 70
Exercice 4
Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à
ce nombre. Par exemple, si l’on entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15 NB : on
souhaite afficher uniquement le résultat, pas la décomposition du calcul.
Exercice 5
Ecrire un algorithme qui demande successivement 20 nombres à l’utilisateur, et qui lui dise ensuite
quel était le plus grand parmi ces 20 nombres :
Entrez le nombre numéro 1 : 12
Entrez le nombre numéro 2 : 14
21

[Link]
Chapitre 4 Les boucles (en langage algorithmique et en C)
...
Entrez le nombre numéro 20 : 6
Le plus grand de ces nombres est : 14
Exercice 6
Ecrire un algorithme qui demande successivement 10 nombres à l'utilisateur, et qui affiche à la fin le
plus grand de ces 10 nombres et son rang dans la liste saisie !
Exemple :
Entrez le nombre numéro 1 : 13 Le plus grand de ces nombres est : 17
Entrez le nombre numéro 2 : 17 C'était le 2ème nombre saisi
…..
Entrez le nombre numéro 10 : 5
Exercice 7
Ecrire l’algorithme qui vérifie si un nombre N positif est premier ou non. Un nombre est premier s’il
n’est divisible que par 1 et par lui-même.
RQ : afficher un message d’erreur si N<=0
Exercice 8
Ecrire un algorithme qui Lit d’abord une valeur entière Ensuite il va lire 20 nombres entiers quelconques
Ensuite il va déterminer combien de fois la première valeur a été saisie (sans compter la première
saisie).
Exercice 9
Ecrire un algorithme mettant en œuvre le jeu suivant entre deux joueurs : Le premier utilisateur saisi
un entier que le second doit deviner. Pour cela, il a le droit à autant de tentatives qu'il souhaite. A
chaque échec, le programme lui indique si l'entier est plus grand ou plus petit que sa proposition.
Un score est affiché lorsque l'entier est trouvé.
Exercice 10
Ecrire un algorithme qui permet d’afficher tous les couples ( x,y) , ou x est un entier compris entre 1 et
p et y est un entier compris entre 1 et q .
p et q sont des entiers strictement positifs lus au clavier.
Exemple : p = 3 q= 4
Les couples affichés sont :
(1,1),(1,2),(1,3), ( 1,4 )
(2,1),(2,2),(2,3),(2,4)
(3,1) , (3,2 ) , (3,3) , (3,4 )

22

[Link]
Chapitre 5 Les tableaux et les chaine de caractères

Types de données complexes


Aux chapitres précédents, nous avons étudié les types de données élémentaires à savoir : le type
entier, réel, caractère, booléen.
Nous rappelons qu’un type décide de l’occupation mémoire de la donnée, ainsi que du format de sa
représentation. Ces types ne sont pas suffisants pour représenter toute la réalité, par exemple si nous
voulons mémoriser les notes du module algorithmique pour 1000 étudiants ; quel type convient à cette
réalité ?
 Créer une variable nommé note pour tous les étudiants engendre le problème de ne pas garder
la trace des 999 premiers étudiants !!
 Créer 1000 variables nommés note1, note2, …, note1000, ce n’est pas ni de la logique ni de la
pratique.
Il nous faut un nouveau type qui permet de créer une seule variable qui peut contenir 1000 cases alors
peut mémoriser la donnée de chaque case  c’est le tableau
1. Tableaux
Une variable est composée d’une seule case mémoire, alors que le tableau est une structure de
données composée d’un ensemble de cases mémoires rangées en mémoire les unes à la suite des
autres.
 Le type des éléments d’un tableau peut être n’importe lequel type du langage C :
 Types élémentaires : char, short, int, long, float, double ;
 Pointeur : type utilisé pour la mémorisation des adresses de données ;
 Tableau ;
 Structure.
 Le terme tableau admet comme synonymes les mots : « vecteur » (tableau unidimensionnel
uniquement), « table » ou « matrice » (tableau bidimensionnel).
 Un tableau est caractérisé par son : nom, type et taille.
 Les tableaux sont stockés en mémoire centrale comme les autres variables, contrairement aux
fichiers qui sont stockés sur le disque. Une propriété importante des tableaux est de permettre un
accès direct aux données, grâce à l’indice (index).
 On distingue les tableaux unidimensionnels et les tableaux multidimensionnels
1.1. Tableaux à une dimension (vecteur)
Le tableau est unidimensionnel lorsque ses éléments ne sont pas eux-mêmes des tableaux ou des
structures. On pourrait le considérer comme ayant un nombre arbitraire de colonnes, mais une seule
ligne.
- Le vecteur doit avoir un nom. Par exemple, le vecteur T.
- Une case mémoire représente un élément du vecteur.
- Tous les éléments du vecteur sont de même type.
- Le nom de chaque élément est composé du nom du vecteur suivi d’un indice. Ce dernier indique la
position de l’élément dans le vecteur. Par exemple, l’élément T[3].
- L’indice est indiqué entre crochets.
Exemple : soit la description suivante d’un tableau nommé T de 10 cases contenants par exemple les
notes de 10 étudiants.

23

[Link]
Chapitre 5 Les tableaux et les chaine de caractères

T[3]
T
10,00 15,50 20,00 09,00 11,75 20,00 19,50 13,00 15,00 12,50

T est une variable qui indique le nom du vecteur,


T[i] : représente l'élément du vecteur T occupant le rang " i "
T[3] = 20.00 indique que la case numéro 3 du tableau T contient la valeur 20.00)
 L'indice peut être une constante, une variable ou une expression arithmétique.
 Constante : T[1]
 Variable : T[i]
 Une expression : T[i+1]
 Un élément du tableau est manipulé exactement comme une variable. On peut :
 Lui affecter une valeur (exemple : lire (T[i]) ; ou T[i]  5 ;),
 L’utiliser dans une expression (exemple : x  (T[i]*2)+5 ;),
 Faire des tests dessus (exemple : si (T[i] mod 2 =0) Alors ), ….
1.1.1. Déclarer un vecteur (tableau à une dimension) : Avant d'utiliser un tableau, il faut déclarer sa
taille pour que le système réserve la place, en mémoire, nécessaire pour stocker tous les éléments de
ce tableau. La déclaration de tous les éléments du tableau est réalisée avec le mot-clé « Tableau » en
indiquant entre crochets le minimum et le maximum d’éléments composant le vecteur.

Algorithme Code C
« Nom » : tableau de « taille » de « type » « type » « nom[taille]»;
Exp : Exp :
T : tableau [1. .100] d’ entiers int T[100] ;

Remarques :
 Dans la partie Constante, on peut définir la taille du tableau. Ensuite, on peut déclarer le
nombre d'éléments à saisir dans le tableau.
 Le nombre d'éléments à saisir ne doit pas dépasser la taille du tableau pour ne pas déborder sa
capacité.
 On appelle dimension d'un vecteur le nombre d'éléments qui constituent ce vecteur.
1.1.2. Opérations sur les tableaux
Comment accède-t-on à un élément quelconque du tableau ? c-à-d, comment peut-on exploiter les
divers éléments d’un tableau en tant que variable ? comment y lit-on des valeurs et comment les
affiche-t-on ? …
a) Décrire un élément quelconque du tableau : nom du tableau[indice]

Algorithme Code C
Même chose dans l’algorithme, c-à-d :
Exp : T[2] 5, T[3]=32, T[5]=’a’, T[i] T[i]+3, … nom du tableau[indice]
Exp : T[2]=5, T[3]==32, T[5]==’a’, T[i]=T[i]+3, …

24

[Link]
Chapitre 5 Les tableaux et les chaine de caractères
b) Lecture d’un tableau (vecteur) : La lecture d'un tableau consiste à saisir les données des éléments
du tableau. (Remplir des cases successives du tableau). On doit utiliser une boucle qui permet de
saisir à chaque entrée dans la boucle la iième case.

Algorithme Code C
Pour i de 1 à 10 faire for (i=0 ; i<=9 ; i++)
Lire(T[i]) scanf(‘’%d’’, &T[i]) ;
Fin pour

c) Affichage d’un tableau :

Algorithme Code C
Pour i de 1 à 10 faire for (i=0 ;i<=9 ;i++)
Ecrire(T[i]) printf(‘’%d\t’’, T[i]) ;
Fin pour
Remarques :
 En Algorithmique l’indice est le numéro d’une case dans le tableau, il commence par 1.
 En langage C Les indices du tableau commencent par 0 (dans l’exemple précédent : le 1ier
élément est T[0], 2ème élément est T[1], ….., le dernier (10ème) élément est T[9]).
 Pour mettre toutes les cases à 0 on fait : for (i=0 ; i<10 ; i++) T[i]=0 ;

Exercices à domicile
Exercice 1
Ecrire un programme qui permet de remplir un tableau de N éléments, et d’afficher son contenu.
Exercice 2
Ecrire un programme qui permet de rechercher un élément donné X dans un tableau.
Exercice 3
Ecrire un programme qui permet de rechercher le minimum et le maximum dans un tableau de N
éléments
Exercice 4
Ecrire un programme qui permet de calculer la moyenne des éléments d’un tableau de N entiers.
Exercice 5 (Tri à Bulles)
Ecrire un programme qui permet de trier les éléments d’un tableau par la méthode de tri à bulles.
La méthode de tri à bulles consiste à balayer tout le tableau, en comparant les éléments adjacents et
les échangeant s'ils ne sont pas dans le bon ordre. Un seul passage ne déplacera un élément donné
que d'une position, mais en répétant le processus jusqu'à ce plus aucun échange ne soit nécessaire, le
tableau sera trié.
Exercice 6 (Recherche dichotomique d’un élément dans un tableau)
Ecrire un programme qui permet de rechercher un élément donné par la méthode dichotomique
dans un tableau à une dimension trié.
Note : on suppose dans tous les exercices que la taille du tableau est 100.

25

[Link]

Vous aimerez peut-être aussi