Introduction à la programmation (CS-107), cours de première année en Informatique à l’EPFL, donné par Sébastien Doeraene, Jamila Sam (5 crédits). Sur BA1 Planner : 14 fiches de révision et 70 flashcards.
1.1 JDK, JRE et machine virtuelle Java · 1.2 Environnement de développement (Eclipse) · 1.3 Cycle édition → compilation → exécution · 1.4 Structure minimale d'un programme et méthode main
2.1 Variables et types primitifs · 2.2 Opérateurs arithmétiques et affectation · 2.3 Conversions de type (cast, promotion) · 2.4 Affichage et lecture au clavier (Scanner)
3.1 Instructions conditionnelles if / else · 3.2 Instruction switch · 3.3 Boucles for, while, do-while · 3.4 Opérateurs logiques et évaluation paresseuse
4.1 Tableaux : déclaration, initialisation, parcours · 4.2 Tableaux multidimensionnels · 4.3 La classe String et ses méthodes · 4.4 Boucle for-each et longueur
5.1 Définition et appel de méthodes · 5.2 Paramètres et passage par valeur · 5.3 Valeur de retour et type void · 5.4 Portée des variables et surcharge
6.1 De l'énoncé à l'algorithme · 6.2 Décomposition en sous-problèmes · 6.3 Parcours et accumulation sur les tableaux · 6.4 Tests et mise au point
7.1 Classes et objets · 7.2 Attributs et méthodes d'instance · 7.3 Instanciation avec new et références · 7.4 La référence this
8.1 Encapsulation et modificateurs de visibilité · 8.2 Constructeurs et surcharge · 8.3 Accesseurs et mutateurs · 8.4 Comparaison d'objets : == vs equals, toString
9.1 Héritage avec extends · 9.2 Le mot-clé super · 9.3 Redéfinition (override) de méthodes · 9.4 Hiérarchie de classes et classe Object
10.1 Type statique et type dynamique · 10.2 Liaison dynamique des méthodes · 10.3 Transtypage et instanceof · 10.4 Modificateurs abstract et final
11.1 Déclaration et implémentation d'interfaces · 11.2 Interfaces multiples et découplage · 11.3 Attributs et méthodes statiques · 11.4 Méthodes statiques et par défaut dans les interfaces
12.1 Notion de package et import · 12.2 Organisation d'un projet · 12.3 Limites des types entiers (débordement) · 12.4 Limites des types réels (précision des flottants)
13.1 Notion d'exception et pile d'appels · 13.2 try / catch / finally · 13.3 Exceptions vérifiées et non vérifiées · 13.4 throw, throws et exceptions personnalisées
14.1 Synthèse : du procédural à l'objet · 14.2 Erreurs fréquentes à l'examen · 14.3 Lecture et trace de code · 14.4 Conception d'une petite hiérarchie de classes
- Java est **compilé puis interprété** : `javac` produit du *bytecode* (`.class`), que la JVM exécute. C'est ce qui rend le langage portable.
- **JDK** (kit de développement, contient le compilateur) ⊃ **JRE** (environnement d'exécution) ⊃ **JVM** (machine virtuelle).
- Tout code Java vit dans une classe. Le point d'entrée est obligatoirement :
```java
public static void main(String[] args)
```
- Le fichier doit porter **exactement** le nom de la classe publique qu'il contient : `Bonjour.java` pour `public class Bonjour`.
- Java est **sensible à la casse** : `main` et `Main` sont deux identifiants différents.
- Chaque instruction se termine par un point-virgule ; les blocs sont délimités par des accolades.
`public static void main(String[] args)`
Un fichier `.class` contenant du bytecode, exécuté par la JVM.
Le JDK contient le compilateur et permet de développer ; le JRE ne fait qu'exécuter.
`3` : deux opérandes entiers donnent une division entière.
Rendre un opérande réel : `7 / 2.0` ou `(double) 7 / 2`.
`-3` : le cast tronque vers zéro, il n'arrondit pas.
Coche le cours et la série de Introduction à la programmation chaque semaine, révise avec les fiches et les flashcards, et entraîne-toi sur les questions d’examen corrigées. Les deux premières semaines sont gratuites.
Créer un compte gratuit