Présentation des objectifs - iupalgo.free.friupalgo.free.fr/cours/0introd.pdf · Aucune diffusion...
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
+