Un meilleur job mieux payé ?

Deviens chef de projet, développeur, ingénieur, informaticien

Mets à jour ton profil pro

ça m'intéresse

Developpez.com - Pascal
X

Choisissez d'abord la catégorieensuite la rubrique :

 

ANNALES II : Deuxième semestre DEUG scientifique

Par Hugo ETIEVANT

Programmes des Travaux Pratiques d'Informatique de deuxième semestre, première année, de DEUG Sciences mention Sciences de la matière option Physique et application, filière 3, section A, groupe 4. Vous pouvez les télécharger en cliquant sur le bouton télécharger situé à coté du nom de l'exercice.




Tp 1, Exercice 1

Thermomètre au platine Télécharger

Sujet : procédure paramétrées, structures répétitives.

L'équation thermocinétique d'un thermomètre à résistance de platine est, entre t0=0°C et tM=630°C, de la forme : R=A0+A1t+A2t2
R désignant la résistance du fil de platine à la température Celsius t.
On donne :
A0= 2 Ohms
A1=8.12 x 10-3 Ohms/°C
A2= -1.2 x 10-6 Ohms/ °C2

On se propose de calculer les valeurs successives prises par R lorsque t varie depuis une valeur initiale tI jusqu'à une valeur finale tF par pas de PAST.

  • A0, A1, A2, t0, tM seront déclarées comme constantes du programme.

  • Les températures tI et tF ainsi que le pas PAST seront entrés au clavier, à l'aide d'une procédure saisie : les valeurs tI et tF ne seront acceptées que si elles appartiennent au donaine [t0, tM] et si tF>tI.

  • Les valeurs correspondantes de t et R seront affichées, au fur et à mesure des calculs, sur une même ligne de l'écran (procédure calculaffiche). Dans cette procédure, on prévoira une pause du programme, suivie d'un effaçage de l'écran, chaque fois que 20 valeurs consécutives de couples (t, R) auront été affichées (un couple par ligne).

Le programme principal appelera les procédures ci-dessus, puis demandera à l'utilisateur s'il veut, ou non, recommencer avec un nouveau jeu de données (tI, tF, PAST). Répondre O ou N.

L'ensemble des instructions du programme sera répété jusqu'à ce que l'utilisateur décide d'arrêter le programme (réponse N).

N.B. On rappelle que : a Mod b renvoie le reste de la division entière de deux entiers a et b.




Tp 1, Exercice 2

Construction d'un menu Télécharger

Beaucoup d'applications informatiques proposent un choix d'actions à l'utilisateur à l'aide d'un menu. Le programme à écrire va afficher un menu, lire le choix de l'utilisateur et réaliser l'action demandée.

Ce programme est composé d'une procédure menu qui retourne au programme principal le choix de l'utilisateur par le biais d'un caractère, la validité de celui-ci ayant été testée dans la procédure.

Après l'appel de la procédure menu, le programme principal va choisir l'action à mener grace à une structure de type Case... Of... . Les actions effectuées par le programme se limiteront à l'affichage d'un message. Par exemple, si le choix de l'utilisateur est "D", le message affiché sera "Modification d'un élément du tableau". Après chaque action l'affichage du menu apparaît de nouveau pour que l'utilisateur demande une nouvelle action. Lorsque le choix demandé par l'utilisateur est "A", le programme s'arrête.

La procédure menu affiche sur l'écran :
[A] - Abandon
[B] - Création du tableau
[C] - Affichage du tableau
[D] - Modification d'un élément du tableau
[E] - Ajout d'un élément à la fin du tableau
[F] - Suppression d'un élément du tableau
[G] - Insertion d'un élément dans le tableau
[H] - Recherche du plus petit élément du tableau
[I] - Recherche du plus grand élément du tableau
et demande d'entrer au clavier le choix de l'utilisateur jusqu'à ce que le choix soit compris entre 'A' et ' I '.



Tp 2

Tableau à une dimension Télécharger

Sujet : gestion d'un menu.

Reprendre le programme précédent. Ce programme répète l'affchage du menu et selon le choix de l'utilisateur appelle la procédure correspondante jusqu'à ce que le choix soit 'A'. L'objet de ce TP est d'écrire les procédures paramétrées correspondant aux différents choix possibles du menu, c'est-à-dire :

  • une procédure creer qui demande le nombre N d'entiers que l'on désire stocker dans le tableau et génère ces N valeurs à l'aide de la fonction Random(x). Les nombres générés devront appartenir à l'intervalle [100, 1000[

  • une procédure afficher qui affiche à l'écran les N valeurs stockées dans le tableau précédées de leur rang

  • une procédure modifier qui demande le rang de la valeur à mofifier et la nouvelle valeur du nombre, puis la range dans le tableau à la place voulue

  • une procédure ajouter qui lit au clavier la valeur à ajouter et la range dans le tableau à la suite des valeurs existantes

  • une procédure supprimer qui demande le rang de l'élément à suprrimer et effectue sa suppression en décalant vers la gauche tous les éléments suivants

  • une procédure inserer qui demande le rang et la valeur de l'élément à insérer, crée une place dans le tableau en décalant vers la droite les éléments qui suivront cette nouvelle valeur et enfin insère la valeur dans le tableau

    Ces 3 dernières procédures modifient N, le nombre d'éléments du tableau.

  • une procédure maxi qui recherche la plus grande valeur contenue dans le tableau et en donne son rang

  • une procédure mini qui recherche la plus petite valeur contenue dans le tableau et en donne son rang




Tp 3

Décharge d'un condensateur Télécharger

Sujet : étude de la décharge d'un condensateur dans un circuit R,L,C.

Schema du circuit Formules 1 et 2

L'intensité i du courant et la charge q du condensateur étant connus à un instant t, on peut calculer leur valeur approchée à l'instant t+Dt avec Dt suffisament petit. En calculant de proche en proche, à intervalles de temps très petits, les valeurs de i et de q, on aura ainsi une approche de l'évolution de la charge du condensateur au cours du temps. De l'équation (1), on peut tirer :

Formules 3,4 et 5

Ecrire un programme permettant de calculer, lors de la décharge d'un condensateur, les valeurs de la charge q à des intervalles de temps DeltaT réguliers. Ces valeurs seront stochées dans un tableau de réels TQ. Les valeurs ainsi stockées pourront être affichées à l'écran sur demande de l'utilisateur. Elles feront ensuite l'objet du tracé d'une courbe en fonction du temps.

Le programme va utiliser une constante nommée N de valeur 639 pour définit le nombre de valeurs calculées et donc la dimension du tableau et définir de même le nombre de points constituant la courbe à tracer. Une deuxième constante doit être définie, c'est DeltaT qui représente le pas de l'étude et qui être associée à la valeur 10-7.

Les caractéristiques de l'étude sont les suivantes : L=10-3 Henrys, R=100 Ohms, C=10-9 Farads, V0=100 Volts, q0=C.V0, i0=0 Ampères. Elles feront l'objet d'affectation en début de programme.

Avec la procédure creertab, le programme devra calculer les N valeurs de la charge à des instants distants de DeltaT et les stocker dans le tableau TQ. Le programme doit alors proposer à l'utilisateur l'affichage des valeurs stockées dans TQ en activant la procédure affiche si nécessaire. C'est alors que le programme, grace à la procédure courbe, dessinera sur l'écran l'évolution au cours du temps de la décharge du condensateur.

Pour une bonne lisibilité, le programme doit compter les sous-programmes suivants :

  • la fonction F qui renvoie la valeur de di/dt à un instant donné t connaissant i et q à cet instant (formule 3).

  • la procédure resolution qui, à partir de valeur connue de i et q à l'instant t, calcule et renvoie les nouvelles valeurs de i et q à l'instant t+Dt en utilisant la fonction F et les formules 4 et 5.

  • la procédure creertab qui calcule à l'aide de la procédure précédente les N valeurs de q à des instervalles de temps réguliers DeltaT, à partir des conditions initiales (t0, i0 et q0) et les range dans le tableau TQ.

  • la procédure affiche qui affiche les N valeurs calculées. Sur chaque ligne on doit trouver un temps avec 8 décimales et une valeur de charge avec 9 décimales. Il faudra prévoir une pause suivie d'un effacement de l'écran toutes les 20 lignes.

  • la procédure courbe qui permet le tracé de l'évolution sinusoïdale de la charge du condensateur au cours du temps tel que l'axe des abscisses débute à zéro, qu'il coupe l'écran en deux parties égales et que l'axe des ordonnées soit assez grand pour laisser apparaître le maximum de la courbe. Le point origine (XOrig, YOrig) se trouvera donc à l'extrême gauche et au milieu de la verticale. Les axes seront en bleu et la courbe en jaune. Pour plus de commodité on calcule :

    1. XMax et YMax avec les fonctions GetMaxX et GetMaxY.

    2. XOrig et YOrig les coordonnées de l'origine dans le système écran.

    3. Le facteur déchelle Ech:=YMax/(2*TQ[1]). TQ[1] étant la valeur maximum du tracé.

    La courbe est en réalité une succession de segments tracés avec les procédures Line ou LineTo et dont les coordonnées aux extréminées de chaque segment dans le système écran sont : (i,YOrig-TQ[i]*Ech) et (i+1,YOrig-TQ[i+1]*Ech).

    Un commentaire sera inscrit en blanc en bas de l'écran pour indiquer les valeurs de R,L,C qui ont été prises en compte dans le calcul. Elles seront écrites avec un format de 10 caractères et constitueront une chaîne de caractère. Dans la partie déclarative de la procédure courbe :

    Var Ch:String[10] ;
        Commentaire:String[40] ;
    
    Dans la partie exécutable de cette procédure :
    Str(R:10,Ch) ;
    Commentaire:='R='+Ch ;
    Str(L:10,Ch) ;
    Commentaire:=Commentaire+' L='+Ch ;
    Str(C:10,Ch) ;
    Commentaire:=Commentaire+' C='+Ch ;
    OutTextXY(XMax Div 2, YMax-20, Commentaire) ;
    
  • une procédure saisie permettant de saisir les valeurs de R,L,C qui caractérisent le circuit en indiquant à l'utilisateur les valeurs utilisées pour la première courbe.

Après l'affichage de la courbe de départ, le programme doit proposer à l'utilisateur de faire l'étude avec des valeurs numériques nouvelles (appel de la procédure saisie). Cette proposition doit être faite jusqu'à que l'utilisateur ne désire plus de nouvelle étude. On pourra donc observer l'influence de R, puis de L et enfin de C sur la décharge du condensateur.




Tp 4

Algorythme de tri et de recherche Télécharger

Sujet : classement par ordre alphabétique des mots réservés du langage Pascal et recherche d'un mot.

Ecrire un programme qui permet de dire si des mots entrés au clavier appartiennent ou non à la liste des mots réservés du Pascal.

La recherche d'un mot dans une liste est beaucoup plus rapide lorsque la liste est triée alphabétiquement. Les mots réservés du Pascal seront, dans un permier temps, stockés dans un tableau de chaînes de caractères dans l'ordre le plus probable d'apparition dans un programme. Ce tableau sera ensuite trié alphabétiquement. Puis les recherches de mots réservés pourront se faire dans ce tableau trié sachant que le Pascal ne fait pas de différence entre majuscules et minuscules dans les instructions du code.

Le programme sera décomposé comme suit :

  • une procédure init qui initialise le tableau des mots réservés (TabMots) avec la liste suivante, dans l'ordre et en majuscules : PROGRAM, UNIT, INTERFACE, USES, CONST, TYPE, RECORD, ARRAY, PACKED, STRING, FILE, SET, OBJECT, LABEL, PROCEDURE, FUNCTION, VAR, IMPLEMENTATION, BEGIN, END, FOR, TO, DOWNTO, DO, IF, THEN, ELSE, WHILE, REPEAT, UNTIL, CASE, OF, GOTO, AND, OR, NOT, XOR, DIV, MOD, IN, SHL, SHR, WITH, NIL, ASM, INLINE, CONSTRUCTOR, DESTRUCTOR. Cette procédure enverra en plus au programme appelant la longueur du tableau (NbMots).

  • une procédure tri qui trie un tableau de chaînes de caractères (TabMots) connaissant le nombre d'éléments de ce tableau (NbMots). Pour chaque élément d'indice i du tableau (i variant de 1 à NbMots-1) on parcours le tableau en faisant varier l'indice j entre i+1 et NbMots. Si l'élément d'indice j est plus petit que l'élément d'indice i, on permute ces deux éléments

  • une fonction majuscule qui renvoie une chaîne de caractères en majuscules construite à partir d'une chaîne de caractères donnée en paramètre contenant indifféremment des minuscules ou des majuscules ou des chiffres...

  • une procédure affiche qui permet l'affichage du tableau avec une pause suivie d'un effaçage à la fin de chaque page écran

  • une fonction existe qui renvoie un booléen pour indiquer si un mot donné en paramètre à été trouvé ou non dans un tableau de N chaînes de caractères.

Le programme fera effectuer toutes les recherches demandées par l'utilisateur à l'aide de ces sous-programmes.




Tp 5

Algorythme itératif de calcul approché Télécharger

Ecrire un programme qui calcule les solutions d'un système de n équations à n inconnues par la méthode itérative de Gauss-Seidel.

Le système à résoudre est de la forme :
a11x1 + a12x2 + ... + a1nxn = y1
a21x1 + a22x2 + ... + a2nxn = y2
...................................................
an1x1 + an2x2 + ... + annxn = yn

  1. On choisit arbitrairement une approximation de la solution v1, v2,... vn.

  2. On pose u=v.

  3. On calcule une nouvelle approximation v1, v2,... vn à l'aide de l'expression : formule

On répète les étapes 2 et 3 jusqu'à ce que l'on trouve un écart suffisamment petit entre deux solutions consécutives : maximum pour tous les i de |(ui - vi)|<=epsilon. Il est prudent de prévoir un nombre d'itérations maximal au cas où la convergence vers les solutions est trop lente ou même ne se produit pas. Cela arrive si les valeurs absolues des éléments diagonaux aii ne sont pas assez grandes par rapport à celle des éléments non diagonaux aij.

Le programme comporte :

  • Une procédure paramétrée saisie qui permet de saisir le nombre n d'équations, les coefficients aij et les seconds membres yi.

  • Une fonction max qui retourne une valeur réelle correspondant au plus grand écart entre deux solutions successives stockées dans les deux tableaux u et v.

Le programme fera appel à la procédure saisie pour lire au clavier les valeurs de n et des éléments des tableau a et y.

Au départ on prendra comme approximation : vi=yi / aii.

Le calcul des éléments de v sera suivi de l'affichage de ces même éléments. On déterminera alors grace à la fonction max la valeur de l'écart maximum entre l'avant-dernière solution u et la dernière v. Le résultat ainsi obtenu comparé à l'écart toléré epsilon ainsi qu'un test sur le nombre d'itérations déjà effectuées permettront de décider si un nouveau calcul doit être fait.

Le résultat final sera alors affiché sous la forme des éléments du vecteur v ou d'un message d'erreur.

L'écart maximum toléré entre deux solutions consécutives (espilon=10-3) ainsi que le nombre maximum d'itérations (nmaxit=50) seront déclarés en constantes du programme.

A la fin de chaque page-écran contenant les calculs intermédiaires, une pause sera prévue pour permettre à l'utilisateur de lire les résultats. Le calcul reprendra après un appui sur une touche quelconque.




Examen de mai 1999 - M03

Billeterie automatique Télécharger

On se propose de réaliser une version simplifiée de distributeur de billets de train. Il saura délivrer des billets (pour une seule ligne de train), en faisant choisir au client les gares de départ et d'arrivée, la classe (1 ou 2), la réduction (0 (plein tarif), 20 ou 50%). Il calculera le prix du billet et simulera le paiement par pièces et le rendu de monnaie.

Les gares à déservir sont (dans l'ordre) : Lyon, Givors, Rive-de-Gier, Saint Chamond et Saint-Etienne. Elles sont éloignées de Lyon de respectivement 20, 37, 47 et 59 km. Le nombre n de gares sera déclaré en constante du programme.

  • On écrira une procédure initialisation qui initialisera un tableau des noms de gares : gares et un tableau des distances correspondantes : distances.

  • On écrira une fonction arrondi qui arrondira le prix du trajet au franc supérieur.

  • On écrira une fonction prix qui calculera le prix du voyage selon les paramètres suivants :
    Si d est la distance à parcourir, le prix en francs, en deuxième classe, plein tarif, est de : 10+0,5*d si d<30 km, sinon de : 15+0,33*d.
    En première classe, le prix est 50% plus cher.
    On applique la réduction éventuelle, puis on arrondit le prix obtenu au franc supérieur à l'aide de la fonction précédente.

  • On écrira une fonction choix qui affiche la liste numérot&eacutée; des gares et demande au client de choisir une gare en tapant son numéro. La fonction retourne la réponse du client après avoir vérifié sa validité.

  • On écrira une fonction euro qui convertit une somme de francs en euros. On rappelle que pour cela, on divise le prix en francs par 6,55957 puis on arrondit le prix obtenu au centime d'euro le plus proche.

  • On écrira une procédure paiement qui encaisse le prix du voyage.
    Pour cela, tant qu'il reste quelque chose à payer :
    - afficher la somme restant à payer,
    - demander d'introduire une pièce (valeurs autorisées : 1, 2, 5, 10, 20),
    - calculer la nouvelle somme restant à payer.
    A la fin, afficher les pièces à donner s'il est nécessaire de rendre la monnaie et remercier le client.

    Exemple d'échange avec le client :

    Reste à payer : 17 F
    Vous entrez une pièce de : 20 F
    Je vous rends :
    - une pièce de 2 F
    - une pièce de 1 F
    Merci, à bientôt !

  • Le programme principal appellera deux fois la fonction choix (pour la gare de départ et celle d'arrivée), puis demendera au client le pourcentage de réduction et la classe. Seules les valeurs plausibles seront acceptées.
    Il calculera ensuite le prix et affichera un récapitulatif du billet . Exemple :

    Vous avez demandé un billet de Lyon à Givors en 1ère classe, avec 20% de réduction.
    Le prix du billet est de 21 F, soit 3,20 euros.

    Il encaissera ensuite le prix en rendant la monnaie si nécessaire.

    N.B. : La fonction trunc(x) prend la partie entière d'un réel x.
    La fonction round(x) aussi, après avoir arrondi x à l'entier le plus proche.

Responsables bénévoles de la rubrique Pascal : Gilles Vasseur - Alcatîz -