Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Program Mati On System Ed Ji On A NG

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 79

Chapitre I: Concepts de Base et Outils

Chapitre II: Le Langage C


Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

Programmation Système

Berlin DJIONANG

École Nationale Superieure Polytechnique de Yaoundé


Université de Yaoundé I

September 29, 2023

Niveau 3
Art et Intelligence Artificielle

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 1 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C
Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

Contents

1 Chapitre I: Concepts de Base et Outils

2 Chapitre II: Le Langage C

3 Chapitre III: Les Systèmes de Gestion de Fichiers

4 Chapitre IV : Les Processus

5 Chapitre V : Communication Inter-Processus

6 Chapitre VI : Communication Réseaux: les Sockets

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 2 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C
Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

Saviez-vous que vous pouviez en faire une carrière?

 Administrateur système

 Administrateur réseaux

 Programmeur Système

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 3 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C
Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

Organisation du Cours

 COURS MAGISTRAL (18H)

 TRAVAUX DIRIGES (6H)

 TRAVAUX PRATIQUES (8H)

 EXPOSES (4H)

 CONTRÔLE CONTINU (2H)

 EXAMEN (2H)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 4 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C
Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

Contrat Pour Rester De Bon Ami

 Respecter les heures de cours;

 Respecter vos camarades;

 Vos téléphones doivent êtres éteints;

 On ne mange pas en classe;

 Partager vos incompréhensions avec les autres et l’enseignant;

 Vos questions..?

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 5 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

1 Chapitre I: Concepts de Base et Outils

2 Chapitre II: Le Langage C

3 Chapitre III: Les Systèmes de Gestion de Fichiers

4 Chapitre IV : Les Processus

5 Chapitre V : Communication Inter-Processus

6 Chapitre VI : Communication Réseaux: les Sockets

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 6 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Objectifs

1 Définir les concepts de base;

2 Présenter les principes généraux de la programmation sous Linux;

3 Présenter les outils disponibles pour réaliser des applications et les


étapes de base nécessaires à la création des programmes Linux en
langage C;

4 Expliquer comment créer, modifier et compiler un code source C et


déboguer le résultat.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 7 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

La véritable idée d’un système


d’exploitation est d’utiliser les
fonctionnalités du matériel, et de
les placer derrière une couche
d’appels de haut niveau Linus
Benedict Torvalds

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 8 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

La véritable idée d’un système


d’exploitation est d’utiliser les
fonctionnalités du matériel, et de
les placer derrière une couche
d’appels de haut niveau Linus
Benedict Torvalds

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 8 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Architecture d’un ordinateur

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 9 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Système d’exploitation

Un système d’exploitation SE
(Operating System en anglais) est
un logiciel spécialisé qui sert
principalement à gérer le lien entre
les ressources matérielles d’un
ordinateur (RAM, CPU et
périphériques E/S) et les
applications informatiques de
l’utilisateur.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 10 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Système d’exploitation

Un système d’exploitation SE
(Operating System en anglais) est
un logiciel spécialisé qui sert
principalement à gérer le lien entre
les ressources matérielles d’un
ordinateur (RAM, CPU et
périphériques E/S) et les
applications informatiques de
l’utilisateur.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 10 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Programme
On distingue deux types de programme:
 Programme d’application: programme réalisé pour répondre aux
besoins des utilisateurs et effectué lors de la programmation dite
classique.
Exemple:les applications développées en langage C;

 Programme système: qui permettent le fonctionnement de la


machine (ordinateur, tablette, pilote, ...).
Exemples:L’accès aux fichiers, la gestion des processus, les
entrées/sorties, la gestion de la mémoire, la programmation réseau.

 NB: le langage C a été créé spécialement pour la programmation


système, plus précisément pour le développement de systèmes
d’exploitation Unix.
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 11 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Système d’exploitation
On distingue les systèmes d’exploitation suivant :
 Le nombre de tâches qu’on peut exécuter à la fois : on parle de
systèmes mono-tâches et de systèmes multitâches ;

 Le nombre de postes qu’on peut connecter : on parle de systèmes


monoposte et de systèmes multipostes ou réseau

 Le nombre d’utilisateurs qui peuvent utiliser le système : on parle


de systèmes mono -utilisateurs ou multiutilisateurs. Dans un
système est multiutilisateurs, chaque utilisateur dispose d’un compte
(ensemble de fichiers, dossiers et préférences auxquels il peut
accéder).

 La largeur du bus d’adresse : on parle de système 16, 32 ou 64


bits . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 12 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Composants d’un SE
Le système d’exploitation est composé d’un ensemble de logiciels
permettant de gérer les interactions avec le matériel. Parmi cet ensemble
de logiciels on distingue généralement les éléments suivants :
 Le noyau (en anglais kernel ) représentant les fonctions

fondamentales du système d’exploitation telles que la gestion de la


mémoire, des processus, des fichiers, des entrées -sorties principales,
et des fonctionnalités de communication ;
 L’interpréteur de commande (en anglais shell, traduisez coquille
par opposition au noyau) permettant la communication avec le
système d’exploitation par l’intermédiaire d’un langage de
commandes, afin de permettre à l’utilisateur de piloter les
périphériques en ignorant tout des caractéristiques du matériel qu’il
utilise, de la gestion des adresses physiques, etc;
 Le système de fichiers (en anglais ńfile systemż, noté FS),
permettant d’enregistrer les fichiers dans une .arborescence.. . . . . . . . . . Exemple
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
: FAT32
Berlin DJIONANG
(File Allocation Table), NTFS
Programmation Système
(NT File System, système
September 29, 2023
à
13 / 69
Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Noyau

1 Dans une machine fonctionnant sous Linux, de nombreuses couches


logicielles sont empilées, chacune fournissant des services aux autres.
Il est important de comprendre comment fonctionne ce modèle pour
savoir où une application viendra s’intégrer.

2 La base du système d’exploitation est le noyau, qui est une sorte


logiciel d’arrière-plan qui assure les communications entre les
programmes (inclus les programme de système et programmes
d’application). C’est donc par lui qu’il va nous falloir passer pour
avoir accès aux informations du système.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 14 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Les types de Noyau


Il existe toutes sortes de noyaux, plus ou moins spécialisés:
 Noyaux monolithiques non modulaires:Unix

 Noyaux monolithiques modulaires:Linux, Solaris

 Systèmes à micro-noyaux:L4, Darwin, iOS, Android

 Noyaux hybrides: XNU de MAC-OS, MKLinux

 Exo-Noyaux:bibliotheque dynamique (LIBOSes)

 Méta-Noyaux : grappe de calcul, machine virtuelle, serveur

 Noyaux temps réel:RTLinux, RTX, Xenomai. . . . . . . . . . . . . . . . . . . .


. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 15 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

monolithiques non modulaires et Modulaire

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 16 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

monolithiques non modulaires et Modulaire

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 16 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

micro-noyau et Noyau hybride

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 17 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

micro-noyau et Noyau hybride

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 17 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Les Composants du noyau Linux

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 18 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Appels Système
 Appel système: L’invocation
de code privilégié par du code
non-privilégié se fait au moyen
d’un appel système. Un appel
système est semblable à un
appel de fonction, mais effectue
en plus deux changements de
niveau de privilège : une
transition vers le mode privilégié
lors de lappel, et une transition
vers le mode non-privilégié lors
du retour. De ce fait, un appel
système est lent, typiquement
entre 1 000 et 10 000 fois plus
lent quun appel de fonction sur
. . . . . . . . . . . . . . . . . . . .
du matériel moderne. . . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 19 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Appels Système
 Appel système: L’invocation
de code privilégié par du code
non-privilégié se fait au moyen
d’un appel système. Un appel
système est semblable à un
appel de fonction, mais effectue
en plus deux changements de
niveau de privilège : une
transition vers le mode privilégié
lors de lappel, et une transition
vers le mode non-privilégié lors
du retour. De ce fait, un appel
système est lent, typiquement
entre 1 000 et 10 000 fois plus
lent quun appel de fonction sur
. . . . . . . . . . . . . . . . . . . .
du matériel moderne. . . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 19 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Outils

Le développement en C sous Linux comme sous la plupart des autres SEs


met en uvre principalement cinq types d’utilitaires :
1 L’éditeur de texte

2 Le compilateur

3 L’éditeur de lien

4 Le Débogueur

5 D’utilitaires annexes

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 20 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Éditeur de Texte

 L’éditeur de texte, qui est à


lorigine de tout le processus de
développement applicatif. Il
nous permet de créer et de
modifier les fichiers source.

 Chaque programmeur a
généralement son éditeur
préféré, dans la suite de ce
cours nous utiliserons deux
éditeurs de texte à savoir Vi et
Gedit.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 21 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Éditeur de Texte

 L’éditeur de texte, qui est à


lorigine de tout le processus de
développement applicatif. Il
nous permet de créer et de
modifier les fichiers source.

 Chaque programmeur a
généralement son éditeur
préféré, dans la suite de ce
cours nous utiliserons deux
éditeurs de texte à savoir Vi et
Gedit.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 21 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

L’éditeur Vi

Les avantages de l’éditeur de texte Vi sont sa disponibilité sur toutes les


plates-formes Unix et la possibilité de l’utiliser même sur un système très
réduit pour réparer des fichiers de configuration. Il existe deux modes de
travail:
1 En mode commande: on appuie sur la touche ńiż ou ńaż pour
passer en mode insertion.

2 En mode insertion: le retour au mode commande étant réalisé à


l’aide de la touche <ESC>.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 22 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

L’éditeur Vi

Depuis de Shell, pour appeler Vi: vi nom_fichier ,Crée le fichier


(nom_fichier) s’il n’existe pas et si on a les droits
les commandes Vi:
1 :w: pour sauvegarder un fichier.

2 :q! : pour sortir sans sauvegarder.

3 :x ou :wq!: pour sauvegarder et sortir.

4 x: pour effacer un caractère

5 dd: pour effacer une ligne (ndd: pour effacer n lignes).

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 23 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

L’éditeur Gedit

1 On doit d’abord l’installer

2 sudo apt-get install gedit

3 Depuis le Shell, on peut aussi lancer le Gedit: gedit nom_fichier

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 24 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Interpréteur =! Compilateur

 Un langage interprété est un langage dont les implémentations


exécutent des instructions directement sans passer par une phase de
compilation (script shell, python, PHP, JavaScript)

 Un langage compilé est un langage qui requiert un compilateur


pour traduire le code source en programme binaire compréhensible
par la machine. Une fois compilé, le programme peut être démarré
et distribué sur la même plateforme (C, C++, ... ).

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 25 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Langage Compilé

Avantages
 Programme immédiatement
disponible à démarrer;
 Plus rapide, car il est optimisé
pour le CPU;
 Code source privée.
Inconvénients
 Non multi-plateforme;

 Nécessite des étapes


supplémentaires pour tester.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 26 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Langage Compilé

Avantages
 Programme immédiatement
disponible à démarrer;
 Plus rapide, car il est optimisé
pour le CPU;
 Code source privée.
Inconvénients
 Non multi-plateforme;

 Nécessite des étapes


supplémentaires pour tester.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 26 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Langage Interprété

Avantages
 Multi-plateforme;
 Simple à tester;
 Facile à débugger;
 Code source public.
Inconvénients
 Requiert un interpréteur;
 Pour chaque exécution, le
programme doit être interprété
préalablement

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 27 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Langage Interprété

Avantages
 Multi-plateforme;
 Simple à tester;
 Facile à débugger;
 Code source public.
Inconvénients
 Requiert un interpréteur;
 Pour chaque exécution, le
programme doit être interprété
préalablement

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 27 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Langage C

Le langage C est un langage compilé


 Le compilateur C utilisé sous Linux est gcc(Gnu Compiler
Collection). On peut également l’invoquer sous le nom cc, comme
c’est l’usage sous Unix, ou g++ si on compile du code C++. Il
existe aussi une version nommée egcs, il s’agit d’une implémentation
améliorée de gcc.

 Le compilateur gcc permet de produire un fichier exécutable à


partir d’un programme écrit en langage C.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 28 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Le gcc

Le gcc effectue les tâches suivantes à partir d’un fichier .c


1 le préprocesseur(the preprocessing): nommé cpp, gère toutes les
directives (#include, #define, #ifdef) du code source.

2 le compilateur(the compiling): traduit le code source en code


assembleur, un langage très proche du langage machine.

3 l’assembleur(the assembling): traduit le code assembleur en


code(langage) machine. On obtient alors le fichier objet.

4 l’éditeur de liens(the linking): assure le regroupement des fichiers


objet et des bibliothèques pour fournir enfin le fichier exécutable.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 29 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Le gcc

Pratiquement, par exemple à partir d’un fichier programme.c, la


compilation consiste à effectuer les étapes suivantes:
1 Passer le préprocesseur: générer le fichier programme.i.

2 Générer un fichier assembleur programme.s

3 Faire l’assemblage de ce fichier pour obtenir programme.o.

4 Faire l’édition de liens avec les bibliothèques utiles.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 30 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Installation du gcc

Pour installer le compilateur gcc, on ouvre un terminal et on tape les


commandes suivantes:
1 sudo su.

2 apt-get install gcc

3 Avoir la version: gcc -v ougcc version.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 31 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Compilation

Pour compiler et produire un fichier exécutable on tape la commande


gcc:
 gcc nom_source.c ou nom_source.c est le fichier.c a compilé

 Par défaut, la compilation produit en sortie un fichier exécutable


nommé a.out. Pour donner un nom explicite au fichier exécutable,
on utilise l’option -o (out) de gcc.

 Nouvelle commande: gcc nom_source.c -o nom_sortie.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 32 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Exécution

Pour la compilation par défaut


 ./a.out.
pour la compilation avec un nom explicite au fichier exécutable
 ./nom_sortie.
L’option -c de la commande gcc permet de produire un fichier objet du
fichier source (c-à-d elle effectue les trois premières étapes de la
compilation mais elle ne fait pas dédition de lien).
 gcc -c programme.c -o programme.o.
programme.o c’est le fichier objet généré. Il contient des informations
codées en binaire (format presque exécutable) qui représentent le
programme contenu dans le fichier source.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 33 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Compilation séparée

 Un gros programme peut être découpé en plusieurs fichiers


indépendants. En effet la séparation du code est la moyen d’avoir
des parties du code réutilisables (c-à-d, des fonctions qui peuvent
servir dans d’autres programmes).

 Lorsqu’on compile un programme qui utilise plusieurs fichiers, il faut


donner les noms de tous les fichiers à utiliser et un des fichiers doit
contenir la fonction principale main().

 Soient prog1.c, prog2.c, ..., prog.c des fichiers sources où prog.c


contient la fonction main(). Pour compiler et générer lexécutable.

 gcc prog1.c prog2.c ... prog.c -o prog.


. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 34 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Assembler

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 35 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Les options du gcc

Quelques options du gcc:


 -o nom : donne le nom du fichier de sortie

 -c : s’arrête au fichier .o

 -g : génère les informations pour le débogueur

 -lX : ajoute la bibliothèque X pour lors de l’édition des liens

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 36 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Fichiers en-tête

Pour que plusieurs fichiers soient utilisables dans un programme principal,


il faut donner les prototypes des fonctions définies dans ces fichiers et qui
sont utilisées dans le programme. Les prototypes sont écrits dans des
fichiers en-tête qui sont caractérisés par l’extension .h.
L’inclusion d’un fichier en-tête est réalisée par les instructions:
 #include "nom_fichier.h"

 #include <nom_fichier.h>
Pour #include "...", la recherche des fichiers .h s’effectue dans le
répertoire courant. Pour #include <...>, la recherche des fichiers .h
s’effectue dans les répertoires d’inclusion /usr/include. On peut aussi
spécifier des sous répertoires des répertoires d’inclusion. Par exemple,
#include <sys/types.h>
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 37 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C Introduction
Chapitre III: Les Systèmes de Gestion de Fichiers Architecture d’un Ordinateur
Chapitre IV : Les Processus Définitions des Concepts
Chapitre V : Communication Inter-Processus Outils de Développement
Chapitre VI : Communication Réseaux: les Sockets

Débogage sur Linux


 Le débogueur permet d’exécuter pas à pas le code, dexaminer des
variables internes, etc. En autre terme, il aide un développeur à
analyser les bugs d’un programme.

 Lorsqu’une application a été compilée avec l’option g, il est possible


de l’exécuter sous le contrôle d’un débogueur.

 L’outil utilisé sous Linux est nommé gdb(Gnu Debugger); cet


utilitaire fonctionne en ligne de commande, avec une interface assez
rébarbative.

 Un autre débogueur est disponible sous Linux, nommé ddd(Data


Display Debbuger), plus agréable visuellement.
 Installation
sudo apt-get install gdb

sudo apt-get install ddd . . . . . . . . . . . . . . . . . . . .


. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 38 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

1 Chapitre I: Concepts de Base et Outils

2 Chapitre II: Le Langage C

3 Chapitre III: Les Systèmes de Gestion de Fichiers

4 Chapitre IV : Les Processus

5 Chapitre V : Communication Inter-Processus

6 Chapitre VI : Communication Réseaux: les Sockets

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 39 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Objectifs

 Maîtriser le langage C;

 Savoir s’adresser au système d’exploitation depuis un programme

 Beaucoup de Pratique

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 40 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Programmer

Il faut savoir comment l’ordinateur fonctionne; Et avoir les qualités


suivantes:
 La patience : un programme ne marche jamais du premier coup, il
faut savoir persévérer !

 Le sens de la logique : pas besoin d’être forts en maths certes,


mais ça ne vous empêchera pas d’avoir à réfléchir.

 Le calme : non, on ne tape pas sur son ordinateur avec un marteau.


Ce n’est pas ça qui fera marcher votre programme.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 41 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Hello Word

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 42 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Explication
 Les #include<stdio.h> indiquent que le programme a besoin des
outils stdio.;
 Pour afficher un message dans le terminal, on utilise la fonction
printf("message");

 Le premier paramètre est un entier, qui représente le nombre de


paramètres;
 Le deuxième est un tableau de chaine de caractères (le premier
élément pointe toujours sur la chaine donnant le nom du
programme. Les autres éléments pointent sur les paramètres de la
ligne de commande)[int main(int n, char *params[])]
 parems[0]=nom de la fonction, parems[i]= paramètre i passé en
ligne de commande
 Le return EXIT_SUCCESS; à la fin du main. permet . . . . . . de. . spécifier
. . . . . . le
. . . . .
. . . . . . . . . . . . . . . . . . . .
code retour
Berlin DJIONANG
du programme
Programmation Système September 29, 2023 43 / 69
Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Séquence d’échappement

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 44 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Type
Les types disponibles:
 pour les entiers :int, short, long, long long
 pour les flottants :float, double
 pour les caractères :char
Déclaration
 int var1;
 int var2, var3, var4;
 int var5 = 42;
NB: Pour les entiers : possibilité de préfixer le type par unsigned. Les
variables sont alors non-signées (ie. positives). La taille d’une variable
entière (ie. le nombre de bits/octets) dépend de l’implémentation. Le
standard C ne spécifie que la taille minimum. Ainsi, un int doit faire au
moins 16 bits, alors que la plupart des implémentations modernes
utilisent 32 bits pour les int. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 45 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Affichage/lecture

 Pour afficher :printf("%d exemple de %f format ", v1, v2);

 Pour lire :scanf("%d%f", &v1, &v2);

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 46 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Opérateurs
Les opérateurs disponibles:
 arithmétique :+, -, *, /, %
 affectation :=, +=, -=, *=, /=, %=
 incrémentation/décrémentation : ++, –
 comparaison :<, <=, >, >=, ==, !=
 logique : !, &&, ||
Aussi
 sizeof qui donne le nombre d’octets qui constitue une variable/un
type
Les opérateurs bit à bit:
 Opération sur les bits d’une variable décalage :«,»
 OR :|, AND :&, XOR : , NOT :
 affectation :«=, »=, |=, &=, =,
ˆ = . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 47 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Opérateurs

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 48 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Structures

 for(i=0; i<n; i++) { ... }

 while (cond) {..}

 do { ...; } while(cond);

 if (cond) { ... } else { ... }

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 49 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Exercice 1

Les habitants de Yaoundé 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 C demandera donc l’âge et le sexe du Yaoundéens, et se
prononcera donc ensuite sur le fait que l’habitant est imposable.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 50 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Travaux Dirigés
1 Ecrire un programme qui demande un nombre de départ, et qui
calcule la somme des entiers jusqu’à ce nombre
2 Ecrire un programme qui demande un nombre de départ, et qui
calcule sa factorielle.
3 On désire emballer N ufs dans NB boites de 12. Déterminer sans
effectuer de division de nombre NB ainsi que le nombre NR des ufs
restants (on simulera la division en effectuant des soustractions
successives)
4 Ecrire un algorithme qui calcule la somme des entiers saisis par
l’utilisateur jusqu’à ce qu’il saisisse -1 (qui ne doit pas être pris en
compte dans la somme)
5 Ecrire un algorithme permettant à l’utilisateur de saisir un entier n
puis calcule la somme des entiers saisis par l’utilisateur jusqu’à ce
qu’il saisisse -1 ou qu’il ait saisi n entiers.
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 51 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Travaux Pratique
Faire une mini calculatrice en C permettant d’effectuer les opérations
suivantes:
 Addition
 soustraction
 division
 multiplication
 modulo
 puissance
 racine carré
 pgcd
 ppcm
 ...etc
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 52 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Déclaration

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 53 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Type composé

Jusqu’à maintenant, vous avez vu les types primitifs


 char, short, int, long(signés par défaut, non signés si préfixés de
unsigned)
 float(4 octets), double(8 octets)
Dans cette partie, nous apprenons à définir de nouveaux types de
données
 Une structure est constituée de sous-types hétérogènes
 Un tableau est constitué de sous-types homogènes

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 54 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Déclaration

Une structure est une définition dun nouveau type de données


 composé de sous-types nommés (primitifs ou composés)
 possédant un nom
 les sous-types d’une structure s’appellent des champs

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 55 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Usage

Une structure peut aussi être composée à partir d’une autre structure,
comme dans cet exemple:

Une structure ne peut pas être composé à partir d’elle même.

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 56 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Déclaration d’une variable de type structure

Une déclaration d’une variable de type structure se fait comme avec un


type primitif :
 struct nombre_complexe z1, z2, z3;
On peut aussi initialiser les champs de la structure lors de la déclaration :

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 57 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Accès aux champs

L’accès aux champs d’une variable de type structure se fait en donnant le


nom de la variable, suivi dun point, suivi du nom du champs :

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 58 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Déclaration Tableaux

 Un tableau est un type de données composé de sous-types


homogènes
 Les éléments d’un tableau peuvent être de n’importe quel type
(primitif, structure, mais aussi tableau)
 Pour déclarer un tableau :

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 59 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Accès Tableau

 L’accès à l’élément n du tableau tab se fait avec tab[n]


 Un tableau est indexé à partir de zéro (éléments vont de 0 à N - 1)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 60 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Tableau et Structure

 On peut mixer les tableaux et les structures, par exemple :

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 61 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Initialisation

 On peut composer des initialisations de tableaux et de structures :

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 62 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Tableaux et Chaine

 Une chaîne de caractère est simplement un tableau de caractères


terminé par le caractère ” (cest à dire le nombre zéro)

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 63 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

Passage par Valeur et par Référence

En C, il existe deux types de passage d’arguments :


 Passage par valeur : l’argument est copiée de l’appelé vers

l’appelant
l’argument et sa copie sont deux variables différentes
 Passage par référence : une référence vers l’argument de
l’appelant est donné à l’appelé
l’appelant et l’appelé partagent la même donnée
Par défaut :
 Les tableaux sont passés par référence Un argument de type
tableau est déclaré avec type nom[], sans la taille
 Les autres types sont passés par copie

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 64 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

passage par valeur type primitif

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 65 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

passage par valeur structure

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 66 / 69


Chapitre I: Concepts de Base et Outils Premier programme
Chapitre II: Le Langage C Déclaration des variables
Chapitre III: Les Systèmes de Gestion de Fichiers Les Opérateurs et Expressions
Chapitre IV : Les Processus Structures Algorithmique
Chapitre V : Communication Inter-Processus Fonctions
Chapitre VI : Communication Réseaux: les Sockets Les Structures et les Tableaux

passage par référence tableau

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 67 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C
Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

1 Chapitre I: Concepts de Base et Outils

2 Chapitre II: Le Langage C

3 Chapitre III: Les Systèmes de Gestion de Fichiers

4 Chapitre IV : Les Processus

5 Chapitre V : Communication Inter-Processus

6 Chapitre VI : Communication Réseaux: les Sockets

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 68 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C
Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

1 Chapitre I: Concepts de Base et Outils

2 Chapitre II: Le Langage C

3 Chapitre III: Les Systèmes de Gestion de Fichiers

4 Chapitre IV : Les Processus

5 Chapitre V : Communication Inter-Processus

6 Chapitre VI : Communication Réseaux: les Sockets

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 69 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C
Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

1 Chapitre I: Concepts de Base et Outils

2 Chapitre II: Le Langage C

3 Chapitre III: Les Systèmes de Gestion de Fichiers

4 Chapitre IV : Les Processus

5 Chapitre V : Communication Inter-Processus

6 Chapitre VI : Communication Réseaux: les Sockets

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 70 / 69


Chapitre I: Concepts de Base et Outils
Chapitre II: Le Langage C
Chapitre III: Les Systèmes de Gestion de Fichiers
Chapitre IV : Les Processus
Chapitre V : Communication Inter-Processus
Chapitre VI : Communication Réseaux: les Sockets

1 Chapitre I: Concepts de Base et Outils

2 Chapitre II: Le Langage C

3 Chapitre III: Les Systèmes de Gestion de Fichiers

4 Chapitre IV : Les Processus

5 Chapitre V : Communication Inter-Processus

6 Chapitre VI : Communication Réseaux: les Sockets

. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .

Berlin DJIONANG Programmation Système September 29, 2023 71 / 69

Vous aimerez peut-être aussi