Environnement de développement

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimension: px
Commencer à balayer dès la page:

Download "Environnement de développement"

Transcription

1 Environnement de développement Bernard Vauquelin Université Bordeaux 1 4 février 2010

2 Introduction Plan général Compilation Mise au point Édition Documentation Gestion de versions Outils divers

3 Objectifs pédagogiques Le but de cet enseignement est de présenter les fonctionnalités utiles au développement d applications. 1. compilation 2. édition du texte du programme 3. aide à la mise au point 4. édition de la documentation 5. gestion collaborative des versions Pour illustrer chacune de ces fonctionnalités on étudiera un outil de base : gcc, make, emacs, gdb, LATEX, svn.

4 Objectifs pédagogiques Le but de cet enseignement est de présenter les fonctionnalités utiles au développement d applications. 1. compilation 2. édition du texte du programme 3. aide à la mise au point 4. édition de la documentation 5. gestion collaborative des versions Pour illustrer chacune de ces fonctionnalités on étudiera un outil de base : gcc, make, emacs, gdb, LATEX, svn.

5 Objectifs pédagogiques Le but de cet enseignement est de présenter les fonctionnalités utiles au développement d applications. 1. compilation 2. édition du texte du programme 3. aide à la mise au point 4. édition de la documentation 5. gestion collaborative des versions Pour illustrer chacune de ces fonctionnalités on étudiera un outil de base : gcc, make, emacs, gdb, LATEX, svn.

6 Objectifs pédagogiques Le but de cet enseignement est de présenter les fonctionnalités utiles au développement d applications. 1. compilation 2. édition du texte du programme 3. aide à la mise au point 4. édition de la documentation 5. gestion collaborative des versions Pour illustrer chacune de ces fonctionnalités on étudiera un outil de base : gcc, make, emacs, gdb, LATEX, svn.

7 Objectifs pédagogiques Le but de cet enseignement est de présenter les fonctionnalités utiles au développement d applications. 1. compilation 2. édition du texte du programme 3. aide à la mise au point 4. édition de la documentation 5. gestion collaborative des versions Pour illustrer chacune de ces fonctionnalités on étudiera un outil de base : gcc, make, emacs, gdb, LATEX, svn.

8 Objectifs pédagogiques Le but de cet enseignement est de présenter les fonctionnalités utiles au développement d applications. 1. compilation 2. édition du texte du programme 3. aide à la mise au point 4. édition de la documentation 5. gestion collaborative des versions Pour illustrer chacune de ces fonctionnalités on étudiera un outil de base : gcc, make, emacs, gdb, LATEX, svn.

9 Objectifs pédagogiques Le but de cet enseignement est de présenter les fonctionnalités utiles au développement d applications. 1. compilation 2. édition du texte du programme 3. aide à la mise au point 4. édition de la documentation 5. gestion collaborative des versions Pour illustrer chacune de ces fonctionnalités on étudiera un outil de base : gcc, make, emacs, gdb, LATEX, svn.

10 Hiérarchie Unix /bin exécutables indispensables au démarrage /etc configuration du système /home les répertoires d accueil /lib bibliothèques indispensables au démarrage /tmp fichiers temporaires /usr applications normales /opt grosses applications optionnelles /var fichiers du système dont le contenu varie

11 Hiérarchie Unix /bin exécutables indispensables au démarrage /etc configuration du système /home les répertoires d accueil /lib bibliothèques indispensables au démarrage /tmp fichiers temporaires /usr applications normales /opt grosses applications optionnelles /var fichiers du système dont le contenu varie

12 Hiérarchie Unix (suite) /usr/bin exécutables normaux /usr/include fichiers d en-tête pour la compilation /usr/lib bibliothèques d exécution /usr/local applications locales /usr/share fichiers du système indépendants du processeur /usr/src sources d applications normales /usr/share/man le manuel /usr/local/ contient bin, include, lib, src, man,...

13 Hiérarchie Unix (suite) /usr/bin exécutables normaux /usr/include fichiers d en-tête pour la compilation /usr/lib bibliothèques d exécution /usr/local applications locales /usr/share fichiers du système indépendants du processeur /usr/src sources d applications normales /usr/share/man le manuel /usr/local/ contient bin, include, lib, src, man,...

14 Hiérarchie Unix (suite) /usr/bin exécutables normaux /usr/include fichiers d en-tête pour la compilation /usr/lib bibliothèques d exécution /usr/local applications locales /usr/share fichiers du système indépendants du processeur /usr/src sources d applications normales /usr/share/man le manuel /usr/local/ contient bin, include, lib, src, man,...

15 Conventions Pour une application simple prog on place les sources dans un répertoire src/prog. Ce répertoire contient les sources du programme (fichiers.c et.h par exemple) les sources de la documentation (fichiers.xml par exemple) un fichier README un fichier Makefile ou équivalent L installation (obtenue en principe par la commande : make install) doit placer l exécutable dans un répertoire bin (par exemple en /usr/local/bin/prog) le manuel d utilisation dans un répertoire man (p.ex. en /usr/local/man/man1/prog.1)

16 Conventions Pour une application simple prog on place les sources dans un répertoire src/prog. Ce répertoire contient les sources du programme (fichiers.c et.h par exemple) les sources de la documentation (fichiers.xml par exemple) un fichier README un fichier Makefile ou équivalent L installation (obtenue en principe par la commande : make install) doit placer l exécutable dans un répertoire bin (par exemple en /usr/local/bin/prog) le manuel d utilisation dans un répertoire man (p.ex. en /usr/local/man/man1/prog.1)

17 Conventions Pour une application simple prog on place les sources dans un répertoire src/prog. Ce répertoire contient les sources du programme (fichiers.c et.h par exemple) les sources de la documentation (fichiers.xml par exemple) un fichier README un fichier Makefile ou équivalent L installation (obtenue en principe par la commande : make install) doit placer l exécutable dans un répertoire bin (par exemple en /usr/local/bin/prog) le manuel d utilisation dans un répertoire man (p.ex. en /usr/local/man/man1/prog.1)

18 Introduction Plan de la section Compilation gcc make make (suite) Mise au point Édition Documentation Gestion de versions

19 Une compilation simple Soit le fichier bonjour.c suivant. #i n c l u de <s t d i o. h> i n t main ( void ) { p r i n t f ( Bonjour a t o u s \n ) ; return 0 ; } Alors la commande gcc bonjour.c produit un fichier a.out suivant le schéma suivant.

20 gcc lit le fichier source bonjour.c et construit le fichier exécutable a.out

21 Les phases de compilation Les 3 phases essentielles sont : 1. le préprocesseur cpp 2. la compilation à proprement parlé cc + as 3. l édition de lien ld ar est une application extérieure à gcc qui permet d archiver plusieurs objets (fichiers suffixés.o) en une bibliothèque (fichier suffixé.a).

22 Les phases de compilation Les 3 phases essentielles sont : 1. le préprocesseur cpp 2. la compilation à proprement parlé cc + as 3. l édition de lien ld ar est une application extérieure à gcc qui permet d archiver plusieurs objets (fichiers suffixés.o) en une bibliothèque (fichier suffixé.a).

23 Les phases de compilation Les 3 phases essentielles sont : 1. le préprocesseur cpp 2. la compilation à proprement parlé cc + as 3. l édition de lien ld ar est une application extérieure à gcc qui permet d archiver plusieurs objets (fichiers suffixés.o) en une bibliothèque (fichier suffixé.a).

24 Options de gcc Pour arrêter le compilateur à une certaine phase -E : s arrête à la première phase (génère des.i) -S : s arrête avant l assembleur (génère des.s) -c : s arrête à la fin de la second phase (génère des.o) Pour reprendre le travail depuis une certaine phase gcc accepte plusieurs fichiers d entrée sur la ligne de commande et, pour chacun d eux, en fonction du suffixe, leur applique uniquement les phases nécessaires. La dernière phase (l édition de liens) n est exécutée qu une fois, globalement, après avoir effectué toutes les phases précédentes nécessaires sur tous les fichiers.

25 Options de gcc Pour arrêter le compilateur à une certaine phase -E : s arrête à la première phase (génère des.i) -S : s arrête avant l assembleur (génère des.s) -c : s arrête à la fin de la second phase (génère des.o) Pour reprendre le travail depuis une certaine phase gcc accepte plusieurs fichiers d entrée sur la ligne de commande et, pour chacun d eux, en fonction du suffixe, leur applique uniquement les phases nécessaires. La dernière phase (l édition de liens) n est exécutée qu une fois, globalement, après avoir effectué toutes les phases précédentes nécessaires sur tous les fichiers.

26 Autres options Pour augmenter le contexte de la compilation -Irep : ajoute rep à la liste des répertoires consultés par le préprocesseur pour trouver les fichiers cités dans les commandes de la forme #include <...> -lxxx : invite l éditeur de liens à considérer la bibliothèque libxxx.a pour y rechercher la définition d identificateur utilisé et pas défini (la bibliothèque libc.a est toujours considérée ; les bibliothèques sont considérées dans l ordre d apparition sur la ligne de commande) -Lrep : ajoute rep à la liste des répertoires consultés par l éditeur de liens pour trouver les bibliothèques à considérer

27 Options diverses -std=c99 : spécifie le standard que le code source satisfait -o fichier : génère l exécutable dans fichier au lieu de a.out -g : place dans l exécutable des informations utiles au debugger -O2 : provoque une certaine optimisation du code généré -Wall : affiche un message pour toute forme un peu ambiguë relevée dans le programme par le compilateur

28 Un cas simple Pour développer un éditeur de texte en C on découpe le programme en plusieurs fichiers sources : kbd.c, display.c, files.c, command.c, main.c. Par ailleurs les définitions générales sont répartis sur 2 fichiers : defs.h et command.h. On décrit alors la compilation de l application par le fichier Makefile suivant.

29 Un cas simple Pour développer un éditeur de texte en C on découpe le programme en plusieurs fichiers sources : kbd.c, display.c, files.c, command.c, main.c. Par ailleurs les définitions générales sont répartis sur 2 fichiers : defs.h et command.h. On décrit alors la compilation de l application par le fichier Makefile suivant.

30 e d i t : main. o kbd. o command. o d i s p l a y. o f i l e s. o cc o e d i t main. o kbd. o command. o \ d i s p l a y. o f i l e s. o main. o : main. c d e f s. h cc c main. c kbd. o : kbd. c d e f s. h command. h cc c kbd. c command. o : command. c d e f s. h command. h cc c command. c d i s p l a y. o : d i s p l a y. c d e f s. h cc c d i s p l a y. c f i l e s. o : f i l e s. c d e f s. h command. h cc c f i l e s. c c l e a n : rm e d i t main. o kbd. o command. o \

31 Il suffit de faire make pour compiler et obtenir l exécutable edit. Il suffira ensuite de refaire make chaque fois qu on aura modifié certains fichiers sources, pour recompiler edit. Le fichier, qui se nomme normalement Makefile, est constitué de règles de la forme suivante. c i b l e c i b l e... : dependance dependance... commande commande... make interprète ces règles de la facon suivante. Pour chaque fichier cible, s il n existe pas, ou si sa date de dernière modification est plus ancienne que la date de dernière modification d un des fichiers dependance, alors il doit être construit, ou reconstruit, en exécutant successivement les commandes indiquées. Remarque : La cible clean est particulière : aucun fichier de ce nom n est jamais censé exister.

32 Il suffit de faire make pour compiler et obtenir l exécutable edit. Il suffira ensuite de refaire make chaque fois qu on aura modifié certains fichiers sources, pour recompiler edit. Le fichier, qui se nomme normalement Makefile, est constitué de règles de la forme suivante. c i b l e c i b l e... : dependance dependance... commande commande... make interprète ces règles de la facon suivante. Pour chaque fichier cible, s il n existe pas, ou si sa date de dernière modification est plus ancienne que la date de dernière modification d un des fichiers dependance, alors il doit être construit, ou reconstruit, en exécutant successivement les commandes indiquées. Remarque : La cible clean est particulière : aucun fichier de ce nom n est jamais censé exister.

33 Il suffit de faire make pour compiler et obtenir l exécutable edit. Il suffira ensuite de refaire make chaque fois qu on aura modifié certains fichiers sources, pour recompiler edit. Le fichier, qui se nomme normalement Makefile, est constitué de règles de la forme suivante. c i b l e c i b l e... : dependance dependance... commande commande... make interprète ces règles de la facon suivante. Pour chaque fichier cible, s il n existe pas, ou si sa date de dernière modification est plus ancienne que la date de dernière modification d un des fichiers dependance, alors il doit être construit, ou reconstruit, en exécutant successivement les commandes indiquées. Remarque : La cible clean est particulière : aucun fichier de ce nom n est jamais censé exister.

34 Il suffit de faire make pour compiler et obtenir l exécutable edit. Il suffira ensuite de refaire make chaque fois qu on aura modifié certains fichiers sources, pour recompiler edit. Le fichier, qui se nomme normalement Makefile, est constitué de règles de la forme suivante. c i b l e c i b l e... : dependance dependance... commande commande... make interprète ces règles de la facon suivante. Pour chaque fichier cible, s il n existe pas, ou si sa date de dernière modification est plus ancienne que la date de dernière modification d un des fichiers dependance, alors il doit être construit, ou reconstruit, en exécutant successivement les commandes indiquées. Remarque : La cible clean est particulière : aucun fichier de ce nom n est jamais censé exister.

35 Utiliser des variables OBJECTS = main. o kbd. o command. o d i s p l a y. o f i l e s. o e d i t : $ (OBJECTS) cc o e d i t $ (OBJECTS) main. o : main. c d e f s. h cc c main. c kbd. o : kbd. c d e f s. h command. h cc c kbd. c command. o : command. c d e f s. h command. h cc c command. c d i s p l a y. o : d i s p l a y. c d e f s. h cc c d i s p l a y. c f i l e s. o : f i l e s. c d e f s. h command. h cc c f i l e s. c c l e a n : rm f e d i t $ (OBJECTS)

36 Utiliser les règles implicites OBJECTS = main. o kbd. o command. o d i s p l a y. o f i l e s. o e d i t : $ (OBJECTS) cc o e d i t $ (OBJECTS) main. o : d e f s. h kbd. o : d e f s. h command. h command. o : d e f s. h command. h d i s p l a y. o : d e f s. h f i l e s. o : d e f s. h command. h.phony : c l e a n c l e a n : rm f e d i t $ (OBJECTS) La cible bidon.phony indique à make d ignorer l existence

37 Utiliser des cibles multiples OBJECTS = main. o kbd. o command. o d i s p l a y. o f i l e s. o e d i t : $ (OBJECTS) cc o e d i t $ (OBJECTS) $ (OBJECTS) : d e f s. h kbd. o command. o f i l e s. o : command. h.phony : c l e a n c l e a n : rm e d i t $ (OBJECTS)

38 Quelques options de make -f fichier : consulte fichier plutôt que Makefile -n : affiche, sans les exécuter, les commandes nécessaires -k : ignore les erreurs qui pourraient survenir dans l exécution des commandes cible : construit la cible indiquée plutôt que la première cible trouvée

39 Un autre exemple très simple # Pour c o n s t r u i r e un c o u p l e de programmes.phony : a l l c l e a n a l l : C e l s i u s 2 K e l v i n K e l v i n 2 C e l s i u s C e l s i u s 2 K e l v i n : C e l s i u s 2 K e l v i n. c p a r a m e t r e s. h gcc C e l s i u s 2 K e l v i n. c o C e l s i u s 2 K e l v i n K e l v i n 2 C e l s i u s : K e l v i n 2 C e l s i u s. c p a r a m e t r e s. h gcc K e l v i n 2 C e l s i u s. c o K e l v i n 2 C e l s i u s c l e a n C e l s i u s 2 K e l v i n K e l v i n 2 C e l s i u s Le # introduit un commentaire sur le reste de la ligne, le - devant une commande autorise make à continuer même si la commande échoue et, devant une commande empêche make de nous l afficher chaque fois qu il l exécute.

40 Compilation d un document Pour imprimer un document en L A TEX, il faut le compiler puis convertir le résultat de la compilation en PostScript, langage de l imprimante : Compte Rendu. ps : Compte Rendu. d v i d v i p s o Compte Rendu. ps Compte Rendu. d v i rm Compte Rendu. d v i Compte Rendu. d v i : Compte Rendu. t e x l a t e x Compte Rendu. t e x.phony : p r i n t p r i n t : Compte Rendu. ps l p r P c o p i e u s e Compte Rendu. ps rm Compte Rendu. p s

41 Il y a un peu trop de duplication! Heureusement, il existe des variables automatiques comme (la cible courante) et $< (la première dépendance) : Compte Rendu. ps : Compte Rendu. d v i d v i p s o $< rm $< Compte Rendu. d v i : Compte Rendu. t e x l a t e x $<.PHONY : p r i n t p r i n t : Compte Rendu. ps l p r P c o p i e u s e $< rm $<

42 Pour être plus général on peut définir de nouvelles règles implicites (comme celle, par exemple, qui permet de construire un fichier.o à partir d un fichier.c). %. ps : %. d v i d v i p s o $< rm $< %. d v i : %. t e x l a t e x $< p r i n t % : %. ps l p r P c o p i e u s e $< Attention : Ce Makefile ne contient aucune cible. On en indiquera donc une sur la ligne de commande ; par exemple : make Compte Rendu.ps.

43 Retour sur le premier exemple OBJECTS = main. o kbd. o command. o d i s p l a y. o f i l e s. o e d i t : $ (OBJECTS) cc o e d i t $ (OBJECTS) main. o : d e f s. h kbd. o : d e f s. h command. h command. o : d e f s. h command. h d i s p l a y. o : d e f s. h f i l e s. o : d e f s. h command. h.phony : c l e a n c l e a n : rm f e d i t $ (OBJECTS) Des variables particulières servent de paramètres : le nom du

44 Retour sur le premier exemple OBJECTS = main. o kbd. o command. o d i s p l a y. o f i l e s. o e d i t : $ (OBJECTS) cc o e d i t $ (OBJECTS) main. o : d e f s. h kbd. o : d e f s. h command. h command. o : d e f s. h command. h d i s p l a y. o : d e f s. h f i l e s. o : d e f s. h command. h.phony : c l e a n c l e a n : rm f e d i t $ (OBJECTS) Des variables particulières servent de paramètres : le nom du

45 OBJECTS = main. o kbd. o command. o d i s p l a y. o f i l e s. o CC = gcc CFLAGS = g s t d=c99 Wall e d i t : $ (OBJECTS) $ (CC) o e d i t $ (OBJECTS) main. o : d e f s. h kbd. o : d e f s. h command. h command. o : d e f s. h command. h d i s p l a y. o : d e f s. h f i l e s. o : d e f s. h command. h.phony : c l e a n c l e a n : rm f e d i t $ (OBJECTS)

46 Évolutivité Au cours de l évolution du développement, il sera nécessaire de tenir à jour 1. la variable OBJECTS 2. les dépendances des fichiers.h Utilisation de fonctions de make comme shell, wildcard, subst : $(wildcard *.c) Utilisation de l option -MM du compilateur : gcc -MM *.c >Makedeps

47 Évolutivité Au cours de l évolution du développement, il sera nécessaire de tenir à jour 1. la variable OBJECTS 2. les dépendances des fichiers.h Utilisation de fonctions de make comme shell, wildcard, subst : $(wildcard *.c) Utilisation de l option -MM du compilateur : gcc -MM *.c >Makedeps

48 Évolutivité Au cours de l évolution du développement, il sera nécessaire de tenir à jour 1. la variable OBJECTS 2. les dépendances des fichiers.h Utilisation de fonctions de make comme shell, wildcard, subst : $(wildcard *.c) Utilisation de l option -MM du compilateur : gcc -MM *.c >Makedeps

49 # F a i r e make depend avant make SOURCES = $ ( wildcard. c ) OBJECTS = $ (SOURCES :. c =.o ) CC = gcc CFLAGS = g s t d=c99 Wall e d i t : $ (OBJECTS) $ (CC) o e d i t $ (OBJECTS) i n c l ude Makedeps.PHONY : c l e a n depend c l e a n : rm f e d i t $ (OBJECTS) depend : $ (CC) MM $ (SOURCES) >Makedeps

50 # A j u s t e r l e s 2 v a r i a b l e s s u i v a n t e s # F a i r e make depend p u i s make # P a s s e r r o o t pour f a i r e make i n s t a l l TARGET = e d i t BINDIR = / u s r / l o c a l / b i n # Ce q u i s u i t ne d e v r a i t pas e t r e m o d i f i e SOURCES = $ ( wildcard. c ) OBJECTS = $ (SOURCES :. c =.o ) CC = gcc CFLAGS = g s t d=c99 Wall $ (TARGET) : $ (OBJECTS) $ (CC) o $ (TARGET) $ ( OBJECTS) i n c l ude Makedeps

51 # A j u s t e r l e s 2 v a r i a b l e s s u i v a n t e s # F a i r e make depend p u i s make # P a s s e r r o o t pour f a i r e make i n s t a l l TARGET = e d i t BINDIR = / u s r / l o c a l / b i n # Ce q u i s u i t ne d e v r a i t pas e t r e m o d i f i e SOURCES = $ ( wildcard. c ) OBJECTS = $ (SOURCES :. c =.o ) CC = gcc CFLAGS = g s t d=c99 Wall $ (TARGET) : $ (OBJECTS) $ (CC) o $ (TARGET) $ ( OBJECTS) i n c l ude Makedeps

52 ... i n c l ude Makedeps.PHONY : c l e a n depend i n s t a l l c l e a n : rm f $ (TARGET) $ ( OBJECTS) Makedeps depend : $ (CC) MM $ (SOURCES) >Makedeps i n s t a l l : $ (TARGET) cp $ (TARGET) $ ( BINDIR )

53 Introduction Plan de la section Compilation Mise au point gdb valgrind Édition Documentation Gestion de versions

54 Commandes d état général h[elp] com : i[nfo] info : sho[w] param : set param valeur : file prog : (idem gdb prog) core core : (idem gdb prog core) attach pid : (idem gdb prog pid) dir rep : répertoire des sources

55 Commandes d état général h[elp] com : i[nfo] info : sho[w] param : set param valeur : file prog : (idem gdb prog) core core : (idem gdb prog core) attach pid : (idem gdb prog pid) dir rep : répertoire des sources

56 Commandes d état général h[elp] com : i[nfo] info : sho[w] param : set param valeur : file prog : (idem gdb prog) core core : (idem gdb prog core) attach pid : (idem gdb prog pid) dir rep : répertoire des sources

57 Commandes d état général h[elp] com : i[nfo] info : sho[w] param : set param valeur : file prog : (idem gdb prog) core core : (idem gdb prog core) attach pid : (idem gdb prog pid) dir rep : répertoire des sources

58 Commandes d état général h[elp] com : i[nfo] info : sho[w] param : set param valeur : file prog : (idem gdb prog) core core : (idem gdb prog core) attach pid : (idem gdb prog pid) dir rep : répertoire des sources

59 Commandes d état général h[elp] com : i[nfo] info : sho[w] param : set param valeur : file prog : (idem gdb prog) core core : (idem gdb prog core) attach pid : (idem gdb prog pid) dir rep : répertoire des sources

60 Commandes d état général h[elp] com : i[nfo] info : sho[w] param : set param valeur : file prog : (idem gdb prog) core core : (idem gdb prog core) attach pid : (idem gdb prog pid) dir rep : répertoire des sources

61 Commandes d état général h[elp] com : i[nfo] info : sho[w] param : set param valeur : file prog : (idem gdb prog) core core : (idem gdb prog core) attach pid : (idem gdb prog pid) dir rep : répertoire des sources

62 Conditions d arrêt b[reak] [fich :] fct/lig [if cond] wa[tch] exp : arrêt sur changement de valeur : point d arrêt dans le code dis/en[able] [num] : (dés)activation d un point d arrêt (tous p. déf.) d[elete] exp : suppression définitive

63 Conditions d arrêt b[reak] [fich :] fct/lig [if cond] wa[tch] exp : arrêt sur changement de valeur : point d arrêt dans le code dis/en[able] [num] : (dés)activation d un point d arrêt (tous p. déf.) d[elete] exp : suppression définitive

64 Conditions d arrêt b[reak] [fich :] fct/lig [if cond] wa[tch] exp : arrêt sur changement de valeur : point d arrêt dans le code dis/en[able] [num] : (dés)activation d un point d arrêt (tous p. déf.) d[elete] exp : suppression définitive

65 Conditions d arrêt b[reak] [fich :] fct/lig [if cond] wa[tch] exp : arrêt sur changement de valeur : point d arrêt dans le code dis/en[able] [num] : (dés)activation d un point d arrêt (tous p. déf.) d[elete] exp : suppression définitive

66 Exécution r[un] [args] [redir] : n[ext] [nbre] : on exécute totalement les fonctions s[tep] [nbre] : on rentre dans les fonctions c[ontinue] : on continue jusqu à une condition d arrêt fin[ish] : on termine la fonction courante

67 Exécution r[un] [args] [redir] : n[ext] [nbre] : on exécute totalement les fonctions s[tep] [nbre] : on rentre dans les fonctions c[ontinue] : on continue jusqu à une condition d arrêt fin[ish] : on termine la fonction courante

68 Exécution r[un] [args] [redir] : n[ext] [nbre] : on exécute totalement les fonctions s[tep] [nbre] : on rentre dans les fonctions c[ontinue] : on continue jusqu à une condition d arrêt fin[ish] : on termine la fonction courante

69 Exécution r[un] [args] [redir] : n[ext] [nbre] : on exécute totalement les fonctions s[tep] [nbre] : on rentre dans les fonctions c[ontinue] : on continue jusqu à une condition d arrêt fin[ish] : on termine la fonction courante

70 Exécution r[un] [args] [redir] : n[ext] [nbre] : on exécute totalement les fonctions s[tep] [nbre] : on rentre dans les fonctions c[ontinue] : on continue jusqu à une condition d arrêt fin[ish] : on termine la fonction courante

71 Affichages l[ist] [fich :] [fct/lig] : p. def. autour du point d arrêt p[rint] [/format] expr : cal[l] expr : idem print mais sans affichage disp[lay] [/format] expr : affichage automatique à chaque arrêt b[ack]t[race] : liste les cadres de chaque fonction en cours dans la pile d exécution f[rame] num : change de cadre up/do[wn] [nbre] : change de cadre

72 Affichages l[ist] [fich :] [fct/lig] : p. def. autour du point d arrêt p[rint] [/format] expr : cal[l] expr : idem print mais sans affichage disp[lay] [/format] expr : affichage automatique à chaque arrêt b[ack]t[race] : liste les cadres de chaque fonction en cours dans la pile d exécution f[rame] num : change de cadre up/do[wn] [nbre] : change de cadre

73 Affichages l[ist] [fich :] [fct/lig] : p. def. autour du point d arrêt p[rint] [/format] expr : cal[l] expr : idem print mais sans affichage disp[lay] [/format] expr : affichage automatique à chaque arrêt b[ack]t[race] : liste les cadres de chaque fonction en cours dans la pile d exécution f[rame] num : change de cadre up/do[wn] [nbre] : change de cadre

74 Affichages l[ist] [fich :] [fct/lig] : p. def. autour du point d arrêt p[rint] [/format] expr : cal[l] expr : idem print mais sans affichage disp[lay] [/format] expr : affichage automatique à chaque arrêt b[ack]t[race] : liste les cadres de chaque fonction en cours dans la pile d exécution f[rame] num : change de cadre up/do[wn] [nbre] : change de cadre

75 Affichages l[ist] [fich :] [fct/lig] : p. def. autour du point d arrêt p[rint] [/format] expr : cal[l] expr : idem print mais sans affichage disp[lay] [/format] expr : affichage automatique à chaque arrêt b[ack]t[race] : liste les cadres de chaque fonction en cours dans la pile d exécution f[rame] num : change de cadre up/do[wn] [nbre] : change de cadre

76 Affichages l[ist] [fich :] [fct/lig] : p. def. autour du point d arrêt p[rint] [/format] expr : cal[l] expr : idem print mais sans affichage disp[lay] [/format] expr : affichage automatique à chaque arrêt b[ack]t[race] : liste les cadres de chaque fonction en cours dans la pile d exécution f[rame] num : change de cadre up/do[wn] [nbre] : change de cadre

77 Affichages l[ist] [fich :] [fct/lig] : p. def. autour du point d arrêt p[rint] [/format] expr : cal[l] expr : idem print mais sans affichage disp[lay] [/format] expr : affichage automatique à chaque arrêt b[ack]t[race] : liste les cadres de chaque fonction en cours dans la pile d exécution f[rame] num : change de cadre up/do[wn] [nbre] : change de cadre

78 Fonctions

79 Introduction Plan de la section Compilation Mise au point Édition Emacs Emacs-Lisp Elisp (suite) Documentation Gestion de versions

80 Éléments d Emacs Fichier, tampon ( buffer ), fenêtre, cadre ( frame ) Ligne, colonne, point, marque, région Clé, touche, commande, table de liaison ( binding ) Modes (majeurs et mineurs) Fonctions (interactives ou pas), variables (locales ou globales)

81 Éléments d Emacs Fichier, tampon ( buffer ), fenêtre, cadre ( frame ) Ligne, colonne, point, marque, région Clé, touche, commande, table de liaison ( binding ) Modes (majeurs et mineurs) Fonctions (interactives ou pas), variables (locales ou globales)

82 Éléments d Emacs Fichier, tampon ( buffer ), fenêtre, cadre ( frame ) Ligne, colonne, point, marque, région Clé, touche, commande, table de liaison ( binding ) Modes (majeurs et mineurs) Fonctions (interactives ou pas), variables (locales ou globales)

83 Éléments d Emacs Fichier, tampon ( buffer ), fenêtre, cadre ( frame ) Ligne, colonne, point, marque, région Clé, touche, commande, table de liaison ( binding ) Modes (majeurs et mineurs) Fonctions (interactives ou pas), variables (locales ou globales)

84 Éléments d Emacs Fichier, tampon ( buffer ), fenêtre, cadre ( frame ) Ligne, colonne, point, marque, région Clé, touche, commande, table de liaison ( binding ) Modes (majeurs et mineurs) Fonctions (interactives ou pas), variables (locales ou globales)

85 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

86 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

87 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

88 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

89 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

90 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

91 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

92 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

93 Personnalisation d Emacs Emacs n est qu un interprète Lisp intégrant des fonctions spécialisées pour manipuler et afficher du texte. Ceci permet une très grande flexibilité. Emacs-lisp ~ /.emacs autoload auto-mode-alist add-hook...

94 LISP Un interprète LISP (LISt Processor) évalue uniquement des expressions. Les expressions sont écrites sous forme préfixe : l opérateur est placé devant ses opérandes. Les parenthèses entourent l opérateur et ses opérandes. L espace est l unique séparateur. x + y (+ x y) max(x, y) (max x y) x = y (setq x y) x = y > 0? z 1 : z 2 (setq x (if (> y 0) z1 z2))

95 LISP Un interprète LISP (LISt Processor) évalue uniquement des expressions. Les expressions sont écrites sous forme préfixe : l opérateur est placé devant ses opérandes. Les parenthèses entourent l opérateur et ses opérandes. L espace est l unique séparateur. x + y (+ x y) max(x, y) (max x y) x = y (setq x y) x = y > 0? z 1 : z 2 (setq x (if (> y 0) z1 z2))

96 LISP Un interprète LISP (LISt Processor) évalue uniquement des expressions. Les expressions sont écrites sous forme préfixe : l opérateur est placé devant ses opérandes. Les parenthèses entourent l opérateur et ses opérandes. L espace est l unique séparateur. x + y (+ x y) max(x, y) (max x y) x = y (setq x y) x = y > 0? z 1 : z 2 (setq x (if (> y 0) z1 z2))

97 LISP Un interprète LISP (LISt Processor) évalue uniquement des expressions. Les expressions sont écrites sous forme préfixe : l opérateur est placé devant ses opérandes. Les parenthèses entourent l opérateur et ses opérandes. L espace est l unique séparateur. x + y (+ x y) max(x, y) (max x y) x = y (setq x y) x = y > 0? z 1 : z 2 (setq x (if (> y 0) z1 z2))

98 LISP Un interprète LISP (LISt Processor) évalue uniquement des expressions. Les expressions sont écrites sous forme préfixe : l opérateur est placé devant ses opérandes. Les parenthèses entourent l opérateur et ses opérandes. L espace est l unique séparateur. x + y (+ x y) max(x, y) (max x y) x = y (setq x y) x = y > 0? z 1 : z 2 (setq x (if (> y 0) z1 z2))

99 LISP Un interprète LISP (LISt Processor) évalue uniquement des expressions. Les expressions sont écrites sous forme préfixe : l opérateur est placé devant ses opérandes. Les parenthèses entourent l opérateur et ses opérandes. L espace est l unique séparateur. x + y (+ x y) max(x, y) (max x y) x = y (setq x y) x = y > 0? z 1 : z 2 (setq x (if (> y 0) z1 z2))

100 LISP Un interprète LISP (LISt Processor) évalue uniquement des expressions. Les expressions sont écrites sous forme préfixe : l opérateur est placé devant ses opérandes. Les parenthèses entourent l opérateur et ses opérandes. L espace est l unique séparateur. x + y (+ x y) max(x, y) (max x y) x = y (setq x y) x = y > 0? z 1 : z 2 (setq x (if (> y 0) z1 z2))

101 LISP Un interprète LISP (LISt Processor) évalue uniquement des expressions. Les expressions sont écrites sous forme préfixe : l opérateur est placé devant ses opérandes. Les parenthèses entourent l opérateur et ses opérandes. L espace est l unique séparateur. x + y (+ x y) max(x, y) (max x y) x = y (setq x y) x = y > 0? z 1 : z 2 (setq x (if (> y 0) z1 z2))

102 i f ( x > 0 ) { y = 2 y ; } e l s e { y = 1 ; p r i n t f ( T i l t \n ) ; } ( i f (> x 0) ( s e t q y ( 2 y ) ) ( s e t q y 1) ( message T i l t ) )

103 while ( n > 0 ) { x = x + f ( n ) ; n ; } ( w h i l e (> n 0) ( s e t q x (+ x ( f n ) ) ) ( s e t q n ( n 1 ) ) )

104 { } i n t s = 0 ; s = f ( s, x1 ) ; s = f ( s, x2 ) ;... ( l e t ( ( s 0) ) ( s e t q s ( f s x1 ) ) ( s e t q s ( f s x2 ) )... )

105 i n t f a c t ( i n t n ) { return n == 0? 1 : n f a c t ( n 1 ) ; } ( defun f a c t ( n ) C a l c u l e f a c t o r i e l l e N ( i f (= n 0) 1 ( n ( f a c t ( n 1 ) ) ) ) )

106 Spécificités d emacs-lisp Emacs contient un grand nombre de fonctions prédéfinies comme if, setq, *, defun,... ; mais aussi des fonctions comme forward-char, apropos, find-file,... Les fonctions de ce deuxième groupe ont la particularité d être interactives : elles définissent des commandes qui peuvent être liées à des clés. Ainsi la clé C-f est en général liée à la commande forward-char, qui provoque l évaluation de l expression LISP (forward-char) qui avance le curseur d une position à droite dans le buffer courant. Par contre if ou setq ne sont pas interactives, ce ne sont pas des commandes.

107 Spécificités d emacs-lisp Emacs contient un grand nombre de fonctions prédéfinies comme if, setq, *, defun,... ; mais aussi des fonctions comme forward-char, apropos, find-file,... Les fonctions de ce deuxième groupe ont la particularité d être interactives : elles définissent des commandes qui peuvent être liées à des clés. Ainsi la clé C-f est en général liée à la commande forward-char, qui provoque l évaluation de l expression LISP (forward-char) qui avance le curseur d une position à droite dans le buffer courant. Par contre if ou setq ne sont pas interactives, ce ne sont pas des commandes.

108 Spécificités d emacs-lisp Emacs contient un grand nombre de fonctions prédéfinies comme if, setq, *, defun,... ; mais aussi des fonctions comme forward-char, apropos, find-file,... Les fonctions de ce deuxième groupe ont la particularité d être interactives : elles définissent des commandes qui peuvent être liées à des clés. Ainsi la clé C-f est en général liée à la commande forward-char, qui provoque l évaluation de l expression LISP (forward-char) qui avance le curseur d une position à droite dans le buffer courant. Par contre if ou setq ne sont pas interactives, ce ne sont pas des commandes.

109 Spécificités d emacs-lisp Emacs contient un grand nombre de fonctions prédéfinies comme if, setq, *, defun,... ; mais aussi des fonctions comme forward-char, apropos, find-file,... Les fonctions de ce deuxième groupe ont la particularité d être interactives : elles définissent des commandes qui peuvent être liées à des clés. Ainsi la clé C-f est en général liée à la commande forward-char, qui provoque l évaluation de l expression LISP (forward-char) qui avance le curseur d une position à droite dans le buffer courant. Par contre if ou setq ne sont pas interactives, ce ne sont pas des commandes.

110 Spécificités d emacs-lisp Emacs contient un grand nombre de fonctions prédéfinies comme if, setq, *, defun,... ; mais aussi des fonctions comme forward-char, apropos, find-file,... Les fonctions de ce deuxième groupe ont la particularité d être interactives : elles définissent des commandes qui peuvent être liées à des clés. Ainsi la clé C-f est en général liée à la commande forward-char, qui provoque l évaluation de l expression LISP (forward-char) qui avance le curseur d une position à droite dans le buffer courant. Par contre if ou setq ne sont pas interactives, ce ne sont pas des commandes.

111 Spécificités d emacs-lisp (suite) Il est possible de transmettre un paramètre à une fonction déclenchée par une commande. Par exemple la commande find-file, en général liée à la clé C-x C-f, provoque l évaluation de (find-file "fichier") où fichier est une chaîne de caractères acquise dans le mini-buffer. De même, si on tape C-u 1 2 C-f cela provoque l évaluation de (forward-char 12) qui avance le curseur de 12 positions à droite dans le buffer courant.

112 Spécificités d emacs-lisp (suite) Il est possible de transmettre un paramètre à une fonction déclenchée par une commande. Par exemple la commande find-file, en général liée à la clé C-x C-f, provoque l évaluation de (find-file "fichier") où fichier est une chaîne de caractères acquise dans le mini-buffer. De même, si on tape C-u 1 2 C-f cela provoque l évaluation de (forward-char 12) qui avance le curseur de 12 positions à droite dans le buffer courant.

113 Spécificités d emacs-lisp (suite) Il est possible de transmettre un paramètre à une fonction déclenchée par une commande. Par exemple la commande find-file, en général liée à la clé C-x C-f, provoque l évaluation de (find-file "fichier") où fichier est une chaîne de caractères acquise dans le mini-buffer. De même, si on tape C-u 1 2 C-f cela provoque l évaluation de (forward-char 12) qui avance le curseur de 12 positions à droite dans le buffer courant.

114 Évaluation par emacs-lisp Pour accéder à l interprète d Emacs deux commandes sont particulièrement utiles : 1. execute-extended-command : cette commande, en général liée à la clé M-x, provoque l exécution d une commande dont le nom est acquis dans le mini-buffer. 2. eval-expression : cette commande, en général liée à la clé M-:, permet d obtenir l évaluation d une expression LISP acquise dans le mini-buffer. Le résultat de l évaluation est affiché aussi dans le mini-buffer.

115 Évaluation par emacs-lisp Pour accéder à l interprète d Emacs deux commandes sont particulièrement utiles : 1. execute-extended-command : cette commande, en général liée à la clé M-x, provoque l exécution d une commande dont le nom est acquis dans le mini-buffer. 2. eval-expression : cette commande, en général liée à la clé M-:, permet d obtenir l évaluation d une expression LISP acquise dans le mini-buffer. Le résultat de l évaluation est affiché aussi dans le mini-buffer.

116 Évaluation par emacs-lisp Pour accéder à l interprète d Emacs deux commandes sont particulièrement utiles : 1. execute-extended-command : cette commande, en général liée à la clé M-x, provoque l exécution d une commande dont le nom est acquis dans le mini-buffer. 2. eval-expression : cette commande, en général liée à la clé M-:, permet d obtenir l évaluation d une expression LISP acquise dans le mini-buffer. Le résultat de l évaluation est affiché aussi dans le mini-buffer.

117 Il y a donc 3 manières d obtenir que le curseur se déplace d une position à droite dans le buffer courant : 1. C-f 2. M-x forward-char RET 3. M-: (forward-char) RET Pour déplacer le curseur de 12 positions à droite on a les 3 solutions suivantes : 1. C-u 1 2 C-f 2. C-u 1 2 M-x forward-char RET 3. M-: (forward-char 12) RET

118 Il y a donc 3 manières d obtenir que le curseur se déplace d une position à droite dans le buffer courant : 1. C-f 2. M-x forward-char RET 3. M-: (forward-char) RET Pour déplacer le curseur de 12 positions à droite on a les 3 solutions suivantes : 1. C-u 1 2 C-f 2. C-u 1 2 M-x forward-char RET 3. M-: (forward-char 12) RET

119 Il y a aussi 3 manières de charger le fichier toto.c dans un buffer : 1. C-x C-f toto.c RET 2. M-x find-file RET toto.c RET 3. M-: (find-file "toto.c") RET

120 D autres commandes utiles sont : eval-last-sexp : en général liée à la clé C-x C-e, provoque l évaluation de l expression LISP immédiatement avant le curseur dans le buffer courant. Le résultat est affiché dans le mini-buffer. eval-region : provoque l interprétation de toute la région courante dans le buffer courant. load-file : après l acquisition dans le mini-buffer d un nom de fichier, tout le fichier est interprété.

121 D autres commandes utiles sont : eval-last-sexp : en général liée à la clé C-x C-e, provoque l évaluation de l expression LISP immédiatement avant le curseur dans le buffer courant. Le résultat est affiché dans le mini-buffer. eval-region : provoque l interprétation de toute la région courante dans le buffer courant. load-file : après l acquisition dans le mini-buffer d un nom de fichier, tout le fichier est interprété.

122 D autres commandes utiles sont : eval-last-sexp : en général liée à la clé C-x C-e, provoque l évaluation de l expression LISP immédiatement avant le curseur dans le buffer courant. Le résultat est affiché dans le mini-buffer. eval-region : provoque l interprétation de toute la région courante dans le buffer courant. load-file : après l acquisition dans le mini-buffer d un nom de fichier, tout le fichier est interprété.

123 D autres commandes utiles sont : eval-last-sexp : en général liée à la clé C-x C-e, provoque l évaluation de l expression LISP immédiatement avant le curseur dans le buffer courant. Le résultat est affiché dans le mini-buffer. eval-region : provoque l interprétation de toute la région courante dans le buffer courant. load-file : après l acquisition dans le mini-buffer d un nom de fichier, tout le fichier est interprété.

124 ( defun numerote ( ) Numerote t o u t e l e s l i g n e s du b u f f e r ( i n t e r a c t i v e ) ( b e g i n n i n g o f b u f f e r ) ( l e t ( ( n 0) ) ( w h i l e (< ( p o i n t ) ( point max ) ) ( b e g i n n i n g o f l i n e ) ( s e t q n (+ n 1 ) ) ( i n s e r t s t r i n g n : ) ( n e x t l i n e 1) ) ) )

125 ( defun denumerote ( ) D e f a i t l e numerotage ( i n t e r a c t i v e ) ( b e g i n n i n g o f b u f f e r ) ( w h i l e (< ( p o i n t ) ( point max ) ) ( b e g i n n i n g o f l i n e ) ( r e p l a c e r e g e x p [0 9] : ) ( n e x t l i n e 1) ) )

126 ( defun genere numeros ( n ) I n s e r e l a s u i t e n a l a p o s i t i o n du c u r s e u r ( par d e f a u t n vaut 10) ( i n t e r a c t i v e p ) ( i f (= n 1) ( s e t q n 1 0)) ( w h i l e (>= n 0) ( i n s e r t ( format %d n ) ) ( s e t q n ( n 1 ) ) ) ) ( global set key \M n genere numeros )

127 Types de données 1. les nombres entiers : 12, et les chaînes de caractères : "un exemple" 3. les symboles : numerote, n, while, * 4. les listes : (1 2 3), ("bonjour" ("a" vous) 2), (* n 2), (quote (* n 2)), () Dans les tests, la liste vide () est interprétée comme faux. Toute autre valeur de quelque type que ce soit est interprétée comme vrai. Emacs-Lisp manipule d autres types de données comme les nombres flottants et les vecteurs, mais aussi des types de données plus spécialisés comme les buffers, les marques, les tables de liaison, etc

128 Types de données 1. les nombres entiers : 12, et les chaînes de caractères : "un exemple" 3. les symboles : numerote, n, while, * 4. les listes : (1 2 3), ("bonjour" ("a" vous) 2), (* n 2), (quote (* n 2)), () Dans les tests, la liste vide () est interprétée comme faux. Toute autre valeur de quelque type que ce soit est interprétée comme vrai. Emacs-Lisp manipule d autres types de données comme les nombres flottants et les vecteurs, mais aussi des types de données plus spécialisés comme les buffers, les marques, les tables de liaison, etc

129 Types de données 1. les nombres entiers : 12, et les chaînes de caractères : "un exemple" 3. les symboles : numerote, n, while, * 4. les listes : (1 2 3), ("bonjour" ("a" vous) 2), (* n 2), (quote (* n 2)), () Dans les tests, la liste vide () est interprétée comme faux. Toute autre valeur de quelque type que ce soit est interprétée comme vrai. Emacs-Lisp manipule d autres types de données comme les nombres flottants et les vecteurs, mais aussi des types de données plus spécialisés comme les buffers, les marques, les tables de liaison, etc

130 Types de données 1. les nombres entiers : 12, et les chaînes de caractères : "un exemple" 3. les symboles : numerote, n, while, * 4. les listes : (1 2 3), ("bonjour" ("a" vous) 2), (* n 2), (quote (* n 2)), () Dans les tests, la liste vide () est interprétée comme faux. Toute autre valeur de quelque type que ce soit est interprétée comme vrai. Emacs-Lisp manipule d autres types de données comme les nombres flottants et les vecteurs, mais aussi des types de données plus spécialisés comme les buffers, les marques, les tables de liaison, etc

131 Types de données 1. les nombres entiers : 12, et les chaînes de caractères : "un exemple" 3. les symboles : numerote, n, while, * 4. les listes : (1 2 3), ("bonjour" ("a" vous) 2), (* n 2), (quote (* n 2)), () Dans les tests, la liste vide () est interprétée comme faux. Toute autre valeur de quelque type que ce soit est interprétée comme vrai. Emacs-Lisp manipule d autres types de données comme les nombres flottants et les vecteurs, mais aussi des types de données plus spécialisés comme les buffers, les marques, les tables de liaison, etc

132 Types de données 1. les nombres entiers : 12, et les chaînes de caractères : "un exemple" 3. les symboles : numerote, n, while, * 4. les listes : (1 2 3), ("bonjour" ("a" vous) 2), (* n 2), (quote (* n 2)), () Dans les tests, la liste vide () est interprétée comme faux. Toute autre valeur de quelque type que ce soit est interprétée comme vrai. Emacs-Lisp manipule d autres types de données comme les nombres flottants et les vecteurs, mais aussi des types de données plus spécialisés comme les buffers, les marques, les tables de liaison, etc

133 Évaluations des expressions L écriture expression est une forme abrégée de (quote expression) qui empêche l évaluation de l expression. A contrario, (eval expression) force l évaluation du résultat de l expression. Exemple : (progn (setq a 3) (setq x a) (setq y a) (setq z (+ a 1)) (setq w (+ a 1))) = x vaut 3, y vaut a, z vaut 4 et w vaut (+ a 1) ; (eval x) vaut 3, (eval y) vaut 3, (eval z) vaut 4 et (eval w) vaut 4. Le symbole nil a une valeur prédéfinie : la liste vide (). Le symbole t a une valeur prédéfinie : le symbole t ; cette valeur est utilisée comme vrai. Le caractère ; introduit un commentaire.

134 Évaluations des expressions L écriture expression est une forme abrégée de (quote expression) qui empêche l évaluation de l expression. A contrario, (eval expression) force l évaluation du résultat de l expression. Exemple : (progn (setq a 3) (setq x a) (setq y a) (setq z (+ a 1)) (setq w (+ a 1))) = x vaut 3, y vaut a, z vaut 4 et w vaut (+ a 1) ; (eval x) vaut 3, (eval y) vaut 3, (eval z) vaut 4 et (eval w) vaut 4. Le symbole nil a une valeur prédéfinie : la liste vide (). Le symbole t a une valeur prédéfinie : le symbole t ; cette valeur est utilisée comme vrai. Le caractère ; introduit un commentaire.

135 Évaluations des expressions L écriture expression est une forme abrégée de (quote expression) qui empêche l évaluation de l expression. A contrario, (eval expression) force l évaluation du résultat de l expression. Exemple : (progn (setq a 3) (setq x a) (setq y a) (setq z (+ a 1)) (setq w (+ a 1))) = x vaut 3, y vaut a, z vaut 4 et w vaut (+ a 1) ; (eval x) vaut 3, (eval y) vaut 3, (eval z) vaut 4 et (eval w) vaut 4. Le symbole nil a une valeur prédéfinie : la liste vide (). Le symbole t a une valeur prédéfinie : le symbole t ; cette valeur est utilisée comme vrai. Le caractère ; introduit un commentaire.

136 Évaluations des expressions L écriture expression est une forme abrégée de (quote expression) qui empêche l évaluation de l expression. A contrario, (eval expression) force l évaluation du résultat de l expression. Exemple : (progn (setq a 3) (setq x a) (setq y a) (setq z (+ a 1)) (setq w (+ a 1))) = x vaut 3, y vaut a, z vaut 4 et w vaut (+ a 1) ; (eval x) vaut 3, (eval y) vaut 3, (eval z) vaut 4 et (eval w) vaut 4. Le symbole nil a une valeur prédéfinie : la liste vide (). Le symbole t a une valeur prédéfinie : le symbole t ; cette valeur est utilisée comme vrai. Le caractère ; introduit un commentaire.

137 Évaluations des expressions L écriture expression est une forme abrégée de (quote expression) qui empêche l évaluation de l expression. A contrario, (eval expression) force l évaluation du résultat de l expression. Exemple : (progn (setq a 3) (setq x a) (setq y a) (setq z (+ a 1)) (setq w (+ a 1))) = x vaut 3, y vaut a, z vaut 4 et w vaut (+ a 1) ; (eval x) vaut 3, (eval y) vaut 3, (eval z) vaut 4 et (eval w) vaut 4. Le symbole nil a une valeur prédéfinie : la liste vide (). Le symbole t a une valeur prédéfinie : le symbole t ; cette valeur est utilisée comme vrai. Le caractère ; introduit un commentaire.

138 Évaluations des expressions L écriture expression est une forme abrégée de (quote expression) qui empêche l évaluation de l expression. A contrario, (eval expression) force l évaluation du résultat de l expression. Exemple : (progn (setq a 3) (setq x a) (setq y a) (setq z (+ a 1)) (setq w (+ a 1))) = x vaut 3, y vaut a, z vaut 4 et w vaut (+ a 1) ; (eval x) vaut 3, (eval y) vaut 3, (eval z) vaut 4 et (eval w) vaut 4. Le symbole nil a une valeur prédéfinie : la liste vide (). Le symbole t a une valeur prédéfinie : le symbole t ; cette valeur est utilisée comme vrai. Le caractère ; introduit un commentaire.

139 Évaluations des expressions L écriture expression est une forme abrégée de (quote expression) qui empêche l évaluation de l expression. A contrario, (eval expression) force l évaluation du résultat de l expression. Exemple : (progn (setq a 3) (setq x a) (setq y a) (setq z (+ a 1)) (setq w (+ a 1))) = x vaut 3, y vaut a, z vaut 4 et w vaut (+ a 1) ; (eval x) vaut 3, (eval y) vaut 3, (eval z) vaut 4 et (eval w) vaut 4. Le symbole nil a une valeur prédéfinie : la liste vide (). Le symbole t a une valeur prédéfinie : le symbole t ; cette valeur est utilisée comme vrai. Le caractère ; introduit un commentaire.

140 Évaluations des expressions L écriture expression est une forme abrégée de (quote expression) qui empêche l évaluation de l expression. A contrario, (eval expression) force l évaluation du résultat de l expression. Exemple : (progn (setq a 3) (setq x a) (setq y a) (setq z (+ a 1)) (setq w (+ a 1))) = x vaut 3, y vaut a, z vaut 4 et w vaut (+ a 1) ; (eval x) vaut 3, (eval y) vaut 3, (eval z) vaut 4 et (eval w) vaut 4. Le symbole nil a une valeur prédéfinie : la liste vide (). Le symbole t a une valeur prédéfinie : le symbole t ; cette valeur est utilisée comme vrai. Le caractère ; introduit un commentaire.

141 Fonctions essentielles (if cond expr 1 expr 2...expr n ) : évalue cond puis, si cond a une valeur différente de nil alors évalue expr 1, sinon évalue expr 2,..., expr n. La valeur du if est celle de expr 1 ou celle de expr n, suivant le cas. (while cond expr 1...expr n ) : évalue cond et tant que la valeur de cond diffère de nil, alors expr 1,..., expr n et cond sont réévaluées. La valeur finale du while est toujours nil.

142 Fonctions essentielles (if cond expr 1 expr 2...expr n ) : évalue cond puis, si cond a une valeur différente de nil alors évalue expr 1, sinon évalue expr 2,..., expr n. La valeur du if est celle de expr 1 ou celle de expr n, suivant le cas. (while cond expr 1...expr n ) : évalue cond et tant que la valeur de cond diffère de nil, alors expr 1,..., expr n et cond sont réévaluées. La valeur finale du while est toujours nil.

143 Fonctions essentielles (if cond expr 1 expr 2...expr n ) : évalue cond puis, si cond a une valeur différente de nil alors évalue expr 1, sinon évalue expr 2,..., expr n. La valeur du if est celle de expr 1 ou celle de expr n, suivant le cas. (while cond expr 1...expr n ) : évalue cond et tant que la valeur de cond diffère de nil, alors expr 1,..., expr n et cond sont réévaluées. La valeur finale du while est toujours nil.

144 Fonctions essentielles (suite) (let (symb 1...symb p ) expr 1...expr n ) : évalue expr 1,..., expr n en y considérant symb 1,..., symb p comme des variables locales. Chaque symbole de la liste en 1 er paramètre de let, peut recevoir une valeur initiale en mettant (symb expr) en lieu et place de symb tout court. La valeur du let est celle de expr n. (defun symb (symb 1...symb p ) [ string ] expr 1...expr n ) : affecte à symb la fonction ayant symb 1,..., symb p comme paramètres formels et expr 1,..., expr n comme corps. La chaîne de caractères string documente la fonction. La valeur retournée par defun est le symbole symb. La valeur retournée par la fonction sera celle de expr n.

145 Fonctions essentielles (suite) (let (symb 1...symb p ) expr 1...expr n ) : évalue expr 1,..., expr n en y considérant symb 1,..., symb p comme des variables locales. Chaque symbole de la liste en 1 er paramètre de let, peut recevoir une valeur initiale en mettant (symb expr) en lieu et place de symb tout court. La valeur du let est celle de expr n. (defun symb (symb 1...symb p ) [ string ] expr 1...expr n ) : affecte à symb la fonction ayant symb 1,..., symb p comme paramètres formels et expr 1,..., expr n comme corps. La chaîne de caractères string documente la fonction. La valeur retournée par defun est le symbole symb. La valeur retournée par la fonction sera celle de expr n.

146 Introduction Plan de la section Compilation Mise au point Édition Documentation Introduction L A TEX Gestion de versions

147 Introduction L A TEX est un langage pour construire des documents textuels. Le compilateur a pour fonction essentielle de permettre le calcul de la présentation d un document à partir de sa structure. Il intègre pour le faire une très grande expertise des règles typographiques. Le langage doit donc permettre aussi bien d exprimer la structure d un document que d exprimer la présentation d un document. La construction d un document en L A TEX comprend deux parties : 1. choisir sa classe : la manière de calculer sa présentation 2. décrire sa structure

148 Introduction L A TEX est un langage pour construire des documents textuels. Le compilateur a pour fonction essentielle de permettre le calcul de la présentation d un document à partir de sa structure. Il intègre pour le faire une très grande expertise des règles typographiques. Le langage doit donc permettre aussi bien d exprimer la structure d un document que d exprimer la présentation d un document. La construction d un document en L A TEX comprend deux parties : 1. choisir sa classe : la manière de calculer sa présentation 2. décrire sa structure

149 Introduction L A TEX est un langage pour construire des documents textuels. Le compilateur a pour fonction essentielle de permettre le calcul de la présentation d un document à partir de sa structure. Il intègre pour le faire une très grande expertise des règles typographiques. Le langage doit donc permettre aussi bien d exprimer la structure d un document que d exprimer la présentation d un document. La construction d un document en L A TEX comprend deux parties : 1. choisir sa classe : la manière de calculer sa présentation 2. décrire sa structure

150 Introduction L A TEX est un langage pour construire des documents textuels. Le compilateur a pour fonction essentielle de permettre le calcul de la présentation d un document à partir de sa structure. Il intègre pour le faire une très grande expertise des règles typographiques. Le langage doit donc permettre aussi bien d exprimer la structure d un document que d exprimer la présentation d un document. La construction d un document en L A TEX comprend deux parties : 1. choisir sa classe : la manière de calculer sa présentation 2. décrire sa structure

151 Introduction L A TEX est un langage pour construire des documents textuels. Le compilateur a pour fonction essentielle de permettre le calcul de la présentation d un document à partir de sa structure. Il intègre pour le faire une très grande expertise des règles typographiques. Le langage doit donc permettre aussi bien d exprimer la structure d un document que d exprimer la présentation d un document. La construction d un document en L A TEX comprend deux parties : 1. choisir sa classe : la manière de calculer sa présentation 2. décrire sa structure

152 Introduction L A TEX est un langage pour construire des documents textuels. Le compilateur a pour fonction essentielle de permettre le calcul de la présentation d un document à partir de sa structure. Il intègre pour le faire une très grande expertise des règles typographiques. Le langage doit donc permettre aussi bien d exprimer la structure d un document que d exprimer la présentation d un document. La construction d un document en L A TEX comprend deux parties : 1. choisir sa classe : la manière de calculer sa présentation 2. décrire sa structure

153 Introduction L A TEX est un langage pour construire des documents textuels. Le compilateur a pour fonction essentielle de permettre le calcul de la présentation d un document à partir de sa structure. Il intègre pour le faire une très grande expertise des règles typographiques. Le langage doit donc permettre aussi bien d exprimer la structure d un document que d exprimer la présentation d un document. La construction d un document en L A TEX comprend deux parties : 1. choisir sa classe : la manière de calculer sa présentation 2. décrire sa structure

154 Introduction L A TEX est un langage pour construire des documents textuels. Le compilateur a pour fonction essentielle de permettre le calcul de la présentation d un document à partir de sa structure. Il intègre pour le faire une très grande expertise des règles typographiques. Le langage doit donc permettre aussi bien d exprimer la structure d un document que d exprimer la présentation d un document. La construction d un document en L A TEX comprend deux parties : 1. choisir sa classe : la manière de calculer sa présentation 2. décrire sa structure

155 B.I.D.O.N Rue des Mots Sassonne-le-Creux Tél Fax : Sassonne-le-Creux, le 4 février 2010 Professeur Donald E. Knuth Stanford University Stanford, CA États-Unis Objet : Concours Regeot Cher Professeur Knuth, Nous vous informons que votre participation au grand jeu-concours Magazine Regeot - Hiver 2008 a bien été prise en compte. Rendez-vous sur à partir du 14 mai pour connaître la liste des gagnants! Ce message a été adressé à l aide des informations du fichier client de la société Automobiles Regeot. Vous bénéficiez d un droit d accès, de modification, de rectification et/ou de suppression des informations vous concernant. Pour exercer ce droit, il vous suffit de l exprimer par écrit auprès de Automobiles Regeot. Veuillez agréez, cher Professeur, à l expression de mes sentiments les meilleurs. C.c. Mme Jeanne Poto Pierre Martin

156 \ documentclass [ 1 2 pt, a 4 ] { l e t t r e } \usepackage [ f r e n c h ] { b a b e l } \usepackage [ u t f 8 ] { i n p u t e n c } \ begin { document } \name{ P i e r r e Martin } \ begin { l e t t e r }{ P r o f e s s e u r... Etats Unis } \ conc { Concours Regeot } \ opening { Cher P r o f e s s e u r Knuth, } Nous vous i n f o r m o n s que... des gagnants! Ce message a... Regeot. \ c l o s i n g { V e u i l l e z... m e i l l e u r s. } \ cc {Mme Jeanne Poto } \end{ l e t t e r } \end{ document }

157 \ documentclass [ 1 2 pt ] { a r t i c l e } \usepackage [ f r e n c h ] { b a b e l } \ t i t l e {Un exemple b a s i q u e } \ author { Bernard V a u q u e l i n } \ begin { document } \ m a k e t i t l e \ t a b l e o f c o n t e n t s \ s e c t i o n {La une } Cet a r t i c l e e s t t r o p... s i m p l e. Cet a r t i c l e e s t t r o p... s i m p l e. \ s e c t i o n {La deux } La s u i t e p l u s t a r d. \end{ document }

158 Un exemple basique Bernard Vauquelin 4 février 2010 Table des matières 1 La une 1 2 La deux 1 1 La une Cet article est trop simple. Cet article est trop simple. Cet article est trop simple. Cet article est trop simple. Cet article est trop simple. Cet article est trop simple. Cet article est trop simple. Cet article est trop simple. Cet article est trop simple. 2 La deux La suite plus tard. 1

159 \ documentclass { beamer } \usepackage [ f r e n c h ] { b a b e l } \ usetheme { AnnArbor } \ begin { document } \ begin { frame } \ f r a m e t i t l e { T r o i s cas } \ begin { enumerate } \item un bon \item l e mauvais \item un a u t r e \end{ enumerate } \end{ frame } \ begin { frame } Rien \end{ frame } \end{ document }

160 Trois cas 1 un bon 2 le mauvais 3 un autre

161 Historique Donald E. Knuth écrit la première version de TEX entre 1977 et 1982 pour pouvoir éditer son encyclopédie The Art of Computer Programming de la meilleure manière qui soit. Leslie Lamport propose au début des années 80 un ensemble de macros TEX qui définit L A TEX. D.E. Knuth rémunére les bugs découverts dans ses compilateurs et dans ses livres. Il a fixé le prix à 1 centime de dollar pour le premier bug, puis double le prix à chaque nouveau bug découvert! (cf. Alexandre le Grand et Aristote). D.E. Knuth a été fait Docteur Honoris Causa de l Université Bordeaux 1 le 30 octobre 2007.

162 Historique Donald E. Knuth écrit la première version de TEX entre 1977 et 1982 pour pouvoir éditer son encyclopédie The Art of Computer Programming de la meilleure manière qui soit. Leslie Lamport propose au début des années 80 un ensemble de macros TEX qui définit L A TEX. D.E. Knuth rémunére les bugs découverts dans ses compilateurs et dans ses livres. Il a fixé le prix à 1 centime de dollar pour le premier bug, puis double le prix à chaque nouveau bug découvert! (cf. Alexandre le Grand et Aristote). D.E. Knuth a été fait Docteur Honoris Causa de l Université Bordeaux 1 le 30 octobre 2007.

163 Historique Donald E. Knuth écrit la première version de TEX entre 1977 et 1982 pour pouvoir éditer son encyclopédie The Art of Computer Programming de la meilleure manière qui soit. Leslie Lamport propose au début des années 80 un ensemble de macros TEX qui définit L A TEX. D.E. Knuth rémunére les bugs découverts dans ses compilateurs et dans ses livres. Il a fixé le prix à 1 centime de dollar pour le premier bug, puis double le prix à chaque nouveau bug découvert! (cf. Alexandre le Grand et Aristote). D.E. Knuth a été fait Docteur Honoris Causa de l Université Bordeaux 1 le 30 octobre 2007.

164 Historique Donald E. Knuth écrit la première version de TEX entre 1977 et 1982 pour pouvoir éditer son encyclopédie The Art of Computer Programming de la meilleure manière qui soit. Leslie Lamport propose au début des années 80 un ensemble de macros TEX qui définit L A TEX. D.E. Knuth rémunére les bugs découverts dans ses compilateurs et dans ses livres. Il a fixé le prix à 1 centime de dollar pour le premier bug, puis double le prix à chaque nouveau bug découvert! (cf. Alexandre le Grand et Aristote). D.E. Knuth a été fait Docteur Honoris Causa de l Université Bordeaux 1 le 30 octobre 2007.

165 Historique Donald E. Knuth écrit la première version de TEX entre 1977 et 1982 pour pouvoir éditer son encyclopédie The Art of Computer Programming de la meilleure manière qui soit. Leslie Lamport propose au début des années 80 un ensemble de macros TEX qui définit L A TEX. D.E. Knuth rémunére les bugs découverts dans ses compilateurs et dans ses livres. Il a fixé le prix à 1 centime de dollar pour le premier bug, puis double le prix à chaque nouveau bug découvert! (cf. Alexandre le Grand et Aristote). D.E. Knuth a été fait Docteur Honoris Causa de l Université Bordeaux 1 le 30 octobre 2007.

166 Historique Donald E. Knuth écrit la première version de TEX entre 1977 et 1982 pour pouvoir éditer son encyclopédie The Art of Computer Programming de la meilleure manière qui soit. Leslie Lamport propose au début des années 80 un ensemble de macros TEX qui définit L A TEX. D.E. Knuth rémunére les bugs découverts dans ses compilateurs et dans ses livres. Il a fixé le prix à 1 centime de dollar pour le premier bug, puis double le prix à chaque nouveau bug découvert! (cf. Alexandre le Grand et Aristote). D.E. Knuth a été fait Docteur Honoris Causa de l Université Bordeaux 1 le 30 octobre 2007.

167 Avantages Mise en page professionnelle sans souci, structures complexes facilitées, maintenance aisée, format standard et durable.

168 Avantages Mise en page professionnelle sans souci, structures complexes facilitées, maintenance aisée, format standard et durable.

169 Avantages Mise en page professionnelle sans souci, structures complexes facilitées, maintenance aisée, format standard et durable.

170 Avantages Mise en page professionnelle sans souci, structures complexes facilitées, maintenance aisée, format standard et durable.

171 Avantages Mise en page professionnelle sans souci, structures complexes facilitées, maintenance aisée, format standard et durable.

172 Forme générale \ documentclass[< o p t i o n s >]{< c l a s s e >} \usepackage[< o p t i o n s >{<paquetage >}... \ begin { document } % <commentaires>... \end{ document } Classes : book, article, letter, présentations, affiches, partitions musicales,... Paquetages : babel, inputenc, a4wide, multicol, ams,...

173 Forme générale \ documentclass[< o p t i o n s >]{< c l a s s e >} \usepackage[< o p t i o n s >{<paquetage >}... \ begin { document } % <commentaires>... \end{ document } Classes : book, article, letter, présentations, affiches, partitions musicales,... Paquetages : babel, inputenc, a4wide, multicol, ams,...

174 Forme générale \ documentclass[< o p t i o n s >]{< c l a s s e >} \usepackage[< o p t i o n s >{<paquetage >}... \ begin { document } % <commentaires>... \end{ document } Classes : book, article, letter, présentations, affiches, partitions musicales,... Paquetages : babel, inputenc, a4wide, multicol, ams,...

175 Modularité \ input{< f i c h i e r >} \ i n c l u d e o n l y{< l i s t e de f i c h i e r s >} \ i n c l ude{< f i c h i e r >} Pour \include : conditionnel, pas de suffixe dans les noms de fichiers, uniquement dans le corps du document et nécessairement à une frontière de page. Le paquetage graphicx définit aussi : \ i n c l u d e g r a p h i c s [< o p t i o n s >]{< f i c h i e r >}

176 Modularité \ input{< f i c h i e r >} \ i n c l u d e o n l y{< l i s t e de f i c h i e r s >} \ i n c l ude{< f i c h i e r >} Pour \include : conditionnel, pas de suffixe dans les noms de fichiers, uniquement dans le corps du document et nécessairement à une frontière de page. Le paquetage graphicx définit aussi : \ i n c l u d e g r a p h i c s [< o p t i o n s >]{< f i c h i e r >}

177 Modularité \ input{< f i c h i e r >} \ i n c l u d e o n l y{< l i s t e de f i c h i e r s >} \ i n c l ude{< f i c h i e r >} Pour \include : conditionnel, pas de suffixe dans les noms de fichiers, uniquement dans le corps du document et nécessairement à une frontière de page. Le paquetage graphicx définit aussi : \ i n c l u d e g r a p h i c s [< o p t i o n s >]{< f i c h i e r >}

178 Chapitrage Hiérarchie : \ c h a p t e r ( T i t r e de c h a p i t r e } \ s e c t i o n { T i t r e de s e c t i o n } \ paragraph { T i t r e de p a r a g r a p h e } Peuvent exister : \part, \chapter, \section, \subsection, \subsubsection, \paragraph, \subparagraph. Variations : \ s e c t i o n { Pas dans l a TdM} \ s e c t i o n [ T i t r e c o u r t ] { T i t r e... l o n g }

179 Chapitrage Hiérarchie : \ c h a p t e r ( T i t r e de c h a p i t r e } \ s e c t i o n { T i t r e de s e c t i o n } \ paragraph { T i t r e de p a r a g r a p h e } Peuvent exister : \part, \chapter, \section, \subsection, \subsubsection, \paragraph, \subparagraph. Variations : \ s e c t i o n { Pas dans l a TdM} \ s e c t i o n [ T i t r e c o u r t ] { T i t r e... l o n g }

180 Chapitrage Hiérarchie : \ c h a p t e r ( T i t r e de c h a p i t r e } \ s e c t i o n { T i t r e de s e c t i o n } \ paragraph { T i t r e de p a r a g r a p h e } Peuvent exister : \part, \chapter, \section, \subsection, \subsubsection, \paragraph, \subparagraph. Variations : \ s e c t i o n { Pas dans l a TdM} \ s e c t i o n [ T i t r e c o u r t ] { T i t r e... l o n g }

181 Chapitrage Hiérarchie : \ c h a p t e r ( T i t r e de c h a p i t r e } \ s e c t i o n { T i t r e de s e c t i o n } \ paragraph { T i t r e de p a r a g r a p h e } Peuvent exister : \part, \chapter, \section, \subsection, \subsubsection, \paragraph, \subparagraph. Variations : \ s e c t i o n { Pas dans l a TdM} \ s e c t i o n [ T i t r e c o u r t ] { T i t r e... l o n g }

182 Mathématiques La v a l e u r de $x i La valeur de x i 2 n+1 yi 2 est 2ˆ{ n+1} y i ˆ2$ e s t comme comme dans dans $$ z= p \sum { k=1}ˆp \ f r a c {1}{ 1 z = \ alpha+kˆ{ x i }} 1$$ α + k x 1 i k=1 a p proximativement! approximativement!

183 Environnements \ begin{<environnement >}[< o p t i o n s > ] \end{<environnement >} Le t e x t e e s t l e s u i v a n t : \ begin { v e r s e } Un exemple i d i o t de t e x t e s t u p i d e. \end{ v e r s e } C e s t f i n i. Le texte est le suivant : Un exemple idiot de texte stupide. C est fini.

184 Listes \ begin { enumerate } \item N a r c i s s e \item [ 1 b i s ] T u l i p e \item Rose \ l a b e l { t o t o } \end{ enumerate } \ begin { d e s c r i p t i o n } 1. Narcisse 1bis Tulipe 2. Rose \item [ rouge ] une c o u l e u r rouge une couleur \item [ b l e u c i e l ] 1 a u t r e \ begin { i t e m i z e } bleu ciel 1 autre \item f r o i d froid \item lumineux lumineux \end{ i t e m i z e } vert encore une \item [ v e r t ] e n c o r e une \end{ d e s c r i p t i o n }

185 Tableaux Exemple de l a p r o c h a i n e l i g n e 1 2 : \ begin { t a b u l a r } { l cc } \ h l i n e rouge & 17 & 1 \\ Exemple de la prochaine ligne \ h l i n e rouge 17-1 b l e u c i e l & 3 & 12 \\ 12 : bleu ciel 3 12 etc \ h l i n e vert nul 9 v e r t & \ i t n u l & 9 \\ \ h l i n e \end{ t a b u l a r } e t c

186 Autres environnements Divers : center, flushleft, flushright, quote, quotation, theorem, verbatim, list, titlepage, thebibliography, minipage, tabbing, picture. Mathématiques : math, displaymath, equation, eqnarray, array. Flottants : figure, table : peuvent avoir une légende (\caption{...}), se placent librement dans la page, ont leurs propres tables de références.

187 Autres environnements Divers : center, flushleft, flushright, quote, quotation, theorem, verbatim, list, titlepage, thebibliography, minipage, tabbing, picture. Mathématiques : math, displaymath, equation, eqnarray, array. Flottants : figure, table : peuvent avoir une légende (\caption{...}), se placent librement dans la page, ont leurs propres tables de références.

188 Autres environnements Divers : center, flushleft, flushright, quote, quotation, theorem, verbatim, list, titlepage, thebibliography, minipage, tabbing, picture. Mathématiques : math, displaymath, equation, eqnarray, array. Flottants : figure, table : peuvent avoir une légende (\caption{...}), se placent librement dans la page, ont leurs propres tables de références.

189 Références A l l e z v o i r \ footnote { s i vous l e v o u l e z } l a f l e u r dans l item \ r e f { t o t o } en page \ pageref { t o t o }. Bla b l a \& b l a b l a \& \ l d o t s Allez voir a la fleur dans l item 2 en page 184. Bla bla & bla bla &... a si vous le voulez

190 Mise en forme L \ ˆ age de l \ oe{} u v r e de l \ t e x t b f { I l i a d e } L âge de l œuvre de l Iliade e s t \\ t r \ es est c e r\ t a i \ ne\ ment {\ l a r g e très certainement particulièrement difficile à p a r t i c u l i \ erement \emph{ d i f f i c i l e } deviner. \ a } d e v i n e r. \textit{...},... ; \it, \rm,... ; \tiny, \normalsize,... ; \sloppy et \fussy. \linebreak[<0 à 4>] ; \pagebreak[<0 à 4>], \nopagebreak[<0 à 4>], \newpage, \clearpage.

191 Mise en forme L \ ˆ age de l \ oe{} u v r e de l \ t e x t b f { I l i a d e } L âge de l œuvre de l Iliade e s t \\ t r \ es est c e r\ t a i \ ne\ ment {\ l a r g e très certainement particulièrement difficile à p a r t i c u l i \ erement \emph{ d i f f i c i l e } deviner. \ a } d e v i n e r. \textit{...},... ; \it, \rm,... ; \tiny, \normalsize,... ; \sloppy et \fussy. \linebreak[<0 à 4>] ; \pagebreak[<0 à 4>], \nopagebreak[<0 à 4>], \newpage, \clearpage.

192 Mise en forme L \ ˆ age de l \ oe{} u v r e de l \ t e x t b f { I l i a d e } L âge de l œuvre de l Iliade e s t \\ t r \ es est c e r\ t a i \ ne\ ment {\ l a r g e très certainement particulièrement difficile à p a r t i c u l i \ erement \emph{ d i f f i c i l e } deviner. \ a } d e v i n e r. \textit{...},... ; \it, \rm,... ; \tiny, \normalsize,... ; \sloppy et \fussy. \linebreak[<0 à 4>] ; \pagebreak[<0 à 4>], \nopagebreak[<0 à 4>], \newpage, \clearpage.

193 Mise en forme L \ ˆ age de l \ oe{} u v r e de l \ t e x t b f { I l i a d e } L âge de l œuvre de l Iliade e s t \\ t r \ es est c e r\ t a i \ ne\ ment {\ l a r g e très certainement particulièrement difficile à p a r t i c u l i \ erement \emph{ d i f f i c i l e } deviner. \ a } d e v i n e r. \textit{...},... ; \it, \rm,... ; \tiny, \normalsize,... ; \sloppy et \fussy. \linebreak[<0 à 4>] ; \pagebreak[<0 à 4>], \nopagebreak[<0 à 4>], \newpage, \clearpage.

194 Mise en forme L \ ˆ age de l \ oe{} u v r e de l \ t e x t b f { I l i a d e } L âge de l œuvre de l Iliade e s t \\ t r \ es est c e r\ t a i \ ne\ ment {\ l a r g e très certainement particulièrement difficile à p a r t i c u l i \ erement \emph{ d i f f i c i l e } deviner. \ a } d e v i n e r. \textit{...},... ; \it, \rm,... ; \tiny, \normalsize,... ; \sloppy et \fussy. \linebreak[<0 à 4>] ; \pagebreak[<0 à 4>], \nopagebreak[<0 à 4>], \newpage, \clearpage.

195 Mise en forme L \ ˆ age de l \ oe{} u v r e de l \ t e x t b f { I l i a d e } L âge de l œuvre de l Iliade e s t \\ t r \ es est c e r\ t a i \ ne\ ment {\ l a r g e très certainement particulièrement difficile à p a r t i c u l i \ erement \emph{ d i f f i c i l e } deviner. \ a } d e v i n e r. \textit{...},... ; \it, \rm,... ; \tiny, \normalsize,... ; \sloppy et \fussy. \linebreak[<0 à 4>] ; \pagebreak[<0 à 4>], \nopagebreak[<0 à 4>], \newpage, \clearpage.

196 Mise en forme L \ ˆ age de l \ oe{} u v r e de l \ t e x t b f { I l i a d e } L âge de l œuvre de l Iliade e s t \\ t r \ es est c e r\ t a i \ ne\ ment {\ l a r g e très certainement particulièrement difficile à p a r t i c u l i \ erement \emph{ d i f f i c i l e } deviner. \ a } d e v i n e r. \textit{...},... ; \it, \rm,... ; \tiny, \normalsize,... ; \sloppy et \fussy. \linebreak[<0 à 4>] ; \pagebreak[<0 à 4>], \nopagebreak[<0 à 4>], \newpage, \clearpage.

197 Programmation \newcommand{\ u b x i }{\ b f U n i v e r s i t \ e Bordeaux 1} \newcommand{\ a l a } [ 1 ] {$ˆ{\mbox{% Ceci est le 1 er essai de \ s c r i p t s i z e #1}}$} M e Pierre à l Université C e c i e s t l e 1\ a l a { e r } Bordeaux 1. e s s a i de M\ a l a { e } P i e r r e \ a l \ u b x i. Les \newcommand vont généralement avant \begin{document}. On peut aussi définir des environnements ; définir et calculer des compteurs, des longueurs, des nombres ; faire des tests. Toutes choses particulièrement utiles pour écrire des paquetages et définir de nouvelles classes de documents.

198 Programmation \newcommand{\ u b x i }{\ b f U n i v e r s i t \ e Bordeaux 1} \newcommand{\ a l a } [ 1 ] {$ˆ{\mbox{% Ceci est le 1 er essai de \ s c r i p t s i z e #1}}$} M e Pierre à l Université C e c i e s t l e 1\ a l a { e r } Bordeaux 1. e s s a i de M\ a l a { e } P i e r r e \ a l \ u b x i. Les \newcommand vont généralement avant \begin{document}. On peut aussi définir des environnements ; définir et calculer des compteurs, des longueurs, des nombres ; faire des tests. Toutes choses particulièrement utiles pour écrire des paquetages et définir de nouvelles classes de documents.

199 Programmation \newcommand{\ u b x i }{\ b f U n i v e r s i t \ e Bordeaux 1} \newcommand{\ a l a } [ 1 ] {$ˆ{\mbox{% Ceci est le 1 er essai de \ s c r i p t s i z e #1}}$} M e Pierre à l Université C e c i e s t l e 1\ a l a { e r } Bordeaux 1. e s s a i de M\ a l a { e } P i e r r e \ a l \ u b x i. Les \newcommand vont généralement avant \begin{document}. On peut aussi définir des environnements ; définir et calculer des compteurs, des longueurs, des nombres ; faire des tests. Toutes choses particulièrement utiles pour écrire des paquetages et définir de nouvelles classes de documents.

200 Programmation \newcommand{\ u b x i }{\ b f U n i v e r s i t \ e Bordeaux 1} \newcommand{\ a l a } [ 1 ] {$ˆ{\mbox{% Ceci est le 1 er essai de \ s c r i p t s i z e #1}}$} M e Pierre à l Université C e c i e s t l e 1\ a l a { e r } Bordeaux 1. e s s a i de M\ a l a { e } P i e r r e \ a l \ u b x i. Les \newcommand vont généralement avant \begin{document}. On peut aussi définir des environnements ; définir et calculer des compteurs, des longueurs, des nombres ; faire des tests. Toutes choses particulièrement utiles pour écrire des paquetages et définir de nouvelles classes de documents.

201 Programmation \newcommand{\ u b x i }{\ b f U n i v e r s i t \ e Bordeaux 1} \newcommand{\ a l a } [ 1 ] {$ˆ{\mbox{% Ceci est le 1 er essai de \ s c r i p t s i z e #1}}$} M e Pierre à l Université C e c i e s t l e 1\ a l a { e r } Bordeaux 1. e s s a i de M\ a l a { e } P i e r r e \ a l \ u b x i. Les \newcommand vont généralement avant \begin{document}. On peut aussi définir des environnements ; définir et calculer des compteurs, des longueurs, des nombres ; faire des tests. Toutes choses particulièrement utiles pour écrire des paquetages et définir de nouvelles classes de documents.

202 Programmation \newcommand{\ u b x i }{\ b f U n i v e r s i t \ e Bordeaux 1} \newcommand{\ a l a } [ 1 ] {$ˆ{\mbox{% Ceci est le 1 er essai de \ s c r i p t s i z e #1}}$} M e Pierre à l Université C e c i e s t l e 1\ a l a { e r } Bordeaux 1. e s s a i de M\ a l a { e } P i e r r e \ a l \ u b x i. Les \newcommand vont généralement avant \begin{document}. On peut aussi définir des environnements ; définir et calculer des compteurs, des longueurs, des nombres ; faire des tests. Toutes choses particulièrement utiles pour écrire des paquetages et définir de nouvelles classes de documents.

203 Introduction Plan de la section Compilation Mise au point Édition Documentation Gestion de versions Présentation Compléments

204 Développement collaboratif et gestion de versions Les outils existant cumulent le plus souvent les deux fonctions : 1. travail à plusieurs et à distance sur un même projet 2. gestion des différentes versions d un même projet La méthode traditionnelle utilise la modèle client-serveur, où sont regroupées sur un seul serveur toutes les informations du projet. Si ces informations sont réparties sur plusieurs sites, on parle de modèle distribué.

205 Le modèle client-seveur Les informations partagées sont stockées dans un dépôt ( repository ) sur un serveur central.

206 Le problème

207 Les solutions 1. verrouiller pendant le travail ( lock-modify-unlock ) 2. travailler sur une copie ( copy-modify-merge )

208 Les solutions 1. verrouiller pendant le travail ( lock-modify-unlock ) 2. travailler sur une copie ( copy-modify-merge )

209 Verrou

210 Les solutions 1. verrouiller pendant le travail ( lock-modify-unlock ) 2. travailler sur une copie ( copy-modify-merge )

211 Copie (1/2)

212 Copie (2/2)

213 Les opérations de base de Subversion Ces opérations s appliquent à un ou plusieurs fichiers, le plus souvent on les applique à un répertoire entier. 1. Read : 1.1 la première fois : checkout (ou co) = création d une copie de travail à partir du contenu du dépôt 1.2 les fois suivantes : update (ou up) = mise à jour d une copie de travail existante à partir du contenu du dépôt 2. Write : commit (ou ci) = enregistrement dans le dépôt des dernières modifications effectuées dans une copie de travail (seule opération susceptible d être rejetée par Subversion)

214 Les opérations de base de Subversion Ces opérations s appliquent à un ou plusieurs fichiers, le plus souvent on les applique à un répertoire entier. 1. Read : 1.1 la première fois : checkout (ou co) = création d une copie de travail à partir du contenu du dépôt 1.2 les fois suivantes : update (ou up) = mise à jour d une copie de travail existante à partir du contenu du dépôt 2. Write : commit (ou ci) = enregistrement dans le dépôt des dernières modifications effectuées dans une copie de travail (seule opération susceptible d être rejetée par Subversion)

215 Les opérations de base de Subversion Ces opérations s appliquent à un ou plusieurs fichiers, le plus souvent on les applique à un répertoire entier. 1. Read : 1.1 la première fois : checkout (ou co) = création d une copie de travail à partir du contenu du dépôt 1.2 les fois suivantes : update (ou up) = mise à jour d une copie de travail existante à partir du contenu du dépôt 2. Write : commit (ou ci) = enregistrement dans le dépôt des dernières modifications effectuées dans une copie de travail (seule opération susceptible d être rejetée par Subversion)

216 Les opérations de base de Subversion Ces opérations s appliquent à un ou plusieurs fichiers, le plus souvent on les applique à un répertoire entier. 1. Read : 1.1 la première fois : checkout (ou co) = création d une copie de travail à partir du contenu du dépôt 1.2 les fois suivantes : update (ou up) = mise à jour d une copie de travail existante à partir du contenu du dépôt 2. Write : commit (ou ci) = enregistrement dans le dépôt des dernières modifications effectuées dans une copie de travail (seule opération susceptible d être rejetée par Subversion)

217 Les opérations de base de Subversion Ces opérations s appliquent à un ou plusieurs fichiers, le plus souvent on les applique à un répertoire entier. 1. Read : 1.1 la première fois : checkout (ou co) = création d une copie de travail à partir du contenu du dépôt 1.2 les fois suivantes : update (ou up) = mise à jour d une copie de travail existante à partir du contenu du dépôt 2. Write : commit (ou ci) = enregistrement dans le dépôt des dernières modifications effectuées dans une copie de travail (seule opération susceptible d être rejetée par Subversion)

218 Opérations de base dépôt checkout update commit commit update checkout copie de travail copie de travail

219 Opérations de base (suite) original import dépôt export checkout update commit commit update checkout copie de travail copie de travail

220 Syntaxe simplifiée des commandes Une ressource (fichier ou répertoire) d un dépôt est toujours désignée par une URL (http ://..., file ://... ). Une ressource locale est, elle, désignée par un chemin. svn [options] opération [source] [destination] [options] Exemples : svn checkout labri. fr /toto/trunk. svn update./doc svn commit. m Correction du bug 343. Chaque opération qui modifie le contenu du dépôt doit être accompagnée d un commentaire justificatif. En l absence de l option -m, svn ouvre un éditeur pour acquérir le commentaire.

221 Syntaxe simplifiée des commandes Une ressource (fichier ou répertoire) d un dépôt est toujours désignée par une URL (http ://..., file ://... ). Une ressource locale est, elle, désignée par un chemin. svn [options] opération [source] [destination] [options] Exemples : svn checkout labri. fr /toto/trunk. svn update./doc svn commit. m Correction du bug 343. Chaque opération qui modifie le contenu du dépôt doit être accompagnée d un commentaire justificatif. En l absence de l option -m, svn ouvre un éditeur pour acquérir le commentaire.

222 Syntaxe simplifiée des commandes Une ressource (fichier ou répertoire) d un dépôt est toujours désignée par une URL (http ://..., file ://... ). Une ressource locale est, elle, désignée par un chemin. svn [options] opération [source] [destination] [options] Exemples : svn checkout labri. fr /toto/trunk. svn update./doc svn commit. m Correction du bug 343. Chaque opération qui modifie le contenu du dépôt doit être accompagnée d un commentaire justificatif. En l absence de l option -m, svn ouvre un éditeur pour acquérir le commentaire.

223 Gestion des versions Svn conserve dans le dépôt toutes les versions successives de chaque fichier. Pour cela svn entretient un entier, le numéro de dernière révision 1, qui est initialisé à zéro à la création du dépôt, et incrémenté à chaque opération qui modifie le contenu du dépôt. Chaque version d un même fichier est repérée par le numéro de révision de l opération qui l a placée en dépôt. 1 noté HEAD

224 Gestion des versions Svn conserve dans le dépôt toutes les versions successives de chaque fichier. Pour cela svn entretient un entier, le numéro de dernière révision 1, qui est initialisé à zéro à la création du dépôt, et incrémenté à chaque opération qui modifie le contenu du dépôt. Chaque version d un même fichier est repérée par le numéro de révision de l opération qui l a placée en dépôt. 1 noté HEAD

225 Gestion des versions Svn conserve dans le dépôt toutes les versions successives de chaque fichier. Pour cela svn entretient un entier, le numéro de dernière révision 1, qui est initialisé à zéro à la création du dépôt, et incrémenté à chaque opération qui modifie le contenu du dépôt. Chaque version d un même fichier est repérée par le numéro de révision de l opération qui l a placée en dépôt. 1 noté HEAD

226 États d un fichier de travail Dans la copie de travail un fichier peut être dans un des 4 cas suivants. 1. localement pas modifié et inchangé dans le dépôt : non concerné par commit ni par update 2. localement modifié et inchangé dans le dépôt : il peut être enregistré sans problème dans le dépôt par commit et n est pas changé par un update 3. localement pas modifié et changé dans le dépôt : commit n a pas d effet, mais update le modifie pour le mettre à jour 4. localement modifié et changé dans le dépôt : commit échoue, update tente de fusionner les modifications et les changements, ou bien laisse l utilisateur régler le conflit

227 États d un fichier de travail Dans la copie de travail un fichier peut être dans un des 4 cas suivants. 1. localement pas modifié et inchangé dans le dépôt : non concerné par commit ni par update 2. localement modifié et inchangé dans le dépôt : il peut être enregistré sans problème dans le dépôt par commit et n est pas changé par un update 3. localement pas modifié et changé dans le dépôt : commit n a pas d effet, mais update le modifie pour le mettre à jour 4. localement modifié et changé dans le dépôt : commit échoue, update tente de fusionner les modifications et les changements, ou bien laisse l utilisateur régler le conflit

228 États d un fichier de travail Dans la copie de travail un fichier peut être dans un des 4 cas suivants. 1. localement pas modifié et inchangé dans le dépôt : non concerné par commit ni par update 2. localement modifié et inchangé dans le dépôt : il peut être enregistré sans problème dans le dépôt par commit et n est pas changé par un update 3. localement pas modifié et changé dans le dépôt : commit n a pas d effet, mais update le modifie pour le mettre à jour 4. localement modifié et changé dans le dépôt : commit échoue, update tente de fusionner les modifications et les changements, ou bien laisse l utilisateur régler le conflit

229 États d un fichier de travail Dans la copie de travail un fichier peut être dans un des 4 cas suivants. 1. localement pas modifié et inchangé dans le dépôt : non concerné par commit ni par update 2. localement modifié et inchangé dans le dépôt : il peut être enregistré sans problème dans le dépôt par commit et n est pas changé par un update 3. localement pas modifié et changé dans le dépôt : commit n a pas d effet, mais update le modifie pour le mettre à jour 4. localement modifié et changé dans le dépôt : commit échoue, update tente de fusionner les modifications et les changements, ou bien laisse l utilisateur régler le conflit

230 États d un fichier de travail Dans la copie de travail un fichier peut être dans un des 4 cas suivants. 1. localement pas modifié et inchangé dans le dépôt : non concerné par commit ni par update 2. localement modifié et inchangé dans le dépôt : il peut être enregistré sans problème dans le dépôt par commit et n est pas changé par un update 3. localement pas modifié et changé dans le dépôt : commit n a pas d effet, mais update le modifie pour le mettre à jour 4. localement modifié et changé dans le dépôt : commit échoue, update tente de fusionner les modifications et les changements, ou bien laisse l utilisateur régler le conflit

231 Exemples de commandes La commande svnadmin et les opérations import, checkout, update, commit, export svnadmin c r e a t e /home/ s v n r e p svn import. f i l e : ///home/ s v n r e p / t o t o / t r u n k svn checkout f i l e : ///home/ s v n r e p / t o t o / t r u n k t o t o svn update svn commit m Encore un bug en moins! svn e x p o r t r 345 f i l e : ///home/ s v n r e p / t o t o / t r u n k Quelques autres opérations : list, cat ; help ; status, log ; add, delete, copy, move ; diff, revert, resolved

232 Exemples de commandes La commande svnadmin et les opérations import, checkout, update, commit, export svnadmin c r e a t e /home/ s v n r e p svn import. f i l e : ///home/ s v n r e p / t o t o / t r u n k svn checkout f i l e : ///home/ s v n r e p / t o t o / t r u n k t o t o svn update svn commit m Encore un bug en moins! svn e x p o r t r 345 f i l e : ///home/ s v n r e p / t o t o / t r u n k Quelques autres opérations : list, cat ; help ; status, log ; add, delete, copy, move ; diff, revert, resolved

233 Historique très récent (fiabilité?) successeur de CVS 2, lui même basé sur RCS 3 déjà très utilisé en lieu et place de CVS 2 Concurrent Versions System 3 Revision Control System

234 Quelques états? présent localement mais absent du dépôt! absent localement mais présent dans le dépôt A va être ajouté dans le dépôt C en conflit (changé dans le dépôt et modifié localement au même endroit dans le fichier) G les modifications locales viennent d ête fusionnées avec les changements enregistrés dans le dépôt D va être supprimé du dépôt M localement modifié U vient d être modifié par une mise à jour (update)

235 Le dépôt Le niveau de sécurité et de confidentialité dépend du type de serveur utilisé : file utilise le contrôle d accès du système d exploitation svn utilise un serveur spécifique (svnserve), contrôle d accès minimaliste svn+ssh idem svn mais avec une couche ssh assurant un meilleur contrôle d accès et une parfaite confidentialité http utilise un serveur HTTP qui incorpore le protocole WebDAV, contrôle d accès minimaliste https idem avec contrôle d accès par SSL (sécurité optimale) Le système de fichier utilisé dans le dépôt est le plus souvent le système spécifique fsfs.

236 Les branches Le dépôt est traditionellement organisé comme suit : / projet 1/ trunk/ fichiers tags/ nom de version/fichiers... branches idem projet 2/ idem... Les branches et les tags son créés avec svn copy. La commande svn merge permet d envisager des fusions de branches.

237 Exemple de branchages

Environnement de développement / Projet de programmation 1 (J1INPW01) Compilation

Environnement de développement / Projet de programmation 1 (J1INPW01) Compilation Environnement de développement / Projet de programmation 1 (J1INPW01) Compilation Plan gcc (compilation et compilation séparée) Make (Makefile) Makefile générique 2 Compilation simple #include

Plus en détail

Compilation séparée avec make

Compilation séparée avec make ENSTA ParisTech École nationale supérieure de techniques avancées Compilation séparée avec make Cours IN201 Systèmes d exploitation Marc Baudoin La compilation séparée est

Plus en détail

Les logins et mots de passe sont les mêmes que l année dernière.

Les logins et mots de passe sont les mêmes que l année dernière. Travaux pratiques 01 2015 2016 1 Poste de travail 1.1 Connection Les logins et mots de passe sont les mêmes que l année dernière. 1.2 Le terminal Pour ouvrir un terminal, allez dans le menu en bas à gauche

Plus en détail

Utilisation de make. Chapitre 1. 1.1 make : pour quoi faire? 1.2 Introduction aux makefiles

Utilisation de make. Chapitre 1. 1.1 make : pour quoi faire? 1.2 Introduction aux makefiles Chapitre 1 Utilisation de make 1.1 make : pour quoi faire? make est un programme qui détermine automatiquement quelles parties d un programme doivent être recompilées, et exécute les commandes nécessaires

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Formation Unix/Linux (9) Introduction à la programmation C sous Unix

Formation Unix/Linux (9) Introduction à la programmation C sous Unix Formation Unix/Linux (9) Introduction à la programmation C sous Unix Olivier BOEBION Mars 2004 1 Le langage C Introduire un langage de développement dans des travaux pratiques sur un système d exploitation

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

Concevoir un Makefile. Vincent Loechner (original : Nicolas Zin, http://www.linux.efrei.fr/)

Concevoir un Makefile. Vincent Loechner (original : Nicolas Zin, http://www.linux.efrei.fr/) Concevoir un Makefile Vincent Loechner (original : Nicolas Zin, http://www.linux.efrei.fr/) 17 novembre 2003 Table des matières 1 Introduction 2 2 Création d un makefile 3 2.1 Simple Makefile............................

Plus en détail

Notes sur la compilation séparée

Notes sur la compilation séparée Annexe B Notes sur la compilation séparée Ce document est probablement imparfait, mais il devrait déjà donner une introduction raisonnable au sujet traité... B.1 Introduction La compilation séparée est

Plus en détail

Ecrire un Makefile, sans douleur et en quelques leçons.

Ecrire un Makefile, sans douleur et en quelques leçons. Ecrire un Makefile, sans douleur et en quelques leçons. M. Billaud Département Informatique Institut Universitaire de Technologie Université Bordeaux 1 Mai 2010 Résumé Ce document montre comment écrire

Plus en détail

Introduction au langage C

Introduction au langage C Organisation du cours Introduction au langage C Premier cours Notions générales Aurélien Max aurelien.max@limsi.fr 12 séances de cours de 1h: mercredi 16-17h, salle A203 12 séances de TD de 1h: mercredi

Plus en détail

Sujet d examen 1. Pratique du C. Novembre 2009

Sujet d examen 1. Pratique du C. Novembre 2009 Durée 1 h 30 Documents autorisés Sujet d examen 1 Pratique du C Novembre 2009 Introduction Écrivez lisiblement et n hésitez pas à commenter votre code en langage C. Vous ne pouvez utiliser que les fonctions

Plus en détail

TP1 : Organisation du projet d algorithmique

TP1 : Organisation du projet d algorithmique TP1 : Organisation du projet d algorithmique Enseignants: Antoine Bonnefoy et Sokol Koço Sujet: Liva Ralaivola, Antoine Bonnefoy et Sokol Koço 15 janvier 2014 1 Chasser à l aveuglette 1.1 Le projet Le

Plus en détail

Compilation avec Make

Compilation avec Make Compilation avec Make Laurent Réveillère Enseirb-Matmeca / IPB Département Télécommunications Laurent.reveillere@ipb.fr http://http://reveille.vvv.enseirb-matmeca.fr/ Objectifs Automatiser la reconstruction

Plus en détail

Introduction au Makefile

Introduction au Makefile Introduction au Makefile Nicolas Kielbasiewicz 3 mars 2009 Le développement d un programme et plus généralement d un logiciel demande au(x) programmeur(s) de gérer plusieurs fichiers, voire plusieurs langages.

Plus en détail

intro aux SE et mise en œuvre sous UNIX

intro aux SE et mise en œuvre sous UNIX TP: Programmer sous GNU/LINUX Ce premier TP introductif à la programmation en C va vous familiariser avec : la syntaxe du langage ; la mise en oeuvre du compilateur ; le préprocesseur cpp ; l'utilisation

Plus en détail

L utilitaire "make" et son inséparable Makefile

L utilitaire make et son inséparable Makefile L utilitaire "make" et son inséparable Makefile Compilation et exécution Programme source Analyse lexicale (scaning) Optimisation du code Programme abstrait (optimisé) Génération du code Séquence d unités

Plus en détail

Laboratoire MSSMat. Formation Makefiles. GNU Make, niveau débutant. A.-S. Mouronval. Mars 2005

Laboratoire MSSMat. Formation Makefiles. GNU Make, niveau débutant. A.-S. Mouronval. Mars 2005 Laboratoire MSSMat Formation Makefiles GNU Make, niveau débutant A.-S. Mouronval Mars 2005 1 A quoi sert make? Utilitaire permettant d'exécuter des instructions pour construire une application Permet d'optimiser

Plus en détail

Entraînement au concours ACM-ICPC

Entraînement au concours ACM-ICPC Entraînement au concours ACM-ICPC Déboguage et profilage de programmes C++ Page 1 / 11 Avec un IDE (environnement de développement intégré) Eclipse CDT, NetBeans, Visual C++, XCode, KDeveloper... Fonctionnalités

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Carte de référence (refcard) dired-mode d Emacs Actions les plus courantes

Carte de référence (refcard) dired-mode d Emacs Actions les plus courantes Carte de référence (refcard) dired-mode d Emacs Actions les plus courantes PIPRIME.FR I? dired-summary Résume les commandes de base. ou e ou f dired-find-file Exécute Dired sur un fichier ou un répertoire.

Plus en détail

ENSI. Visual C++ Initiation

ENSI. Visual C++ Initiation ENSI Visual C++ Initiation Tables des matières 1. LES MFC (MICROSOFT FOUNDATION CLASSES)...3 1.1 DÉFINITION... 3 1.2 L ESPACE DE TRAVAIL... 3 2. CRÉER UN NOUVEAU PROJET...5 2.1 ETAPE 1 : CHOISIR LE TYPE

Plus en détail

ASR1 - Systèmes d exploitation

ASR1 - Systèmes d exploitation ASR1 - Systèmes d exploitation Semestre 1, année 2011-2011 Département d informatique IUT Bordeaux 1 Janvier 2012 q 1 / 1 1. Introduction aux Systèmes d exploitation Contenu à quoi ça sert grandes fonctions

Plus en détail

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c Langage Impératif 1 TP 1 du 11 octobre 2010 Série d exercices Rappels rapides : - Un programme C s écrit toujours dans un fichier d extension.c (en minuscule!! sinon ce serait compilé comme du C++). Ce

Plus en détail

TP introductif de pratique du C

TP introductif de pratique du C Licence d informatique Module de Pratique du C TP introductif de pratique du C Philippe MARQUET Révision d octobre 2007 Ce premier TP introductif à la programmation en C va vous familiariser avec : la

Plus en détail

Programmation Avancée en Langage C Séances de Travaux-Pratiques

Programmation Avancée en Langage C Séances de Travaux-Pratiques Programmation Avancée en Langage C Séances de Travaux-Pratiques Ph. Langevin Année Universitaire 2010 Contents 1 Préambule 2 2 Commandes de base 2 2.1 man................................ 2 2.2 Recherche.............................

Plus en détail

Outil de développement IAR Embedded Workbench IDE

Outil de développement IAR Embedded Workbench IDE Outil de développement IAR Embedded Workbench IDE Introduction L outil de développement intégrés «IAR Embedded Workbench» est un environnement de développement intégrés très puissant (IDE : Integrated

Plus en détail

Initiation au C cours n 9

Initiation au C cours n 9 Initiation au C cours n 9 Antoine Miné École normale supérieure 26 avril 2007 Plan du cours compilation séparée, modularité, bibliothèques.a et.so, recompilation automatique avec make. Déroulement de la

Plus en détail

Programmer en python. Damien Nouvel. Damien Nouvel (Inalco) Python 1 / 12

Programmer en python. Damien Nouvel. Damien Nouvel (Inalco) Python 1 / 12 .. Programmer en python Damien Nouvel Damien Nouvel (Inalco) Python 1 / 12 Langages informatiques Langages compilés et/ou interprétés Du programme à l exécution : Code source. Compilation Programme binaire

Plus en détail

Aide mémoire Makefile

Aide mémoire Makefile Aide mémoire Makefile Unix/Linux Commande : make Fichiers : makefile ou Makefile (dans cet ordre) www.gnu.org/software/make/manual : LA référence Table des matières I À quoi sert un Makefile et comment

Plus en détail

Gestion des dépendances. Exemple : # toute ligne qui commence par " # " est un commentaire

Gestion des dépendances. Exemple : # toute ligne qui commence par  #  est un commentaire Gestion des dépendances Exemple : # toute ligne qui commence par " # " est un commentaire # gestion des dépendances # conversion dépend de conversion.c de sorties.c et de entrees.c conversion : conversion.o

Plus en détail

1 : 1 er programmes & prise en main de l environnement

1 : 1 er programmes & prise en main de l environnement 1 : 1 er programmes & prise en main de l environnement 1 Introduction 1.1 Rappel : gestion d arborescence et de fichiers sous UNIX Pour la manipulation de répertoire et de fichier à partir d un terminal

Plus en détail

Informatique TP1 : Découverte de Python CPP 1A

Informatique TP1 : Découverte de Python CPP 1A Informatique TP1 : Découverte de Python CPP 1A Romain Casati, Wafa Johal, Frederic Devernay, Matthieu Moy Avril - juin 2014 1 Découverte de l IDE : IDLE IDLE est un environnement de développement (Integrated

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 1 : Eclipse

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 1 : Eclipse iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 1 : Eclipse Nom(s) : Groupe : Date : Objectifs : Apprendre à se servir du logiciel Eclipse pour le développement d

Plus en détail

UE1 - Langage C Fiche TP1

UE1 - Langage C Fiche TP1 1 UE1 - Langage C Fiche TP1 Objectifs 1. Connaître quelques commandes linux 2. Savoir manipuler les outils de compilation tels que gcc, make 3. Ecrire des algorithmes, les coder en C, et les exécuter 1.

Plus en détail

TPS 5 : Prise en main du système de Développement IMAP137L. Préparation. Objectifs : Manipulation :

TPS 5 : Prise en main du système de Développement IMAP137L. Préparation. Objectifs : Manipulation : TPS 5 : Prise en main du système de Développement IMAP137L Préparation 1. Prendre connaissance de l annexe de ce TP et revoir les pages 110-126 du cours. 2. Quels sont les principaux constituants du Système

Plus en détail

La programmation Impérative par le Langage C

La programmation Impérative par le Langage C La programmation Impérative par le Langage C 1. Introduction 1.1 Qu est-ce que la programmation impérative? Un programme est constitué de plusieurs lignes d instructions. Chaque instruction permet d effectuer

Plus en détail

Pompes carburant - Phase d analyse

Pompes carburant - Phase d analyse Pompes carburant - Phase d analyse V. Diagramme de séquence (associé au CU FournirCarburant) Client / Pupitre LecteurCarte Pompes Service Imprimante Carte TaperCode Code-client Client_ok ChoisirCarbu TypeCarbu

Plus en détail

Logiciels de Base. 2ème partie: Logiciels de base. Cours 1ère année informatique, semestre 1. Najib Tounsi

Logiciels de Base. 2ème partie: Logiciels de base. Cours 1ère année informatique, semestre 1. Najib Tounsi Logiciels de Base 2ème partie: Logiciels de base Cours 1ère année informatique, semestre 1. Najib Tounsi Lien permanent: http://www.emi.ac.ma/~ntounsi/cours/logbase/logicielsdebase-2.html 1. Les produits

Plus en détail

Rapide introduction à la compilation d'un programme «Use the source, Luke!»

Rapide introduction à la compilation d'un programme «Use the source, Luke!» Rapide introduction à la compilation d'un programme «Use the source, Luke!» David Mentré 1 Plan Aperçu du processus Outils nécessaires Les incantations Quelques infos sur make,./configure

Plus en détail

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus : 1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus : La procédure d installation démarre. La fenêtre suivante vous indique

Plus en détail

Emacs. 1 Macros Clavier ENVIRONNEMENT DE DÉVELOPPEMENT (6)

Emacs. 1 Macros Clavier ENVIRONNEMENT DE DÉVELOPPEMENT (6) ENVIRONNEMENT DE DÉVELOPPEMENT (6) Emacs 1 Macros Clavier 1.1 Définition d une macro-clavier Récupérer le fichier fichiers-06.tar.gz, puis désarchiver le afin d obtenir le fichier more.man, puis placez

Plus en détail

TP 1 - Utilisation de Python

TP 1 - Utilisation de Python TP 1 - Utilisation de Python L objectif de ce TP est d apprendre à faire réaliser des calculs et des tâches répétitives à un ordinateur. Pour faire cela, il est nécessaire de communiquer avec l ordinateur

Plus en détail

Environnements et Outils de Développement Cours 1 Introduction

Environnements et Outils de Développement Cours 1 Introduction Environnements et Outils de Développement Cours 1 Introduction Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot - Paris 7 URL http://upsilon.cc/~zack/teaching/1112/ed6/

Plus en détail

Principe de fonctionnement de l'outil 'AdisTlsAddUpDyn.exe'

Principe de fonctionnement de l'outil 'AdisTlsAddUpDyn.exe' Fiche technique AppliDis Principe de fonctionnement de l'outil Fiche IS00365 Version document : 1.01 Diffusion limitée : Systancia, membres du programme Partenaires AppliDis et clients ou prospects de

Plus en détail

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Modularité GCC : 4 millions de lignes de code Noyau

Plus en détail

cours 6 - compilation séparée, classes de stockage et makefile

cours 6 - compilation séparée, classes de stockage et makefile cours 6 - compilation séparée, classes de stockage et makefile G. Bianchi, G. Blin, A. Bugeau, S. Gueorguieva, R. Uricaru 2015-2016 Programmation 1 - uf-info.ue.prog1@diff.u-bordeaux.fr la programmation

Plus en détail

Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Modularité GCC : 4 millions de lignes de code Noyau Linux : 12 millions de lignes de code

Plus en détail

Quick Business V4.2 Nouveautés

Quick Business V4.2 Nouveautés Quick Business V4.2 Nouveautés Edition du 5 septembre 2007 By SOMMAIRE I. Introduction 4 II. Les achats 4 II.1. Les consultations fournisseurs 4 II.2. La fiche produit 4 II.2.1. Gestion des numéros de

Plus en détail

Eclipse atelier Python

Eclipse atelier Python Eclipse atelier Python Table des matières 1. Introduction...2 2. Téléchargement et installation d eclipse...3 3. Ajout du plugin PyDev...4 4. Utilisation...9 Eclipse est un projet de la Fondation Eclipse

Plus en détail

Ecriture d un Makefile

Ecriture d un Makefile Ecriture d un Makefile ENSIMAG 1A Année scolaire 2008 2009 Un Makefile est un fichier, utilisé par le programme make, regroupant une série de commandes permettant d exécuter un ensemble d actions, typiquement

Plus en détail

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C DUT Informatique 2015 / 2016 Travaux Pratiques n o 0 : Rappels de programmation C Nom(s) : Groupe : Date : Objectifs : renouer avec les notions, la manipulation et l écriture de programmes C, en particulier

Plus en détail

PETIT GUIDE POUR EMACS

PETIT GUIDE POUR EMACS Université Paul Sabatier - Toulouse 3 Luc Mieussens UFR MIG septembre 2004 PETIT GUIDE POUR EMACS Ce guide est destiné aux débutants sous Emacs. Il présente le fonctionnement de base d Emacs et donne quelques

Plus en détail

POO & C++ : TP 1 EISE4 2014 2015

POO & C++ : TP 1 EISE4 2014 2015 POO & C++ : TP 1 EISE4 2014 2015 Pablo Rauzy rauzy @ enst fr pablo.rauzy.name/teaching.html#epu-cpp 19 septembre 2014 N oubliez pas : Les TPs doivent être rendus par courriel à rauzy @ enst fr au plus

Plus en détail

# Zone où typiquement seront placées des déclarations de variables et de règles # (voir plus tard)

# Zone où typiquement seront placées des déclarations de variables et de règles # (voir plus tard) UNIVERSITÉ DE NICE SOPHIA ANTIPOLIS UFR FACULTÉ DES SCIENCES Parc Valrose BP 71 F 06108 NICE Cedex 2 Licence 3 d Informatique Environnement de Programmation 2005-2006 Philippe Collet Séance de TP n 02

Plus en détail

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 4 : Fonctions La construction de fonctions dans un langage de programmation permet aux

Plus en détail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Programmation en C sous Unix

Programmation en C sous Unix Nicolas Schodet nico@fairesuivre.fr Ce document, conçus pour le TP Efrei-Linux du Mercredi 16 Janvier 2002, initie à la programmation en C sous Unix. Il n est pas destinée à l apprentissage du langage

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java HLIN406 - Janvier 2015 Le Java Development Kit offre un ensemble d outils de développement d applications Java. Pour utiliser ces outils, JDK ne propose pas d interface utilisateur, on doit donc écrire

Plus en détail

Guide de configuration et d utilisation des classes et bibliothèques du livre «La Bible C++»

Guide de configuration et d utilisation des classes et bibliothèques du livre «La Bible C++» Université de Sherbrooke Département de génie électrique et informatique Guide de configuration et d utilisation des classes et bibliothèques du livre «La Bible C++» Guide rédigé par Pascal Durocher Révision

Plus en détail

Introduction à Eclipse

Introduction à Eclipse Introduction à Eclipse Eclipse IDE est un environnement de développement intégré libre (le terme Eclipse désigne également le projet correspondant, lancé par IBM) extensible, universel et polyvalent, permettant

Plus en détail

TP 2 et 3 Introduction à C

TP 2 et 3 Introduction à C TP 2 et 3 Introduction à C Partie A : prise en main de gcc et makefile L'objectif de cette partie est de vous familiariser avec le langage C et sa chaîne de développement basée sur le compilateur gcc,

Plus en détail

Avant-propos. 1. Introduction

Avant-propos. 1. Introduction Avant-propos Les sections ou sous-sections marquées d un astérisque (*) ne font pas partie de la matière du cours IFT1969. Elles sont destinées à définir complètement le langage C (ANSI-C99) et à en préciser

Plus en détail

Atelier 0: Initiation aux outils de développement C sous Linux

Atelier 0: Initiation aux outils de développement C sous Linux 1)Objectifs: Atelier 0: Initiation aux outils de développement C sous Linux S'initier à l'utilisation de quelques outils de développement avec le langage C sous Linux. Développer en C sous Linux à partir

Plus en détail

2- Téléchargement et installation version actuelle 6.1

2- Téléchargement et installation version actuelle 6.1 1- EDI NetBeans (Environnement : Microsoft Windows Linux Ubuntu) EDI, Environnement de Développement Intégré Anglais : IDE, Integrated Development Environment Programme regroupant : Un éditeur de texte

Plus en détail

Cycle de vie d un programme

Cycle de vie d un programme Cycle de vie d un programme Ensimag 1A - Préparation au Projet C Année scolaire 2009 2010 Les objectifs de cette séance sont : de comprendre les différentes étapes de la chaîne de compilation d un programme

Plus en détail

Norme de documentation des programmes

Norme de documentation des programmes 1. Introduction Norme de documentation des programmes Auteur : Marc Frappier Collaborateurs Benoit Fraikin Gabriel Girard Jean Goulet Gérard Houdeville Luc Lavoie Version : 1.02 30 août 2004 Département

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) JDT (débogage), outils d analyse statique Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

TD 3: (Re-)Compilation automatique à l aide de Make

TD 3: (Re-)Compilation automatique à l aide de Make TD 3: (Re-)Compilation automatique à l aide de Make ED6 Licence 3 Université Paris Diderot 2012 2013 L objectif de ces travaux dirigés est la découverte de l outil Unix make, un gestionnaire de dépendances

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Les types utilisateurs (VBA) Corrigé

Les types utilisateurs (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 2 avril mai 2013 Corrigé Résumé Ce document décrit comment traduire en VBA les types utilisateur du langage algorithmique. Table des matières

Plus en détail

NOTICE D UTILISATION

NOTICE D UTILISATION NOTICE D UTILISATION 1 TABLE DES MATIERES Installation de Studio Express Desktop... 3 Installation sur Windows... 3 Installation sur Mac... 3 Connexion à Studio Express Desktop... 3 Appel... 4 Emettre

Plus en détail

Comment compiler un programme MATLAB

Comment compiler un programme MATLAB Comment compiler un programme MATLAB 1- Introduction Le compilateur MATLAB génère un code source C à partir d une fonction MATLAB. Le code C généré par le compilateur MATLAB peut être: soit un code source

Plus en détail

Les tableaux. Chapitre 3

Les tableaux. Chapitre 3 Chapitre 3 Les tableaux 3.1 Généralités Les tableaux en PERL sont identifiés par le symbole @ à l image du $ pour les variables. Comme ces dernières, les tableaux ne sont pas typés et un même tableau peut

Plus en détail

Introduction aux exercices en Java

Introduction aux exercices en Java Introduction aux exercices en Java Avant de commencer les séries proprement dites, nous allons voir quelques informations utiles concernant le langage de programmation principal de ce cours d'informatique

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative

Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative 2 janvier 2009 1 Les structures de contrôle En Scheme, le programmation se fait par composition de fonctions, et même

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Groupe Eyrolles, 2003, ISBN : 2-212-11317-X

Groupe Eyrolles, 2003, ISBN : 2-212-11317-X Groupe Eyrolles, 2003, ISBN : 2-212-11317-X 3 Création de pages dynamiques courantes Dans le chapitre précédent, nous avons installé et configuré tous les éléments indispensables à la mise en œuvre d une

Plus en détail

TP 1 : Premier contact

TP 1 : Premier contact TP 1 : Premier contact Informatique Fondamentale (IF1) Semaine du 22 Septembre 2008 Les sujets de TP sont disponibles à l adresse http://www.pps.jussieu.fr/~jch/enseignement/if1/ Les transparents de cours

Plus en détail

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation.

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Sébastien COLLETTE et Gilles GEERAERTS 1 Introduction Ce document décrit

Plus en détail

MEUTER Cédric / LEVY Eythan. Université Libre de Bruxelles 23/09/2005

MEUTER Cédric / LEVY Eythan. Université Libre de Bruxelles 23/09/2005 Développement en C sous LINUX MEUTER Cédric / LEVY Eythan Université Libre de Bruxelles 23/09/2005 Développement en C sous LINUX p. 1 Comment écrire son programme? Principaux éditeurs : XEmacs Emacs vi

Plus en détail

Processus de compilation Préprocesseur Compilation Assemblage Edition de liens. ASR Période 2. Sylvain Jubertie. Département Informatique IUT Orléans

Processus de compilation Préprocesseur Compilation Assemblage Edition de liens. ASR Période 2. Sylvain Jubertie. Département Informatique IUT Orléans ASR Période 2 Sylvain Jubertie Département Informatique IUT Orléans 1 Processus de compilation 2 Préprocesseur 3 Compilation 4 Assemblage 5 Edition de liens Prérequis Prérequis langage C langage assembleur

Plus en détail

INF601 : Algorithme et Structure de données. Avant propos

INF601 : Algorithme et Structure de données. Avant propos Avant propos Cours = Introduction aux Types de Données Abstraits (TDA) Chaque TDA est structuré en un ensemble de fichiers Compilation séparée pour faire les programmes Outils : make en C ant en java...

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers Programmation en Python - Cours 2 : Premiers programmes Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Utilisation en mode interactif Ecriture d un programme

Plus en détail

Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts

Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts Olivier BOEBION Mars 2004 1 Les expressions conditionnelles et les structures de contrôle 1.1 La commande test La commande interne

Plus en détail

Archivage des pièces comptables

Archivage des pièces comptables SITEL Archivage des pièces comptables Documentation utilisateurs (comptables) Service informatique et télématique E-mail: hotline.sitel@unine.ch Téléphone : +41 32 718 20 10 www.unine.ch/sitel Historique

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

TP Linux 02 - Edition de fichiers - Vi

TP Linux 02 - Edition de fichiers - Vi TP Linux 02 - Edition de fichiers - Vi Novembre 2006 2 Table des matières I Annexe Vi 5 0.1 Edition de fichiers texte avec Vi.................... 7 0.1.1 Utilisation de Vim....................... 7 0.1.2

Plus en détail

CHAPITRE 1 PREMIERS PAS. Créer un premier projet... 17 Écrire un programme... 18 Compiler, exécuter... 20 Mieux comprendre... 22

CHAPITRE 1 PREMIERS PAS. Créer un premier projet... 17 Écrire un programme... 18 Compiler, exécuter... 20 Mieux comprendre... 22 CHAPITRE 1 PREMIERS PAS Créer un premier projet... 17 Écrire un programme... 18 Compiler, exécuter... 20 Mieux comprendre... 22 15 1.1. Créer un premier projet Pour commencer, lancez Visual Basic Express.

Plus en détail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un

Plus en détail

Concours de Programmation ULCO 2013

Concours de Programmation ULCO 2013 Concours de Programmation ULCO 2013 Notice d aide à l utilisation de Prog&Play 7 mars 2013 Introduction Le concours de cette année a pour cadre un jeu de stratégie temps réel, basé sur le moteur Spring,

Plus en détail

Filtres dans Alert. Micromedia International Document technique. Auteur: Pierre Chevrier. Pages : 12. Société : Micromedia International

Filtres dans Alert. Micromedia International Document technique. Auteur: Pierre Chevrier. Pages : 12. Société : Micromedia International Micromedia International Document technique Auteur: Pierre Chevrier Pages : 12 Société : Micromedia International Date : 06/10/20144 Réf. : ETT_20141006_000001_fr.docx Filtres dans Alert Ce document décrit

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

S y m M a i l i n g. S o l u t i o n d e - m a i l i n g. SymMailing est un outil professionnel de création et de gestion de campagnes d emailing.

S y m M a i l i n g. S o l u t i o n d e - m a i l i n g. SymMailing est un outil professionnel de création et de gestion de campagnes d emailing. S y m M a i l i n g S o l u t i o n d e - m a i l i n g Introduction SymMailing est un outil professionnel de création et de gestion de campagnes d emailing. SymMailing intègre à la fois les outils de

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

TD 5 - Compilation et débogage (correction)

TD 5 - Compilation et débogage (correction) Département des Sciences Informatiques Licence 2 I/MI 2008 2009 Programmation Système T.T. Dang Ngoc dntt@u-cergy.fr TD 5 - Compilation et débogage (correction) I Compilation Rappel 1. Pretraitement :.c

Plus en détail