iup2 TP programmation info n1

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.

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). Appeler l'éditeur (kwrite nomfichier.c &) et taper le texte. Ne pas oublier de sauver ! Dans le terminal, compiler (gcc nomfichier.c -o nomprogramme). S'il n'y a pas d'erreur, appeler le programme par son nom, dans le terminal (ne pas lancer les programmes par un clic en mode graphique si votre programme ne commence pas par ouvrir une fenêtre).

Accès à une machine distante (attention, il faut que le système distant accepte les accès extérieurs) : ssh -X iup2@ipst207xx puis toute commande "texte" ou graphique ("konqueror &" par exemple).

Il existe la même chose pour accéder à une machine Windows (telnet), ou depuis Windows (putty.exe) : voir IUP1

Accès aux fichiers d'une machine :

dans le gestionnaire de fichiers de votre système (explorateur de fichiers Windows, Konqueror,...) taper l'adresse ftp://iup2@ipst207xx ou (mieux) sftp si les deux systèmes le permettent (transmission codée, plus sûr). On peut aussi monter (localement) un répertoire distant (qui doit être partagé)

Saisissez ce programme, compilez le et lancez le

/* premier programme, TP IUP2 2003 */

/*directives du précompilateur *****************************************/
//inclusion d'entête pour utiliser les fonctions standard
#include <stdio.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
 printf("entrez une somme en francs : ");
 scanf("%f",&en_francs);             //lire la somme
 en_euros=convertir(en_francs);      //appel d'une fonction
 printf("%0.2ff font %0.2f euros\n",en_francs,en_euros);
 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++)printf("*"); //affichage de 'nb' étoiles
 printf("\n* %s *\n",msg);     //passage à la ligne, *, espace, le texte,
 for(i=0;i<nb;i++)printf("*");
 printf("\n");                 //passage à la ligne (pour le prochain prompt)
}

Ecrivez votre premier programme

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ïiuml;¿½e 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)

Proposition de solution :

  #include <stdio.h>
  int main(void)
  {
   float debut,somme,solde;
   int i,nb;
   printf("solde initial ?");
   scanf("%f",&debut);
   printf("mouvement ?");
   scanf("%f",&somme);
   printf("nombre de mouvements ?");
   scanf("%d",&nb);
   solde=debut;
   for(i=0;i<nb;i++) solde=solde+somme;
   printf("solde finial : %f \n",solde);
  }


retour TP IUP2

(c) P. TRAU IPST - ULP