Vous êtes sur la page 1sur 6

Royaume du Maroc

OFFICE DE LA FORMATION PROFESSIONNELLE ET DE LA PROMOTION DU TRAVAIL

Cours 13T
Langage C et Gestion des Entres/Sorties
valuation Thorique #2
Nom.....:_____________________________________________________________
Date......:______________________________Groupe...:______________________
Total.....:_____________/60 pts

x (30/60) =

Note. .:_____________/30 pts

(____/2 pts) Une fonction peut-elle accepter plus d'un paramtre? Rpondez par oui ou non.
(____/2 pts) Une fonction peut-elle retourner plus d'une variable de type simple? Rpondez par
oui ou non.
(____/5 pts) crivez la dfinition de la fonction absolue() qui accepte comme paramtre la valeur
d'un entier et retourne sa valeur absolue (valeur absolue = valeur numrique positive).
(____/4 pts) Reportez-vous au programme ASCII.C. Encerclez le prototype (telle que dfinie au
chapitre 6 du Rsum de Thorie) de la fonction affi_ascii() et crivez Question #4 ct.
Attention! Si vous utilisez une flche pour pointer une ligne ou une portion de texte au lieu de
lencercler, votre rponse sera considre comme ambigu et vous obtiendrez la note 0.
(____/4 pts) Reportez-vous au programme ASCII.C. Encerclez la dclaration (telle que dfinie
au chapitre 6 du Rsum de Thorie) de la fonction affi_ascii() et crivez Question #5 ct.
Attention! Si vous utilisez une flche pour pointer une ligne ou une portion de texte au lieu de
lencercler, votre rponse sera considre comme ambigu et vous obtiendrez la note 0.

valuation Thorique #2

Page 1

OFPPT/TECCART

valuation Thorique #2
/* Programme:
* =========
*/
#include
#include
#include
#include

Langage C et Gestion des Entres/Sorties

ASCII.C
=======

<stdio.h>
<conio.h>
<dos.h>
<ctype.h>

void affi_ascii(unsigned char ascii_min, unsigned char ascii_max);


void main(void)
{
unsigned int choix, z;
clrscr();
puts("AFFICHAGE DES CODES ASCII");
puts("1) Affichage des codes ASCII de 32 127");
puts("2) Affichage des codes ASCII de 128 255");
puts("
Faites votre choix (1 ou 2):");
do

{
do

{
gotoxy(55,7); clreol();
choix = getche();
if (choix < '1' || choix > '2')
{
gotoxy(20,9); printf("Erreur de choix, recommencez SVP!");
delay(1000);
gotoxy(20,9); clreol();
}
}
while (choix < '1' || choix > '2');

switch (choix)
{
case '1': affi_ascii(32, 127); break;
case '2': affi_ascii(128, 255);
}
gotoxy(20,9);
printf("Pour sortir au DOS, tapez \"s\",);
printf(" sinon une autre touche.");
z = tolower(getch());
gotoxy(20,9); clreol();
}
while (z != 's');
clrscr();

void affi_ascii(unsigned char ascii_min, unsigned char ascii_max)


{
int i;

gotoxy(1,10);
for (i = ascii_min; i <= ascii_max; i++)
{
printf("%c ", i);
}
putchar('\n'); putchar('\n');
gotoxy(20, wherey()); printf("Une touche pour continuer");
getch();
gotoxy(1,10);
for (i = ascii_min; i <= ascii_max; i++)
{
printf(" ", i);
}
putchar('\n'); putchar('\n');
gotoxy(20, wherey()); clreol();

valuation Thorique #2

Page 2

OFPPT/TECCART

valuation Thorique #2

Langage C et Gestion des Entres/Sorties

(____/4 pts) Dans ce dbut de programme, insrez les instructions ncessaires pour obtenir un
cran texte avec couleur de fond bleu et couleur de texte jaune.
#include <toute_la_gang.h>
void main (void)
{
clrscr();
}
(____/3 pts) Reportez-vous au programme KM_FONC.C. Vous devez rdiger le fichier d'en-tte
KM_FONC.H. Encerclez toutes les lignes de KM_FONC.C qui doivent tre dplaces dans
KM_FONC.H et crivez Question #7 ct. Attention! Si vous utilisez une flche pour
pointer une ligne ou une portion de texte au lieu de lencercler, votre rponse sera considre
comme ambigu et vous obtiendrez la note 0.
(____/3 pts) Reportez-vous au programme KM_FONC.C. Aprs avoir limin certaines lignes
de ce fichier source pour construire son fichier den-tte KM_FONC.H, que devez-vous ajouter
KM_FONC.C pour tre capable de compiler ce programme? Inscrivez votre rponse au bon
endroit dans le programme de la page suivante. Encerclez votre rponse et crivez Question #8
ct. Attention! Si vous utilisez une flche pour pointer une ligne ou une portion de texte au lieu
de lencercler, votre rponse sera considre comme ambigu et vous obtiendrez la note 0.
/* Programme:
* =========
*
* Auteur:
* Date:
* Rvision:
* Version:
*
* Volume:
* Fichier:
*
* Description:
*
*
*
*/
#include
#include
#include
#include
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define

KM_FONC.C
=========
Robert Pesant
25/02/1993
25/02/1993
V1.0
C_PRG_VOL1A
\CHAP.007\KM_FONC\KM_FONC.C
Effectue
1. Km ->
2. Km ->
3. Km ->

les conversions suivantes:


mtres
milles
pieds

<stdio.h>
<conio.h>
<string.h>
<process.h>

MENU_1
MENU_2
MENU_3
MENU_4
MENU_5
MENU_6
MENU_7
MENU_8
MENU_9
MENU_10
MENU_11

valuation Thorique #2

" CONVERSION DE DISTANCE "


" ====================== "
"Km ---> mtres ... < 1 >"
"Km ---> milles ... < 2 >"
"Km ---> pieds .... < 3 >"
"Quitter .......... <Esc>"
"Votre choix ...... < * >"
"Distance en Km: "
"-------------- "
"Rsultats: "
"--------- "

Page 3

OFPPT/TECCART

valuation Thorique #2
#define
#define
#define
#define
#define
#define
#define
#define
#define

CONT
M
MI
PI
METRES
MILLES
PIEDS
ESC
CLE_INTERDITE

#define conv_metres(km)
#define conv_milles(km)
#define conv_pieds(km)

Langage C et Gestion des Entres/Sorties


"Une touche pour continuer..."
"mtres"
"milles"
"pieds"
'1'
'2'
'3'
27
((choix < '1') && (choix != ESC)) || (choix > '3')
(
1000.0 * km)
(0.621371192 * km)
(3280.839895 * km)

void menu(void);
int get_choix(void);
double get_km(void);
void resultat(double km, double dist, int choix);
void main(void)
{
int choix;
double kilometres, distance;
clrscr();
menu();
do
{
choix = get_choix();
if(choix == ESC)
{
clrscr(); exit(0);
}
kilometres = get_km();

switch(choix)
{
case METRES:
distance =
break;
case MILLES:
distance =
break;
case PIEDS:
distance =
break;
}
resultat(kilometres,
}
while(1);

/* Fonction:
* ========
*
* Description:
*
* Paramtres:
*
* Valeur/retour:
*/

conv_metres(kilometres);
conv_milles(kilometres);
conv_pieds(kilometres);
distance, choix);

menu()
======
Affiche le menu.
1. Aucun
1. Aucune

void menu(void)
{
gotoxy(41 - strlen(MENU_1)/2, 3); puts(MENU_1);
gotoxy(41 - strlen(MENU_2)/2, 4); puts(MENU_2);
gotoxy(41 - strlen(MENU_3)/2, 7); puts(MENU_3);
gotoxy(41 - strlen(MENU_4)/2, 8); puts(MENU_4);
gotoxy(41 - strlen(MENU_5)/2, 9); puts(MENU_5);
gotoxy(41 - strlen(MENU_6)/2, 10); puts(MENU_6);
gotoxy(41 - strlen(MENU_7)/2, 11); puts(MENU_7);
gotoxy(1, 15); puts(MENU_8);
gotoxy(1, 16); puts(MENU_9);
gotoxy(6, 18); puts(MENU_10);
gotoxy(6, 19); puts(MENU_11);
}

valuation Thorique #2

Page 4

OFPPT/TECCART

valuation Thorique #2
/* Fonction:
* ========
*
* Description:
*
*
* Paramtres:
*
* Valeur/retour:
*/

Langage C et Gestion des Entres/Sorties

get_choix()
===========
Attend et retourne le choix de l'usager.
Les touches interdites du clavier sont verrouilles.
1. Aucun
1. Le code ASCII du choix de l'usager

int get_choix(void)
{
int choix;
do

{
gotoxy(50,11); putchar('*'); gotoxy(50, 11);
choix = getche();
}
while(CLE_INTERDITE);
}

return(choix);

/* Fonction:
* ========
*
* Description:
*
*
* Paramtres:
*
* Valeur/retour:
*/

get_km()
========
Fait l'acquisition par le clavier de la distance
en kilomtres convertir.
1. Aucun
1. La distance en kilomtres convertir.

double get_km(void)
{
double km;

gotoxy(17,15);
scanf("%lf", &km);
fflush(stdin);
return(km);

/* Fonction:
* ========
*
* Description:
*
*
*
*
* Paramtres:
*
*
*
* Valeur/retour:
*/

resultat()
==========
Affiche le rsultat de la conversion de distance aussi
longtemps que l'usager le dsire.
Efface le rsultat lorsque l'usager dcide de retourner
au menu.
1. La distance en kilomtres convertir.
2. La distance rsultant de la conversion.
3. Le choix de conversion de l'usager.
1. Aucune.

void resultat(double km, double dist, int choix)


{
gotoxy(17,18); printf("%.2f Km = %.2f ", km, dist);
switch(choix)
{
case METRES: puts(M); break;
case MILLES: puts(MI); break;
case PIEDS: puts(PI); break;
}
gotoxy(41 - strlen(CONT)/2, 24); printf(CONT);
getch();
gotoxy(41 - strlen(CONT)/2, 24); clreol();
gotoxy(17,15); clreol();
gotoxy(17,18); clreol();
}

valuation Thorique #2

Page 5

OFPPT/TECCART

valuation Thorique #2

Langage C et Gestion des Entres/Sorties

(____/6 pts) Cochez tous les fichiers qui peuvent tre regroups dans la fentre PROJECT pour
raliser un programme excutable:
Fichiers sources XXX.C...........................................:_______
Fichiers d'en-tte XXX.H..........................................:_______
Fichiers objets externes XXX.OBJ...........................:_______
Fichiers de bibliothque externes XXX.LIB.............:_______
Fichiers excutables XXX.EXE................................:_______
Fichier de configuration TCCONFIG.TC...............:_______
Fichier de bureau XXX.DSK....................................:_______
Fichier de projet XXX.PRJ......................................:_______
(____/6 pts) Dans un systme automatis, les appareils suivants sont pilots par la sortie
numrique d'une carte ESN1 branche sur le port LPT1.
Ventilateur..............................: SN0
Moteur de convoyeur.............: SN1
Indicateur lumineux................: SN6
Alarme sonore........................: SN7
Ecrivez l'instruction qui...
1.
fait fonctionner le ventilateur,
2.
fait fonctionner l'indicateur lumineux,
3.
maintient l'arrt le moteur du convoyeur,
4.
fait taire l'alarme sonore,
5.
met zro les bits non utiliss de la sortie numrique.
(____/6 pts) Dans un systme automatis, les dtecteurs suivants sont connects l'entre
numrique d'une carte ESN1 branche sur le port PPI.
Dtecteur optique d'tiquette...............................: EN0
Dtecteur inductif de bouchon.............................: EN1
Dtecteur capacitif de bouteille............................: EN2
Dtecteur de fin de course du convoyeur.............: EN3
crivez la dfinition de la variable data_detect qui sera utilise pour stocker l'tat des dtecteurs
de l'automatisme.
crivez l'instruction qui...
6.
lit l'tat des dtecteurs,
7.
masque les bits non utiliss pour les forcer zro,
8.
dpose le code obtenu dans la variable data_detect.
(____/15 pts) On branche une carte ESA1 sur le port LPT1 pour faire lacquisition du signal
dun transmetteur 4-20 mA. crivez la fonction main() du programme qui doit effectuer les
tches suivantes.
(____/4 pts) Lire l'entre analogique EA1.
(____/4 pts) Transmettre cette donne par la sortie analogique SA0.
(____/3 pts) Afficher la donne en hexadcimal, en dcimal et en courant 4-20 mA.
(____/2 pts) Boucler sur lui-mme pour noter tout changement de la valeur du signal analogique,
en utilisant le bon modle de programme.
(____/2 pts) Sortir au DOS lgamment avec la touche Esc.

valuation Thorique #2

Page 6

OFPPT/TECCART