Introduction à l'informatique

Documents pareils
Évaluation et implémentation des langages

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

Compilation (INF 564)

Logiciel Libre Cours 2 Fondements: Programmation

Cours de Programmation 2

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Les Langages Informatiques

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

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

Préparation à l examen EFA en Macro

Organigramme / Algorigramme Dossier élève 1 SI

Cours d Algorithmique et de Langage C v 3.0

Le génie logiciel. maintenance de logiciels.

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

Éléments de programmation et introduction à Java

Cours 1 : La compilation

Cours d algorithmique pour la classe de 2nde


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

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

Optimisation de logiciels de modélisation sur centre de calcul

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

Examen Médian - 1 heure 30

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

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

Cours Informatique Master STEP

1 L évolution de l informatique

Corrigé des TD 1 à 5

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

Systèmes et traitement parallèles

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Conception de circuits numériques et architecture des ordinateurs

Introduction au langage C

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

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

Traduction des Langages : Le Compilateur Micro Java

OCL - Object Constraint Language

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

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

Gestion mémoire et Représentation intermédiaire

M Études et développement informatique

Java Licence Professionnelle CISII,

Théorie de la Programmation

1. Structure d'un programme FORTRAN 95

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

Architecture des ordinateurs

CM2 L architecture MIPS32

ALGORITHMIQUE ET PROGRAMMATION En C

M Études et développement informatique

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

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

Enseignement secondaire technique

ACTIVITÉ DE PROGRAMMATION

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

Introduction aux Bases de Données Relationnelles Conclusion - 1

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

SUPPORT DE COURS. Langage C

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

IV- Comment fonctionne un ordinateur?

Présentation du PL/SQL

Machines virtuelles Cours 1 : Introduction

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Introduction aux systèmes temps réel. Iulian Ober IRIT

Chapitre I Notions de base et outils de travail

Grammaires d unification

CQP Développeur Nouvelles Technologies (DNT)

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

Méthodologie de la programmation

Résumé Génération de code Le code intermédiaire

Cours de Génie Logiciel

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

Adama MBODJI MBODJ.SYSTEM

Algorithmique & programmation

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

Formula Negator, Outil de négation de formule.

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

La problématique. La philosophie ' ) * )

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

HISTORIQUE DES SYSTEMES D'EXPLOITATION (S.E.)

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Licence Sciences et Technologies Examen janvier 2010

Quatrième partie IV. Test. Test 15 février / 71

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

NFP111 Systèmes et Applications Réparties

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

Systèmes d information et bases de données (niveau 1)

Bernard HAMM, Évelyne LAVOISIER

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

Programmation en Caml pour Débutants

Programmation Web. Madalina Croitoru IUT Montpellier

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

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

Transcription:

Introduction à l'informatique DEUG Sciences et Technologie Première année Autour de la programmation Catherine Mongenet Pierre Gancarski (supports réalisés par Catherine Mongenet et Pascal Schreck) Rappels des faits Processeur : décode, exécute et enchaîne des opérations «élémentaires» Programme exécutable = suite d instructions élémentaires compréhensibles par l'architecture Format très précis et sans ambiguïté Dépend de l'architecture Langage machine Langage de programmation = ensemble d'instructions + manière de les combiner 2

Résolution de problème L'informatique est utilisée pour résoudre des problèmes ayant une réalité plus ou moins concrète. Visualiser des molécules Inverser une matrice Mettre en forme des textes Prévoir le temps du lendemain Ecart énorme entre les problèmes de l'utilisateur et les instructions élémentaires utilisées pour les résoudre... Utilisation de langages dits «de haut niveau» Plus faciles à appréhender que le langage machine Moins rudimentaires que le langage machine Syntaxe rigide Expressivité limitée 3 Algorithmique, programmation, compilation Problème «concret» Modélisation plus ou moins formelle (mathématique, physique, informatique...) Description d'algorithmes et de représentation de données Traduction dans un langage de programmation de haut niveau Traduction en une suite d'instructions reconnues par un processeur Modélisation Algorithmique Programmation Compilation (automatique) 4

Exemple Passage d'un problème concret à un algorithme Pb : Quel est le chemin le plus court entre Strasbourg et Biarritz? Modélisation : comment représenter une carte routière avec les liaisons entre villes et leurs distances? Lille Brest Bordeaux 500 600 Paris 550 500 Lyon Strasbourg Algorithme de recherche d'un chemin avec son coût Biarritz Toulouse Marseille Algorithme de recherche du plus court chemin Par un graphe valué 5 Exemple Passage d'un algorithme à un programme Comment implanter un graphe? Sous forme d'un tableau à deux dimensions 7 12 500 8 600 9 10 11 1 6 5 550 4 3 500 2 1 2 3 4 5 6 7 8 9 10 11 12 1 400 x x x x x x x x x 150 2 500 x x x x x x x x 550 3 300 270 250 x x x x x 400 4 150 x x x x x x 650 5 x x x x x 250 x 6 x 530 200 x 240 x 7 230 x x x 500 8 220 x x x 9 130 180 600 10 200 x 11 620 12 6

Exemple Passage d'un algorithme à un programme 1 2 3 4 5 6 7 8 9 10 11 12 1 400 x x x x x x x x x 150 2 500 x x x x x x x x 550 3 300 270 250 x x x x x 400 4 150 x x x x x x 650 5 x x x x x 250 x 6 x 530 200 x 240 x 7 230 x x x 500 8 220 x x x 9 130 180 600 10 200 x 11 620 12 7 8 9 500 600 12 1 6 550 3 500 2 Distance minimale: 1150 km Itinéraire : 2-3-6-11-10 de 2 à coût min 1-400 2 400 2 400 2 400 2 400 2 2 0 2 0 2 0 2 0 2 0 2 0 2 3-500 2 500 2 500 2 500 2 500 2 4 - - 800 3 800 3 800 3 800 3 5 - - 770 3 770 3 770 3 770 3 6 - - 750 3 750 3 750 3 750 3 7 - - 1050 12 1050 12 1050 12 1050 12 8 - - - 1280 7 1280 7 1280 7 9 - - 1150 12 990 6 990 6 990 6 10 - - - 1280 9 1150 11 1150 11 11 - - 1170 12 950 6 950 6 950 6 12 550 2 550 2 550 2 550 2 550 2 étapes 0 1 2 3 4 5 10 11 5 4 7 Langage de programmation Pourquoi la langue naturelle (comme le français) ne peut pas être un langage de programmation? Redondance (et contradictions possibles) Sous-entendu (en particulier emploi de pronoms) Ambiguïté grammaticale 8

Ambiguïté de traduction Exemple : le chauffeur ferme la porte phrase 1 ère interprétation verbe COD sujet verbe cod GN GN art nom art nom le chauffeur ferme la porte 9 Traduction Exemple : le chauffeur ferme la porte phrase 2 ème interprétation adj. sujet cod verbe sujet verbe GN Deux interprétations COD Grammaire ambiguë art nom adj le chauffeur ferme la porte Langue naturelle Langage de programmation 10

Langages de programmation Langage machine Niveaux de langages instructions codées en binaire, directement exécutable par la machine Langage d assemblage ou assembleur instructions écrites sous forme symbolique (mnémonique) Langage évolué (ou de haut niveau) instructions complexes qui doivent être traduites ou interprétées pour être comprises par la machine Propre à chaque type de machine Indépendant du type de machine 11 Langages Langage machine Niveaux de langages instructions codées en binaire, directement exécutable par la machine Langage d assemblage ou assembleur instructions écrites sous forme symbolique (mnémonique) Langage évolué (ou de haut niveau) instructions complexes qui doivent être traduites ou interprétées pour être comprises par la machine Nécessite une traduction réalisée automatiquement par la machine 12

Historique des langages de programmation Passage du bas niveau au haut niveau à cause de la «crise du logiciel» (plus on est de bas niveau, plus c'est dur à comprendre et à maintenir) pour «briser» une certaine hégémonie des informaticiens (exemple du langage Cobol) pour développer plus vite : presque sans programmer (outils de prototypage,...) rendu possible grâce aux progrès de la compilation/optimisation 13 Historique des langages de programmation Fortran (FORmula TRANslator), 1954 Calcul scientifique Fortran 77, Fortran 90 Langages évolués Cobol (Common Business Oriented Language), 1959, HPF pour machines parallèles Applications de gestion, manipulation de fichiers Basic (Beginner s All-purpose Symbolic Instruction Code), 1964 Langage rudimentaire, à but didactique Succès sur les premiers micro-ordinateurs 14

Historique des langages de programmation Pascal (N. Wirth), 1971 C (Kernighan et Ritchie), 1972 Langages évolués Algol (AlGorithmic Oriented Language), 60 puis 68 Concepts de programmation structurée structures de blocs structures de contrôle : if-then-else, while-do procédures, récursivité Langage orienté programmation système Lié au développement de Unix 15 Historique des langages de programmation Langages évolués Ada (J. Ichbiah), 1979 Appel d offre du Dépt Défense US Concepts de Pascal + temps réel, parallélisme, généricité, gestion des exceptions. C++ (B. Stroustrup), 1985 Concepts de C + notion de classe, héritage entre classes. Java (J. Gosling), 1995 Dérivé de C++ avec nb. librairies garantissant la portabilité Adapté aux applications Internet 16

Styles de programmation Style impératif Programmation impérative ou procédurale Variable = abstraction de la notion de case mémoire Affectation = action qui modifie la valeur d une variable Programme = suite d instructions Programmation orientée objet Structuration des programmes autour des objets manipulés Smalltalk, Eiffel, C++, Ada 95, Java 17 Styles de programmation Style déclaratif Programmation fonctionnelle Programme = ensemble de fonctions LISP (LISt Processing) (J. Mc Carthy), 1959 Manipulation de listes, avec qq. opérateurs de base ML et ses dialectes : SML, Caml Programmation logique Assertions de faits + mécanisme d inférence Prolog (PROgrammation LOGique) (A. Colmerauer), 1972 Utilisés en IA 18

Programmation impérative Structures de contrôle Conditionnelles Itératives if x > y then res := x else res := y for i := 1 to n do sum := sum + i while i<n do s := s + i; i := i+1 end Procédures et fonctions Structures de données Variables entières, réelles, caractères Tableaux A[10] désigne un tableau à 10 éléments A[1], A[2],, A[10] 19 Programmation impérative Module Type abstrait de données Objet + opérations de manipulation de ces objets Exemple : Objet : pile Opérations : empiler, dépiler, pilevide Fonctionne comme une boite noire : Implantation cachée 20

Exemple de programme (algo + code) Problème : calculer la somme des 10 premiers entiers s : variable dans laquelle on calcule la somme A chaque étape, on ajoute à s une valeur, successivement 1, puis 2, puis 3 jusqu à 10 Itération var i, s : integer; s := 0; for i = 1 to 10 do begin end; s := s + i; variable s variable i 0 610 15 21 28 36 45 55 23 45 67 89 10 21 Exemple de programme (assembleur) var i, s : integer; s := 0; for i = 1 to 10 do begin end; s := s + i; lab1 : load R1, #0 load R2, #1 add R1, R2, R1 inc R2 add R2, #1,R2 leq R2, #10, lab1 Reg. R1 contient la valeur de s Reg. R2 contient la valeur de i 22

Traduction : interpréteurs et compilateurs Deux types de mécanismes Interpréteur Traduction et exécution en une seule étape Chaque instruction est analysée, convertie en langage machine et exécutée immédiatement. Traducteur ou compilateur Traduction et exécution en deux étapes Programme source Programme objet en langage machine Exécution 23 Traduction : interpréteurs et compilateurs Deux types de mécanismes Interpréteur Traduction et exécution en une seule étape Chaque instruction est analysée, convertie en langage machine et exécutée immédiatement. Traducteur ou compilateur Traduction et exécution en deux étapes Langages compilés : Pascal, C, C++ 24

Exemple de grammaire Grammaire pour l affectation de variables (s := a s + i b ) c ) A id := E E E + T T T T F F F (E) id id A E A = affectation E = Expression T = Terme F = Facteur id = identificateur E T F id T F id T F id s := a + b c 25 Étapes de compilation Prog. source Analyse lexicale sum := x + 3 val Analyse syntaxique id 1 := id 2 + 3 id 3 Table des symboles Analyse sémantique := := id 1 id 1 + + id 2 id 2 1 2 sum x real real inttoreal 3 id 3 id 3 Arbre syntaxique 3 3 4 val real Prog. objet 26

Étapes de compilation Prog. source Analyse lexicale := id 1 + Analyse syntaxique id 2 inttoreal id 3 3 Table des symboles Analyse sémantique Génération de code intermédiaire temp1 = inttoreal (3) temp2 = temp1 id3 temp3 = id2 + temp2 id1 = temp3 temp1 = 3.0 id3 id1 = id2 + temp1 1load sum id3, R1real mulf #3.0, R1, R1 2load xid2, R2real 3addf val R2, R1, real R1 store R1, id1 4 Optimisation de code Génération de code objet Prog. objet 27 Développement d un programme Éditeur de texte Programme source Sous-programmes de librairie Compilateur Programme objet Éditeur de liens Programme objet Chargeur Programme exécutable Exécution Sous-programmes traduit séparément Débogueur 28