IFT159 Analyse et programmation

Documents pareils
Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmer en JAVA. par Tama

Cours d Algorithmique et de Langage C v 3.0

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004


Programmation Par Objets

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Objets et Programmation. origine des langages orientés-objet

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

Programme Compte bancaire (code)

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

as Architecture des Systèmes d Information

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Java Licence Professionnelle CISII,

Architecture Orientée Service, JSON et API REST

et Programmation Objet

Plan du cours. Historique du langage Nouveautés de Java 7

INITIATION AU LANGAGE JAVA

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

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

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

Programmation en Java IUT GEII (MC-II1) 1

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

LOG4430 : Architecture logicielle et conception avancée

Claude Delannoy. 3 e édition C++

Introduction au langage C

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Une introduction à Java

Algorithmique et Programmation, IMA

Cours d initiation à la programmation en C++ Johann Cuenin

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

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Initiation à la programmation en Python

Classes et Objets en Ocaml.

ALGORITHMIQUE ET PROGRAMMATION En C

Langage Java. Classe de première SI

Java 1.5 : principales nouveautés

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Java Licence Professionnelle CISII,

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Introduction à l héritage en C++

Chapitre 10. Les interfaces Comparable et Comparator 1

Génération de code binaire pour application multimedia : une approche au vol

Auto-évaluation Programmation en Java

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Un ordonnanceur stupide

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Lier Erlang avec d autres langages de programmation

Les structures. Chapitre 3

Développement Logiciel

Cours 1 : La compilation

TP1 : Initiation à Java et Eclipse

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

Machines Virtuelles. et bazard autour. Rémi Forax

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

COMPARAISONDESLANGAGESC, C++, JAVA ET

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Conventions d écriture et outils de mise au point

Derrière toi Une machine virtuelle!

Logiciel Libre Cours 2 Fondements: Programmation

Les structures de données. Rajae El Ouazzani

Notions fondamentales du langage C# Version 1.0

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Recherche dans un tableau

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Programmation Objet Java Correction

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

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

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Introduction à MATLAB R

Support de cours et TD Programmation Orientée Objet

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

Analyse de sécurité de logiciels système par typage statique

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

UE C avancé cours 1: introduction et révisions

1 Recherche en table par balayage

Bases Java - Eclipse / Netbeans

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

STAGE IREM 0- Premiers pas en Python

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Programmation en C/C++

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Chapitre VI- La validation de la composition.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Transcription:

1/56 Analyse et programmation IFT159 Analyse et programmation Thème 11 Gabriel Girard Département d informatique 3 décembre 2015

2/56 Analyse et programmation Thème 11 1 Généralité 2 Analyse et Conception 3 Programmation 4

3/56 Analyse et programmation Généralité 1 Généralité 2 Analyse et Conception 3 Programmation 4

4/56 Analyse et programmation Généralité Généralité Composants d un ordinateur Résolution de problème Abstraction

5/56 Analyse et programmation Analyse et Conception 1 Généralité 2 Analyse et Conception 3 Programmation 4

6/56 Analyse et programmation Analyse et Conception Analyse et Conception Analyse et conception fonctionnelle (décomposition selon le traitement) Analyse et conception objet Abstraction procédurale Abstraction de données Analyse et conception descendante Analyse et conception ascendante Raffinement successif

7/56 Analyse et programmation Analyse et Conception Analyse Données en entrée Données en sortie Formules Constantes Identification des types de données utiles à la résolution du problème Identifications des contraintes

8/56 Analyse et programmation Analyse et Conception Conception Diagramme structurel pour exprimer d abord la décomposition Algorithme par pseudo-code très abstraits ne s attardant pas à l implantation. UML Évaluation d algorithme (complexité algorithmique O)

9/56 Analyse et programmation Programmation 1 Généralité 2 Analyse et Conception 3 Programmation 4

10/56 Analyse et programmation Programmation Concepts généraux de programmation Programmation structurée séquence sélection itération Programmation modulaire un programme est composé de petits modules courts, avec un degré élevé de cohésion et un seul point d entrée et de sortie. chaque module est conçu pour être codé et testé séparément.

11/56 Analyse et programmation Programmation Mise au point La mise au point consiste à s assurer que le programme répond aux spécifications. On s assure qu il est fiable et correct. On s assure qu il s exécute dans les délais et l espace prescrits. Outils (debugger interactif ou trace) ; Mise au point ascendante ; Mise au point descendante. Preuve de programme (pas vu)

12/56 Analyse et programmation 1 Généralité 2 Analyse et Conception 3 Programmation 4

13/56 Analyse et programmation Langage C++ Structure d un programme C++ (Main, fonctions, blocs) Types de base (int, float, char) : définition et utilisation Expressions arithmétiques et logiques Les fonctions ligne prototype (déclaration) définition (implantation) passage de paramètres

14/56 Analyse et programmation Langage C++ Énoncés affectation ; sélection : if et switch ; itération : while, for, do-while et récursivité ; Concept de tableau (définition, utilisation)

15/56 Analyse et programmation Langage C++ Déclaration de types type enuméré (enum) ; enregistrement (struct) ; types abstraits de données (class) : encapsulation (private, public) ; définition et implantation ; fonctions et données membres ; constructeurs et destructeurs ; surcharge d opérateurs ;...

16/56 Analyse et programmation Reste à voir Spécification (génie logiciel) ; Méthodes d analyse et de conception pour des systèmes de grande taille (génie logiciel) ; Notions plus avancées d algorithmiques. Structures de données de bases ; Autres langages de même catégorie pour bien comprendre les concepts (Pascal, Modula, Assembleur...) ; Analyse, conception et implantation avec des langages d une autre catégorie (fonctionnel et éventuellement logique).

17/56 Analyse et programmation Reste à voir Notions avancées de programmation et meilleure maîtrise du langage. programmation système et les opérateurs binaires ; les pointeurs et l allocation dynamique (new, delete) l héritage ; le polymorphisme ; programmation générique le traitement des erreurs (try, throw, catch, assert) les union La programmation par événements La programmation orientée objet.

18/56 Analyse et programmation Programmation système et opérateurs binaires &,, ˆ,,,... x = 4 << 2; // x = 16 x = 7 & 3; // x = 4 x = 4 3; // x = 7 x = 64 >> 4; // x = 4 x = ~4 ; // x = -5...

19/56 Analyse et programmation Pointeurs et allocation dynamique Les opérateurs pertinents sont : & : "adresse de" * : "valeur pointée par" int variable1 = 25; int *ptr1 = &variable1; cout << *ptr1 << endl; // imprime 25 -------- double* valeur = new double; *valeur = 29494.99; cout << "Value of pvalue : " << *valeur << endl; -------- int * tab = new int[10]; p[5] = 33;

0/56 Analyse et programmation Pointeurs et allocation dynamique myvar = 25; foo = &myvar; baz = *foo; myvar == 25 &myvar == 1776 foo == 1776 *foo == 25

1/56 Analyse et programmation L héritage ; class Forme public: void setlargeur(int w) largeur = w; } void sethauteur(int h) hauteur = h; } protected: int largeur; int hauteur; };

22/56 Analyse et programmation L héritage ; // Classe derivee class Rectangle: public Forme public: int calculersurface() return (largeur * hauteur); } };

23/56 Analyse et programmation L héritage ; int main(void) Rectangle Rect; Rect.setLargeur(5); Rect.sethauteur(7); cout << "Surface du rectangle = << endl; " << Rect.calculerSurface() } return 0;

24/56 Analyse et programmation Le polymorphisme Unifier les fonctions disponibles pour un type général Utilise l héritage Spécialisation de la fonction au niveau de l enfant

5/56 Analyse et programmation Le polymorphisme class Forme public: // methode abstaite virtual int calculeraire() = 0; };

}; 6/56 Analyse et programmation Le polymorphisme class Rectangle: public Forme public: int calculeraire() override return (largeur * hauteur); } void setlargeur(int w) largeur = w; } void sethauteur(int h) hauteur = h; } protected: int largeur; int hauteur;

7/56 Analyse et programmation Le polymorphisme class Cercle: public Forme public: int calculeraire() override return 3.14 * pow(rayon,2); } private: int rayon; };

28/56 Analyse et programmation Le polymorphisme int main(void) Rectangle Rect; Cercle cercle; cout << "Surface du rectangle = " << Rect.calculerAire() << endl; cout << "Surface du cercle = " << cercle.calculeraire() << endl; } return 0;

29/56 Analyse et programmation Le polymorphisme void afficheraire(forme & forme) cout << "Surface = " << forme.calculeraire() << endl; } int main(void) Rectangle Rect; Cercle cercle; afficheraire(rect); afficheraire(cercle); } return 0;

30/56 Analyse et programmation Programmation Générique C++ int min(int entier1, int entier2) if (entier1 < entier2) return entier1; return entier2; }

1/56 Analyse et programmation Programmation Générique C++ int main(void) cout << min(2,3) << endl; // affiche 2 } // demotion de double en int cout << min(2.3, 2.1) << endl; // affiche 2

32/56 Analyse et programmation Programmation Générique C++ Pour chaque type, on définit une fonction Il peut y avoir une infinité de types Haut coût de maintenance

3/56 Analyse et programmation Programmation Générique C++ template <typename type> type min(type element1, type element2) if (element1 < element2) return element1; return element2; }

4/56 Analyse et programmation Programmation Générique C++ int main(void) cout << min(2,3) << endl; // affiche 2 cout << min(2.3, 2.1) << endl; // affiche 2.1 }

35/56 Analyse et programmation Librairie Standard - SL Collection d outils pour améliorer le temps de développement Implémenter par chaque compilateur Aucun coût de maintenance

36/56 Analyse et programmation Librairie Standard - SL Conteneurs vector, list, array map, unordered_map Algorithmes find, find_if, find_if_not swap sort, is_sorted,... Outils chrono (temps) memory (allocation dynamique) thread (gestion standardisée des fils d exécution)...

37/56 Analyse et programmation Librairie Standard - std : :array Un contenant séquentiel Définit des itérateurs (begin, end, cbegin, cend) Remplace les tableaux primitifs

8/56 Analyse et programmation Librairie Standard - std : :array int main(void) array<int, 5> tableau = 17, 42, 13, 44, 25}; // equivalent de int tableau[] = 17, 42, 13, 44, 25} } cout << tableau[1] << endl;

39/56 Analyse et programmation Librairie Standard - std : :array // using TableauEntier = array < int, 5 > ; int main(void) TableauEntier tableau = 17, 42, 13, 44, 25}; } cout << tableau.size() << endl; // affiche 5

40/56 Analyse et programmation Librairie Standard - find Algorithme de recherche Utilise des itérateurs Retourne l itérateur de l élément trouvé ou la fin Au pire, ordre linéaire O(n)

1/56 Analyse et programmation Librairie Standard - std : :array et find int main(void) array<int, 5> tableau = 1, 2, 3, 4, 5}; // array definit des iterateurs } cout << boolalpha << std::find(tableau.begin(), tableau.end(), 3)!= tableau.end() << endl; // affiche -- true --

42/56 Analyse et programmation Librairie Standard - map Conteneur associatif associe une clé à une valeur Pour insérer un élément, il faut associer une paire clé-valeur Cette association peut se faire de différentes façons Par accès aux indices Par le type «Pair» Par la fonction make_pair

43/56 Analyse et programmation Librairie Standard - std : :map #include <map> #include <utility> int main() map<int, string> employes; // Affectation avec les indices employes[5234] = "Mike C."; employes[3374] = "Charlie M."; employes[1923] = "David D."; employes[7582] = "John A."; employes[5328] = "Peter Q."; } cout << "employes[3374]=" << employes[3374] << endl << endl; cout << "Map size: " << employes.size() << endl; for( map<int,string>::iterator ii=employes.begin(); ii!=employes.end(); ++ii) cout << (*ii).first << ": " << (*ii).second << endl; }

44/56 Analyse et programmation Librairie Standard - std : :map... int main() map<string, int> employes; } // Affectation avec des indices employes["mike C."] = 5234; employes["charlie M."] = 3374; // Affectation avec le insert() et le type STL pair employes.insert(std::pair<string,int>("david D.",1923)); // Affectation avec le insert() et la fonction "make_pair()" employes.insert(std::make_pair("peter Q.",5328));...

45/56 Analyse et programmation Librairie Standard - std : :map et make_pair int main(void) // la cle est une chaine de caracteres // la valeur est un entier map<string, int> carte; carte.insert(make_pair("hello", 4)); carte.insert(make_pair("world", 2)); } // on recherche sur la cle cout << carte["hello"] << carte["world"] << endl;

46/56 Analyse et programmation Librairie Standard - chrono Algorithmes reliés au temps (secondes, minutes, heures,...) Définit des opérations de bases Utile pour calculer le temps (exemple : tp1)

7/56 Analyse et programmation Librairie Standard - chrono int main(void) // deduction automatique de type auto temps1 = chrono::seconds(10); auto temps2 = chrono::minutes(10); } auto tempstotal = temps1 + temps2; cout << chrono::duration_cast<chrono::seconds>(tempstotal).count() << endl;

48/56 Analyse et programmation Librairie Standard - thread Algorithmes à un fil d exécution Facilite la multiprogrammation Accès à this_thread qui représente le fil courant

9/56 Analyse et programmation Librairie Standard - thread int main(void) auto adormir = chrono::seconds(10); this_thread::sleep_for(adormir); }

50/56 Analyse et programmation Quelques langages Python Java C, C#, Objective-C Matlab PhP, Ruby, Javascript, Nodejs Go Haskell, Lisp, D, R

1/56 Analyse et programmation Python : interpréteur > python... >>> 2 + 2 4 >>> 50-5*6 20 >>> (50-5.0*6) / 4 5.0 >>> 8 / 5.0 1.6 >>> 5 ** 2 # 5 squared 25 >>> 2 ** 7 # 2 to the power of 7 128

2/56 Analyse et programmation Python : interpréteur >>> the_world_is_flat = 1 >>> if the_world_is_flat:... print "Be careful not to fall off!"... Be careful not to fall off!

3/56 Analyse et programmation Python : programme # Fibonacci series: # the sum of two elements defines the next a, b = 0, 1 while b < 10: print b a, b = b, a+b... 1 1 2 3 5 8

4/56 Analyse et programmation Python : programme x = int(raw_input("please enter an integer: ")) if x < 0: x = 0 print Negative changed to zero elif x == 0: print Zero elif x == 1: print Single else: print More... Please enter an integer: 42 More

5/56 Analyse et programmation Python : programme # Measure some strings: words = [ cat, window, defenestrate ] for w in words: print w, len(w)... cat 3 window 6 defenestrate 12

56/56 Analyse et programmation