0% ont trouvé ce document utile (0 vote)
17 vues132 pages

Apprendre l'algorithmique et C

Transféré par

Amira Qabbou
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)
17 vues132 pages

Apprendre l'algorithmique et C

Transféré par

Amira Qabbou
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

Module:

Algorithmique et programmation

Filière: Technique de management


Année universitaire: 2021/2022
Objectifs et Plan du cours

Objectifs:
 Apprendre les concepts de base de l'algorithmique et de la programmation

 Etre capable de mettre en œuvre ces concepts pour analyser des problèmes simples et
écrire les programmes correspondants

Plan:
I.Généralités (matériel d’un ordinateur, systèmes d’exploitation, langages de
programmation, …)

[Link] (affectation, instructions conditionnelles, instructions itératives, fonctions,


procédures, …)

III. Langage C (un outil de programmation)


I-Généralités
Introduction

 Contraction de deux mots INFORmation et autoMATIQUE

 L'informatique désigne l'automatisation du traitement de l'information par un


système, concret (machine) ou abstrait.

 Aussi, l'informatique désigne l'ensemble des sciences et techniques en rapport


avec le traitement de l'information.

 Science du traitement automatique de l’information par ordinateur

 Traiter de l'information (donc besoin de la coder sous forme de nombres).

 Que peut-on en faire de cette information?


A quoi ça sert?

 Bureautique (traitement de texte, tableur) : c'est une utilisation très simple de


l'informatique (l'ordinateur devient une machine à écrire perfectionnée) ;

 Mathématiques: balistique, prévisions d'élections, météo ;

 Jeux: IA, graphisme, son, fiction interactive et génération de textes, ...


 Physique : Simulation (centrale nucléaire, bombe atomique), mécanique des fluides,
résistance des matériaux, train, voiture (déformations programmées) ;

 Médecine : Génome humain, imagerie médicale, opérations guidées par ordinateur,


apprentissage ;

 Gestion des flux : Arrivées départs dans les aéroports (les gares, périphérique) ;
 Robotique : robot autonome (robot sur Mars, footballeurs) semi-autonome,
télécommandé ;

 Calculs massifs : clusters, machines parallèles ...


Architecture et composants matériels de l’ordinateur
Architecture et composants matériels de l’ordinateur

Un ordinateur est composé de deux unités :

1 L'unité centrale constituée de :

 L'unité de traitement (UT) qui commande tout traitement fait par l'ordinateur.

 L'unité de calcul (UC) qui effectue les opérations (arithmétiques, logiques…)


commandées par l'UT. L'ensemble UT, UC est appelé processeur.

 La mémoire centrale qui sert de support de stockage de données. On signale ici


qu’il s’agit d’une mémoire volatile.
Architecture et composants matériels de l’ordinateur

Un ordinateur est composé de deux unités :

2 L'unité d'échange constituée de :


 Les périphériques d'entrée/sortie comme le clavier, la souris, l'écran et
l’imprimante.

 La mémoire secondaire qui sert également de support de stockage de données.


Elle est permanente et se caractérise par une capacité supérieure à celle de la
mémoire centrale

Le composant mémoire est physiquement un ensemble de cellules mémoire (octets)


contenant des données sous forme binaire. Un octet est constitué de 8 bits (digits
contenant les chiffres 0 ou 1). Un kilooctet (KOctet) est composé de 1024 (𝟐𝟏𝟎) octets.
Système informatique

 Ensemble de Techniques du traitement automatique de l’information au moyen des


ordinateurs
Système informatique = ordinateur + périphériques
 Éléments d’un système informatique
Qu’est-ce qu’un programme d’ordinateur?

 Allumez un ordinateur, vous n’en tirerez rien!!

 Pour le faire marcher il faut lui fournir un programme


Ordinateur = matériel + programme(s)

 Un programme est une suite d’instructions d’ordinateur

 Une instruction est un ordre compris par l’ordinateur et qui lui fait exécuté une action,
c-à-d une modification de son environnement
Les catégories d’ordres

Les ordinateurs, quels qu’ils soient, ne sont fondamentalement capables de comprendre


que quatre catégories d'ordres (en programmation, on n'emploiera pas le terme d'ordre,

mais plutôt celui d'instructions). Ces quatre familles d'instructions sont :

 Les variables et leurs affectation

 la lecture / écriture

 les tests

 les boucles
Exemple: Les Actions d’un ordinateur

 Attendre qu’un nombre soit tapé au clavier

 Sortir à l’écran le nombre entré

 Attendre qu’un autre nombre soit tapé au clavier

 Sortir à l’écran le nombre entré

 Additionner les deux nombres entrés

 Sortir à l’écran le résultat de l’addition

Ces lignes forment un programme d’ordinateur


Langages informatiques

 Un langage informatique est un outil permettant de donner des ordres (instructions) à


la machine

• A chaque instruction correspond une action du processeur

 Intérêt : écrire des programmes (suite consécutive d’instructions) destinés à effectuer


une tache donnée

Exemple: un programme de gestion de comptes bancaires

 Contrainte: être compréhensible par la machine


Langage machine

 Langage binaire: l’information est exprimée et manipulée sous forme d’une suite de bits. Ce
langage produit, en effet, des programmes automatiquement consommables (compréhensibles)
par la machine mais qui sont illisibles et non portables.

Un bit (binary digit) = 0 ou 1 (2 états électriques)


 Une combinaison de 8 bits= 1 Octet  𝟐𝟖 = 𝟐𝟓𝟔
nombre de possibilités qui permettent de coder tous les caractères alphabétiques,
numériques, et symboles tels que ?,*,&, …

 Le code ASCII (American Standard Code for Information Interchange) donne les
correspondances entre les caractères alphanumériques et leurs représentation binaire, Ex. A=
01000001, ?=00111111

 Les opérations logiques et arithmétiques de base (addition, multiplication, … ) sont effectuées en


binaire
Codage binaire

 Le langage des ordinateurs

 Toutes communications à l'intérieur de l'ordinateur sont faites avec des signaux

électriques

◦ 0: éteint (absence de signal électrique)

◦ 1: allumé (présence de signal électrique)


Codage binaire

Un même nombre peut être représenté dans plusieurs bases

 123 en base 10 (décimal)

 1111011 en base 2 (binaire)

 173 en base 8 (octale)

 7B en base 16 (hexadécimale)
Codage binaire

De la base 2 à la base 10

 Il faut additionner la multiplication du nombre représenté par chaque chiffre


avec la puissance de 2 correspondant au rang du chiffre

 Les opérations élémentaires en base 10 s’appliquent de la même façon en


base 2

Exemple: Addition, soustraction, multiplication, division


Codage binaire

De la base 2 à la base 10
Deux exemples de nombre en notation binaire et sa valeur en notation décimale

La somme de
résultats de
multiplication

1111011 vaut 123 en base 10


Codage binaire

De la base 10 à la base 2

Il faut diviser le nombre par 2 puis réitérer l'opération en considérant que le nouveau
numérateur est l'ancien quotient jusqu'à ce que ce dernier soit nul. La suite inverse
des restes représente le nombre binaire
Codage binaire

Exemple

Ecrire 2019 en base 2?


Transcodage binaire/hexadécimal

Un autre système, l'hexadécimal (base 16), est très souvent employé en informatique

◦ facilite la représentation des longues séquences de bits

◦ représentation :

0123456789ABCDEF

101101100010000001100011010011 (binaire)

 2d8818d3 (hexadécimale)
Transcodage binaire/hexadécimal

Un autre système, l'hexadécimal (base 16), est très souvent employé en informatique

◦ facilite la représentation des longues séquences de bits

◦ représentation (16 caractères différents) :

0123456789ABCDEF

101101100010000001100011010011 (binaire)

 2d8818d3 (hexadécimale)
Transcodage binaire/hexadécimal
Transcodage hexadécimal/binaire
Langages de Programmation
L'assembleur

 Problème: le langage machine est difficile à comprendre par l'humain

 Idée: trouver un langage compréhensible par l'homme qui sera ensuite converti en langage machine

 Assembleur (1er langage): exprimer les instructions élémentaires de façon symbolique

+: déjà plus accessible que le langage machine


-: dépend du type de la machine (n’est pas portable)
-: pas assez efficace pour développer des applications complexes
Apparition des langages évolués
L'assembleur

 Problème: le langage machine est difficile à comprendre par l'humain

 Idée: trouver un langage compréhensible par l'homme qui sera ensuite converti en langage machine

 Assembleur (1er langage): exprimer les instructions élémentaires de façon symbolique

+: déjà plus accessible que le langage machine


-: dépend du type de la machine (n’est pas portable)
-: pas assez efficace pour développer des applications complexes
Apparition des langages évolués
Langages haut niveau

Intérêts multiples pour le haut niveau:

Proche du langage humain «anglais» (compréhensible)

Permet une plus grande portabilité (indépendant du matériel)

 Manipulation de données et d’expressions complexes (réels, objets, a*b/c, …)

Nécessité d’un traducteur (compilateur/interpréteur), exécution plus ou moins lente


selon le traducteur
Compilateur/interpréteur

Compilateur: traduire le programme entier une fois pour toutes


Compilateur Exécution
Exemple.c Exemple

fichier source fichier exécutable


 +: plus rapide à l’exécution
 +: sécurité du code source
 -: il faut recompiler à chaque modification
Interpréteur: traduire au fur et à mesure les instructions du programme à chaque exécution
exécution plus ou moins lente selon le traducteur
Interprétation + exécution
[Link]

fichier source
 +: exécution instantanée appréciable pour les débutants
 -: exécution lente par rapport à la compilation
Langages de programmation:

Deux types de langages:


 Langages procéduraux : sont à base de procédures. Une procédure est une portion de
programme écrit en langage de haut niveau qui accomplit une tâche spécifique nécessaire
au programme

 Langages orientés objets : sont des langages non procéduraux dans lesquels les éléments du
programme sont considérés comme des objets qui peuvent s'échanger des messages.

 Choix d’un langage?


Principaux Langages de programmation:
Etapes de réalisation d’un programme

La réalisation de programmes passe par l’écriture d’algorithmes


 D’où l’intérêt de l’Algorithmique
Pourquoi apprendre l’algorithmique pour apprendre à programmer ?

Un algorithme est une description complète et détaillée des actions à effectuer et de leur
séquencement pour arriver à un résultat donné

 Intérêt: séparation analyse/codage (pas de préoccupation de syntaxe)

l’algorithmique exprime les instructions résolvant un problème donné


indépendamment des particularités de tel ou tel langage.

 Qualités: exact (fournit le résultat souhaité), efficace (temps d’exécution, mémoire


occupée), clair (compréhensible), général (traite le plus grand nombre de cas possibles), …

 Pour prendre une image, si un programme était une dissertation, l’algorithmique serait le
plan, une fois mis de côté la rédaction et l’orthographe. Mieux faire d’abord le plan et rédiger
ensuite que l’inverse…
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

 Le pseudo-code: représentation textuelle avec une série de conventions ressemblant à


un langage de programmation (sans les problèmes de syntaxe)

• plus pratique pour écrire un algorithme

• représentation largement utilisée


Exemple de pseudo code

Problème du tri
+ Entrée: une séquence de n
nombres (a1, : : : ,an)
+ Sortie: une permutation
(a1’; : : : ;an’) de la séquence d’entrée: a1’<a2’<….<an’
Décrire une manière de
résoudre ce problème?

Exemple : (31;41;59;26;41;58)
 à (26;31;41;41;58;59)
Exemple de pseudo code

Problème du tri
+ Entrée: une séquence de n
nombres (a1, : : : ,an)
+ Sortie: une permutation
(a1’; : : : ;an’) de la séquence
d’entrée: a1’<a2’<….<an’

Exemple : (31;41;59;26;41;58)
 à (26;31;41;41;58;59)
Algorithmique

Notions et instructions de base


Identifier le rôle d’un algorithme

 Certains voient, à tort, dans l'ordinateur une machine pensante et intelligente, capable de
résoudre bien des problèmes. En fait, celui-ci ne serait capable de rien si quelqu'un (le
programmeur en l'occurence) ne lui avait fourni la liste des actions à exécuter. Cette
description doit être faite de manière non ambigüe car il ne faut pas s'attendre à la moindre
interprétation des ordres fournis. Ils seront exécutés de manière purement mécanique

 Un algorithme est un Ensemble de règles opératoires dont l'application permet de résoudre


un problème énoncé au moyen d'un nombre fini d'opérations.

 Un algorithme peut être traduit, grâce à un langage de programmation, en un programme


exécutable par un ordinateur.
Structure d’un algorithme

Algorithme

déclaration des variables

début

instruction 1

Instruction 2

Instruction n

fin
Notion de variable

Dans les langages de programmation une variable sert à stocker la valeur d’une donnée

 Une variable désigne en fait un emplacement mémoire dont le contenu peut changer au
cours d’un programme (d’où le nom variable)

 Règle : Les variables doivent être déclarées avant d’être utilisées, elle doivent être
caractérisées par :

◦ un nom (Identificateur)

◦ un type (entier, réel, caractère, chaîne de caractères, …)


Choix des identificateurs (1)

Le choix des noms de variables 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 valide: A1 exemple invalide: 1A


 Doit être constitué uniquement de lettres, de chiffres et du soulignement _ (Eviter les
caractères de ponctuation et les espaces)

valides: SMI2007, SMI_2007 invalides: SMI 2007, SMI-2007, SMI;2007


 doit être différent des mots réservés du langage (par exemple en C/C++: int, float, else,
switch, case, default, for, main, return, …)

 La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage
utilisé
Choix des identificateurs (2)

Conseil: pour la lisibilité du code choisir des noms significatifs qui décrivent les données
manipulées

exemples: Montant_Total, 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 plus part des langages sont:
 Type numérique (entier ou réel)
◦ Byte (codé sur 1octet): de 0 à 255
◦ Entier court (codé sur 2 octets) : -32 768 à 32 767
◦ Entier long (codé sur 4 ou 8 octets)
◦ Réel simple précision (codé sur 4 octets)
◦ Réel double précision (codé sur 8 octets)
 Type logique ou booléen: deux valeurs VRAI ou FAUX
 Type caractère: lettres majuscules, minuscules, chiffres, symboles, … exemples: ’A’, ’a’, ’1’, ’?’,

 Type chaîne de caractère: toute suite de caractères, exemples: "Nom", "Prénom", "code
postale: 1000", …
Déclaration des variables

 Rappel: toute variable utilisée dans un algorithme ou programme doit avoir fait l’objet d’une
déclaration préalable
 En pseudo-code, on va adopter la forme suivante pour la déclaration de variables
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

 Remarque: pour le type numérique on va se limiter aux entiers et réels sans considérer les
sous types
L’instruction d’affectation

 L’affectation consiste à attribuer une valeur à une variable (ça consiste en fait à remplir où à
modifier le contenu d'une zone mémoire)
 En pseudo-code, l'affectation se note avec le signe ←
Var← e : attribue 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
 Ex valides: i ←1; j ←i; k ←i+j;
x ←10.3 ; OK ←FAUX; ch1←"SMI";
ch2 ←ch1 ; x ←4; x ←j;
(voir la déclaration des variables dans le transparent précédent)
 Ex non valides: i ←10.3; OK ←"SMI"; j ←x;
Quelques remarques

Beaucoup de langages de programmation (C/C++, Java, …) utilisent le signe égal = pour


l’affectation ←. Attention aux confusions:

◦ L'affectation n'est pas commutative : A←B est différente de B←A

◦ L’ affectation est différente d'une équation mathématique :

. A←A+1 a un sens en langages de programmation

. A+1←2 n'est pas possible en langages de programmation et n'est pas équivalente


à A←1

 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
Exercices simples sur l'affectation (1)

Donnez les valeurs des variables A, B et C après exécution des instructions suivantes ?
Algorithme Test_Var
Variables A, B, C: Entiers
Début
A ← 3;
B ← 7;
A ← B;
B ←A+5;
C ←A + B;
C ← B – A;
Fin
Exercices simples sur l'affectation (2)

Donnez les valeurs des variables A et B après exécution des instructions suivantes ?

Algorithme Test_Permut
Variables A, B : Entier
Début
A ← 1;
B ← 2;
A ← B;
B ←A;
Fin

Les deux dernières instructions permettent-elles d’échanger les valeurs de A et B ?


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 de priorités
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) :

◦ ^ : (élévation à la puissance)

◦ * , / (multiplication, division)

◦ % (modulo)

◦ + , - (addition, soustraction)

exemple: 2 + 3 * 7 vaut 23
 En cas de besoin (ou de doute), on utilise les parenthèses pour indiquer les opérations à
effectuer en priorité
exemple: (2 + 3) * 7 vaut 35
Les instructions d'entrées-sorties: lecture/Ecriture

 Les instructions de lecture et d'écriture permettent à la machine de communiquer avec l'utilisateur

 La lecture permet d'entrer des donnés à partir du clavier

◦ En pseudo-code,on note:Lire (var);


 la machine met la valeur entrée au clavier dans la zone mémoire
nommée var

◦ Remarque: Le programme s'arrête lorsqu'il rencontre une instruction Lire et ne se poursuit qu'après la
frappe d’une valeur au clavier et de la touche Entrée
Les instructions d'entrées-sorties: lecture/Ecriture 2

 L'écriture permet d'afficher des résultats à l'écran (ou de les écrire dans un fichier)

◦ En pseudo-code,on note:Ecrire (var) ;

 la machine affiche le contenu de la zone mémoire var

◦ 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
Exemple (Lecture / Ecriture)

Ecrire un algorithme qui demande un nombre entier à l'utilisateur,puis qui calcule et

affiche le double de ce nombre?


Exemple (Lecture / Ecriture)

Ecrire un algorithme qui demande un nombre entier à l'utilisateur,puis qui calcule et affiche le double de ce
nombre

Algorithme Calcul_double

variables A, B : entiers

Début

Ecrire("entrer la valeur de A:");


Lire(A);
B ← 2*A;

Ecrire("le double de :", A, "est :",B);


Fin
Exemple (Lecture / Ecriture)

Ecrire un algorithme qui vous demande de saisir votre nom puis votre prénom et qui

affiche ensuite votre nom complet?


Exemple (Lecture / Ecriture)

Ecrire un algorithme qui vous demande de saisir votre nom puis votre prénom et qui affiche ensuite votre nom
complet

AlgorithmeAffichageNomComplet
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
Ecrire("entrez votrenom");
Lire(Nom);
Ecrire("entrez votreprénom");
Lire(Prenom);
Nom_Complet ← Nom & Prenom;
Ecrire("Votre nom complet est : ", Nom_Complet);
Fin
Méthode de construction d’un algorithme simple (1/4)

Exemple :

Écrire un algorithme qui consiste a calculer l’air S d’un cercle selon la formule S = Pi * R* R;

Rappel :Pi = 3.14159 et R le rayon du cercle


Méthode de construction d’un algorithme simple (2/4)

Méthodologie a suivre:

 constantes :Pi = 3.14159


 Variables :Rayon,Surface
 Types :Rayon,Surface :réel
 Expressions et affectation : Surface <- Pi *(Rayon)^2 ;
 Structures conditionnelles et les boucles :------
 Opérations d’entrée-sortie :Lire (Rayon);
Écrire (Surface);
Méthode de construction d’un algorithme simple (3/4)

Algorithme Calcul_Aire
Constantes

Pi = 3,14159

Variables
Rayon, Surface: réels
Début

Lire (Rayon);

Surface <- Pi * (Rayon*Rayon) ;


Ecrire (Surface);

Fin
Méthode de construction d’un algorithme simple (4/4)

Programme Pascal Programme C


Program Calcul_Aire; #include <stdio.h>
CONST #include <math.h>
Pi = 3.14159 main ( ){
VAR float Pi = 3.14159;
Rayon, Surface : REAL; float rayon, surface;
BEGIN scanf (« °/°f », &rayon);
READLN (Rayon); surface = pi*pow (rayon,2);
Surface := Pi * SQR (Rayon); printif (« °/°f\n »surface, );
WRITELN (Surface);
END. }
Algorithmique

Les structures Conditionnelles


Besoin a des concepts de ruptures de séquence

Algorithme  Rare les algorithmes qui peuvent se


décrire uniquement par un
Calcul_Aire
enchaînement séquentiel d’opération
Constantes élémentaire
Pi = 3,14159
Variables  On a besoin a des concept de rupture de
Rayon, Surface: réels séquence comme les tests et lesboucles
Début Ex :
Lire (Rayon);  un algorithme qui résout une équation
de deuxième degré
Surface <- Pi * (Rayon)^2 ;
 un algorithme qui calcule une série
Ecrire (Surface); numérique
Fin
Les structures conditionnelles et les boucles

• Les tests simples : permet de réaliser un choix parmi deux possibilités (Ex : Booléenne :vrais ou faux).

• Les instructions conditionnelles : c’est un concept de tests multiples, permet de comparer un objet à une série
de valeurs,et exécuter si la condition est vérifier (Ex :recherche des nombres premier dans une ensemble)

• Les itérations : consiste a exécuté un bloc d’instructions un certain nombre de fois (Ex : calcul d’une suite
numérique)

• Les boucles conditionnelles : consiste a exécuté un bloc d’instructions un certain nombre de fois si la condition
est vérifier (Ex : On veut afficher le 100 premiers nombres :.Tant que i est plus petit que 100, afficher la valeur de
i).
Tests: instructions conditionnelles (1)

 Les instructions conditionnelles serventà n'exécuter une instruction ou une séquence d'instructions
que si une condition est vérifiée

 On utilisera la forme suivante:


Si condition alors
instruction ou suite d'instructions1
Sinon
instruction ou suite d'instructions2
Finsi
◦ La condition ne peut être que vraie ou fausse
◦ Si la condition est vraie,se sont les instructions1 qui seront exécutées
◦ Si la condition est fausse,se sont les instructions2 qui seront exécutées
◦ La condition peut être une condition simple ou une condition composée de plusieurs conditions
Tests: instructions conditionnelles (2)

 La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que la condition est
fausse, aucun traitementn'est réalisé

◦ On utilisera dans ce cas la forme simplifiée suivante:

Si condition alors

instruction ou suite d'instructions1

Finsi
Exemple (Si…Alors…Sinon)

Écrire un algorithme qui consiste à afficher la


valeur absolue d’un nombre réel?
Exemple (Si…Alors…Sinon)

Algorithme AffichageValeurAbsolue(version1)
Variable x :réel
Début
Ecrire (" Entrez un réel :”);
Lire (x);
Si ( x < 0) alors
Ecrire ("la valeur absolue de ", x,"est:",-x);
Sinon
Ecrire ("la valeur absolue de ", x,"est:",x);
Finsi
Fin
Exemple (Si…Alors)

Écrire un algorithme qui consiste a afficher la


valeur absolue d’un nombre réel?

Cette fois vous ne devrez pasutilisez


l’instruction(Sinon).
Exemple (Si…Alors)

Algorithme AffichageValeurAbsolue(version2)
Variable x,y :réel Début
Ecrire (" Entrez un réel :”);

Lire (x);

y← x;

Si x < 0 alors
y ← -x;

Finsi
Ecrire ("la valeur absolue de ", x,"est:",y);

Fin
Exemple (tests)

Ecrire un algorithme qui demande un nombre


entier à l'utilisateur,puis qui teste et affiche s'il
est divisible par 3?
Exemple (tests)

Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis qui teste et affiche s'il est
divisible par 3
Algorithme Divisible_par3
Variable n :entier
Début
Ecrire (" Entrez un entier : ”);
Lire (n);
Si (n%3=0) alors
Ecrire (n," est divisible par 3");
Sinon
Ecrire (n," n'est pas divisible par 3");

Finsi
Fin
Exercice (tests)

Ecrire un algorithme qui donne la durée de vol en heure minute


connaissant l'heure de départ et l'heure d'arrivée. On considère que le
départ et l'arrivé ont lieu le même jour !
Exercice corrigé (tests)
ALGORITHME DuréeVol
Variables h1, h2, m1, m2: ENTIER
hd, md : ENTIER
Debut
Ecrire (" entrer horaire de départ: h min");
Lire (h1, m1) ;
Ecrire (" entrer horaire d’arrivée: h min") ;
Lire (h2, m2);
Si (m2 > m1 ) Alors
hd = h2-h1;
md = m2-m1;
Ecrire (" la durée de vol est : ", hd , ' : ', md) ;
Sinon
hd = h2-h1-1;
md = m2+60-m1;
Ecrire (" la durée de vol est : ", hd , ' : ', md);
Finsi
Fin
Conditions composées

 Une condition composée est une condition forméede 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)

◦ 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 devérité
Tables de vérité

C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI
VRAI FAUX VRAI FAUX
FAUX VRAI FAUX VRAI
FAUX FAUX FAUX FAUX

C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI VRAI
VRAI FAUX FAUX
FAUX VRAI
FAUX FAUX
Tables de vérité

C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX

C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
Tests imbriqués

 Les tests peuvent avoir un degré quelconque d'imbrications


Si condition1 alors
Si condition2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi
Tests imbriqués: exemple (version 1)

Algorithme NegPos

Variables n :entier
Début
Ecrire ("entrez un nombre :");
Lire (n);
Si (n < 0) alors
Ecrire ("Ce nombre est négatif");
Sinon
Si (n = 0) alors
Ecrire ("Ce nombre est nul");
Sinon
Ecrire ("Ce nombre est positif");
Finsi
Finsi
Fin
Tests imbriqués: exemple (version 2)

Algorithme NegPos2
Variables n :entier
Début
Ecrire ("entrez un nombre :");
Lire (n);
Si (n < 0) alors
Ecrire("Ce nombre est négatif");
Finsi
Si (n = 0) alors
Ecrire("Ce nombre est nul");
Finsi
Si (n > 0) alors
Ecrire ("Ce nombre est positif");
Finsi
Fin
Remarque :dans la version 2 on fait trois tests systématiquement alors que dans la version 1,si le nombre est négatif on ne
fait qu'un seultest .

Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer d'abord les conditions les plus probables
(minimiser la complexité)
Tests imbriqués: exercice

Le prix de photocopies dans une reprographie varie selon le nombre demandé: 0,5 DH la
copie pour un nombre de copies inférieur à 10. 0,4DH pour un nombre compris entre 10
et 20 et 0,3DH au-delà.

Ecrivez un algorithme qui demande à l’utilisateur le nombre de


photocopies effectuées,qui calcule et affiche le prix à payer ?
Tests imbriqués: corrigé de l’exercice

Algorithme cop
Variables copies :entier
prix :réel
Début
Ecrire ("Nombre de photocopies :");
Lire (copies);
Si (copies < 10) alors
prix ← copies*0.5;
Sinon
Si (copies < 20) alors
prix ← copies*0.4;
Sinon
prix ← copies*0.3;
Finsi
Finsi
Ecrire (“Le prix à payer est :”,prix);
Fin
Tests imbriqués: Exercice 2

Écrire l’algorithme de traitement qui calcule le discriminant DELTA d’un trinôme du


second degré AX² + BX + C et qui, en fonction de son signe, calcule la ou les racines
réelles du trinôme, et affiche les solutions de l’équation.

Les trois coefficientsA,B et C seront saisis au clavier avant traitement.


Tests imbriqués: corrigé de l’exercice 2

Algorithme Eq
Variables A,B,C,Delta,sol1,sol2 :réels
Début
Ecrire(« entrer les coefficientsA,B,C »);
Lire (A,B,C);
Delta ← B*B – 4*A*C;
Si (Delta < 0)alors
Ecrire ( « le trinôme n’a pas de racine réelle »);
Sinon
Si (Delta > 0) alors
sol1 ← (-B + racine(Delta)) / 2*A;
sol2 ← (-B -racine(Delta)) / 2*A;
Ecrire (« le trinome possède deux racines réelles :»,sol1,sol2);
Sinon
sol1 ← -B /(2*A);
Ecrire (« le trinome possède une racine réelle :»,sol1);
Finsi
Finsi
Les Instructions répétitives:

Les boucles
Les types de boucles:

 On distingue 2 types de boucles:

◦ Les boucles à événement ou indéfinie


 On ne sait pas à l’avance le nombre de fois que la boucle sera exécutée.
 Ça peut dépendre du nombre de données à traiter.
 Ça peut dépendre du nombre d’essais que l’usager a effectués.
 Ex :la boucleTantQue et la boucle jusqu’à (Faire TantQue)

◦ Les boucles à compteur ou définie


 On sait à l’avance combien de fois la boucle devra tourner et une variable
(le compteur ) compte les répétitions
 Choisir 10 nombres au [Link] fera dix fois l’opérationchoisir un nombre au
hasard.
 Ex :la boucle Pour
Les boucles Tant que
Les boucles Tant que

TantQue (condition) Faire


instructions

FinTantQue
Vrai
Condition instructions

Faux
Les boucles Tant que exemple

Algorithme Plus_Grand_Element Entrée: n entiers S1,…, Sn


Variables grand, S, i,n: entiers Sortie: grand contenantle
Début plus grand élément
i2; n4;
Ecrire("donnezun nombre 1: "); Trace de l’algorithme:
Lire(S); n=4; S= -2; S=6; S=5; S=6
grand S;
TantQue (i <=n) Faire grand =-2 i=2
Ecrire("donnez le nombre ",i, " :");
Lire( S); grand = 6 i=3
Si (S > grand) alors
i=4
grand  S;
FinSi i=5
i  i+1;
FinTantQue
Ecrire (grand ,i);
Fin
Les boucles Tant que: exercice

Ecrire un algorithme qui détermine le premier


nombre entier N tel que la somme de 1 à N
dépasse strictement 100,1000?

Généralisez cet Algorithme?


Les boucles Tant que: solution

Un algorithme qui détermine le premier nombre entier N tel que la somme de 1 à N


dépasse strictement 100

Algorithme Pnombre
Variables som, i :entier
Debut
i ← 0;
som← 0;
TantQue (som <=100) Faire
i ← i+1;
som ← som+i;
FinTantQue
Ecrire (" La valeur cherchée est N= ",i);
Fin
Les boucles Pour
Les boucles Pour

Pour i allant de initiale à finale pas pas

instructions

FinPour

i←initiale

Vrai
Condition instructions i ← i + pas

Faux
Les boucles Pour

Remarques :

 Compteur est une variable de type entier (ou caractère).Elle doit être déclarée

 Pas est un entier qui peut être positif ou négatif. Pas peut ne pas être mentionné,car par défaut sa
valeur est égal à [Link] ce cas,le nombre d'itérations est égal à finale - initiale+ 1

 Initiale et finale peuvent être des valeurs,des variables définies avant le début de la boucle ou des
expressions de même type que compteur
Déroulement des boucles Pour

1) La valeur initiale est affectée à la variable compteur

2) On compare la valeur du compteur et la valeur de finale:

a) Si la valeur du compteur est > à la valeur finale dans le cas d'un pas positif (ou si compteur est < à finale
pour un pas négatif), on sort de la boucle et on continue avec l'instruction qui suit FinPour

b) Si compteur est <= à finale dans le cas d'un pas positif (ou si compteur est >=à finale pour un pas négatif),
instructions seront exécutées
i. Ensuite, la valeur de compteur est incrémentée de la valeur du pas si pas est positif (ou décrémenté si
pas est négatif)

ii. On recommence l'étape 2 : La comparaison entre compteuret finale est de nouveau effectuée, et ainsi
de suite …
Boucle Pour : Exercice

Algorithme Plus-Grand-Element: Réécrire l’algorithme

précédent mais avec une boucle « Pour »


Boucle Pour : Solution

Algorithme Plus-Grand-Element
//Réécriture de l’algorithme précédent mais avec une boucle ``Pour’’
Variable grand,i,S,n, :entiers
Debut
Ecrire(« donnez un nombre»);
Lire(S);
grand  S;
Pour i allant de 1 à n
Ecrire(« donnez le nombre »,i);
Lire( S);
Si (S > grand) alors //une plus grande valeur a été trouvée
grand <- S ;
FinSi
FinPour
Ecrire (grand);
Fin
Boucle Pour : Remarque

 Il faut éviter de modifier la valeur du compteur (et de finale) à l'intérieur de la [Link] effet,une telle
action :

◦ Perturbation de nombred'itérations prévu par la boucle

◦ Difficulté de lecture de l'algorithme

◦ Risque d'aboutir à une boucleinfinie


Exemple :Pour i allant de 1 à 5

i  i -1;
Ecrire(" i = ",i);

FinPour
Lien entre Pour et Tant Que

La boucle Pour est un cas particulier de TantQue (cas où le nombre d'itérations est connu et fixé) .Tout ce
qu'on peut écrire avec Pour peut être remplacé avec TantQue (la réciproque est fausse)

Pour compteur allant de initiale à finale pas pas

instructions

FinPour
compteur ← initiale;
TantQue ( compteur <= finale) Faire
peut être remplacé par :
instructions;
(cas d'un pas positif)
compteur ← compteur+pas;
FinTantQue
Lien entre Pour et Tant Que : exemple

Calcul de x à la puissance n avec la boucle Pour et la


boucle TantQue

x : un réel non nul


n : entier positif ou nul
Solution avec boucle Pour

AlgorithmeTestPour
Variables x,puiss :réel
n, i :entier
Debut
Ecrire (" Entrez respectivement les valeurs de x et n ");
Lire (x,n);
puiss ← 1;
Pour i allant de 1 à n
puiss← puiss*x ;
FinPour
Ecrire (x, " à la puissance ",n," est égal à ",puiss);
Fin
Solution avec boucle Tant Que

AlgorithmeTestTantQ
variables x,puiss :réel
n, i :entier
Debut
Ecrire (" Entrezrespectivement les valeurs de x et n ");
Lire (x,n);
puiss ← 1;
i ← 1;
TantQue (i<=n) Faire
puiss← puiss*x ;
i ← i+1;
FinTantQue
Ecrire (x," àla puissance ",n," est égal à ",puiss);
Fin
Algorithme de la fonction factorielle : Exemple

 Écrire deux algorithmes qui calculent pour un entier positif donné n la


valeur n!, un de ces algorithmes doit utilisé la boucle Pour et l’autre la
boucleTantQue

Entrée :n de type naturel

Sortie : factoriel (n) =1*2*3*…..*(n-1)*n


Algorithme de la fonction factorielle : Solution

Algorithme / TantQue Algorithme / Pour


Algorithme Calcul_factorielle_1
Algorithme Calcul_factorielle_2
Variables i, fact1, n : Entier
Variables i, fact2, n : Entier
Début
Début
Ecrire (" Entrez une valeur n"); Ecrire (" Entrez une valeur n");
Lire(n);
Lire(n);
i ← 1;
fact2← 1;
fact1 ← 1;
Pour i Allant de 1 à n
TantQue (i <= n) Faire fact2 ← fact2 * i;
fact1← fact1 * i; FinPour
i ← i+1; Ecrire (fact2);
FinTantQue
Fin
Ecrire (fact1);
Fin
Algorithme de la recherche des nombres premiers : Exemple

 Problème: Écrire l’algorithme estPremier, qui a partir d’un entier


strictement positif donné, retourne le résultat booléen VRAI ou FAUX
selon le nombre est premier ou non.

 Procédure : pour déterminer si un entier m est un nombre premier. Il


suffit de tester si m est divisible par un entier entre 2 et m/2

◦ Ex :1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47.(listes des nombres premier <=50)


Algorithme de la recherche des nombres premiers : Exemple
Algorithme EstPremier
Variables i, m : entier
r: réel
Prem: Booléen
Début
Prem ← Vrai;
Ecrire (« donner un nombre: »);
Lire (m)
Pour i allant de 2 à m/2
r ← (m%i);
Si r=0 alors
Prem ← Faux;
FinSi
FinPour
Si Prem=Vrai alors
Ecrire (m, « est un nombre premier »);
Sinon
Ecrire (m, « n’est pas un nombre premier);

FinSi
Fin
Détecter l’erreur dans les deux algorithmes

Algorithme 1 Algorithme 2
Algorithme Essai1
Algorithme Essai0
Variables
Variables
k, N : entier
n : entier
Début
Début
n ← 200;
n ← 15; Pour k Allant de 1 à n
TantQue (n<>0) Faire
Ecrire (k);
Ecrire (n);
k ← n – 100;
n ← n – 2;
FinPour
FinTantQue
Fin
Fin
Boucles imbriquées

 Les instructions d'une boucle peuvent être des instructions ité[Link] ce cas,on aboutit à des
boucles imbriquées

 Exemple: Exécution?
Pour i allant de 1 à 5
Pour j allant de 1 à i
Ecrire("O");
FinPour
Ecrire("X");
FinPour
La boucle Faire…Tant Que

Instruction(s)
Faire de la boucle
Instruction(s)
TantQue (condition)
condition
Vraie

Fausse

La boucle s’exécute tant que la condition est


vraie. La boucle cesse lorque la condition est
fausse. À utiliser si l’on veut que la boucle soit
exécutée au moins une fois
Les boucles Répéter … jusqu’à …

Répéter
instructions
instructions
Jusqu'à (condition)

Faux
Condition
Vrai

 Condition est évaluée après chaque itération

 les instructions entre Répéter et jusqu’à sont exécutées au moins une fois et leur exécution est
répétée jusqu’à ce que condition soit vrai (tant qu'elle est fausse)
Les boucles Répéter … jusqu’à …: exemple

Ecrire un algorithme qui détermine le premier nombre entier N tel que la


somme de 1 à N dépasse strictement 100 (version avec répéter
jusqu'à)
Les boucles Répéter … jusqu’à …: exemple

Un algorithme qui détermine le premier nombre entier N tel quela somme de 1 à N dépasse strictement 100
(version avec répéter jusqu'à)
AlgorithmeTest
Variables som,i :entier
Debut
som ← 0;
i ← 0;
Répéter
i ← i+1;
som ← som+i;
Jusqu'à ( som > 100)
Ecrire (" La valeur cherchée est N= ",i);
Fin
Les boucles Répéter … jusqu’à …: exemple 3

Ecrire un algorithme qui permet à l’utilisateur de saisir une suite de caractère


se terminant par ‘*’, et qui affiche à la fin le nombre d’apparition de la lettre
‘A’.
Les boucles Répéter … jusqu’à …: exemple 3

Algorithme Apparition
Var ch :caractère
NbA :entier
Début
NbA ←0 ;
Répéter
Lire(ch) ;
Si ch=’A’Alors
NbA ←NbA+1
Finsi
Jusqu’à ch=’*’ ;
Ecrire(‘Nombre d’apparition de A est :’,NbA) ;
Fin.
Les boucles Répéter … jusqu’à …: exemple 4

Ecrire l’algorithme qui affiche la somme des prix d'une suite d'articles en DH
(entiers) saisies par l'utilisateur et se terminant par zéro.
Les boucles Répéter … jusqu’à …: exemple 4
Choix d'un type de boucle

 Si on peut déterminer le nombre d'itérations avant l'exécution de la boucle,il est plus


naturel d'utiliser la boucle Pour

 S'il n'est pas possible de connaître le nombre d'itérations avant l'exécution de la boucle,on fera
appel à l'une des bouclesTantQue ou répéter jusqu'à

 Pour le choix entre TantQue et jusqu'à :

◦ Si on doit tester la condition de contrôle avant de commencer les instructions de la boucle, on utilisera
TantQue

◦ Si la valeur de la condition de contrôle dépend d'une premièreexécution des instructions de la


boucle, on utilisera répéter jusqu'à ou fairetantque
LesTableaux
Ensemble de données de même type

Exemple de problème :
Saisir une suite de nombres, puis afficher cette suite après avoir divisé
tous les nombres par la valeur maximale de la suite.
Nécessité de conserver les nombres en mémoire

variable contenant une valeur: Val

variable contenant une collection de valeurs du même type:

TabVal
Ensemble de données du même type

 Structure de données permettant d'effectuer un même traitement


sur des données de même
nature

 Tableau à une dimension

 Tableau à deux dimensions


Exemples d’applications

 Ensemble de valeurs entières, réelles,


booléennes,....

 Ensemble de noms (type chaîne)

 Ensemble de caractères (type caractère)

 Ensemble d'adresses (typeAdresse :nom,adresse,


num téléphone)
Traitements sur les tableaux

 On veut pouvoir :
- Créer des tableaux
- Ranger des valeurs dans un tableau
- Récupérer, consulter des valeurs rangées dans un tableau
- Rechercher si une valeur est dans un tableau
- Mettre à jour des valeurs dans un tableau
- Modifier la façon dont les valeurs sont rangées dans
un tableau (par exemple : les trier de différentes
manières)
- Effectuer des opérations entre tableaux : comparaison
de tableaux,multiplication,...
Traitements sur les tableaux

 Indices :en général,démarrage à 1,mais en C, démarrage à 0


 Nombre d’octets occupés : dépend du type des valeurs enregistrées
Déclaration d'un tableau

 La déclaration d'un tableau s'effectue en précisant le type de ses


éléments et sa dimension (le nombre de ses éléments)

◦ En pseudo code :
variable tableau identificateur[dimension] :type

◦ Exemple :déclaration d'un tableau pouvant contenir jusqu'à 30 réels


variable tableau notes[30] :réel
Utilisation d’un tableau par les indices

 Accès en lecture :
Ecrire(notes[4]); // le contenu du tableau à l’indice 4 est affiché à l’ecran

 Accès en écriture :
notes[3] ←18; // la valeur 18 est placée dans le tableau à l’indice 3

 Lire(notes[5]); //la valeur entrée par l’utilisateur est enregistrée dans le tableau à l’indice5
Tableaux : exemples (1)

 Pour le calcul du nombre d'étudiants ayant une note supérieure à 10 avec les tableaux,
on peut écrire :
Algorithme Mon_Premier_Tab
Variables i ,nbre :entier
tableau notes[30] :réel
Début
nbre ← 0;
Pour i allant de 1 à 30
Lire(notes[i] );
Si (notes[i] >10) alors
nbre ←nbre+1;
FinSi
FinPour
Ecrire ("le nombre de notes supérieures à 10 est : ",nbre);
Fin
Tableaux à deux dimensions

 Les langages de programmation permettent de déclarer des tableaux dans lesquels les valeurs
sont repérées par deux indices. Ceci est utile par exemple pour représenter desmatrices

 En pseudo code, un tableau à deux dimensions se déclare ainsi:

variable tableau identificateur[dimension1] [dimension2] :type

◦ Exemple : unematrice points de 3 lignes et 4 colonnes dont les éléments sont réels

variable tableau points[3][4] :réel

 points[i][j] permet d'accéder à l’élément de la matrice qui se trouve à l’intersection de la ligne


i et de la colonne j
Tableaux à deux dimensions (exemple)

 Accès en lecture :
- Ecrire(points[1] [7]); // la valeur contenue en ligne 1 colonne 7 est affichée
à l’écran
 Accès en écriture :
- points[2] [4] ← 36;
- Lire(points[2][4]); // la valeur fournie est enregistrée en ligne 2,col 4
Exemples : somme de deux matrices

 Procédure qui calcule la somme de deux matrices :

Algorithme SommeMatrices
variables n, m,i,j : entier
tableau A[n][m], B[n][m],C[n][m] : réels
Début

Pour i allant de 0 à n-1


Pour j allant de 0 à m-1
C[i][j] ← A[i][j]+B[i][j];
FinPour
FinPour
Fin
Tableaux : Exemple d’exercice

Écrire l’algorithme du traitement qui permet:


- de saisir 10 nombres entiers dans un tableau à
une dimension, puis qui
- recherche et affiche la valeur minimale entrée dans
un tableau.

L’affichage mentionnera également l’indice auquel


se trouve ceminimum.
Tableaux : Exemple d’exercice

Algorithme Tab_minimum
variables i, min, indice : entier
tableauA[10]:entier
Début
Pour i allant de 0 à 9
Ecrire(« entrer la valeur de l’élément »,i);
Lire(A[i]);
FinPour
min ← A[0];
Pour i allant de 1 à 9
Si (min>A[i]) alors
min ←A[i];
indice ←i;
Finsi
FinPour
Ecrire(« la valeur minimale est: », min);
Ecrire(« la position de cette valeur est: », indice);
Fin
Tableaux : Exemple d’exercice 2

Soit un tableau T à deux dimensions (12, 8)


préalablement rempli de valeurs numériques.
Écrire un algorithme qui recherche la plus
grande valeur au sein de ce tableau.
L’affichage mentionnera également l’indice
auquel se trouve cette valeur.
Tableaux : Exemple d’exercice 2

Algorithme Afficher Max


variables i, j, imax, jmax: entier

tableau T[12][8]:entier
Début
imax ← 0; jmax ← 0;
Pour i allant de 0 à 11
Pour j allant de 0 à 7
Si (T[i][j]>T [imax] [jmax]) alors
imax ←i;
jmax ←j;
Finsi
FinPour
FinPour
Ecrire(« Le plus grand élément est », T[iMax][jMax]);
Ecrire(« Il se trouve aux indices », iMax, « ; » , jMax);
Fin

Vous aimerez peut-être aussi