Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cours
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
Package registry
Model registry
Operate
Environments
Terraform modules
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
radhwan.hassine
cours
Commits
afcbb22d
Commit
afcbb22d
authored
3 years ago
by
paul.albuquer
Browse files
Options
Downloads
Patches
Plain Diff
updated lesson 1 to version 16.09.2020
parent
6b2a6d34
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
lessons/lesson_1/contenu_cours_1.md
+33
-32
33 additions, 32 deletions
lessons/lesson_1/contenu_cours_1.md
with
33 additions
and
32 deletions
lessons/lesson_1/contenu_cours_1.md
+
33
−
32
View file @
afcbb22d
# Algorithmes et structures de données 20
19-20
# Algorithmes et structures de données 20
20-21
Contenu du cours 1 du 1
8
.09.20
19
Contenu du cours 1 du 1
6
.09.20
20
*****
*****
...
@@ -12,7 +12,7 @@ bureau B410
...
@@ -12,7 +12,7 @@ bureau B410
022 546 2554
022 546 2554
paul.albuquerque@hesge.ch
paul.albuquerque@hesge.ch
## Organisation du module (2 cours, 50
% chacun)
## Organisation du module (2 cours, 50
% chacun)
-
Algorithmes et structures de données
-
Algorithmes et structures de données
-
1er semestre
-
1er semestre
...
@@ -24,10 +24,10 @@ paul.albuquerque@hesge.ch
...
@@ -24,10 +24,10 @@ paul.albuquerque@hesge.ch
> Au moins 2 évaluations par semestre
> Au moins 2 évaluations par semestre
-
Programmation séquentielle en langage C
-
Programmation séquentielle en langage C
-
1er & 2ème semestre
:travaux pratiques en langage C
-
1er & 2ème semestre
:travaux pratiques en langage C
-
Chaque semestre des travaux pratiques sont répartis dans deux gros projets d'env. 7 semaines
-
Chaque semestre des travaux pratiques sont répartis dans deux gros projets d'env. 7 semaines
## Qu'est-ce qu'un algorithme
?
## Qu'est-ce qu'un algorithme
?
Informellement, c'est une recette ou une marche à suivre.
Informellement, c'est une recette ou une marche à suivre.
...
@@ -42,9 +42,9 @@ Plus formellement:
...
@@ -42,9 +42,9 @@ Plus formellement:
Le mot
*algorithme*
vient du nom latinisé du mathématicien perse
Le mot
*algorithme*
vient du nom latinisé du mathématicien perse
[
Al-Khawarizmi
](
http://fr.wikipedia.org/wiki/Al-Khawarizmi
)
[
Al-Khawarizmi
](
http://fr.wikipedia.org/wiki/Al-Khawarizmi
)
Les algorithmes des grecs
: Euclide, Erastosthène
Les algorithmes des grecs
: Euclide, Erastosthène
Le père de l'algorithmique
:
**Muhammad Ibn Mūsā al-Khuwārizmī**
Le père de l'algorithmique
:
**Muhammad Ibn Mūsā al-Khuwārizmī**
Résolution d'un problème
Résolution d'un problème
...
@@ -64,17 +64,17 @@ Résolution d'un problème
...
@@ -64,17 +64,17 @@ Résolution d'un problème
-
Forme de l'algorithme (boucle et tests)
-
Forme de l'algorithme (boucle et tests)
-
Condition d'arrêt de la boucle
-
Condition d'arrêt de la boucle
## Qu'est qu'un programme C
?
## Qu'est qu'un programme C
?
-
Importations de librairies (paquetages)
:
-
Importations de librairies (paquetages)
:
```
C
```
C
#include <stdlio.h>
#include <stdlio.h>
#include <stdlib.h>
#include <stdlib.h>
```
```
-
Entête du programme
:
`int main()`
-
Entête du programme
:
`int main()`
-
Déclaration de variables
:
`int x = 5;`
-
Déclaration de variables
:
`int x = 5;`
-
Bloc d'instructions
:
-
Bloc d'instructions
:
```
C
```
C
{
{
int x = 5;
int x = 5;
...
@@ -83,12 +83,12 @@ Résolution d'un problème
...
@@ -83,12 +83,12 @@ Résolution d'un problème
}
}
```
```
## Les types de base
: les entiers (`int, unsigned int`)
## Les types de base
: les entiers (`int, unsigned int`)
-
Numérotation binaire en particulier sur 32 bits
-
Numérotation binaire en particulier sur 32 bits
-
Nombres négatifs =
\>
complément à 2
-
Nombres négatifs =
\>
complément à 2
numération sur 3 bits
:
numération sur 3 bits
:
|binaire | entier≥0| binaire | entier<0|
|binaire | entier≥0| binaire | entier<0|
|:-------|:---------------------|:--------|:--------|
|:-------|:---------------------|:--------|:--------|
...
@@ -99,27 +99,27 @@ Résolution d'un problème
...
@@ -99,27 +99,27 @@ Résolution d'un problème
-
Nombres négatifs =
\>
complément à 1 par simple inversion des bits
-
Nombres négatifs =
\>
complément à 1 par simple inversion des bits
**problème
**: 0 possède alors deux représentations
!
**problème
**: 0 possède alors deux représentations
!
-
Opérations particulières
-
Opérations particulières
-
Division entière
: 5 / 2 = 2 , 10 / 3 = 3 , 18 / 5 = 3
-
Division entière
: 5 / 2 = 2 , 10 / 3 = 3 , 18 / 5 = 3
-
Reste de la division entière (modulo)
: 5 % 2 = 1 , 10 % 3 = 1 , 18 % 5 = 3
-
Reste de la division entière (modulo)
: 5 % 2 = 1 , 10 % 3 = 1 , 18 % 5 = 3
-
Constantes de la librairie
`<limits.h>`
:
`INT_MAX, INT_MIN`
-
Constantes de la librairie
`<limits.h>`
:
`INT_MAX, INT_MIN`
## Les types de base
: les réels (`float, double`)
## Les types de base
: les réels (`float, double`)
-
`Float`
: écriture, opérations, exemples complets d'exponentiation
-
`Float`
: écriture, opérations, exemples complets d'exponentiation
`pow(A,B)`
où
`A, B`
sont des
`double`
=
\>
le résultat est un
`double`
!
`pow(A,B)`
où
`A, B`
sont des
`double`
=
\>
le résultat est un
`double`
!
**Attention
!**
Le calcul effectué par
*pow*
utilise un logarithmes et une exponentielle.
**Attention
!**
Le calcul effectué par
*pow*
utilise un logarithmes et une exponentielle.
> Sur 32 bits : 1 bit de signe, 8 bits pour l'exposant et 23 bits pour la mantisse.
> Sur 32 bits : 1 bit de signe, 8 bits pour l'exposant et 23 bits pour la mantisse.
-
Exemple
: coder 19,625 en binaire
-
Exemple
: coder 19,625 en binaire
> > 19
: 10011 = 2<sup>4</sup> + 2<sup>1</sup> + 2<sup>0</sup>;
> > 19
: 10011 = 2<sup>4</sup> + 2<sup>1</sup> + 2<sup>0</sup>;
0,625
: 0,101 = 2
<sup>
-1
</sup>
+ 2
<sup>
-3
</sup>
0,625
: 0,101 = 2
<sup>
-1
</sup>
+ 2
<sup>
-3
</sup>
> > 19,625
: 10011,101 = 0,10011101 \* 2<sup>5</sup>
> > 19,625
: 10011,101 = 0,10011101 \* 2<sup>5</sup>
> > Le signe du nombre est stocké sur dans le 1<sup>er</sup> bit (0 positif / 1 négatif).
> > Le signe du nombre est stocké sur dans le 1<sup>er</sup> bit (0 positif / 1 négatif).
...
@@ -128,11 +128,11 @@ Résolution d'un problème
...
@@ -128,11 +128,11 @@ Résolution d'un problème
> > Donc 5 = 00000101
> > Donc 5 = 00000101
> > La mantisse de 23 bits stockée est 00111010000000000000000
> > La mantisse de 23 bits stockée est 00111010000000000000000
(le 1
<sup>
er
</sup>
1 est omis car obligatoire)
(le 1
<sup>
er
</sup>
1 est omis car obligatoire)
> > 19,625 stocké en binaire
: 0 00000101 00111010000000000000000
> > 19,625 stocké en binaire
: 0 00000101 00111010000000000000000
-
Questions
: quelles sont les valeurs les plus petite, grande, petite positive (
\>
0)?
-
Questions
: quelles sont les valeurs les plus petite, grande, petite positive (
\>
0)?
## Les booléens `bool`
## Les booléens `bool`
...
@@ -145,6 +145,7 @@ Résolution d'un problème
...
@@ -145,6 +145,7 @@ Résolution d'un problème
bool x = true; // booléen vrai
bool x = true; // booléen vrai
bool x = false; // booléen faux
bool x = false; // booléen faux
bool x = 17; // 17 converti en booléen vrai
bool x = 17; // 17 converti en booléen vrai
bool x = -5; // -5 converti en booléen vrai
bool x = 0; // 0 converti en booléen faux
bool x = 0; // 0 converti en booléen faux
int y = false; // booléen faux converti en 0
int y = false; // booléen faux converti en 0
int y = true; // booléen vrai converti en 1
int y = true; // booléen vrai converti en 1
...
@@ -153,16 +154,16 @@ Résolution d'un problème
...
@@ -153,16 +154,16 @@ Résolution d'un problème
-
Vérification =
\>
table de vérité
-
Vérification =
\>
table de vérité
-
not (A and B) = (not A) or (not B) :
`!(A && B) == (!A)|| (!B)`
-
not (A and B) = (not A) or (not B) :
`!(A && B) == (!A)|| (!B)`
-
not (A or B) = (not A) and (not B) :
`! --|| B) == (!A) && (!B)`
-
not (A or B) = (not A) and (not B) :
`! --|| B) == (!A) && (!B)`
-
Opérateurs logiques
:
`*==, !=, &&, ||, !, <, >, <=, >=`
-
Opérateurs logiques
:
`*==, !=, &&, ||, !, <, >, <=, >=`
-
Comparaisons bit à bit
:
`&`
(et),
`|`
(ou),
`^`
(xor),
`!`
(not)
-
Comparaisons bit à bit
:
`&`
(et),
`|`
(ou),
`^`
(xor),
`!`
(not)
-
Comparaisons bit à bit avec assignation
:
`&=, |=, ^=`
-
Comparaisons bit à bit avec assignation
:
`&=, |=, ^=`
## Structures de boucle
## Structures de boucle
-
Syntaxe
-
Syntaxe
```
C
```
C
for (initialisation
>
;condition;increment) {
for (initialisation;condition;increment) {
instructions;
instructions;
}
}
...
@@ -174,7 +175,7 @@ Résolution d'un problème
...
@@ -174,7 +175,7 @@ Résolution d'un problème
instructions;
instructions;
} while (condition);
} while (condition);
```
```
-
Instructions
:
`break, continue`
-
Instructions
:
`break, continue`
## Les caractères (type prédéfini) `char`
## Les caractères (type prédéfini) `char`
...
...
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