Bases de la programmation - été 2018/19
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Bases de la programmation été 2018/19 Dr Łukasz Starzak, MSc(Eng) PhD Lodz University of Technology Faculty of Electrical, Electronic, Computer and Control Engineering Department of Microelectronics and Computer Science ul. Wólczańska 221/223, bât. B18, bureau 51 http://neo.dmcs.p.lodz.pl/~starzak [pl, en] http://neo.dmcs.p.lodz.pl/bdp [fr]
Objectif du cours ● Pourquoi programmer ? L’ordinateur peux fournir la solution : ▶ dans un temps plus court ▶ avec plus de précision et vraisemblance ▶ avec moins d’engagement de la part de l’humain L’ordinateur est particulièrement utile en génie économique et gestion de même qu’en génie ingénieur ● Mais il faut savoir comment : inventer ce que doit être fait et dans quel ordre décrire les actions de façon compréhensible pour l’ordinateur assurer que le résultat soit juste trouver et éliminer des erreurs améliorer son programme coopérer avec d’autres codeurs et utilisateurs ● Programmation est une matière à apprendre Łukasz Starzak, Bases de la programmation, été 2018/19 2
Plan du cours magistral 1. Notions de base de la programmation et de l’algorithmique 2. Éléments d’un langage de programmation ; introduction au langage Matlab et à l’environnement Octave a) Données et leurs types b) Affectation et opérateurs arithmétiques c) Obtention et affichage de données 3. Fonctions et portée de variables 4. Structures de contrôle a) Algorithmes simples du traitement de données b) Opérateurs de relation et logiques c) Alternatives et boucles d) Instructions de terminaison 5. Représentation et stockage de données 6. Problèmes avancés de l’algorithmique et de la programmation 7. Erreurs d’exécution et de programmation Łukasz Starzak, Bases de la programmation, été 2018/19 3
Plan des travaux pratiques ● 1re partie : Programmation en bureautique Enseignant : Dr Małgorzata Napieralska Durée : 15h = 5 semaines Langage : HTML – développement de pages web Langage : Visual Basic – automatisation des outils bureautique ● 2e partie : Algorithmique en commerce Enseignant : Dr Łukasz Starzak Durée : 25h = 8⅓ semaines (1h en semaine 14 ou auparavant) Langage : Matlab – calcul numérique ● Travail personnel en plus des classes sera nécessaire C’est prévu dans le programme du cours C’est normal pour tous les cours en génie informatique ● Où travailler ? On peut accéder aux laboratoires du Département On va utiliser des environnements gratuits (à l’exception de Microsoft Office) qui peuvent alors être installés sur vos ordinateurs personnels Łukasz Starzak, Bases de la programmation, été 2018/19 4
Évaluation ● Cours magistral Interrogation écrite lors du dernier cours ou plus tard selon la décision du groupe ▶ Plus tard est conseillé afin d’avoir la possibilité de pratiquer tous les sujets, ce qui permettra de les comprendre mieux ▶ Voir la page web pour des repères (lorsque la date est fixée) Deux interrogations de rattrapage ● Travaux pratiques – bureautique Les règles seront communiquées par Dr Napieralska en TP ● Travaux pratiques – algorithmique Travail pendant les cours ▶ Montrez les résultats, sinon ils ne seront pas évalués Compte-rendu après que chaque énoncé est accompli ▶ Voir la page web pour des directives ● Note finale 0,5 ∙ CM + 0,5 ∙ (15/40 ∙ TPbur + 25/40 ∙ TPalg) Łukasz Starzak, Bases de la programmation, été 2018/19 5
Présence aux cours ● Travaux pratiques Présence obligatoire Une absence sans excuse tolérable ● Conférence Présence n’est pas obligatoire Présence n’affecte pas votre note (directement) ● Mais Je ne vais pas répéter en TP ce que j’aurai présenté et expliqué en conférence (ça ne veut pas dire qu’on ne peut pas me demander d’aide) Ne pas venir en CM, c’est déclarer qu’on sait déjà ou bien librement choisir de ne pas savoir alors je ne vais rien expliquer aux personnes absentes à la conférence C’est pourquoi : ▶ la présence en CM est fortement conseillée ▶ on fera la liste ▶ il faut demander si on ne comprend pas Łukasz Starzak, Bases de la programmation, été 2018/19 6
1. Notions de base de la programmation et de l’algorithmique Programmation Langages de programmation Cycle de vie Łukasz Starzak, Bases de la programmation, été 2018/19 7
Processus de la programmation Problème Programmation Programme ● Un problème est une question ● Un programme est une à résoudre par une solution description d’actions qu’un informatique ordinateur doit effectuer pour ● Une instance du problème est résoudre un problème donné une entrée nécessaire pour un ensemble d’actions calculer une solution du un ordre d’exécution problème données [d’entrée] (entrées) résultats (sorties) … est le processus de développement (création) de programmes Łukasz Starzak, Bases de la programmation, été 2018/19 8
Programmation : exemple ● Problème ● Programme Calculer le salaire d’un vendeur (strictement : algorithme…) composé d’une partie fixe et 1. Obtenir les données d’entrée d’une commission sur la valeur f et v des ventes réalisées. 2. Multiplier v par 0,02 ● Formule arithmétique 3. Additionner le résultat précédent àf s = f + 0,02 ∙ v 4. Renvoyer le résultat s s – salaire f – partie fixe ● Dans la plupart des cas, c’est 0,02 – taux de commission (2 %) une réponse au problème et v – montant des ventes non pas à son instance ! ● Instance du problème ● Le degré de généralisation sera Calculer le salaire du vendeur dont la partie fixe est de 1100 € différent selon le cas s’il a vendu des produits à Le taux de commission peut être 32 000 €. un paramètre variant selon l’employé Łukasz Starzak, Bases de la programmation, été 2018/19 9
Principes méthodologiques 1. Abstraire Retarder le plus longtemps possible le développement du code destiné à l’ordinateur 2. Décomposer Diviser le problème en parties plus facilement abordables 3. Combiner Assembler les solutions partielles pour obtenir la solution globale Łukasz Starzak, Bases de la programmation, été 2018/19 10
Spécification d’un problème ● Un énoncé est un texte définissant sans ambiguïté : l’entrée (données d’entrée) la sortie (résultats) relations entre les données et les résultats ● Problèmes mal posés Déterminer la position de l’élément le plus petit d’une suite. Si l’entrée est { 2, 3, 1, 4, 1, 9 }, le résultat c’est… ? Complément nécessaire : quel doit être le résultat quand il y a plusieurs éléments de la suite qui possèdent la valeur minimale Il peut y avoir une solution univoque Sinon il faut demander à l’utilisateur du programme ▶ la position du premier d’entre ces éléments ? ▶ la position du dernier d’entre ces éléments ? ▶ une liste des postions de tous ces éléments ? ▶ signaler une erreur ? Łukasz Starzak, Bases de la programmation, été 2018/19 11
Précision sur la notion du programme : algorithme Problème Spécification Énoncé Résolution Algorithme Codification Programme ● Un algorithme est une description d’un processus de résolution d’un problème défini ● Un algorithme est une succession d’actions qui, agissant sur un ensemble de données (entrée) fourniront la solution (sortie) à un problème défini ● Un programme est alors un algorithme destiné à l’ordinateur, écrit dans un langage de programmation ● La codification est le processus de conversion de l’algorithme en code (« texte » écrit dans un langage de programmation) ● Le programmeur ne doit pas laisser l’objectif final (le code) l’aveugler Łukasz Starzak, Bases de la programmation, été 2018/19 12
Pseudo-code ● Langage le plus proche possible du langage humain, néanmoins : simplifié – on n’observe pas toutes les règles de grammaire formalisé – pas de synonymes, interdit de changer de l’ordre de mots ● Sert à décrire des algorithmes, non pas des programmes Peut être traduit en langage de programmation quelconque Certains symboles pourront avoir une signification différente en pseudo-code et dans le langage utilisé ● Symboles généralement reconnus : + − * / = ≠ < > etc. ● Symbole de l’affectation ← : on écrit : a←2 on lit : affecter la variable a avec la valeur 2 ça veut dire : faire que la valeur de la variable a soit 2 ● Caractères à signification définie : [ ] – élément d’un tableau (matrice, vecteur, chaîne de caractères…) ( ) – arguments d’une fonction, procédure… . – composant (champ, méthode…) d’un objet, enregistrement… Łukasz Starzak, Bases de la programmation, été 2018/19 13
Langages de programmation ● Bas-niveau ● Haut-niveau 1ėre génération – codes machine plus proches du langage humain 2e génération – assembleurs et du pseudo-code spécifiques pour chaque alors plus abordables pour processeur l’humain directement compréhensibles incompréhensibles pour les (codes machine) ou littéralement processeurs traduisibles (assembleurs) pour le ne dépendent pas du processeur processeur il existe des traducteurs capables alors directement exécutables par d’en produire un code machine le processeur 3e génération : plus formels et très difficiles (plus faciles les 2G) exigeants mais efficaces – à comprendre par l’humain exécution plus rapide et fiable aujourd’hui rarement utilisés en 4e génération : faciles et génie informatique (plutôt en abordables même pour des non- électronique) professionnels – programmation mais toujours utilisés par les plus rapide processeurs eux-mêmes Łukasz Starzak, Bases de la programmation, été 2018/19 14
Généalogie simplifiée des langages haut-niveau 3G Fortran Cobol Algol Lisp ISWIM Tcl/Tk 1954 1959 1958 1958 1966 1988 Basic PL/I Pascal C Simula Scheme ML 1964 1964 1970 1971 1964 1975 1973 Visual Basic Delphi Ada Modula Matlab Perl C++ SmallTalk Haskell 1991 1995 1979 1975 1984 1987 1983 1971 1987 VB.NET Python PHP JavaScript OCaml 2001 1991 1995 1995 1996 Basé sur : Éric Lévénez, 2013 http://www.levenez.com/lang/ C# Java Ruby ● Il n’existe pas un langage universel 2000 1995 1993 Fortran : calcul numérique (mathématiques, contrôle) Visual Basic : programmes simples « macros » p. ex. en bureautique C, Python : programmes simples, fonctions de base, les systèmes Linux, MacOS C++ : projets complexes, le système Windows C#, Java : programmes modérément complexes avec interfaces graphiques PHP, Java, JavaScript : programmation réseaux (internet, sites web…) Matlab : créé strictement pour ce logiciel donc calcul numérique (4G) Łukasz Starzak, Bases de la programmation, été 2018/19 15
Popularité des différents langages haut-niveau Source : R. King, IEEE Spectrum, 2011 http://spectrum.ieee.org/at-work/ tech-careers/the-top-10-programming-languages Łukasz Starzak, Bases de la programmation, été 2018/19 16
Traduction et exécution de programmes ● Langages compilés (p. ex. Fortran, C) Assembleur Code Programme Programme Compilateur Éditeur de liens machine source cible Chargeur exécuté ● Langages interprétés (p. ex. Basic, Matlab) Code Programme Interpréteur machine source exécuté Les commandes peuvent être entrées en ligne (mais ça dépend de l’environnement de programmation), au fur et à mesure de l’exécution C’est plus simple du côté utilisateur L’exécution paraît immédiate En fait le code machine n’est pas optimal et l’interprétation peut être compliquée alors l’exécution prends plus de temps, de mémoire etc. Łukasz Starzak, Bases de la programmation, été 2018/19 17
Cycle de vie d’un programme ● Spécification Définir le problème de façon claire et non ambiguë Analyser les données et les résultats demandés Décomposer en sous-problèmes ● Conception Organiser les données Développer l’algorithme ● Codification Traduire le pseudo-code dans un langage de programmation ● Vérification Utiliser le programme avec des entrées différentes et voir si le résultat est correct ● Maintenance Adapter le programme afin d’aborder de nouvelles fonctions demandés Améliorer le programme (vitesse, interface graphique…) Łukasz Starzak, Bases de la programmation, été 2018/19 18
Documentation ● Programmer, c’est communiquer avec l’interpréteur, compilateur… ● mais aussi avec les autres avec soi-même (dans le futur) ● Important : bien documenter son travail désignations évocatrices qui décrient le contenu ou le rôle d’une variable, fonction… : calculersalaire, partieFixe, montantVentes, au lieu de f1, a, b algorithmes en pseudo-code ou en diagrammes indentation du code ▶ si a = 2 alors afficher « a est égal 2 » sinon afficher « a n’est pas égal 2 » commentaires dans le code ▶ si b=0, l'equation n'a pas de solution ▶ formule a consulter avec Mme la comptable Łukasz Starzak, Bases de la programmation, été 2018/19 19
Vous pouvez aussi lire