On emploie régulièrement le mot programmation et le mot codage ou code dans les médias et les instances éducatives. Ces mots ont-ils le même sens ? Doit-on dire : les élèves apprennent à programmer ou les élèves apprennent à coder ? Avec l'arrivée probable de l’enseignement du langage informatique (de manière facultative et sur le temps périscolaire) dans les écoles primaires dès la rentrée de septembre 2014, quelques précisions s'imposent...
1. Quelques définitions
- Programmation (informatique) : Ensemble des activités liées à la définition, l'écriture, la mise au point et l'exécution de programmes informatiques. (définition Larousse)
- Codage (informatique) : Le codage est l’écriture d’un programme à l’aide d’un langage informatique.
- Programme (informatique) : ordres auxquels doit obéir un dispositif. (définition Larousse).
- Langage (informatique) : Ensemble de caractères, de symboles et de règles qui permettent de les assembler, utilisé pour donner des instructions à un ordinateur. (définition Larousse)
- Le mot programmation semble avoir un sens plus large. Le codage étant plus précisément la phase durant laquelle on saisit des instructions dans un langage informatique donné.
2. Les différents types de langage
Exemple :
- langage machine (assembleur) ;
- langage algorithmique (universel) ;
- langage impératif (Basic, Python, C, etc.) ;
- langage de requête (Sql)
- langage descriptif (html, css)…
Un langage facilite la résolution de classes de problèmes :
- C : système d'exploitation (Unix/Linux)…
- C++ : applications de grande taille…
- JAVA, C# : applications de grande taille, web…
- LISP : prototypage, systèmes experts…
Nota : ces langages nécessitent l’utilisation d’un éditeur de langage (mini-traitement de texte spécialisé).
3. Les différentes méthodes de programmation
- Programmation graphique (Scratch, Apps Inventor, Picaxe Editor, etc. ) ;
- Programmation orientée objet (C++, Java, Ruby etc.) ;
- Programmation évènementielle…
Il faut distinguer la programmation (sens général) et les méthodes de programmation.
4. Aspects pédagogiques
4.1 Algorithme (Apprentissage)
L'algorithme est l'ensemble des règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur.
Exemple : (LARP - logiciel qui facilite la réalisation d'organigrammes et d'algorithmes)
-
Les types (constantes, variables)
-
Les boucles
-
Les fonctions
4.2 Le codage (développement)
Un exemple simple de programme (source wikipédia)
L'immense majorité des programmes qui s'exécutent sur nos ordinateurs, téléphones et autres outils électroniques sont écrits dans des langages de programmation dits impératifs : les lignes du programme sont exécutées les unes après les autres. Chaque ligne du programme effectue soit une opération simple, soit exécute une fonction qui est elle même une suite d'opérations simples.Le programme suivant écrit en langage Java (très légèrement simplifié et auquel des commentaires ont été rajoutés), demande simplement à l'utilisateur d'entrer au clavier deux nombres entiers, et affiche leur quotient.
Exemple :
void main(){// fonction 'main' : c'est toujours ici qu'un programme commence
// 'int' signifie integer : nombre entier en anglais
int A, B;// on déclare deux variables A et B qui sont des nombres entiers
WriteLine("entrez deux entiers : ");// 'WriteLine' permet d'écrire à l'écran
A = ReadIntFromKeyboard();// on attend que l'utilisateur tape un entier au clavier,
// et on l'enregistre dans A
B = ReadIntFromKeyboard();// puis on fait la même chose pour B
if(B ==0){ // si B est égal à 0
WriteLine("erreur : division par zéro");
}else{// sinon
float C = CalculerDivision(A,B);// on exécute la fonction 'CalculerDivision'
// que l'on a programmée ci-dessous,
// et on enregistre le résultat dans C qui est un 'float' : un nombre à virgule
WriteLine("le résultat est : "+ C);// on affiche C
}
}
float CalculerDivision(float U, float V){// U et V sont les paramètres de notre fonction 'CalculerDivision' : ce sont des nombres à virgules (float).
// et celle-ci renvoie un 'float' : un nombre à virgule
// dans la fonction 'main', A et B étaient des nombres entiers,
// U et V sont des copies des valeurs de A et B,
// et qui ont été converties en nombres à virgule (22 deviendrait simplement 22.0000000)
float Resultat;
Resultat = U / V; // on effectue la division
return Resultat;/// on renvoie le résultat
}
Dans ce programme les principales fonctionnalités de la programmation impérative sont utilisées : variables de type nombre entier, nombre à virgule, chaîne de caractère, fonction calculant un résultat à partir de paramètres, fonction effectuant une tâche telle qu'afficher un message à l'écran, instruction 'if' permettant d'exécuter un code ou un autre en fonction de la valeur de telle ou telle variable.
Dans un programme informatique typique, on trouvera également des boucles 'while' ou 'for' qui permettent d'exécuter un morceau de code en boucle ou simplement un certain nombre de fois, des 'new' pour l'allocation dynamique de données (par exemple des tableaux), et très souvent des éléments de programmation objet permettant de structurer différemment le code et de créer des types de données personnalisés, ou encore des exceptions pour gérer certain cas d'erreurs plus facilement.On remarque que pour effectuer une tâche très simple, le code informatique est très laborieux, et encore ici on ne traite pas les erreurs (si l'utilisateur tape un mot au lieu d'un nombre), et l'affichage est minimaliste. C'est pourquoi les langages de programmation n'ont jamais cessé d'évoluer, dans le but d'aider le programmeur : qui souhaite réaliser des programmes rapides à s'exécuter, qui de préférence ne buggent pas, et surtout qui soient le plus simple à écrire.
4.3 La phase de test
La programmation dans le cadre d’un projet éducatif ou d’un enseignement informatique recouvre l’ensemble des étapes citées ci-dessus : algorithme, codage.
5. Références et ressources
5.1 Références programmation
5.2 Quelques sites pour l'apprentissage du code