Mettez vous à 2 par poste. Vous me rendrez un petit rapport (un seul par binôme) dans une semaine.
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).
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).
/* 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) }
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"; }
(c) P. TRAU IPST - ULP