0% ont trouvé ce document utile (0 vote)
13 vues3 pages

Administration Système

Le document présente les structures de contrôle en programmation, notamment les structures conditionnelles et de répétition, ainsi que les opérateurs logiques. Il propose des exercices pratiques pour appliquer ces concepts, tels que la comparaison de boucles et la manipulation de fichiers. Des commandes spécifiques sont également fournies pour faciliter l'accès à des prédicats et l'exécution de scripts.

Transféré par

gibak47183
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
13 vues3 pages

Administration Système

Le document présente les structures de contrôle en programmation, notamment les structures conditionnelles et de répétition, ainsi que les opérateurs logiques. Il propose des exercices pratiques pour appliquer ces concepts, tels que la comparaison de boucles et la manipulation de fichiers. Des commandes spécifiques sont également fournies pour faciliter l'accès à des prédicats et l'exécution de scripts.

Transféré par

gibak47183
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Semaine 15

Structures de contrôle M1101


DUT info – semestre 1
Département Informatique

Contrôle

Rupture de séquence

La séquence d’instructions peut être rompue grâce à la structure alternative qui conditionne l’exécution d’un bloc (ou d’un
autre) à la réussite (ou l’échec) d’une commande préalable :
if 〈cmd-si〉 ; then ; 〈cmds-if 〉 ; else 〈cmds-else〉 ; fi

if 〈cmd-si〉
then
〈cmds-if 〉
else
〈cmds-else〉
fi

Répétitions

La structure for permet de spécifier une liste de valeurs pour lesquelles un bloc de commandes doit être répété en affectant
chaque valeur à une variable spécifiée. La liste de valeurs à utiliser est construite une seule fois par les expansions du shell avant
les répétitions.
for var in 〈liste〉
do
〈cmds〉
done

La structure while répète une suite d’instructions tant qu’une commande spécifiée réussit.
while 〈cmd-tq〉
do
〈cmds-while〉
done

Opérateurs logiques
– la commande suivant && n’est exécutée que si celle qui la précède réussit ;
– la commande suivant || n’est exécutée que si celle qui la précède échoue ;
Par ailleurs une commande précédée de ! voit sa réussite transformée en échec et son échec transformé en réussite.

Exercices

Pour être sûr d’avoir accès à des prédicats corrects vous devrez placer en tête de vos scripts la ligne :

source /home/public/m1101/tp/2020-2021

Elle vous donnera accès directement à des versions pleinement opérationnelles des commandes suivantes
pareil qui réussit uniquement si elle reçoit deux paramètres identiques
est-vide qui réussit uniquement si elle ne reçoit aucun paramètre
est-repertoire qui réussit uniquement si elle reçoit en paramètre un chemin vers un dossier accessible
est-executable qui réussit uniquement si elle reçoit en paramètre un chemin vers un fichier exécutable
est-nombre-entier qui réussit uniquement si elle reçoit en paramètre un nombre entier
existe qui réussit uniquement si elle reçoit en paramètre un chemin vers un fichier qui existe

1
Exercice 1 : Comparaison des deux types de boucles

Q 1. Exécutez la commande suivante dans votre terminal :

source /home/public/m1101/tp/[Link]

Q 2. Écrivez deux commandes, compter-for et compter-while, permettant d’afficher les entiers de 1 à 10, un sur chaque ligne.
compter-for devra utiliser le contrôle for et compter-while le contrôle while. Lire expr(1) pourra vous être utile dans un
des deux cas.
La commande time permet d’évaluer le temps d’exécution d’une commande. Pour plus de détails sur cette commande référez-
vous à la time(1).
Q 3. Comparez le temps d’exécution de compter-for et compter-while.
Q 4. Écrivez deux commandes, parametres-for et parametres-while, qui affichent chacune les paramètres qu’elle reçoivent,
un par ligne, en les préfixant par leur position sur la ligne de commande. parametres-for devra utiliser la structure for et
parametres-while la structure while.

Exercice 2 : Entraînement

Q 1. Écrivez une commande options qui n’affiche que les options qu’elle reçoit. On rappelle qu’une option est un paramètre
qui commence par le caractère -.
Q 2. Écrivez une commande arguments qui n’affiche que les arguments qu’elle reçoit. Elle ne doit afficher qu’une seule ligne
contenant tous ses arguments. On considère ici que dès le premier paramètre qui n’est pas une option tous les autres (lui inclus)
sont des arguments.

Exercice 3 : Lister des fichiers

On rappelle que la commande interne exit permet de quitter immédiatement le shell en cours qu’il soit interactif ou script.
Q 1. Écrivez une commande est-document qui réussit si et seulement si elle reçoit un paramètre, que celui-ci correspond à un
chemin de fichier existant et que ça n’est pas un dossier. Elle ne doit produire aucun affichage.
Q 2. Écrivez une commande est-script qui réussit si et seulement si elle reçoit un paramètre, que celui-ci correspond à un
chemin de fichier existant et que c’est un script shell. Pour mémoire un script shell est un fichier qui est exécutable et dont la
première ligne est exactement #!/bin/bash. Elle ne doit produire aucun affichage.
Q 3. Écrivez une commande lister-fichiers qui affiche les noms des fichiers d’un certain type contenu dans un dossier. Elle
prend deux paramètres : le premier est un type, le second un chemin vers un dossier. Les types autorisés sont repertoire,
document et script. La commande doit traiter correctement les fichiers dont les noms contiennent des espaces. Elle doit
échouer et ne rien afficher si :
– elle ne reçoit pas assez ou trop d’arguments ;
– si le type reçu n’est pas autorisé ;
– si le chemin reçu est inaccessible ou pas un dossier.
Q 4. Écrivez une commande filtrer-fichiers qui n’affiche que les fichiers d’un certain type parmi tout ceux dont elle reçoit
les chemins en paramètre. Le premier paramètre est du même type que pour la commande lister-fichiers. Les suivants
sont les chemins des fichiers à filter. La commande doit traiter correctement les fichiers dont les noms contiennent des espaces.
Elle doit réussir et ne rien afficher si aucun chemin ne lui est donné. Elle doit échouer et ne rien afficher si :
– elle ne reçoit pas assez d’arguments ;
– si le type reçu n’est pas autorisé.

Affectation via l’entrée standard

La commande interne read lit sur l’entrée standard (et uniquement l’entrée standard) une ligne (une suite de caractères termi-
née par un retour-charriot) et affecte les mots lus (suite de caractères sans espace) aux variables dont les noms lui sont passés
en paramètre.
Chaque variable est affectée avec un seul mot, sauf la dernière qui reçoit tous les mots restant après affectation des autres
variables. Les variables ne sont visibles que dans l’environnement du processus dans lequel la commande read s’exécute.
Si l’entrée standard est vide elle échoue, sinon elle réussie.
Vous pouvez étudiez sa documentation (par exemple via help read) pour en comprendre le fonctionnement.

2
Exercices

Exercice 4 : Entraînements

Utiliser les contrôles for ou while et la commande read pour écrire les scripts de cet exercice.
Q 1. Écrivez une commande prefixer qui préfixe toutes les lignes qu’elle reçoit via l’entrée standard par un mot qui lui est
donné en premier paramètre.
Q 2. Écrivez une commande bouts qui affiche uniquement la dernière puis la première ligne qu’elle reçoit sur l’entrée standard.
Q 3. Écrivez une commande lignes qui affiche uniquement les lignes qu’elle reçoit sur l’entrée standard et dont les numéros
lui sont passés en paramètres. On considère, sans le vérifier, que les numéros sont donnés dans l’ordre croissant.

Vous aimerez peut-être aussi