Introduction À l’algorithmique

Slides:



Advertisements
Présentations similaires
Démarche de résolution de problèmes
Advertisements

Developpement Process « Coding party !! » Tony Carnal Altran.
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
Outils logiciel pour la programmation en C. 2 Automatiser la compilation : make make est un utilitaire présent dans toute les distribution de linux >
Composants Matériels de l'Ordinateur Plan du cours : Ordinateurs et applications Types d'ordinateurs Représentation binaires des données Composants et.
Les systèmes d'information 1- Une pratique quotidienne 2- Les données 3- Approche conceptuelle 4- Notion de serveur 5- Conception d'un système d'information.
1 Chapitre 2 La numération binaire. 2 Chapitre 2 : La numération binaire Introduction 1 - Le système binaire 2 - La conversion des nombres entiers 2.1.
1- Introduction 2ème partie Modèle Conceptuel des Données 2- Entités- Associations 4- Associations plurielles 3- Cardinalités 5- Associations réflexives.
Algorithmique ‘’ Un algorithme est une suite finie et non-ambiguë d’instructions permettant de donner la réponse à un problème. ‘’ Niveau de difficulté.
Semaine 01 La programmation créative Introduction.
Programmation d'un aspirateur robot connecté
L’ordinateur et ses composants
JAVA.
Comment corriger son code sans forcément appeler l’enseignant M2202
Environnement de développement des BD
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
Quelques Termes INFORMATIQUE ? ORDINATEUR ( Système Informatique)?
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Dominique PETRELLA – Frédéric GUINEPAIN - IA-IPR STI Versailles
Pas de variable globale
Les notions de classe et d'objet
Visite guidée - session 3 Les postes de charge et les gammes
« Un langage de programmation est une convention pour donner des ordres à un ordinateur. Ce n’est pas censé être obscur, bizarre et plein de pièges subtils.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Algorithmique et programmation de modèles numériques
Semaine #1 INF130 par Frédérick Henri.
Javadoc et débogueur Semaine 03 Version A17.
AO (Architecture des ordinateurs)
La science qui permet le traitement automatique des informations
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Principes de programmation (suite)
Informatique et Sciences du Numérique
Cours 5 Mardi 13 septembre Période 1: Les bases de l’informatique et les composantes de l’ordinateur PARTIE 1 Période 2: L’utilisation de Power Point.
Les fonctions.
Les fonctions.
Algorithmiques Abdelbasset KABOU
Un Algorithme , c'est Quoi ?
L’ordinateur et les fonctions de ses composantes
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
INFORMATIQUE NAVAL Présentation: ESSO PIDE MALIK 1.
Programmation système
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L’I NSTRUCTION DE T EST A LTERNATIF Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira, Bejaia Année.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
De l’ordinateur au processus : rôle d’un système
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
Programmation en C++ C++ de base
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Plus de 4000 langages....
À l’intérieur de l’ordinateur
Bus et adressage GIF-1001: Ordinateurs: Structure et Applications
ACP Analyse en Composantes Principales
Qu’est-ce qu’un ordinateur ?. Ordinateur – calculateur Un ordinateur est une machine qui permet de réaliser, d’exécuter des opérations, des calculs, c’est.
Royaume de Maroc Université Hassan Premier Settat Faculté des Sciences et Techniques de Settat LA CLASSIFICATION K-MEANS SOUS R /MATLAB Master :Automatique.
Bienvenue sur Coursinfo.fr
Le Java premiers pas.
1 PROJET D’INFORMATIQUE les composants de l'ordinateur Gammoudi Rayéne 7 B 2.
Sylvie DELAËT 2002 Architecture des machines Bienvenus en Amphi d’Architecture des Machines.
BIOS- OS Environnement logiciel PC / Traitement numérique / Contrôle.
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
Architecture d’un ordinateur
RABAH M ed Ali 2018/2019
STREAMS (et fichiers).
Lecture/Écriture de fichiers (I/O)
Fonctions Abstractions procédurales.
Contenu Systèmes de test parallèles Multithreading Synchronisation
Transcription de la présentation:

Introduction À l’algorithmique Application au langage Java (NFA31) Grégory BOURGUIN (merci à François BARTHELEMY)

Introduction Objectifs pédagogiques Etudier les concepts de base de la programmation concepts présents dans beaucoup de langages de programmation les appliquer en Java Acquérir certaines méthodes de résolution des problèmes classiques en informatique une fois les concepts de base de la programmation acquis vous former par vous mêmes dans l’apprentissage d’un autre langage de programmation programmer rapidement en gardant les mêmes

Pourquoi Java ? Environnements de développement gratuits Java est fortement typé Beaucoup d’erreurs sont détectées automatiquement Incorpore des nombreux traits de programmation de haut niveau orienté objet exceptions polymorphisme gestion de la mémoire transparence des pointeurs Java possède une sémantique précise Portable exécution indépendante de la plateforme d’installation Robuste et sécurisé́

Pourquoi Java ? Principaux domaines d’application Internet Le Web Programmation distribuée Le Web Programmes embarqués

Les programmes Servent à décrire les solutions à un problème (générique) Description d’une méthode mécanique (i.e., applicable par une machine) de résolution d’un problème donné suite d’instructions dans un langage de programmation traiter et transformer les données du problème à résoudre Trouver les solutions : exécuter le programme sur des données concrètes Les traitements décrits par les instructions sont appliqués aux données (entrées) Les données sont manipulées pour aboutir aux solutions (sorties)

Les ordinateurs Composants principaux Unité́ centrale (CPU) ou processeur traitement des données et instructions logées en mémoire centrale exécute un ensemble d’instructions (simples) dites instructions machine lecture/écriture en mémoire centrale, opérations arithmétiques et logiques, comparaison des valeurs, branchement (saut) vers une adresse afin de poursuivre l’exécution , etc. Instructions codées en binaire (séquences de 0 et de 1) différentes dans chaque plateforme matérielle Mémoire Centrale (RAM) très rapide volatile Périphériques Dispositifs de communication de l’ordinateur clavier, écran, enceintes, ports de communication, disques durs, etc.

Les langages de programmation Deux groupes principaux : Langages de haut niveau (C, Ada, Pascal, Java, C++, C#, Python, …) fournissent des nombreuses constructions sophistiquées facilitent l’’écriture des programmes compréhensibles par les humains pas directement exécutables par les machines Devra être traduit en langage machine avant son exécution Langages de bas niveau les différents ensembles d’instructions propres à chaque machine appelés également langages cibles ou natifs codés en binaire et directement exécutables par chaque machine

Langage de haut niveau Composé de trois ensembles : types de données décrire et modéliser les données ex. type int en Java sert à modéliser les nombres entiers règles de construction syntaxiques des instructions règles de formation textuelle des instructions et des programmes ex. écrire (1 ≤ x ≤ 7) en Java : (1 <= x && x <= 7) règles sémantiques précisent le comportement ou le sens des constructions syntaxiques ex. 4+3*2 équivaut en Java à la valeur entière 10 précisent les contraintes de cohérence entre types ex. "bonjour" * 2 est bien formée du point de vue de la syntaxe, mais pas du point de vue sémantique

La production des programmes (différentes phases) Analyse et Conception : Préciser le problème à résoudre les données de départ et ce que l’on souhaite obtenir en résultat ? Raisonner sur la manière de représenter les données du problème une méthode de résolution énoncée sous forme de suite de pas à accomplir pour aboutir aux solutions : c’est l’algorithme de resolution du problème

La production des programmes (différentes phases) Codage : traduire l’algorithme en langage de programmation sous forme de fichier texte (suite de caractères) -> code source du programme Mise au point : (plusieurs étapes répétées jusqu’à ce que le programme soit satisfaisant) Compilation traduire le code source du programme vers le langage natif de la machine (ou parfois vers du code intermédiaire) Le résultat est un nouveau fichier écrit en langage machine : code objet Cette étape comprend souvent également l’’édition de liens préparation du code objet pour l’exécution Tests exécution du code objet avec divers cas typiques des entrées (jeu de tests) Correction d’erreurs… Maintenance correction des erreurs apparues après la mise en service Évolution du programme pour l’adapter aux nouveaux besoins

La production des programmes (différentes phases)

Traducteurs de programmes Logiciel de traduction des programmes écrits dans un langage instructions de haut niveau -> (+) instructions machine équivalentes Code source fichier texte avec les instructions à traduire Code cible fichier (binaire ou texte) résultat de la traduction Code objet fichier binaire avec des instructions machine Pseudo-code ou byte-code fichier texte contenant du code intermédiaire d’assez bas niveau non exécutable directement par la machine Il existe deux sortes de traducteurs : interprètes compilateurs

Compilateurs Réalisent les traitements suivants sur le code source : Analyse syntaxique vérifie que le programme est correct d’après les règles de syntaxe. Typage vérifie la correction d’après les règles (sémantiques) de cohérence entre types Traduction chaque instruction du programme source est traduite vers plusieurs instructions du langage natif ou de pseudo-code (code intermédiaire) Le résultat de la compilation est un nouveau fichier dit de code cible du code machine pour la plupart des compilateurs du pseudo-code dans certains cas (ex. Java) : sera traduit avant exécution En cas d’erreurs, il faut corriger et relancer la compilation jusqu’à ce que le code cible puisse être génèré

Interpréteurs Pour chaque instruction du programme, ils réalisent, l’une après l’autre, traduction en code puis exécution. Inconvénients limite le type d’analyses réalisées sur le programme source autorise l’exécution d’un programme même s’il présente des erreurs de syntaxe ou de sémantique Avantage Beaucoup plus souple Mécanisme est bien adapté aux programmes pré-compilés vers du pseudo-code C’est le cas pour le byte-code Java

Compilation en Java Un des objectifs de Java, est de permettre l’écriture des programmes indépendants des plateformes matérielles d’exécution -> portable, mobile, distribué, … Dans ce contexte, la compilation vers du code natif n’a pas grand sens En Java, on compile vers un code intermédiaire (byte-code) identique pour tous les « ordinateurs » L’environnement d’exécution Java est équipé d’un interprète propre à chaque machine : la Machine Virtuelle Java (JVM) traduit (interprète) le byte-code vers du code natif et l’exécute le byte-code pourra être exécuté sur quelle machine munie d’une JVM

Compilation en Java

Le programme Bonjour /* Premier programme - enregistrer dans le fichier Bonjour.java - compiler par javac Bonjour.java - exécuter par java Bonjour */ public class Bonjour { public static void main (String[] args) { Terminal.ecrireStringln("Bonjour tout le monde !"); } Le texte entre /* et */ est un commentaire Le nom après public class est le nom du programme Dans cet exemple, c’est Bonjour Ce programme ne manipule qu’une donnée : le message « Bonjour tout le monde ! » Écrit dans un fichier du même nom que le programme, et complété de l’extension « java » le fichier Bonjour.java

Compilation et exécution Création du fichier source Le code Java est mis dans un fichier nommé Bonjour.java Compilation Lancer la commande de compilation sur le fichier (commande javac) javac Bonjour.java La compilation réussit (pas d’erreurs). Le pseudo-code obtenu se trouve dans le fichier Bonjour.class dans répertoire courant n’est pas directement exécutable Interprétation + Exécution Appel de l’interprète de byte-code de la machine (commande java) java Bonjour Résultat : « Bonjour tout le monde ! » dans le terminal

L’exemple avec des erreurs public classe Bonjour2 { public static void main (String[] args) { Terminal.ecrireStringln("Bonjour tout le monde ! » * 2); } erreur de syntaxe classe au lieu de class erreur de typage (sémantique) : Une chaîne de caractères (type String) ne peut être multiplié par 2 > javac Bonjour2.java Bonjour2.java:1: ’class’ or ’interface’ expected public classe Bonjour2 { ^ 1 error Le compilateur s’arrête à la première erreur trouvée (ligne 1)

L’exemple avec 1 erreur erreur de typage (sémantique) : public class Bonjour2 { public static void main (String[] args) { Terminal.ecrireStringln("Bonjour tout le monde ! » * 2); } erreur de typage (sémantique) : Une chaîne de caractères (type String) ne peut être multiplié par 2 > javac Bonjour2.java Bonjour2.java:3: operator * cannot be applied to java.lang.String,int Terminal.ecrireStringln("Bonjour tout le monde !"*2); ^ 1 error

Analyse des problèmes Déterminer le problème à résoudre : quelles sont les données d’entrée et leur nature ? quelles sont les données attendues en sortie et leur nature ? Déterminer la méthode : comment modéliser les données (d’entrée, de sortie, intermédiaires) ? quels sont les différents cas des entrées à traiter, et les cas échéant, quels sont les traitement associés ? exprimer sous-forme d’algorithme la manière d’obtenir le résultat final à partir des traitements sur les données d’entrée Correction, complétude et lisibilité a-t-on bien prévu tous les cas des entrées et sorties ? obtient-on dans chaque cas ce que l’on voulait calculer ? notre algorithme est-il compréhensible par quelqu’un d’autre ? Tests Elaborer un jeu de tests représentatif (valeurs typiques) de tous les cas possibles (univers) des entrées Confronter le fonctionnement de l’algorithme avec le jeu de tests proposé

Les algorithmes Un algorithme est un énoncé́ détaillé́ sous forme de pas à suivre NB : le niveau d’abstraction des pas dépend du langage utilisé ! Il s’agit d’une méthode générique de résolution d’un problème Exemple 1 : la feuille de déclaration d’impôts sur le revenu est accompagnée d’une description des opérations pour calculer le montant problème : calcul du montant de votre impôt les données : chiffres de vos salaires, charges, abattements, etc. algorithme : suite des calcule à réaliser sur les données résultat ou sortie : le montant de l’impôt NB : Il peut y avoir plusieurs méthodes pour résoudre un problème par exemple, on peut commencer par calculer le quotient familial, plutôt que par le calcul des abattements

Les algorithmes Exemple 2 : Une recette de cuisine Problème : Préparation d’une omelette Données : 2 oeufs, Sel Un peu de matière grasse Algorithme : Casser les œufs dans un bol Y ajouter du sel Les battre Faire chauffer la matière grasse dans une poêle Verser le mélange des œufs dans la poêle et faire cuire doucement jusqu’à la consistance souhaitée

Exemple de construction Problème : Calculer et afficher la conversion en francs d’une somme en euros saisie au clavier. Analyse : Déterminer le problème à résoudre : les entrées et leur nature ⇒ un nombre réel eu les sorties attendues ⇒ un réel fr tel que fr = eu ∗ 6.559 Déterminer la méthode : Modélisation des données : fr, eu modélisés par des nombres flottants (type double de Java) Algorithme : lire la valeur saisie pour eu calculer fr=eu×6.559 afficher le résultat final fr Jeu de tests : (eu ← 0.0, fr → 0.0) (eu ← 15.0, fr → 98.35) (eu ← −3.5, fr → −22.9565) (eu ← 10, fr → 65.59)

Exemple de construction Résultats de l’analyse : Données : entrées : eu nombre réel sortie : fr nombre réel Algorithme : lire eu calculer fr = eu * 6.559 afficher le résultat se trouvant dans fr public class Conversion { public static void main (String[] args) { double euros, francs; // Variables du programme Terminal.ecrireStringln("Entrez la somme en euros: "); // Message euros = Terminal.lireDouble(); // Lecture dans la variable euros francs = euros *6.559; // Calcul de la conversion // Affichage du resultat Terminal.ecrireStringln("La somme convertie en francs: "+ francs); }