Algorithmique et Langages et programmation

Algorithmique

Un algorithme se définit comme une méthode opérationnelle permettant de résoudre, en un nombre fini d’étapes clairement spécifiées, toutes les instances d’un problème donné. Cette méthode peut être exécutée par une machine ou par une personne.

Les élèves ont déjà appris au collège à écrire, mettre au point et exécuter un programme. Les programmes de mathématiques des classes de seconde et première développent une pratique de l’algorithmique sur laquelle il convient également de s’appuyer.

À partir du développement d’algorithmes, l’élève s’initie à la notion de complexité algorithmique. Ces algorithmes sont exprimés dans un langage de programmation et exécutés sur une machine ou bien définis de manière informelle.

 

SavoirsCapacitésObservations
Algorithmes de référence
– recherche dichotomique ;
– addition de deux entiers exprimés en binaire ;
– tri par sélection ;
– tri par fusion ;
– recherche d’un chemin dans un graphe par un parcours en largeur ou en profondeur.
Comprendre un algorithme et expliquerce qu’il fait.
Modifier un algorithme existant pour obtenir un résultat différent.
Concevoir un algorithme.
Programmer un algorithme.
S’interroger sur l’efficacité d’un algorithme.
On présente simultanément les notions d’algorithme et de programme, puis on les distingue.
L’objectif est une compréhension de ces algorithmes et la capacité à les mettre en œuvre.
Les situations produisant une erreur (division par zéro, dépassement de capacité) sont mises en évidence.
On présente les complexités logarithmique, linéaire et quadratique sur les exemples de la recherche dichotomique, de l’addition de deux entiers  et du tri par sélection.
Traitement d’image
Programmation d’algorithmes simples sur les images bitmap.
Modifier format, taille, contraste ou luminance d’images numériques.
Détecter des informations spécifiques.
L’objectif est d’appliquer effectivement des programmes simples à des images.
On peut aussi étudier le floutage, la rotation, la recherche de contour, etc.

 

Langages et programmation

La programmation est l’expression d’un algorithme dans un langage exécutable par une machine et joue un rôle central dans le développement des systèmes et produits informatiques.

L’apprentissage de la programmation vise d’une part, à savoir programmer un algorithme décrit en langue naturelle et d’autre part, à comprendre un programme et exprimer en langue naturelle l’algorithme sous-jacent.

On commence par rappeler les éléments de base de tout langage de programmation (affectation, séquence, test et boucle) tels qu’ils ont été présentés au collège et en mathématiques en classe de seconde et consolidés en classe de première. La notion de fonction permet d’éviter des redondances, de structurer les programmes et d’organiser leur conception. Enfin, on met en évidence la qualité des programmes en les testant sur différents jeux de données.

On compare la programmation séquentielle et la programmation parallèle, en s’appuyant sur la programmation déjà développée au cycle 4 du collège.

On insiste sur la clarté et la documentation qui facilitent la reprise du code par d’autres programmeurs. On montre enfin l’universalité de la notion de langage au-delà de la programmation.

L’enseignant choisit un langage de programmation selon les critères suivants : simplicité d’utilisation, liberté d’installation, présence d’outils associés, existence d’une communauté d’utilisateurs et de bibliothèques facilitant le développement, la richesse et la qualité de la documentation.

 

SavoirsCapacitésObservations
Types de données
– nombre entier ;
– virgule flottante ;
– booléen ;
– caractère ;
– tableau ;
– chaîne de caractères.
Choisir un type de donnée en fonction d’un problème à résoudre.On adapte la présentation de ces notions en fonction du langage de programmation retenu.
Fonctions
– notion de fonction ;
– portée des variables et passage d’arguments ;
– définition récursive de fonctions.
Concevoir l’entête (ou l’interface) d’une fonction, puis la fonction elle-même.On adapte la présentation de ces notions en fonction du langage de programmation retenu.
Programmation séquentielle versus parallèle
– affectation, séquences, tests, boucles ;
– exécution parallèle de processus.
Écrire un programme séquentiel.
Écrire un programme parallèle simple.
En s’appuyant sur le travail mené au cycle 4, on met en évidence le fait que la majorité des programmes est composée de processus qui s’exécutent en parallèle et on initie aux notions correspondantes.
Correction d’un programme
– test ;
– instrumentation ;
– situations d’erreur ou bugs.
Mettre un programme au point en le testant, en l’instrumentant.
Utiliser un outil de mise au point.
On évoque les risques issus des programmes incorrects et des bugs qui en résultent, aux conséquences parfois graves.
Langages de description
Présentation des langages HTML et CSS et du principe de séparation du contenu et de la mise en forme.
Créer et analyser une page web.On met en évidence la diversité des langages utilisés en informatique : langages de programmation, de description, de requêtes, de spécification, etc.
On met en valeur le double usage du langage, lisible par un humain et interprétable par une machine.