Vous êtes sur la page 1sur 28

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail


DIRECTION RECHERCHE ET INGENIERIE DE FORMATION
SECTEUR NTIC

OFPPT

SECTEUR NTIC
Filières : TDI / TDM / TRI
Niveau Technicien spécialisé

Manuel de TP
Module8 : Langage de Programmation Structurée
Conception et rédaction

NOM et PRENOM AFFECTATION

EL KANDOUSSI Ouafae ISMOTICA - Fès

Liste de matière d’œuvre et outillage :

Matière d’œuvre Quantité


Poste informatique 15
Imprimante 1
Compilateur C ou C++ 15

Nous tenons à remercier les formateurs concepteurs des Manuels


de TP et nous invitons les utilisateurs de ce manuel à
communiquer au CDC TIC (cdc-tic@ofppt.ma) toutes les
remarques et suggestions afin de les prendre en considération
pour l’enrichissement et l’amélioration de ce document.
OFPPT
CDC TIC

MODULE 08: LANGAGE DE PROGRAMMATION STRUCTURÉE


Code : TDI-08 Durée : 120 h

PRECISIONS SUR LE COMPORTEMENT CRITERES PARTICULIERS DE


ATTENDU PERFORMANCE

A. Traduire les instructions de base de  Présentation de la structure du


l'algorithme à l'aide d'un environnement de programme.
développement procédural.  Choix et déclaration des variables.
 Syntaxe des instructions de base
d’algorithme en langage de
programmation.
 Écriture du code de l’application.

B. Traduire les structures complexes.  Déclaration des tableaux.


 Déclaration des enregistrements.
 Syntaxe de manipulation des tableaux.
 Syntaxe de manipulation des
enregistrements.
 Écriture du code.

C. Optimiser le programme.  Déclaration des fonctions et des


procédures.
 Appel des fonctions et procédures.
 Passage des paramètres par valeurs et
par adresse.
 Écriture du code.

D. Manipuler les fichiers de données.  Types de fichiers de données.


 Déclaration des fichiers.
 Syntaxe d'utilisation des fichiers.
 Ouverture en lecture, en écriture, …
 Écriture du code.

 Compilation et correction des erreurs de


E. Tester et documenter le programme. syntaxe.
 Outils de débogage.
 Exécution du programme.
 Procédure de génération des
F. Générer des disquettes d’installation. exécutables.
 Rédaction d’un manuel d’installation.

3
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Activité d’apprentissage 1
Module TDI-08 Langage de programmation structurée

Traduire les instructions de base de


Précision A l'algorithme à l'aide d'un environnement de
développement procédural.

Code Activité A001

Réaliser un programme simple pour se familiariser


Activité
avec l’environnement de développement

Durée 1H

Phase d’apprentissage BASE

Cette activité d’apprentissage doit vous permettre


de :
 Installer les outils nécessaires et mettre en
Détails sur les objectifs place l’environnement de développement
visés par l’activité  Utiliser un IDE pour le développement
d’applications
 Compiler et lancer le premier programme
en C

Micro-Ordinateur
Logiciel de programmation procédurale Dev C++/
Matière d’œuvre et/ou
CodeBlocks
outillage

4
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Description de l’activité

Installez l’environnement de développement en sélectionnant parmi les deux


logiciels proposés.

Lancer l’environnement de développement et créer un projet C/C++ dans un


dossier d’enregistrement.

Écrire le code suivant :

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Hello world!\n");
return 0;
}

Lancer l’exécution de votre programme à l’aide du menu Build (CodeBlocks)

Observer et commenter le résultat.

5
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Activité d’apprentissage 2
Module TDI 08 Langage de programmation structurée

Traduire les instructions de base de


Précision A l'algorithme à l'aide d'un environnement de
développement procédural.

Code Activité A002

Réaliser l’analyse et la construction logique d’un


Activité
programme
Durée
2H
Phase Base
d’apprentissage
Cette activité d’apprentissage doit vous permettre de :
 Analyser les besoins et préciser objectif
attendu du programme.
Détails sur les  Optimiser les traitements et les fonctionnalités
objectifs visés par
d’un programme
l’activité
 Déterminer un jeu d’essai judicieux pour
vérifier le bon fonctionnement du programme
 Présenter la logique du programme sous la
forme d’une représentation hiérarchique

Matière d’œuvre Micro-Ordinateur


et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

6
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Description de l’activité

Exercice 1 :

Evaluer les expressions suivantes en supposant


a=20 b=5 c=-10 d=2 x=12 y=15
Notez chaque fois la valeur rendue comme résultat de l'expression et les
valeurs des variables dont le contenu a changé.
(1) (5*X)+2*((3*B)+4)
(2) (5*(X+2)*3)*(B+4)
(3) A == (B=5)
(4) A += (X+5)
(5) A != (C *= (-D))
(6) A *= C+(X-D)
(7) A %= D++
(8) A %= ++D
(9) (X++)*(A+C)
(10) A = X*(B<C)+Y*!(B<C)
(11) !(X-D+C)||D
(12) A&&B||!0&&C&&!D
(13) ((A&&B)||(!0&&C))&&!D
(14) ((A&&B)||!0)&&(C&&(!D))

Exercice 2 :

#include <stdio.h>
main()
{
int N=10, P=5, Q=10, R;
char C='S';

N = 5; P = 2;
Q = N++ > P || P++ != 3;
printf ("C : N=%d P=%d Q=%d\n", N, P, Q);

N = 5; P = 2;
Q = N++ < P || P++ != 3;
printf ("D : N=%d P=%d Q=%d\n", N, P, Q);

N = 5; P = 2;
Q = ++N == 3 && ++P == 3;
printf ("E : N=%d P=%d Q=%d\n", N, P, Q);

N=5; P=2;
Q = ++N == 6 && ++P == 3;
printf ("F : N=%d P=%d Q=%d\n", N, P, Q);

N=C;
printf ("G : %c %c\n", C, N);
printf ("H : %d %d\n", C, N);
printf ("I : %x %x\n", C, N);
return 0;
}

a) Sans utiliser l'ordinateur, trouvez et notez les résultats du programme ci-


dessus.
b) Vérifiez vos résultats à l'aide de l'ordinateur.

7
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Activité d’apprentissage 3
Module TDI 08 Langage de programmation structurée

Traduire les instructions de base de


Précision A l'algorithme à l'aide d'un environnement de
développement procédural.

Code Activité A003

Mettre en œuvre les instructions de base d’un langage


Activité
informatique
Durée
4H
Phase Base
d’apprentissage
Cette activité d’apprentissage doit vous permettre de :
 Déterminer les instructions et la logique d’un
Détails sur les programme simple à l’aide du langage utilisé.
objectifs visés par  Exprimer correctement des conditions simples
l’activité  Exprimer correctement des conditions
complexes imbriquées

Matière d’œuvre Micro-Ordinateur


et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

DESCRIPTION DE L’ACTIVITÉ

8
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Exercice 1 :

Implémenter un algorithme qui permet d’effectuer l’addition, la division, la


soustraction, la multiplication et la moyenne de deux variables de type entier.

Exercice 2 :

Écrire un programme qui demande à l'utilisateur de taper la largeur et la longueur


d'un champ et qui en affiche le périmètre et la surface.

Exercice 3:

Ecrire un programme qui affiche le quotient et le reste de la division entière de


deux nombres entiers entrés au clavier ainsi que le quotient rationnel de ces
nombres.

Exercice 4 :

Écrire un programme qui demande à l'utilisateur de taper le prix HT d'un produit,


le nombre d’unités achetées, le taux de TVA (Exemple 10%,20%,...). Le
programme affiche alors le prix TTC des marchandises.

Exercice 5 :

Écrire un programme qui permet de calculer le montant de la facture en


électricité d’un abonné sachant que :
Chaque abonné paye sa consommation selon un tarif à tranche :

0.8 Dh pour les 80 premier Kwh


1.5 Dh pour les 120 Kwh suivants
2 Dh pour les Kwh qui restent

Le taux de TVA est de 20% du montant de consommation

9
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Activité d’apprentissage 4
Module TDI 08 Langage de programmation structurée

Traduire les instructions de base de


Précision A l'algorithme à l'aide d'un environnement de
développement procédural.

Code Activité A004

Réaliser l’analyse et la construction logique d’un


Activité
programme
Durée
2H
Phase Entrainement
d’apprentissage
Cette activité d’apprentissage doit vous permettre de :
 Analyser les besoins et préciser objectif
attendu du programme.
Détails sur les  Optimiser les traitements et les fonctionnalités
objectifs visés par
d’un programme
l’activité
 Déterminer un jeu d’essai judicieux pour
vérifier le bon fonctionnement du programme
 Présenter la logique du programme sous la
forme d’une représentation hiérarchique

Matière d’œuvre Micro-Ordinateur


et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

DESCRIPTION DE L’ACTIVITÉ

10
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Exercice 1:
Le responsable de la paie, Monsieur Abidi, souhaite connaître le montant net du salaire
des employés de la société « InfoBass ». Le salaire net est calculé selon la formule
suivante :
Activité d’apprentissage 5
Salaire net = salaire + IR + prime
Module La prime
TDI est
08de 500.00 Dh pourde
Langage lesprogrammation
employés et de 1000.00 Dh pour les
structurée
commerciaux
Précision L’IR B
est calculé selon le barème suivant :
Traduire les structures complexes.

Code Activité B001

Activité Manipuler des données complexes. Initiation à la


manipulation de tableaux.

Durée
4H
Phase Base
d’apprentissage Méthode de calcul : IR =( salaire * Taux) – Somme à déduire
Détails sur les
Cette activité d’apprentissage doit vous permettre de :
objectifs visés
Dans par
un premier temps, le programme ne traite que d’un salarié à la fois
l’activité  Manipuler des données complexes sous la
Travail à réaliser : forme de tableaux.
Déterminer :

- L’objectif
- Les données en entrée
- Les données en sortie
Matière d’œuvre - Les traitements à appliquer sur les données en entrée pour obtenir le résultat
et/ou outillage
Réaliser le programme. Les données en entrée sont acquises dans le cadre d’un
dialogue utilisateur
Micro-Ordinateur
Exercice 2: Logiciel de programmation procédurale Dev C++/
CodeBlocks
Sur la base de l’exercice précédent.

Monsieur Abidi souhaite ne plus être obligé de lancer le programme pour chaque salarié.
Il indique qu’en général, le calcul se fait en fin de mois pour l’ensemble des salariés qui
sont en somme 20 salariés. Sachant que Monsieur Abidi souhaite connaître le total des
primes attribués chaque mois, il vous est demandé de déterminer :

- Les objectifs complémentaires


- Les données en entrée supplémentaires
- Les données en sortie supplémentaires
- Les nouveaux traitements à mettre en œuvre

11
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

DESCRIPTION DE L’ACTIVITÉ

Exercice 1 :

Écrire un programme qui permet de saisir N entiers ( N défini par


l’utilisateur), les stocke dans un tableau T et les affiche sur l’écran
séparé par des tabulations.

Exercice 2 :

Compléter l’exercice précédent en ajoutant l’affichage du maximum,


du minimum et de la valeur moyenne de ces nombres.

Exercice 3 :

Ecrire un programme qui lit la dimension N d'un tableau T du


type int (dimension maximale: 50 composantes), remplit le tableau
par des valeurs entrées au clavier et affiche le tableau.
Copiez ensuite toutes les composantes strictement positives dans un
deuxième tableau TPOS et toutes les valeurs strictement négatives
dans un troisième tableau TNEG. Afficher les tableaux TPOS et TNEG.

Exercice 4 :

Ecrire un programme qui lit la dimension N d'un tableau T du


type int (dimension maximale: 50 composantes), remplit le tableau
par des valeurs entrées au clavier et affiche le tableau.
Effacer ensuite toutes les occurrences de la valeur 0 dans le tableau T
et tasser les éléments restants. Afficher le tableau résultant.

Exercice 5 :
12
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Ecrire un programme qui lit la dimension N d'un tableau T du


type int (dimension maximale: 50 composantes), remplit le tableau
par des valeurs entrées au clavier et affiche le tableau.
Ranger Activité d’apprentissage
ensuite les éléments du tableau T6dans l'ordre inverse sans
utiliser de tableau d'aide. Afficher le tableau résultant.
Module TDI 08 Langage de programmation structurée
Idée: Echanger les éléments du tableau à l'aide de deux indices qui
parcourent le tableau en commençant respectivement au début et à la
Précision fin duBtableau et qui se rencontrent en son milieu.
Traduire les structures complexes.

Code Activité B002

Activité Manipuler des chaînes de caractères

Durée
3H
Phase Base
d’apprentissage
Cette activité d’apprentissage doit vous permettre de :
 Manipuler des données complexes sous la
Détails sur les forme de tableaux de caractères.
objectifs visés par
l’activité

Matière d’œuvre Micro-Ordinateur


et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

DESCRIPTION DE L’ACTIVITÉ

Exercice 1 :

Soit une chaîne de caractères terminée par le caractère « . »


Donnez l'algorithme du programme qui compte le nombre occurrences
d'une lettre donnée dans cette chaîne.

Vous devez faire en sorte que votre programme fonctionne pour une
phrase et une lettre quelconques fournies par l’utilisateur

La longueur maximale de la phrase est 100


13
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

La phrase (chaîne de caractères) doit nécessairement se terminer par


le caractère « . »
Le jeu de caractères
Activité n’est pas accentué. 7
d’apprentissage
Module Fournissez
TDI un
08 jeu d’essai qui de
Langage permet de tester lestructurée
programmation bon fonctionnement
du programme.

Précision B2 :
Exercice Traduire les structures complexes.

Code Activité Soit une phrase terminée par un point.


B003
Il s'agit de la restituer en supprimant les occurrences d'un caractère
Activité donné. Créer des algorithmes complexes manipulant des valeurs
Exemple indicées.
: phraseTri: de valeurs
abbcccdeeeffg
Durée caractère : c
4H résultat : abbdeeeffg
Phase
DonnezEntrainement
d’apprentissage le jeu d'essai qui permet de tester le fonctionnement de votre
programme.
Cette activité d’apprentissage doit vous permettre de :
Exercice 3 :  Manipuler des données complexes sous la
Détails sur les forme de tableaux.
objectifs visésRecopier
par une phrase dans une autre en ôtant tous les doublons de
 Mettre au point des algorithmes complexes
l’activité caractères successifs
Soit une phrase terminée par un point.
Il s'agit de la restituer en supprimant tous les doublons de caractères
successifs.
Exemple : abbcccdeeeffg. donne abcdefg.

Donnez le jeu d'essai qui permet de tester le fonctionnement de votre


programme.
Matière d’œuvre Micro-Ordinateur
et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

14
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

DESCRIPTION DE L’ACTIVITÉ

Exercice 1 : tri par sélection

Vous devez trier un tableau de 10 entiers dont les valeurs vous sont fournies. On vous
demande de respecter scrupuleusement le processus de tri suivant, qualifié de tri par sélection.
Vous devez chercher le plus petit élément du tableau et le placer en 1er, puis rechercher le plus
petit parmi les valeurs non triées et le placer en second , etc...

Valeurs initiales sont chargées en début de programme :


52 10 1 25 62 3 8 55 3 23
Vous ne devez utiliser que ce seul tableau.

Exemples de résultats de la progression :

1 52 10 25 62 3 8 55 3 23
1 3 52 10 25 62 8 55 3 23
1 3 3 52 10 25 62 8 55 23
1 3 3 8 52 10 25 62 55 23
1 3 3 8 10 52 25 62 55 23
1 3 3 8 10 23 52 25 62 55
1 3 3 8 10 23 25 52 62 55
1 3 3 8 10 23 25 52 62 55
1 3 3 8 10 23 25 52 55 62

Exercice 2 : tri à bulles

On vous demande cette fois de trier les éléments selon le principe du tri bulle.
Le tri bulle est un tri plus astucieux et consiste à faire remonter petit à petit un élément trop grand vers le
haut du tableau en comparant les éléments deux à deux.
Si l'élément de gauche est supérieur à son voisin de droite, ils sont inversés et le programme poursuit
avec le suivant. Lorsque le programme atteint la fin du tableau, le traitement prend au début. Le
programme s'arrête lorsque tous les éléments sont bien placés.

Liste initiale :

52 10 1 25 62 3 8 55 3 23

Exemples de résultats de la progression :

10 52 1 25 62 3 8 55 3 23
10 1 52 25 62 3 8 55 3 23
10 1 25 52 62 3 8 55 3 23
10 1 25 52 62 3 8 55 3 23
10 1 25 52 3 62 8 55 3 23
10 1 25 52 3 8 62 55 3 23

15
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

10 1 25 52 3 8 55 62 3 23
10 1 25 52 3 8 55 3 62 23
10 1 25 52 3 8 55 3 23 62

L’ensemble du tableau a été parcouru. Le programme recommence jusqu'à ce que tous les éléments
soient bien triés.
Là encore, vous ne devez travailler qu’avec ce seul tableau.

Exercice 3 : tri par insertion

Soit l’algorithme suivant :

début
pour i de2 jusquà n faire// la partie non encore triée (ai, ai+1, ... , an)
v ← Tab[ i ] ; // l'élément frontière : ai
j ← i ; // le rang de l'élément frontière
Tantque Tab[ j-1 ]> v faire//on travaille sur la partie déjà triée (a1, a2, ... , ai)
Tab[ j ] ←Tab[ j-1 ]; // on décale l'élément
j ← j-1; // on passe au rang précédent
FinTant ;
Tab[ j ] ← v //on recopie ai dans la place libérée
fpour
Fin Tri_Insertion

 Expliquer à travers un jeu d’essai l’algorithme ci-dessus.


 Implémenter l’algorithme ci-dessus.

16
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Activité d’apprentissage 8
Module TDI 08 Langage de programmation structurée

Précision B
Traduire les structures complexes.

Code Activité B004

Activité Manipuler les chaînes de caractères

Durée
4H
Phase Entrainement
d’apprentissage
Cette activitéD
d’apprentissage
ESCRIPTION DE doitLvous permettre de :
’ACTIVITÉ
 Manipuler des données complexes sous la
Exercice
Détails sur les 1 : forme de tableaux de caractères.
objectifs visés par
l’activité Soit deux phrases terminées par un terminateur.
Elles sont dites équivalentes si elles ont les mêmes lettres dans le même
ordre mais avec un nombre d’occurrences
Écrire le programme qui lit deux phrases et détermine s’elles sont
Équivalentes. Exemple : abbcccdeeeffg
aabcdefffgg sont équivalentes
Exercice 2 :

Crypter Micro-Ordinateur
Matière d’œuvre une phrase en codant les lettres en fonction du mot où elles se
et/ou outillage
trouvent. Logiciel de programmation procédurale Dev C++/
Soit uneCodeBlocks
phrase terminée par un point.
Les espaces sont des séparateurs de mot et sont transcrits sans
modification.
Il s'agit de la crypter en codant chaque mot suivant son rang dans la
phrase.
Au mot de rang 1, on crypte ses lettres avec les lettres qui suivent dans
l'alphabet. Au mot de rang 2, on crypte ses lettres avec les lettres qui
suivent de 2 caractères dans l'alphabet. etc ...
Par convention, la lettre suivant le caractère Z est le caractère A.
Les espaces sont des séparateurs de mot et sont transcrits sans
modification.

Exemple :
Phrase : LE CHAT EST GRIS .
Rang : 1 2 3 4
Résultat : MF EJCV HVW KVMW.

Écrire un programme qui permet d’implémenter ce concept de cryptage.

17
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Exercice 3:
Activité d’apprentissage 9
Un palindrome est une chaîne de caractères qui lue de gauche à droite ou de
Module droite à TDI
gauche
09 donne le même
Langage derésultat.
programmation structurée

Exemple : Les mots suivants sont des palindromes : laval, kayak, radar, …
Précision C
Optimiser le programme.
Si on exclut les espaces, la phrase suivante est un palindrome :
Code Activitéleon a raté
C001césar à noel
Elu par cette crapule.
Optimiser le code par factorisation en fonctions et
Activité
Écrire unprocédures.
programme qui lit une chaîne de caractères, la stocke dans un
Durée tableau de 80 caractères et indique s’il s’agit ou non d’un palindrome.
3H
Phase Base
d’apprentissage
Cette activité d’apprentissage doit vous permettre de :
 Optimiser le code d’un programme en ayant
Détails sur les recours aux fonctions et procédures.
objectifs visés par
l’activité

Matière d’œuvre Micro-Ordinateur


et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

18
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

DESCRIPTION DE L’ACTIVITÉ
Exercice 1 :

Écrire une fonction qui permet de calculer le produit de deux entiers A et B.

Exercice 2 :

Écrire la fonction qui calcul le factoriel d’un nombre entier positif.

Exercice 3 :

Soient les fonctions main, PI et SURFACE


définies par:
#include <stdio.h>

main()
{
double R;
printf("Introduire le rayon du cercle : ");
scanf("%lf", &R);
printf("La surface du cercle est %f. \n", SURFACE(R));
return 0;
}

double PI(void)
{
return 3.14159265;
}

double SURFACE(double RAYON)


{
return PI()*RAYON*RAYON;
}

1. Etablir la hiérarchie des appels pour les trois fonctions.


2. Définir les fonctions d'après les trois méthodes décrites ci-dessus en
ajoutant les déclarations manquantes.
3. Quels messages fournit le compilateur lorsqu'une fonction n'est pas
définie ou déclarée avant son appel? Comment peut-on expliquer ces
messages?

Exercice 4:

Écrire une fonction qui permet de calculer la puissance n-ième d’un nombre
positif p (n>=0).

19
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Activité d’apprentissage 10
Module TDI 10 Langage de programmation structurée

Précision C
Optimiser le programme.

Code Activité C002

Optimiser le code par factorisation en fonctions et


Activité
procédures.
Durée
3H
Phase Entrainement
d’apprentissage
Cette activité d’apprentissage doit vous permettre de :
 Optimiser le code d’un programme en ayant
Détails sur les recours aux fonctions et procédures.
objectifs visés par
l’activité

Matière d’œuvre Micro-Ordinateur


et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

20
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

DESCRIPTION DE L’ACTIVITÉ
Exercice 1 :

Ecrire un programme se servant d'une fonction F pour afficher la table de


valeurs de la fonction définie par

f(x) = sin(x) + ln(x) -

où x est un entier compris entre 1 et 10.

Exercice 2 :

Ecrire deux fonctions qui calculent la valeur XN pour une valeur réelle X
(type double) et une valeur entière positive N (type int) :
a) EXP1 retourne la valeur XN comme résultat.
b) EXP2 affecte la valeur XN à X.
Ecrire un programme qui teste les deux fonctions à l'aide de valeurs lues au
clavier.

Exercice 3 :

Ecrire un programme qui définit et utilise :


1. une fonction fact(n) qui renvoie la factorielle du nombre n.
2. une fonction affiche_fact(n) qui ne renvoie rien et affiche la factorielle
du nombre n.
3. une fonction comb (int n , int p) qui renvoie le nombre de
combinaisons de p éléments parmi n
4. une fonction estDivisible( a, b) qui renvoie 1 si a est divisible par b
5. une fonction estPremier(n) qui renvoie 1 si a est premier

Rappels :
factorielle(n) = n ! = n (n-1) (n-2) ...1.
un nombre entier n est dit "premier" s'il n'existe aucun entier d dans
l'intervalle [2,n ?1] tel que n soit divisible par d.

Remarque: L'algorithme a été développé par D.L.Shell en 1959. En


comparant d'abord des éléments très éloignés, l'algorithme a tendance à
éliminer rapidement les grandes perturbations dans l'ordre des éléments. La
distance entre les éléments qui sont comparés est peu à peu réduite jusqu'à
1. A la fin du tri, les éléments voisins sont arrangés.

21
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Exercice 4:
Traduire la fonction TRI_SHELL définie ci-dessous en C. Utiliser la
fonction PERMUTER définie dans le cours.
Ecrire un programme profitant des fonctions définies dans les
exercices précédents pour tester la fonction TRI_SHELL.
procédure TRI_SHELL(T,N)
| (* Trie un tableau T d'ordre N par la méthode
| de Shell en ordre croissant. *)
| résultat: entier tableau T[100]
| donnée: entier N
| entier SAUT, M, K
| booléen TERMINE
| en SAUT ranger N
| tant que (SAUT>1) faire
| | en SAUT ranger SAUT divent 2
| | répéter
| | | en TERMINE ranger vrai
| | | pour M variant de 1 à N-SAUT faire
| | | | en K ranger M+SAUT
| | | | si (T[M]>T[K]) alors
| | | | | PERMUTER(T[M],T[K])
| | | | | en TERMINE ranger faux
| | | | fsi
| | | fpour
| | jusqu'à TERMINE
| ftant (* SAUT <= 1 *)
fprocédure (* fin TRI_SHELL *)

22
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Activité d’apprentissage 11
Module TDI 11 Langage de programmation structurée

Précision D
Manipuler les fichiers de données.

Code Activité D001

Optimiser le code par factorisation en fonctions et


Activité
procédures.
Durée
6H
Phase Entrainement
d’apprentissage
Cette activité d’apprentissage doit vous permettre de :
 De mettre en œuvre les opérations de base de
Détails sur les manipulation de fichiers texte
objectifs visés par
l’activité

Matière d’œuvre Micro-Ordinateur


et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

23
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

DESCRIPTION DE L’ACTIVITÉ
Exercice 1:

Créer sur clé puis afficher à l'écran le fichier INFORM.TXT dont les
informations sont structurées de la manière suivante:
Numéro de matricule (entier)
Nom (chaîne de caractères)
Prénom (chaîne de caractères)
Le nombre d'enregistrements à créer est à entrer au clavier par
l'utilisateur.

Exercice 2:

Ecrire un programme qui crée sur clé un fichier INFBIS.TXT qui est la
copie exacte (enregistrement par enregistrement) du fichier
INFORM.TXT.

Exercice 3:

Supprimer dans INFORM.TXT tous les enregistrements:


a) dont le numéro de matricule se termine par 8
b) dont le prénom est "Ahmed" (utiliser strcmp)
c) dont le nom est un palindrome. Définir une fonction d'aide PALI qui
fournit le résultat 1 si la chaîne transmise comme paramètre est un
palindrome, sinon la valeur zéro.
Sauver le nouveau fichier à chaque fois sous le nom INFBIS.TXT.

24
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Activité d’apprentissage 12
Module TDI 12 Langage de programmation structurée

Précision D
Manipuler les fichiers de données.

Code Activité D002

Optimiser le code par factorisation en fonctions et


Activité
procédures.
Durée
4H
Phase Entrainement
d’apprentissage
Cette activité d’apprentissage doit vous permettre de :
 De mettre en œuvre les opérations de base de
Détails sur les manipulation de fichiers texte
objectifs visés par  De manipuler des flux d’octets
l’activité
DESCRIPTION DE L’ACTIVITÉ
Exercice 1:

On souhaite gérer les consultations d’un cabinet médical.

Structure du fichier patient :


Matière d’œuvre Micro-Ordinateur
et/ou outillage  N°patient,
Logiciel Nom, prénom, adresse,
de programmation âge,Dev
procédurale dateC++/
1ere consultation
 EX : 12,
CodeBlocksalaoui, driss, 19 rue fassi Rabat, 29,24-01-2007

Travail demandé :

 Réaliser la procédure qui permet de créer un fichier texte


contenant les patients; la procédure doit permettre à l’utilisateur
de spécifier le chemin, le nom, et l’extension du fichier à créer.
 Créer la procédure qui permet de saisir les informations d’un
nouveau patient en contrôlant la saisie des champs vides et
exécuter le même traitement d’ajout autant de fois que
l’utilisateur le souhaite.
 Effectuer la procédure de consultation d’un patient donné.
 Effectuer la procédure de consultation de la liste des patients
dont l’âge est entre 20 et 30 ans.

 Modifier la date de la première consultation du patient


« Alaoui ».
Créer la procédure de suppression de tous les patients dont le numéro
25
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

commence par « 5 ».

Exercice 2:
CréezActivité d’apprentissage
un programme permettant de 13 gérer les utilisateurs d'une
application. Ces informations seront stockées par défaut dans le
Module TDI 13 Langage de programmation structurée
répertoire racine de l'application au sein d'un fichier Utilisateurs.dat.

Précision Les informations


Toutes décrivant
Activité un
de utilisateur
synthèse sont :

Code Activité Un ID utilisateur :


 F002 IDUtilisateur String 25
 Un mot de Passe : MotPasse String 15
Activité
Le nom de
 Gestion l'utilisateur : NomUtilisateur
du stock
String 50

Durée Créez un premier programme permettant l’ajout d’un utilisateur. Ce


programme
8H met en œuvre les mécanismes de traitement des flux
Phase d’octets (BinaryWriter et Binary Reader).
Transfert
d’apprentissage
Créez un deuxième programme qui permet la lecture des
Cette activitéstockés
enregistrements d’apprentissage
dans doit
le vous
fichierpermettre de :
et l’affichage de
l’enregistrement
 sélectionné en fonction de l’IDUtilisateur.
Utiliser les instructions de base de
Détails sur les programmation
objectifs visés par  Gérer les fichiers
l’activité  Manipuler des tableaux
 Optimiser le code

Matière d’œuvre Micro-Ordinateur


et/ou outillage Logiciel de programmation procédurale Dev C++/
CodeBlocks

DESCRIPTION DE L’ACTIVITÉ
M. Gommetcrayon est responsable des services généraux. Son service possède un stock de
fournitures de bureau (papier, crayon...). Il approvisionne les différents services de la société, il
centralise et traite les demandes de fournitures des secrétaires de service.

26
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

M. Gommetcrayon est particulièrement attentif aux quantités demandées par les services. Il se
réserve le droit d'avoir un regard sur les demandes des services et de les refuser pour limiter la
consommation. Les miroirs, les limes à ongles et les fournitures de la rentrée scolaire sont
particulièrement surveillés. Chaque commande donne lieu à une vérification du budget alloué au
service. Si le budget autorisé est dépassé, ou s'il le devient dans une prochaine commande, le
responsable présente une requête de budget supplémentaire, afin d'obtenir une autorisation de
dépassement de budget.

Une commande de fournitures permet d'honorer les demandes des services et de réapprovisionner
le stock jusqu'à son maximum. Pour chaque commande, M. Gommetcrayon choisit ses
fournisseurs en fonction des conditions d'achat ou des tarifs proposés pour acheter aux meilleures
conditions (prix unitaire de la fourniture et remises).

Nous prenons le cas de trois fournitures, des gommes, des crayons et des téléphones. Les
principes de fonctionnement sont les suivants. Les demandes des services sont consolidées et
constituent les besoins bruts. Après déduction du stock existant, les besoins bruts deviennent des
besoins nets. Ensuite sont calculées les quantités à approvisionner par article en fonction du stock
d'alerte et du stock maximum. La quantité à commander tient compte de la taille du lot
d'approvisionnement du fournisseur retenu. La valeur du stock est calculée mensuellement par
article. Un fournisseur ne livre que partiellement sa commande.

Stock maximum

Réapprovisionnement
fournisseur

Don service

Stock d'alerte

Niveau de stock

temps

Stock d'alerte Stock maximal Stock au jour J


Gomme 5 50 17
Crayon 10 100 20
Téléphone 0 10 5

Nous représentons le par un fichier plat. Chaque ligne du fichier représente une livraison
fournisseur. Elle est sous la forme de type de fourniture et quantité séparés par une virgule.
Exemple : Fournisseur1, Gomme, 10
Fournisseur2, Telephone, 2
Fournisseur1, Gomme, 20
Fournisseur3 Gomme, 7 …

La consommation des fournitures est traitée par la création d’un nouveau fichier avec le nouveau
stock (nom du fichier est : stock_jjMMyyyy_HHmm). L’ancien stock est toujours gardé pour
historique.
Après consommation des fournitures du stock le nombre d’unité consommé est retranché d’une
ligne de notre fichier stock (si la quantité à consommer dépasse le nombre d’unités d’une ligne, la
ligne est supprimée et on retranche le reste d’une autre ligne)

27
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC

Les fournitures sont commandées par boîte : les Gommes sont commandées par boîte de 10, les
téléphones par unité et les crayons par boîte de 15.

Une commande est faite suite au calcul du besoin net comme indiqué. La quantité commandée
peut être inférieure à la quantité à approvisionner, car le nombre de boîtes commandées doit
donner un nombre de fournitures en stock inférieur au stock maximal. Par exemple, la commande
peut indiquer 40 gommes alors que la quantité à commander était de 48 gommes. Une boîte de
gommes en plus aurait fait dépasser la quantité stockable maximale.

Nous n’allons pas utiliser d’objets « fourniture » dans notre cas. Les seules informations qui
seront utilisées sont les quantités (par boîte).

Préparation de la commande

Les quantités sont émises par les services et consolidées. Nous vérifions avant l’émission de la
commande que :
- Les nombres d’unités commandés par type de fourniture + le stock existant ne dépasse
pas le stock maximum
- Les prix des fournisseurs pour cette commande ne dépassent pas le budget alloué

Approvisionnement du stock

Après réception de la livraison, le stock est approvisionné. La livraison est sous forme de tableau
à deux dimensions contenant à la fois le type et le nombre livré
Exemple : tableau = [[« Gomme »,50], [« Crayon », 60]]
Le fichier stock est alors alimenté par cette livraison

Statistiques

Pour renforcer notre service d’achat vis-à-vis des fournisseurs nous souhaitons faire des
statistiques pour déterminer les fournisseurs auprès desquels nous avons acheté le plus. Dans cette
étude de cas nous n’allons faire ce calcul que sur le stock en cours (pas d’historique)

Écrire le programme de gestion du stock. Ce programme fonctionne en mode console.


- Identifier les données en entrée et celles en sortie par opération
- Créer un fichier simulant le stock actuel
- Créer la classe qui consomme des quantités de produits du stock (après consommation
création d’un nouveau fichier. Il faut charger le fichier dans un tableau temporairement,
faire les traitements de consommation et créer un nouveau fichier « nouveau stock »)
- Créer la classe qui émet une commande avec validation des demandes
- Créer la classe de réapprovisionnement du stock
- Créer la classe qui identifie le fournisseur auprès duquel nous avons le plus acheté. Pour
cela, il faut créer un tableau de prix des fournitures par fournisseur.

Étudier la réutilisation du code réalisé. Pour optimiser le code découpez-le efficacement en


méthodes.

28
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée

Vous aimerez peut-être aussi