Nom : N° Etudiant:
1/3
Programmation bas niveau - L2 informatique
Premier Contrôle Continu Ecrit - Correction
Jeudi 31 octobre 2013 (1 heure – aucun document autorisé)
Exercice 1 : Questions de cours (5 points)
Répondre en quelques lignes à chacune des questions ci-dessous.
1. Qu’est-ce qu’un langage de programmation bas niveau ? Donner un exemple de langage de bas niveau et
un exemple de langage de haut niveau.
2. Qu’est-ce qu’une machine virtuelle ? Citer au moins deux avantages et un inconvénient d’une telle
machine.
3. Qu’est-ce qu’un bytecode ? Donner la commande Java générant du bytecode à partir d’un fichier écrit
en java.
4. Qu’est-ce qu’un langage assembleur ? Citer un exemple de langage assembleur.
5. Citer quatre types de base de la machine virtuelle Java.
Exercice 2 : Analyse de code (5 points)
Trouver, corriger et expliquer chacune des 5 erreurs du programme ci-dessous.
Un langage de programmation bas niveau est un langage proche du matériel : son jeu d’instruction est
proche de celui de la machine sur lequel il s’exécute. Le langage Jasmin est un langage de bas niveau.
Python est un langage de haut niveau.
Une machine virtuelle est un programme exécutant un autre programme avec le fonctionnement et la
structure d’une machine physique traditionnelle. Les avantages sont la portabilité (le programme exécuté
a le même code quelque soit le système d’exploitation considéré) et la richesse des bibliothèques de
fonctions. L’inconvénient est la vitesse d’exécution : il y a une interprétation supplémentaire du code.
Un bytecode est le code d’une opération sur 1 octet (byte). La commande Java générant du bytecode à
partir d’une fichier .java est javac.
Un langage assembleur est un langage composé de mnémoniques correspondant à un langage machine
binaire. Il est donc lisible et manipulable par des humains. Le langage Jasmin est un langage
assembleur.
Types de base de la JVM : byte, short, int, long, char, float, double, class.