Programmation - notions fondamentales         

Il existe de nombreux langages de programmation : des langages compilés comme le C/C++, le Pascal, ...; des langages interprétés (qu'on appelle des scripts) comme Basic, Dos, Bash, Python, Perl, PHP, Java, ... Quelque-soit le langage choisi, il existe des notions fondamentales qui doivent être assimilées :


- les variables : elles permettent d'utiliser des données dont la valeur change au cours de l’exécution

- les boucles : elles permettent de répéter plusieurs fois une partie du programme

- les tests : ils permettent d'orienter le programme de façon conditionnelle






Sites pour apprendre à programmer : developpez.com




Notions fondamentales de programmation

Pour écrire des scripts BASH, tu auras besoin d'un éditeur : je te conseille "nano".


Pour créer un fichier test.sh avec l'éditeur "nano"  :

nano  test.sh

Tu enregistreras tes scripts avec un nom du style "test.sh" (l'extension .sh n'est pas obligatoire, mais bien pratique pour reconnaître les scripts)


Pour pouvoir exécuter "test.sh", tu dois le rendre exécutable :

chmod +x test.sh

Tu peux ensuite l’exécuter en tapant sur la ligne de commande (attention au '.' avant le '/') :

./test.sh


Préambule

Dans ce tutoriel, nous utiliserons un langage de scripting très répandu : le BASH qui permet de faire de petits programmes (qu'on appelle des scripts) très rapidement


Ce langage étant présent par défaut dans tous les Linux, tu travailleras sur une machine virtuelle Linux


Note : Note : la version Windows de Bash s'appelle Winbash


Les variables

$


exemple 1 : echo $n

  Écrire et tester le programme suivant :

       #!/bin/bash
        a=Toto
        b=Bonjour
        c=ans
        d=3
        echo $b $a $d $c
 


exemple 2 : addition
 
  Écrire le programme suivant :
 

#!/bin/bash
echo vous avez entré les nombres $1 $2 $3
r=$(($1+$2+$3))
echo la somme de ces nombres est égale à $r


  Tester le programme (noter les 3 nombres donnés en paramètres) :
./test.sh 6 4 12

dans cet exercice, vous avez constaté que $1, $2 .... correspondent aux paramètres que l'utilisateur entre sur la ligne de commande


Chapitre 1.

La lettre $ désigne un paramètre (aussi appelé variable en mathématique) ; par exemple, si je fixe la valeur de n=10, $n renvoie le nombre 10


Vérifier que vous avez compris en faisant les deux exemples 


Note : les variables s'écrivent différemment dans d'autres langages de programmation


Les boucles

for ... do  ... done


exemple 1 : compteur

  Écrire et tester le programme suivant :

#!/bin/bash
for (( i=1; i<=5; i++ ))
do
   echo "Bonjour $i fois"
done


Modifie le "i=1" en "i=3"; teste-le; que constates-tu ?


Modifie le "i<=5" en "i<=10"; teste-le; que constates-tu ?


exemple 2 : lister les fichiers du dossier

  Écrire et tester le programme suivant :

#!/bin/bash
for file in *; do
  printf '%s\n' "$file"
done


Dans cet exercice, vous avez découvert une façon de lister les fichiers contenu dans le dossier courant avec la commande "for file in *;"

 
exercice 1 : écrire un script qui liste les fichiers contenus dans le dossier "/etc"
 

#!/bin/bash
cd /etc
for file in *; do
  printf '%s\n' "$file"
done

 
exercice 2 : écrire un script qui liste les fichiers contenus dans le dossier donné en paramètre
 

#!/bin/bash
cd $1
for file in *; do
  printf '%s\n' "$file"
done


Chapitre 2.

Cette instruction sert à créer une boucle ; une boucle est une instruction qui va s’exécuter en boucle jusqu'à ce que la condition de sortie soit remplie ;

_____________
Pour vérifier que tu as compris, réponds aux questions suivantes.

exemple 1 :

  - Dans la ligne  echo "Bonjour $i fois" , que désigne le '$i' ?
- Dans la ligne  for (( i=1; i<=5; i++ )), que signifie le i=1; ?
- Dans la ligne  for (( i=1; i<=5; i++ )), que signifie le i<=5; ?
- Dans la ligne  for (( i=1; i<=5; i++ )), que signifie le i++ ?



exemple 2 :

- Fais un "ls" dans le répertoire courant et compare avec le résultat du script; que constates-tu ?

- de quel répertoire le script fait-il le listing ?

Les tests conditionnels

if ... then ... else ... fi


 
exemple 1 : mineur/majeur

  Écrire et tester le programme suivant :

#!/bin/bash
echo -n "Quel est ton age ?"
read a
if  [[ $a -gt 17 ]] 
then
  echo "Tu as $a ans, tu es donc majeur"  
else
  printf '\n%s\n\n' "Tu es mineur"
fi


Remarque 1 : pour comparer des nombres -gt signifie > et -lt signifie <
Remarque 2 : pour comparer 2 mots (chaines de caractères), on utilise == ; exemple : if [[ $m == "Paris" ]]

exercice 1 : la capitale de la France

   Tu dois créer le script suivant :

     - demander : quelle est la capitale de la France ?
     - lire la réponse dans une variable v
     - si v=Paris alors afficher "tu as bien répondu" sinon  afficher "c'est faux"  
 
exercice 2 :  reprendre l'exercice 1 avec la modification suivante
 
     - reposer la question tant que la réponse est fausse
 
Contrôle:
lire une liste d'adresse mail dans un fichier et envoyer un mail à tous ces destinataires
Chapitre 3.

Les tests d'éxecution conditionnelle permettent d'éxécuter une action uniquement si une condition est remplie.

Par exemple : si il pleut, alors je prends mon parapluie

"if ... then ... else ... " signifie :

"si (une condition) alors (faire ceci) sinon (faire cela)"


_____________
Pour vérifier que ta as compris, réponds aux questions suivantes.

exemple 1 :

  - Quelle est l'instruction qui permet demander son age à l'utilisateur et de le stocker dans la variable "a" ?

- Si on avait mis la condition "if "[[ $a -lt 18 ]]" au lieu de "if [[ $a -gt 17 ]]", qu'aurait-il fallu modifier aussi ?

Remarque 1 :
 -gt signifie "plus grand que.." équivalent à  >
 -lt signifie "plus petit que.." équivalent à  <

Remarque 2 : pour comparer 2 mots (chaines de caractères), on utilise == ; exemple : if [[ $m == "Paris" ]]