Vous êtes sur la page 1sur 16

Cours : Algorithmique et programmation I Année universitaire : 2020-2021

Classe : TI1x

Chapitre 2 : Les objets simples d’un algorithme et les


actions élémentaires
Introduction
Un algorithme manipule des objets qui représentent des données ou des résultats. Ces objets peuvent
être des constantes ou des variables, de type simple ou de type structuré.

Notion d’objet
Un objet est soit :

 une constante (valeur non modifiable) ;

 une variable (valeur modifiable).

Un objet est caractérisé par :

 son Identificateur : une suite quelconque de caractères alphanumériques (sans


espace) commençant obligatoirement par une lettre ;
 sa valeur : constante ou variable ;
 son type : caractérisant l’ensemble des valeurs possibles ainsi que les
opérateurs applicables.

Remarque : On ne peut pas faire un traitement sur un objet si on ne connaît pas son type.

I. Les types simples d'objets :


Un type a pour rôle de caractériser l'ensemble des valeurs qui sont manipulées lors de l'exécution.

Un type est parfaitement défini par :

- Son nom,

- L'ensemble des valeurs que peut prendre l'objet,

- Les opérations que l'on peut effectuer sur cet objet.

I.1 Le type Entier


Le type Entier désigne les valeurs des nombres entiers relatifs, formant un sous-ensemble des
nombres entiers.

1
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x
Un entier est représenté par un nombre fixe d'octets (mot machine). C’est pour cette raison que
l'ensemble des entiers en informatique est compris entre un minimum et un maximum avec un bit de
signe (le plus à gauche).

Bit de signe = 0 si entier >= 0 ;

Bit de signe = 1 si entier < 0 ;


Dans le langage C, on trouve 3 types pour les entiers :
- short int ou short
- int
- long int ou long

Pour chacun de ces types qui représentent des entiers signés, il existe un type équivalent pour
les entiers non signés et ceci en ajoutant le mot clé unsigned devant chaque type voulu. En
effet, le bit servi pour coder le signe pour les entiers signés entre dans le codage du nombre
ce qui permet de doubler la taille des nombres représentables.

Le tableau suivant résume les caractéristiques des types numériques entiers de C :

Définition Description Domaine min Domaine max Nombre d'octets

short entier court -32768 32767 2

int entier standard -32768 32767 2 (sur processeur 16


-2147483648 2147483647 bits)
4 (sur processeur 32
bits)

long entier long -2147483648 2147483647 4

unsigned entier court 0 65535 2


short

unsigned entier standard 0 65535 2 (sur processeur 16


int bits)
4294967295
4 (sur processeur 32
bits)

unsigned entier long 0 4294967295 4


long

2
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x
Sur les variables de type Entier, on peut utiliser les opérateurs arithmétiques ainsi que les opérateurs
relationnels.

I.2 Le type Réel

Désigne les valeurs des réels. Les valeurs de type réel forment un sous-ensemble de
l'ensemble des nombres réels.
Un nombre réel sera représenté sous la forme M.BE avec M mantisse, B base et E exposant.
Exemple : 4.2 x 10-3 -2.51 x 104
En machine, les nombres réels sont représentés dans la norme IEEE 754.
Il existe 3 types de réels :
- float
- double
- long double
Le tableau suivant résume les caractéristiques des flottants (réels) de C :

Définition Libellé Domaine min Domaine max


Float réel standard 3.4 x 10-38 3.4 x 1038
double réel double 1.7 x 10-308 1.7 x10308
long double réel double long 3.4 x 10-4932 3.4 x104932

Sur les variables de type Réel, on peut utiliser les opérateurs arithmétiques ainsi que les opérateurs
relationnels.

Les fonctions standards effectuées sur les réels sont :

Syntaxe en Syntaxe en C Rôle de la fonction Exemples


algorithme
Abs(x) fabs(x) Donne la valeur absolue de x fabs(-3.8) vaut 3.8
fabs(5.147) vaut 5.147
Racine(x) sqrt(x) Donne la racine carrée de x sqrt(4) vaut 2
sqrt(5) vaut 2.236068
Arrondi(x) ceil(x) Donne un arrondi en plus de x ceil(6.1247) vaut 7
ceil(6.9999) vaut 7
Tronc(x) floor(x) Donne un arrondi en mois de floor(4.9999) vaut 4
x floor(4.158) vaut 4

3
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x
Cos(x) cos(x) Donne le cosinus de x. x est cos(0) vaut 1
en radians cos(PI/2) vaut 0
Sin(x) sin(x) Donne le sinus de x sin(0) vaut 0
sin(-PI/2) vaut -1
Exp(x) exp(x) Donne l’exponentiel de x exp(0) vaut 1
Ln(x) log(x) Donne le logarithme népérien log(0.48) vaut -0.73
NA pow(x,y) Donne la puissance de x par y pow(2,3) vaut 8

I.3 Le type caractère

Une variable de type caractère contient un et un seul caractère. Les caractères peuvent être
des lettres en majuscule ou en minuscule, des chiffres ou des symboles.

Exemples : ‘A’, ‘a’, ‘+’, ‘1’….

Comme les valeurs du type caractère sont ordonnées, on peut donc utiliser les opérateurs
relationnels.

Exemples: ‘y’ ‘z’ ; ‘8’ ‘9’ ; ‘?’ ‘A’.

Les fonctions prédéfinies sont :

Fonction Signification Exemple


Ord(C) renvoie le code ASCII du caractère C ORD('A') = 65
CHR(X) renvoie le caractère dont le code ASCII : CHR(65) = 'A'
est X
SUCC(C) renvoie le successeur de C s’il existe SUCC('A') = 'B'
PRED(C) renvoie le prédécesseur de C s’il existe PRED('B') = 'A'
MAJUS(C) convertit le caractère C en majuscule MAJUS('a') = 'A'
s’il est possible
MINUS(C) convertit le caractère C en minuscule MINUS('A') = 'a'
s’il est possible.

Sur les variables de type caractère, on peut utiliser les opérateurs relationnels, sachant que chaque
caractère est remplacé par son code ASCII.
En langage C, le type char n'est qu'un entier signé codé sur un octet. Il en découle que toutes
les opérations autorisées sur les entiers peuvent être utilisées sur les caractères (ajouter ou
soustraire deux caractères, ...).

4
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

Définition Libellé Domaine min Domaine max Nombre d'octets


Char caractère -128 127 1

I.4 Le Type Booléen ou Logique


Le type Booléen définit une information pouvant prendre une des deux valeurs prédéfinies VRAI
(V/1) ou FAUX (F/0).
Sur les variables de type booléen, on applique des opérateurs logiques pour constituer une
expression logique.
En langage C :
Il n'existe pas de type spécial pour variables booléennes. En général, on déclare une variable
de type int qui peut être 0 (faux) et 1 (vrai).

II. Les variables et le constantes


II.1 Les variables

Une variable est un objet dont le contenu peut être soit consulté, soit modifié par une action
tout le long d'un algorithme. Une variable est définie par :

 son nom ;
 son type ;
 son contenu.

Exemples:

En algorithmique En langage C

x : réel double x ;

y,z : entier int y,z ;

II.2 Les constantes

Une constante est un objet dont l'état reste inchangé tout le long d'un algorithme. Seule la
consultation est autorisée.

Une constante est définie par:

 son nom ;
 sa valeur.

5
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x
En langage C :

Soit hors de la fonction principale main() :


#define <nom-constante> <valeur>

Soit dans le corps de la fonction principale main() :


const <type> <nom-constante> <valeur> ;

Exemples:

En algorithmique En langage C
PI=3.14 #define PI 3.14
ou
const double PI=3.14 ;
ANNEE=2020 #define ANNEE 2020
ou
const int ANNEE=2020 ;

III. Les opérateurs


III.1 Opérateurs arithmétiques

Opérateur En algorithmique En C

Addition + +

Soustraction - -

Multiplication * *

Division réelle / /

Division entière DIV /

Reste de la division entière MOD %

Remarques :

- Le résultat de la division de deux entiers est un entier. Si le résultat n’est pas entier la
partie décimale est ignorée.

- L’opérateur modulo (%) ne peut pas être utilisé avec des nombres décimaux (float,
double, …).

6
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

III.2. Opérateurs relationnels


Opérateur En algorithmique En C

Egal = ==

Différent ≠ !=

inférieur < <

supérieur > >

Inférieur ou égal ≤ <=

Supérieur ou égal ≥ >=

III.3. Opérateurs logiques

Opérateur En algorithmique En langage C

Négation NON !

ET logique ET &&

OU logique OU ||

III.4 Les opérateurs d’incrémentation et de décrémentation

Opérateur En C Exemple

Incrémentation ++ x++ ;  x=x+1

Décrémentation -- y-- y=y-1

III.5 Simplification des opérateurs arithmétiques

7
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

Opérateur (en C seulement) Exemple Signification

+= x+=3 ; x=x+3

-= y-=2 ; Y=y-2 ;

*= z*=4 ; z=z*4 ;

/= x/=2 ; x=x/2 ;

%= x%=y x=x%y

III.6. Priorité des opérateurs

Entre les opérateurs que nous venons de présenter, nous pouvons distinguer les classes
de priorités suivantes :

Priorité 1 (la plus forte): ()

Priorité 2: !, ++, --, -

Priorité 3: *, /, %

Priorité 4: +, -

Priorité 5: <, <=, >, >=

Priorité 6: ==, !=

Priorité 7: ||, &&

Priorité 9 (la plus faible): =, +=, -=, *=, /=, %=

- Dans chaque classe de priorité, les opérateurs ont la même priorité. Si nous avons une
suite d'opérateurs binaires de la même classe, l'évaluation se fait en passant de la
gauche vers la droite dans l'expression.

- Pour les opérateurs unaires (!, ++, --) et pour les opérateurs d'affectation =,( += , -=,
*=, /=, %=), l'évaluation se fait de droite à gauche dans l'expression.

8
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

III.7 Les expressions


Une expression est une suite d'opérandes et d'opérateurs.

Une opérande peut être une constante ou une variable de type Entier, Réel, Caractère ou Booléen.

Un opérateur peut être arithmétique ou logique.

IV. Actions élémentaires


Définition
Une action ou instruction est une opération qui permet de changer un univers donné à partir
d’un état initial vers un état final en un temps fini.

Etat initial Etat final

Une action élémentaire peut être soit :


 Une affectation ;
 Une opération de lecture ou d’écriture ;
 Un appel à un programme existant.
En langage C, une action élémentaire s’appelle une instruction et se termine toujours par
un point-virgule « ; ».

IV.1 L'Affectation
L’affectation est une instruction qui permet de placer une valeur dans une variable qui
doit être préalablement déclarée.
Syntaxe:
En algorithmique En C
<variable>  <expression> <variable>=<expression> ;

On lit <variable> reçoit <expression>


9
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x
Remarques:
 La variable <variable> et <expression> doivent être de types compatibles,
 L’expression peut être soit :
 Une constante
Exemple:
En algorithmique En C
A10 A=10 ;

 Une variable
En algorithmique En C
xy x=y ;

 Une expression
En algorithmique En C
xz*y x=z*y ;

Echange des contenus de deux variables:


Pour échanger les contenus de deux variables A et B (c.à.d. mettre la valeur de A dans B
et la valeur de B dans A), il faut impérativement passer par une troisième variable qu’on
appelle variable auxiliaire.
2

A 1 3 B

Aux
Exemple
En algorithmique En C
AuxA Aux=A ;
AB A=B ;
BAux B=Aux ;

10
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

IV.2 L'instruction de Lecture : Saisie des données


L’instruction de lecture permet à l’ordinateur d’acquérir des informations (données) de
l’utilisateur par l’intermédiaire d’un périphérique d'Entrée, tel que le clavier, par
exemple.
La saisie ou lecture se fait uniquement dans des variables. Les données correspondantes
sont stockées dans des cases mémoire (cellules).
La donnée à introduire doit être de même type que la variable réceptrice.

Format général:
Saisir (<nom_variable1> [ , <nom_variable2>, … ,<nom_variableN>])
Ou bien
Lire (<nom_variable1> [ , <nom_variable2>, … ,<nom_variableN>])
L’instruction de lecture (saisir) permet de lire à partir du clavier la valeur à affecter à la
variable <nom_variablei> au moment de l’exécution du programme.
Exemples:
 Lire (n) cette instruction permet de saisir une valeur dans la variable n
 Lire (a,b,c) cette instruction permet de saisir 3 valeurs respectivement dans les
variables a,b et c

IV.3 L'Instruction d'Ecriture : Affichage des données


Cette instruction permet de communiquer un résultat ou un message sur écran ou sur
imprimante pour l’utilisateur.
Format général:
Afficher (<paramètre1>[, <paramètre2>,…,<paramètreN>])
Ou bien
Ecrire (<paramètre1>[, <paramètre2>,…,<paramètreN>])
<paramètrei> peut être soit :
 Un texte ;
 Une constante ;
 Une variable ;
 Une expression.
Exemples:
 Ecrire (x)
11
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

 Ecrire ( La moyenne est : , Moy)


 Ecrire ( La valeur de 3*2 est égale à , 6)
 Ecrire ( La surface est : , Long * Larg)

IV.4 Appel à un programme


L’appel à un programme déjà existant consiste à exécuter le programme tout
simplement en citant son nom pour utiliser directement le résultat fourni par ce dernier
sans avoir à le réécrire.

V. Les fonctions standard d’entrées/sorties en langage C


V.1. Bibliothèque adoptée
A chaque utilisation d’une fonction d’entrée ou de sortie (lecture, écriture), il faut inclure le
fichier « stdio.h » à l’entête du programme.

Ceci se traduit par l’instruction suivante : #include<stdio.h>

« stdio.h » est le nom d’un fichier de définitions, des fonctions et des constantes utilisées
dans un programme pour des entrées ou des sorties standards.

std → Standard

i → Input

o → Output

h → header (entête)

V.2. Fonction getchar()


Elle permet de renvoyer le code d’un caractère saisi à partir de l’organe standard d’entrée à
savoir le clavier.

Exemple :
char c ;
c=getchar() ;

12
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

V.3. Fonction putchar()


Elle permet d’afficher le caractère mis en paramètre sur l’organe standard de sortie à savoir
l’écran.

Exemple :
char c ;
c=’a’ ;
putchar(c) ;
VI.4. Fonction scanf()
Elle permet d’affecter la valeur saisie à partir du clavier à la variable mise en paramètre
selon le type concerné.

Syntaxe :

scanf(<format>, <liste des adresses de variables>) ;


<format> : chaîne de caractères délimitée par “ “ définissant les spécifications de conversion
de types à appliquer au niveau de la lecture.

Une spécification de conversion commence par le caractère % suivi d’un type de conversion
comme suit :

Format Type de variable

%d ou %i Entier relatif : int

%u Entier non signé : unsigned int

%ld Entier long : long

%o Entier exprimé en octal

%x Entier exprimé en hexadécimal

%c Caractère : Char

%f Réel standard: float

%lf Réel double: double

13
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

%e Réel double en forme exponentielle

Exemple :

char c,y ;
float x ;
int i ;
scanf(“%c“, &c) ;/* saisir un caractère et le stocker dans la
variable c */

VI.5. Fonction printf

Elle permet d’afficher sur l’écran les variables mises en paramètre selon le type
concerné. Syntaxe :

printf(<format>, <liste d’arguments>) ;

<format> : chaîne de caractères délimitée par “ “ définissant les spécifications de conversion


de types à appliquer au niveau de l’affichage.

Exemple :
int i ;
char c ;
i=5 ;
c=’a’ ;
printf(“ %c %d “ , c , i ) ; /* permet d’afficher l’entier 5
et le caractère a sur l’écran */
- La fonction printf() peut ne pas contenir des arguments.

Exemple :
printf(“ bonjour “) ;

- Lors de l’affichage, on peut donner un format spécifique aux résultats.

Exemple :
int d=203 ;
float f=23.54 ;

14
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x

printf(“%5d“, d ) ; /* Ceci va réserver 5 cellules en


cadrant l’entier 203 à droite */
printf(“ %-5d “, d ) ; /* Cadrage à gauche */
printf(“ %2.1f “, f) ; /* L’affichage se fait avec un seul
chiffre après la virgule */

- La fin de ligne ainsi que la tabulation peuvent s’énoncer comme suit :


\n fin de ligne
\t tabulation

VI. Exemples d’algorithmes

Exemple 1: en utilisant des valeurs constantes


En algorithmique En C

#include <stdio.h>
int main () {
ALGORITHME Surface1
VAR
longueur, larg, surf : Réel double longueur, larg,
surf;

DEBUT
longueur  12.5
larg  7.3 longueur=12.5;
larg=7.3;
surf  long * larg surf=longueur*larg;
Ecrire ( La surface du rectangle
printf("La surface est
est : , surf) %f",surf);

FIN return 0;

Exemple2: en utilisant des valeurs saisies


En algorithmique En C

#include <stdio.h>
int main () {

15
Cours : Algorithmique et programmation I Année universitaire : 2020-2021
Classe : TI1x
ALGORITHME Surface2
VAR
double longueur, larg, surf;
long, larg, surf : Réel
DEBUT printf("Introduire la longueur
du rectangle : ");
Ecrire ( Introduire la longueur scanf("%lf",&longueur);
du rectangle : ) printf("Introduire la largeur
Lire (long) du rectangle : ");
Ecrire ( Introduire la largeur scanf("%lf",&larg);
du rectangle : ) surf=longueur*larg;

Lire (larg) printf("La surface est


Surf<- long*larg %lf",surf);

Ecrire ( La surface du return 0;


}
rectangle est : , surf)

FIN

16

Vous aimerez peut-être aussi