Bases de la programmation
Université de Nice - Sophia Antipolis
Richard Grin
Version 1.2.5 – 24/9/11
? Introduction à la programmation orientée objet pour pouvoir suivre le cours de POO de L3 Miage ? Aucune connaissance requise en programmation ? Les grandes étapes du cours :
? programmation impérative
? programmation structurée
? les objets
? Langage utilisé : Java
? Composants d’un ordinateur
? Programmes et langages informatiques
? Variables, instructions
? Premier programme en Java ; compilation, exécution
? Compilation, interprétation ? Exécution
Richard Grin Bases de la programmation page 3
Richard Grin Bases de la programmation page 2
? L’utilisateur peut transmettre des informations à l’aide du clavier ou de la souris
? Le programme peut aussi lire des informations sur le disque dur
? Les résultats de l’exécution sont affichés à l’écran ou enregistrés dans le disque dur (pour une session future d’utilisation)
Richard Grin Bases de la programmation page 7
? Base 2 ; pas 10 comme les nombres que l’on a l’habitude de manipuler
? 0 : 0
? 1 : 1
? 2 : 10 (1 « deuzaine »)
? 3 : 11
? 4 : 100 (1 deuzaine de deuzaine)
? 5 : 101
? …
Richard Grin Bases de la programmation page 9
? 1 bit : unité d’information de base, chiffre binaire 0 ou 1
? Octet : (byte en anglais) groupement de 8 bits
? K = 1000 = 103 ; Kilo ; Ko = 1000 octets
? M = 1 000 000 = 106 ; Mega ; Mo = 1000 Ko
? G = 1 000 000 000 = 109 ; Giga ; Go = 1000 Mo
? T = 1 000 000 000 000 = 1012 ; Tera ; To = 1000 Go ? Kb = Kilobyte = Ko ; Mb, Gb,…
Richard Grin Bases de la programmation page 8
? Processeur : « intelligence » de l’ordinateur, il sait calculer et faire des choix (exécuter une instruction ou une autre suivant le contexte : si une valeur vaut
0, faire ceci, sinon faire cela)
? Appelé aussi CPU (Central Process Unit)
? Vitesse de quelques GHz (Hz = Hertz = nombre d’opérations élémentaires par seconde)
? Calculs avec des entiers ou « en virgule flottante »
? Peut contenir plusieurs cœurs pour faire des calculs en parallèle
Richard Grin Bases de la programmation page 13
? Mémoire centrale : rapide (accès en nanosecondes, 10-9) mais volatile (valeurs perdues entre 2 sessions de travail) ; capacités moyennes de quelques Go
? Mémoire périphérique : pas vraiment rapide (accès en millisecondes) mais non volatile ; appelée mémoire de masse car grosses capacités de centaines de Go à quelques To
? Question : combien de fois plus lent que la mémoire centrale ?
Richard Grin Bases de la programmation page 14
Programmes et langages informatiques
Richard Grin Bases de la programmation page 15
? Il sert à résoudre un problème (faire un calcul, exécuter des actions, aider à la prise de décision,
dessiner,…)
? Il est écrit dans un langage qui contient des ordres que l’ordinateur peut « comprendre »
? Ce langage contient des instructions élémentaires qui disent à l’ordinateur ce qu’il doit faire
Richard Grin Bases de la programmation 16
?Il existe de très nombreux langages informatiques
?Ces langages peuvent être regroupés en quelques catégories principales, appelées des paradigmes de programmation
?Un paradigme est une façon de représenter, de modéliser une réalité
Richard Grin Bases de la programmation page 19
? La programmation impérative consiste à écrire un programme en donnant des instructions qui modifient l’état du programme (les données manipulées par le programme rangées dans des variables identifiées par des noms)
? Exemple : lire x;
si (x > max)
max = x;
…
Richard Grin Bases de la programmation page 20
?Une instruction comporte des mots-clés ou symboles définis par le langage et des expressions qui ont une valeur au moment de
l’exécution
?Exemple :
if (x == 0)
y = 5 * x;
?Les types d’instruction dépendent du langage qu’on utilise, en particulier du niveau d’abstraction du langage par rapport au processeur
Richard Grin Bases de la programmation page 25
?Une variable correspond à un emplacement dans la mémoire centrale
?Une variable est utilisée par le programme pour enregistrer une valeur qu’il réutilisera dans la suite de son exécution
?Une variable est identifiée par son nom
?Affectation : enregistrer une nouvelle valeur dans une variable ; par exemple « x = 8; »
Richard Grin Bases de la programmation page 27
? Pour les langages habituels (langage C par exemple) de type impératif les grands types d’instructions sont :
? déclaration du type d’une variable
? affectation d’une valeur à une variable
? alternative : selon la valeur d’une expression, une séquence d’instructions est exécutée, ou une autre
? répétition : une séquence d’instructions est répétée un certain nombre de fois
Richard Grin Bases de la programmation page 26
x = 10; y = 15; x = y; y = x;
Quelles valeurs auront x et y à la fin de ce code ?
Richard Grin | Bases de la programmation | page 31 |
x x = y; ??
Richard Grin | Bases de la programmation | page 33 |
y
x = 10; y = 15;
Richard Grin Bases de la programmation page 32
Richard Grin Bases de la programmation page 37 Richard Grin Bases de la programmation page 38 |
y = t;
Richard Grin Bases de la programmation page 39
?Ne pas confondre le « = » de l’affectation avec le
« = » mathématique
?Il n’est pas symétrique :
?à gauche doit se trouver un nom de variable qui désigne un emplacement mémoire
?la droite peut contenir n’importe quelle expression qui calcule une valeur qui peut être rangée dans l’emplacement mémoire désigné par la gauche
Richard Grin Bases de la programmation page 40
int x; int y; x = 10; Qu’est-ce qu’il manque ?
y = 15; x = y; y = x;
Richard Grin Bases de la programmation page 43
? Il est possible d’affecter une valeur initiale à une variable lors de sa déclaration : int x = 10; int y = 15; int t = x; x = y; y = t;
Richard Grin Bases de la programmation page 45
int x; int y; int t; x = 10; y = 15; t = x; x = y; y = t;
Richard Grin Bases de la programmation page 44
int x = z + 3; int y = w * 2; int t; if (x < y) { t = x; x = y; y = t; } | Que fait ce code ? |
Richard Grin Bases de la programmation page 49
? La portée d’une variable désigne la portion du programme où la variable peut être utilisée ? Portée d’une variable en Java :
? de l’endroit où elle a été déclarée
? jusqu’à la fin du bloc où elle a été déclarée
Richard Grin Bases de la programmation page 50
Richard Grin Bases de la programmation page 51
? Java est un langage typé : on doit déclarer le type d’une variable avant de l’utiliser
? Il existe d’autres langage non typés (Javascript, par exemple, pour programmer les clients Web) dans lesquels les types des variables ne sont pas indiqués dans le programme
? Les langages typés sont moins souples mais plus sûrs car davantage d’erreurs du développeur peuvent être détectées par le langage (par exemple une erreur dans le nom de la variable)
Richard Grin Bases de la programmation page 52
? .print("Hello world"); affiche « Hello world » sur l’écran
affiche « Hello world » sur l’écran, et passe à la ligne ensuite
Richard Grin Bases de la programmation page 55
? Une variable peut contenir un texte
? Il faut la déclarer de type String :
String nom = "Dupond";
Richard Grin Bases de la programmation page 56
? Le type double indique une variable qui peut contenir un nombre à virgule (remplacée par un « . ») :
? Le nombre de chiffres après la virgule n’est pas fixé ; le type double désigne des nombres à
« virgule flottante »
Richard Grin Bases de la programmation page 57
? Soit la ligne de code int x = 10;
? Comment faire afficher « Valeur de x = 10 » en utilisant la variable x ?
? .print("Valeur de x = ");
.println(x);
? En fait on peut aussi utiliser la concaténation des chaînes de caractères de Java :
.println("Valeur de x = " + x); (le nombre entier 10 est traduit par Java en String)
Richard Grin Bases de la programmation page 58
? Lorsqu’un programme contient du code qui n’est pas complètement évident il est important d’ajouter des commentaires pour l’expliquer
? En effet, un programme utile sera souvent modifié pour l’adapter à un changement de contexte ou pour corriger des erreurs ; le code doit donc être facilement compris par les développeurs futurs qui le modifieront
page 59
? 3 façons d’ajouter des commentaires ? En fin de ligne (ne peut couvrir plusieurs lignes) : x = 12; // pour indiquer que ….
? Juste avant le code (une ou plusieurs lignes) :
/* Pour indiquer que … */ x = 12;
? Idem /* mais pour la javadoc (avant déclarations ou définitions) :
/** Pour indiquer que … */ int x = 12;
page 60
Pour faire plus joli et pour la lisibilité :
/**
* Pour indiquer que …
*
*/
? « // » Peut aussi s’utiliser sur une seule ligne avant l’instruction ou le bloc d’instructions à commenter :
// Pour indiquer que …. x = 12;
Richard Grin Bases de la programmation page 61
Premier programme en Java ; compilation,
exécution
Richard Grin Bases de la programmation 62
classe HelloWorld
public class HelloWorld {
public static void main(String[] args){ .println("Hello world");
}
}
? La classe Helloworld est public, donc le fichier qui la contient doit s’appeler
Richard Grin Bases de la programmation 63
méthode main
public class HelloWorld {
public static void main(String[] args){ .println("Hello world");
}
}
? La classe Helloworld contient une seule méthode : main
? Signature de la méthode main : String[] args Un seul paramètre de type « tableau de chaînes de caractères » (étudié plus tard dans le cours)
Richard Grin Bases de la programmation 64
? Un code source ne peut être exécuté directement par un ordinateur
? Il faut traduire ce code source dans un langage que l’ordinateur (le processeur de l’ordinateur) peut comprendre
? Un compilateur est un programme qui effectue cette traduction
Richard Grin Bases de la programmation 67
Programme écrit par un développeur
Programme dans le langage de la machine
Richard Grin Bases de la programmation 68
? Lorsqu’un programme a été compilé, on peut faire exécuter le code exécutable
? Le code source n’est pas utilisé pour l’exécution ; on pourrait très bien le supprimer
Richard Grin Bases de la programmation page 69
?En fait, il faut garder le code source pour le cas
(certain) où le développeur voudrait modifier le programme
?Un programme est très souvent modifié
?pour corriger les erreurs (son comportement n’est pas correct ou les résultats sont faux)
?pour ajouter des fonctionnalités
Richard Grin Bases de la programmation page 70
? Lorsqu’on télécharge Java pour écrire des programmes, on récupère le JDK (Java Development Kit) ? Le JDK contient :
? Des outils de développement (javac, java, javadoc,…)
? De très nombreuses classes déjà écrites et que l’on peut utiliser quand on écrit des programmes ; par exemple la classe System (.println("Hello world"))
page 71
? Le JDK fournit le compilateur javac (java compiler)
crée un fichier « HelloWorld.class » qui contient le code exécutable, et le place dans le même répertoire que le fichier « .java »
? Le fichier à compiler peut être désigné par un chemin absolu ou relatif :
javac
72
Pour exécuter le programme exécutable
(HelloWorld.class) on utilise la commande
« java » fournie par le JDK
exécute le code de la méthode main de la classe HelloWorld
Richard Grin Bases de la programmation page 73
Attention ! pas
? HelloWorld est un nom de classe et pas un nom de fichier. Donc
? on ne peut pas donner un chemin
? pas de suffixe .class
Richard Grin Bases de la programmation page 74
Où doit se trouver le fichier .class ?
java HelloWorld |
?
HelloWorld.class doit se trouver dans le classpath
? Le classpath peut recevoir une valeur avec l’option -classpath de la commande java : java –classpath rep1/rep2 HelloWorld
? Par défaut le classpath est le répertoire courant
Richard Grin Bases de la programmation 75
? L’option –classpath de java (et de javac) permet d’indiquer où la commande doit aller chercher les classes dont elle a besoin
? Cette option permet d’indiquer un ou plusieurs emplacements dans l’arborescence des fichiers
? Le séparateur entre plusieurs emplacements est « : » en Linux et « ; » en Windows
Richard Grin Bases de la programmation page 76
Dans le TP 2, une classe Console sera fournie
? Cette classe contient la méthode readInt() pour lire la valeur d’un entier au clavier
? Il suffira de mettre le fichier Console.class dans le répertoire courant pour pouvoir utiliser la classe Console :
met dans la variable x la valeur tapée au clavier par l’utilisateur
Richard Grin Bases de la programmation page 79
? Les noms de classes commencent par une majuscule :
? Les noms de variable commencent par une minuscule
? Les mots contenus dans un identificateur commencent par une majuscule : UneClasse, uneMethode, uneAutreVariable
Richard Grin Bases de la programmation page 80
? En Java, le code source n’est pas traduit directement dans le langage de l’ordinateur
? Il est d’abord traduit dans un langage appelé
« bytecode », langage d’une machine virtuelle (JVM ; Java Virtual Machine) définie par Sun
? Ce langage est indépendant de l’ordinateur qui va exécuter le programme
Richard Grin Bases de la programmation 81
? Le bytecode doit être exécuté par une JVM
? Cette JVM n’existe pas ; elle est simulée par le programme java qui interprète le bytecode :
? lit les instructions (en bytecode) du programme .class,
? les traduit dans le langage natif du processeur de l’ordinateur
? lance leur exécution
83
? Du code exécutable Java (fichier .class) peut facilement être transportable d’un ordinateur à l’autre, même s’ils ne possèdent pas le même type de processeur
? Très utile pour exécuter du code récupéré sur le
Web
? Sans cette JVM il faudrait récupérer le code source et le recompiler (opération lourde si le programme contient beaucoup de code)
page 84
Java est un langage compilé : un programme Java doit être traduit en entier par un compilateur avant d’être exécuté
?Des langages n’ont pas d’étape de compilation ; on les appelle des langages interprétés
?Le code source est interprété pendant l’exécution par un interpréteur
Richard Grin Bases de la programmation page 85
L’interpréteur est présent pendant l’exécution
? Il lit d’abord une instruction, puis la traduit dans le langage du processeur pour la faire exécuter
? Il lit ensuite l’instruction suivante pour la traduire et la faire exécuter et ainsi de suite…
? Comme un interprète qui traduit un discours au fur et à mesure qu’il est prononcé
Richard Grin Bases de la programmation page 86
? Les langages interprétés sont souvent plus souples mais moins sûrs que les langages compilés
? En effet, un grand nombre d’erreurs de programmation peuvent être détectées dans l’étape de la compilation, ce qui évite des erreurs
pendant l’exécution
? L’exécution avec un langage interprété est sont souvent moins rapide, car elle est ralentie par la traduction pendant l’exécution
Richard Grin Bases de la programmation page 87
? La compilation vérifie que les instructions du programme ont bien un sens (en accord avec la
définition du langage utilisé) ; elle vérifie la syntaxe du programme
? Par exemple, le compilateur indiquera une erreur s’il manque un « ; » à la fin d’une instruction
page 89
? Le compilateur vérifie aussi que le type des expressions est correct ; par exemple, l’instruction suivante provoquera une erreur à la compilation : int x = "La valeur est " + y;
? Le code exécutable ne sera produit que si le code source ne contient aucune erreur (de syntaxe ou de typage)
page 90
Le compilateur ne peut pas tout vérifier ; il vérifie que le programme a un sens mais il ne peut pas vérifier que ce sens est bien celui que le programmeur voulait lui donner
? L’exécution du programme peut donc ne pas donner le résultat prévu
? Des erreurs peuvent même empêcher le programme de fonctionner, par exemple si une valeur saisie par l’utilisateur provoque le calcul de la racine carrée d’un nombre négatif
Richard Grin Bases de la programmation page 91
? Éditeur de texte pour taper le code source (emacs ou un autre, mais avec indentation automatique en java) ; il doit fournir du texte pur, pas du texte formaté comme le fait Word
? Compilateur pour transformer le code source en bytecode (javac)
? Interpréteur de bytecode pour exécuter le programme
(java)
Richard Grin Bases de la programmation 93
Il est difficile d’écrire un grand nombre de lignes correctement du premier coup
? Des méthodes de programmation donnent des recettes pour éviter au maximum les erreurs mais l’écriture de tests est indispensable pour éliminer
le plus d’erreurs possibles avant l’utilisation en production du code
Richard Grin Bases de la programmation page 92
Le programme ne pourra la modifier
provoquera une erreur à la compilation
Richard Grin Bases de la programmation page 97
? Le nom de la constante et les éventuels commentaires documentent la valeur
? Il est facile de changer la valeur en ne modifiant qu’une seule instruction
Richard Grin Bases de la programmation page 99
Si la définition de la constante est précédée de private, elle n’est utilisable que dans la classe
? Si elle est précédée de public, la constante est utilisable en dehors de la classe, en préfixant son nom par le nom de la classe ; par exemple : x = 2 * ;
Richard Grin Bases de la programmation page 98
Suivre un cours en ligne est très simple et est de nos jours à la portée de tous. En effet, la seule chose dont vous avez besoin est une connexion Internet, de préférence avec une connexion rapide, et un terminal, que ce soit un smartphone, une tablette ou un PC.
Nous avons compilé pour vous une liste des meilleurs cours en ligne, pour vous procurer des connaissances sur un large éventail de domaines et de sujets. Nos cours sont répartis en 11 grands blocs thématiques: Informatique ;Comptabilité; Economie; Marketing; Management; Gestion ;Statistiques ; Finance ;Commerce; Electronique et Electricité.
Le champ de recherche ( à droite de l'icône de la loupe ) vous permettra de trouver le cours qui vous intéresse. Vous avez ainsi la possibilité de décider vous-même comment vous voulez apprendre: vous pouvez sauter des chapitres, mais vous pouvez également les répéter indépendamment; ou combiner plusieurs cours sur un même sujet.
Formez-vous en toute autonomie aux logiciels de bureautique du pack Microsoft Word, Excel, Powerpoint, Outlook et Access; et profitez des différentes ressources sur notre plateforme: des cours en PDF, des tutoriels avec exercices pratiques, des modèles/templates prêt à l'emploi.
Grâce à Cours-Gratuit, vous apprendrez à utiliser les logiciels de bureautique de façon optimale et efficace que ce soit pour votre travail professionnel, collaboratif ou dans le cadre de projets personnels.
Les tutoriels et les vidéos d’apprentissage font partie intégrante de notre quête d’informations. La raison est que ces méthodes se veulent plus interactives et plus spécifiques que les manuels et les livres.
Tous nos tutoriels sont le résultat d’une recherche minutieuse et approfondie. Ils vous permettront d'acquérir de nouvelles connaissances. Qu’il s’agisse d’un concept, d’un nouveau logiciel ou des instructions de réparation, vous êtes au bon endroit !
Si vous êtes étudiant ingénieur, dans une école supérieure ou encore à l'université, et que vous cherchez des cours ou des supports techniques gratuits, vous trouverez dans notre plateforme des centaines de cours informatiques, de logiciels et d’applications. Ces derniers sont téléchargeables en formats DOC, HTML, et PDF.
Et comme nous savons que les exercices sur divers supports facilitent l'assimilation des cours , nous mettons à votre disposition une kyrielle d’exercices. Certains comprennent des applications directes du cours, tandis que d'autres exigent plus de réflexion.
L'amélioration constante des compétences et des capacités consubstantielles à l'environnement de travail est l'une des principales exigences des employeurs. J’ai décidé de créer cette plateforme en 2010 pour encourager la promotion de la formation, faciliter l'accès aux connaissances, et fournir un contenu de qualité pour les professionnels et les étudiants.
Salim KHALIL
Fondateur, Directeur de la publication
Le monde du travail, aujourd'hui plus que jamais, vous oblige à mettre à jour constamment vos compétences. Par conséquent, l'élément fondamental pour saisir les opportunités auxquelles nous aspirons, est certainement celui d'avoir une solide formation professionnelle , qui peut être obtenue grâce à des cours en ligne.
Soukaina Sbai Tangi
Résponsable Editorial