Vous êtes sur la page 1sur 18

1

Algorithme & structure


des données I

1ère IAG
Responsables : Dr. Fadoua Bouafif
Dr. Boutheina Fessi

2
Chapitre 1: Généralité

1. Introduction
2. La démarche algorithmique
3. Définitions
4. Élaboration d'un algorithme
5. Structure d'un algorithme
6. Passage de l'algorithme au programme
7. Etapes d’éxecution d’un programme sur la machine
3
Introduction

 Qu’est ce qu’un programme informatique?


 C’est une suite d'actions ou d'instructions permettant à l'ordinateur de résoudre un problème donné.
 Comment écrire un programme?
 La mise en place d’un programme informatique nécessite plusieurs étapes.
 La première étape est la plus importante : la phase d’analyse.
 Qu’est ce que la phase d’analyse ?
La phase d’analyse consiste à:
 Comprendre le problème énoncé,
 Cerner ces limites, et
 Mettre en forme le problème dans un langage descriptif.
 Qu’est ce qu’un langage descriptif ?
 C’est un langage utilisé pour écrire le résultat de l’analyse.
 Algorithme

4
La démarche algorithmique
5
Définitions

 Un algorithme est conçu pour résoudre un problème en utilisant l'ordinateur.


 Un algorithme est une suite d'opérations ou d'instructions suivant une logique déterminée.

Exemples : les algorithmes de recherches, de trie, etc.

 L'algorithmique est une science qui cherche la manière la plus optimale pour calculer des solutions
pratiques à un problème de calcul.
 L'algorithmique désigne l'ensemble des règles et des techniques qui sont impliquées dans la
définition et la conception des algorithmes.
 L'implémentation est la transcription de l'algorithme dans un langage évolué.

6
Élaboration d'un algorithme

 Objectif : Structurer le raisonnement afin de parvenir à une solution claire.


Différentes questions se posent ainsi :
 Quel est le résultat attendu ?
 Quelles sont les données nécessaires pour résoudre ce problème ?
 Quels sont les principaux sous-problèmes ?
 Quelles sont les principales étapes permettant de les résoudre ?

 Solution:
Ecriture d’un algorithme où nous précisons les constantes, les variables, les types de données et
les instructions.
7
Élaboration d'un algorithme

 Caractéristiques :
Un algorithme doit être :
 Lisible : l'algorithme doit être compréhensible même par un non informaticien.
 De haut niveau : l'algorithme doit pouvoir être traduit dans n'importe quel langage de programmation.
 Précis : chaque élément de l'algorithme ne doit pas porter à confusion. Il est donc important de lever
toutes ambigüités.
 Concis : un algorithme ne doit pas dépasser une page. Si c'est le cas, il faut le décomposer en sous-
programme.
 Structuré : un algorithme doit être composé de différentes parties facilement identifiables.

 Remarque : La décomposition du problème en sous-problèmes et leurs descriptions s'appellent


modularisation des programmes (fonctions et procédures).

8
Structure d'un algorithme/programme

En Algorithmique En C
Algorithme nom_algorithme En tête void main()
{ //début du programme
Const:
// déclaration des constantes
Var: Déclaration des variables // déclaration des constantes
// déclaration des variables et des constantes // déclaration des variables ;

Début

instruction 1 instruction 1;
instruction 2 instruction 2 ;
…… Traitement ……
instruction n instruction n ;
Fin
} //fin du programme
9
Passage de l'algorithme au programme

 Après la phase d’analyse qui aboutit à l’écriture de l'algorithme relatif au problème donné, la
deuxième phase qui doit être élaborée est la programmation.
 La programmation consiste à traduire l'algorithme en un langage de programmation
(langage évolué) spécifique.
 Le langage de programmation
 est l'intermédiaire entre l'humain et la machine.
 permet d'écrire dans un langage proche de la machine mais intelligible par l'humain les opérations que
l'ordinateur doit exécuter.
 doit respecter une sémantique et une syntaxe stricte.
 La sémantique est l'étude du sens des mots.
 La syntaxe ou la grammaire est l'étude des contraintes entre les mots pour former des phases correctes.

10
Etapes d’éxecution d’un programme sur la machine

1. Codage: consiste à choisir un langage de


programmation et à l'aide de son éditeur,
1 l'algorithme est traduit et sera enregistré dans un
fichier nommé source.
2. Compilation: traduit le fichier source en un fichier
objet après avoir détecté toutes les erreurs
syntaxiques du programme.
3. Edition de liens: consiste à combiner les différents
2 3 fichiers objets pour créer un fichier exécutable.
4. Exécution : permet d’afficher le résultat du
programme via l’environnement de
4 développement intégré et le programmeur peut
se rendre compte des erreurs logiques en
effectuant une série de tests.
11
Chapitre 2: Notions de base et actions
élementaires
1. Introduction
2. Déclaration des variables
 Les constantes
 Les variables
 Les types de données
3. Les expressions et les opérateurs
 Les expressions
 Les opérateurs
4. Les instructions simples ou élémentaires
 Instruction d’affectation
 Instruction de lecture/écriture (entrée/sortie)

12
Introduction

La structure général d'un algorithme comprend plusieurs parties et définit certaines notions et
actions.
 Déclaration des variables
 Les expressions et les opérateurs
 Les instructions simples ou élémentaires
13
Déclaration des variables

Les données utilisées dans un programme sont rangées dans différentes variables, donc elles doivent être
déclarées avant l'écriture des instructions qui les traitent.

C’est quoi une variable?

 Une variable est un espace mémoire que le programme réserve lors de son exécution, au moment de sa
déclaration.

 Une variable possède un nom et un type.

 Le nom donne accès au contenu de la variable, il


 est composé de lettres et/ou chiffres mais pas de caractères de ponctuations ou espace.

 commence impérativement par une lettre.

 ne doit pas correspondre à un mot clé du langage utilisé. En C, on différencie les majuscules et les minuscules.

14
Déclaration des variables

 Le type précise la taille de l'espace mémoire réservé et le codage binaire employé pour lire et écrire la
donnée.

 Le type peut être simple ou structuré :

 Les types simples correspondent aux données uniques, comme les entiers, réels, caractères,

 Les types structurés correspondent à un ensemble de données, comme une suite de nombres
(tableau d'entier) ou de caractères (chaine de caractères). Dans ce cas, chaque case élémentaire de
l'ensemble peut contenir une donnée de type simple ou structuré.

 Lors de la déclaration des variables dans l’algorithme (programme), deux types sont discernés: les
constantes et les variables.
15
Les constantes: définition

 Une constante est une variable :


 Elle a une valeur fixe tout au long de l'algorithme (programme)
 Elle ne peut pas être modifiée au cours de l'exécution de l'algorithme (programme).
 Le type de la constante peut être : entier, réel, booléen, chaine de caractère, etc.

En algorithmique En C
Const : nom_constante = valeur Const type nom_constante = valeur ; #define nom_constante valeur

Exemple : Exemple : Exemple :


Algorithme test void main() #define x 3.14
const : x = 3.14 {
debut const float x = 3.14 ; void main ()
.......... .... {
Fin } ……
}

16
Les variables: définition

 Une variable est une donnée dont la valeur peut être modiée au cours de l'exécution de
l'algorithme (programme).
 Elle peut être :
 Une donnée d'entrée (fournie par l'utilisateur)
 Un résultat final d'un calcul
 Un résultat intermédiaire de calcul
17
Les variables: déclaration

En algorithmique En C
Var : nom_v : type Type nom_v ;

Exemple : Exemple :
Algorithme test void main()
var : a : entier {
x ,y : caractère int a;
debut char x,y;
.......... ....
Fin }

18
Les types de données

Il existe trois familles de types simples à savoir :


 Types numériques
 Types alphanumériques
 Type booléen
Les types de données: 19
Types numériques

C'est le cas où une variable est destinée à recevoir des nombres.


 entier (int en C) : réservé aux valeurs numériques entières.
Exemple : 10, 5.

 réel (float en C) : réservé aux valeurs numériques décimales.


Exemple : 10.2 , 3.5.

Les types de données: 20


Types alphanumériques

Ce type de variable stocke des caractères : des lettres, des signes de ponctuations,
des espaces et des chiffres.
 caractère (char en C) : correspond à un caractère du code ASCII.
Exemple : b, c, h.

 chaine de caractères (char* en C) : ensemble de caractères.


Exemple : "bonjour "
21
Les types de données:
Type booléen

 Ce type prend deux valeurs soit vrai (1) soit faux (0).
 En C, ce type n'est pas explicitement exprimé. Il est formulé à travers des
expressions booléennes basées sur les opérateurs logiques afin de générer un
résultat booléen.
Exemple :
int age_legal, age ;
age_legal = (age >= 16) && (age < 65)

22
Les expressions

 Une expression représente une donnée.


 Elle peut être une entité (variable, chiffre, caractère) ou un ensemble d'entités
reliées par des opérateurs.
Exemple : bonjour ; 3 + 2; 5; 2 * 3/10; etc.
23
Les opérateurs

 Un opérateur est un signe qui relie deux valeurs pour produire un résultat.
 Il existe plusieurs types d'opérateurs :
 Opérateurs sur les entiers et les réels
 Opérateurs sur les entiers et les booléen
 Opérateur sur les chaines de caractères
 Opérateurs de comparaison

24
Les opérateurs sur les entiers et les réels

Arithmétique
En Algorithmique En C
+ Addition +
- Soustraction -
* Multiplication *
/ division /
div Division entière /
mod Reste de la division %
Remarques :
 La multiplication et la division ont la priorité sur l'addition et la soustraction.
 L'utilisation des parenthèses force l'ordre des priorités.
25
Les opérateurs sur les entiers et les réels

En C, d'autres opérateurs peut être appliqués sur les types numériques:

26
Les opérateurs sur les entiers et les booléens

L'application de ses opérateurs sur les entiers :


 et retourne 1 si les deux opérandes sont non nuls, sinon 0.
Exemple : 32 et 40 1 ; 32 et 0 0
 ou retourne 1 si au moins un des opérandes est non nul, sinon 0.
Exemple : 32 ou 40 1 ; 32 ou 0 1 ; 0 ou 0 0
 non retourne 1 si l'entier est nul, sinon 0.
Exemple : non 40 0 ; non 0 1
27
Opérateur sur les chaines de caractères

 Cet opérateur est valable uniquement en algorithmique

28
Les opérateurs de comparaison

Remarques :
 Ces opérateurs sont utilisés en algorithmique et en C (par convention)
29
Les instructions simples ou élémentaires:
Instruction d’affectation
Instruction d’affectation :
 Consiste à attribuer une valeur à une variable donnée.
En algorithmique En C
Notation :
 =

Exemples : Exemples :
A  30 A = 30;
B  "bonjour" B = "bonjour";
 Une instruction d’affectation ne modifie que ce qui est situé à gauche de la flèche (= en C)
 La valeur qui va être affectée à une variable doit être impérativement du même type que
cette dernière, sinon c'est une erreur.
Exemples : var : X : réel
X  "bonjour" erreur
X  5.3 correcte

30
Les instructions simples ou élémentaires:
Instruction d’affectation
Exercices:
1. Quelles sont les valeurs de A; B et C après exécution 2. Déterminer les valeurs de x
des instructions suivantes :

var : A,B : entier var : A,B,C : entier


debut debut
A 1 A 5
B A+ 3 B 3
C A+ B
A 3
A 2
fin C B-A 3. Déterminer les valeurs des expressions suivantes
fin
31
Instruction de lecture/écriture (entrée/sortie)

Ces instructions permettent au programmeur de dialoguer avec sa machine.


 L'opération de lecture permet à l'utilisateur de saisir une valeur à partir du clavier pour qu'elle soit
utilisée par l’algorithme (programme).
 Syntaxe : lire (variable)
Exemple : lire (x)
lire (x, y)
 L'opération d'écriture permet à l’algorithme (programme) de communiquer des valeurs à l'utilisateur
en les affichant à l'écran.
 Syntaxe : écrire (variable) ou
écrire ("message", variable)
Exemple : écrire (x) ou écrire ("la valeur est :", x)
écrire (x, y)

32
Instruction de lecture/écriture (entrée/sortie)

EN C:
 Les fonctions d'entrée-sortie sont déclarées dans le fichier 'stdio.h’.
 Il faut, donc, inclure ce fichier avant le programme principal (void main( )) en utilisant l'instruction #include <stdio.h>
 La fonction scanf() : permet de lire les données à partir du clavier.

Syntaxe: scan ("format", &Var1, &Var2, &Var3, …);

 Format : le format de lecture de données,


 &Var1, … : adresses des variables aux quelles les données seront attribuées. L'adresse d'une variable est indiquée
par le nom de la variable précédé du signe « & »
Exemple : float x ; int i ; double dx ;
scanf ("%f", &x) ; /*lit un réel simple précision et le place dans x */
scanf ("%d", &i) ; /* lit un entier et le place dans i */
scanf ("%lf", &dx) ; /* lit un réel double précision et le place dans dx */
33
Instruction de lecture/écriture (entrée/sortie)

EN C:
 La fonction printf() : permet d’afficher à l'écran du texte, des valeurs de variables ou des résultats d'expression
Syntaxe : printf ("format", expr1, expr2, …);
 Format : est une chaîne de caractères qui peut contenir:
 du texte
 des séquences d’échappement (\n : retour à la ligne; \t: tabulation ; \": guillemet; …)
 des spécificateurs de format : indiquant le format d’affichage
 expr1, … : sont les variables et les expressions dont les valeurs seront achées à la place des spécificateurs de formats
Exemples:
1. printf ("bonjour");

2. float x ; int i ;
x = 15.3 ; i=5;
printf ("la variable x vaut %f \n la variable i vaut %d\n", x, i) ;

34
Instruction de lecture/écriture (entrée/sortie)

EN C:
 Spécificateurs de format

Type de la variable Format Signification


char %c caractère
char * %s chaine de caractères
int %d ou %i entier
float %f réel
double %lf réel sous la forme [-]dddd.dddd

 Les différents formats concernent aussi bien la saisie que l’affichage.


35
Instruction de lecture/écriture (entrée/sortie)

EN C:
Exemple
#include <stdio.h> /* bibliothèque pour les fonctions entrée /sortie */
void main () /* programme principal */
{ / * déclaration des variables */
int i, j ; // déclaration d'entiers
double a, b ; // déclaration de réels
/* initialisation des variables */
i = 10 ; // affecte à i la valeur 10
j=i+3; // affecte à j la valeur de i + 3
a = 4.5 ; // affecte à a la valeur 4.5
b = 7.2 * a ; // affecte à b la valeur 7.2* valeur de a
/* Affichage des valeurs des variables */
printf ("i = %d \n", i) ;
printf ("j = %d \n", j) ;
printf ("a = %lf \n", a) ;
printf ("b = %lf \n", b) ;
}

Vous aimerez peut-être aussi