My Basket
You have nothing in your shopping cart yet.
Title: Livre ASD
Description: If you want to study the algorithm and data structure and c language then you are in the right place
Document Preview
Extracts from the notes are below, to see the PDF you'll receive please use the links above
Algorithmique et Programmation C
Cours et exercices corrigés
Dr Maher HENI
Mme Sonia GUERBOUJ
•
•
•
•
Formation d'ingénieur
Licence
Formation continue
BTS
Mheni & SGarbouje
Liste des ouvrages:
Dr: Maher HENI:
Routage orienté optimisation énergétique dans les réseaux sans
fil: Routage et efficacité énergétique dans les MANETs et les
WSN, Editions universitaires europeennes (Aôut -2013)
Mheni & SGarbouje
Algorithmique et
Programmation C
Cours et exercices corrigés
Dr Maher HENI
Mme Sonia GUERBOUJ
© Tous droits de reproduction, de traduction et d'adaptation
réservés pour tous pays
©Centre de Publication Universitaire, Manouba, 2015
B
...
This makes it hard to plan the day » Elwyn Brooks White
*******
«The world can develop only with the human imagination,
so you must try to imagine an idea that can change the world
or we'll just live and die and will be forgotten » Maher HENI
Mheni & SGarbouje
Avant propos
Cet ouvrage présente les algorithmes et structures de
données de base qu'on rencontre souvant en programmation
...
En effet, de ce langage, nombreux langages en dérivant et
aussi il est à la base de tous les systèmes d'exploitation
populaires
...
Ce livre s'adresse aux étudiants en licence
fondamentale et appliquée en informatique, aux élèves
ingénieurs, et à tous ceux qui souhaitent acquérir des bases
solides en algorithmique et programmation C
...
•
Le langage de programmation C
Un langage de programmation est l'intermédiaire entre
l'utilisateur humain et l'ordinateur
...
Ainsi, étant
donné qu'il est destiné à l'ordinateur, le langage de
programmation doit respecter une syntaxe stricte
...
Dans notre ouvrage nous présentons la traduction des
algorithmes en langage C
...
Nous avons aussi présenté quelques problèmes de
concours nationaux et des examens semestriels avec des
corrigés détaillés
...
Notion de programmation
Programmation
Un programme est une liste d’instructions bien
structurées qu’on exécute afin de répondre à un problème
...
Dans ce dernier cas, on parle de
programmation informatique
...
Selon la définition
précédente de programmation, on remarque qu’il existe une
grande similitude entre les termes « programme » et «
algorithme »
...
On emploie le terme « algorithme »
lorsque la séquence d’instructions est écrite en langage
algorithmique et fait abstraction d’un ensemble de détails
...
II
...
7
Mheni & SGarbouje
Dans cette étape, on doit spécifier les objectifs attendus
du programme
...
Etape-2: ANALYSE et CONCEPTION
Lors de cette étape, on analyse le problème et on
élabore la méthode de sa résolution
...
Etape-3: CODAGE
L’algorithme obtenu à l’issu de l’étape précédente est
traduit en un langage de programmation bien spécifique
...
Cette étape peut être l’étape la plus longue
...
Et au
fur et à mesure de son exploitation, on continue à le maintenir
c'est-à-dire à corriger les erreurs qui n’ont pas été détectées
auparavant et l’améliorer
...
e: Le mot compilation se traduit en algorithmique et en
programmation par la traduction d'un programme en langage
compréhensible par la machine dans un premier temps, puis
l'éxécuter dans un deuxième temps
...
p
...
Les variables :
Définition
Tous les langages de programmation sont basés sur la
manipulation de variables
...
Elle est identifiée par un nom et une adresse, c'est-àdire une zone mémoire dans laquelle on enregistre sa valeur
...
En plus, les
caractères spéciaux ne sont pas pris en compte sauf le tirait
bas "_"
...
9
Mheni & SGarbouje
Les constantes
Les constantes sont des valeurs de certaines grandeurs
qui ne changent jamais durant l’exécution du programme
...
Par convention, les noms des constantes sont écrits
en majuscule pour les différencier des variables dans le code
...
14
G = 10
const type_const
nom_const =
valeur_const ;
const float PI
= 3
...
Les types simples
Un type spécifie la liste des valeurs que peut prendre
une variable
...
En algorithmique on définit 5
algorithmique,
types de données simples :
- Type entier : les valeurs de l’ensemble « »
(l’ensemble des entiers relatifs) en mathématique
- Type réel : les valeurs de l’ensemble ℝ (l’ensemble
des réels) en mathématique
p
...
)
- Les chaines de caractères : les séquences de
caractères
- Le type logique ou booléen : les valeurs vrai et faux
...
1
...
Les opérations qu’on peut effectuer sur un entier sont :
+ : Addition
- : Soustraction
* : Multiplication
div : Division entière
mod : Modulo, le reste de la division
Et aussi les opérations de comparaison:
≠ : Différence
= : Egalité
< : Inférieur
≤ : Inférieur ou égal
> : Supérieur
≥ : Supérieur ou égal
2
...
En plus des opérations de comparaison, les
opérations qu’on peut effectuer sur un réel sont :
p
...
Le type caractère
Un caractère peut être un chiffre ou une lettre
aphabétique ou un caractère spécial
...
Les opérations qu’on peut
effectuer sur les caractères sont principalement des opérations
de comparaison utilisant le code ASCII (American Standard
Code for Information Interchange) de chaque caractère
...
Les principales opérations qu’on peut effectuer sur les
caractères sont :
≠ : Différence
= : Egalité
< : Inférieur
≤ : Inférieur ou égal
> : Supérieur
≥ : Supérieur ou égal
Le résultat de comparaison entre deux caractères est de
type booléen
...
Le type booléen
Une variable de type booléen peut prendre la valeur
« vrai » ou « faux »
...
Les opérations qu’on peut
effectuer sur les booléen sont :
p
...
Les types en langage C
La notion de type sert à déterminer le nombre d'octets
nécessaire en mémoire pour stocker une variable
...
Ce tableau
résume l’ensemble des types qui existent en langage C
...
13
Mheni & SGarbouje
147 483 647
unsigned
long int
Entier long non
signé
4
float
Flottant (réel)
4
double
Flottant double
8
long
double
Flottant double
long
10
0 à 4 294 967 295
3
...
4*1038
1
...
7*10308
3
...
4*104932
V
...
Elles expriment des calculs arithmétiques ou des relations
logiques
...
Expression arithmétiques :
Priorité
1
2
3
4
Opérateurs
Parenthèses : ( )
Puissance : ^
Multiplication et division : *, /, Div, Mod
Addition et soustraction : + et -
Les opérateurs de calculs sont organisés selon un ordre
de priorité afin d’éviter toute ambiguïté lors de l’évaluation
de toute expression
...
p
...
Expressions logiques :
Ce sont les expressions de comparaison (=, ≠, <, ≤, >,
≥,) pour les types réels, entiers et caractères mais aussi les
opérations logiques (ET, OU, NON) pour les booléens
...
Expressions en langage C :
Les expressions en langage C diffèrent de
l’algorithmique uniquement dans la représentation
symbolique des opérateurs qui les composent
...
Priorité
Classe
d’opérateur
1
Parenthésage
2
Multiplicatifs *, / ,%
Opérateur
()
Sens de
priorité
De gauche à
droite
De gauche à
droite
p
...
Les Instructions Simples
1
...
16
Mheni & SGarbouje
En algorithmique :
En langage C :
Variable ← Valeur
Variable = Valeur ;
Exemple :
Exemple :
a ←3
a=3;
b ←6+a
=> b contiendra 9
b=a+6;
La variable à droite doit avoir une valeur et doit être de
même type que la variable à gauche
...
Remarque
Le langage C, étant très riche, introduit des opérateurs
d’affectation qui ne sont pas utilisés en algorithmique
...
Opérateur
Signification
++
Incrémentation
--
Décrémentation
Exemple
int i=1 ;
i++ ;
int j=5 ;
j-- ;
i = i+1 ;
=> i vaut 2
j = j-1 ;
p
...
14 ;
initialisation
x+=PI ;
x = x+PI ;
=> x vaut 10
...
14
*=
Multiplication et
affectation
x *= PI ;
=> x vaut 21
...
229…
Modulo et
affectation
int j=5, i=2;
initialisation
j %= i ;
=> j vaut 1
%=
2
...
Ce message peut être un texte à
l’utilisateur ou un résultat
...
18
Mheni & SGarbouje
Pour afficher un message de type chaine de caractère
tel qu’il est sans modification, il doit être placé entre deux
guillemets, sans guillemets, la chaine sera interprétée comme
un nom de variable dont on affiche la valeur
...
h"
...
19
Mheni & SGarbouje
Cependant, pour afficher une variable, c’est un peu plus
complexe qu’en algorithmique, car la machine a besoin de
connaître le format d'affichage pour cette variable
...
Pour cela, le langage C possède des indicateurs de
format prédéfinis qui doivent être spécifiés entre guillemets
dans la fonction printf selon la syntaxe suivante :
printf ("format_variable", nom_variable) ;
Exemple :
printf ("Résultat= %f", moyenne);
printf ("Vous avez %i ans", age) ;
L’ensemble des indicateurs de format pour la fonction
prinft sont résumés dans ce tableau
...
20
Mheni & SGarbouje
%x
Hexadécimal
%ld
Long décimal, l'indication "l" est
aussi valable pour les autres
types
%5
...
Toutes ces fonctions ne
nécessitent aucun indicateur de format
...
Instruction de lecture
L'instruction de lecture (Lire) permet de lire une valeur
donnée par l'utilisateur
...
Exemple :
Ecrire ("Donner la valeur de x et y :")
Lire (x,y)
p
...
Cette fonction nécessite, comme la
fonction printf, qu’on lui spécifie entre guillemets le format
de la variable à lire, d’où la syntaxe suivante :
scanf ("format_variable", &nom_variable") ;
Exemple :
printf("Donner la valeur de x et y :") ;
scanf ("%i",&x) ;
scanf ("%f",&y) ;
Remarques
L'ordre d'exécution en algorithmique est
séquentiel instruction par instruction, ce-ci sera traduit en
langage "C" par un "point-vérgule ;"
Il est possible de faire la lecture de plusieurs
variables dans la même ligne, mais cela peut engendrer
des erreurs lors de l’exécution, surtout si l’utilisateur se
trompe
...
Les indicateurs de format pour scanf sont les
mêmes que pour la fonction printf et indiqués dans le
tableau précédent
...
La lecture d'une
valeur permet de la stocker mémoire, d’où le symbole
p
...
Si l’on oublie de mettre le symbole &,
la variable à lire ne sera pas modifiée par la valeur entrée,
et donc cette valeur sera perdue
...
Tout au long de ce livre, nous allons mettre le
point sur d'autres fonctions standards en algorithmique et
en langage C
...
VII
...
Structure d’un algorithme
La structure générale d'un algorithme est comme suit :
on commence par donner un nom à l'algorithme (bien sûr il
doit être significatif) suivi par l’ensemble des déclarations :
les constantes, les types puis les variables
...
), doivent être définis avant la déclaration des
variables (pour être utilisés)
...
Nous
p
...
Algorithme
nom_algorithme
Constantes
…
Types
…
Variables
…
...
24
Mheni & SGarbouje
Début
ch = "intéressant"
Ecrire ("Bonjour tout le monde, ce cours est ", ch)
Fin
2
...
Ces bibliothèques
contiennent les fonctions prédéfinies dans le langage et qui
seront utilisées dans le programme, telles que printf, scanf,
etc
...
Ensuite, le reste du programme est une
séquence de déclarations (types, constantes, variables) puis
d’instructions délimitées entre deux accolades et précédées
par le mot clé main qui signifie qu’il s’agit du programme
principal
...
25
Mheni & SGarbouje
/* inclusion des bibliothèques */
main ( )
{
/* déclarations */
/* instructions */
}
On remarque donc que le nom du programme n’est pas
mis à l’intérieur du code comme en algorithmique
...
c
...
o
...
Exemple :
#include
...
26
Mheni & SGarbouje
/* le caractère \n n’apparaît pas à l’écran il permet
de faire un saut de ligne */
}
Remarque :
Tout texte écrit entre /* et */ est un commentaire, il
n’est pas pris en compte lors de l’exécution
...
Exemple : //un commentaire
VIII
...
Traduire cet algorithme en programme C
...
Traduire cet algorithme en programme C
...
Traduire cet algorithme en programme C
...
27
Mheni & SGarbouje
Exercice 4:
Ecrire un algorithme qui lit les valeurs de a et b puis
affiche a à puissance b (ab)
...
N
...
h>
IX
...
c
#include
...
28
Mheni & SGarbouje
Exercice 2:
Algorithme cercle
Constantes
PI=3,14
Variables
p, s, r : réel
Début
Ecrire ("donner le rayon du cercle: ")
Lire(r)
p ← 2*PI*r
s← PI*r*r
Ecrire ("le périmètre est =", p , " et la surface =",s)
Fin
Programme cercle
...
h>
main(){
float p, s, r;
const float PI=3
...
29
Mheni & SGarbouje
Ecrire ("donner la longueur du rectangle:") lire(lo)
Ecrire ("donner la largeur du rectangle") lire(la)
Ecrire ("le périmètre =",2*(lo+la), "et la surface =",lo*la)
Fin
Programme rectangle
...
h>
main(){
int lo, la;
printf ("donner la longueur du rectangle:");
scanf("%d",&lo);
printf ("donner la largeur du rectangle:");
scanf("%d",&la);
printf ("le périmètre = %d et la surface =%d",2*(lo+la),
lo*la);
}
Exercice 4:
Algorithme Puissance
Variables
a, b: entier
Début
Ecrire ("donner un entier a:")
lire(a)
Ecrire ("donner un entier b:")
lire(b)
Ecrire ("a puissance b =", a^b)
Fin
Programme puissance
...
h>
#include