Présentation des objectifs - iupalgo.free.friupalgo.free.fr/cours/0introd.pdf · Aucune diffusion...

31
© Morinet-Lambert , Cadot, Pierron O-1 Présentation des objectifs Université Henri Poincaré Nancy1 e-mail : [email protected] Dernières modifications : 28/09/04 © 2003 J. Morinet Lambert & Martine Cadot © 2004 L. Pierron Aucune diffusion autorisée en dehors du module d’enseignement Introduction à l’informatique : module d'algorithmique et programmation

Transcript of Présentation des objectifs - iupalgo.free.friupalgo.free.fr/cours/0introd.pdf · Aucune diffusion...

© Morinet-Lambert , Cadot, Pierron O-1Présentation des objectifs

Université Henri Poincaré Nancy1e-mail : [email protected]

Dernières modifications : 28/09/04© 2003 J. Morinet Lambert & Martine Cadot

© 2004 L. Pierron Aucune diffusion autorisée en dehors du module d’enseignement

Introduction à l’informatique : module d'algorithmique et programmation

© Morinet-Lambert , Cadot, Pierron O-2

Objectifs de la programmation procédurale

• Minimiser le temps de développement– Génération automatique de code :

• Spécifications précises

• Langages de haut niveau

– Réutilisation de code : • Généricité du code

• Documentation

• Minimiser la maintenance des programmes– Lisibilité et simplicité du code : langages de haut niveau

– Documentation technique

© Morinet-Lambert , Cadot, Pierron O-3

Programmes : des exemples

• Le programme essentiel pour fonctionner :

– le système d’exploitation : Linux

– un éditeur interpréteur de commande : le shell (in console)

– une interface graphique : le "bureau" (desktop)

• Des logiciels :

– éditeurs : de texte (emacs), d’images (gimp), de sons...

– applications : traitement de texte, navigateur (FireFox) ...

• Des environnements de programmation

– Turbo Pascal, C, C++, Lisp, ADA...

– compilateur, éditeur, debugger, bibliothèques

• Des programmes de commandes : les scripts

– liste de commandes : mode batch

© Morinet-Lambert , Cadot, Pierron O-4

Informatisation : les transformations

• Départ : Cahier des charges sur papier ou verbal• Explicitation comment faire : texte informel

– Schémas : organigramme– Phrases en langage naturel : retrouver dans les

commentaires • Formalisation : texte ou schéma formel

– Identification (recherche de nom de variables) des informations à traiter, typage

– Organisation (liens : composé de, liste de)– Données : Entrées - Résultats : sorties– Traitements (procédures)

• profils des procédures : rôles, données, résultats• Implantation : réalisation du programme dans un langage• Tests : jeux d'essais et consolidation

© Morinet-Lambert , Cadot, Pierron O-5Algorithme - programmation

• Phase 1 : Trouver un algorithme– exprimer la demande sous une forme facilitant son traitement

électronique• C'est aussi spécifier le problème

– réflexion initiale obligatoire • prendre un exemple et le traiter pas à pas

• Phase 2 : Passer à la réalisation programmation– Choisir un langage adapté au problème à traiter

• cf. les catégories de langage

– Traduction de la spécification dans le langage

© Morinet-Lambert , Cadot, Pierron O-6Transposition computationnelle

• programmer c'est transposer une réalité dans une machine

• réduire le cahier des charges à ce qui est automatisable facilement– réduire les coûts et le temps de développement

• facilement 60%, difficilement : 90%

• reste : 10 % très difficile (exceptions)

• trouver les représentations les plus proches : déformer– risques d'erreurs ou d'imprécision

• limites des programmes

© Morinet-Lambert , Cadot, Pierron O-7Quels sont les langages existants

• On ne parle que de langage de programmation– Permet de donner des instructions pour traiter des données– à différencier des langages : de formatage (permettant de

décrire les données : html, pdf, LaTeX…), de commandes (OS Unix), d'interrogation (SQL)…

• De niveaux variables (de machine vers langage naturel)– Binaire 0, 1– Assembleur LDI a, 45– Programmation : choix nombreux adaptés

• aux traitements : Cobol, Fortran, PHP...• aux méthodes de développement (IA) : Lisp, PROLOG, LOO…

– [Spécification : Uniform Modeling Langage]***

© Morinet-Lambert , Cadot, Pierron O-8Assembleur

• Un programme – Est une suite d'instructions que l'on fournit au processeur d'une

machine• Une instruction

– Est une commande que sait interpréter le processeur pour la faire passer d'un état dans un autre

– On travaille avec des registres contenant des valeurs chargées depuis la mémoire

• Exemple : Load A, 215• L'assembleur est le seul niveau de langage qui peut se traduire

directement en binaire compréhensible par le processeur

© Morinet-Lambert , Cadot, Pierron O-9Programmation structurée ou classique

• Un programme est constitué d'instructions regroupées en blocs ou en procédures, chaque procédure est une séquence d'instructions qui manipule un ensemble de données pour obtenir des résultats

• Il faut donc identifier les données : les typer et les déclarer

IF condition

else

{ Bloc d ’instructions1 } /* partie alors */

{ Bloc d ’instructions 2} /* partie sinon */

© Morinet-Lambert , Cadot, Pierron O-10Exemples de langages

• orientés gestion : cobol– édition d'états

• orienté traitement mathématique : fortran– efficacité des calculs, gestion des très grands nombres

• orienté type abstrait, généricité, temps réel et traitement des exceptions : ada

• orienté pédagogie : python– lisibilité des instructions

• orienté programmation machine : C• orienté Web : php, Javascript

– intégration modèle de document [X]HTML

© Morinet-Lambert , Cadot, Pierron O-11Programmation fonctionnelle

• Un programme est une suite d'application de fonctions qui associe des valeurs de sortie à des valeurs d'entrées

• Exemple : scheme, lisp, caml

• Utilisation : systèmes déductifs à base de règles, moteurs d'inférence…

© Morinet-Lambert , Cadot, Pierron O-12Programmation logique

• Un programme est un ensemble de relations logiques, et son exécution est une preuve de la déductibilité d'une formule logique

• Exemple : Prolog

• Utilisation: preuve de programme, traitement des langues

© Morinet-Lambert , Cadot, Pierron O-13Programmation objet***

• Une application est un ensemble d'objets possédant – des propriétés et

– des méthodes pour définir le comportement de ces objets,

– ceux ci peuvent interagir et communiquer via des messages

– héritage de comportement

• Exemple : C++, Java, Python, Delphi (pascal objet)…

© Morinet-Lambert , Cadot, Pierron O-14Exemple progOO : interfaces graphiques

• décrire les objets : fenêtres, boutons…– fenêtre composée de cadre, barre de menu, zone d'édition…

• leur propriétés– fenêtre : nom, état : active, iconifiée,

• quel comportement sur les évènement souris – clic sur la barre ? : on active

• passe en premier plan • on ouvre si iconifiée

– drag barre ? : on déplace– et sur les évènements clavier ?– etc.

© Morinet-Lambert , Cadot, Pierron O-15Héritage : un exemple de classes

rectangle

parallélogramme

quadrilatère

carré

losange

propriétés : 4 cotés

2 cotés parallèles égaux

- diagonales égales- diagonales se coupent selon angle droit

4 cotés égaux

© Morinet-Lambert , Cadot, Pierron O-16Problèmes en programmation

• Comment s'assurer qu'un programme fait ce qu'on attend de lui ?– jeux d'essais exhaustifs ? impossibilité – utiliser un langage de preuve

• Portabilité des programmes– code exécutable sur une plate-forme– à recompiler pour un autre environnement

idée : Développer dans un langage abstraitindépendant de la station : machine virtuelle java

• Lisibilité et maintenance– rester proche du problème à traiter– décrire en langage proche langage naturel moins les

ambiguïtés : langage de spécification UML

© Morinet-Lambert , Cadot, Pierron O-17Objectifs de la formation***

• Analyser un cahier des charges– du cahier des charges (donné)– à la spécification

• les objets du problème et les variables qui les représentent• les traitements à appliquer : algorithmes

• Programmer proprement– commentaires (taux =30%)– lisibilité des sources (noms de variables significatifs)– réutilisation (types de données, modules)

• quel que soit le langage support– ici : le langage C

© Morinet-Lambert , Cadot, Pierron O-18Méthode de travail

• cours : noter – les concepts et techniques de programmation

• td en salle : réfléchir, écrire– analyser les problèmes (exemples courts de difficulté

croissante)– développer les programmes– exécuter "sur papier" (simuler) avec des jeux d'essai

• td machines :– réaliser les programmes– exécuter

• travail personnel + libre service machine (4h/sem)

© Morinet-Lambert , Cadot, Pierron O-19Types de problèmes traités dans ce cours

• on donne des informations

• on attend des résultats

• on décrit les transformations

• allure d'un programme– [étape 0 : choisir ce qu'on veut faire (menu) ]

– étape 1 : saisir les données

– étape 2 : traiter les données

– étape 3 : afficher les résultats

© Morinet-Lambert , Cadot, Pierron O-20Programmation procédurale

• chaque étape de traitement peut se décomposer en sous étapes

• chaque sous étape correspond à l'enchaînement de morceaux de programmes (procédures) auxquels on "passe" les informations nécessaires et dont on récupère les résultats

calculer une facture

saisir les produits achetés

calculer les montants dus

éditer la facture

© Morinet-Lambert , Cadot, Pierron O-21Développer une application

• Structurer les instructions en blocs, procédures– Remplissant un rôle, une fonction

• Représenter/décrire les informations/objets– Variables avec des noms significatifs– UNE variable par objet requis : note, somme, moy, nbelev...– Et non pas une variable réutilisée pour représenter des

objets différents– préciser la catégorie : définir les types– Définir les propriétés d'un objet dans des champs de l'objet

(cf. cours sur les structures)– Leur associer des procédures/méthodes pour décrire leur

comportement : créer des bibliothèquespremiers pas vers la programmation "objet"

© Morinet-Lambert , Cadot, Pierron O-22Points développés dans le cours

• algorithmique• représentations des informations

– typage et définition de types par le programmeur– types abstraits : bibliothèques

• méthodologies de programmation– réutilisation : procédures– portabilité – maintenance de programme

• langage support

© Morinet-Lambert , Cadot, Pierron O-23Langage C : imposé

• de type fonctionnel• en bloc d'instructions

– instructions se terminent par ;– bloc marqué par {….}

• des procédures – appelées fonctions

• proche du système d'exploitation– permet de développer le noyau de commandes de UNIX

• syntaxe des instructions semblable en– java (programmation objet cf. cours en IUP2)– javascript (programmation objet pour le web)

© Morinet-Lambert , Cadot, Pierron O-24Principales instructions

Quel que soit le langage utilisé il faut connaître les instructions : – Une instruction se termine par le caractère ;– Affectation a = 4; som =a+b; n = n+1; cond = (age<18); – Répétition Itération

sur nombre for ( i = valeurInit ; i<=valeurFinale; i ++) { linstr }

sur condition do { linstr} while ( encore ) ; while ( encore ) { linstr }

– Condition (test) if ( cond ) {linstr1} else { linstr2 } – Entrée (saisie) scanf("%d", &i); /*format, adr_variable*/– Sortie (affichage) : printf("%d\n",i);– Commentaires : /* texte en clair */

© Morinet-Lambert , Cadot, Pierron O-25L'environnement de programmation

• Un navigateur (Netscape)cours et documents via le web à consulter

• Un éditeur de texte (emacs)– créer les programmes en C

• Le shell Linux (fenêtre terminal) – pour compiler les programmes et les exécuter

• exemple : gcc prog.c -o prog

– gérer l'espace disque (10Mo alloués par user : du -sm ~/*)• Le gestionnaire de fichiers Konqueror

– pour organiser les documents sur le serveur ou les périphériques de stockage

• Aide en ligne (bouée, xman + références C)

© Morinet-Lambert , Cadot, Pierron O-26Les états du shell

éditeur

interpréteur

return

fin normale

par défaut

ctrl C

rétroaction :20-~>

prompt affiché

rétroaction :les résultats ou rien

application : interrompre un programme

Flux et redirection

Editeur et interpréteur decommandes :Shell

flux d’entrée

stdin (0)

flux de sortie

stdout (1)

sortie erreurstderr (2)

fichier desortie

périphérique(écran)

fichier/dev/null

fichier ou périphérique<

>

exemple : exécuter un programme C

© Morinet-Lambert , Cadot, Pierron O-28Application

• exécuter un programme en C

• fournir des données depuis d'un fichier donnees.txt

• stocker des résultats dans un fichier resultats.txt

• exemple : – soit l'exécutable prog*

– la commande est : prog <donnees.txt >resultats.txt

rien ne s'affiche à l'écran

contrôler les résultats : more resultats.txt

Filtres ou redirections ?

Commande

Donnée : input

Sortie : output

ls ls > liste

liste

ls

| sortécran

écran

clavier

1) Le résultat s’affiche à l’écran

2) Le résultat est stocké dans le fichier (regarder le contenu de liste)

On redirige l’affichage

3) Le résultat est retraité pour être trié par ordre alphabétiquesur la première colonne

On retraite le flux de données

Résultat de la commande

© Morinet-Lambert , Cadot, Pierron O-30Architecture fonctionnelle

données(entrées)

résultats(sorties)

CPUROMRAMEprom

périphériques

les flux d'informations

© Morinet-Lambert , Cadot, Pierron O-31

Détail (cf. machine Von Neumann simplifiée)

Processeur (CPU)

registres

Traitement d'adresse

instruction

résultat

donnée

Bus d'adresse

Bus de donnée

Bus de commande

Mémoire

ROM

Zone de code

Zone de données

RAM

Unité arithmétique et logique(traitement)

Unité de commande

horloge

registres

+