Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991...

19
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 hp://neo.dmcs.p.lodz.pl/~starzak [pl, en] hp://neo.dmcs.p.lodz.pl/bdp [fr]

Transcript of Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991...

Page 1: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Bases de la programmationété 2018/19

Dr Łukasz Starzak, MSc(Eng) PhD

Lodz University of TechnologyFaculty of Electrical, Electronic, Computer and Control EngineeringDepartment of Microelectronics and Computer Science

ul. Wólczańska 221/223, bât. B18, bureau 51httpp://neo.dmcs.p.lodz.pl/~starzak [pl, en]

httpp://neo.dmcs.p.lodz.pl/bdp [fr]

Page 2: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 2

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

Page 3: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 3

Plan du cours magistral

1. Notions de base de la programmation et de l’algorithmique2. Éléments d’un langage de programmation ;

introduction au langage Matlab et à l’environnement Octavea) Données et leurs typesb) Affeectation et opérateurs arithmétiquesc) Obtention et affeichage de données

3. Fonctions et portée de variables4. Structures de contrôle

a) Algorithmes simples du traitement de donnéesb) Opérateurs de relation et logiquesc) Alternatives et bouclesd) Instructions de terminaison

5. Représentation et stockage de données6. Problèmes avancés de l’algorithmique et de la programmation7. Erreurs d’exécution et de programmation

Page 4: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 4

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 Offeice)

qui peuvent alors être installés sur vos ordinateurs personnels

Page 5: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 5

É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 permettpra de les comprendre mieux▶ Voir la page web pour des repères (lorsque la date est fixée)

Deux interrogations de rattprapage● 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)

Page 6: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 6

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’affeecte 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

Page 7: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 7

1. Notions de basede la programmation et de l’algorithmique

ProgrammationLangages de programmation

Cycle de vie

Page 8: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 8

Processus de la programmation

● Un problème est une question à résoudre par une solution informatique

● Une instance du problème est une entrée nécessaire pour calculer une solution du problème

● Un programme est une description d’actions qu’un ordinateur doit effeectuer pour résoudre un problème donné

un ensemble d’actions un ordre d’exécution données [d’entrée] (entrées) résultats (sorties)

Problème ProgrammeProgrammation

… est le processus de développement (création) de programmes

Page 9: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 9

Programmation : exemple

● Problème Calculer le salaire d’un vendeur

composé d’une partie fixe et d’une commission sur la valeur des ventes réalisées.

● Formule arithmétique s = f + 0,02 ∙ v

s – salairef – partie fixe0,02 – taux de commission (2 %)v – montant des ventes

● Instance du problème Calculer le salaire du vendeur

dont la partie fixe est de 1100 € s’il a vendu des produits à 32 000 €.

● Programme(strictement : algorithme…)

1. Obtenir les données d’entréef et v

2. Multiplier v par 0,023. Additionner le résultat précédent

à f4. Renvoyer le résultat s

● Dans la plupart des cas, c’est une réponse au problème et non pas à son instance !

● Le degré de généralisation sera diffeérent selon le cas

Le taux de commission peut être un paramètre variant selon l’employé

Page 10: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 10

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

Page 11: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 11

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 ?

Page 12: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 12

Précision sur la notion du programme : algorithme

● 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

Problème ProgrammeCodificationAlgorithmeÉnoncéSpécification Résolution

Page 13: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 13

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 diffeérente en pseudo-code

et dans le langage utilisé● Symboles généralement reconnus : + − * / = ≠ < > etc.● Symbole de l’affeectation ← :

on écrit  : a ← 2 on lit  : affeecter 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…

Page 14: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 14

Langages de programmation

● Bas-niveau 1ėre génération – codes machine

2e génération – assembleurs spécifiques pour chaque

processeur directement compréhensibles

(codes machine) ou littpéralement traduisibles (assembleurs) pour le processeur

alors directement exécutables par le processeur

très diffeiciles (plus faciles les 2G) à comprendre par l’humain

aujourd’hui rarement utilisés en génie informatique (plutôt en électronique)

mais toujours utilisés par les processeurs eux-mêmes

● Haut-niveau plus proches du langage humain

et du pseudo-code alors plus abordables pour

l’humain incompréhensibles pour les

processeurs ne dépendent pas du processeur il existe des traducteurs capables

d’en produire un code machine 3e génération : : : : plus formels et

exigeants mais effeicaces – exécution plus rapide et fiable4e génération : : : : faciles et abordables même pour des non-professionnels – programmation plus rapide

Page 15: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 15

Généalogie simplifiée des langages haut-niveau 3G

● Il n’existe pas un langage universel 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)

Fortran1954

Basic1964

Visual Basic1991

Pascal1970

Delphi1995

Algol1958

C1971

C++1983

Java1995

PHP1995

Matlab1984

Cobol1959

PL/I1964

Simula1964

Ada1979

SmallTalk1971

Lisp1958

C#2000

Basé sur : Éric Lévénez, 2013http://www.levenez.com/lang/

Modula1975

Python1991

Tcl/Tk1988

Perl1987

Haskell1987

ISWIM1966

JavaScript1995

Ruby1993

OCaml1996

ML1973

VB.NET2001

Scheme1975

Page 16: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 16

Popularité des diffeérents langages haut-niveauSource : R. King, IEEE Spectrum, 2011

http://spectrum.ieee.org/at-work/ tech-careers/the-top-10-programming-languages

Page 17: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 17

Traduction et exécution de programmes

● Langages compilés (p. ex. Fortran, C)

● Langages interprétés (p. ex. Basic, Matlab)

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.

Programmesource

Codemachineexécuté

ProgrammecibleCompilateur

AssembleurÉditeur de liens

Chargeur

Programmesource

InterpréteurCode

machineexécuté

Page 18: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 18

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 diffeé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…)

Page 19: Bases de la programmation été 2018/19 - DMCSneo.dmcs.p.lodz.pl/bdp/bdp_cm_1.pdfVisual Basic 1991 Pascal 1970 Delphi 1995 Algol 1958 C 1971 C++ 1983 Java 1995 PHP 1995 Matlab 1984

Łukasz Starzak, Bases de la programmation, été 2018/19 19

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 alorsafficher « a est égal 2 »

sinonafficher « 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