Problème Technique

publicité
LOPES Thomas
TP C Tableaux et Structures
TS1IRIS
Compte rendu de Travaux Pratiques.
TP C: Tableaux et structures.
Partie C
Problème Technique :
Une station météorologique doit pouvoir mémoriser des informations collectées :
- Température : 1 échantillon par heure.
- Humidité : 1 échantillon par heure.
- Pression.
Solution Technique :
Il faut créer une structure de données sous la forme d’un tableau d’échantillons qui « pointe » sur des structures permettant de
mémoriser les échantillons mesurés sur la journée.
I)Cahier des charges :
On désire mémoriser les échantillons des différentes grandeurs météorologiques mesurées : température, humidité, pression.
En condition normale d’utilisation, ces échantillons sont mémorisés toutes les 10 minutes : il faut donc en même temps
mémoriser la date et l’heure de l’échantillon .
La date est composée du jour (1..31) du mois (Janvier…Décembre) de l’année(ex : 2010).
L’heure est composée : heure, minute seconde.
Les informations des grandeurs météorologiques ainsi que la date et l’heure doivent faire partie de la même structure de
données.
II)Préalgorithme :
 Effacer l'écran.
 On affiche le Premier janvier.
 On demande à l'utilisateur de saisir les températures entre -40°C et +50°C.
(Filtrage des données grâce à la fonction SaisieClavier ).
 On demande à l'utilisateur de saisir le taux d'humidité qui varie entre 0 à 100%.
(Filtrage de 0 a 100 grâce à la fonction SaisieClavier ).
 On demande à l'utilisateur de saisir la pression atmosphérique qui varie entre 800 à 1100 hectopascals.
(Filtrage de 0 a 100 grâce à la fonction SaisieClavier ).
 On restitue la Température , l'humidité de l'air et la Pression atmosphérique.
 Toutes les 24 heures on récupère les échantillons et les restituons .
 Puis tous les jours du mois de Janvier on demande les échantillons
 On demande à l'utilisateur la reprise du programme.
Page n°1/6
LOPES Thomas
TP C Tableaux et Structures
TS1IRIS
III)Algorithme:
{Fonction de la Saisie de clavier}
SaisieEntier ( BorneInf : entier , BorneSup : entier ) : entier ;
Début
{Déclarations des variables.}
var:
BorneMini : entier ;
BorneMaxi : entier ;
resultat : entier ;
{Initialisations des bornes.}
Répeter
Début
Faire gotoxy ;
et effacer ligne ;
Vider le buffer; resultat ←Saisie clavier ;
Fin
Jusqu'a ce que ( resultat >= BorneMini ET resultat <= BorneMaxi )
{Retour du résultat}
retourner ( résultat ) ;
Fin
Températures (néant) : néant
Début
{Déclarations des variables}
{Déclarations des structures}
struct ECHJOUR
{
int temp[24] ;
int humi[24] ;
int pression[24];
}ECHJOUR ;
Echjour = enregistrement
Début
temp : réel ;
humi : entier ;
pression : entier ;
Fin
Page n°2/6
LOPES Thomas
TP C Tableaux et Structures
TS1IRIS
var:
i , j: entier non signé ;
{Le Programme}
{Saisie des Échantillons }
{ Saisie de la date. }
Répeter
Début
Présentation écran ;
Pour i ← 0 à i < 7 par pas de 1 Faire {Boucle pour les jours}
Début
Pour j ← 0 à j < 24 par pas de 1 Faire {Boucle pour les heures}
Début
{Saisie de l'échantillon}
{Saisie des températures.}
Afficher "Veuillez saisir la temperature (entre -40 et +50 degres): " ;
saisieEchanti.temp← SaisieEntier( -40 , 50 ) ;
{Saisie de l'humidité.}
Afficher "Veuillez saisir l'humidite (entre 0 et 100): " ;
saisieEchanti.humi←SaisieEntier( 0 , 100 ) ;
{Saisie de la pression.}
Afficher "Veuillez saisir la pression (entre 800 et 1100): " ;
saisieEchanti.pression←SaisieEntier( 800 , 1100 ) ;
Fin
Fin
{Restitution des échantillons par jour}
Pour i ← 0 à i < 7 par pas de 1 Faire {Boucle pour les jours}
Début
Pour j ← 0 à j < 24 par pas de 1 Faire {Boucle pour les heures}
Début
Afficher « Aujourd'hui le ,i+1, janvier a , j , h :" »;
Afficher « La temperature est de ,janvier[i].temp[j] , la pression est de,
janvier[i].pression[j] , hectopascals»;
Afficher « et le taux d humidite de % .",janvier[i].humi[j] »;
Fin
Fin
Afficher " Appuyer sur 'n' pour quitter le programme ou autre pour continuer ";
Fin
Jusqu'à ce que ( saisie clavier ←'N' )
Fin
Page n°3/6
LOPES Thomas
TP C Tableaux et Structures
TS1IRIS
IV)Le Programme.
/*******************************************************************************************************
* NOM
:Station météo
* SUJET
:Saisir les températures, presion, humdité toutes les heures , tous les jours du mois de janvier.
* AUTEUR
:LOPES Thomas .
* VERSIO
:v1.2
* CREATION
:03/01/2011
* DER.MODIF
:06/01/2011
* ACCESS SOURCE :H:\Tido\Lycée\Programmation\Source - Projet\Revy\Borland\Tableaux et structures\Partie C
* ACCES OBJ
:H:\Tido\Lycée\Programmation\Source - Projet\Revy\Borland\Tableaux et structures\Partie C
* ACCESS EXE
:H:\Tido\Lycée\Programmation\Source - Projet\Revy\Borland\Tableaux et structures\Partie C
* LIMITES
:environnement DOS
* CONTRAINTES
:Fonctionne sur PC
*******************************************************************************************************/
/* les directives*/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#define FF fflush(stdin)
/*******************************************************************************
*Le programme principal :
*Paramètres entrant : aucun
*Paramètres sortant : aucun
****************************************************************************/
/*Déclarations des structures*/
/*Fonction de la Saisie de clavier*/
int SaisieEntier ( int BorneMini , int BorneMaxi )
{
/*Déclarations des variables.*/
int resultat ;
/*Initialisations des bornes.*/
do
{
gotoxy(1,6);
clreol();
FF; scanf("%d", &resultat) ;
}
while ( resultat < BorneMini || resultat > BorneMaxi ) ;
/*Retour du résultat*/
return ( resultat ) ;
}
void main (void)
Page n°4/6
LOPES Thomas
TP C Tableaux et Structures
TS1IRIS
{
/* les déclarations */
struct ECHJOUR
{
int temp[24] ;
int humi[24] ;
int pression[24];
}ECHJOUR ;
struct ECHJOUR janvier[31];
int unsigned i , j ;
do
{
/*Programme*/
clrscr();
gotoxy(25,1);
puts("***************");
gotoxy(25,2);
puts("*Station meteo*");
gotoxy(25,3);
puts("***************");
for ( i = 0 ; i < 7 ; i++ ) /*Boucle pour les jours */
{
for ( j = 0 ; j < 24 ; j++ )/*Boucle pour les heures */
{
gotoxy(1,5);
printf("Saisissez la temperature a %dh : ", j);
janvier[i].temp[j] = SaisieEntier( -40 , 50 );
gotoxy(1,5);
printf("Saisissez l humidite a %dh : ", j);
janvier[i].humi[j] = SaisieEntier( 0 , 100 );
gotoxy(1,5);
printf("Saisissez la pression a %dh : ", j);
janvier[i].pression[j] = SaisieEntier( 800 , 1100 );
}
}
/*restitution des valeurs */
Page n°5/6
LOPES Thomas
TP C Tableaux et Structures
TS1IRIS
for ( i = 0 ; i < 7 ; i++ ) /*Boucle pour les jours */
{
for ( j = 0 ; j < 24 ; j++) /*Boucle pour les heures */
{
printf("\nAujourd'hui le %d janvier a %d h :",i+1 , j);
printf("\nLa temperature est de %d , la pression est de %d
hectopascals",janvier[i].temp[j], janvier[i].pression[j]);
printf("\net le taux d umidite de %d % .\n",janvier[i].humi[j]);
}
}
gotoxy(1,20);
puts(" Appuyer sur 'n' pour quitter le programme ou autre pour continuer ");
}
while( toupper(getch()) != 'N'); /*Boucle de reprise du programme*/
}
VII)Tests de validation:
Actions ou opérations à vérifier.
Tests à effectuer
-41
Saisie filtrée des températures.
Saisie filtrée de l'humidité dans
l'air (en %).
Saisie filtrée de la pression en
Hectopascals.
Résultats attendus
Réitérer la demande.
Résultats Obtenus
Réitérer la
demande.
+33.5
33.5 degrés
33.5 degrés
0
0 degrés
0 degrés
-35.8
-35.8 degrés
-35.8 degrés
+51
Réitérer la demande.
Réitérer la
demande.
-1
Réitérer la demande.
Réitérer la
demande.
50
50,00%
50,00%
110
Réitérer la demande.
Réitérer la demande.
750
Réitérer la demande.
Réitérer la demande.
850
850
850
1500
Réitérer la demande.
Réitérer la
demande.
VII)Conclusion: Comme les résultats obtenus sont les même que les résultats attendus on peut dire alors que le
cahier des charges est respecté et que le programme est validé.
Page n°6/6
Téléchargement