Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tp-listes-etu
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
lifapc
tp-listes-etu
Commits
9b2aa58e
Commit
9b2aa58e
authored
7 years ago
by
Vincent Nivoliers
Browse files
Options
Downloads
Patches
Plain Diff
syntaxe C++
parent
bbba7f4d
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+27
-27
27 additions, 27 deletions
README.md
with
27 additions
and
27 deletions
README.md
+
27
−
27
View file @
9b2aa58e
...
@@ -23,7 +23,7 @@ faut ajouter, puis à rédiger le code sous les commentaires correspondants.
...
@@ -23,7 +23,7 @@ faut ajouter, puis à rédiger le code sous les commentaires correspondants.
plusieurs lignes, mais il n'est pas possible de
plusieurs lignes, mais il n'est pas possible de
les imbriquer (et donc de placer des
`/* ... */`
dans un commentaire) :
les imbriquer (et donc de placer des
`/* ... */`
dans un commentaire) :
```
C++
```
cpp
/* commentaire sur une ligne */
/* commentaire sur une ligne */
/* commentaire
/* commentaire
sur deux lignes */
sur deux lignes */
...
@@ -32,7 +32,7 @@ les imbriquer (et donc de placer des `/* ... */` dans un commentaire) :
...
@@ -32,7 +32,7 @@ les imbriquer (et donc de placer des `/* ... */` dans un commentaire) :
Il est aussi possible en plus de rajouter de courts commentaire en utilisant
`//`
.
Il est aussi possible en plus de rajouter de courts commentaire en utilisant
`//`
.
Une fois écrit
`//`
, le reste de la ligne n'est plus interprété.
Une fois écrit
`//`
, le reste de la ligne n'est plus interprété.
```
C++
```
cpp
int
a
;
//un commentaire de fin de ligne
int
a
;
//un commentaire de fin de ligne
```
```
...
@@ -68,7 +68,7 @@ la documentation du `C++`.
...
@@ -68,7 +68,7 @@ la documentation du `C++`.
Comme mentionné ci dessus, chaque type primitif est stocké sur un certain nombre
Comme mentionné ci dessus, chaque type primitif est stocké sur un certain nombre
d'octets en mémoire. Lorsque vous écrirez :
d'octets en mémoire. Lorsque vous écrirez :
```
C++
```
cpp
int
variable
=
12
;
int
variable
=
12
;
```
```
...
@@ -84,7 +84,7 @@ même type de donnée. Un tableau peut être alloué statiquement ou dynamiqueme
...
@@ -84,7 +84,7 @@ même type de donnée. Un tableau peut être alloué statiquement ou dynamiqueme
L'allocation dynamique sera abordée plus tard. Un tableau peut être alloué
L'allocation dynamique sera abordée plus tard. Un tableau peut être alloué
statiquement via :
statiquement via :
```
C++
```
cpp
int
tableau
[
4
]
;
int
tableau
[
4
]
;
```
```
...
@@ -98,7 +98,7 @@ dynamique](#alloc_dyn_tableau)
...
@@ -98,7 +98,7 @@ dynamique](#alloc_dyn_tableau)
Il est possible d'accéder à un tableau en utilisant les crochets
`[`
et
`]`
.
Il est possible d'accéder à un tableau en utilisant les crochets
`[`
et
`]`
.
```
C++
```
cpp
int
tableau
[
4
]
;
int
tableau
[
4
]
;
tableau
[
0
]
=
1
;
tableau
[
0
]
=
1
;
tableau
[
3
]
=
2
;
tableau
[
3
]
=
2
;
...
@@ -111,7 +111,7 @@ tableau[2 = tableau[0] ;
...
@@ -111,7 +111,7 @@ tableau[2 = tableau[0] ;
Les instructions principales permettant de faire varier le fil d'éxécution d'un
Les instructions principales permettant de faire varier le fil d'éxécution d'un
programme en fonction de tests sont les suivantes :
programme en fonction de tests sont les suivantes :
```
C++
```
cpp
if
(
test
)
{
if
(
test
)
{
/* code execute en cas de test vrai */
/* code execute en cas de test vrai */
}
else
{
}
else
{
...
@@ -136,7 +136,7 @@ do {
...
@@ -136,7 +136,7 @@ do {
Le comportement par défaut en
`C++`
est la
*copie*
. Par exemple dans le code :
Le comportement par défaut en
`C++`
est la
*copie*
. Par exemple dans le code :
```
C++
```
cpp
int
a
=
5
;
int
a
=
5
;
int
b
=
a
;
int
b
=
a
;
b
=
12
;
b
=
12
;
...
@@ -154,7 +154,7 @@ variable. Dans le code précédent, pour faire en sorte que la variable `b` soit
...
@@ -154,7 +154,7 @@ variable. Dans le code précédent, pour faire en sorte que la variable `b` soit
une référence sur la variable
`a`
et partage les mêmes octets, il aurait ainsi
une référence sur la variable
`a`
et partage les mêmes octets, il aurait ainsi
fallu écrire :
fallu écrire :
```
C++
```
cpp
int
a
=
5
;
int
a
=
5
;
int
&
b
=
a
;
int
&
b
=
a
;
b
=
12
;
b
=
12
;
...
@@ -177,7 +177,7 @@ ou à la procédure. Ainsi, une fonction modifiant la valeur de ses paramètre n
...
@@ -177,7 +177,7 @@ ou à la procédure. Ainsi, une fonction modifiant la valeur de ses paramètre n
modifiera pas la valeur des variables utilisées pour fournir ces paramètres dans
modifiera pas la valeur des variables utilisées pour fournir ces paramètres dans
la fonction appelante. C'est cette stratégie qui est appliquée en
`C++`
.
la fonction appelante. C'est cette stratégie qui est appliquée en
`C++`
.
```
C++
```
cpp
void
f
(
int
a
)
{
void
f
(
int
a
)
{
a
=
a
+
1
;
a
=
a
+
1
;
}
}
...
@@ -222,7 +222,7 @@ de sa portée, ou si vous voulez éviter la copie de données volumineuses pass
...
@@ -222,7 +222,7 @@ de sa portée, ou si vous voulez éviter la copie de données volumineuses pass
en paramètre. Vous pouvez pour cela utiliser les références en paramètre de
en paramètre. Vous pouvez pour cela utiliser les références en paramètre de
fonctions:
fonctions:
```
C++
```
cpp
void
f
(
int
&
ref
)
{
void
f
(
int
&
ref
)
{
ref
=
ref
+
1
;
ref
=
ref
+
1
;
...
@@ -242,14 +242,14 @@ mémoire possède une *adresse*. L'adresse d'un objet en `C++` est l'adresse du
...
@@ -242,14 +242,14 @@ mémoire possède une *adresse*. L'adresse d'un objet en `C++` est l'adresse du
premier octet servant à stocker cet objet. Vous pouvez manipuler des adresses en
premier octet servant à stocker cet objet. Vous pouvez manipuler des adresses en
utilisant le symbole
`*`
. Per exemple, l'instruction
utilisant le symbole
`*`
. Per exemple, l'instruction
```
C++
```
cpp
int
*
a
;
int
*
a
;
```
```
crée une variable qui stockera
*l'adresse*
d'un entier. Étant donné un objet en
crée une variable qui stockera
*l'adresse*
d'un entier. Étant donné un objet en
`C++`
, il est possible d'obtenir son adresse via le symbole
`&`
. Par exemple :
`C++`
, il est possible d'obtenir son adresse via le symbole
`&`
. Par exemple :
```
C++
```
cpp
int
a
=
10
;
int
a
=
10
;
int
*
pa
=
&
a
;
int
*
pa
=
&
a
;
```
```
...
@@ -259,7 +259,7 @@ Attention ici `a` et `pa` ne sont pas deux noms pour la même chose : la variabl
...
@@ -259,7 +259,7 @@ Attention ici `a` et `pa` ne sont pas deux noms pour la même chose : la variabl
`pa`
est le nom d'une case mémoire contenant l'adresse d'une autre case mémoire
`pa`
est le nom d'une case mémoire contenant l'adresse d'une autre case mémoire
contenant un entier.
contenant un entier.
```
C++
```
cpp
int
a
=
10
;
int
a
=
10
;
int
*
pa
=
&
a
;
int
*
pa
=
&
a
;
// pa = 10 ; //erreur : pb n'est pas un entier
// pa = 10 ; //erreur : pb n'est pas un entier
...
@@ -269,7 +269,7 @@ L'opération consistant à utiliser une adresse pour accéder à la case mémoir
...
@@ -269,7 +269,7 @@ L'opération consistant à utiliser une adresse pour accéder à la case mémoir
correspondante s'appelle le
*déréférencement*
. Cette opération est réalisée en
correspondante s'appelle le
*déréférencement*
. Cette opération est réalisée en
utilisant également le symbole
`*`
.
utilisant également le symbole
`*`
.
```
C++
```
cpp
int
a
=
10
;
int
a
=
10
;
int
*
pa
=
&
a
;
int
*
pa
=
&
a
;
int
b
=
*
pa
;
//b prend la valeur 10
int
b
=
*
pa
;
//b prend la valeur 10
...
@@ -300,7 +300,7 @@ de sa *portée*, matérialisée par les accolades (`{`, `}`).
...
@@ -300,7 +300,7 @@ de sa *portée*, matérialisée par les accolades (`{`, `}`).
Les paramètres d'une fonction sont également limités à la portée de cette
Les paramètres d'une fonction sont également limités à la portée de cette
fonction :
fonction :
```
C++
```
cpp
int
f
(
int
a
)
{
int
f
(
int
a
)
{
int
b
=
10
;
int
b
=
10
;
int
c
=
0
;
int
c
=
0
;
...
@@ -346,7 +346,7 @@ l'adresse de la zone allouée est perdue, et vous ne pourrez plus accéder à la
...
@@ -346,7 +346,7 @@ l'adresse de la zone allouée est perdue, et vous ne pourrez plus accéder à la
zone, ou la libérer pour faire de la place en mémoire. Une allocation typique
zone, ou la libérer pour faire de la place en mémoire. Une allocation typique
d'un objet sur le tas a donc la forme :
d'un objet sur le tas a donc la forme :
```
C++
```
cpp
int
*
a
=
(
int
*
)
malloc
(
sizeof
(
int
))
;
int
*
a
=
(
int
*
)
malloc
(
sizeof
(
int
))
;
```
```
...
@@ -362,7 +362,7 @@ des autres, il n'y a pas d'espace vide entre les données). Il est donc possible
...
@@ -362,7 +362,7 @@ des autres, il n'y a pas d'espace vide entre les données). Il est donc possible
de réserver un tableau dans le tas en allouant simplement le nombre d'octets
de réserver un tableau dans le tas en allouant simplement le nombre d'octets
nécessaire pour
*l'ensemble*
des données du tableau :
nécessaire pour
*l'ensemble*
des données du tableau :
```
C++
```
cpp
/* allocation d'un tableau de 10 entiers */
/* allocation d'un tableau de 10 entiers */
int
*
tab
=
(
int
*
)
malloc
(
10
*
sizeof
(
int
))
;
int
*
tab
=
(
int
*
)
malloc
(
10
*
sizeof
(
int
))
;
```
```
...
@@ -370,7 +370,7 @@ int * tab = (int *) malloc(10*sizeof(int)) ;
...
@@ -370,7 +370,7 @@ int * tab = (int *) malloc(10*sizeof(int)) ;
Les données sont ensuite accessibles comme d'habitude en utilisant les crochets
Les données sont ensuite accessibles comme d'habitude en utilisant les crochets
(
`[`
,
`]`
) :
(
`[`
,
`]`
) :
```
C++
```
cpp
for
(
int
i
=
0
;
i
<
10
;
++
i
)
{
for
(
int
i
=
0
;
i
<
10
;
++
i
)
{
tab
[
i
]
=
2
*
i
;
tab
[
i
]
=
2
*
i
;
}
}
...
@@ -387,7 +387,7 @@ nombre d'octets à libérer. Quelque part, en sous main, le nombre d'octets
...
@@ -387,7 +387,7 @@ nombre d'octets à libérer. Quelque part, en sous main, le nombre d'octets
correspondants à l'adresse a été enregistré. Vous pouvez ainsi libérer la
correspondants à l'adresse a été enregistré. Vous pouvez ainsi libérer la
mémoire allouée par les deux instructions précédentes via :
mémoire allouée par les deux instructions précédentes via :
```
C++
```
cpp
free
(
a
)
;
free
(
a
)
;
free
(
tab
)
;
free
(
tab
)
;
```
```
...
@@ -405,7 +405,7 @@ produit une adresse qu'il faut récupérer. À la différence de `malloc` cette
...
@@ -405,7 +405,7 @@ produit une adresse qu'il faut récupérer. À la différence de `malloc` cette
adresse est correctement typée par rapport au type de l'objet alloué.
adresse est correctement typée par rapport au type de l'objet alloué.
<a
name=
"alloc_dyn_tableau"
></a>
<a
name=
"alloc_dyn_tableau"
></a>
```
C++
```
cpp
int
*
a
=
new
int
;
int
*
a
=
new
int
;
int
*
tab
=
new
int
[
10
]
;
int
*
tab
=
new
int
[
10
]
;
```
```
...
@@ -414,7 +414,7 @@ new suffit. Comme précédemment, chaque utilisation de `new` doit être un
...
@@ -414,7 +414,7 @@ new suffit. Comme précédemment, chaque utilisation de `new` doit être un
jour compensée par l'utilisation de
`delete`
. La suppression des variables
jour compensée par l'utilisation de
`delete`
. La suppression des variables
précédentes se fait via :
précédentes se fait via :
```
C++
```
cpp
delete
a
;
delete
a
;
delete
[]
tab
;
delete
[]
tab
;
```
```
...
@@ -432,7 +432,7 @@ méthodes pour manipuler votre nouveau type de données.
...
@@ -432,7 +432,7 @@ méthodes pour manipuler votre nouveau type de données.
Les classes et structures se déclarent via
Les classes et structures se déclarent via
```
C++
```
cpp
class
nom_classe
{
class
nom_classe
{
/* ... */
/* ... */
}
;
}
;
...
@@ -445,7 +445,7 @@ struct nom_structure {
...
@@ -445,7 +445,7 @@ struct nom_structure {
Dans la définition d'une classe ou d'une structure, les mots clé
`public`
et
Dans la définition d'une classe ou d'une structure, les mots clé
`public`
et
`private`
permettent de définir ce qui sera accessible ou non pour votre classe
`private`
permettent de définir ce qui sera accessible ou non pour votre classe
```
C++
```
cpp
class
nom_classe
{
class
nom_classe
{
/* ... */
//ici tout est inaccessible
/* ... */
//ici tout est inaccessible
...
@@ -479,7 +479,7 @@ dans une classe tout est privé, alors que dans une structure tout est public.
...
@@ -479,7 +479,7 @@ dans une classe tout est privé, alors que dans une structure tout est public.
Un exemple de déclaration de structure pourrait être :
Un exemple de déclaration de structure pourrait être :
```
C++
```
cpp
class
Fusee
{
class
Fusee
{
public
:
public
:
...
@@ -515,7 +515,7 @@ class Fusee {
...
@@ -515,7 +515,7 @@ class Fusee {
Le code des méthodes de cette structure devra ensuite être fourni via
Le code des méthodes de cette structure devra ensuite être fourni via
```
C++
```
cpp
Fusee
::
Fusee
()
{
Fusee
::
Fusee
()
{
/* ... */
/* ... */
...
@@ -551,7 +551,7 @@ structure, et vous pourrez l'obtenir via `sizeof(Fusee)`. Il est ensuite
...
@@ -551,7 +551,7 @@ structure, et vous pourrez l'obtenir via `sizeof(Fusee)`. Il est ensuite
possible de déclarer un objet de type structure et d'accéder à ses champs via la
possible de déclarer un objet de type structure et d'accéder à ses champs via la
syntaxe :
syntaxe :
```
C++
```
cpp
/* allocation sur la pile */
/* allocation sur la pile */
Fusee
f
;
Fusee
f
;
/* le . permet d'acceder aux champs et methodes de la structure */
/* le . permet d'acceder aux champs et methodes de la structure */
...
@@ -572,7 +572,7 @@ Une classe peut être définie récursivement, tant qu'elle ne contient que des
...
@@ -572,7 +572,7 @@ Une classe peut être définie récursivement, tant qu'elle ne contient que des
*adresses*
ou des
*références*
sur des structures similaires. Sinon, il serait bien impossible
*adresses*
ou des
*références*
sur des structures similaires. Sinon, il serait bien impossible
de déterminer le
`sizeof`
de la structure pour cause de récursion
de déterminer le
`sizeof`
de la structure pour cause de récursion
```
C++
```
cpp
class
Personne
{
class
Personne
{
int
num_secu
;
int
num_secu
;
Personne
*
parent1
;
Personne
*
parent1
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment