Environnement de développement

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

Cours Langage C/C++ Programmation modulaire

Cours Langage C/C++ Programmation modulaire Cours Langage C/C++ Programmation modulaire Thierry Vaira BTS IRIS Avignon tvaira@free.fr «v0.1 Rappel Programmation modulaire (1/2) Le découpage d'un programme en sous-programmes est appelée programmation

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

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

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

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB. global Outils de développement et compilation IDE, GCC/Clang, ASAN, perf, valgrind, GDB Timothée Ravier LIFO, INSA-CVL, LIPN 1 re année cycle ingénieur STI 2013 2014 1 / 36 Objectifs des outils présentés

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Chapitre 10 : Logiciels

Chapitre 10 : Logiciels Chapitre 10 : Logiciels Installation de logiciels dans Linux IUT Lannion - Systèmes - 1e année - Nerzic - 2014-15 1 10.1 Installation manuelle Cette partie explique comment on compile et installe un logiciel

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

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières Utiliser Dev-C++ Voici quelques explications sur l utilisation de Dev-C++, un excellent environnement de développement en C et C++ pour Windows qu on peut télécharger librement depuis le site www.bloodshed.net

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

TP 1 Prise en main de l environnement Unix

TP 1 Prise en main de l environnement Unix Introduction aux systèmes d exploitation (IS1) TP 1 Prise en main de l environnement Unix Le but de ce premier TP est de commencer à vous familiariser avec l environnement Unix. 1 Ouverture de session

Plus en détail

Outils pour la pratique

Outils pour la pratique Cinquième partie Outils pour la pratique 121 CHAPITRE 1 Les bases des séances de TP Avant de lire cettre section, il est suggéré de relire vos notes de cours se rapportant au système d exploitation Unix.

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

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

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

C.M. 1 & 2 : Prise en main de Linux

C.M. 1 & 2 : Prise en main de Linux Grégory Bonnet gregory.bonnet@unicaen.fr GREYC Université Caen Basse Normandie Diaporama original : Jean-Philippe Métivier - Boris Lesner But de cet enseignement 1 - Apprendre à manipuler un système Unix/Linux

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

TP1 : Initiation à l algorithmique (1 séance)

TP1 : Initiation à l algorithmique (1 séance) Université de Versailles Vanessa Vitse IUT de Vélizy - Algorithmique 2006/2007 TP1 : Initiation à l algorithmique (1 séance) 1 Prise en main de l environnement Unix : rappels et compléments Le but de la

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

TP1 - Prise en main de l environnement Unix.

TP1 - Prise en main de l environnement Unix. Mise à niveau UNIX Licence Bio-informatique TP1 - Prise en main de l environnement Unix. Les sujets de TP sont disponibles à l adresse http://www.pps.jussieu.fr/~tasson/enseignement/bioinfo/ Les documents

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

Programmation en langage C

Programmation en langage C Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex Anne.Canteaut@inria.fr http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Tutoriel code::blocks

Tutoriel code::blocks Tutoriel code::blocks E. Lunéville 2006 Le logiciel code::blocks fait partie des logiciels de type EDI (Environnement de Développement Intégré, IDE en anglais) pour le langage C++. Il est multiplateforme

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

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

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM Manuel d'utilisation OPTIMALOG 2008 Table des matières I Table des matières Part I Gestionnaire d'alarmes Optim'Alarm

Plus en détail

Premiers pas en Linux

Premiers pas en Linux Premiers pas en Linux 1 Bref historique Linux Système d'exploitation créé en 1991. Par Linus Torvalds un étudiant nlandais. Développé et amélioré par des centaines de spécialistes dans le monde. Particularité

Plus en détail

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2 Mon premier rpm http://alexandre-mesle.com 7 juin 2010 Table des matières 1 Avant de commencer 2 1.1 RPM....................................................... 2 1.2 URPMI.....................................................

Plus en détail

Optimisation de logiciels de modélisation sur centre de calcul

Optimisation de logiciels de modélisation sur centre de calcul Optimisation de logiciels de modélisation sur centre de calcul Gérald Monard Pôle de Chimie Théorique http://www.monard.info/ Introduction Les ordinateurs sont des appareils électroniques permettant d

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

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

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

Environnements de développement (intégrés) Environnements de développement (intégrés) Introduction aux EDI, la plateforme Eclipse Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Eclipse atelier Java

Eclipse atelier Java Eclipse atelier Java Table des matières 1. Introduction...2 2. Télécharger eclipse...3 3. Installer eclipse...3 4. Premier lancement d eclipse...3 5. Configurer eclipse pour faire du Java...5 6. Développer

Plus en détail

Tour d'horizon Bureau client Daemon's Aller plus loin

Tour d'horizon Bureau client Daemon's Aller plus loin Logiciels Libres? Distribution Spécificités Arborescence Joseph Maillardet Assistant Ingénieur de Recherche et Formation *** IUT de Nîmes Université de Montpellier II Logiciels Libres? Distribution Spécificités

Plus en détail

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval École Nationale Supérieure de Techniques Avancées Programmation en C Pierre-Alain Fouque et David Pointcheval E-mail : Pierre-Alain.Fouque@ens.fr Web : http://www.di.ens.fr/~fouque/ Table des matières

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

Installation et compilation de gnurbs sous Windows

Installation et compilation de gnurbs sous Windows Installation et compilation de gnurbs sous Windows Installation de l environnement de développement Code::Blocks (Environnement de développement) 1. Télécharger l installateur de Code::Blocks (version

Plus en détail

Cours de Programmation 2

Cours de Programmation 2 Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes

Plus en détail

Systèmes d exploitation

Systèmes d exploitation Systèmes d exploitation Virtualisation, Sécurité et Gestion des périphériques Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Novembre 2009 Gérard Padiou Systèmes d exploitation

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Chaîne de production d un programme

Chaîne de production d un programme 227 Plan 1. Généralités : compilateur, assembleur, éditeur de liens compilation séparée directives #include, espace d adressage d un programme 2. l'outil make cible, dépendance fichier Makefile de base

Plus en détail

Manuel de System Monitor

Manuel de System Monitor Chris Schlaeger John Tapsell Chris Schlaeger Tobias Koenig Traduction française : Yves Dessertine Traduction française : Philippe Guilbert Traduction française : Robin Guitton Relecture de la documentation

Plus en détail

ALERT NOTICE D UTILISATION DU DRIVER PC-TEXTE

ALERT NOTICE D UTILISATION DU DRIVER PC-TEXTE 1) Installation ALERT NOTICE D UTILISATION DU DRIVER PC-TEXTE A) Installation du driver PC-TEXTE Lors de l installation du logiciel ALERT, le gestionnaire de communication «PC-TEXTE» doit être sélectionné

Plus en détail

Traitement de données

Traitement de données Traitement de données Présentation du module TINI Présentation du module : Le module Tini se décline en plusieurs versions, il est constitué d une carte d application et d un module processeur : Les modules

Plus en détail

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

Plus en détail

Business Talk IP Centrex. guide. web utilisateur. pour. les services standards

Business Talk IP Centrex. guide. web utilisateur. pour. les services standards guide web utilisateur pour les services standards 1/22 version 03 décembre 2013 table des matières Accès au web utilisateur... 3 Onglet accueil... 5 Onglet services téléphoniques... 7 services standards...

Plus en détail

GUIDE Excel (version débutante) Version 2013

GUIDE Excel (version débutante) Version 2013 Table des matières GUIDE Excel (version débutante) Version 2013 1. Créer un nouveau document Excel... 3 2. Modifier un document Excel... 3 3. La fenêtre Excel... 4 4. Les rubans... 4 5. Saisir du texte

Plus en détail

Architecture des ordinateurs

Architecture des ordinateurs Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?

Plus en détail

Boot Camp Guide d installation et de configuration

Boot Camp Guide d installation et de configuration Boot Camp Guide d installation et de configuration Table des matières 3 Introduction 4 Configuration requise 5 Vue d ensemble de l installation 5 Étape 1 : Rechercher les mises à jour 5 Étape 2 : Préparer

Plus en détail

PIC EVAL Dev Board PIC18F97J60

PIC EVAL Dev Board PIC18F97J60 PIC EVAL Dev Board PIC18F97J60 2 TP1 : Prise en main de l environnement de programmation pour la carte PIC EVAL-ANFA Pour répondre aux questions et justifier vos réponses, vous pouvez faire des copies

Plus en détail

EVOLUTION 7.1 Déroulement DREAM INFO 1 Dossier 23 Ciel Gestion Commerciale.

EVOLUTION 7.1 Déroulement DREAM INFO 1 Dossier 23 Ciel Gestion Commerciale. 1. Mission 1 : Créer la société et faire son paramétrage :...3 1.1. Création d un nouveau dossier :...3 1.2. Paramétrage des Barres d outils :...6 1.3. Paramétrage général de la Gestion Commerciale :...6

Plus en détail

wxwidgets dans un environnement Microsoft Windows

wxwidgets dans un environnement Microsoft Windows 1/18 wxwidgets dans un environnement Microsoft Windows Ce document explique les démarches à suivre pour pouvoir utiliser «wxwidgets» à travers un environnement de développement. Normalement c est ce que

Plus en détail

Mode Opératoire Ciel Gestion commerciale V 12 et s (2006)

Mode Opératoire Ciel Gestion commerciale V 12 et s (2006) 1/6 09/05/2006-18:44:31 Mode Opératoire Ciel Gestion commerciale V 12 et s (2006) C. Terrier Reproduction autorisée pour des formateurs dans un cadre pédagogique et non commercial après autorisation de

Plus en détail

Introduction au Système d Exploitation Unix/Linux

Introduction au Système d Exploitation Unix/Linux 1 iere partie: Système de Gestion de Fichier B. Jacob IC2/LIUM 17 septembre 2013 Plan 1 Notions de fichier 2 Notions de répertoire 3 Organisation des répertoires 4 Identification d un fichier dans l arborescence

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Bon ben voilà c est fait!

Bon ben voilà c est fait! Bon ben voilà c est fait! Au programme : - Exploration de l arborescence et informations systèmes - Action sur les dossiers et fichiers - Gestion des autorisations - Conversion pdf en text - Connexion

Plus en détail

Apprendre Java et C++ avec NetBeans

Apprendre Java et C++ avec NetBeans E Apprendre Java et C++ avec NetBeans Généralités Est-ce le titre d un nouvel ouvrage? Pourquoi pas! NetBeans fait son apparition dans cette édition car un module, permettant d éditer et de compiler du

Plus en détail

Fiche de version N 12.28a Nov. 2010 SOMMAIRE

Fiche de version N 12.28a Nov. 2010 SOMMAIRE Fiche de version N 12.28a Nov. 2010 Lisez entièrement ce document Effectuez une sauvegarde de vos bases avant toute autre action Auteur : Bertrand Dereau Fonction : Chef de produit Réf. du document : EXP_FDV_PERCEVAL

Plus en détail

Introduction à Linux (pour le HPC) «Linux 101» Présentation : http://goo.gl/bvfyn

Introduction à Linux (pour le HPC) «Linux 101» Présentation : http://goo.gl/bvfyn Introduction à Linux (pour le HPC) «Linux 101» Présentation : http://goo.gl/bvfyn maxime.boissonneault@calculquebec.ca U. Laval - Mars 2013 1 2 Plan de la présentation 1.Accéder à une grappe 2.Fichiers

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

IFT2245 - Systèmes d exploitation - TP n 1-20%

IFT2245 - Systèmes d exploitation - TP n 1-20% IFT2245 - Systèmes d exploitation - TP n 1-20% DIRO - Université de Montréal Nicolas Rous et Dorian Gomez Disponible : 14/02/2013 - Remise : 28/03/2013 au début de la démo LISEZ TOUT LE DOCUMENT AVANT

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

Plus en détail

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

Introduction aux Systèmes et aux Réseaux, Master 2 CCI aux Systèmes et aux Réseaux, Master 2 CCI Cours 1 : Introduction et contexte Unix/Linux Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@univ-lyon1.fr Master CCI - Université Lyon 1 -

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

TME1 Installation et programmation en ILP1

TME1 Installation et programmation en ILP1 UFR 919 Informatique Master Informatique Spécialité STL UE MI016 ILP TME1 Installation et programmation en ILP1 Christian Queinnec La séance est divisée en deux parties. Dans la première, vous installerez

Plus en détail

Introduction à l algorithmique et à la programmation M1102 CM n 3

Introduction à l algorithmique et à la programmation M1102 CM n 3 Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY eric.remy@univ-amu.fr IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d

Plus en détail

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Unix/Linux I. 1 ere année DUT. Université marne la vallée Unix/Linux I 1 ere année DUT Université marne la vallée 1 Introduction 2 Fonctions et spécifité d Unix Architecture 3 4 5 Fichier Unix Arborescence de fichiers Quelques commandes sur les fichiers Chemins

Plus en détail

Module Communication - Messagerie V6. Infostance. Messagerie

Module Communication - Messagerie V6. Infostance. Messagerie 1 Infostance Messagerie 2 Table des matières Les droits... 3 La boîte de réception... 4 Fonctionnalités disponibles via le clic droit sur un message... 6 Ecrire un nouveau message... 7 Présentation...

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

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

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

Débogage de code* Mardi 13 décembre 2011. Romaric DAVID david@unistra.fr Université de Strasbourg - Direction Informatique Pôle HPC. hpc.unistra.

Débogage de code* Mardi 13 décembre 2011. Romaric DAVID david@unistra.fr Université de Strasbourg - Direction Informatique Pôle HPC. hpc.unistra. Débogage de code* Mardi 13 décembre 2011 Romaric DAVID david@unistra.fr Université de Strasbourg - Direction Informatique Pôle HPC *ou l'art de chercher la petite bête Plan Introduction Débogage, quelques

Plus en détail

ADAPT: un modèle de transcodage des nombres. Une application des systèmes de production au développement

ADAPT: un modèle de transcodage des nombres. Une application des systèmes de production au développement ADAPT: un modèle de transcodage des nombres Une application des systèmes de production au développement Référence Barrouillet, P., Camos, V., Perruchet, P., & Seron, X. (2004). A Developmental Asemantic

Plus en détail

Programmation C. J.-F. Lalande. 15 novembre 2012

Programmation C. J.-F. Lalande. 15 novembre 2012 Programmation C J.-F. Lalande novembre 0 Ce cours est mis à disposition par Jean-François Lalande selon les termes de la licence Creative Commons Attribution - Pas d Utilisation Commerciale - Partage à

Plus en détail

COMMUNICATION PC/MINITEL

COMMUNICATION PC/MINITEL 229 Cet article fait suite à ceux publiés dans les bulletins de l'epi n 47 page 207 et 48 page 205. Si vous avez réussi à construire un câble de liaison, vous vous êtes peut être demandé comment vous en

Plus en détail

2 Grad Info Soir Langage C++ Juin 2007. Projet BANQUE

2 Grad Info Soir Langage C++ Juin 2007. Projet BANQUE 2 Grad Info Soir Langage C++ Juin 2007 Projet BANQUE 1. Explications L'examen comprend un projet à réaliser à domicile et à documenter : - structure des données, - objets utilisés, - relations de dépendance

Plus en détail

Bernard HAMM, Évelyne LAVOISIER

Bernard HAMM, Évelyne LAVOISIER 92 MAÎTRISE DE PROGICIELS DE GESTION DE BASES DE DONNÉES ET DE TRAITEMENT DE TEXTE Compte rendu d'un stage à l'usage des professeurs de sciences sociales. Ce stage a été programmé A la demande et avec

Plus en détail

Introduction à l informatique en BCPST

Introduction à l informatique en BCPST Introduction à l informatique en BCPST Alexandre Benoit BCPST L informatique en BCPST «L enseignement de l informatique en classes préparatoires de la filière BCPST a pour objectif d introduire puis de

Plus en détail