0% ont trouvé ce document utile (0 vote)
231 vues159 pages

Informatique L1 BCGS

Ce document présente un cours d'initiation à l'algorithmique et à la programmation en langage C à l'Université Cheikh Anta Diop de Dakar. Il couvre les objectifs d'apprentissage, les supports de cours disponibles, les outils nécessaires pour la programmation, ainsi que les méthodes d'évaluation et les statistiques de réussite des étudiants. Le plan du cours inclut des concepts fondamentaux tels que la définition d'un algorithme, la structure d'un programme, et les types de données de base.

Transféré par

thianemb120
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)
231 vues159 pages

Informatique L1 BCGS

Ce document présente un cours d'initiation à l'algorithmique et à la programmation en langage C à l'Université Cheikh Anta Diop de Dakar. Il couvre les objectifs d'apprentissage, les supports de cours disponibles, les outils nécessaires pour la programmation, ainsi que les méthodes d'évaluation et les statistiques de réussite des étudiants. Le plan du cours inclut des concepts fondamentaux tels que la définition d'un algorithme, la structure d'un programme, et les types de données de base.

Transféré par

thianemb120
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

Université Cheikh Anta Diop de DAKAR

Faculté des Sciences et technique


Département Mathématiques et Informatique

Initiation à l’algorithmique et la
programmation en Langage C
Dr. Mamadou THIONGANE
[Link]@[Link]
L1BCGS
Année: 2024-2025

FST DMI L1BCGS 2023-2024


Ce cours est une initiation à l’algorithmique et
à la programmation avec le langage C

Objectif:

AApprendre à écrire des algorithmes pour résoudre un


problème donné.

A Apprendre à programmer les algorithmes avec le


Langage C.

FST DMI L1BCGS 2023-2024


.
Informations
A les Supports de cours, les fiches TD/TP sont disponibles
sur:
[Link]

A Logiciel à installer pour programmer en C:


A CodeBlocks (Windows, Mac, Unix)
A Mobile C (Téléphone, Tablette Android ou Iphone)
A Compilateur en ligne disponible sur [Link]
A Des tutoriels ou bien des liens pour la prise en main des
logiciels sont disponibles sur [Link]

A Des solutions aux exercices non corrigés durant les séances


TD/TP seront proposées sur [Link]

AUn Forum de discussion est déjà ouvert:


FST DMI L1BCGS 2023-2024
[Link]
.
Évaluation
A QCM . Il y aura 20 questions
Quelle est la solution du système d’équation suivant:
(x-2)(x-6)=0
A: S={2,6} B: S={1,5} C: S={7,8} D: S={1,6}

A Épreuve qui contient les 20 question et les réponses


proposées pour chaque question.
A Grille de réponse (copie d’examen)

AScanne des grilles et correction automatique par la plateforme

AUn fichier Excel des notes est généré après correction

A Saisie automatique des notes au niveau de la plateforme de


délibération
FST DMI L1BCGS 2023-2024
Statistiques Session1 de l’année 2023-2024
- Sur 1749 étudiants, 942 ont obtenu une note supérieure ou
égale 10

- Soit un taux de réussite de 53%

- 262 notes sont supérieures ou égale à 15 (15%)

- 675 notes sont supérieures ou égale 12 (38%)

FST DMI L1BCGS 2023-2024


Plan du cours
— Introduction à l'algorithmique et à la
programmation
— Concepts de base de l'algorithmique
— Concepts de base du langage C
— Structures de contrôle
— Les types de données composés
— Sous programmes
— La récursivité
FST DMI L1BCGS 2023-2024
Chapitre 1 : Introduction à l’algorithmique et à la
programmation

FST DMI L1BCGS 2023-2024


La notion d’algorithme
— Pour résoudre un problème de manière informatique il y a un
cheminement méthodique à respecter :

FST DMI L1BCGS 2023-2024


La notion d’algorithme
— Définition (Notion d’algorithme)
§ description formelle d’un procédé de traitement qui permet, à partir d’un
ensemble d’informations initiales, d’obtenir des informations déduites ;
§ succession finie et non ambigüe d’opérations;
§ se termine toujours (Note : semi-algorithme).

— Définition (Notion de Programme)


§ suite d’instructions définies dans un langage donné;
§ décrit un algorithme.

FST DMI L1BCGS 2023-2024


Définitions
— Un algorithme est la description des étapes à suivre pour
résoudre un problème en un nombre fini d’étapes.

— « Ensemble de règles opératoires dont l'application permet de


résoudre un problème donné au moyen d'un nombre fini
d'opérations ».

— L’algorithmique est la science qui consiste à trouver des


méthodes formelles et certifiées pour résoudre de manière
automatique et le plus efficacement possible des problèmes
donnés.

— Un algorithme est une procédure de calcul bien définie qui prend


en entrée une valeur, ou un ensemble de valeurs, et qui donne en
sortieFSTune valeur,
DMI
ou un2023-2024
L1BCGS
ensemble de valeurs.
Propriétés d’un algorithme
— Un nombre fini d’étapes
— Un nombre fini d’opérations par étape
— Chaque opération est
— non ambiguë
— Effective
— Fournit un résultat
— Un algorithme doit être indépendant du langage de
programmation utilisé.
— Un langage de programmation n’étant qu’une façon d’exprimer
un algorithme pour être compris et exécuté par l’ordinateur .

FST DMI L1BCGS 2023-2024


La notion de programme
— Tout traitement demandé à la machine, par l’utilisateur, est effectué par
l’exécution séquencée d’opérations appelées instructions.
— Une suite d’instructions est appelée un programme.
— Retenir
— Un programme est une suite d’instructions permettant à un système
informatique d’exécuter une tâche donnée
— écrit dans un langage de programmation compréhensible(directement ou indirectement)
par un ordinateur.

FST DMI L1BCGS 2023-2024


Qu’est-ce que la programmation ?
— Retenir
— Écriture d’un programme dans un langage de programmation donnée.
— Langage de programmation : ensemble de règle de vocabulaire et de
grammaire compréhensible par un ordinateur.

FST DMI L1BCGS 2023-2024


Étapes de la construction d’un programme

FST DMI L1BCGS 2023-2024


Langage de programmation (1/2)
— Pour être compris et exécuté par un ordinateur, un algorithme doit
être traduit dans un langage spécifique, qu’on appelle langage de
programmation.
— On obtient ainsi ce qu’on appelle un programme informatique qui
contient l’ensemble des actions consécutives que l’ordinateur doit
exécuter.
— Ces actions sont appelées instructions.
— Le langage utilisé par le processeur de l’ordinateur est appelé
langage machine.
— C’est le seul langage que l’ordinateur connaît.
— Un programme en langage machine est uniquement constitué d’une
suite de 0 et de 1 (du binaire).

FST DMI L1BCGS 2023-2024


Langage de programmation(2/2)
— Il est plus pratique de réaliser un programme dans un
langage plus compréhensible par l'homme et de le traduire
ensuite en langage machine.

— Selon la méthode de traduction, on distingue:


— les langages compilés et
— les langages interprétés.

FST DMI L1BCGS 2023-2024


Langage compilé

— Dans le cas d’un langage compilé (exemples: C, C++,


Pascal...), le programme réalisé, appelé programme source,
est traduit complètement par ce qu’on appelle un compilateur
avant de pouvoir être exécuté.
— La compilation génère un programme dit exécutable.
— Ce programme généré est autonome, c’est-à-dire qu’il n’a pas
besoin d'un autre programme pour s’exécuter.
— Mais à chaque modification du fichier source (le programme
source) il faudra le recompiler pour que les modifications
prennent effet.

FST DMI L1BCGS 2023-2024


Langage compilé

FST DMI L1BCGS 2023-2024


Langage interprété.

— Au contraire, un programme écrit dans un langage interprété


(exemples: Perl, Lisp, Prolog...) a besoin, pour chaque
exécution, d'un programme annexe appelé interpréteur qui
va lire le code source pour traduire et faire exécuter une à
une, chacune des instructions.

— Dans ce cas, il n’y a pas de génération de programme


exécutable.

FST DMI L1BCGS 2023-2024


Compilation et interprétation

FST DMI L1BCGS 2023-2024


FIN

FST DMI L1BCGS 2023-2024


Université Cheikh Anta Diop de DAKAR
Faculté des Sciences et technique
Département Mathématique et Informatique

Chapitre 2 – CONCEPTS DE BASE


DE L'ALGORITHMIQUE

Dr. THIONGANE
[Link]@[Link]
L1BCGS
Année: 2023-2024

1 FST DMI L1BCGS 2023-2024


Notions de variable et de constante
— Les variables
— Données manipulées par le programme lors de son exécution.
— Elles correspondent à des emplacements situés dans la mémoire vive
de l’ordinateur
— Permettent de stocker des valeurs.
— Une variable est caractérisée par:
— Son identifiant : nom de la variable
— L’endroit où elle se trouve en mémoire : adresse,
— La nature de l’information (nombre, caractère, …) : son type
— Son contenu : sa valeur.
— La valeur d’ une variable peut être modifiée durant
l'exécution du programme.
— Constante
— Une constante est, comme une variable, a un emplacement
mémoire mais sa valeur ne peut pas changer au cours de l'exécution
du programme.
2 FST DMI L1BCGS 2023-2024
Types de données de base

— En algorithmique, on distingue 5 types de base:


— Caractère (lettre, chiffre, ponctuation, espace, retour
chariot,… et plus généralement toutes les touches que l'on
peut trouver sur une machine à écrire)
— Chaîne de caractères (suite de 0 ou plusieurs caractères)
— Entier (les nombres entiers positifs ou négatifs)
— Réel (les nombres réels positifs ou négatifs)
— Booléen (les variables booléennes n’ont que deux valeurs
possibles: soit VRAI, soit FAUX)

3 FST DMI L1BCGS 2023-2024


Structure générale d’un algorithme

Algorithme nom de l’algorithme


Type
Définition de types
Constante
Déclaration de constantes
Variable
Déclaration de variables

Définition de sous-programmes
Début
instructions du programme
Fin

4 FST DMI L1BCGS 2023-2024


Structure générale d’un algorithme
— Un algorithme commence par le mot Algorithme suivi de son
identificateur (le nom du programme).
— Ensuite viennent la définition de types annoncée par le mot Type,
la déclaration de constantes, annoncée par le mot Constante puis
celle de variables, annoncée par le mot Variable et la définition
de sous programmes.
— Le corps du programme commence par Début et se termine par
Fin.
— On peut insérer des commentaires, soit entre les balises /* */,
soit après // jusqu'à la fin de la ligne.
— Remarque:
Les types de base font partie du langage et n'ont pas à être
définis par le programmeur.

5 FST DMI L1BCGS 2023-2024


Déclaration des variables et des
constantes
— Déclaration d'une variable
— Toute variable doit être déclarée avant sa première
utilisation.
— La déclaration d’une variable consiste à la réservation d’un
emplacement mémoire, auquel on donne un nom unique
appelé identificateur et par lequel on peut accéder à sa
valeur.
— La syntaxe de déclaration d’une variable est:
— identificateur : type
— Exemple a : entier
x, y, z: entier

6 FST DMI L1BCGS 2023-2024


Déclaration des variables et des
constantes
— Déclaration d'une constante

— La déclaration d’une constante est toujours associée à son


initialisation (première valeur).
La syntaxe de déclaration d’une constante est:

identificateur = valeur

Exemple

MAX = 32767

7 FST DMI L1BCGS 2023-2024


Les opérations de l’algorithmique

8 FST DMI L1BCGS 2023-2024


Les opérations de l’algorithmique
— Pour les entiers, la division est notée div. Elle est nommée division entière et ne
donne que le chiffre avant la virgule du résultat (elle renvoie un entier).
— Les entiers supportent une opération supplémentaire appelée modulo, notée
mod et qui renvoie le reste de la division entière.
— Exemple:
— 7 div 2 donne 3
— 7 mod 2 donne 1

— Une valeur de type caractère doit être ente apostrophes (sinon le compilateur
pourrait le confondre avec un nom de variable).
— Une valeur de type chaîne doit être entre guillemets (sinon le compilateur pourrait
le confondre avec un nom de variable).
— Les caractères sont comparés selon l’ordre du code ASCII. C’est ainsi qu’on
peut comparer tous les caractères entre eux. Par exemple le caractère 'Z'
(majuscule), de code ASCII 90 est inférieure au caractère 'a' (minuscule) de code
ASCII 97.

9 FST DMI L1BCGS 2023-2024


Les opérations de l’algorithmique
— Soit la variable c de type caractère:
— succ(c) permet d’obtenir le caractère qui suit le caractère c selon le code ASCII
— pred(c) permet d’obtenir le caractère qui précède le caractère c selon le code
ASCII
— ord(c) permet d’obtenir code ASCII du caractère c.
— car(n) permet d’obtenir le caractère correspondant au code ASCII n.
— Par exemple :
— ord(‘A’) vaut 65
— succ(‘A’) vaut ‘B’
— pred(‘A’) vaut @
— car(65) donne ‘A’
— Pour le type chaîne, L’opérateur + sert à concaténer des chaînes de caractère, ce
qui signifie transformer plusieurs chaînes en une seule en les ajoutant les unes à la
suite des autres.
— Exemples :
— ‘’Bonjour ‘’ + ‘’à tous ‘’ donne ‘’Bonjour à tous ‘’
— longueur(‘’Bonjour’’) donne le nombre de caractères de la chaîne
‘’Bonjour’’, c’est à dire 7.
10 FST DMI L1BCGS 2023-2024
Opération sur les booléennes
— Pour le type booléen, les deux seules valeurs possibles sont
Vrai et FAUX. Les opérateurs de base ET, OU, NON sont
définies par la table de vérité suivante (étant données deux
variables A et B de type booléen) :

11 FST DMI L1BCGS 2023-2024


Les expressions
— Une expression est:
— soit une variable ou une constante,
— soit une valeur littérale (écrite telle qu'elle dans le programme,
par exemple : "bonjour", 45),
— soit une combinaison de variables, de constantes, de valeurs
littérales et d'opérateurs, par exemple : 2 * r * 3.14)
— Elle est évaluée durant l’exécution du programme, et
possède une valeur (son évaluation) et un type.
— Par exemple: Supposons que rayon soit une variable de valeur
5. Alors l'expression 2 * rayon * 3.14 vaut 31.4

12 FST DMI L1BCGS 2023-2024


Les expressions conditionnelles
— Une expression conditionnelle (ou expression logique, ou
expression booléenne ou condition) est une expression dont la
valeur est soit VRAI soit FAUX. On peut donc affecter une
expression conditionnelle à une variable booléenne. Il existe
plusieurs types d’expressions conditionnelles.
— Les conditions simples
— Une condition simple est une comparaison de deux
expressions de même type.
— Exemples
— a<0
— op = =‘s’
— (a + b - 3) * c = = (5 * y –2) / 3

13 FST DMI L1BCGS 2023-2024


Les expressions
— Les conditions complexes: Les conditions (ou
expressions conditionnelles) peuvent aussi être complexes,
c'est à dire formées de plusieurs conditions simples ou
variables booléennes reliées entre elles par les opérateurs
logiques ET, OU, NON.
— Exemples
(a < 0) ET (b < 0)
( (a +3 = = b) ET (c < 0) ) OU ( (a = = c *2) ET (b!= c) )

14 FST DMI L1BCGS 2023-2024


Les expressions
— Une condition composée de deux conditions simples reliées par ET est
vraie si les deux conditions sont vraies.
— (a < 0 ) ET (b < 0) est vraie si a < 0 est vraie et si b < 0 est vraie

— Une condition composée de deux conditions simples séparées par OU


est vraie si au moins l'une des conditions simples est vraie.
— (a <0) OU (b < 0) est vraie si a < 0 ou si b < 0 ou si a et b sont
négatifs.
— Une condition précédée par NON est vraie si la condition simple est
fausse et inversement.
— NON (a < 0) est vraie si a >=0

— L'usage des parenthèses permet de régler d'éventuels problèmes de


priorité des opérateurs logiques.

15 FST DMI L1BCGS 2023-2024


Les instructions de base
— Les instructions élémentaires les plus
courantes sont :
— l'affectation: le fait de donner une valeur
à une variable
— la lecture au clavier
— l'écriture à l'écran

16 FST DMI L1BCGS 2023-2024


L’affectation
— L’affectation consiste à mettre une valeur dans une variable (ce qui
revient à changer le contenu de cette variable). La nouvelle valeur est
évaluée à partir d'une expression.
— En algorithmique, pour représenter l’opération d’affectation, on va
utiliser le symbole =
— Les instructions d’affectation sont formées de deux parties :
— A gauche du symbole =, on trouve toujours le nom d’une variable
destinée à recevoir une valeur.
— A droite, on trouve l’expression qui va donner la valeur qu’on veut
affecter à la variable en question.
— L’instruction d’affectation agit en deux temps :
— d’abord elle détermine la valeur de l’expression située à droite du
symbole =
— puis elle range le résultat dans la variable située à gauche.

17 FST DMI L1BCGS 2023-2024


L’affectation
Remarques
— On ne peut affecter de valeur qu’à une variable. Il est
impossible d’affecter une valeur à une expression. Ainsi, par
exemple, l’instruction a + 5 = b n’a pas de sens
— Il est possible de retrouver la même variable à droite et à
gauche de l’expression. Ainsi, par exemple, l’instruction a
= a + 3 a un sens en programmation. Cela signifie que l’on
évalue a + 3 avec l'ancienne valeur de a et qu’on range le
résultat dans a. La valeur de a sera donc augmentée de 3 par
cette opération.

18 FST DMI L1BCGS 2023-2024


La Lecture
— L’instruction de lecture permet au programme de lire des
données entrées au clavier par l'utilisateur. Cette instruction
affecte les valeurs entrées au clavier à des variables du
programme..
— Syntaxe
— Lire(variable1 , variable2, …)
Exemples
— Lire(x)
— Cette instruction lit la valeur entrée au clavier et l'affecte à la
variable x
— Lire(x, y)
— Cette instruction lit la première valeur entrée au clavier et
l'affecte à x, puis lit la deuxième valeur et l'affecte à y
19 FST DMI L1BCGS 2023-2024
L'écriture

— L'instruction d'écriture permet d'afficher des expressions à


l'écran.
— Syntaxe
— Ecrire(expression1, expression2, ...)

— Exemples
— Ecrire(ch)
— Cette instruction permet d'afficher la valeur de la variable ch à l'écran
Si ch est une chaîne qui vaut "toto", cette instruction affichera toto à
l'écran
— Ecrire("Bonjour!")
o Celle-ci permet d'afficher la chaîne littérale Bonjour! à l'écran

20 FST DMI L1BCGS 2023-2024


Exemple 1 : Algorithme Addition de deux entier
Algorithme AdditionEntier

Variables
a , b, resultat: entier

Début
Ecrire(²Donnez la premiere valeur ²)
Lire(a)
Ecrire(² Donnez la deuxieme valeur ²)
Lire(b)
resultat =a+b
Ecrire (² la somme de ² ,a, ²et de ² ,b , ²donne ² ,resultat)
Fin

21 FST DMI L1BCGS 2023-2024


Exemple 2 : Algorithme salutation
Algorithme AfficheSalutation

Variable
nom, salutation :chaine de caractere // Déclaration de variables

Début

Écrire ("Quel est votre nom ?" ) // Affichage d'une chaîne

Lire (nom) // Lecture d'une valeur

salutation = "Bonjour " + nom ; // Affectation

Écrire (salutation) // Affichage d'une chaîne

Fin

22 FST DMI L1BCGS 2023-2024


FIN
23 FST DMI L1BCGS 2023-2024
Université Cheikh Anta Diop de DAKAR
Faculté des Sciences et technique
Département Mathématique et Informatique

Chapitre 3 – CONCEPTS DE BASE DU LANGAGE C

Dr. THIONGANE
[Link]@[Link]
L1BCGS
Année: 2023-2024

1 L1BGCS Année: 2023-2024


PLAN
A Structure d'un programme C
A Les types de base du langage C
A Déclaration des variables et des constantes
A Les opérateurs du langage C
A Les instructions élémentaires

2 L1BGCS Année: 2023-2024


Historique
— Le langage C a été créé par Brian Kernighan et Dennis Ritchie
au début des années 70.
— C’est un langage compilé qui a les caractéristiques suivantes:
— C’est un langage typé: tout objet doit avoir un type (caractère,
entier, réel...)
— C’est un langage déclaratif: tout objet doit être déclaré avant
son utilisation.
— Le langage C propose un certain nombre de fonctions
prédéfinies dans des bibliothèques

3 L1BGCS Année: 2023-2024


Structure d'un programme C (1/2)
— Un programme en C se compose:

1. d'un programme principal


2. (éventuellement) de sous programmes.
3. Il est écrit dans un fichier portant l'extension .c
Ce fichier, appelé fichier source du programme.

4 L1BGCS Année: 2023-2024


Structure d'un programme C (2/2)
Le fichier source du programme contient généralement les parties
suivantes:
1. Les directives de compilation: une directive commence toujours
par le symbole # suivi de la directive.
Pour utiliser une fonction qui a été prédéfinie dans la bibliothèque
stdio.h, il faut mettre la directive suivante :
#include <stdio.h>
2. La définition des structures et des types (s'il y en a)
3. La déclaration des variables globales (s'il y en a
4. Les fonctions
5. Le programme principal (fonction main)
5 L1BGCS Année: 2023-2024
Un premier programme
L1 /*
L2 Mon premier programme C.
L3 */
L4 #include<stdio.h>
L5 int main( )
L6 {
L7 printf("Bonjour tout le monde \n");
L8 return 0;
L9 }

6 L1BGCS Année: 2023-2024


Un premier programme
— [L1, L2, L3] Commentaire sur plusieurs lignes.
— [L4] #include pour pouvoir utiliser la fonction printf qui est une
fonction de la librairie stdio.h (STandarD Input/Output).
— [L5] Fonction principale, point d'entrée du programme.
— [L6] Accolade ouvrante, débute le code de la fonction.
— [L7] La fonction printf permet d'afficher un message à l'écran. Les
guillemets délimitent la chaîne de caractère. Le caractère \n signifie un
saut de ligne suivi d'un retour chariot. Le point-virgule à la fin de
chaque phrase est indispensable.
— [L8] Le programme renvoie la valeur 0 au shell appelant à la fin de son
exécution.
— [L9] Accolade fermante, fin de bloc de la fonction principale

7 L1BGCS Année: 2023-2024


Les directives de compilation

1. Elles indiquent au compilateur de procéder à des


opérations préalables au début de la compilation.

2. Elles se situent en tout début du programme source.

Nous utilisons en général les deux directive suivante:


- La directive #include
- La directive #define

8 L1BGCS Année: 2023-2024


La directive #include

— Cette directive permet l'inclusion de librairies dont les


éléments seront utilisés dans le programme source.
— Le compilateur C fournit un ensemble de librairies mais le
programmeur peut aussi créer ses propres librairies.
— Syntaxe de cette directive :
— #include <fichier> ou #include "fichier"
— Exemples :
— #include <stdio.h>
— #include "C:\MesProgrammes\definitions.h"

9 L1BGCS Année: 2023-2024


La directive #define
— Cette directive permet de remplacer dans le programme
toutes les occurrences d’une suite de caractères par un nom
de substitution.
— Syntaxe de cette directive :
— #define nom_de_substitution suite_de_caractères
— nom_de_substitution sera utilisé tout au long du programme source
pour représenter la suite de caractères suite_de_caractères.
— Exemple:
— #define VRAI 1
— Le mot VRAI sera utilisé pour représenter le chiffre 1 dans
le programme source. Mais rien ne vous empêche d'utiliser
le chiffre 1.
10 L1BGCS Année: 2023-2024
Les types de base du Langage C
— En langage C, chaque variable doit être associée à un
type, qui permet de spécifier la taille de l’espace
occupé en mémoire (nombre d’octets).

type Description taille Valeurs possibles Format


void Ensemble vide
2 ou 4 de -32768 à 32767 %d
int Entier standard de -2147483648 à 2147483647
short Entier court 2 de -32768 à 32767 %d
long Entier long 4 de -2147483648 à 2147483647 %ld
float Réel 4 %f
double Réel double 8 %lf
précision
11 char
L1BGCS Caractère
Année: 2023-2024 1 de -128 à 127 %c
Les caractères non imprimables
— Les caractères non imprimables possèdent une
représentation conventionnelle utilisant le caractère \
nommé antislash.
— Exemples de caractères non imprimables :

— \n retour chariot avec saut de ligne


— \r retour chariot sans saut de ligne
— \t tabulation horizontale
— \v tabulation verticale

12 L1BGCS Année: 2023-2024


Déclaration d'une variable
— En C, toute variable doit être déclarée avant sa première
utilisation.
— La syntaxe de déclaration d’une variable est:
type identificateur;
— Exemple:
— L’instruction int a ;
— permet de réserver un emplacement mémoire pour le
stockage d’un entier (type int) qui sera nommé a dans la
suite du programme.
— Une déclaration peut se faire seule, ou accompagnée d’une
initialisation (première valeur), exemple: int b=3;
13 L1BGCS Année: 2023-2024
Déclaration d'une constante

— La syntaxe de déclaration d’une constante est:


const type identificateur valeur;
— Exemple :
— const int MAX=32767;
— On peut utiliser la directive de compilation #define pour
définir une constante selon la syntaxe suivante:
— #define identificateur valeur
— #define MAX 32767
— Mais dans ce cas, il n’y a pas de réservation d’emplacement
mémoire.
14 L1BGCS Année: 2023-2024
Mots réservés (mots-clés)
auto const double float int short struct unsigned

break continue else for long signed switch void

case default enum goto register sizeof typedef volatile

char do extern if return static union while

15 L1BGCS Année: 2023-2024


Conventions d’écritures d’un programme C
— Avant d’aller plus loin, il convient d’établir un certain nombre
de régles de présentation que devra suivre tout bon
programmeur qui souhaite écrire des programmes C lisibles
— Ne jamais placer plusieurs instructions sur une même ligne ;
— Utiliser des identificateurs significatifs ;
— grâce à l’indentation des lignes, faire ressortir la structure
syntaxique du programme ;
— Laisser une ligne blanche entre la dernière ligne des déclarations
et la première ligne des instructions ;
— Aérer les lignes de programme en entourant par exemple les
opérateurs avec des espaces ;
— Bien commenter les listings tout en évitant les commentaires
triviaux.
16 L1BGCS Année: 2023-2024
Les opérateurs arithmétiques
Opérateur Signification
+ Addition
- Soustraction
* Multiplication
/ Division

Reste de la division entière


%
(entre deux entiers)

17 L1BGCS Année: 2023-2024


Les opérateurs relationnels
Opérateur Signification
> Supérieur

>= Supérieur ou égal

< Inférieur

<= Inférieur ou égal

== Egal
!= Différent

18 L1BGCS Année: 2023-2024


Les opérateurs logiques
Opérateur Signification
&& Et logique

|| Ou logique

! Négation logique

19 L1BGCS Année: 2023-2024


Opérateurs unaires
— Ce sont des opérateurs qui ne s’appliquent qu’a un
seul opérande.

Pré-incrémentation i=++j j=j+1 ; i=j

Post-incrémentation i=j++ i=j ; j=j+1

Pré-décrémentation
— int i,j,k; i=--j j=j-1 ; i=j

Post-décrémentation i=j-- i=j ; j=j-1

20 L1BGCS Année: 2023-2024


Combinaison d’opérateurs

— Il est possible de combiner les opérateurs selon la


forme générale suivante :
— x op= i équivalent à x = x op i
— On peut alors avoir les formes suivantes : +=, -=, *=,
/=, %=
— Exemple
— i += 20; equiv i = i + 20;
— i -= 1; equiv i = i--; equiv i=i-1

21 L1BGCS Année: 2023-2024


Les instructions élémentaires

22 L1BGCS Année: 2023-2024


1. L’affectation
— Cette instruction permet de donner la valeur de l’expression de
droite à la variable de gauche.
— Le langage C utilise le symbole = pour l’ affectation.

Exemples :
— x = 5; // La variable x prend pour valeur 5

— i = i + 1; // La variable i prend pour valeur son ancienne valeur


augmentée de 1

— C = 'a’; // La variable C prend pour valeur le caractère 'a'.

23 L1BGCS Année: 2023-2024


2. L'affichage
— La fonction printf permet d’afficher des informations à
l’écran
— Syntaxe : printf ( " chaîne de caractères " , variable1, variable2, … )
— Cette fonction, contenue dans la bibliothèque standard stdio.h,
attend comme premier paramètre la chaîne de caractère à
afficher avec éventuellement la description des formats
d’affichage des variables à afficher
— Exemple:
— printf ("la valeur de x est %d et celle de y e st %d", x, y );
— printf ("%d", y – x);
— Cette instruction affiche 5 si y=10 et x=5

24 L1BGCS Année: 2023-2024


3. La lecture
— L’instruction scanf permet au programme de lire des
informations saisies au clavier par l’utilisateur.
— Syntaxe : scanf ( " chaîne de formatage " , &variable1 , &variable2, . . . )

— Cette fonction, également contenue dans la bibliothèque


standard stdio.h, attend comme premier paramètre la chaîne
décrivant les formats de lecture des variables à lire au clavier.
Les paramètres suivants sont, dans l’ordre, l’adresse des
variables dont on souhaite lire la valeur.
— Le & permet d’accéder à l’adresse des variables.(A omettre
dans le cas de la lecture d’une chaîne de caractères).
— Exemple : scanf(" %d %d",&X, &Y) ;

25 L1BGCS Année: 2023-2024


4. Lecture et affichage de caractères(1/2)

Les fonctions getchar et putchar de la bibliothèque stdio.h


permettent respectivement au programme de lire au clavier et
d’afficher à l’écran des caractères. Il s’agit de fonctions d’entrées-
sorties non formatées.

Exemple:
Lecture du caractère c
c=getchar();
Affichage du caractère c
putchar(c);

26 L1BGCS Année: 2023-2024


5. Lecture et affichage de
caractères(2/2)
— Certains compilateurs proposent une bibliothèque appelée
conio.h qui contient une fonction de lecture et une
d'écriture de caractère.

— Il s’agit de:
getch pour la lecture de caractère
putch pour la l’écriture de caractère
Exemple :
c = getch( ) ; putch(c) ;

27 L1BGCS Année: 2023-2024


Exemple de programme
Ecrire un programme qui demande de donner deux
nombre entier et affiche à l’écran la valeur des
nombre saisies

#include <stdio.h>
int main(){
int a, b;
printf(" donner deux nombres entier ");
scanf(" %d %d",&a, &b) ;
printf(" vous avez saisie a= %d , b = %d", a,b);
return 0.
}
28 L1BGCS Année: 2023-2024
28
Exemple de programme somme de
deux entier

#include <stdio.h>
int main(){
int a, b, res;

printf(" donner la première valeur ");


scanf(" %d",&a) ;
printf(" donner la première valeur ");
scanf(" %d ", &b) ;
res=a+b;
printf(" La somme de %d et de %d est %d ", a,b,res);
return 0.
}
29 L1BGCS Année: 2023-2024
29
Exemple de programme somme de
deux entier

#include <stdio.h>
int main(){
int a, b, res;

printf(" donner la première valeur ");


scanf(" %d",&a) ;
printf(" donner la première valeur ");
scanf(" %d ", &b) ;
res=a+b;
printf(" La somme de %d et de %d est %d ", a,b,res);
return 0.
}
30 L1BGCS Année: 2023-2024
30
UNIVERSITÉ CHEIKH ANTA DIOP DE DAKAR
FACULTÉ DES SCIENCES ET TECHNIQUE
DÉPARTEMENT MATHÉMATIQUE ET INFORMATIQUE

Chapitre 4 - STRUCTURES DE
CONTRÔLE

Dr. THIONGANE
[Link]@[Link]
L1BCGS
Année: 2023-2024

L1BCGS 2023-2024
Introduction
— Les structures de contrôle permettent d’agir sur l’ordre ou
la fréquence d’exécution des instructions d’un programme.
— Il existe deux grands types de structures de contrôle:
— les structures conditionnelles
— les structures répétitives, encore appelées boucles.

L1BCGS 2023-2024
I. Structures conditionnelles
Les structures conditionnelles permettent d'exécuter des
instructions différentes en fonction de certaines conditions

L1BCGS 2023-2024
La Structure Si

q permet de conditionner l’exécution d’un ensemble d'instructions à


la valeur d’une condition (expression booléenne).

q La syntaxe générale de cette structure est la suivante:

Si (condition) Alors
traitement1
Sinon
traitement2
FinSi

L1BCGS 2023-2024
La structure Si

• Les traitements apparaissant après les mots Alors et Sinon peuvent être
constitués d'une instruction simple ou d'un ensemble d'instructions (bloc
d'instructions).

• La condition est d'abord évaluée


Ø Si elle est vraie, traitement1 est exécuté puis le contrôle passe à l’instruction qui suit le
FinSi.
Ø Si elle est fausse, traitement2 est exécuté puis le contrôle passe à l’instruction qui suit
le FinSi.

L1BCGS 2023-2024
Exemple 1 La Structure Si
Algorithme SigneValeurSaisie

Variable
n : entier
Début

Ecrire("entrez un nombre")

Lire(n)

Si (n > 0) Alors //dans le cas où la condition n>0 est vraie

Ecrire("valeur positive")

Sinon //dans le cas où la condition n>0 est fausse

Ecrire ("valeur négative ou nulle")

L1BCGS
FinSi 2023-2024
FIN
La Structure Si
Exemple 2:
Algorithme Operation

Variable
nb1,nb2, res: entier
op : caractère

Début

Ecrire("Entrez deux nombres")


Lire(nb1, nb2)
Ecrire("entrez la première lettre de l'opération voulue: somme ou produit")
Lire(op)
Si (op = = 's') Alors
res = nb1 + nb2
Ecrire("la somme est", res)
Sinon
res = nb1 * nb2
Ecrire("le produit est", res)
FinSi
Fin
L1BCGS 2023-2024
La Structure Si

L1BCGS 2023-2024
La Structure Si : Traduction en C
if(condition1)
{
traitement1
}
else if (condition2)
{
traitement2
}
...
else if (conditionN)
{
traitementN
}
else
{
traitement
}
NB : conditions doivent être entre parenthèses.
Si un traitement comporte une seule instruction, on peut omettre les accolades.

L1BCGS 2023-2024
La Structure Si en C : if
Exemple 1

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

printf("entrez un nombre");
scanf("%d", &n);

if (n > 0)
printf("valeur positive");
else
printf("valeur négative ou nulle");

return 0;
} L1BCGS 2023-2024
La condition Si en C : if
Exemple 2
#include <stdio.h>
int main( )
{
int nb1,nb2, res;
char op;
printf("Entrez deux nombres");
scanf("%d%d", &nb1, &nb2);
printf("entrez la première lettre de l'opération voulue: somme ou produit");
fflush (stdin);
op = getchar( );
if (op = = 's')
{
res = nb1 + nb2;
printf("la somme est %d", res);
}
else
{
res = nb1 * nb2;
printf("le produit est %d", res);
}
return 0;
} L1BCGS 2023-2024
La structure Selon
q La structure Selon permet de choisir le traitement à effectuer en fonction de
la valeur d'une variable ou d'une expression.
q Cette structure permet parfois de remplacer avantageusement une
structure Si.
La syntaxe de cette structure est :

Selon (expression) Faire


valeur1 : traitement1
valeur2 : traitement2

valeurN : traitementN
Sinon traitement
FinSelon
Où expression est nécessairement une expression de type scalaire (entier,
caractère, booléen ou énuméré).

L1BCGS 2023-2024
La structure Selon
qL’expression est évaluée, puis sa valeur est successivement
comparée à chacune des valeurs.

q Dès qu’il y a correspondance, les comparaisons sont arrêtées


et le traitement associé est exécuté.

qSi aucune valeur ne correspond à la valeur de l’expression,


alors le traitement associé au Sinon, s’il existe, est exécuté.

L1BCGS 2023-2024
La structure Selon
Exemple
Programme qui affiche le mois en toute lettre selon son numéro.
Le numéro du mois est mémorisé dans la variable mois.
...
Ecrire("Donner le numéro du mois")
Lire(mois)
Selon (mois) Faire
1 : Ecrire("Janvier")
2 : Ecrire("Février")
3 : Ecrire("Mars")
4 : Ecrire("Avril")

11: Ecrire("Novembre")
12: Ecrire("Décembre")
Sinon Ecrire("Un numéro de mois doit être compris entre 1 et 12")
FinSelon
L1BCGS 2023-2024
La structure Selon
Remarque: Avec une structure Si, on aurait :
Ecrire(Donner le numéro du mois)
Lire(mois)
Si (mois = = 1) Alors
Ecrire("Janvier")
Sinon Si (mois = = 2) Alors
Ecrire("Février")
Sinon Si (mois = = 3) Alors
Ecrire("Mars")
Sinon Si (mois = = 4) Alors
Ecrire("Avril")

Sinon Si (mois = = 11) Alors
Ecrire("Novembre")
Sinon Si (mois = = 12) Alors
Ecrire("Décembre")
Sinon
Ecrire("Un numéro de mois doit être compris entre 1 et 12")
FinSi
L1BCGS 2023-2024
……
La structure Selon
q Si on a le choix entre plusieurs traitements à effectuer suivant la valeur d'une
expression entière on peut alors utiliser la structure switch à la place de la structure if.
q Syntaxe :
switch (expression)
{
case valeur1 :
traitement1;
break;
case valeur2 :
traitement1;
break;
...
case valeurN :
traitementN;
break;
default :

L1BCGS
traitement;
2023-2024
}
La structure Selon
Exemple

printf("Donner le numéro du mois")
scanf("%d", &mois)
switch (mois)
{
case 1 : printf("Janvier"); break;
case 2 : printf("Février"); break;
...
case 12 : printf("Décembre"); break;
default : printf("Un numéro de mois doit être compris entre 1 et 12"); break;
}
...

L1BCGS 2023-2024
II. Structures répétitives
Les structures répétitives, appelées aussi boucles,
permettent de répéter un traitement autant de fois
qu'il est nécessaire:
q soit un nombre déterminé de fois,
q soit tant qu'une condition est vraie.

L1BCGS 2023-2024
La boucle Tant que
q La boucle Tant que permet de répéter un traitement tant qu'une conition est
vraie.
q Si, dès le début, la condition est fausse, alors le traitement ne sera pas exécuté.

q Syntaxe:
Tant que (condition) Faire
traitement
FinTQ

L1BCGS 2023-2024
La boucle Tant que
Exemple:
Programme qui calcule le cube des nombres non nuls saisis par l'utilisateur.
Tant que le nombre saisi par l'utilisateur n'est pas nul, on affiche son cube et on recommence.
Programme cube
Variable
x : Entier
Début
Ecrire("Ce programme calcul le cube des nombres que vous entrez. Pour arrêter tapez 0.")
Ecrire("Entrez un nombre")
Lire(x)
Tant que (x ≠ 0) Faire
Ecrire("le cube de " , x , " est ", x*x*x)
Ecrire("Entrez un nombre ou 0 pour arrêter")
Lire(x)
FinTQ
Ecrire("Fin")
Fin
L1BCGS 2023-2024
Traduction en langage C: boucle While
Syntaxe:

while (condition)
{
traitement
}

q Les conditions doivent être entre parenthèses.


q Si un traitement comporte une seule instruction, on peut omettre les accolades

L1BCGS 2023-2024
La boucle pour
q La boucle Pour permet de répéter une instruction un nombre connu de fois.
q Syntaxe:

Pour compteur = valeur_initiale à valeur_finale par pas de increment Faire


traitement
FinPour

q La variable compteur est de type entier. Elle est initialisée à la valeur valeur_initiale.
q Le compteur augmente (implicitement) de la valeur increment à chaque exécution du
traitement.
q Lorsque la variable compteur vaut la valeur valeur_finale, le traitement est exécuté
une dernière fois puis le programme sort de la boucle.
q Par défaut, l’incrément est de 1

L1BCGS 2023-2024
La boucle Pour
Exemple 1: Cet exemple permet d'afficher à l'écran les nombres pairs de 0 à 20.
….
Pour x = 0 à 20 par pas de 2 Faire
Ecrire(x)
FinPour

Exemple 2: Cet exemple permet d'afficher à l'écran les nombres pairs de 20 à 0.

Pour x = 20 à 0 par pas de -2 Faire
Ecrire(x)
FinPour

Exemple 3: Cet exemple permet d'afficher à l'écran tous les nombres de 0 à 20

Pour x = 0 à 20 Faire
Ecrire(x)
FinPour
L1BCGS 2023-2024

La boucle Pour
Remarque
q La boucle Pour permet de faire la même chose que la boucle Tant que mais de façon plus rapide, du
moins lorsque le nombre de répétitions est connu.
q En effet, avec une boucle tant que, on pourrait faire la même chose que l'exemple 3 ci-dessus, mais il
faudrait initialiser la variable compteur et l'incrémenter explicitement.


x=1
Tant que (x <= 20) Faire
Ecrire(x)
x = x+1 // incrémentation explicite
FinTQ

L1BCGS 2023-2024
Traduction en langage C: boucle for
Syntaxe :
for(instruction1;condition;instruction2)
{
traitement;
}
Le déroulement se fait ainsi:
- instruction1 est exécutée une seule fois.
- Puis il y a l'enchaînement suivant:
La condition est évaluée.
Si elle est fausse, on sort de la boucle.
Si elle est vraie, le traitement de la boucle est exécuté, puis instruction2 est exécutée et on
recommence en évaluant à nouveau la condition, etc …
En général
instruction1 permet d'initialiser une variable compteur
instruction2 permet d'incrémenter ou de décrémenter une variable compteur

L1BCGS 2023-2024
Traduction en langage C: boucle for
Exemple

for(x = 0; x <= 20; x = x+1)


{
printf("%d", x);
}

A la sortie de la boucle, x vaut 21.

L1BCGS 2023-2024
La boucle Faire…Tant que

q Cette boucle sert à répéter une instruction tant qu'une condition est vraie. Son
formalisme est le suivant:
Faire
traitement
Tant que (condition)

q Le traitement est exécuté une première fois, puis la condition est vérifiée. Si elle
est vraie, on retourne au début de la boucle et le traitement est répété. Si la
condition est fausse, on sort de la boucle.

q A chaque fois que le traitement est exécuté, la condition est de nouveau vérifiée à la
fin.

L1BCGS 2023-2024
La boucle Faire…Tant que
Exemple
Programme qui l'aire d'un cercle dont le rayon est saisi par l'utilisateur et qui permet
de recommencer plusieurs fois.
Programme Aire
Variable
rayon : réel
réponse : caractère
Début
Ecrire("Calcul de l'aire d'un cercle")
Faire
Ecrire("Entrez le rayon d'un cercle en cm")
Lire(rayon)
Ecrire("L'aire de ce cercle est ", rayon*rayon *3.14, "cm2")
Ecrire("Voulez-vous l'aire d'un autre cercle? (o/n)")
Lire(réponse)
Tant que (réponse = = 'o')
Ecrire("Au revoir!")
L1BCGS 2023-2024
Fin
Traduction en langage C: boucle do .. while

Syntaxe
do
{
traitement
} while (condition);

L1BCGS 2023-2024
Imbrication de structures de contrôles
q Dans les parties traitement des structures de contrôle qu’on a vues, il peut y avoir d’autres
structures de contrôle. On parle alors d’imbrication de structures (c'est-à-dire
que les structures sont incluses les unes dans les autres).
q Dans le cas de structures Si imbriquées, le premier FinSi rencontré dans
l'algorithme indique toujours la fin de la structure la plus imbriquée.
Exemple 1:
Si (condition1) Alors
……
Si (conditionN) Alors
……..
FinSi
……
Finsi

L1BCGS 2023-2024
Imbrication de structures de contrôles
q Lorsque l'on imbrique des boucles Pour, il faut utiliser des compteurs differents pour chaque
boucle.
Exemple 2:
Pour j = 1 à 3 Faire
Pour i = 1 à 5 Faire
Ecrire("*")
FinPour
FinPour

q Tous les types de boucles peuvent s'imbriquer entre eux. La seule règle à respecter est que les
boucles ne doivent pas se chevaucher: elles doivent s'emboîter

L1BCGS 2023-2024
Instructions de rupture de séquence en langage C
L'instruction break
q L'instruction break peut être employée à l'intérieur de n'importe quelle boucle.
q Elle permet d'interrompre le déroulement de la boucle, et passe à la première instruction qui
suit la boucle. En cas de boucles imbriquées, break fait sortir de la boucle la plus interne.
Par exemple, le programme suivant:
int main()
{ Affiche à l'écran:
i=0
int i;
i=1
for (i = 0; i < 5; i++) i=2
{ i=3
printf("i = %d\n",i); valeur de i a la sortie
de la boucle = 3
if (i == 3)
break; }
printf("valeur de i a la sortie de la boucle = %d\n",i);
return 0;
}
L1BCGS 2023-2024
Instructions de rupture de séquence en langage C
L'instruction continue
L'instruction continue permet de passer directement à l'étape suivante d'une boucle
sans exécuter les autres instructions de la boucle qui la suivent.
Par exemple, le programme suivant:
int main()
{ Affiche à l'écran:
int i; i=0
for (i = 0; i < 5; i++) i=1
i=2
{
i=4
if (i == 3) valeur de i a la sortie
continue; de la boucle = 5
printf("i = %d\n",i);
}
printf("valeur de i a la sortie de la boucle = %d\n",i);
return 0;
} L1BCGS 2023-2024
Fin du Chapitre 4

L1BCGS 2023-2024
UNIVERSITÉ CHEIKH ANTA DIOP DE DAKAR
FACULTÉ DES SCIENCES ET TECHNIQUE
DÉPARTEMENT MATHÉMATIQUE ET INFORMATIQUE

Chapitre 5 - TYPES DE DONNÉES


COMPOSÉS

Dr. THIONGANE
[Link]@[Link]
L1BCGS
Année: 2023-2024

Cours ALGO & C


PLAN
èLes énumérations
èLes tableaux

èLes structures

Cours ALGO & C


2
Les énumérations
l Une énumération est un type de données dont les
valeurs sont des constantes nommées.
l Elles permettant de définir un ensemble de
constantes, parmi lesquelles les variables de ce
type prendront leur valeur.
l La syntaxe de définition d’un type énuméré est la
suivante :
• type
• nom_type = { constante1, constante2, …, constanteN }
Cours ALGO & C
3
Définition des types énumérés
où nom_type est l’identificateur du nouveau type
constante1, constante2, …, constanteN est une liste d’identificateurs
donnant l’ensemble des valeurs de ce type.
Exemple:
type
// définition du type couleur
couleur = {bleu, blanc, rouge, vert, jaune, noir}
// définition du type jour
jour = {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche}

Cours ALGO & C 4


Déclaration d’une variable de type énuméré
l Après avoir défini un type énuméré, on peut l'utiliser comme un type
normal pour déclarer une ou plusieurs variables de ce type.
l Exemple :
l …
l variable
l c : couleur // déclaration de la variable c de type couleur
l Début
l …
l c = bleu // utilisation de la variable c
l …
l Fin

Cours ALGO & C


5
Les énumérations en C
l En C, on définit un type énuméré en utilisant le
mot-clé enum selon la syntaxe suivante :
l enum nom_énumération { nom1, nom2 ... };

Exemple
enum JourDeSemaine { Lundi, Mardi, Mercredi,
Jeudi, Vendredi, Samedi, Dimanche };
enum couleur {bleu, blanc, rouge, vert, jaune,
noir} ;
Cours ALGO & C
6
Les énumérations en C
l Chaque constante est associée à un entier (son numéro d’ordre
en partant de 0 pour le premier). Mais on peut aussi spécifier
la valeur associée.
l Exemple:
• Enum
jour{Lundi=1,Mardi,Mercredi=5,Jeudi,Vendredi,Samedi,Dimanche};
l Mardi prend la valeur 2, Jeudi la valeur 6,…
l Les valeurs associées aux constantes ne sont pas modifiables
dans le programme.
l Après avoir défini un type énuméré, on peut l'utiliser pour
déclarer une ou plusieurs variables de ce type. Exemples:
• enum jour j1;
• enum jour j2 = Mardi;

7
Exemple
#include <stdio.h>
#include <conio.h>
enum jour {Lundi=1,Mardi,Mercredi=5,Jeudi,Vendredi,Samedi,Dimanche};
int main() {
enum jour un_jour;
printf("Donnez un numéro de jour entre 1 et 7") ;
scanf("%d", &un_jour) ;
switch(un_jour ) {
case Lundi :
printf("C’est Lundi"); break ;
case Mardi :
printf("C’est Mardi"); break ;
case Mercredi :
printf("C’est Mercredi"); break ;
default :
printf("Ce n’est ni Lundi ni Mardi ni Mercredi"); }
return 0;;
} 8
Les tableaux
l Un tableau est un outil qui permet de regrouper sous le
même nom un ensemble de variables de même type.
l On appelle tableau une variable composée de données de
même type, stockée de manière contiguë en mémoire (les
unes à la suite des autres).
l Un tableau est donc une suite de cases (espace mémoire)
de même taille. La taille de chacune des cases est
conditionnée par le type de donnée que le tableau contient.

Cours ALGO & C


9
Les tableaux unidimensionnels
l Un tableau à une dimension peut être vu comme une liste
d'éléments.
l On le représente souvent comme une suite de cases
contenant chacune une valeur.
l Exemple: Tableau notes
15 13 9 17 5 10
1ère case 4ème case

l Un tableau possède un nom (ici notes) et un nombre


d'éléments (de cases) qui représente sa taille (ici 6).

Cours ALGO & C


10
Déclaration d’un tableau à une dimension
l Pour déclarer un tableau dont les éléments ont un
type de base :
• partir de la déclaration de variable ayant un type de
base ;
• ajouter entre crochets le nombre d'éléments du
tableau après le nom.
l En algorithme, la syntaxe de la définition
d'un tableau unidimensionnel est la suivante :
• nom_tableau: tableau [N] de type
Cours ALGO & C
11
Déclaration d’un tableau à une dimension
l type définit le type d'élément que contient le tableau, c'est-
à-dire qu'il définit la taille d'une case du tableau en
mémoire
l nom_tableau est le nom que l'on décide de donner au
tableau, le nom du tableau suit les mêmes règles qu'un
nom de variable
l N est un nombre entier qui détermine le nombre de cases
que le tableau doit comporter
l Exemple
• variable
• salaires : tableau[6] de réel
• étudiants: tableau [25] de chaîne
• notes : tableau[8] d’entier
12
Accéder aux éléments
l Pour accéder à un élément du tableau, le nom que l'on a
donné à celui-ci ne suffit pas car il comporte plusieurs
éléments. Ainsi, on définit un nombre appelé indice qui,
combiné avec le nom du tableau, permet de décrire
exactement chaque élément.
l Pour accéder à un élément du tableau, il suffit donc de
donner le nom du tableau, suivi de l'indice de l'élément
entre crochets :
l Nom_du_tableau[indice]

Cours ALGO & C


13
Accéder aux éléments
l Un élément particulier du tableau est désigné en précisant
son indice (son numéro).
l Le premier élément du tableau correspond à l’indice 0 et
est désigné par nom_tableau[0].
l Le deuxième élément du tableau correspond à l’indice 1 et
est désigné par nom_tableau[1].
l Le dernier élément du tableau correspond à l’indice N-1 et
est désigné nom_tableau[N-1].
l Quelque soit sa forme, la valeur de l'indice doit être
entière et comprise entre les valeurs minimale et maximale
déterminées à la déclaration du tableau.
Cours ALGO & C
14
Manipulation d’un tableau à 1 dimension
l Les éléments d'un tableau sont des variables appelées
variables indicées qui s'utilisent exactement comme
n'importe quelle autre variable classique. Autrement dit,
elles peuvent faire l'objet d'une affectation, elles peuvent
figurer dans une expression arithmétique, dans une
comparaison, elles peuvent être affichées et saisies…
l On ne peut pas manipuler un tableau de manière globale(
affectation à un autre tableau, affichage, saisie…). Il faut
le manipuler élément par élément (en le parcourant avec
une boucle Pour par exemple).

Cours ALGO & C


15
Les tableaux multidimensionnels
l Les tableaux multidimensionnels sont des tableaux qui
contiennent des tableaux.
l Par exemple le tableau bidimensionnel (3 lignes, 4
colonnes) suivant, est en fait un tableau comportant 3
éléments, chacun d'entre eux étant un tableau de 4
éléments :
a b c d
e f g h
i j k l

Cours ALGO & C


16
Les tableaux multidimensionnels
l Un tableau à plusieurs dimensions se déclare en ajoutant
une paire de crochets et une taille pour chaque dimension.
l Par exemple, pour un tableau à deux dimensions, la
syntaxe est la suivante:
• variable
• nom_tableau: tableau[N1][N2] de type
l Un tableau à deux dimensions est aussi appelé matrice.
l Exemple :
l tab : Tableau[3][2] de Réel // matrice de 3 lignes et
deux colonnes

Cours ALGO & C


17
Les tableaux multidimensionnels
l L’accès à un élément se fait en précisant un indice entre
crochets pour chaque dimension.
l Le premier indice de chaque dimension est 0.
• tab[0][0] désigne l'élément du tableau tab situé à l ligne 0 et à la
colonne 0
• tab[2][1] désigne l'élément du tableau tab situé à l ligne 2 et à la
colonne 1
l Remarque :
l Pour parcourir tous les éléments d’un tableau à deux
dimensions, on peut utiliser deux boucles Pour
imbriquées : la première boucle pour une dimension et la
deuxième pour l’autre dimension.
18
Les tableaux en C
l En C, la syntaxe de la déclaration d'une variable tableau
est la suivante:
l type nom_tableau [ N ]; où
l nom_tableau est l’identificateur du tableau
l N est la taille du tableau et doit être une constante entière
et positive.
l Exemple :
• int tab[10] ; //déclare une variable tableau de 10 entiers appelée tab.
• tab[0] désigne le premier élément du tableau tab
• tab[9] désigne le dernier élément du tableau tab

Cours ALGO & C


19
Initialisation d'un tableau
l Il est possible d'initialiser un tableau avec une liste
d'expressions constantes séparées par des virgules, et
entourée des signes { et }. Exemple :
• #define N 5
• int t[N] = {1, 2, 3, 4, 5};
l On peut donner moins d'expressions constantes que le
tableau ne comporte d'éléments.
l Dans ce cas, les premiers éléments du tableau seront
initialisés avec les valeurs indiquées, les autres seront
initialisés à zéro.
• #define N 10
• int t[N] = {1, 2};
Cours ALGO & C 20
Cas particulier des tableaux de caractères
l Un tableau de caractères peut être initialisé par une liste de
constantes caractères.
l Exemple : char ch[3] = {'a', 'b', 'c'}; C'est évidemment une
méthode très lourde.
l Un tableau de caractères peut être initialisé par une chaîne
littérale. Exemple :
• char ch[8] = "exemple";
l On se rappelle que le compilateur complète toute chaîne
littérale avec un caractère null, il faut donc que le tableau
ait au moins un élément de plus que le nombre de
caractères de la chaîne littérale.
Cours ALGO & C 21
Cas particulier des tableaux de caractères
l Il est admissible que la taille déclarée pour le tableau soit
supérieure à la taille de la chaîne littérale. Exemple :
l char ch[100] = "exemple"; dans ce cas, seuls les 8
premiers caractères de ch seront initialisés.
l Il est également possible de ne pas indiquer la taille du
tableau et dans ce cas, le compilateur a le bon goût de
compter le nombre de caractères de la chaîne littérale et de
donner la taille adéquate au tableau (sans oublier le
null). Exemple :
• char ch[] = "ch aura 22 caractères";

Cours ALGO & C


22
Fonctions de manipulation de chaînes
l La bibliothèque standard string.h fournit des fonctions de
manipulations des chaînes de caractères.
• Après la déclaration, l’affectation d’une chaîne se fera par la fonction
strcpy.
• Exemple : strcpy(ch, ''hello'') ;
• La longueur (le nombre de caractères) d’une chaîne est donnée par la
fonction strlen.
• Cette fonction ne prend pas en compte le caractère \0.
• Exemple : strlen(''bonjour'') retourne 7.
• La concaténation de deux chaînes se fait par la fonction strcat.
• Exemple : strcat(ch, '' world'') ; la chaîne contient alors ''hello world''

Cours ALGO & C


23
Fonctions de manipulation de chaînes
l La comparaison de deux chaînes se fait par
la fonction strcmp.
• Exemple : n = strcmp(ch1, ch2) ;
• n vaudra :
• un nombre négatif si ch1 < ch2 au sens syntaxique
• 0 si ch1 et ch2 sont identiques
• un nombre positif si ch1 > ch2

Cours ALGO & C


24
Notion de structure
l Il est habituel en programmation d'avoir besoin d'un
mécanisme permettant de grouper un certain nombre de
variables de types différents au sein d'une même entité.
l On travaille par exemple sur un fichier de personnes et on
voudrait regrouper une variable de type chaîne de
caractères pour le nom, une variable de type entier pour le
numéro d'employé, etc.
l La réponse à ce besoin est le concept d'enregistrement : un
enregistrement est un ensemble d'éléments de types
différents repérés par un nom.
l Les éléments d'un enregistrement sont appelés des
champs.
Cours ALGO & C
25
Déclaration d’un type structure
l La syntaxe de déclaration d’un type énuméré est la
suivante :
• type
• nom_type = Structure
• champ1 : type1
• ...
• champN : typeN
• FinStructure
l nom_type est l’identificateur du nouveau type
l type1, …, typeN sont les types respectifs des champs
champ1, …, champN

Cours ALGO & C


26
Déclaration d’un type structure
type
date = Structure
jour : entier
mois : chaîne
année : entier
FinStructure
variable
d : date // d est une variable de type date.

Cours ALGO & C


27
Les opérations sur les structures
l On accède aux différents champs d'une structure grâce à
l'opérateur point, noté ''.''.
l Par exemple, le champ appelé champ1 d’une variable
structure x est désigné par l'expression x.champ1
l On peut effectuer sur le champ d'une structure toutes les
opérations valides sur des variables de même type que ce
champ.
l On peut appliquer l'opérateur d'affectation à une structure
(à la différence d’un tableau). Cela permet de copier tous
les champs de la structure.

Cours ALGO & C


28
Les structures en langage C
l En C, on définit un type structure en utilisant le mot-clé
struct selon la syntaxe suivante :
struct nom_type
{Type1 nom_champ1;
...
• TypeN nom_champN;
• };

Cours ALGO & C


29
Exemple
struct complexe
{ float réelle;
float imaginaire;
};
struct complexe c1,c2;
qui déclare deux variables de type struct complexe de noms
c1 et c2;
c1.réelle=4;
[Link]=90;

30
Utilisation du mot clé typedef
l Pour alléger l'écriture des programmes, on peut donner un
nouvel identificateur à un type existant à l'aide du mot clé
typedef.
l Pour les types de base ainsi que les énumérations et les
structures, la syntaxe est la suivante :
l typedef type synonyme;
• enum couleur {bleu, blanc, rouge, vert, jaune, noir} ;
• typedef enum couleur couleur ;
• main(){
• couleur c ; // c est une variable de type couleur
• …
• }
Cours ALGO & C
31
FIN
Cours ALGO & C
32
Université Cheikh Anta Diop de DAKAR
Faculté des Sciences et technique
Département Mathématique et Informatique

Chapitre 6 - Procédure et Fonction

Cours d’algorithmique et programmation en


LANGAGE C
L1BCGS
2020-2021

1 FST L1BCGS
Notion de procédure et de fonction
— Bien souvent, lorsqu’on commence à écrire de long programme,
on se rend rapidement compte que certains blocs d’instructions
se répètent.
— Une procédure ou fonction est un bloc d’instructions, ayant un
début et une fin, et identifié par un nom.
— En langage C, des sous programmes regroupés dans des
bibliothèques standards peuvent être utilisés directement dans
n'importe quel programme. Par exemple, printf, scanf, clrscr,
sqrt, …
— Mais le programmeur est souvent amené à écrire ses propres
sous-programmes.

2 FST L1BCGS
Portée d’une variable
— La portée d’une variable est l’ensemble des sous-
programmes où cette variable est connue
— Une variable déclarée en dehors de tout sous-programme
est appelée variable globale. Sa portée est totale : le
programme principal et tous les sous-programmes peuvent
utiliser cette variable.
— Une variable déclarée au sein d’un sous programme est
appelée variable locale. Sa portée est uniquement le sous-
programme où elle est déclarée.
— Lorsque, dans un sous programme, le nom d’une variable
locale est identique à celui d'une variable globale, la
variable globale est localement masquée.
3
FST L1BCGS
Durée de vie d’une variable
— La durée de vie d’une variable est le temps pendant lequel
la variable existe, c’est-à-dire pendant lequel elle peut être
utilisée.
— Elle commence par la réservation de sa place en mémoire
et s’arrête lorsque cette place est libérée.
— Ainsi, une variable globale a la même durée que le
programme principal : elle est créée quand le programme
est lancé et est « détruite » quand le programme s’arrête.
— Une variable locale à un sous-programme est créée quand
le sous-programme est appelé. Quand le sous-programme
est terminé, elle est détruite et la place qu’elle occupait est
récupérée.
4
FST L1BCGS
Communication entre programme
et sous-programmes
— Contrairement à un programme, un sous-
programme ne peut pas s'exécuter
indépendamment d'un autre programme. Le
programme qui utilise un sous-programme est
appelé programme appelant.
— Un sous-programme peut être appelé soit par un
programme, soit par un autre sous-programme (qui
lui même a été appelé).

5 FST L1BCGS
Paramètre formel et paramètre
effectif

— Un paramètre est une variable particulière qui sert à la


communication entre programme appelant et sous -
programme.
— Il est primordial de bien distinguer les paramètres qui se
trouvent dans l'en-tête d'un sous programme, lors de sa
définition et les paramètres (ou arguments) qui se trouvent
placés entre parenthèses lors de l'appel.
— Les paramètres placés dans la définition d’un sous
programme sont les paramètres formels . Ils servent à
décrire le traitement à réaliser par le sous programme
indépendamment des valeurs traitées
6 FST L1BCGS
Paramètre formel et paramètre
effectif

— Les paramètres avec lesquels le sous programme est


effectivement appelé sont les paramètres effectifs ou
réels.
— Lorsqu'il y a plusieurs paramètres dans la définition d’un
sous programme (paramètres formels) , il faut absolument
qu'il y en ait le même nombre à l'appel (paramètres
effectifs) et que l'ordre soit respecté.
— Chaque paramètre effectif doit être de même type que le
paramètre formel auquel il correspond.

7 FST L1BCGS
Passage de paramètres

— Dans l’appel d’un sous programme, le programme


appelant fournit des paramètres effectifs
correspondants aux paramètres du sous programme
(paramètres formels). Il y a alors ce qu’on appelle un
passage de paramètres.
— Le passage d’un paramètre peut se faire suivant deux
modes.

8 FST L1BCGS
Passage de paramètre en entrée
— Lors de l'appel du sous programme, la valeur du
paramètre effectif (passé en argument) est copiée
dans le paramètre formel. Le sous programme
effectue alors le traitement avec le paramètre
formel et n'utilise pas directement le paramètre
effectif.
— Les instructions du sous-programme ne peuvent
donc pas modifier le paramètre fourni par le
programme appelant (paramètre effectif).

9 FST L1BCGS
Passage de paramètre en entrée-
sortie
— Ce mode de passage de paramètre est à utiliser lorsque
le sous-programme doit pouvoir utiliser et/ou modifier
la valeur du paramètre fourni par le programme
appelant.
— Pour ce mode de passage on ne peut pas utiliser de
constante ou de valeur comme paramètre effectif.

10 FST L1BCGS
Les fonctions
— Les fonctions sont des sous-programmes qui retournent un
et un seul résultat au programme appelant à travers une
valeur de retour.
— Une fonction possède un type : c’est le type de la valeur
retournée.
— Les paramètres sont en nombre fixe (>=0).
— Le passage de paramètres est uniquement en entrée : c’est
pour cela qu’il n’est pas précisé.
— La valeur de retour est spécifiée par l’instruction
Retourner

11 FST L1BCGS
Syntaxe de définition d’une
fonction :
— Fonction nom_fonction (paramètre1 : type1, paramètre2 :
type2, …, paramètreN : typeN) : type_ valeur_retournée
— variable
— // déclaration des variables locales
— Début
— // traitement
— …
— Retourner expression
— FinFonction

12 FST L1BCGS
Exemple
Fonction factoriel(n: entier) : entier
variable
i : entier
fact : entier ………….
Début début
fact =1 Ecrire("Calcul du factoriel d’un entier :")
Si (n != 0) Alors Ecrire("Entrez un entier :")
Pour i = 1à n Faire Lire(x)
fact = fact * i Ecrire("Le factoriel de ",x," est ",factoriel(x))
FinPour fin
FinSi
Retourner fact
FinFonction

13 FST L1BCGS
Les procédures
— Une procédure est un sous programme qui n’a pas de
valeur de retour mais elle peut renvoyer plusieurs résultats
au programme appelant à travers des paramètres en entrée-
sortie. Elle peut aussi modifier la valeur d'un
paramètre passé en entrée-sortie.
— Les procédures admettent des paramètres avec des
passages :
— en entrée, préfixés par Entrée (ou E)
— en entrée-sortie, préfixés par Entrée-Sortie (ou E-S)

14 FST L1BCGS
Déclaration

— On déclare une procédure de la façon suivante :


—
— Procédure nom de la procédure ( E paramètre(s) en
entrée, E-S paramètre(s) en entrée-sortie )
— Variable Procédure echanger (E-S a : Entier, b : Entier;)
— // déclaration des variables locales
Variable
tmp : Entier
— Début Début
— // traitement tmp = a
a=b
— … b = tmp
FinProcédure
— FinProcédure
15 FST L1BCGS
Syntaxe de définition d’une
fonction en Langage C
type nomFonction ( type1 paramètre1 , type2 paramètre2 , . . . , typeN
paramètreN)
{
// déclaration des variables locales
// traitement

return expression ;

}
int addition (int a, int b)
{
int somme; //déclaration de la variable locale
somme
somme = a + b;
return(somme);
}
16 FST L1BCGS
Remarques
— 1) Il n’y a pas de procédure en C.
— Pour traduire une procédure, on écrit une fonction qui a
comme type de retour le type void.
— Cela permet de spécifier que la fonction ne renvoie aucun
résultat. Dans ce cas, pour terminer l'exécution de la
fonction, on peut utiliser le mot-clé return seul ou plus
simplement atteindre la fin des instructions.
— 2) Le programme principal en C est une fonction dont le
nom est main. Il peut avoir des paramètres ou non.

17 FST L1BCGS
Passage de paramètres
— Lors de l'appel d’une fonction, la valeur de chaque
paramètre effectif (paramètre passé en argument) est
recopiée dans le paramètre formel de la fonction qui va
travailler avec cette copie. La fonction ne va donc pas
modifier le paramètre effectif. On parle de passage de
paramètre par valeur.
— Pour qu’une fonction modifie la valeur d’une variable, il
faut passer à la fonction non pas la variable elle même mais
son adresse en mémoire. On parle de passage de paramètre
par adresse.

18 FST L1BCGS
FIN
19 FST L1BCGS

Vous aimerez peut-être aussi