Objectifs. Présentation du cours. l Informatique. Programmer C++ Conclusion. Jean-Cédric Chappelier & Jamila Sam. Programmation I Introduction 1 / 29

Documents pareils
PROGRAMMATION I & II. Présentation générale des cours


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

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

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

Introduction au langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours d Algorithmique et de Langage C v 3.0

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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)

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

Conventions d écriture et outils de mise au point

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

Java Licence Professionnelle CISII,

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

Notions fondamentales du langage C# Version 1.0

Cours 1 : La compilation

Cours d algorithmique pour la classe de 2nde

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

Initiation à l algorithmique

Représentation d un entier en base b

Programme Compte bancaire (code)

Corrigé des TD 1 à 5

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

Algorithmique et Programmation, IMA

ALGORITHMIQUE ET PROGRAMMATION En C

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Cours Informatique Master STEP

Compilation (INF 564)

Cours 1 : Qu est-ce que la programmation?

Claude Delannoy. 3 e édition C++

Rappels d architecture

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

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

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

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

Programmer en JAVA. par Tama

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

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

Recherche dans un tableau

Cours de Programmation 2

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

Introduction à MATLAB R

Architecture des ordinateurs

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

Évaluation et implémentation des langages

STAGE IREM 0- Premiers pas en Python

TP1. Outils Java Eléments de correction

IV- Comment fonctionne un ordinateur?

TP 1. Prise en main du langage Python

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

Qualité du logiciel: Méthodes de test

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

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

SUPPORT DE COURS. Langage C

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Conception de circuits numériques et architecture des ordinateurs

Programmation en langage C

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

Initiation à la programmation en Python

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

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

V- Manipulations de nombres en binaire

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

Quelques éléments de compilation en C et makefiles

Programmation Classique en langage C

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

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

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

Représentation des Nombres

Gestion mémoire et Représentation intermédiaire

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

CM2 L architecture MIPS32

Algorithmique et programmation : les bases (VBA) Corrigé

Principes des langages de programmation INF 321. Eric Goubault

1. Structure d'un programme FORTRAN 95

Enseignement secondaire technique

Algorithmique I. Algorithmique I p.1/??

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

ACTIVITÉ DE PROGRAMMATION

TP1 : Initiation à Java et Eclipse

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Examen Médian - 1 heure 30

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

Programmation en C/C++

I00 Éléments d architecture

1.6- Génération de nombres aléatoires

Problèmes liés à la concurrence

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Architecture matérielle des systèmes informatiques

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

Transcription:

du Programmation I : Cours d introduction à la programmation INTRODUCTION 1. Apprendre à programmer savoir les bases et connaître correctement au moins un langage pratique sur le langage 2. Savoir comment fonctionne un ordinateur et savoir l utiliser (sous Linux) Laboratoire d Intelligence Artificielle Faculté I&C voir le document «Présentation générale du» mis à disposition. A LIRE ABSOLUMENT! Programmation I Introduction 1 / 29 Programmation I Introduction 2 / 29 Moyens Organisation du travail (semaines) AVANT le : voir les vidéos en (lundis 15 15 16 CO1) : rappels, approfondissements, questions MOOC : vidéos, quiz, exercices, devoirs notés Moodle : support de, exercices, compléments,... Interactions : séances de (1h) et d exercices (2h) Forums (MOOC et Moodle) entre le et la séance d exercices (jeudis 1 15 12 ) : finir les quiz (si ce n est pas fait) et commencer des exercices jeudi 1 15 12 : séance d exercices avec assistants après la séance d exercices : encore plus d exercices ; puis faire et rendre le devoir noté du MOOC voir le document «Présentation générale du» mis à disposition. A LIRE ABSOLUMENT! Programmation I Introduction 3 / 29 Programmation I Introduction 4 / 29

Organisation du travail (semestre) MOOC décalage 1h Lundi 15-16 exercices 2h Jeudi 1-12 ICC 2h Vendredi 13-15 ICC exercices 1h Vendredi 15-16 1 2 3 4 5 6 7 8 9 1 11 12 13 19.9.16 26.9.16 3.1.16 1.1.16 17.1.16 24.1.16 31.1.16 7.11.16 14.11.16 21.11.16 28.11.16 5.12.16 12.12.16-1. variables 2. if 3. for/while 4. fonctions 5. tableaux (vector) 6. string + struct 7. pointeurs 14 19.12.16 8. exemple 1 1 1 2 2 - -Intro / var / expr if -switch i++ for / while fonctions (1) fonctions (2) vector (1) array / string structures pointeurs entrées/sorties entrées/sorties erreurs / exceptions révisions (étude de cas MOOC) prise en main variables / expressions if -switch i++ for / while fonctions (1) fonctions (2) vector string structures Série notée pointeurs entrées/sorties erreurs / exceptions Examen Introduction Algo 1 Algo 2 (stratégies) Calculabilité Repr. Numérique Echantillonage 1 Exam 1 (1 h 15) -Echantillonage 2 Echantillonage Compression 1 Compression 2 Architecture ordi. Exam 2 (1 h 15) Stockage/Réseaux Sécurité Exam 3 (1 h 15) -- 23.9.16 3.9.16 7.1.16 14.1.16 21.1.16 28.1.16 4.11.16 11.11.16 18.11.16 25.11.16 2.12.16 9.12.16 16.12.16 Interaction avec les enseignants Plusieurs moyens pour contacter les enseignants, assistants et étudiants-assistants pour poser des questions sur le ou les exercices : I Durant les séances d exercices : + c est le moyen le plus direct, et généralement le plus efficace. I Par l intermédiaire des forums du (dans site Moodle [spécifique] ou MOOC [général]) + moyen idéal pour diffuser la connaissance N hésitez pas à en faire usage! I par email aux assistants + mais pour les cas généraux, préférez les forums. 23.12.16 Les contacts personnels avec l enseignant (email, téléphone ou visites) devront être strictement réservés aux cas personnels et/ou urgents! + voir le document «Présentation générale du» mis à disposition. A LIRE ABSOLUMENT! c EPFL 216 c EPFL 216 FÉ DÉR A L E D E L A U S A N N E Programmation I Introduction 5 / 29 Livres? Programmation I Introduction 6 / 29 Livres? FÉ DÉR A L E D E L A U S A N N E Les éléments fournis (sur le MOOC ou Moodle) devraient constituer une documentation suffisante pour ce! Les éléments fournis (sur le MOOC ou Moodle) devraient constituer une documentation suffisante pour ce! Pour ceux qui souhaitent avoir un livre, les ouvrages suivants sont également recommandés Pour ceux qui souhaitent avoir un livre, les ouvrages suivants sont également recommandés J.-C. Chappelier & F. Seydoux par la pratique recueil d exercices corrigés et aide-mémoire, PPUR, 3e édition, 213. Marylène Micheloud & Medard Rieder Programmation orientée objets en une approche évolutive, PPUR, 1997. Mais les anciennes éditions restent utilisables pour le de cette année. Il est disponible pour un prix avoisinant les 43 CHF. Une version éléctronique est prévue pour ces prochaines semaines. Il est disponible pour un prix avoisinant les 35 CHF. Une version éléctronique est prévue pour ces prochaines semaines. c EPFL 216 FÉ DÉR A L E D E L A U S A N N E c EPFL 216 Programmation I Introduction 7 / 29 FÉ DÉR A L E D E L A U S A N N E Programmation I Introduction 7 / 29

Notes et examens Chacun des deux (Programmation I, Programmation II) est une branche de semestre comptant coefficient 3 dans le Bloc 2. La note finale de chacun des sera calculée de la façon suivante : Série notée I (1h45 ) coef. 1 Examen théorique I (1h45 ) coef. 2............................................... Série notée II (1h45 ) coef. 1 Examen théorique II (1h45 ) coef. 2 Projet (en binôme) coef. 3 1 C est quoi? Qu est-ce que la programmation? INFORMATIQUE PROGRAMMATION voir le document «Présentation générale du». «ICC» «Programmation I» (& II) Devoirs notés du MOOC : sont obligatoires sont un très bon entrainement n entrent pas dans le calcul de la note EPFL. 1. mais en aucun cas plus que 1.5 fois la moyenne individuelle (sous forme fractionnaire) ; i.e. ne permet pas de passer si on a une moyenne individuelle hors projet inférieure à 3. (= fraction.4). Programmation I Introduction 8 / 29 Programmation I Introduction 9 / 29 Qu est-ce que la programmation? Exemple d automate programmable Objectif : permettre l automatisation d un certain nombre de tâches à l aide d ordinateurs. Un ordinateur est un exemple d automate programmable. Un automate est un dispositif capable d assurer, sans intervention humaine, un enchaînement d opérations correspondant à la réalisation d une tâche donnée. Exemples : montre, «ramasse-quilles»,... Un automate est programmable lorsque la nature de la tâche qu il est capable de réaliser peut être modifiée à volonté. Dans ce cas, la description de la tâche à réaliser se fait par le biais d un programme, c.-à-d. une séquence d instructions et de données susceptibles d être traitées (i.e. «comprises» et «exécutées») par l automate. Exemples : le métier à tisser Jacquard, l orgue de barbarie,...... et l ordinateur! PROGRAMME : Conception : quelles notes enchainer? Réalisation : percer les trous aux bons endroits Exécution : tourner la manivelle Résultat : mélodie Programmation I Introduction 1 / 29 Programmation I Introduction 11 / 29

Qu est-ce que la programmation? (résumé) Les instructions de l ordinateur En résumé, programmer c est donc décomposer la tâche à automatiser sous la forme d une séquence d instructions (traitements) et de données adaptées à l automate utilisé. opèrent sur traitements Formalisation des traitements : algorithmes influencent données distinguer formellement les bons traitements des mauvais Concrètement, quelles sont les instructions et les données «adaptées» à l ordinateur? Ordinateur microprocesseur détermine l ensemble des instructions élémentaires que l ordinateur est capable d exécuter ; mémoire centrale détermine l espace dans lequel des données peuvent être stockées en de traitement périphériques permettent l échange ou la sauvegarde à long terme des données Architecture de Von Neumann (1955) Formalisation des données : structures de données abstraites distinguer formellement les bonnes structures de données des mauvaises Programmation I Introduction 12 / 29 Programmation I Introduction 13 / 29 Les instructions de l ordinateur Exemple d instructions-machine Concrètement, quelles sont les instructions et les données «adaptées» à l ordinateur? Ordinateur microprocesseur mémoire centrale périphériques C est donc le microprocesseur qui détermine le «jeu d instructions» (et le type de données) à utiliser. On les appelle «Instructions Machine», «Langage Machine», «Assembleur» On peut programmer directement le microprocesseur en langage machine......mais c est un peu fastidieux et de plus, chaque processeur utilise ses propres instructions Instructions machine : Programme en Assembleur 1: LOAD 1 5 mettre 5 dans la mémoire 1 2: CMP 1 comparer le contenu de la mémoire 1 à 3: JUMP +3 si tel est le cas sauter 3 instructions plus loin 4: DECR 1 décrémenter la mémoire 1 (de 1) 5: JUMP -3 sauter 3 instructions en arrière 6: END Instructions Code Machine données Code Machine CMP -3 111 DECR 1 END 1 2 1 JUMP 11 3 11 LOAD 1 5 11 6 11 1 11 Le programme ci-dessus correspond donc physiquement en machine à la séquence : 11111111111 111111111 Programmation I Introduction 13 / 29 Programmation I Introduction 14 / 29

La notion de langage de programmation La notion de langage de programmation (2) Cependant, ces instructions-machine sont trop élémentaires pour pouvoir être efficacement utilisées (par les humains) pour l écriture de programmes...... il faut donc fournir au programmeur la possibilité d utiliser des instructions de plus haut niveau, plus proches de notre manière de penser et de conceptualiser les problèmes... Exemples de langage de programmation de haut niveau : «vieux» BASIC C 1 N=5 2 IF (N>) THEN PRINT N; N=N-1; GOTO 2 3 END int main() { for (int n=5; n>; --n) printf("%d\n", n); return ; } Comment rendre les instructions plus sophistiquées compréhensibles par l ordinateur? traduire les séquences d instructions de haut niveau en instructions-machine directement exécutables par le microprocesseur Selon ses caractéristiques, un tel traducteur est appelé compilateur ou interpréteur L ensemble des instructions de plus haut niveau qu un compilateur ou un interpréteur est capable de traiter constitue un langage de programmation. Programmation I Introduction 15 / 29 Programmation I Introduction 16 / 29 Interpréteur / Compilateur Interpréteur / Compilateur (2) Compilateur et Interpréteur sont des traducteurs de langage de programmation de haut niveau en séries d instructions-machine directement exécutables par l ordinateur. La différence réside dans la manière dont la traduction est réalisée : le compilateur traduit les programmes dans leur ensemble : tout le programme doit être fourni en bloc au compilateur pour la traduction. Il est traduit une seule fois. l interpréteur traduit les programmes instruction par instruction dans le cadre d une interaction continue avec l utilisateur. Un programme est traduit à chaque exécution. Remarques : Certains langages peuvent indifféremment être interprétés ou compilés est un langage compilé, jamais interprété Avantages et Inconvénients : De manière générale un langage interprété est donc adapté au développement rapide de prototypes (on peut immédiatement tester ce que l on est en train de réaliser) un langage compilé permet la réalisation d applications plus efficaces ou de plus grande envergure (optimisation plus globale, traduction effectuée une seule fois et non pas à chaque utilisation) un langage compilé permet également de diffuser les programmes sous forme binaire, sans pour autant imposer la diffusion sous forme lisible et compréhensible par un humain protection de la propriété intellectuelle Programmation I Introduction 17 / 29 Programmation I Introduction 18 / 29

Compilation d un programme Pour résumer fichier source hello.cc #include <iostream> using namespace std; int main() { cout << "Hello World!" << endl; return ; } compilateur commande : g++ hello.cc -o hello fichier exécutable hello 111111 1111111 11111111... Concrètement : Cycle de développement ➀ réfléchir au problème ; concevoir l algorithme ➁ traduire cette réflexion en un texte (programme source) ➂ traduire ce texte en langage machine (compilation, programme exécutable) ➃ exécution du programme (exécutable) En pratique : erreurs de compilation (mal écrit) erreurs d exécution (mal pensé) = correction(s) d où le(s) cycle(s)! Programmation I Introduction 19 / 29 Programmation I Introduction 2 / 29 Le langage Suite du Le langage est un langage orienté-objet compilé fortement typé. Schématiquement : = C + typage fort + objets Cette partie du correspond à ce qui est donnée sur le MOOC (Coursera) : structure d un programme représentation des données : variables, types Parmi les avantages de, on peut citer : un des langages objets les plus utilisés ; un langage compilé, ce qui permet la réalisation d applications efficaces ; un typage fort, ce qui permet au compilateur d effectuer de nombreuses vérifications lors de la compilation moins de «bugs»... ; un langage disponible sur pratiquement toutes les plate-formes. instructions, opérateurs et expressions Deux compléments par rapport au MOOC : auto const/constexpr Programmation I Introduction 21 / 29 Programmation I Introduction 22 / 29

auto Données modifiables/non modifiables En, on peut laisser le compilateur deviner le type d une variable grace au mot-clé auto. Le type de la variable est déduit du contexte. Il faut donc qu il y ait un contexte, c est-à-dire une initialisation. Par défaut, les variables en sont modifiables. Si l on ne souhaite pas modifier une «variable» après son initialisation : la définir comme constante (pour ce nom là uniquement) Par exemple : auto val(2); auto j(2*i+5); auto x(7.2835); Conseil : N abuser pas de cette possibilité et explicitez vos types autant que possibles. N utilisez auto que dans les cas «techniques», par exemple (qui viendra plus tard dans le ) : for (auto p = v.begin(); p!= v.end(); ++p) au lieu de for (vector<int>::iterator p = v.begin(); p!= v.end(); ++p) La nature modifiable ou non modifiable d une donnée au travers de ce nom peut être définie lors de la déclaration par l indication du mot réservé const. Elle ne pourra plus être modifiée par le programme en utilisant ce nom (toute tentative de modification via ce nom produira un message d erreur lors de la compilation). Exemples : int const couple(2); double const g(9.81); Programmation I Introduction 23 / 29 Programmation I Introduction 24 / 29 Expressions constantes En 11, il existe aussi le mot clé constexpr. Il est d utilisation plus générale, mais est aussi plus contraignant que const : la valeur initiale doit pouvoir être calculée à la compilation. Les deux (const et constexpr) sont donc très différents! const indique au compilateur qu une donnée ne changera pas de valeur au travers de ce nom ; mais 1. le compilateur peut très bien ne pas connaître la valeur en question au moment de la compilation ; et 2. cette valeur pourrait changer par ailleurs. constexpr indique au compilateur qu une donnée ne changera pas du tout de valeur et qu il doit pouvoir en calculer la valeur au moment de la compilation (i.e. cette valeur ne dépend pas de ce qu il va se passer plus tard dans le programme). Conseil : Si ces deux conditions sont vérifiées, on préfèrera utiliser constexpr. Variables En, une valeur à conserver est stockée dans une variable caractérisée par : son type et son identificateur ; (définis lors de la déclaration) La valeur peut être définie une première fois lors de l initialisation, puis éventuellement modifiée par la suite. Rappels de syntaxe : Types élémentaires : type nom ; (déclaration) int type nom(valeur); (initialisation) double char nom = expression ; (affectation) bool Exemples : int val(2) ; const double z(x+2.*y); constexpr double pi(3.141592653); i = j + 3; Programmation I Introduction 25 / 29 Programmation I Introduction 26 / 29

Opérateurs Opérateurs arithmétiques * multiplication / division % modulo + addition - soustraction ++ incrément (1 opérande) -- décrément (1 opérande) Opérateurs logiques and && «et» logique or ou not! négation (1 opérande) Opérateurs de comparaison == teste l égalité logique!= non égalité < inférieur > supérieur <= inférieur ou égal >= supérieur ou égal Ce que j ai appris aujourd hui (et la semaine passée) Rappels sur l organisation du : lire le document de présentation Ce qu est et à quoi sert un langage de programmation La différence entre langage interprété et compilé que traitements et données sont les deux facettes complémentaires de la programmation Mes premières bases de les variables expressions et opérateurs Priorités (par ordre décroissant, tous les opérateurs d un même groupe sont de priorité égale) : not ++ --, * / %, + -, < <= > >=, ==!=, and, or je peux commencer à écrire mon premier programme Programmation I Introduction 27 / 29 Programmation I Introduction 28 / 29 La suite Exercices (jeudi, de 1 15 à 12 ) : premiers programmes En salle CO-2 (15 postes) ou en salles INF 1 et 2 pour ceux qui veulent travailler sur leur propre portable continuer sur le MOOC pour le prochain (structures de contrôle, branchements conditionnels, conditions, type bool) Le prochain : révision et compléments sur Branchements conditionnels (if) Conditions Le type bool Les suivants : boucles fonctions,... Programmation I Introduction 29 / 29