Compare commits
2 Commits
c1b1900561
...
d62d18dd19
Author | SHA1 | Date | |
---|---|---|---|
d62d18dd19 | |||
d824ad8009 |
41
Cours.md
41
Cours.md
@ -1,6 +1,8 @@
|
|||||||
# Outils
|
# Outils
|
||||||
|
|
||||||
* Atom (plugin: script)
|
* Atom (plugin: script)
|
||||||
|
* Eclipse (2019-06)
|
||||||
|
* OpenJDK 11
|
||||||
|
|
||||||
# Liens
|
# Liens
|
||||||
|
|
||||||
@ -12,12 +14,12 @@
|
|||||||
|
|
||||||
# Thèmes
|
# Thèmes
|
||||||
|
|
||||||
|
* Algorithmique
|
||||||
|
* Langages (haut/bas niveau, interprétés, VM, shell, objet)
|
||||||
* Fonctionnement CPU (instructions, registre, adresse, assembleur)
|
* Fonctionnement CPU (instructions, registre, adresse, assembleur)
|
||||||
* Mémoire (pile, tas, pointeur)
|
* Mémoire (pile, tas, pointeur)
|
||||||
* Langage C (allocation, chaines, pointeur, erreurs)
|
* Langage C (allocation, chaines, pointeur, erreurs)
|
||||||
* OS
|
* OS
|
||||||
* Algorithmique
|
|
||||||
* Langages (haut/bas niveau, interprétés, VM, shell, objet)
|
|
||||||
* Réseau (couches, TCP/IP, HTTP)
|
* Réseau (couches, TCP/IP, HTTP)
|
||||||
* Java (base du langage, classes, interfaces, Collections, generics, streams)
|
* Java (base du langage, classes, interfaces, Collections, generics, streams)
|
||||||
|
|
||||||
@ -57,7 +59,9 @@ Une **variable** est un triplet composé :
|
|||||||
|
|
||||||
* d'un type (déjà défini)
|
* d'un type (déjà défini)
|
||||||
* d'un nom (a priori toute chaîne alphanumérique)
|
* d'un nom (a priori toute chaîne alphanumérique)
|
||||||
* d'une valeur.
|
* d'une valeur
|
||||||
|
|
||||||
|
La **déclaration** d'une variable est une instruction qui permet de définir dans le programme le nom et le type de la variable. L'**initialisation** permet de donner une première valeur à cette variable. Lorsqu'une variable n'est pas initialisée, elle a une valeur vide particulière notée `null` (en java).
|
||||||
|
|
||||||
Les **expressions** sont constituées à l'aide de variables déjà déclarées, de valeurs, de parenthèses et d'opérateurs du (des) type(s) de variables concernées. Une expression a une valeur qui peut être utilisée par une instruction.
|
Les **expressions** sont constituées à l'aide de variables déjà déclarées, de valeurs, de parenthèses et d'opérateurs du (des) type(s) de variables concernées. Une expression a une valeur qui peut être utilisée par une instruction.
|
||||||
|
|
||||||
@ -87,11 +91,11 @@ Une variable de type réel peut prendre comme valeur l'ensemble des nombres rée
|
|||||||
|
|
||||||
### Caractères
|
### Caractères
|
||||||
|
|
||||||
Une variable de type char peut prendre comme valeur l'ensemble des caractères imprimables. On notera les valeurs entre apostrophe (`'`, quote). On considère souvent que les caractères sont ordonnés dans l'ordre alphabétique.
|
Une variable de type caractère peut prendre comme valeur l'ensemble des caractères imprimables. On notera les valeurs entre apostrophe (`'`, quote). On considère souvent que les caractères sont ordonnés dans l'ordre alphabétique.
|
||||||
|
|
||||||
### Chaines de caractères
|
### Chaines de caractères
|
||||||
|
|
||||||
Une variable de type chaine de caractères peut prendre comme valeur tout suite de caractères (y compris vide). On notera les valeurs entre guillemets (`"`, double quote). Le type en java est noté **`String`**. L'opération `+` permet de concaténer (fusionner) des chaines de caractères.
|
Une variable de type chaine de caractères peut prendre comme valeur toute suite de caractères (y compris vide). On notera les valeurs entre guillemets (`"`, double quote). Le type en java est noté **`String`**. L'opération `+` permet de concaténer (fusionner) des chaines de caractères.
|
||||||
|
|
||||||
"Hello" + "World"
|
"Hello" + "World"
|
||||||
|
|
||||||
@ -219,17 +223,17 @@ Exemples:
|
|||||||
|
|
||||||
## Tableaux
|
## Tableaux
|
||||||
|
|
||||||
Un **tableau** (array) est une structure de données ordonnées, contenant un nombre invariant de valeurs du même type. L'accès aux valeurs contenues se fait par un indice (numéro d'ordre parmi les éléments du tableau, en commençant à 0). L'affectation des éléments du tableau peut se faire à l'initialisation ou en utilisant les indices.
|
Un **tableau** (array) est une structure de données ordonnée, contenant un nombre invariant de valeurs du même type. L'accès aux valeurs contenues se fait par un indice (numéro d'ordre parmi les éléments du tableau, en commençant à 0). L'affectation des éléments du tableau peut se faire à l'initialisation ou en utilisant les indices.
|
||||||
|
|
||||||
Déclaration d'un tableau de 4 éléments
|
### Déclaration d'un tableau de 4 éléments
|
||||||
|
|
||||||
int[] tab = new int[4];
|
int[] tab = new int[4];
|
||||||
|
|
||||||
Déclaration et initialisation
|
### Déclaration et initialisation
|
||||||
|
|
||||||
int[] tab = new int[] { 1, 2, 3, 4};
|
int[] tab = new int[] { 1, 2, 3, 4};
|
||||||
|
|
||||||
Affectation des éléments
|
### Affectation des éléments
|
||||||
|
|
||||||
int[] tab = new int[4];
|
int[] tab = new int[4];
|
||||||
tab[0] = 1;
|
tab[0] = 1;
|
||||||
@ -237,7 +241,7 @@ Affectation des éléments
|
|||||||
tab[2] = 3;
|
tab[2] = 3;
|
||||||
tab[3] = 4;
|
tab[3] = 4;
|
||||||
|
|
||||||
Accès aux éléments
|
### Accès aux éléments
|
||||||
|
|
||||||
if (tab[0] > 0) {
|
if (tab[0] > 0) {
|
||||||
// instruction
|
// instruction
|
||||||
@ -255,7 +259,7 @@ Une **liste** est une structure similaire à un tableau mais de taille variable.
|
|||||||
|
|
||||||
## Ensemble
|
## Ensemble
|
||||||
|
|
||||||
Un **ensemble** (set) est une structure de données non ordonnées contenant des éléments uniques.
|
Un **ensemble** (set) est une structure de données non ordonnée contenant des éléments uniques.
|
||||||
|
|
||||||
Set ensemble = new HashSet();
|
Set ensemble = new HashSet();
|
||||||
ensemble.add(1);
|
ensemble.add(1);
|
||||||
@ -273,10 +277,9 @@ Une **table d'association** (dictionnaire, map) est une structure de données co
|
|||||||
// valeur pour la clé 1
|
// valeur pour la clé 1
|
||||||
tableAssoc.get(1);
|
tableAssoc.get(1);
|
||||||
|
|
||||||
|
|
||||||
## Structure/Objet
|
## Structure/Objet
|
||||||
|
|
||||||
Une structure est un type de données contenant plusieurs valeurs nommées. On appelle le nom d'une valeur dans une structure un attribut. On peut accéder à la valeur d'un attribut en utilisant l'opérateur `.`. Dans les langages dit "objet", la notion de structure est remplacées par la notion d'objet qui est une forme de structure contenant également des fonctions.
|
Une structure est un type de données contenant plusieurs valeurs nommées. On appelle le nom d'une valeur dans une structure un attribut. On peut accéder à la valeur d'un attribut en utilisant l'opérateur `.`. Dans les langages dit "objet", la notion de structure est remplacée par la notion d'objet qui est une forme de structure contenant également des fonctions.
|
||||||
|
|
||||||
class MonObjet {
|
class MonObjet {
|
||||||
int monAttributEntier;
|
int monAttributEntier;
|
||||||
@ -302,11 +305,11 @@ On appelle __langage informatique__ un langage destiné à décrire l'ensemble d
|
|||||||
|
|
||||||
### Machine
|
### Machine
|
||||||
|
|
||||||
Le **langage machine** est celui utilisé par le processeur. Il s'agit d'une succession de données binaires (0, 1) transmises sous forme d'impulsions électriques. Ce langage n'est pas directement compréhensible par l'être humain, il est donc nécessaire de disposer de langages de programmation intermédiaires. Le code dans ces langages est transformé en langage machine pour être exploité par le processeur
|
Le **langage machine** est celui utilisé par le processeur. Il s'agit d'une succession de données binaires (0, 1) transmises sous forme d'impulsions électriques. Ce langage n'est pas directement compréhensible par l'être humain, il est donc nécessaire de disposer de langages de programmation intermédiaires. Le code dans ces langages est transformé en langage machine pour être exploité par le processeur.
|
||||||
|
|
||||||
### Assembleur
|
### Assembleur
|
||||||
|
|
||||||
Un **langage assembleur** est un langage très proche de la machine, utilisant des mots clés et des notations compréhensibles par un être humains pour représenter des instructions, des donnés et des adresses mémoires.
|
Un **langage assembleur** est un langage très proche de la machine, utilisant des mots clés et des notations compréhensibles par un être humains pour représenter des instructions, des données et des adresses mémoires.
|
||||||
|
|
||||||
Ce type de langage ne permet pas d'écrire un code portable, car le jeu d'instruction est propre á chaque type de processeur. Il y a donc un langage assembleur pour chaque type de processeur.
|
Ce type de langage ne permet pas d'écrire un code portable, car le jeu d'instruction est propre á chaque type de processeur. Il y a donc un langage assembleur pour chaque type de processeur.
|
||||||
|
|
||||||
@ -332,6 +335,10 @@ La **programmation procédurale** est un paradigme qui se fonde sur le concept d
|
|||||||
|
|
||||||
La **programmation objet** consiste en la définition et l'interaction de briques logicielles appelées objets ; un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. Il possède une structure interne et un comportement, et il sait interagir avec ses pairs. Il s'agit donc de représenter ces objets et leurs relations ; l'interaction entre les objets via leurs relations permet de concevoir et réaliser les fonctionnalités attendues, de mieux résoudre le ou les problèmes. Dès lors, l'étape de modélisation revêt une importance majeure et nécessaire pour la POO. C'est elle qui permet de transcrire les éléments du réel sous forme virtuelle.
|
La **programmation objet** consiste en la définition et l'interaction de briques logicielles appelées objets ; un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. Il possède une structure interne et un comportement, et il sait interagir avec ses pairs. Il s'agit donc de représenter ces objets et leurs relations ; l'interaction entre les objets via leurs relations permet de concevoir et réaliser les fonctionnalités attendues, de mieux résoudre le ou les problèmes. Dès lors, l'étape de modélisation revêt une importance majeure et nécessaire pour la POO. C'est elle qui permet de transcrire les éléments du réel sous forme virtuelle.
|
||||||
|
|
||||||
### Langages de manipulation de données
|
### Langages spécialisés
|
||||||
|
|
||||||
Certains langages sont dédiés à la manipulation de données (lecture, création, modification) et ne permettent pas de réaliser des algorithmes complexes. Il sont dependant d'un logiciel tiers ou d'un format de données particulier. Exemples: SQL, Xpath
|
Certains langages sont dédiés à la manipulation de données (lecture, création, modification) et ne permettent pas de réaliser des algorithmes complexes. Il sont dépendant d'un logiciel tiers ou d'un format de données particulier. Exemples: SQL, Xpath
|
||||||
|
|
||||||
|
D'autres langages sont utilisés pour la création de documents (HTML) ou la mise en page (CSS).
|
||||||
|
|
||||||
|
Certains langages sont dit "embarqués", car ils ne sont pas exécutés directement sur le processeur mais au sein d'un autre logiciel (par exemple javascript dans un navigateur).
|
||||||
|
9
Template.java
Normal file
9
Template.java
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import static utils.Utils.*;
|
||||||
|
|
||||||
|
public class Template { // FIXME A CHANGER
|
||||||
|
|
||||||
|
public static final void main(String[] args) {
|
||||||
|
afficher("EXEMPLE");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
23
Variables.java
Normal file
23
Variables.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import static utils.Utils.*;
|
||||||
|
|
||||||
|
public class Variables {
|
||||||
|
|
||||||
|
public static final void main(String[] args) {
|
||||||
|
int a = 0;
|
||||||
|
|
||||||
|
char b;
|
||||||
|
b = '0';
|
||||||
|
|
||||||
|
boolean c = true;
|
||||||
|
boolean d = false;
|
||||||
|
|
||||||
|
afficher(a, b, c, d);
|
||||||
|
afficher("c ou d");
|
||||||
|
afficher(c || d);
|
||||||
|
|
||||||
|
boolean expr1 = c && d;
|
||||||
|
afficher(expr1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
36
utils/Utils.java
Normal file
36
utils/Utils.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package utils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
|
||||||
|
public class Utils {
|
||||||
|
|
||||||
|
public static final void afficher(Object... args) {
|
||||||
|
if (args == null) {
|
||||||
|
System.out.println("null");
|
||||||
|
} else {
|
||||||
|
String str = Arrays.stream(args)
|
||||||
|
.map(String::valueOf)
|
||||||
|
.collect(Collectors.joining(" "));
|
||||||
|
System.out.println(str);
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int lireEntier() {
|
||||||
|
try (Scanner reader = new Scanner(System.in)) {
|
||||||
|
System.out.println("Saisir un entier: ");
|
||||||
|
return reader.nextInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String lireChaine() {
|
||||||
|
try (Scanner reader = new Scanner(System.in)) {
|
||||||
|
System.out.println("Saisir une valeur et valider: ");
|
||||||
|
return reader.nextLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user