Cours : Concepts de Base de la Programmation
Semaine 1-2
Introduction à la Programmation
Objectifs :
• Comprendre ce qu'est la programmation et pourquoi elle est essentielle.
• Introduction aux langages de programmation.
Contenu :
1. Qu'est-ce que la programmation ?
• Définition : La programmation est le processus de création de
logiciels par l'écriture de code. Elle consiste à donner des instructions
à un ordinateur pour qu'il exécute des tâches spécifiques.
• Rôle des programmeurs : Transformer des problèmes en solutions
logicielles.
2. Pourquoi apprendre la programmation ?
• Résolution de problèmes complexes.
• Automatisation des tâches.
• Développement de logiciels, applications et jeux.
• Possibilités de carrière dans de nombreux secteurs.
3. Langages de programmation populaires :
• Java : Orienté objet, largement utilisé pour le développement
d'applications d'entreprise.
• Python : Polyvalent, connu pour sa simplicité et utilisé dans l'IA et le
data science.
• JavaScript : Principalement utilisé pour le développement web.
Exemples :
• Exemple 1 : Écrire un programme pour calculer la somme de deux nombres.
public class Somme {
public static void main(String[] args) {
int a = 5;
int b = 10;
int somme = a + b;
[Link]("La somme est : " + somme);
}
}
• Exemple 2 : Créer un script qui affiche "Bonjour le monde!" à l'écran.
public class BonjourMonde {
public static void main(String[] args) {
[Link]("Bonjour le monde!");
}
}
• Exemple 3 : Développer une application simple qui demande à l'utilisateur son
nom et lui répond par un message personnalisé.
import [Link];
public class Salutation {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez votre nom : ");
String nom = [Link]();
[Link]("Bonjour, " + nom + "!");
}
}
Variables, Types de Données et Opérateurs
Objectifs :
• Comprendre comment déclarer et utiliser des variables.
• Connaître les types de données fondamentaux.
• Utiliser des opérateurs pour manipuler les données.
Contenu :
1. Variables :
• Définition : Une variable est un emplacement en mémoire avec un
nom associé, utilisé pour stocker des données.
• Syntaxe de déclaration : type nomVariable = valeur;
• Types de portée : locale, d'instance et de classe.
2. Types de Données :
• Primitifs : int , double , char , boolean .
• Objets : String , ArrayList , etc.
• Tableaux (Arrays) : Structure de données qui stocke des éléments
de même type dans une séquence contiguë en mémoire.
3. Opérateurs :
• Aritmétiques : + , - , * , / , % .
• Logiques : && , || , ! .
• Comparaison : == , != , > , < , >= , <= .
Exemples :
• Exemple 1 : Déclaration d'une variable entière pour l'âge.
int age = 30;
• Exemple 2 : Utilisation d'une variable chaîne pour un nom.
String nom = "Alice";
• Exemple 3 : Variable booléenne pour un état.
boolean estActif = true;
• Exemple 4 : Tableau d'entiers.
int[] nombres = {1, 2, 3, 4, 5};
• Exemple 5 : Addition de deux nombres.
int a = 10;
int b = 5;
int somme = a + b;
• Exemple 6 : Comparaison de deux valeurs.
if (a > b) {
[Link]("a est plus grand que b");
}
Structures de Contrôle (Conditions, Boucles)
Objectifs :
• Apprendre à diriger le flux d'exécution du programme avec des conditions et des
boucles.
Contenu :
1. Conditions :
• if-else : Permet de prendre des décisions.
• switch : Choix multiple basé sur la valeur d'une variable.
2. Boucles :
• for : Pour itérer un nombre fixe de fois.
• while : Pour répéter tant qu'une condition est vraie.
• do-while : Exécute le bloc au moins une fois.
Exemples :
• Exemple 1 : Utilisation de if-else .
int nombre = 7;
if (nombre % 2 == 0) {
[Link]("Nombre pair");
} else {
[Link]("Nombre impair");
}
• Exemple 2 : Instruction switch .
int mois = 3;
String nomMois;
switch (mois) {
case 1: nomMois = "Janvier"; break;
case 2: nomMois = "Février"; break;
case 3: nomMois = "Mars"; break;
default: nomMois = "Mois invalide"; break;
}
[Link](nomMois);
• Exemple 3 : Boucle for .
for (int i = 1; i <= 10; i++) {
[Link](i);
}
• Exemple 4 : Boucle while .
int compteur = 0;
while (compteur < 5) {
[Link]("Compteur: " + compteur);
compteur++;
}
• Exemple 5 : Boucle do-while .
int num = 1;
do {
[Link]("Num: " + num);
num++;
} while (num <= 3);
Notions Clés de Java Core
Objectifs :
• Comprendre des concepts avancés spécifiques à Java, tels que la gestion des
chaînes, les collections, les exceptions et la programmation concurrente.
Contenu :
1. String Pool et Immutabilité des Strings :
• String Pool : Les chaînes littérales sont stockées dans une mémoire
partagée pour économiser de l'espace.
• Immutabilité : Les chaînes en Java sont immuables, ce qui signifie
qu'une fois créées, elles ne peuvent pas être modifiées.
2. Collections :
• Définition : Structures de données pour stocker des collections
d'éléments.
• Types principaux : List , Set , Map .
3. Exceptions :
• Définition : Mécanisme pour gérer les erreurs et les exceptions au
moment de l'exécution.
• Gestion des exceptions : try-catch-finally .
4. Threads :
• Définition : Unité d'exécution indépendante.
• Programmation concurrente : Permet d'exécuter plusieurs tâches
en parallèle.
Exemples :
• Exemple 1 : String Pool et immutabilité.
String s1 = "Java";
String s2 = "Java";
[Link](s1 == s2); // true, car s1 et s2 pointent vers la même insta
• Exemple 2 : Utilisation de StringBuilder .
StringBuilder sb = new StringBuilder("Hello");
[Link](" World");
[Link]([Link]()); // "Hello World"
• Exemple 3 : Utilisation d'une ArrayList .
import [Link];
ArrayList<String> liste = new ArrayList<>();
[Link]("Pomme");
[Link]("Banane");
[Link]("Orange");
for (String fruit : liste) {
[Link](fruit);
}
• Exemple 4 : Utilisation d'un tableau (array).
int[] nombres = {10, 20, 30, 40, 50};
for (int nombre : nombres) {
[Link](nombre);
}
• Exemple 5 :
Gestion d'une exception avec try-catch .
try {
int division = 10 / 0;
} catch (ArithmeticException e) {
[Link]("Erreur : Division par zéro");
}
• Exemple 6 : Création d'un thread avec Runnable .
class MonThread implements Runnable {
public void run() {
[Link]("Thread en cours d'exécution");
}
}
public class TestThread {
public static void main(String[] args) {
Thread t = new Thread(new MonThread());
[Link]();
}
}
Mémoires de la JVM et leurs Rôles
Objectifs :
• Comprendre la structure interne de la JVM, y compris ses différentes zones de
mémoire et leurs fonctions.
Contenu :
1. Method Area (Zone des Méthodes) :
• Rôle : Stocke les informations sur les classes chargées, y compris les
méthodes et les constantes. Elle est partagée par tous les threads.
2. Heap (Tas) :
• Rôle : Zone de mémoire où les objets sont alloués. Le garbage
collector nettoie cette zone en supprimant les objets non référencés.
• Importance : Crucial pour la gestion dynamique des objets et de la
mémoire en Java.
3. Stack (Pile) :
• Rôle : Gère les appels de méthode et stocke les variables locales et
les états partiels. Chaque thread a sa propre pile.
• Caractéristique : Plus rapide à accéder que le tas.
4. PC Register (Registre du Compteur de Programme) :
• Rôle : Contient l'adresse de l'instruction actuelle à exécuter pour
chaque thread.
5. Native Method Stack (Pile des Méthodes Natives) :
• Rôle : Gère les appels de méthodes natives écrites dans des
langages comme C ou C++.
6. Garbage Collection (Ramasse-miettes) :
• Rôle : Gestion automatique de la mémoire, récupérant la mémoire
utilisée par les objets qui ne sont plus référencés.
Illustration :
• Exemple : Création et destruction d'objets dans le heap.
public class ExempleObjet {
public static void main(String[] args) {
ExempleObjet obj = new ExempleObjet(); // Objet alloué dans le heap
obj = null; // Objet éligible pour le garbage collection
}
}