Télécharger

Transcription

Télécharger
Feuille d’astuces IP1
Quelques commandes Unix
Système de fichiers
Quelque soit votre système d’exploitation, les dossiers et fichiers sont rangés suivant une arborescence :
C: \ U s e r s \ t o t o
/ Users / toto
/home/ t o t o
( Windows 7+)
(Mac OS 1 0 )
( Linux , BSD . . . )
Dans le cas d’un système Unix (le cas des machines du script), chaque ./ indique un nouveau répertoire.
Ainsi
/home/ t o t o / Desktop
désigne le répertoire Desktop qui se trouve dans le répertoire toto lui-même contenu par le répertoire
home.
Dans un terminal, on accède à l’arborescence courante (c’est-à-dire le répertoire dans lequel on se trouve)
avec la commande .pwd (pour print working directory). Pour changer de répertoire, on utilise la commande
.cd (change directory) en lui donnant en argument le répertoire où l’on veut aller. À noter que .. désigne
le répertoire courant, et ... le répertoire parent (au-dessus). Enfin .ls (list) permet de lister le contenu
d’un repertoire.
Par exemple, supposons que l’on se trouve dans le répertoire ./home/toto et que la commande .ls nous
renvoie :
fichier1
fichier2
dossier1
dossier2
pour aller dans le répertoire .dossier2 , afficher son contenu puis revenir au dossier courant, on pourra
faire :
cd d o s s i e r 2
ls
cd . .
Gestion des archives de code source de ip101.fr
Pour extraire une archive au format .zip, on se place dans le même répertoire que l’archive, puis l’on
utilise la commande .unzip comme suit :
unzip f i c h i e r . zip
où . fichier . zip est le nom de l’archive.
Pour lancer un éditeur de texte dans le terminal (par exemple .gedit ou .emacs ) sur le fichier .mon_fichier,
on utilise une des commandes suivantes :
1
g e d i t mon_fichier &
ou bien
emacs m o n _ f i c h i e r &
L’esperluette .& indique que l’on souhaite continuer à utiliser le terminal pendant que l’éditeur est ouvert,
sans attendre qu’il soit fermé. Cela vous permettra de continuer à lancer des commandes tout en éditant
le fichier.
Utilisation d’emacs
Pour utiliser au mieux .emacs, il est conseillé de télécharger le fichier emacs dans votre répertoire home
et de le renommer en ..emacs . Après cela vous pourrez notamment utiliser la touche .F5 suivie de la
trouche .Enter pour compiler (à la place d’utiliser .javac , voir plus bas). Au cas où Emacs affiche un
message bleu .Save file ... en bas de la fenêtre, appuyer sur la touche .y .
Pour utiliser .Ctrl + C (Contrôle C), .Ctrl + V et .Ctrl + X pour copier/coller/couper, il suffit d’éditer le fichier ..emacs (en exécutant dans le terminal .emacs ~/.emacs ) et de supprimer le .; devant
.(cua−mode t)
Compilation et exécution de programmes Java
Avant de compiler un fichier, il faut impérativement s’assurer que :
1. le fichier porte le bon nom : s’il contient une classe nommée .MaClasse, le fichier devra obligatoirement s’appeler .MaClasse.java
2. le fichier contient une procédure .main . C’est cette procédure qui sera appelée lors de l’exécution,
c’est donc dans celle-ci que vous devez placer les tests que vous voulez effectuer. Cette procédure
sera déclarée comme suit :
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
...
}
Un programme dont le .main est vide n’affiche rien du tout quand il est lancé.
Pour compiler (c’est-à-dire transformer votre code en un fichier exécutable par Java), on utilise .javac en
lui donnant en argument le nom du fichier à compiler, par exemple .MonFichier.java.
j a v a c MonFichier . j a v a
C’est à ce moment là qu’est vérifiée la syntaxe : la compilation peut échouer et vous renvoyer un ou
plusieurs messages d’erreur. Si la compilation réussit, elle produit un fichier .MonFichier.class (ce que
l’on peut vérifier avec .ls ), qui va permettre l’exécution avec la commande
j a v a MonFichier
Par exemple, si vous venez de coder sur le Dojo, dans un document commençant par .class StarSquare { ,
la fonction suivante (qui retourne un carré d’étoiles) :
2
public s t a t i c S t r i n g g e t S t a r S q u a r e ( int n ) {
String s = ”” ;
for ( int i = 0 ; i < n ; i ++) {
fo r ( int j = 0 ; j < n ; j ++) {
s += ” * ” ;
}
s += ” \n” ;
}
return s ;
}
Pour la tester pour .n=1 et .n=3 , on commence par enregistrer tout le code (et donc toutes les procédures,
dont le .main, et les éventuelles .showString, .showNewLine, …) dans un fichier .StarSquare.java. On
complète ensuite le .main pour y ajouter les test que l’on souhaite, par exemple :
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
String test1 ;
test1 = getStarSquare ( 1 ) ;
showString ( t e s t 1 ) ;
showNewLine ( ) ;
String test2 = getStarSquare ( 3 ) ;
showString ( t e s t 2 ) ;
}
Enfin on compile, puis on exécute :
javac StarSquare . java
java StarSquare
Et l’on obtient :
*
***
***
***
Si jamais votre programme contient une boucle infinie, vous ne pouvez plus taper de commande dans le
terminal. Pour l’arrêter, tapez la combinaison de touche .Ctrl + C (Contrôle - C).
Indentation et propreté du code
Quelques règles essentielles concernant l’indentation :
• une ligne contient soit une structure de contrôle (.if , .for ) soit une instruction, mais pas les deux ;
• une accolade ouverte est sur la même ligne que la structure de contrôle associée ;
• une accolade fermée est toute seule sur une ligne (sauf si elle précède un else) et s’aligne avec la
structure de contrôle associée.
• on rajoute un niveau d’indentation après chaque accolade ouvrante, jusqu’à l’accolade fermante
correspondante
Quelques règles essentielles concernant la propreté du code :
3
• les noms de fonctions et de variables commencent par des minuscules;
• on place un espace :
–
–
–
–
avant et après tout opérateur binaire (=, +, /, …) ;
après toute virgule ;
avant les accolades ouvrantes ;
jamais après les parenthèses ouvrantes ou crochets ouvrants ;
• donnez des noms explicites à vos variables : max, min, heureTrain plutôt que a,b,aoiuaz;
• enfin, n’hésitez pas à utiliser des commentaires pour expliquer ce que fait votre code.
Un exemple (très) mauvais :
public s t a t i c int max( int [ ] t ) {
int a=t [ 0 ] ;
fo r ( int i =0; i <getArrayLength ( t ) ; i ++)
{ i f ( t [ i ]>a ) a=t [ i ] ; } return a ; }
Le même exemple, indenté proprement :
public s t a t i c int max( int [ ] a r r a y ) {
int max = a r r a y [ 0 ] ;
for ( int i = 0 ; i < getArrayLength ( a r r a y ) ; i ++)
i f ( a r r a y [ i ] > max) {
max = a r r a y [ i ] ;
}
}
return max ;
}
4
{