Académique Documents
Professionnel Documents
Culture Documents
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
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
Durée 1H
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é
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return 0;
}
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
6
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC
Description de l’activité
Exercice 1 :
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;
}
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
DESCRIPTION DE L’ACTIVITÉ
8
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC
Exercice 1 :
Exercice 2 :
Exercice 3:
Exercice 4 :
Exercice 5 :
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
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.
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 :
11
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC
DESCRIPTION DE L’ACTIVITÉ
Exercice 1 :
Exercice 2 :
Exercice 3 :
Exercice 4 :
Exercice 5 :
12
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC
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é
DESCRIPTION DE L’ACTIVITÉ
Exercice 1 :
Vous devez faire en sorte que votre programme fonctionne pour une
phrase et une lettre quelconques fournies par l’utilisateur
Précision B2 :
Exercice Traduire les structures complexes.
14
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC
DESCRIPTION DE L’ACTIVITÉ
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...
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
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
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.
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
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.
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.
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é
18
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC
DESCRIPTION DE L’ACTIVITÉ
Exercice 1 :
Exercice 2 :
Exercice 3 :
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;
}
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.
20
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée
OFPPT
CDC TIC
DESCRIPTION DE L’ACTIVITÉ
Exercice 1 :
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 :
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.
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.
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:
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.
Travail demandé :
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.
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
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)
28
Manuels de Travaux Pratiques 2015 TDI-08 Langage de Programmation Structurée