# Windows et console
---
## Système d'exploitation
*OS = Operating System*
---
Dans ce cours, on va parler de la console `cmd.exe` qui permet, dans Windows, de manipuler les fichiers et les dossiers.
Il nous faut donc dire ce qu'est un système d'exploitation comme Windows, ce qu'est une CLI comme ``cmd.exe`` et parler de l'organisation des fichiers.
---

* La machine a des ressources (mémoire, écran, ...)
* On exécute des applications (Navigateur, jeu...) qui ont besoin de ces ressources
---

Le système d'exploitation dirige l'utilisation des ressources par les applications.
Microsoft Windows est devenu le système d'exploitation dominant dès les années 80-90 et l'est encore aujourd'hui.
---
### Qu'apporte l'OS ?
* Sécurité : il vérifie que telle application a le droit d'accéder à telle ressource, tel fichier.
* Est une couche d'abstraction : les machines sont très différentes. Les applications ne veulent pas se soucier de ces différences.
---
#### Un exemple concret
Quand les cartes vidéos 3D sont apparues (années 90) certains jeux ne fonctionnaient qu'avec certaines cartes...
Windows a imposé le standard **directX** de sorte que toutes les cartes se sont mises à parler un langage commun.
---
## GUI = Graphic User Interface
---

En tant qu'utilisateur, on préfère souvent une interface avec des boutons, des menus...
---
## CLI = Command Line Interface
---

Il faut écrire du texte, l'aspect est rébarbatif, ça a l'air vieillot.
Pourtant, c'est souvent plus puissant qu'une GUI.
(*Par exemple dans les jeux vidéos, il arrive que les développeurs aient prévu une CLI pour entrer des commandes comme vies infinies.*)
---
Le programmeur développe des outils qui font des choses. Les CLI et GUI permettent des les piloter.
* Il est souvent plus long de faire une GUI, donc si ce n'est pas utile on ne le fait pas.
* Une GUI peut être dangereuse : un utilisateur non averti risque plus de mal l'utiliser. On évite les commandes trop puissantes (effacer le disque dur...) avec une GUI.
---
## Le système de fichier
En termes de CLI, on se limite à manipuler le système de fichier. Ici avec **Windows**, plus tard avec Linux.
---

#### Racines
Le système de fichier à des racines comme `C:\`
Cela correspond à une partie du disque dur.
Au lycée, on a aussi `U:\` qui correspond à un répertoire réseau.
---

#### Dossiers, répertoires
Les dossiers (ou répertoires) sont des contenants.
Par exemple à gauche :
`Gimp`
---

#### Fichiers
Certains fichiers continnt des données (son, image...)
`roman.txt` ou `musique.mp3`
Certains sont exécutables.
`prog.exe`
---

#### extension
Les noms de fichiers terminent par `.txt`, `.exe`...
Ce sont des **extensions**. Elles n'ont rien d'obligatoires. Elles donnent juste une indication à l'utilisateur et à l'OS. `roman.txt` devrait **normalement** contenir du texte.
---

#### Chemin absolu
Un chemin indique comment atteindre un fichier/dossier
Si ce chemin commence par la racine, alors il est **absolu**.
Exemple :
`C:\Utilisateurs\Jean\roman.txt`
---

#### Chemin relatif
Exemple : Vous êtes en train de parcourir le dossier `Martine`.
On peut le chemin vers `roman.txt` à partir de là. C'est un **chemin relatif**.
`..\Jean\roman.txt`
---
* Si le chemin commence par une racine comme `C:\`, alors il est **absolu**. Peu importe où on est.
* Sinon le chemin est relatif et dépend d'où on est.
* `..` désigne le répertoire **parent**
* `.` désigne le répertoire courant (utile quelquefois...)
`..\Jean\roman.txt` signifie donc : remonter d'un dossier, aller dans le dossier `Jean`, trouver là `roman.txt`.