Vous êtes sur la page 1sur 139

Algorithmique et programmation

Département d’informatique
Pr. L. EL BERMI
Contenu du Module
• Chapitre 1: Généralités

• Chapitre 2: L’élément de base d’un algorithme

• Chapitre 3: La sélection en algorithmique et en C

• Chapitre 4: Les boucles en algorithmique et en C

• Chapitre 5: Les tableaux et les fonctions


Chapitre 1: Généralités

• Introduction

• Composants d’un ordinateur

• Codage
Introduction
• L’informatique est la science de traitement automatique de
l’information par des ordinateurs.
• Informatique = information + automatique (mot inventé en 1962
par Philippe Dreyfus)
• Information: ensemble de données ou de connaissances humaines
et des communications dans le domaine technique, scientifique,
économique et social.
• Traitement automatique: toutes les opérations que l’on peut
effectuer sur les informations: saisie, modification, stockage,
transmission,…
• Le traitement de l'information consiste en une suite d'opérations
transformant une représentation de cette information en une autre
représentation plus facile à manipuler ou à interpréter.
Définitions
• Un ordinateur est un ensemble de circuits
électroniques qui traite l'information grâce à un
programme qu'il mémorise, communique et archive
des informations.
• Le traitement de l'information se fait automatiquement
et vise à résoudre un problème bien défini.

• Architecture d’un ordinateur désigne le mode de


fonctionnement d’un ordinateur; c’est-à-dire comment
l’information circule dans un ordinateur.
Composantes d’un ordinateur
✓Un ordinateur se compose en deux principales
parties:
❖ Partie matérielle (Hardwrae) c’est les
composants physiques de l’ordinateur.
❖ Partie Logicielle (Software) c’est des
logiciels permettant le fonctionnement de
l’ordinateur.
• Les différentes fonctions correspondent à 3 constituants de l'ordinateur:
- la mémoire centrale
- l'unité centrale
- les périphériques
• La mémoire centrale contient les programmes systèmes nécessaires au
bon fonctionnement de l'ordinateur, et les programmes utilisateurs
répondant à un besoin particulier et résolvant un problème rencontré par
le dit utilisateur
• L'unité centrale va s'occuper de l'exécution des programmes logés dans la
mémoire centrale. Elle est constituée de l'unité arithmétique et logique
(UAL) qui s'occupe de toutes les opérations arithmétiques et logiques
(addition, soustraction, multiplication, etc) et de l’unité de commande
(UC) qui exécute les programmes instructions par instructions en
collaborant avec l'UAL.
• Les périphériques sont les unités qui assurent la relation de l'ordinateur
avec le monde extérieur. Ils constituent de périphériques d’entrée et
sortie assurant l’entrée et sortie de données.
Mémoire Processeur

Bus

Unités ...
d’entrée-
Imprimante Écran
sortie
Disque
La mémoire contient des instructions et des données
• Tous ces constituants sont reliés entre eux par
l’intermédiaire d’un bus, qui est l’artère
centrale et leur permet de s’échanger des
données.
• Pratiquement tous les ordinateurs actuels ont
cette architecture, qui ce soit les micros
ordinateurs personnels ou les gros ordinateurs
des entreprises.
• Les différences résident essentiellement dans
les performances des constituants.
• L’ensemble des communications à l’intérieur
s’effectue par le langage binaire.
Codage
Comprendre comment un ordinateur :
✓ représente une information (nombre,
caractère, image, son, etc.).
✓ Convertis des entiers ou des virgules
flottantes en représentation binaire et vice
versa.
✓En général on peut distinguer deux types
d’information: instructions et les données.
Les données
Les données: sont les opérandes sur lesquels
portent les opérations, ou produits par celles-
ci. Une addition, par exemple, peut
s’appliquer à deux opérandes, donnant un
résultat qui est la somme des deux opérandes.
On distingue les données numériques,
pouvant être l’objet d’une opération
arithmétique, des données non numériques,
par exemple, les symboles constituant un
texte.
Instructions
• Les instructions représentent les opérations (addition,
par exemple) effectuées par un ordinateur. Elles sont
composées de plusieurs champs:
- Le code de l’opération à effectuer;
- Les opérandes impliqués dans l’opération.
• Le traitement de l’information est une suite
d’opérations transformant une représentation de cette
information en une autre représentation plus facile à
manipuler ou à interpréter.
Exemples: 245+5x2-5=250; Gestion des comptes clients
dans une banque; Recensement de la population;
Inscription, notes des étudiants, …
• Le codage d’une information consiste à établir
une correspondance entre la représentation
externe (habituelle) de l’information (le nombre
65 ou le caractère «A» par exemple) et sa
représentation interne dans la machine (une suite
de bits).
• L’unité de base de la théorie de l’information est
le bit, bit = binary digit, qui signifie en anglais
nombre binaire.
• Un bit, par définition, est un composant
quelconque ne pouvant se trouver que dans deux
états possibles, exclusifs l’un de l’autre. Il prend la
valeur 0 ou 1.
Nombre de bits
Convertir de la base 10 vers une base
quelconque
• Cas de nombre entiers : On divise le nombre
par base b, puis le quotient obtenu par la base
b, et ainsi de suite jusqu’a obtenir un quotient
nul. La suite des restes obtenus correspond
aux chiffres dans la base b visée,

an an−1 ...a1a0
Exemple 1
Sens inverse: binaire en décimal
Comme, on a définit précédemment ( en base
b), convertir un nombre binaire en base décimal
c’est le calcul de la décomposition de ce
nombre. Exemple:
(101)2 = 1  2 2 + 0  21 + 1  2 0 = 5
(10)2 = 1  21 + 0  2 0 = 2
(1111)2 = 1  2 3 + 1  2 2 + 1  21 + 1  2 0 = 15
Chapitre 2: L’élément de base
d’un algorithme

• Introduction

• Définitions

• Principe
Problème
• Je veux informatiser ce problème et le rendre exploitable à
travers ma machine. Qu’est ce que je dois faire ?

2*x + 3 = 0 10*x - 1= 0

0*x + 0 = 0
0*x + 3 = 0

?? a*x + b = 0 ??
Principe d’algorithmique
Énoncé non précis : Problème informel
Spécification
Énoncé précis : Problème formel
Analyse
Algorithme
Programmation
Langage de programmation : Pascal,..
Compilation
Exécutable du programme
Exécution
Résultat
Algorithmique

Définition : Encyclopédie Universelle

Un algorithme est une suite finie de règles à


appliquer dans un ordre déterminé à un nombre
fini de données pour arriver, en un nombre fini
d'étapes, à un certain résultat, et cela
indépendamment des données
Algorithmique
Définition :

C’est un pseudo-langage qui est conçu pour


résoudre les problèmes et applications sans aucune
contrainte due aux langages de programmation et
aux spécificités de la machine. Ce pseudo-langage
sera ensuite traduit et codé dans le langage de
programmation désiré.
Langage de programmation
Définition :

On appelle langage de programmation tout ensemble


fini de mots réservés qui permettent de traduire les
instructions de l’algorithme afin de l’exécuter par
l’ordinateur.

Exemple :

Turbo Pascal, Cobol, Fortran, C, Delphi, Visual Basic


(VB), C++, Java etc...
Compilateur

Définition :

On appelle compilateur tout programme spécial qui


permet d’avoir un programme exécutable à partir d’un
programme source:

Le programme ainsi obtenu est appelé


programme Objet
Structure générale d’un algorithme
Titre du Problème
✓ Déclaration des Constantes
Déclaration ✓ Déclaration des Variables
des Objets ✓ Déclaration des Tableaux
✓ Déclaration des Procédures et Fonctions

Début
Manipulation Instructions
FIN
Etapes de résolution

Démarches à suivre pour résoudre un problème donné:

Identifier les données du départ (entrées) et celle(s) qu’il


faut obtenir (sorties);
Structurer les données (variables ou constantes, type...);
Réfléchir pour déterminer les actions nécessaires à
l’obtention des résultats ;
Présenter les résultats.
Chapitre 2: L’élément de base
d’un algorithme

• Variables
Donnée ou objet
Définition :
Un objet est toute partie identifiable de l’information
au cours d’un traitement.
Il est caractérisé par son nom, son type et sa valeur.
L’ensemble des objets manipulés par un algorithme
est appelé:
environnement de cet algorithme.
Remarque :
Les objets manipulés par un ordinateur sont :
Les Constantes et Les Variables
Les constantes
Définition :

Les Constantes désignent des références à des


valeurs invariantes dans le programme

Syntaxe de la déclaration :

Constante Nom_Constante = Valeur

Exemple :
Constante Pi = 3.14
Les variables
Définition :
Ce sont des références (adresses mémoires) où vont
être stockées des valeurs variables. Les différentes valeurs
d’une référence vont appartenir au type de données auquel
appartient la référence.
Remarques :
1°- Le nom d’une variable  suite de caractères qui permet d’identifier
la variable d’une manière unique dans un algorithme.
2°- Il existe différents types de variables.
Types de variables: Entier
Définition :
C’est l’ensemble des nombres entiers positifs ou négatifs.

Syntaxe de la déclaration :

Variable variable1,variable2,… : Entier

Exemple :
a et b sont, par exemple,
Variable a,b : Entier les coefficients de
l’équation : ax + b = 0
Types de variables: Réel
Définition :

C’est l’ensemble des nombres réels, c’est à dire les


nombres décimaux sans limitation.
Syntaxe de la déclaration :

Variable variable1,variable2,… : Réel

Exemple :

Variable x,y : Réel


Chaines de caractères
Définition :
C’est une suite de caractères, c’est à dire des
combinaisons de caractères (lettres, chiffres, symboles..).
Syntaxe de la déclaration :

Variable variable1,variable2,… : Caractère

Exemple :

Variable Nom, Catégorie : Caractère


Booléen
Définition :

Il s’agit des objets qui ne peuvent prendre que deux


valeurs vrai ou faux.
Syntaxe de la déclaration :

Variable variable1,variable2,… : Booléen

Exemple :
Variable Décision : Booléen
Autres types de déclarations
Objets : Type Tableau
Un tableau permet de représenter un ensemble de valeurs ayant des
propriétés communes et appartenant toutes au même type. Ces variables sont

identifiées par un même nom mais un numéro de repère(indice) pour chacun.

Les Fonctions et Les Procédures


Ce sont des sous-programmes auxquels on peut faire référence à
l’intérieur d’un programme . Ils sont conçus pour éviter les répétitions et pour
découper des programmes jugés trop longs; ce qui facilite la lisibilité du programme

principal.
Manipulations des variables
Définition :
On appelle instruction toute commande élémentaire que
l’on doit appliquer sur des objets pour avoir des sorties bien
définies.
Définition :
Une action est un événement qui change l’état d’un objet
d’un état initial donné à un état final désiré. Une action a une
durée d’exécution finie et un effet propre et bien défini. Chaque
action porte sur des objets sur lesquels elle s’exécute :

L'Action est une seule instruction ou un groupe d’instructions


Structure d’un algorithme

Titre du Problème
✓ Déclaration des Constantes
Déclaration ✓ Déclaration des Variables
des Objets ✓ Déclaration des Tableaux
✓ Déclaration des Procédures et Fonctions

Début
Manipulation Instructions
FIN
Manipulation: Corps d’algorithme
Dans la partie manipulation, on doit commencer par
le mot DEBUT et se termine par le mot FIN :

DEBUT
Instruction 1
Instruction 2
……. Action
…….
Instruction n

FIN
Les instructions
La partie manipulation utilise les différents objets
déclarés dans la partie déclaration et leur applique des
opérations afin de retourner le(s) résultat(s) attendu(s) par le
programmeur. Pour ce fait, il y a différentes actions, dites
instructions, à savoir :
Instructions de dialogue Homme-Machine ;
Instructions d’affectation ;
Instructions à structure alternative ;
Instructions à structure répétitive.
Etc…
Fonction de dialogue Output
L’affichage des informations:
Pour faire comprendre qu’il faut afficher des
informations à l’écran, on utilise l’instruction écrire qui obéit
à la syntaxe suivante :
Écrire (Variable ou ‘ Message’ )

Exemples : Écrire (‘ Saisissez la valeur de a ’)


Écrire (‘ Saisissez la valeur de b ’)
Écrire (‘ Saisissez les valeurs de a et b ’)
Écrire (‘Le résultat trouvé est :’, r )
Écrire (r)
Fonction de dialogue Input
La Saisie des informations:
Pour indiquer dans un algorithme que telle donnée
doit être lue par le système, on utilise l’instruction lire qui
obéit à la syntaxe suivante :

Lire(Variable)

Exemple :
Écrire (‘ Saisissez la valeur de a ’)
Lire(a)
Instruction d’affectation
Définition:
C’est le stockage d’une valeur à un endroit
spécifique(variable). Pour affecter une valeur à une variable,
on écrit :

Variable Valeur

Exemple :
Variable valeur 1 + valeur 2
Variable valeur 1 * valeur 2
Variable valeur + Variable1
◼ Les variables sont des références (adresses mémoires) où vont
être stockées des valeurs qui peuvent changer au cours de
l’exécution du programme. Les mémoires sont repérées par des
numéros (pour l’ordinateur) ou des noms (pour le
programmeur, qui a intérêt à choisir des noms significatifs).
◼ Chaque fois qu’on procède à une nouvelle affectation, l’ancien
contenu de la mémoire est perdu et un nouveau contenu est
placé dans la mémoire.
◼ Les constantes correspondent à des zones mémoires dont le
contenu ne peut pas varier. octet n° 52 ’A’
01000001
Exemple
Quels résultats produit l’algorithme suivant ? Les types de
variables sont-ils corrects
Titre : Calcul
Déclaration

Variable A: Entier
C,B : Réel
D : caractère
E : Booléen
Début
A ← 30
B ← A * 2
Écrire('B=' , B)
Manipulation

C ← (B + A)/4
B ← C / 5
D ← ‘Amine’
E ←(A > 40) Ou (C < B)
Écrire('les valeurs obtenues sont : A = ' , A ,
'B = ' ,B , ' C = ', C , ' D = ', D, ' E = ', E)
Fin
Etat de la mémoire
Instruction A B C D E
Après l’instruction
A ← 30
30    
Après l’instruction
B←A*2
30 60   
Après l’instruction
C ← (B + A)/4
30 60 22.5  
Après l’instruction
B← C/5
30 4.5 22.5  
Après l’instruction
D ← ‘Amine'
30 4.5 22.5 Amine 
Après l’instruction
E ← (A >40) Ou (C<B)
30 4.5 22.5 Amine Faux
Exercice
Énoncé:

Écrire l’algorithme permettant le calcul de la surface


d’un cercle connaissant son rayon :
Surface =  * Rayon2

Entrée : Manipulation Sortie :


La valeur du rayon La Surface calculée
Solution
Titre : Surface d’un cercle
Déclaration :
Constante Pi=3.14
Variable Rayon : Entier * Donnée d’entrée*
Variable Surface : Réel * Donnée de sortie*

Manipulation :
DEBUT
Écrire ( 'Saisir la valeur du rayon' )
Lire(Rayon)
Surface ⎯ Rayon * Rayon * Pi
Écrire (' La Surface du cercle est : ', Surface)
FIN
Exercice

Écrire l’algorithme qui permet de déterminer le


salaire mensuel d’un commercial sachant que ce
salaire comporte un montant fixe de 4000 DHS et
une commission qui représente 10% du chiffre
d’affaire réalisé par mois.
- Analyse du problème
• Recenser les données dont on dispose, celles qu’on cherche
à produire

• Choisir les actions à utiliser pour résoudre le problème


- Présentation de l’algorithme

* Déclarer toutes les données utilisées (variables, constantes, types)

* Organiser les actions

* Présenter les résultats


Solution
Titre : Commission
Déclaration :
Constante M = 4000
Variable CA : Entier * Donnée d’entrée*
Com : Réel * Donnée intermédiaire*
Sal : Réel * Donnée de sortie*
Manipulation :
DEBUT
Écrire ('Donner le CA mensuel en DHS')
Lire(CA)
Com ⎯ CA * 10/100
Sal ⎯ Com + M
Écrire ('Le salaire mensuel est de : ', Sal, ' en DHS ' )
FIN
Exercice
Écrire un algorithme qui calcule la moyenne
générale d’un étudiant sachant que celle-ci se calcule de la
manière suivante :
Moyenne = [ 3 * Note(Biologie) + 2* Note(Géologie) + Note(LCI)] / 6

Indication :

Entrées: Algorithme Sortie:


NB,NG,NLCI MG
Représentation en langage C

(De l’algorithmique au langage C)

53 Filière MIP (S1) : Module I111


Structure d’un programme C

La structure d’un programme C est la suivante :

Votre programme doit


#include<stdio.h> Obligatoirement
void main () { contenir une fonction
principale
Déclaration des variables « main ( ) », qui est
Corps exécutée lorsque le
programme est lancé
}
monProgramme.c

54 Filière MIP (S1) : Module I111


Structure d’un programme C

#include<stdio.h>

Void main () {

Déclaration des variables


Corps

}
monProgramme.c

55 Filière MIP (S1) : Module I111


Structure d’un programme C

Mon premier programme : Bonjour tout le monde

#include <stdio.h>
void main()
{
printf(" Bonjour tout le monde ") ;

On sauvegarde ce programme dans un fichier qui se nomme


programme1.c

56 Filière MIP (S1) : Module I111


Structure d’un programme C
Mon premier programme : Bonjour tout le monde
➢ La machine ne comprend que le langage machine
➢ Il faut traduire mon programme programme1.c en langage
machine à l’aide d’un traducteur du langage C vers le langage
machine
➢ Un programme appelé compilateur vérifie la syntaxe de mon
programme (on dit d’une façon générale, code source) et le
traduit en code objet, compris par le processeur
➢ Le programme en code objet ainsi obtenu peut être exécuté sur la
machine
57 Filière MIP (S1) : Module I111
Compilation d'un programme C
Schéma simplifié de la compilation
#include <stdio.h>
void main()
{
printf(" Bonjour tout le monde ") ;
}

58 Filière MIP (S1) : Module I111


Compilation d'un programme C
Schéma: Bibliothèques de fonctions et compilation

59
Filière MIP (S1) : Module I111
Compilation d'un programme C
Quelques environnements de développement

Sous Windows Sous Linux


➢ Eclipse ➢ Eclipse
➢ Netbeans ➢ Netbeans
➢ Visual C++ ➢ KDevelop
➢ Turbo c++ ➢…
➢ Dev-C++

60 Filière MIP (S1) : Module I111


De l’algorithmique au C
Algorithme et programmation C
Algorithme somme #include <stdio.h>
variable X, Y: Entier void main ( ){
Début int X, Y ;
X4 X=4 ;
Ecrire("Donner Y ") printf("Donner Y");
Lire(Y) scanf("%d",&Y);
Ecrire(X+Y) printf("%d",X+Y);

Fin }
61 Filière MIP (S1) : Module I111
De l’algorithmique au C
Traduction de l’entête d’un algorithme

Syntaxe en pseudo-code: Syntaxe en langage C :

Algorithme <nom_algorithme> void main ( )


(éventuellement ajouter au début
du fichier #include<stdio.h>)

62 Filière MIP (S1) : Module I111


De l’algorithmique au C
Traduction des déclarations d’un algorithme : variables

Syntaxe en pseudo-code: Syntaxe en langage C :

variable<nom_variable> : <type_variable> <type_variable> <nom_variable> ;

63 Filière MIP (S1) : Module I111


De l’algorithmique au C
Traduction des déclarations d’un algorithme : variables

64
Filière MIP (S1) : Module I111
De l’algorithmique au C
Traduction des instructions : affectation

Exemple:

65 Filière MIP (S1) : Module I111


De l’algorithmique au C
Traduction des instructions : écriture

Exemple :

66
Filière MIP (S1) : Module I111
De l’algorithmique au C
Exemple : Traduire en C l'algorithme suivant

67 Filière MIP (S1) : Module I111


De l’algorithmique au C
Corrigé
#include<stdio.h>
Void main ( )
{
int A, B, C;
A = 3;
B=2;
printf(" Avant échange");
printf("La valeur de A =%d et de B =%d",A,B);
C=B;
B =A;
A= C;
printf(" Après échange") ;
printf("La valeur de A =%d et de B =%d",A, B);
}

68 Filière MIP (S1) : Module I111


De l’algorithmique au C
Traduction des instructions : lecture

Exemple :

69 Filière MIP (S1) : Module I111


De l’algorithmique au C
Exemple : Traduire en C l'algorithme suivant

70 Filière MIP (S1) : Module I111


De l’algorithmique au C
Corrigé #include<stdio.h>
Void main ( )
{
int A, B, C;
printf("Donner A");
scanf("%d",&A);
printf("Donner B");
scanf("%d ",&B) ;
C=B;
B =A;
A=C;
printf("Après échange") ;
printf("La valeur de A =%d et de B =%d",A, B);
}

71 Filière MIP (S1) : Module I111


Les Constantes caractères (Séquences d'échappement)

Une séquence d'échappement est un couple de symboles dont le premier


est le signe d'échappement '\'.

\a sonnerie \\ trait oblique


\b curseur arrière \? point d'interrogation
\t tabulation \' apostrophe
\n nouvelle ligne \" guillemets
\r retour au début de ligne \f saut de page (imprimante)
\0 NUL \v tabulateur vertical

72 Filière MIP (S1) : Module I111


Les opérateurs standards

Opérateurs arithmétiques Opérateurs logiques

+ addition && et logique


- soustraction || ou logique
* multiplication
/ division (entière et rationnelle!) ! négation logique
% modulo (reste d'une div. entière)

Opérateurs de comparaison

== égal à
!= différent de
<, <=, >, >= plus petit que, ...

73 Filière MIP (S1) : Module I111


Initialisation des variables

En C, il est possible d'initialiser les variables lors de leur déclaration:

Exemple:
int A,MAX = 1023;
char C,TAB = '\t';
float X = 1.05e-4;

Remarque:

int A=10; int A;


A=10;

74 Filière MIP (S1) : Module I111


Initialisation des variables
Les constantes
En utilisant l'attribut const, nous pouvons indiquer que la valeur d'une variable
ne change pas au cours d'un programme.

Exemple:
const int MAX = 767;
const double TVA = 0.25;
const double e = 2.7;
const char NEWLINE = '\n';

75 Filière MIP (S1) : Module I111


Commentaires

Les commentaires sont non seulement utiles, mais nécessaires à la


compréhension d'un programme.

Forme « standard » : /*... */ ou //…

Exemple:

a = a + 1; /* Ceci est un commentaire de ligne */


b = b - 1; /* Et ceci en est un autre */

76
Filière MIP (S1) : Module I111
Les opérateurs particuliers de C

En pratique, nous retrouvons souvent des affectations comme: i = i + 2


En C, nous utiliserons plutôt la formulation plus compacte: i += 2
L'opérateur += est un opérateur d'affectation.
Pour la plupart des expressions de la forme:
expr1 = (expr1) op (expr2)
Il existe une formulation équivalente qui utilise un opérateur
d'affectation:
expr1 op= expr2

77 Filière MIP (S1) : Module I111


Les opérateurs particuliers de C
Opérateurs d'affectation

+= ajouter à
-= diminuer de
*= multiplier par
/= diviser par
%= modulo

Exemple

A+=2; A=A+2;
A*=B A=A*B;
A%=B A=A%B;

78 Filière MIP (S1) : Module I111


Opérateurs d'incrémentation et de décrémentation
Les affectations les plus fréquentes sont du type: I = I + 1 et I=I-1
En C, nous disposons de deux opérateurs pour ces affectations:
I++ ou ++I pour l'incrémentation (augmentation d'une unité)
I-- ou --I pour la décrémentation (diminution d'une unité)
X=I++ passe d'abord la valeur de I à X et incrémente après
X=I-- passe d'abord la valeur de I à X et décrémente après
X=++I incrémente d'abord et passe la valeur incrémentée à X
X=--I décrémente d'abord et passe la valeur décrémentée à X

var ++; ⇒ Post-incrémentation


++ var; ⇒ Pré-incrémentation
Exemple
Supposons que la valeur de N est égal à 5:
X = N++; Résultat: N=6 et X=5
X = ++N; Résultat: N=6 et X=6
79 Filière MIP (S1) : Module I111
Les priorités des opérateurs

Priorité 1 (la plus forte): ()


Priorité 2: ! ++ --
Priorité 3: */%
Priorité 4: +-
Priorité 5: < <= > >=
Priorité 6: == !=
Priorité 7: &&
Priorité 8: ||
Priorité 9 (la plus faible): = += -= *= /= %=

80 Filière MIP (S1) : Module I111


Les fonctions arithmétiques standard
Les fonctions suivantes sont prédéfinies dans la bibliothèque
standard <math>. Pour pouvoir les utiliser, le programme doit contenir la
ligne:
#include<math.h>
COMMANDE C EXPLICATION
exp(X) fonction exponentielle
log(X) logarithme naturel
log10(X) logarithme à base 10
pow(X,Y) X exposant Y
sqrt(X) racine carrée de X
fabs(X) valeur absolue de X

sin(X) cos(X) tan(X) sinus, cosinus, tangente de X


asin(X) acos(X) atan(X) arcsin(X), arccos(X), arctan(X)
sinh(X) cosh(X) tanh(X) sinus, cosinus, tangente hyperboliques de X

81 Filière MIP (S1) : Module I111


Les conversions de type
Les conversions de type automatiques
les valeurs des opérandes sont converties automatiquement dans un type
commun. Ces manipulations implicites convertissent en général des types plus
'petits' en des types plus 'larges';
char < short ≤ int ≤ long < float < double
Exemple
➢ Pour le calcul de D, A est converti en float et divisé par C. Le

char A=3; résultat (0.75) est affecté à D qui est aussi du type float. On
int B=4; obtient donc: D=0.75
float C=4;
float D,E; ➢ Pour le calcul de E, A est converti en int et divisé par B. Le
char F; résultat de la division (type int, valeur 0) est converti en float.
D = A/C;
E = A/B; On obtient donc: E=0.000
F = A/C; ➢ Pour le calcul de F, A est converti en float et divisé par C. Le
résultat (0.75) est retraduit en char. On obtient donc: F=0

82 Filière MIP (S1) : Module I111


Les conversions de type
Les conversions de type forcées (casting)
Il est possible de convertir explicitement une valeur en un type quelconque en
forçant la transformation à l'aide de la syntaxe:
Casting (conversion de type forcée)

(<Type>) <Expression>

Exemple
La valeur de A est explicitement convertie
char A=3;
int B=4; en float. La valeur de B est automatiquement
float C;
C = (float)A/B;
convertie en float. Le résultat de la division
(type rationnel, valeur 0.75) est affecté à C.
Résultat: C=0.75
83 Filière MIP (S1) : Module I111
Écriture d'un caractère putchar('a');

putchar() c’est une fonction d’écriture d’un caractère.

Exemples

char A = 225;
char B = '\a';
int C = '\a';
putchar('x'); /* afficher la lettre x */
putchar('?'); /* afficher le symbole ? */
putchar('\n'); /* retour à la ligne */
putchar(65); /* afficher le symbole avec le code 65 (ASCII: 'A') */
putchar(A); /* afficher la lettre avec le code 225 (ASCII: 'ß') */
putchar(B); /* beep sonore */
putchar(C); /* beep sonore */

Remarque:
putchar(B); printf("%c",B) ;

84 Filière MIP (S1) : Module I111


Lecture d'un caractère getchar

getchar() c’est une fonction de lecture d’un caractère

Exemple:

int C;
Scanf("%c",&c);
C = getchar();

85 Filière MIP (S1) : Module I111


Exemple 1 : Traduire en C l'algorithme suivant

Algorithme Calcul
Variable A : Entier
C,B : Réel
D : caractère
E : Booléen
Début
A ← 30
B ←A* 2
Écrire('B=' , B)
C ← (B + A)/4
B←C/5
D ← ‘A’
E ← (A > 40) Ou (C < B)
Écrire('les valeurs obtenues sont : A = ' , A , 'B = ' ,B , ' C =’,C, ' D = ', D, ' E = ', E)
Fin

86
Exemple 2 : Traduire en C l'algorithme suivant

Algorithme Surface d’un cercle


Constante Pi=3.14
Variable Rayon : Entier * Donnée d’entrée*
Variable Surface : Réel * Donnée de sortie*
DEBUT
Écrire ( 'Saisir la valeur du rayon' )
Lire(Rayon)
Surface ⎯ Rayon * Rayon * Pi
Écrire (' La Surface du cercle est : ', Surface)
FIN

87
Exemple 3 : Traduire en C l'algorithme suivant

Algorithme Commission
Constante M = 4000 * M: montant fixe*
Variable CA : Entier * Donnée d’entrée (CA: chiffre d’affaire) *
Com : Réel * Donnée intermédiaire (Com: commission )*
Sal : Réel * Donnée de sortie(Sal: salaire mensuel )*
DEBUT
Écrire ('Donner le CA mensuel en DHS')
Lire(CA)
Com ⎯ CA * 10/100
Sal ⎯ Com + M
Écrire ('Le salaire mensuel est de : ', Sal, ' en DHS ' )
FIN

88
Chapitre 2: L’élément de base
d’un algorithme

• Structure alternative
Structure alternative

Les conditions :

On appelle condition simple toute expression de la forme :

Variable 1 Opérateur Variable 2


Opérations Arithmétiques
Opération Signification

+ Addition

- Soustraction

* Multiplication

/ Division

% ou mod Modulo : le reste de la division de 2


valeurs entières
Opérations conditionnelles
Pour exprimer les conditions, on utilise les opérateurs conditionnels suivants :

Opérateur Signification
= Égal
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
<> différent
Opérations logique
On peut combiner des conditions à l’aide des opérateurs logiques :

Opérateur Signification
Et Et logique

Ou Ou logique

Non Négation logique

Ou = Xor Ou exclusif
Exemple

Expression Résultat
(4 <7) ET (9>0) Vrai
(1 < 0) OU (1<>1) Faux
Non(13.4 < 15) Faux
Priorité des opérations
Priorité de *, / div et % par rapport à + et -
5 + 9 * 3 = 32 et non 42
5*9+3 = 48 et non 60
Pour les opérateurs de même priorité, associativité à
partir de la gauche
15 / 5 * 3 = 9 et non 1
5 – 2 + 4 = 7 et non –1
On peut utiliser des parenthèses pour changer l’ordre
des opérations :
15 / (5 * 3) = 1
(5 + 9 ) * 3 = 42
Types de variables et Opérations
Priorité de *, / div et % par rapport à + et -
5 + 9 * 3 = 32 et non 42
5*9+3 = 48 et non 60
Pour les opérateurs de même priorité, associativité à
partir de la gauche
15 / 5 * 3 = 9 et non 1
5 – 2 + 4 = 7 et non –1
On peut utiliser des parenthèses pour changer l’ordre
des opérations :
15 / (5 * 3) = 1
(5 + 9 ) * 3 = 42
Structure Alternative: SI
Pour exprimer le fait que des instructions vont être exécutées
dans un cas alors que d’autres instructions peuvent être
exécutées dans l’autre cas, on utilise une structure alternative.
Syntaxe :
Si condition alors
Actions 1
[ Sinon
Actions 2] Option Facultative
Finsi
Exemple
Titre : Test 1 Titre : Test 2
Variable x : entier Variable x : entier
Début Début
Écrire ('Saisir un entier x ') Écrire ('Saisir un entier x ')
Lire (x) Lire (x)
Si (x > 0) alors Si (x > 0) alors
Écrire('x est un nombre positif ') Écrire (' x est un nombre positif ')
Finsi Sinon
Fin Écrire (' x est un nombre négatif ou nul')
Finsi
Fin
Exercice
Dans l’exercice précédent (Calcul la moyenne générale). Afficher
‘Admis’ si un étudiant a une moyenne générale >=10 et Afficher ‘Ajourné’
dans le cas contraire (Moyenne générale < 10).

Solution : …………….(Reste de l’algorithme)


Si (MG >= 10) alors
Écrire ('Admis')
Sinon
Écrire ('Ajourné')
Finsi
FIN
Exercice

Écrire l’algorithme qui permet de calculer le


maximum de deux entiers quelconques.
Solution
Titre : Maximum
Variable a ,b, max : entier
Début
Écrire ('Saisir deux entiers a et b ')
Lire(a, b)
Si (a > b) alors
max ⎯ a
Sinon
max ⎯ b
Finsi
Écrire ('le maximum de ' , a , ' et de ' , b, ' est : ' , max)
Fin
Instruction: Selon-cas

L’instruction Selon cas constitue une structure


alternative à la forme en bloc [Si … Alors …Sinon…] et
permet de formuler de manière plus simple le choix du
groupe d’instructions.
Syntaxe : Suivant Cas variable Faire
Cas Valeur 1
Actions 1
Cas Valeur 2, Valeur3, Valeur 4
Actions 2
Cas Valeur 5 à Valeur 7
Actions 3
..
..
Sinon Cas
Actions N
Fin Suivant
Exemple

Écrire l’algorithme qui permet de déterminer


le nombre de jours d’un mois d’une année donnée
….Reste de l’Algorithme
Selon Cas M Faire
Cas 2
Action 1
Cas 1, 3, 5, 7, 8, 10 , 12
Action 2
Cas 4, 6, 9, 11
Action 3
Sinon Cas
Écrire ( 'Attention : Mois Incorrect ')
Fin Suivant
FIN
Structure répétitive
Problème :
Écrire un algorithme permettant d’afficher 300 fois le message :
‘‘ bonjour tout le monde’’.

Solution Classique :
DEBUT
Écrire (' Bonjour tout le monde ') 1
Écrire (' Bonjour tout le monde ') 2
.
.
Écrire (' Bonjour tout le monde ') 300
FIN
Boucle: Tant que
On utilise cette instruction pour exécuter des actions
tant qu’une condition est réalisée.

Syntaxe :

<initialisation>
Tant que Condition Faire

<bloc de traitement>
<bloc de contrôle> Action

Fin tant que


«
Sémantique : Si condition = T
◼ Tant que Valeur(T)=Vrai le bloc d'instructions R sera

exécuté.
◼ Si valeur(T)=Faux on passe à l'instruction suivante.

➢ Avec TANT QUE le test est fait à PRIORI.

➢ Il se peut que l'on ne rentre jamais dans la

boucle.
➢ La boucle n'est pas INCONDITIONNELLE. On

ne connaît pas à l’avance le nombre d'itérations.


Solution de l’exercice précédent :
Variable i : Entier
DEBUT
i ⎯ 0 * Initialisation *
Tant que (i < 300) Faire
Écrire (' Bonjour tout le monde ')
i  i+1
Fin tant que
FIN
Exercice
Afficher tous les multiples de 9 inférieurs à 485
Titre : Multiples de 9
Variable M, i : Entier *i: variable intermédiaire: compteur*
DEBUT
i ⎯ 0 * initialisation de la boucle*
M ⎯ 0
Tant que (M < 485) Faire
Écrire (M , ' est un multiple de 9 ' )
i  i+1 * incrémentation du compteur *
M ⎯ i * 9
Fin tant que
FIN
Exercice
Dans cet algorithme combien de fois la boucle est- elle exécutée ?
Titre : Boucle1
Variable i , y : Entier
Début
i i = variable intermédiaire
y0 = compteur
Tant Que (i<7) faire i  i+1 = incrémentation
du compteur
i  i+1
y  y+i
Écrire (' y = ' , y)
Fin Tant que
Fin
Boucle: Faire jusqu’à
On utilise cette instruction pour exécuter des actions
jusqu'à ce que une condition soit remplie.

Syntaxe :

<Initialisation>
Faire
<bloc de traitement>
<bloc de progression > Action
Jusqu’à Condition
Sémantique :
✓Si valeur(T)= Faux la boucle est à nouveau exécutée.
✓ Si Valeur(T)=Vrai, on passe à l'instruction suivante.
Avec Faire jusqu’à le test est fait à POSTERIORI.
• Il y aura un passage dans la boucle. Le bloc
d’instructions sera exécuté au moins une fois.
• La boucle n’est pas INCONDITIONNELLE. On ne
connaît pas à l’avance le nombre d’itérations.
Exemple
Titre : Boucle2
Variable i , y : Entier
Début
i
y0 Valeurs de y ?
faire
i  i+1
y  y+i
Écrire (' y = ' , y)
Jusqu’à (i >7)
Fin
Exercice

Écrire un algorithme permettant de calculer, pour un


entier N> 0, la somme :
SN = 1 + 2 + 3 + …… + N
Solution
Variable N,S, i : Entier
DEBUT
Écrire (' Saisir une valeur entière positive :')
Lire (N)
S ⎯ 0 * initialisation de la boucle*
i ⎯ 0
Faire
i ⎯ i + 1
S ⎯ S + i
jusqu’à (i > =N)
Écrire (' La somme : S = ', S)
FIN
Boucle: Pour
La spécification de cette instruction c’est qu’elle
limite le nombre de fois où doit se répéter le bloc Action

Syntaxe : La boucle est


<Initialisation> Inconditionnelle
On connaît à priori le
nombre d'itérations
Pour variable ⎯ valeur1 à valeur2 faire

<Bloc de traitement>

Fin Pour
Exercice

Écrire un algorithme permettant le calcul du factoriel


d’un entier N > 0 donné : N !
Titre : Factoriel
Variable N : Entier
i : Entier * i variable intermédiaire
F : Entier i = compteur *
DEBUT
Écrire (' Saisir une valeur entière N > 0: ')
Lire (N )
F 1 * initialisation de la boucle*
Pour i  1 à N Faire
F  F*i
Fin Pour
Écrire (' Le factoriel de ', N , ' est : ' , F)
FIN
Exercice

Écrire l’algorithme permettant de calculer la


moyenne des notes de N étudiants
Solution
Titre : Moyenne
Variable N, i : Entier
note, S, Moy : Réel
DEBUT
Écrire (' Saisir le nombre d’étudiants: ')
Lire (N)
S ⎯⎯ 0 * initialisation de la boucle*
Pour i  1 à N faire
Écrire (' Saisir la note de l’Etudiant ' , i , ' : ')
Lire (note)
S ⎯⎯ S + note
Fin Pour
Moy ⎯⎯ S/N
Écrire (' La moyenne est : ', Moy)
FIN
A tenir
Si nombre d'itérations connu Alors
Boucle Pour
Sinon
Si itération exécutée au moins une fois Alors
Boucle Faire jusqu’à
Sinon
Boucle Tant que faire
Boucle: tant que faire et faire jusqu’à
Remarques: Soient T une condition et R l’action. Alors il y a équivalence
entre les boucles Tant que faire et Faire jusqu’à. La syntaxe est la suivante:
▪ Si T alors
◼ Tant Que T faire Faire
R ~ R
Fin Tant Que Jusqu ’à non(T)
FinSi
Et
◼ Faire ▪ R
Tant Que non(T) faire
R ~ R
jusqu ’à T Fin Tant Que
Exercice

1- Écrire un algorithme permettant de déterminer le Nème


terme d’une suite numérique connaissant son premier
terme et ses coefficients a et b et tels que:
Un = a * Un-1 + b  1  n N
2- Écrire un algorithme permettant de définir le
rang N et le terme correspondant de la suite tels que
UN > 1000
Solution
1) Le nombre d’itérations est connu : Boucle Pour

Variable N, i : Entier
Variable a, b, S : Réel
DEBUT
Écrire (' Saisir la valeur de N: ')
Lire (N)
Écrire ('Saisir la valeur du premier terme et les coefs a et b:')
Lire (S , a, b )
Pour i  1 à N faire
S ⎯⎯ a * S + b
Fin Pour
Écrire ( ' Le terme d’’ordre:’, N, ‘est : ', S )
FIN
2) Le nombre d’itérations inconnu : Boucle Faire jusqu’à

Variable N : Entier
Variable a, b, S : Réel
DEBUT
Écrire ('Saisir la valeur du premier terme et les coefs a et b:')
Lire (S , a, b)
N ⎯ 0
Faire
S ⎯⎯ a * S + b
N ⎯ N + 1
Jusqu’à S > 1000
Écrire (' La somme de la série est : ', S)
Écrire (' Le rang est : ', N )
FIN
Exercice

Écrire un algorithme permettant de calculer la somme :


Sn(x) = 1/x + 2/x2 + 3 /x3 + …… + n /xn
Chapitre 4: Tableaux & fonctions
Tableaux

Un tableau permet de représenter un ensemble de


valeurs ayant des propriétés communes et appartenant toutes
au même type. Ces variables sont identifiées par un même nom
mais un numéro de repère(indice) pour chacun.

Remarque :
1°- Un tableau peut être d’une ou plusieurs dimensions.
2°- La syntaxe de la déclaration d’un tableau change selon
la dimension de ce dernier
Syntaxe de la déclaration :

Tableau à une dimension :

Tab Nom-Tableau[nombre de valeurs supportées] : Type

Tableau à plusieurs dimensions :

Tab Nom-Tableau[nombre de valeurs supportées en dimension1,


nombre de valeurs supportées en dimension 2,
,… ] : Type
Tableau à une dimension :
- Un tableau pour enregistrer les salaires de 30 employés :
Tab Salaires[30] : Réel
Salaires[16] = 4000.50
Tableau à plusieurs dimensions :
- Une matrice d’entiers de 5 lignes et 7 colonnes :
Tab Matrice-Test[5,7 ] : Entier
Matrice-Test[2,3] = 13
Exemple 1: Calcul Moyenne
Tableau Note[11]:Réel
Variable Moy, Som : Réel
Début
Pour i ← 1 à 11 faire
Ecrire ("Entrez la note n", i)
Lire (Note([i])
Fpour
Som ← 0
Pour i ← 1 à 11 faire
Som ← Som + Note[i]
Fpour
Moy ← Som / 11
Ecrire (‘la moyenne est ’,Moy)
Fin
Exemple 2
• Ecrire un algorithme qui permet d’afficher une
matrice et de calculer la somme de deux
matrices
Fonctions et procédures

Ce sont des sous-programmes auxquels on peut faire


référence à l’intérieur d’un programme . Ils sont conçus pour
éviter les répétitions et pour découper des programmes jugés
trop longs ce qui facilite la lisibilité du programme principal.

Remarques :
1°- Les Fonctions et les Procédures sont caractérisées par des
paramètres d’entrée et des paramètres de sortie.
2°-La fonction retourne une seule valeur tandis que La
procédure peut retourner plusieurs valeurs ou aucune.

Vous aimerez peut-être aussi