0% ont trouvé ce document utile (0 vote)
8 vues148 pages

Introduction au langage C et algorithmes

Le document présente les bases du langage C et les concepts fondamentaux de l'informatique, incluant l'architecture des ordinateurs, le traitement de l'information, et les algorithmes. Il aborde les éléments essentiels tels que les variables, les types de données, et les instructions de base pour programmer en C. Le module est structuré en plusieurs chapitres, chacun traitant d'un aspect clé de l'algorithmique et de la programmation.

Transféré par

Malick Samb
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues148 pages

Introduction au langage C et algorithmes

Le document présente les bases du langage C et les concepts fondamentaux de l'informatique, incluant l'architecture des ordinateurs, le traitement de l'information, et les algorithmes. Il aborde les éléments essentiels tels que les variables, les types de données, et les instructions de base pour programmer en C. Le module est structuré en plusieurs chapitres, chacun traitant d'un aspect clé de l'algorithmique et de la programmation.

Transféré par

Malick Samb
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

BASES DU LANGAGE C

Khadime Wade Ingénieur Génie Logiciel


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 virgule flottante 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,

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

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
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é:

É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
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).

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


Si (MG >= 10) alors
Écrire ('Admis')
Sinon
Écrire ('Ajourné')
Finsi
FIN
Structure Alternative: SI
Exercice 3.1

É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
Structure Alternative: SI
Exercice 3.2

Ecrire un algorithme qui demande deux nombres à l’utilisateur et


l’informe ensuite si leur produit est négatif ou positif (on laisse de côté
le cas où le produit est nul). Attention toutefois : on ne doit pas
calculer le produit des deux nombres.
Solution
Variables m, n en Entier

Début

Ecrire ("Entrez deux nombres : ")

Lire m, n

Si (m > 0 ET n > 0) OU (m < 0 ET n < 0) Alors

Ecrire ("Leur produit est positif ")


Sinon
Ecrire ("Leur produit est négatif ")
Finsi
Fin
Structure Alternative: SI
Tests imbriqués

Un SI ouvre donc deux voies, correspondant à deux traitements


différents. Mais il y a des tas de situations où deux voies ne suffisent
pas. Par exemple, un programme devant donner l’état de l’eau selon sa
température doit pouvoir choisir entre trois réponses possibles (solide,
liquide ou gazeuse).
Structure Alternative: SI
Une première solution serait la suivante :
Structure Alternative: SI
Les conditions se ressemblent plus ou moins, et surtout on oblige
la machine à examiner trois tests successifs alors que tous
portent sur une même chose, la température de l'eau (la valeur
de la variable Temp).
Structure Alternative: SI
Exercice 3.3
Ecrire un Programme qui demande les résultats obtenu par 5 candidats aux élections
présidentielles. Les candidats ayant obtenus plus 25% sont en deuxième tours
Vous devez affichez les candidats qualifiés au second tours.
Sachant qu’il faut plus de 5% du suffrage pour récupérer sa caution, Affichez les
candidats qui récupérerons leurs cautions et ceux qui ont perdu la caution.
Solution
Variables A, B,C,D,E en Entier

Début
Ecrire ("Entrez les resultats des Elections : ")

Lire A, B,C,D,E

Si (m > 0 ET n > 0) OU (m < 0 ET n < 0) Alors

Ecrire ("Leur produit est positif ")


Sinon
Ecrire ("Leur produit est négatif ")
Finsi
Fin
Structure Alternative: SI
Remarque sur les tests imbriqués :
Nous avons fait des économies:
- nous n’avons plus que deux conditions
simples.
- nous avons fait des économies sur le temps
d’exécution de l’ordinateur.

➔ 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

Ecrire ("Entrez un nombre : ")

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

Ecrire ("Entrez deux nombres : ")


Lire m, n

Si m = 0 OU n = 0 Alors
Ecrire ("Le produit est nul ")

SinonSi (m < 0 ET n < 0) OU (m > 0 ET n > 0) Alors


Ecrire ("Le produit est positif ")

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 :

A priori, cette technique ne présente guère d’intérêt : on a alourdi


plutôt qu’allégé l’algorithme de départ, en ayant recours à deux
variables supplémentaires.
Structure Alternative: SI
Exercice 4.4
Un magasin de reprographie facture 0,10 E les dix
premières photocopies, 0,09 E les vingt suivantes et
0,08 E au-delà. Ecrivez un algorithme qui demande à
l’utilisateur le nombre de photocopies effectuées et qui
affiche la facture correspondante.
Structure Alternative: SI
Exercice 4.5
Les habitants de Zorg paient l’impôt selon les règles suivantes : les
hommes de plus de 20 ans paient l’impôt
les femmes paient l’impôt si elles ont entre 18 et 35 ans
les autres ne paient pas d’impôt
Le programme demandera donc l’âge et le sexe du Zorglubien, et se
prononcera donc ensuite sur le fait que l’habitant est imposable.
Structure Alternative: SI
Exercice 4.6
Les élections législatives obéissent à la règle suivante : lorsque l'un des candidats obtient
plus de 50% des suffrages, il est élu dès le premier tour.
en cas de deuxième tour, peuvent participer uniquement les candidats ayant obtenu au
moins 12,5% des voix au premier tour.
Vous devez écrire un algorithme qui permette la saisie des scores de quatre candidats au
premier tour. Cet algorithme traitera ensuite le candidat numéro 1 (et uniquement lui) : il
dira s'il est élu, battu, s'il se trouve en ballottage favorable (il participe au second tour en
étant arrivé en tête à l'issue du premier tour) ou défavorable (il participe au second tour
sans avoir été en tête au premier tour).
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 : Selon 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 Selon
Syntaxe en C:
Exercice
Écrivez un programme qui demande à l'utilisateur de saisir un nombre représentant
un mois de l'année (par exemple, « 1 » pour janvier, « 2 » pour février, etc.) et
affiche le nombre de jours dans ce mois. Utilisez un switch pour associer les mois
aux nombres de jours.
Exercice
Écrivez un programme qui demande à l'utilisateur de saisir un caractère
représentant une opération mathématique (par exemple, "+" pour addition, "-"
pour soustraction, etc.) et deux nombres.

Effectuez l'opération mathématique correspondante sur les deux nombres et


affichez le résultat à l'utilisateur.
Exercice
Écrivez un programme pour saisir un alphabet et vérifiez s'il s'agit d'une
voyelle ou d'une consonne en utilisant "switch-case".

Les lettres a, e, i, o et u en minuscules sont appelées voyelles. Les alphabets


autres que les voyelles sont appelés consonnes.
….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

Vous aimerez peut-être aussi