Section 5.2 - Gestion des fichiers : organisation hiérarchique, liens physiques et symboliques, accès, droits et attributs. Flux standard (stdin, stdout, stderr). Redirection et tubes (pipe).
Annexe A et Section 5.1 - Langage C : Traits généraux, définitions et types de base, tableaux statiques, chaînes de caractères, structures de contrôle.
En environnement Linux :
Déterminer des chemins absolus ou relatifs dans une arborescence donnée.
Calculer ou modifier les permissions d'un fichier en octal et en symbolique (chmod).
Expliquer la différence entre un lien physique et un lien symbolique (partage d'inode vs pointeur de chemin, effet de la suppression de la cible).
Écrire une ligne de commande combinant plusieurs filtres (ls, grep, head, tail, wc) à l'aide de tubes (pipe) et de redirections.
En langage C :
Prévoir le résultat et le type d'une expression arithmétique ou logique (division entière, conversion de type, évaluation paresseuse).
Écrire une fonction C réalisant un traitement élémentaire sur des nombres (somme, factorielle, test de divisibilité, suite récurrente).
Parcourir un tableau statique 1D pour calculer une somme, trouver le maximum ou tester la présence d'une valeur.
Manipuler une chaîne de caractères en s'appuyant sur le caractère sentinelle '\0' (calculer sa longueur, la renverser, tester si elle est un palindrome).
Identifier les risques de comportement indéfini (dépassement d'indice de tableau, variable non initialisée).
Section 1.1 - Algorithmes et programmes : terminaison, correction partielle et totale, variant, invariant de boucle.
Section 1.2 - Discipline de programmation : spécification (données attendues en entrée, fournies en sortie/retour), préconditions, postconditions, programmation défensive et assertions (assert).
Section 1.3 - Validation, test : jeu de tests associé à un programme, graphe de flot de contrôle, chemins faisables, critères de couverture (sommets, arcs), test des conditions.
Validation, jeu de tests, graphe de flot de contrôle. Préconditions, instructions assert.
Terminaison et correction d'algorithmes simples. Les variants et invariants pourront être suggérés aux élèves. Exemples traités en cours/TD : multiplication par additions successives, quotient et reste dans la division euclidienne, recherche du premier diviseur supérieur ou égal à deux d'un entier.