Informatique pour Scientifiques I



Documents pareils

Réserve Personnelle. Persönliche Reserve. Emprunter et épargner en fonction de vos besoins. Leihen und sparen je nach Bedarf

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction au langage C

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

Organigramme / Algorigramme Dossier élève 1 SI

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

INTRANET: outil de Knowledge management au sein de l entreprise

Cours 1 : Qu est-ce que la programmation?

Structurer ses données : les tableaux. Introduction à la programmation

Rappels sur les suites - Algorithme

Évaluation et implémentation des langages

Programmer en JAVA. par Tama

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Base de données du radon en Suisse

Cours d Algorithmique et de Langage C v 3.0

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

Parcage. Bases légales. Office des ponts et chaussées du canton de Berne. Tiefbauamt des Kantons Bern. Bau-, Verkehrsund Energiedirektion

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

IV- Comment fonctionne un ordinateur?

Programmation en Java IUT GEII (MC-II1) 1

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

Cours d Informatique

Wie können meine Abschlüsse in Frankreich anerkannt werden?

TP 1. Prise en main du langage Python

Algorithme. Table des matières

Cours 1 : La compilation

printed by

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Algorithmique et programmation : les bases (VBA) Corrigé

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

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

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)

as Architecture des Systèmes d Information

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

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

Anmeldung / Inscription

ALGORITHMIQUE ET PROGRAMMATION En C

Schnellverschlusskupplungen in Messing Accouplements rapides en laiton

Conception de circuits numériques et architecture des ordinateurs

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

Java Licence Professionnelle CISII,

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

Trittschallelemente. Lw*=16 db. Schall-Isostep HT-V: Allgemeines/Elément insonorisant Isostep HT-V, Généralités

Algorithmique et Programmation, IMA

Cours d algorithmique pour la classe de 2nde

Vorschlag für den Studienverlauf im Doppelmaster ICBS-LEA Programme d Etudes pour le double Master LEA-ICBS

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

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

SWISS MASTER SERIES D YVERDON-LES BAINS les 30 avril, 1er et 2 mai Exclusivement par Internet sur le site de Swiss Badminton

Algorithmique avec Algobox

Wandluftdurchlass WAVE-ARC Typ WA Diffuseur mural WAVE-ARC type WA

Notions fondamentales du langage C# Version 1.0

Informatique Générale

Logiciel Libre Cours 3 Fondements: Génie Logiciel

ASSEMBLYcomponents H 10. Grundplatte. Base plate. Plaque de base BEM 3 BEW 3. FP 3 Base plate ,1kg BEM 6 BEM 6D BEW 6

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

Préserver les ressources, pérenniser les investissements, sécuriser l approvisionnement

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

VDE Prüf- und Zertifizierungsinstitut Zeichengenehmigung

Motorleistungssteigerung / Tuning moteurs

Programmes des classes préparatoires aux Grandes Ecoles

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Algorithmique et structures de données I

Éléments de programmation et introduction à Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Cours Informatique Master STEP

DÉPÔT À TAUX FIXE FESTGELDKONTO MIT FESTEM ZINSSATZ FIXED RATE DEPOSIT

On y va! A1. Hinweis für Testende. Einstufungstest. Testaufgaben 1 bis 18: 26 Punkte oder mehr u On y va! A1, Leçon 4

Chapitre I Notions de base et outils de travail

CONSERVATION DES DOCUMENTS ENJEUX JURIDIQUES Tour d horizon

Généralités sur le Langage Java et éléments syntaxiques.

Java au cœur de la base de données Oracle

Rappels d architecture

Chap III : Les tableaux

Manuel d installation et de maintenance (serrures LR128 E)

Représentation des Nombres

Représentation d un entier en base b

Conventions d écriture et outils de mise au point

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

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

1. Raison de la modification

Initiation à la programmation en Python

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

Programmation Objet - Cours II

Aufnahmeprüfung 2008 Französisch

ist illegal. die ohne geregelten Aufenthalt in der Schweiz leben. Aucune Une campagne concernant toute la Suisse

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

AUFZIEHSERVICE SERVICE DE LAMINAGE

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

Medienmitteilung zur Konferenz Opendata.ch 2015 am 1. Juli an der Universität Bern

Transcription:

Informatique pour Scientifiques I Cours 6. - Introduction à la programmation - Elements de programmation dans Mathematica 28-11-06 Dr. Jean Hennebert 1

Plan Objectifs de ce cours: 1. Qu est-ce que la programmation? 2. Instructions de contrôle dans Mathematica. 2 Définitions Algorithmes Caractéristiques Méthodologies Qualités Programmation Définition Langages de programmation Langages de haut niveau Traduction Cycle de vie Constructions de base de la programmation Constantes et variables Typage des données Types élémentaires Traitement des expressions opérateurs Affectation Exécution séquentielle des instructions Les instructions de contrôle Mathematica: Instructions de contrôle 2

Comment faire du café? Faire chauffer l eau Mettre du café dans la tasse Ajouter de l eau dans la tasse 3

4 L'informatique est avant tout une science de l'abstraction --- il s'agit de créer le bon modèle pour un problème et d'imaginer les bonnes techniques automatisables et appropriées pour le résoudre. Toutes les autres sciences considèrent l'univers tel qu'il est. Par exemple, le travail d'un physicien est de comprendre le monde et non pas d'inventer un monde dans lequel les lois de la physique seraient plus simples et auxquelles il serait plus agréable de se conformer. À l'opposé, les informaticiens doivent créer des abstractions des problèmes du monde réel qui pourraient être représentées et manipulées dans un ordinateur. Aho & Ullman La programmation, c'est l'art d'organiser la complexité. E. Dijkstra 4

Définitions 5 Algorithme: suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de données pour arriver, en un nombre fini d étapes, à un résultat. Données: organisation structurée des informations Programme: traduction d un algorithme dans un langage compréhensible par un ordinateur; autrement dit, un programme est une suite d'instructions définissant des opérations à réaliser sur des données. Problème Méthode Algorithme Programme Definitionen Algorithmus: Endliche Folge von Regeln, die in einer bestimmten Reihenfolge an einer endlichen Anzahl von Daten anzuwenden sind, um in einer endlichen Anzahl von Schritten zu einem Ergebnis zu gelangen. Daten: strukturierte Organisation von Informationen Programm: Übersetzung eines Algorithmus in eine durch einen Computer verständliche Sprache; mit anderen Worten ist ein Programm eine Folge von Instruktionen, das Operationen auf Daten definiert. 5

Algorithmes Caractéristiques Exemple Méthodologies Qualités 6

Algorithmes - caractéristiques 7 Les algorithmes sont indépendants des ordinateurs qui les exécutent Les algorithmes sont indépendants des langages (de programmation) dans lesquels ils sont traduits Souvent, les algorithmes sont exprimés sous forme d un langage «universel» appelé pseudo-code. 7

Algorithmes exemple 1 8 Comment échanger le contenu de deux variables respectives. Données fournies: ^ variable1 345 ^ variable2 12 Résultats désirés: ^ variable1 12 ^ variable2 345 Algorithme: 1. variabletemporaire variable1 2. variable1 variable2 3. variable2 variabletemporaire 8

Algorithmes exemple 2 9 Comment calculer l intérêt et la valeur acquise par une somme placée pendant un an à intérêt simple. Données fournies: somme placée, taux d intérêt Résultats désirés: (1) intérêt fourni par la somme placée, (2) valeur obtenue après placement d un an Algorithme: 1. multiplier la somme par le taux d intérêt divisé par cent 2. Additionner le résultat de 1. et la somme initiale 9

Algorithmes méthodologies (1/2) 10 Dans l exemple précédent, on distingue trois étapes qui sont souvent caractéristiques de la résolution d un problème: 1. Comprendre la nature du problème et préciser les données fournies (input) 2. Définir les résultats que l on désire obtenir (sorties ou output) 3. Déterminer le processus de transformation des données en résultats 10

Algorithmes méthodologies (2/2) 11 Pour traiter des problèmes plus complexes, une technique d élaboration d algorithme est la méthode descendante (topdown). Principe: décomposer le problème en plusieurs sousproblèmes plus simples qui seront traités séparément; les sous-problèmes sont eux-mêmes décomposés en problèmes plus fins. Il faut savoir à quel niveau s arrêter! Le langage de programmation nous indique quelles sont les instructions primitives disponibles. Cf. exemple «comment faire du café» 11

Algorithmes - qualités 12 Qualités d un algorithme: Clair: facile à comprendre Général: le plus grand nombre de cas possibles doit être envisagés, y compris les cas limites Economique: rapide (de faible complexité), peu gourmand en mémoire 12

Programmation Définition - Langages de programmation Langages de haut niveau Traduction Cycle de vie 13

Programmation 14 Programme: suite d'instructions définissant des opérations à réaliser sur des données. Les instructions sont écrites dans un langage de programmation Les instructions sont exécutées les unes après les autres, càd de façon séquentielle Le langage de programmation peut être de ^ bas niveau: les instructions sont proches des instructions comprises par le processeur (ex. assembleur) ^ haut niveau: les instructions sont proches de la réalité du problème résolu par le programme (Java, VB, Mathematica, ) Programmierung Programm: Folge von Instruktionen, die Operationen auf Daten definieren. Die Instruktionen werden in einer Programmiersprache geschrieben 14

Programmation langage de haut niveau 15 Ces programmes permettent de traiter des problèmes complexes grâce à la structuration. La structuration peut être vue comme le regroupement d'entités élémentaires en entités plus complexes. Avantages des langages de haut niveau: ^ Lisibilité : plusieurs intervenants doivent pouvoir lire, comprendre et modifier le programme ^ Porting : le programme peut être utilisé sur différentes architectures ^ Réutilisation de code existant : le programme peut utiliser des briques de construction (modules) disponibles par ailleurs (librairies); le programme peut devenir à son tour une nouvelle brique de construction pour d autres programmes; L utilisation de modules standards limite les erreurs humaines, améliore la lisibilité et augmente la vitesse d écriture du programme 15

Programmation - traduction 16 Les langages de haut niveau doivent être traduits en un langage de bas niveau compris par la machine 2 approches: 1. Interprétation: un programme se charge de traduire les instructions de haut niveau en instruction de bas niveau au fur et à mesure de l exécution du programme (Perl, Mathematica, ) 2. Compilation: la traduction se fait en un bloc avant l exécution du programme (c, Pascal, ) ^ Remarque: Java utilise une approche intermédiaire: compilation en un language intermédiaire (bytecode) portable sur toute machine supportant Java 16

Programmation cycle de vie 17 Définition du problème et spécification ^ incluant éventuellement plusieurs itérations de spécification avec les futurs utilisateurs du logiciel, un prototypage du produit final, et une modélisation des données. Conception ^ création de l'architecture de haut niveau du système, réutilisant si possible des composants déjà disponibles. Réalisation des «briques» composantes du programme Test des composantes Intégration des composantes ^ une fois chaque composante testée et validée, il faut que le système intégré soit également testé et validé Installation et test "sur le terrain", c'est-à-dire en situation réelle. Maintenance ^ souvent plus de la moitié du coût de développement ^ correction des effets imprévisibles ou imprévus, amélioration des performances ^ ajouts de nouvelles fonctionnalités au programme ^ importance d'écrire des programmes lisibles, corrects, robustes, efficaces, modifiables et portables! 17

Constructions de base Constantes et variables Typage des données Types élémentaires Traitement des expressions opérateurs Affectation Exécution séquentielle des instructions Les instructions de contrôle Condition (if-then-else) Itérations (for while) 18

Variable et constante 19 Variable: un élément d information identifié par un nom et dont le contenu peut varier au cours de la vie du programme Constante: un élément d information, parfois identifié par un nom, dont le contenu ne peut varier au cours de la vie du programme Nom Information x 6.14 nom jean variable x = 3 + Pi coul {r,g,b} constante sans nom constante avec nom Konstanten und Variablen Variable: ein Informationselement, das durch einen Namen identifiziert ist und dessen Inhalt sich im Laufe des Programms variieren kann. Konstante: ein Informationselement, das manchmal durch einen Namen identifiziert ist und dessen Inhalt sich im Laufe des Programms nicht variieren kann. 19

Typage des données 20 Type d une variable: le type d une variable détermine les valeurs licites pour la variable et les opérations autorisées sur cette variable. Le type de la variable est parfois défini automatiquement par l outil, comme par exemple pour Mathematica. Le type de la variable ne doit alors pas être défini par l utilisateur. Les langages de programmation tels que Java, C, C++ demandent la définition stricte du type d une variable. Il existe des types prédéfinis ou types élémentaires et des types que l utilisateur peut définir lui-même sur base des types élémentaires. Typisierung von Daten Typ einer Variable: Der Typ einer Variable bestimmt die erlaubten Werte für die Variable und die Operationen, die auf dieser Variable erlaubt sind. 20

Types élémentaires 21 L ensemble de types élémentaires dépend du langage de programmation utilisé. Exemples de type élémentaires en Java: ^ boolean : booléen, peut valoir true ou false ^ byte : entier sur 8 bits [-128, 127] ^ char : caractère Unicode codé sur 16 bits ^ short : entier codé sur 16 bits [-32 768, 32 767] ^ int : entier codé sur 32 bits ^ long : entier codé sur 64 bits ^ float : réel codé sur 32 bits, au format IEEE 754 ^ double : réel double précision codé sur 64 bits, au format IEEE 754 21

Traitement des expresssions - opérateurs 22 Expression: entité arithmétique ou logique constituée par un ensemble d opérandes et d opérateurs opérateur 3 + 2 opérandes Il existe des opérateurs arithmétiques (+, -, *, /, ^), relationnels (==,!=, <, >, ) et logiques (!, &&, ) Les opérateurs s appliquent aux opérandes suivant une priorité. Les langages de haut niveau permettent généralement la définition de nouveaux opérateurs s appliquant à certains types d opérandes Behandlung von Ausdrücken Operatoren Ausdruck: arithmetisches oder logisches Konstrukt, gebildet aus Operanden und Operatoren. Es existieren arithmetische (+, -, *, /, ^), relationale (= =,! =, <, >,...) und logische (!, &&, ) Operatoren Die Operatoren werden auf die Operanden nach einer Priorität angewendet. Die höher entwickelten Sprachen erlauben im allgemeinen die Definition von neuen Operatoren, die auf einige Typen von Operanden angewendet werden können. 22

Affectation 23 Affectation: opération qui mémorise une valeur dans une variable. La valeur mémorisée est souvent le résultat de l évaluation d une expression. Une variable sert à stocker de l information pour une utilisation ultérieure. L'un des intérêts de la programmation est de pouvoir décrire une démarche opératoire qui reste la même alors que les données du problème peuvent changer. L affectation de valeurs dans des variables est donc primordiale. Zuweisung Zuweisung: Operation, die einen Wert in einer Variable speichert. Der gespeicherte Wert ist oft das Ergebnis der Auswertung eines Ausdrucks. Eine Variable dient dazu, Informationen für eine spätere Benutzung zu speichern. Eines der Interessen der Programmierung besteht darin, ein Operationsvorgehen beschreiben zu können, welches dasselbe bleibt, während die Daten des Problems wechseln können. Die Zuweisung in Variablen ist also von vorrangiger Bedeutung. 23

Exécution séquentielle des instructions 24 Le flot normal d'exécution est séquentiel ^ après exécution d'une instruction élémentaire, l'instruction immédiatement consécutive dans le programme est activée. Les langages de programmation de haut niveau ont pour la plupart repris ce principe simple ^ les instructions vont être exécutées dans l'ordre dans lequel elles se succèdent dans le programme. Il est possible de modifier ce déroulement linéaire en utilisant des instructions de contrôle: ^ Instructions conditionnelles ^ Instructions de «répétition» ou «itératives» Sequentielle Ausführung von Instruktionen Der normale Ausführungsfluss ist sequentiel nach Ausführung einer elementaren Instruktion, wird die folgende Instruktion im Programm aktiviert. Die meisten Programmiersprachen höheren Niveaus haben diesen einfachen Grundsatz die Instruktionen werden in der Reihenfolge ausgeführt, wie sie im Programm stehen. Es ist möglich, diesen linearen Verlauf zu ändern, indem man Kontrollinstruktionen benutzt: Bedinungen Wiederholungen 24

Instruction de contrôle - définitions 25 Instruction conditionnelle: détermine si le bloc d instructions suivant est exécuté ou non en évaluant une condition. Typiquement, la condition est une expression à résultat booléen (True / False). Instruction itérative ou instruction de répétition ou boucle: permet d appeler plusieurs fois consécutives un même bloc d instructions. Cette instruction évalue une condition de répétition qui soit poursuit l exécution soit arrête l exécution du bloc d instruction («on sort de la boucle»). 25

Instructions de contrôle - conditionnelles 26 1. Aiguillage: Si-Alors-Sinon si condition alors instruction1 [sinon instruction2] fin_si 2. Gare de triage: Les Instructions de Contrôle sont également appelées les Structures de Contrôle dans la littérature. Kontrollinstruktionen Bedinungen 1. Weiche: Falls-Dann-Sonst, Falls Bedingung dann Instruktion 1 [sonst Instruction 2 ] EndFalls 2. Rangierbahnhof: Fall 1 Instruktion 1 Fall 2 Instruktion 2... Fall n Instruktion n 26

Exemple 27 Algorithme «maximum de deux entiers»: x 123 y 456 si (x>y) alors { max x } sinon { max y } fin_si 27

Instructions de contrôle - itératives 28 Permet de «répéter» un bloc d instructions: ^ tant qu'une condition reste vérifiée tant_que condition faire instructions fin_tant_que ^ pour tous les éléments d'un ensemble pour tout x appartenant E faire instructions fin_pour Kontrollinstruktionen Wiederhohlungen Erlaubt, einen sich wiederholenden Kreis im Kontrollfluss zu verwirklichen: so lange wie eine Bedingung gültig bleibt solange Bedingung mache Instruktionen EndeSolange für alle Elemente eines Blocks für jedes x gehörend zu E mache Instruktionen EndeSolange 28

Exemple 29 Algorithme «compter jusque 5»: compteur 1 tant_que compteur <= 5 faire { écrire compteur compteur compteur + 1 } fin_tant_que 29

Lectures complémentaires 30 Claude Delannoy, «Initiation à la programmation», Eyrolles 1997 Christophe Dabancourt, «Apprendre à programmer Algorithmes et conception objet», Eyrolles 2005 30

31 Questions? Cours 6 28/11/2006 31