Méthodologie de la programmation

Documents pareils
Évaluation et implémentation des langages

Algorithmique et Programmation, IMA

Éléments de programmation et introduction à Java

Conventions d écriture et outils de mise au point

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

STAGE IREM 0- Premiers pas en Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Machines virtuelles Cours 1 : Introduction


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

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

Cours d Algorithmique et de Langage C v 3.0

Initiation à la programmation en Python

La programmation orientée objet et le langage C++

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

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

Cours Informatique Master STEP

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Corrigé des TD 1 à 5

Environnements et Outils de Développement Cours 1 Introduction

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

Informatique Machines à calculer en théorie et en pratique

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

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

Cours 1 : La compilation

Éléments d'architecture des ordinateurs

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

É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

1 L évolution de l informatique

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

Chapitre I Notions de base et outils de travail

RÉALISATION D UN SITE DE RENCONTRE

Plan du cours Cours théoriques. 29 septembre 2014

Java Licence Professionnelle CISII,

Notions fondamentales du langage C# Version 1.0

Algorithmes récursifs

Cours d Informatique

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INTRODUCTION À LA PROGRAMMATION PRATIQUE DU LANGAGE C. M. Le Gonidec

Le langage C. Séance n 4

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

Optimisation de logiciels de modélisation sur centre de calcul

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

I00 Éléments d architecture

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

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

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

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

Cours 1 : Qu est-ce que la programmation?

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

Cours de Programmation 2

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

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

M Études et développement informatique

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

1 Description générale de VISFIELD

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)

Poker. A rendre pour le 25 avril

Feuille TD n 1 Exercices d algorithmique éléments de correction

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

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

Traduction des Langages : Le Compilateur Micro Java

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

TP1 - Prise en main de l environnement Unix.

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

TP 1. Prise en main du langage Python

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

Introduction au langage C

L informatique en BCPST

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

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

Rappels d architecture

Bases de données relationnelles

Les Langages Informatiques

Histoire de l Informatique

1 Recherche en table par balayage

Introduction à NetCDF

Programmation Web. Madalina Croitoru IUT Montpellier

Lier Erlang avec d autres langages de programmation

Note de synthèse. Développement web sur le CMS Prestashop. Stage du 17 mai au 25 juin Entreprise decoratzia.com 15 rue Erlanger Paris

Présentation du PL/SQL

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Algorithmique I. Algorithmique I p.1/??

IV- Comment fonctionne un ordinateur?

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

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Principes des langages de programmation INF 321. Eric Goubault

Glossaire des nombres

COMPARAISONDESLANGAGESC, C++, JAVA ET

MIS 102 Initiation à l Informatique

Transcription:

Méthodologie de la programmation Pablo Rauzy pablo rauzy @ univ-paris8 fr pablo.rauzy.name/teaching/mdlp UFR MITSIC / L1 informatique Séance 0 Présentation du cours Introduction à la programmation (impérative) Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 1 / 28

Présentation du cours Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 2 / 28

L informatique Qu est ce que l informatique? un outil, une technologie, une science. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 3 / 28

L informatique Qu est ce que l informatique? un outil, une technologie, une science. La programmation est au cœur de ces trois aspects. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 3 / 28

La programmation La programmation est l activité centrale du développement de logiciel. Elle consiste à écrire le code source d un programme. Ce code source est ensuite interprété ou compilé pour obtenir du code exécutable. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 4 / 28

La programmation Aperçu historique 1842 Premier programme au monde. Ada Lovelace Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. Cartes perforées Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. Machine analytique Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. Charles Babbage Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. 1936 Turing publie On Computable Numbers with an Application to the Entscheidungsproblem. Alan Turing Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. 1936 Turing publie On Computable Numbers with an Application to the Entscheidungsproblem. 1952 Premier compilateur (A-0). Grace Hopper Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. 1936 Turing publie On Computable Numbers with an Application to the Entscheidungsproblem. 1952 Premier compilateur (A-0). 1950s Premiers langages haut niveau (Fortran, Lisp). John Backus Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. 1936 Turing publie On Computable Numbers with an Application to the Entscheidungsproblem. 1952 Premier compilateur (A-0). 1950s Premiers langages haut niveau (Fortran, Lisp). John McCarthy Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. 1936 Turing publie On Computable Numbers with an Application to the Entscheidungsproblem. 1952 Premier compilateur (A-0). 1950s Premiers langages haut niveau (Fortran, Lisp). 1964 BASIC. John Kemeny Thomas Kurtz Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

La programmation Aperçu historique 1842 Premier programme au monde. 1936 Turing publie On Computable Numbers with an Application to the Entscheidungsproblem. 1952 Premier compilateur (A-0). 1950s Premiers langages haut niveau (Fortran, Lisp). 1964 BASIC. 1972 C. Denis Ritchie Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 5 / 28

Ce cours Objectifs : Apprendre à (apprendre à) programmer. Connaître les outils utiles pour programmer. Voir un peu de théorie de la programmation. Acquérir un socle solide de culture générale sur la programmation. Avoir les moyens de suivre le plus efficacement possible vos études d informatique. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 6 / 28

Ce cours Langages et paradigmes de programmation Aborder plusieurs langages et différents paradigmes de programmation. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 7 / 28

Ce cours Langages et paradigmes de programmation Aborder plusieurs langages et différents paradigmes de programmation. Paradigmes de programmation : concurrente, déclarative, fonctionnelle, impérative, logique, objet, par contrainte, synchrone, événementielle,... Langages de programmation : Assembleur, Bash, C, C++, CSS, Erlang, HTML, Java, LaTeX, Lustre, OCaml, PHP, Prolog, Python, Racket, SQL,... Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 7 / 28

Ce cours Outils Utiliser différents outils utiles à la programmation : compilateurs, moteurs de production, gestionnaires de contrôle de version, débugueurs, profileurs, documentations. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 8 / 28

Ce cours Théorie Voir quelques notions théoriques qui fondent la programmation : logique booléenne, théorie des ensembles, machine de Turing, lambda calcul, calculabilité, complexité. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 9 / 28

Ce cours Organisation Le cours est organisés en 5 cycles : 1. Principaux paradigmes de programmation. 2. Outils pour la programmation. 3. Théorie pour la programmation. 4. Compilation et outils de développement. 5. Ouvertures. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 10 / 28

Ce cours Évaluation L évaluation de ce cours prendra en compte : un projet, les TPs, un examen. À chaque fois, la propreté du code, sa présentation, et son organisation seront prisent en compte. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 11 / 28

Ce cours / Évaluation Ce qui est attendu de vous Correctement écrire du code : indentation propre, nommage cohérent, organisation modulaire des fichiers. Savoir gérer un projet seul ou à plusieurs : utiliser git pour gérer les versions du code source et la collaboration, utiliser Make pour gérer la compilation modulaire. Savoir utiliser les bons outils : connaître les forces et faiblesses de différents langages et paradigmes de programmation, savoir chercher efficacement dans une documentation, utiliser un débugueur (gdb) et un profileur (valgrind). Savoir communiquer sur vos projets : utiliser LATEX pour écrire des rapports. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 12 / 28

Introduction à la programmation (impérative) Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 13 / 28

Programmes Un programme est un ensemble d opérations exécutables par un ordinateur. Quand on parle de programme, il peut s agir de son code source ou d un binaire. Le code source d un programme peut être interprété ou compilé. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 14 / 28

Programmes Interprétation L interprétation d un programme source est réalisée par un autre programme, qu on appelle un interpréteur. Pour chaque opération décrite dans le code source, l interpréteur : lit et analyse l opération, l évalue ou l exécute. + cycle de développement plus rapide, débuguage plus simple optimisation, vitesse d exécution du programme Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 15 / 28

Programmes Compilation La compilation d un programme source est réalisée par un autre programme, qu on appelle un compilateur. Le compilateur traduit le programme une fois pour toutes vers un autre langage. Généralement, vers un langage plus proche de l ordinateur, pour que le code puisse être exécuté directement par le matériel. + optimisation, vitesse d exécution du programme cycle de développement plus lent, débuguage plus complexe Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 16 / 28

Programmes Compilation La compilation d un programme source est réalisée par un autre programme, qu on appelle un compilateur. Le compilateur traduit le programme une fois pour toutes vers un autre langage. Généralement, vers un langage plus proche de l ordinateur, pour que le code puisse être exécuté directement par le matériel. + optimisation, vitesse d exécution du programme cycle de développement plus lent, débuguage plus complexe Il existe des techniques intermédiaires (bytecode, JIT) qui tentent des compromis. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 16 / 28

Code source Les codes sources sont écrits dans divers langages de programmation. Nous allons commencer par étudier des concepts génériques des langages impératifs. Pour cela on va utiliser du pseudo-code. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 17 / 28

Code source Instructions Dans un langage impératif, un programme est composé d instructions. Dans notre pseudo-code, les instructions terminent pas un ;. Une instruction correspond à une commande, telle que : la déclaration d une variable, l affectation de la valeur d une expression à une variable, le test conditionnel, l itération. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 18 / 28

Code source Variables Une variable dans un programme a le même rôle qu une variable en mathématique : elle symbolise (nomme) une valeur qui peut changer au cours du temps. Une variable a un nom est un type. Le type défini les valeurs possibles : un nombre, une chaîne de caractères, un booléen... Dans certains langages le type est attaché à la variable et ne peut pas changer, on parle alors de langages statiquement typés. Dans d autres, le type est seulement attaché aux valeurs et donc le type d une variable peut changer, on parle alors de langages dynamiquement typés. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 19 / 28

Code source Déclarations On déclare une variable en donnant son type : chaine nom ; entier age ; bool majeur ; reel taille ; Optionnellement on peut lui affecter une valeur directement : chaine eleve_nom "Sonia" ; entier eleve_age 20 ; bool eleve_majeur vrai ; reel eleve_taille 1.70 ;! Attention, dans certains langages, se note =, mais n a généralement rien à voir avec celui des mathématiques! Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 20 / 28

Code source Expressions Une expression est une combinaison d éléments du langage qui retourne une valeur quand elle est évaluée : 2 + 3 age > 20 taille * 100 prenom + " " + nom Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 21 / 28

Code source Affectations Une affectation sert à modifier la valeur d une variable. On l écrit var expr. L expression expr est évaluée avant d être affectée à la variable var : a 2 + 3 ; nom_complet prenom + " " + nom ; taille_en_cm taille * 100 ; a a + 1 ; majeur age >= 18 ; Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 22 / 28

Code source Tableaux Pour stocker plusieurs variables liées du même type, on peut utiliser un tableau. Par exemple si on veut stocker les informations de 10 personnes différentes on peut déclarer les tableaux suivants : chaine noms[10] ; entier ages[10] ; reel tailles[10] ; Pour accéder à une cellule d un tableau, avec son indice entre crochets : noms[0] est le nom de la première personne, ages[0] son âge, tailles[0] sa taille. noms[9] est le nom de la dernière personne, ages[9] son âge, tailles[9] sa taille. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 23 / 28

Code source Conditions Un programme doit pouvoir faire des choix dynamiquement, lors de son exécution. On utilise pour cela des tests conditionnels. Ils permettent de n exécuter un bloc (sous partie) du programme que si une expression booléenne est vraie : si ((saison = "été" et temperature < 15) ou temperature < 10) alors { afficher("il fait froid") ; } si (age >= 18) alors { afficher("majeur") ; } sinon { afficher("mineur") ; } Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 24 / 28

Code source Boucles Un programme doit pouvoir répéter certaines opérations plusieurs fois. On utilise pour cela des boucles. Elles permettent de d exécuter un bloc du programme que tant qu une expression booléenne est vraie : entier n 0 ; tant que (n < 10) { afficher_entier(n) ; n n + 1 ; } Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 25 / 28

Code source Fonctions Une fonction est un sous-programme. Elles permettent de réutiliser plusieurs fois le même code à différents endroits. Une fonction reçoit un ou des arguments (ou paramètres) et renvoie un résultat. entier calculer_age (entier annee_naissance) { entier age ; age annee - annee_naissance ; renvoyer age ; }! Attention, la notion de fonction en programmation n est généralement pas équivalente à celle des mathématiques. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 26 / 28

Code source Structures de données Pour mieux organiser les programmes, on utilise des structures de données. Une structure de données est un type qui regroupe plusieurs variables : struct Personne { chaine nom ; chaine prenom ; entier age ; reel taille ; } On déclare une variable instance de cette structure comme avec un type de base : struct Personne eleve ; struct Personne eleves[30] ; On accède aux valeurs des champs (ou membres) d une instance de la structure avec un. : eleve.nom eleves[17].age eleves[21].taille 1.75 ; Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 27 / 28

TD 1. Écrire une fonction qui prend en argument une structure Personne et qui présente la personne en donnant son nom complet et son âge. 2. Écrire une fonction qui prend un entier en argument et calcule sa factorielle. 3. Écrire une fonction qui prend un entier en argument, choisi un nombre aléatoire entre 0 et cet argument, et le fait deviner à l utilisateur en lui donnant un indice après chaque réponse. 4. Écrire un programme qui compte de 0 à 100, mais remplace les nombres divisibles par 3 par Fizz, ceux divisibles par 5 par Buzz, et ceux qui le sont pas 3 et par 5 par Fizz Buzz. Vous disposez des fonctions suivantes : entier hasard(entier min, entier max) renvoie un nombre entre min et max, entier lire_entier() renvoie l entier qui a été saisi au clavier par l utilisateur, rien afficher(chaine msg) affiche le message msg à l utilisateur, rien afficher_entier(entier n) affiche l entier n à l utilisateur. Ces opérateurs binaires sur les entiers peuvent vous être utiles : a!= b renvoie vrai si a b, faux sinon, a % b renvoie le modulo (le reste de la division) de a par b. Autres informations (peut-être) utiles : Dans une chaîne, \n est affiché comme un retour à la ligne. Pablo Rauzy (Paris 8 / LIASD) Méthodologie de la programmation Séance 0 28 / 28