Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e...

40
Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass´ e epartement d’informatique Universit´ e du Qu´ ebec `a Montr´ eal 8 mai 2018 Construction et maintenance de logiciels INF3135 A. Blondin Mass´ e (UQAM) 8 mai 2018 1 / 40

Transcript of Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e...

Page 1: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Chapitre 2 : Les bases du C, partie 1

Alexandre Blondin Masse

Departement d’informatiqueUniversite du Quebec a Montreal

8 mai 2018Construction et maintenance de logiciels

INF3135

A. Blondin Masse (UQAM) 8 mai 2018 1 / 40

Page 2: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Table des matieres

1. Presentation du TP1

2. Variables et constantes

3. Structures de controle

4. Operateurs et conversions

5. Tableaux

6. Developper sous Git

A. Blondin Masse (UQAM) 8 mai 2018 2 / 40

Page 3: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Table des matieres

1. Presentation du TP1

2. Variables et constantes

3. Structures de controle

4. Operateurs et conversions

5. Tableaux

6. Developper sous Git

A. Blondin Masse (UQAM) 8 mai 2018 3 / 40

Page 4: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Table des matieres

1. Presentation du TP1

2. Variables et constantes

3. Structures de controle

4. Operateurs et conversions

5. Tableaux

6. Developper sous Git

A. Blondin Masse (UQAM) 8 mai 2018 4 / 40

Page 5: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Types de base

I Types numeriques :

Type Taille

char (signe ou pas) 1 octetshort (signe ou pas) 2 octetsint(signe ou pas) 2 ou 4 octetslong (signe ou pas) 4 octetsfloat 4 octetsdouble 8 octetslong double 16 octets

I Type vide : void. Definit le type d’une fonction sansvaleur de retour ou la valeur nulle pour les pointeurs.

A. Blondin Masse (UQAM) 8 mai 2018 5 / 40

Page 6: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Booleens

I Pas de type booleen natif.

I En C, la valeur 0 est consideree comme faux alors quetoutes les autres valeurs entieres sont considerees commevrai.

I Depuis le standard C99, il existe la librairie stdbool.hqui definit les constantes true et false ainsi que le typebool.

#include <stdbool.h>...bool valide = true;if (valide) {

printf("OK\n");} else {

printf("ERREUR\n");}valide = !valide;

A. Blondin Masse (UQAM) 8 mai 2018 6 / 40

Page 7: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Declaration des variables

Une variable

I doit etre declaree avant son utilisation, en debut de bloc;

I est visible seulement dans le bloc ou elle est declaree;

I peut etre initialisee lors de la declaration;

I non initialisee a un comportement imprevisible,puisque la valeur qu’elle contient peut etre quelconque;

char c = 'e';int a, b = 4;float x, y;unsigned int d = fact(10);

A. Blondin Masse (UQAM) 8 mai 2018 7 / 40

Page 8: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Constantes

I A l’aide de l’instruction #define :

#define PI 3.141592654

I Avec le mot reserve const :

const float PI = 3.141592654;// Ne fonctionne pas pour les dimensions des

tableaux

I A l’aide d’un type enumeratif :

enum {MAX_SIZE = 34

};// Seulement pour les constantes entieres

I Il est essentiel de declarer des constantes plutot que desvaleurs (magiques) directement dans les programmes.

A. Blondin Masse (UQAM) 8 mai 2018 8 / 40

Page 9: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Notation

I le suffixe u ou U pour indiquer une valeur non signee;

I le suffixe l ou L pour indiquer une valeur longue.

I le prefixe 0 indique une valeur octale; Par exemple, 064denote le nombre decimal 6× 81 + 4× 80 = 52.

I le prefixe 0x indique une valeur hexadecimale; Parexemple, 0X34 denote ce meme decimal3× 161 + 4× 160 = 52.

I Un caractere, entre apostrophes ’, est un nombre; Parexemple, ’4’ correspond au decimal 52 (code ASCII).

char i = 52, j = 064, k = 0X34, l = '4';printf("%d %d %d %d\n", i, j, k, l);// affiche : 52 52 52 52

A. Blondin Masse (UQAM) 8 mai 2018 9 / 40

Page 10: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Caracteres speciaux

Quelques caracteres utiles :

I \n, le caractere de fin de ligne;

I \t, le caractere de tabulation;

I \\, le caractere “backslash”;

I \’, l’apostrophe;

I \", les guillemets.

A. Blondin Masse (UQAM) 8 mai 2018 10 / 40

Page 11: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Table des matieres

1. Presentation du TP1

2. Variables et constantes

3. Structures de controle

4. Operateurs et conversions

5. Tableaux

6. Developper sous Git

A. Blondin Masse (UQAM) 8 mai 2018 11 / 40

Page 12: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Instruction for

for (<initialisation>; <condition>; <incrementation>){<instruction 1><instruction 2>...<instruction n>

}

I <initialisation> est evaluee une seule fois, avantl’execution de la boucle.

I <condition> est evaluee lors de chaque passage, avantd’executer les instructions dans le corps de la boucle;

I <incrementation> est evaluee lors de chaque passage,apres avoir execute les instructions dans le corps de laboucle.

A. Blondin Masse (UQAM) 8 mai 2018 12 / 40

Page 13: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Difference avec Java

I Attention, on ne peut declarer le type de l’iterateurdans l’initialisation qu’avec le standard C99.

I Par exemple, le fragment de code suivant ne compile pasavec le standard ANSI :

for (int i = 0; i < 10; ++i) {printf("Valeur %d du tableau : %d", i, tab[i])

}

I Il faut plutot ecrire

int i;for (i = 0; i < 10; ++i) {

printf("Valeur %d du tableau : %d", i, tab[i])}

A. Blondin Masse (UQAM) 8 mai 2018 13 / 40

Page 14: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Instructions if, else if and else

if (<condition>) {<instruction>

}

if (<condition>) {<instruction 1>

} else {<instruction 2>

}

if (<condition 1>) {<instruction 1>

} else if (<condition 2>)<instruction 2>

}

A. Blondin Masse (UQAM) 8 mai 2018 14 / 40

Page 15: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Blocs

I Un bloc est un ensemble d’instructions delimitees par desaccolades;

I Les accolades sont facultatives dans les structuresconditionnelles s’il n’y a qu’une seule instruction;

I Ainsi, les fragments suivants sont equivalents :

1.

if (!valide) printf("ERREUR");

2.

if (!valide)printf("ERREUR");

3.

if (!valide) {printf("ERREUR");

}

A. Blondin Masse (UQAM) 8 mai 2018 15 / 40

Page 16: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Instruction switch

switch (<variable>) {case <valeur 1> : <instruction 1>case <valeur 2> : <instruction 2>...case <valeur n> : <instruction n>default : <instruction n + 1>

}

I Les instructions case sont parcourues sequentiellement,jusqu’a ce qu’il y ait une correspondance.

I Si c’est le cas, l’instruction correspondante est executee,ainsi que toutes les instructions suivantes, tant que le motreserve break n’est pas rencontre.

I L’ordre d’enumeration n’est pas important si on trouveune instruction break dans chaque cas.

I Le cas default est optionnel.

A. Blondin Masse (UQAM) 8 mai 2018 16 / 40

Page 17: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Boucles while et do-while

Syntaxe :

while (<condition>) {<instruction 1><instruction 2>...<instruction n>

}

do {<instruction 1><instruction 2>...<instruction n>

} while (<condition>);

A. Blondin Masse (UQAM) 8 mai 2018 17 / 40

Page 18: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Instruction break et continue

I break permet de sortir de la boucle;

I continue permet de passer immediatement a l’iterationsuivante;

I Il est generalement a eviter d’utiliser plusieursinstructions break et continue dans la meme boucle.

A. Blondin Masse (UQAM) 8 mai 2018 18 / 40

Page 19: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Table des matieres

1. Presentation du TP1

2. Variables et constantes

3. Structures de controle

4. Operateurs et conversions

5. Tableaux

6. Developper sous Git

A. Blondin Masse (UQAM) 8 mai 2018 19 / 40

Page 20: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Operateurs arithmetiques

Operateur Operation Utilisation

+ addition x + y- soustraction x - y

* multiplication x * y/ division x / y% modulo x % y

Lorsque les deux operandes de la division sont des typesentiers, alors la division est entiere egalement.

A. Blondin Masse (UQAM) 8 mai 2018 20 / 40

Page 21: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Representation interne

Representation par le complement a deux :

-128

-127

-2

-1

0

1

2

127

=

=

=

=

=

=

=

=

sign

e

1

1

1

1

0

0

0

0

0 0 0 0 0

0 0 0 0 0

1 1 1 1 1

1 1 1 1 1

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

1 1 1 1 1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

S’il y a debordement, il n’y a pas d’erreur :

signed char c = 127, c1 = c + 1;printf("%d %d\n", c, c1);// Affiche 127 -128

A. Blondin Masse (UQAM) 8 mai 2018 21 / 40

Page 22: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Operateurs de comparaison et logiques

Operateurs de comparaison

Operateur Operation Utilisation

== egalite x == y!= inegalite x != y> stricte superiorite x > y>= superiorite x >= y< stricte inferiorite x < y<= inferiorite x <= y

Operateurs logiques

Operateur Operation Utilisation

! negation !x&& et x && y|| ou x || y

Evaluation paresseuse pour && et ||.

A. Blondin Masse (UQAM) 8 mai 2018 22 / 40

Page 23: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Operateurs d’affectation et de sequencage

I =, +=, -=, *=, /=, %=;

int x = 1, y, z, t;t = y = x; // Equivaut a t = (y = x)x *= y + x; // Equivaut a x = x * (y + x)

I Incrementation et decrementation : ++ et --;

int x = 1, y, z;y = x++; // y = 1, x = 2z = ++x; // z = 3, x = 3

I Operation de sequencage : evalue d’abord les expressionset retourne la derniere.

int a = 1, b;b = (a++, a + 2);printf("%d\n", b);// Affiche 4

A. Blondin Masse (UQAM) 8 mai 2018 23 / 40

Page 24: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Operateur ternaire

<condition> ? <instruction si vrai> : <instruction si faux>

I Tres utile pour alleger le code;

I Tres utilise.

Quelles sont les valeurs affichees par le programme suivant ?

#include <stdio.h>

int main() {int x = 1, y, z;y = (x-- == 0 ? 1 : 2);z = (++x == 1 ? 1 : 2);

printf("%d %d\n", y, z);}

A. Blondin Masse (UQAM) 8 mai 2018 24 / 40

Page 25: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Operations bit a bit

Operateur Operation Utilisation

& et x & y| ou x | yˆ ou exclusif x ˆ y

I Souvent utilises pour combiner des options (flags);

I Par exemple, la fonction SDL Init :

...if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0) {

fprintf(stderr, "SDL failed to initialize: %s\n",SDL_GetError());

return NULL;}...

A. Blondin Masse (UQAM) 8 mai 2018 25 / 40

Page 26: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Types numeriques de base

I Plusieurs converstions (cast) se font automatiquement;

I Si un des operandes est long double, alors le resultat estegalement long double.

I Sinon, si un des operandes est double, alors le resultat estegalement double.

I Sinon, si un des operandes est float, alors le resultat estegalement float.

I Sinon, il y a promotion vers le type int et unsigned.

I Bref, evitez de melanger les types dans une memeoperation ou montrez les conversions de facon explicite.

A. Blondin Masse (UQAM) 8 mai 2018 26 / 40

Page 27: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Conversions implicites

Attention aux conversions implicites entre types signes et nonsignes.

#include <stdio.h>

int main() {char x = -1, y = 20, v;unsigned char z = 254;unsigned short t;unsigned short u;

t = x;u = y;v = z;printf("%d %d %d\n", t, u, v);// Affiche 65535 20 -2

}

A. Blondin Masse (UQAM) 8 mai 2018 27 / 40

Page 28: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Conversion de types

#include <stdio.h>

int main() {unsigned char x = 255;printf("%d\n", x);// Affiche 255printf("%d\n", (signed char)x);// Affiche -1int y = 3, z = 4;printf("%d %f\n", z / y, ((float)z) / y);// Affiche 1 1.333333

}

A. Blondin Masse (UQAM) 8 mai 2018 28 / 40

Page 29: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Priorite des operateurs

Arite Associativite Par priorite decroissante

2 gauche, droite ( ), [ ]2 gauche, droite ->, .1 droite, gauche !, ++, --, +, -, (int), *, &, sizeof2 gauche, droite *, /, %2 gauche, droite +, -2 gauche, droite <, <=, >, >=2 gauche, droite ==, !=2 gauche, droite &&2 gauche, droite ||3 gauche, droite ? :1 droite, gauche =, +=, -=, *=, /=, %=2 gauche, droite ,

A. Blondin Masse (UQAM) 8 mai 2018 29 / 40

Page 30: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Table des matieres

1. Presentation du TP1

2. Variables et constantes

3. Structures de controle

4. Operateurs et conversions

5. Tableaux

6. Developper sous Git

A. Blondin Masse (UQAM) 8 mai 2018 30 / 40

Page 31: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Tableaux

I Collection de donnees de meme type;

I Declaration :

int donnees[10];// Reserve 10 "cases" de type "int" en memoireint donnees[taille];// Seulement avec C99 et allocation sur la pile

I Definition et initialisation :

int toto[] = {12,-12,34,13,43};

I Stockees de facon contigue en memoire;

12 -12 34 13 43

A. Blondin Masse (UQAM) 8 mai 2018 31 / 40

Page 32: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Acces

I A l’aide de l’operateur [ ] :

#include <stdio.h>

int main() {int donnees[] = {12,-12,34,13,43};int a, b;a = donnees[2];b = donnees[5];

printf("%d %d\n", a, b);/* que vaut b ? */

}

I Le premier element est a l’indice 0;

I S’il y a depassement de borne, aucune erreur ou unavertissement (warning).

I Source frequente de segfault.

A. Blondin Masse (UQAM) 8 mai 2018 32 / 40

Page 33: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Chaınes de caracteres

I Les chaınes de caracteres sont representees par destableaux de caracteres;

I Les chaınes constantes sont delimitees par les symboles deguillemets " ".

I Les deux declarations suivantes sont equivalentes :

char chaine[] = "tomate";char chaine[] = {'t','o','m','a','t','e','\0'};

I Termine par le caractere \0;

I Longueur de la chaıne "tomate" : 6;

I Taille du tableau de la chaıne "tomate" : 7.

A. Blondin Masse (UQAM) 8 mai 2018 33 / 40

Page 34: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Table des matieres

1. Presentation du TP1

2. Variables et constantes

3. Structures de controle

4. Operateurs et conversions

5. Tableaux

6. Developper sous Git

A. Blondin Masse (UQAM) 8 mai 2018 34 / 40

Page 35: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Developper seul

I On entend parfois dire a tort que le logiciel Git n’est utileque lorsqu’on travaille en equipe.

I C’est pourtant tres utile :

I Permet de recuperer une ancienne version;

I Fournit naturellement une copie de sauvegarde;

I Permet de structurer le developpement;

I Constitue un aide-memoire de tout ce qui s’estpasse, etc.

I Dans votre TP1, vous aurez l’occasion de vous familiariseravec un developpement solitaire.

A. Blondin Masse (UQAM) 8 mai 2018 35 / 40

Page 36: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Depot Git

I Un depot Git est simplement un repertoire muni d’unhistorique Git;

I Tout l’historique se trouve dans un repertoire cache nomme.git, disponible a la racine du projet;

I Ainsi, si vous supprimez ce dossier cache, vous supprimezpar la meme occasion tout l’historique;

I Il existe des plateformes qui permettent d’heberger desdepots : Github, Bitbucket, GitLab, etc.

I On communique avec ces plateformes via des connexionsSSH ou HTTPS;

I Dans le cadre de ce cours, vous utiliserez GitLab.

A. Blondin Masse (UQAM) 8 mai 2018 36 / 40

Page 37: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Flux operationnel (workflow)

Initialisationgit initgit clone

Ajout/modificationgit add

Sauvegarde localegit commit

Sauvegarde distantegit push

Mise a jourgit pull

Dans le cadre du TP1 :

I Machine personnelle : utilise rarement git pull;

I Serveur Malt/Java : utilise rarement git push;

A. Blondin Masse (UQAM) 8 mai 2018 37 / 40

Page 38: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Initialisation

I Il y a deux facons possibles d’initialiser un repertoireversionne par Git :

I Avec la commande git init, lorsqu’on demarre unnouveau projet;

I Avec la commande git clone, lorsqu’on souhaiterecuperer une copie d’un projet existant.

I TP1, TP2 : vous devrez cloner des projets;

I TP3 : vous initialiserez vous-memes le projet.

I Si vous travaillez sur votre machine personnelle et quevous souhaitez verifier le comportement de votre projet surMalt ou Java, il suffira de cloner votre projet.

A. Blondin Masse (UQAM) 8 mai 2018 38 / 40

Page 39: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Commit (1/2)

I Un commit est une sauvegarde de l’etat de votre projet;

I git add pour ajouter un fichier ou une modification;

I Avant de faire un commit :

I Verifier l’etat de votre projet avec git status;

I Au besoin, verifiez les modifications avec git diff;

I Apres avoir fait un commit :

I Le projet devient en etat propre (clean);

I Il est ensuite possible de faire git push, mais pasnecessaire.

A. Blondin Masse (UQAM) 8 mai 2018 39 / 40

Page 40: Chapitre 2 : Les bases du C, partie 1Chapitre 2 : Les bases du C, partie 1 Alexandre Blondin Mass e D epartement d’informatique Universit e du Qu ebec a Montr eal 8 mai 2018 Construction

Commit (2/2)

I Le message de commit est tres important :

I La premiere ligne doit etre courte (50 caracteres oumoins);

I Si necessaire, on ajoute des paragraphes, separes pardes lignes vides;

I Eviter les messages bilingues : choisir une langue ets’y tenir.

I Il faut faire des commits atomiques, c’est-a-dire qu’ilseffectuent une modification tres precise, qu’on peutdecrire facilement;

I git log devrait bien resumer l’histoire du projet;

I TP1 : visez entre 10 et 40 commits.

A. Blondin Masse (UQAM) 8 mai 2018 40 / 40