Algorithmique & Programmation Objet. Xavier Granier Romain Pacanowski

Documents pareils
Cours 1 : La compilation

Évaluation et implémentation des langages

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Initiation à l algorithmique

Algorithmique & programmation


Compilation (INF 564)

Cours de Programmation 2

Cours d algorithmique pour la classe de 2nde

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Préparation à l examen EFA en Macro

Initiation à la programmation en Python

STAGE IREM 0- Premiers pas en Python

Cours d Algorithmique et de Langage C v 3.0

Cours Informatique Master STEP

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Bases de programmation. Cours 5. Structurer les données

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Corrigé des TD 1 à 5

Génie Logiciel avec Ada. 4 février 2013

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Présentation du langage et premières fonctions

Introduction à MATLAB R

Organigramme / Algorigramme Dossier élève 1 SI

Algorithmique et programmation : les bases (VBA) Corrigé

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Pourquoi l apprentissage?

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Introduction au langage C

Glossaire des nombres

Le chiffre est le signe, le nombre est la valeur.

Raisonnement par récurrence Suites numériques

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Traduction des Langages : Le Compilateur Micro Java

Peut-on tout programmer?

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Calculabilité Cours 3 : Problèmes non-calculables.

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Chapitre 5 : Les procédures stockées PL/SQL

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Cours de Génie Logiciel

Algorithmique et Programmation, IMA

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Logiciel Libre Cours 2 Fondements: Programmation

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Représentation d un entier en base b

Plan du cours Cours théoriques. 29 septembre 2014

UE Programmation Impérative Licence 2ème Année

TP 1. Prise en main du langage Python

Machines virtuelles Cours 1 : Introduction

Arbres binaires de recherche

ALGORITHMIQUE ET PROGRAMMATION En C

Informatique Générale

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Chapitre 2. Eléments pour comprendre un énoncé

Cryptographie. Cours 3/8 - Chiffrement asymétrique

Quelques algorithmes simples dont l analyse n est pas si simple

Programmation C++ (débutant)/instructions for, while et do...while

Vers l'ordinateur quantique

Conventions d écriture et outils de mise au point

MIS 102 Initiation à l Informatique

Classes et Objets en Ocaml.

Application 1- VBA : Test de comportements d'investissements

Problèmes liés à la concurrence

Attestation de maîtrise des connaissances et compétences au cours moyen deuxième année

Éléments de programmation et introduction à Java

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Programmation C. Apprendre à développer des programmes simples dans le langage C

Qualité du logiciel: Méthodes de test

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Présentation du PL/SQL

Derrière toi Une machine virtuelle!

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Informatique Machines à calculer en théorie et en pratique

Le calcul formel dans l enseignement des mathématiques

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Fondements de l informatique Logique, modèles, et calculs

Calcul Formel et Numérique, Partie I

Principes des langages de programmation INF 321. Eric Goubault

Utilisation des tableaux sémantiques dans les logiques de description

Vérification de programmes et de preuves Première partie. décrire des algorithmes

LES GENERATEURS DE NOMBRES ALEATOIRES

NOM : Prénom : Date de naissance : Ecole : CM2 Palier 2

Examen Médian - 1 heure 30

Introduction à l algorithmique et à la programmation M1102 CM n 3

Propagation sur réseau statique et dynamique

Transcription:

Algorithmique & Programmation Objet Xavier Granier <xavier.granier@institutoptique.fr> Romain Pacanowski <romain.pacanowski@institutoptique.fr>

But du cours Entrapercevoir les fondations de l'informatique Saisir les capacités de l outil informatique Capacités de calcul / de stockage Savoir comment concevoir un algorithme Évaluer sa complexité / son efficacité Évaluer son coût de calcul / de stockage Bases de la programmation objet

Les non-buts du cours Être expert en informatique! Être expert en programmation objet

Programmer, c'est? Aller vers un monde fini Formulation discrète vs continue Nombre fini de valeurs / monde discret Un nombre fini d'étapes et d'actions Compter / Énumérer Ressources limitées Notions Algorithmes Automates

Machine & Automates

Alan Turing 1912 1954 Mathématicien britannique Notions de «procédure mécanique» ou algorithme Formalisation d'une machine (1936) Mémoire (écriture / lecture) Règles ' http://interstices.info/jcms/c_43049/machine-de-turing

Un ordinateur Le modèle : machine de Turing La mise en place : électronique Le transistor : ouvert ou fermé 2 états : 0 ou 1 Même état tant qu'aucune action ne le change

Exemple d'automate 1 Nombres pairs 0 start 1 0 pair 1 impair 1 0

0 1 0 0 0 1 2 4 0 Représentation Fonction de transition d'un etat vers un autre Graphique : listes des flèches Mathématique : matrice d adjacence Informatique : listes des successeurs Informatique : table de transition 1 1 3 1 0 écritures en base 2 des multiples de 5 1 δ 0 1 0 0 1 1 2 3 2 4 0 3 1 2 4 3 1 Merci à Maxime Crochemore

Automate fini Définition : quintuplet (Q, V, δ, I F) Q : ensemble fini d'états V : ensemble fini de symboles (vocabulaire) δ : ensemble fini de transitions triplets (q,v,q) avec q Q et v V {ε} I Q : ensemble des états initiaux F Q : ensemble des états finals

Exemple d'automate 1 Nombres pairs 0 start 1 0 pair 1 impair 1 0 Exercice : définir les états (initiaux, finals), le vocabulaire et les transitions

Exercice automate 2 Faire un automate reconnaissant les triangles Vocabulaire {s} où s est un sommet

Retenir Un machine c'est : Un nombre fini d états Une capacité de stockage Un ensemble de transitions

Algorithmes

Nom masculin Algorithme d'al-khârezmi, médecin arabe Suite de raisonnements ou d'opérations qui fournit la solution de certains problèmes. Objectif décrire les étapes à suivre pour réaliser un travail. expliciter clairement les idées de solution d'un problème indépendamment d'un langage de programmation. 1

Du problème au programme Énoncé non précis : Problème informel Spécification Analyse Programmation Compilation Exécution Énoncé précis : Problème formel Algorithme Langage de programmation : Pascal,.. Exécutable du programme Résultat

Du problème au programme Énoncé non précis : Problème informel Spécification Analyse Programmation Énoncé précis : Problème formel Algorithme Langage de programmation : Pascal,.. Exécution Résultat

Formalisation d'un problème Quelles sont les données à traiter? Les paramètres d'une onde? Des énergies? Quels sont les résultats attendus? Quels sont les a-priori Données connues en prérequis Contexte d'utilisation Domaine de validité, ordre de grandeur Quelles sont les actions nécessaires

Variables et constantes Constante 1 identificateur 1 valeur Variable constante pi = 3.14 1 identificateur 1 conteneur pour 1 valeur typée entier N

Typage But Éviter de mélanger des éléments incompatibles Facilite la vérification Ex : un entier naturel ne peut être négatif Un type Ensemble de valeurs possibles Ex : les 12 mois de l année Ensemble d opérations possibles sur ces valeurs Ex : +, -, *, / (division euclidenne) Une structure : combinaison de types Ex : tableau

Instructions Commandes / actions élémentaire Passer d'un état initial vers un Produit un résultat Exemples : Affectation : A 10.324 Opérations arithmétiques B A*4.0 Appels de procédures ou des fonctions C sqrt(b)

Organiser les instructions Bloc d'instructions Sous-ensemble d'instructions Entre des séparateurs Variables / Constantes locales Procédures Bloc d'instructions Paramètre en entrée : in entier N Paramètre en sortie : out entier N Paramètre en entrée/sortie : inout entier N

Branchements conditionnels Si <condition> alors faire <bloc instructions> Sinon faire <bloc instructions> Fin Si

Les boucles Pour <var> = <début> jusqu'à <condition> faire <bloc instructions> Fin Pour Tant que <condition> faire <bloc instructions> Fin Pour Faire <bloc instructions> Jusqu'à <condition>

Organiser les instructions Procédures Bloc d'instructions Paramètre en entrée : in entier N Paramètre en sortie : out entier N Paramètre en entrée/sortie : inout entier N

Organiser les instructions Fonctions Bloc d'instructions Paramètre en entrée : in entier N Paramètre en sortie : out entier N Paramètre entrée/sortie : inout entier N Retourne un résultat

Validation d'un algorithme Il faut prouver que Le programme s'arrête? Mettre des conditions d'arrêt Pour le contexte d'utilisation S'assurer qu'elles soient atteignable Le programme donne le bon résultat Dans le contexte d'utilisation

Exercice Hypothèse : On a les opérateurs *, +, -, ispair(in entier a) : bool Créer la fonction euclide(in entier a, in entier b, out entier r) : entier r est le résidu le résultat est le quotient

Programmation

Programmer, c'est? Savoir parler une langue étrangère Impératif : C / Pascal / Ada / Assembleur /... Séquences d'instructions exécutées Objet : C++ / Java / C# / Ada Définition de blocs et de leur interactions Fonctionnel : Scheme / Lisp Définition de fonctions Logique : Prolog Définition de règles

Prolog (programmation logique) fact(1, 1). fact(a, B) :- fact(c, D), C is A-1, B is A*D. ------------?-fact(10,r).

Scheme (programmation fonctionnelle) (define (factorial n) (if (= n 0) 1 (* n (factorial (- n 1))))) ------- (factorial 10) ;;

Ada (programmation impérative) function factorial (n: natural) return positive is begin if n=0 then return 1 ; else return n * factorial(n-1) ; end if; end factorial ; ------------------------------------------------ factorial(10) ;

Programmer, c'est? Savoir parler une langue étrangère Impératif : C / Pascal / Ada / Assembleur /... Objet : C++ / Java / C# / Ada Fonctionnel : Scheme / Lisp Logique : Prolog Notions Communes: Définition d'un langages

Théorie des langages Un langage, c'est? Langue naturelle Système de notation (formalisme) Mathématiques, logique, chimie, Informatique Un ensemble d'objets que l'on peut composer Plusieurs niveaux Alphabet mots Mots phrases

Langage Définition Ensemble d'objet élémentaires Vocabulaire ou alphabet Suites d'objets élémentaires ayant un «sens» Syntaxe Sens des suites Sémantique Deux niveaux Lexical : alphabet mot Syntaxique : mot phrase

Langage compilé Classification des langages Le code est converti une fois pour toute en instruction machine. Une fois cela fait, on peut exécuter le programme généré autant de fois que l'on veut, mais on ne peut plus changer le programme Langage interprété La conversion se fait au vol, lors de la lecture du code. Le code peut être modifié au vol Java : compilé et interprété! Machine virtuelle.