IUP2 TP programmation info n1

Mettez vous à 2 par poste. Vous me rendrez un petit rapport (un seul par binôme) dans une semaine.

Organisation des fichiers sous Linux (rappel cours IUP 1)

arborescence fichiers Unix

Noms de fichiers sous Unix : majuscules différentes des minuscules (préférer les minuscules), on peut utiliser également des chiffres, - (sauf en premier caractère), _ (souligné), . (point) et quelques autres. En tous cas jamais d'espace, et éviter les accents.

Les adresses relatives sont données par rapport à notre position actuelle (affichée devant le $) et ne commencent pas par / (en général une lettre ou ..). Les adresses absolues commencent par / et décrivent le chemin depuis la racine, les adresses universelles (URL) commencent par //. Pour chaque fichier ou répertoire, on peut définir un propriétaire, un groupe et les divers droits d'accès (rwx).

Commandes en mode texte sous Windows et Unix

  DOS et Telnet vers Windows UNIX
afficher la liste des fichiers (détaillée) DIR ls -l
changer de répertoire de travail CD répertoire cd répertoire
effacer un fichier DEL fichier rm fichier
effacer tous les fichiers DEL *.* rm *
créer un répertoire MD répertoire mkdir répertoire
supprimer un répertoire (vide) RD répertoire rmdir répertoire
monter un "device" local   mount device pt_de_montage
copier un fichier COPY source dest cp source dest
déplacer (ou renommer) un fichier ou répertoire MOVE src dest mv src dest
copier un répertoire et ses sous-répertoires XCOPY /S src dest cp -R src dest
gérer les accès aux fichiers ATTRIB chmod , chown , chgrp
aide sur une commande commande /? man commande

Processus de compilation : ouvrez une fenêtre shell (terminal) (icône stylisant un écran et un coquillage). Appelez l’éditeur (kwrite nomfichier.c &) et tapez le texte ci-après. N'oubliez pas de sauver ! Dans le terminal, compilez (g++ nomfichier.c -o nomprogramme). S’il n’y a pas d’erreur, appelez le programme (./nomprogramme) dans le terminal (ne lancez pas les programmes par un clic en mode graphique si votre programme ne commence pas par ouvrir une fenêtre).

Saisissez ce programme, compilez le et lancez le. Essayez de le comprendre

/* premier programme, TP IUP2 2004 */

/*directives du précompilateur *****************************************/
//inclusion d'entête pour utiliser les fonctions standard
#include <iostream.h>
//définition de deux constantes
#define lng_txt 40
#define taux 6.55957

/* déclarations globales (types et prototypes) *************************/
typedef char texte[lng_txt];  //un texte est un tableau de 40 caractères maxi
void dire(texte);             //cette fonction affiche le texte qu'on lui donne
float convertir(float);       //convertit un réel en un autre

/* fonction principale : doit s'appeler main ***************************/
int main(void)
{
 float en_francs,en_euros;           //déclaration locale à main
 dire("bonjour");                    //il faut toujours être poli
 cout<<"entrez une somme en francs : ";                    //il faut toujours être poli
 cin>>en_francs;                     //lire la somme
 en_euros=convertir(en_francs);      //appel d'une fonction
 cout<<en_francs<<"f font "<<en_euros<<" euros\n";
 dire("au revoir, à bientôt.");
}

/* fonction qui effectue la conversion *********************************/
//entête : on lui donne un réel et elle en rend un autre
float convertir(float somme_en_francs)
{
 float temporaire;                  //déclaration locale
 temporaire=somme_en_francs/taux;   //calcul
 return temporaire;    //c'est ainsi qu'une fonction rend son (unique) résultat
}

/* fonction qui affiche un texte ***************************************/
//je n'en ai besoin que dans cette fonction, on peut l'inclure ici
#include <string.h>  /* définit la fonction 'strlen' */
void dire(texte msg)
{
 int i,nb;                     //variables locales
 nb=strlen(msg)+4;             //calcul de la longueur du cadre
 for(i=0;i<nb;i++)cout<<"*";   //affichage de 'nb' étoiles
 cout<<"\n* "<<msg<<" *\n";        //passage à la ligne, *, espace, le texte,
 for(i=0;i<nb;i++)cout<<"*";
 cout<<"\n";                   //passage à la ligne (pour le prochain prompt)
}

Ecrivez votre premier programme (sans rapport avec le précédent)

a) il demande le solde initial de votre compte, la somme que vous y ajoutez, puis il calcule le solde.

b) en plus il demande le nombre de fois que vous ajoutez cette même somme. Vous devez obligatoirement utiliser une boucle et faire des additions successives.

c) testez de grands nombres de boucles, pour voir quand il lui faut quelques secondes, et remarquez l'erreur (par exemple par ajouts de 0.01). On peut aussi comparer des ajouts de 0.25 et 0.26

Proposition de solution :

  #include <iostream.h>
  int main(void)
  {
   float debut,somme,solde;
   int i,nb;
   cout<<"solde initial ?";
   cin>>debut;
   cout<<"mouvement ?";
   cin>>somme;
   cout<<"nombre de mouvements ?";
   cin>>nb;
   solde=debut;
   for(i=0;i<nb;i++) solde=solde+somme;
   cout<<"solde final : "<<solde<<
       " (au lieu de "<<debut+somme*nb<<")\n";
  }

 


TP2 retour sommaire C++

(c) P. TRAU IPST - ULP