Introduction au langage C et algorithmes
Introduction au langage C et algorithmes
• 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.
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.
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.
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,
a n a n −1 ...a1 a0
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
Exemple :
Définition :
Début
Manipulation Instructions
FIN
Etapes de résolution
• 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 :
Syntaxe de la déclaration :
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 :
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 :
Exemple :
Exemple :
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
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 :
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’ )
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
ExempleQuels 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é:
Manipulation :
DEBUT
Écrire ( 'Saisir la valeur du rayon' )
Lire(Rayon)
Surface ⎯ Rayon * Rayon * Pi
Écrire (' La Surface du cercle est : ', Surface)
FIN
Exercice
Indication :
#include<stdio.h>
Void main () {
}
monProgramme.c
#include <stdio.h>
void main()
{
printf(" Bonjour tout le monde ") ;
59
Filière MIP (S1) : Module I111
Compilation d'un programme C
Quelques environnements de développement
Fin }
61 Filière MIP (S1) : Module I111
De l’algorithmique au C
Traduction de l’entête d’un algorithme
64
Filière MIP (S1) : Module I111
De l’algorithmique au C
Traduction des instructions : affectation
Exemple:
Exemple :
66
Filière MIP (S1) : Module I111
De l’algorithmique au C
Exemple : Traduire en C l'algorithme suivant
Exemple :
Opérateurs de comparaison
== égal à
!= différent de
<, <=, >, >= plus petit que, ...
Exemple:
int A,MAX = 1023;
char C,TAB = '\t';
float X = 1.05e-4;
Remarque:
Exemple:
const int MAX = 767;
const double TVA = 0.25;
const double e = 2.7;
const char NEWLINE = '\n';
Exemple:
76
Filière MIP (S1) : Module I111
Les opérateurs particuliers de C
+= ajouter à
-= diminuer de
*= multiplier par
/= diviser par
%= modulo
Exemple
A+=2; A=A+2;
A*=B A=A*B;
A%=B A=A%B;
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
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
(<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');
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) ;
Exemple:
int C;
Scanf("%c",&c);
C = getchar();
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
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 :
+ Addition
- Soustraction
* Multiplication
/ Division
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
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
Les tests
On représente fréquemment tout ceci dans des tables de vérité
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
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).
Début
Lire m, n
Début
Ecrire ("Entrez les resultats des Elections : ")
Lire A, B,C,D,E
➔ Cette deuxième version n’est donc pas seulement plus simple à écrire
et plus lisible, elle est également plus performante à l’exécution.
Structure Alternative: SI
Exercice 3.4
Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe
ensuite si ce nombre est positif ou négatif (on inclut cette fois le
traitement du cas où le nombre vaut zéro).
Solution
Variable n en Entier
Début
Lire n
Si n < 0 Alors
Ecrire ("Ce nombre est négatif")
SinonSi n = 0 Alors
Ecrire ("Ce nombre est nul")
Sinon
Ecrire ("Ce nombre est positif")
Finsi
Fin
Structure Alternative: SI
Exercice 3.5
Ecrire un algorithme qui demande deux nombres à l’utilisateur et
l’informe ensuite si le produit est négatif ou positif (on inclut cette fois
le traitement du cas où le produit peut être nul). Attention toutefois, on
ne doit pas calculer le produit !
Solution
Variables m, n en Entier
Début
Si m = 0 OU n = 0 Alors
Ecrire ("Le produit est nul ")
Sinon
Ecrire ("Le produit est négatif ")
Finsi
Fin
Structure Alternative: SI
Exercice 3.6
Ecrire un algorithme qui demande l’âge d’un enfant à l’utilisateur.
Ensuite, il l’informe de sa catégorie :
"Poussin" de 6 à 7 ans
"Pupille" de 8 à 9 ans
"Minime" de 10 à 11 ans
"Cadet" après 12 ans
Structure Alternative: SI
Variables Booléennes
Jusqu’ici, pour écrire nos tests, nous avons utilisé uniquement des
conditions. Mais vous vous rappelez qu’il existe un type de variables
(les booléennes) susceptibles de stocker les valeurs VRAI ou FAUX.
Structure Alternative: SI
Reprenons l’exemple de l’eau. On pourrait le réécrire ainsi :
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
exécuté.
◼ Si valeur(T)=Faux on passe à l'instruction suivante.
boucle.
➢ La boucle n'est pas INCONDITIONNELLE. On
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
y0 Valeurs de y ?
faire
i i+1
y y+i
Écrire (' y = ' , y)
Jusqu’à (i >7)
Fin
Exercice
<Bloc de traitement>
Fin Pour
Exercice
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