Politechnika Łódzka | Wydział Elektrotechniki, Elektroniki, Informatyki i Automatyki | Katedra Mikroelektroniki i Technik Informatycznych

Bases de la programmation

Zarządzanie i inżynieria produkcji, Gestion et technologie (CKM), semestr 2

Enseignants

Małgorzata Napieralska [fiche personnelle]

Łukasz Starzak [fiche personnelle] [page personnelle en polonais] [page personnelle en anglais]

Changements du calendrier des classes

Cours magistral (CM)

Matériel de cours (diapositifs des conférences)

Interrogation

Règles

Une interrogation écrite sera organisée à la fin du semestre (le plus probablement dans sa dernière semaine).

La durée de l’interrogation sera d’une heure (60 min). Documents quelconques sont interdits.

Il y aura 2 interrogations de rattrapage pour ceux qui n’auront pas réussi. Les autres pourront venir aussi pour réviser leurs notes, pourtant :

Documents

Dates

Résultats

Travaux pratiques (TP) en algorithmique

Énoncés

NB. Les numéros des séances sont donnés à titre indicatif. On peut bien continuer son travail en séance suivante (sauf le dernier énoncé bien sûr). Ces indications ne prennent en compte que les exercices obligatoires (c.-à-d. pour une note finale de 4 maximum) ; cela s’applique particulièrement à l’énoncé 4.

L’interpréteur du langage Matlab – Octave

Conditions d’évaluation

  1. Les 4 conditions nécessaires pour réussir cette partie des TP, c’est :
  2. Vos solutions sont évaluées en points. On peut obtenir 1 pt pour la plupart des sous-exercices ; 2 pts pour les plus complexes ; 0,5 pt pour les plus simples. De ce nombre maximal, sont accordés :
  3. Une date limite de livraison de chaque compte rendu est communiquée ci-dessus. Si un compte rendu est fourni après cette date, votre nombre de points sera divisé par 2.
  4. Un compte rendu plagié devra être répété et le nombre de points obtenu après sera divisé par 3.
  5. Votre note sera directement basée sur le nombre de points total selon les règles suivantes : ce qui, dans l’année 2015/16, résulte en (le suivant tableau sera modifié chaque année de façon à prendre en compte le programme d’exercises actuel) :
    SeuilNote
    37%
    48%3
    58%
    69%4
    79%
    90%5
  6. La note de 2½ permet de réussir les TP à condition que :

Règles concernant les comptes rendus

Dans un compte rendu, numérotez les exercices et sous-points exactement comme dans l’énoncé.

Pour l’énoncé 1 il suffit d’inclure pour chaque tâche :

  1. Les expressions (formules/commandes) finalement entrées pour obtenir le résultat final correct, y compris celles qui définissent les données d’entrée.
  2. Le résultat final correct obtenu.
  3. Une brève description des étapes consécutives de votre solution du problème (seulement dans le cas où la solution a nécessité plusieurs expressions).

À commencer de l’énoncé 2, un compte rendu doit comprendre :

  1. Formulation du problème dans le langage humain.
  2. Le code de la fonction. Le même code (un fichier M), portant le même nom, doit se trouver dans le répertoire portant exactement le nom précisé dans l’Introduction, section Fichiers M (n’importe quel autre nom vous aimeriez inventer ; pour moi, tout comme pour l’ordinateur, exactement veut dire que chaque caractère de ce nom doit être comme demandé, non pas seulement certains caractères choisis par vous). Dans le même répertoire doivent se trouver les fichiers M contenant les définitions de toutes les autres fonctions appelées par la fonction en cause et développées dans le cadre des exercices antérieurs (cela ne s’applique qu’à l’énoncé 4).
  3. Une description de la fonction. Vous pouvez la mettre dans le code sous la forme de commentaires ou dans le texte du compte rendu. Il doit en être clair :
  4. Démonstration (résultats des tests) : ce que vous avez entré comme argument(s) exemplaire(s) et ce que vous avez reçu en résultat afin de vous assurer que votre programme fournit des résultats corrects.

Les codes des fonctions et les extraits copiés de la fenêtre Octave doivent apparaître en police à chasse fixe (p. ex. Courier New ou similaire).

Il est supposé que tout ce que vous incluez dans un compte rendu et mettez dans le répertoire versions_finales, vous le considérez correct. N’incluez alors pas tous vos essais où vous avez échoué. Sinon, ils seront évalués et vous obtiendrez 0% même s’il y en a des essais réussis en plus. Ce ne pas la tâche de l’enseignant de sélectionner ce qui est correct ; c’est la vôtre parce que ça démontre votre compréhension du problème et de la solution que vous présentez.

Pour améliorer votre résultat, le mieux sera de délivrer de meilleurs programmes et comptes-rendus suivants. Néanmoins, si vous croyez qu’il est nécessaire d’améliorer ce qui a été évalué, c’est possible mais :

Pour d’autres règles (il est obligatoire de les lire et appliquer), reportez-vous à ma page web personnelle (voir ci-dessus pour le lien), section Sprawozdania ou Reports (ignorez Wskazówki ou Hints puisque ça n’a aucun rapport avec les Bases de la programmation).

Résultats

Si vous ne voyez pas le signe + dans la colonne Crédit malgré avoir obtenu un nombre de points suffisant, cela veut dire que vous n’avez pas encore rempli toutes les conditions de réussite, ou bien vous m’avez demandé d’accord pour améliorer ou ajouter des exercices.

Note finale du cours entier

Pour la méthode de calcul, voir les diapositifs de la 1ère conférence. Vous pouvez voir votre note finale actuelle dans le tableau contenant les résultats des TP (à condition que vous avez réussi tous les 3 éléments, c.-à-d. le CM et les deux parties des TP).

Si vous êtes satisfait(e) avec votre note actuelle, envoyez-moi un mél clair sur ce point (à l’exception d’un 5 qui sera supposé satisfaisant). Seulement après cette note sera inscrite dans le Système Informatique de la Didactique. Si je ne reçois aucun mél jusqu’à la fin de la session de juin/juillet, la note affichée sera inscrite le lendemain. Vous devez donc me signaler avant dans le cas où vous vouliez corriger ou ajouter quelque chose après cette date.

Problèmes fréquents en Octave

Erreurs et avertissements de l’interpréteur du langage Matlab

Explication : Les lettres apparaissant ci-dessous en italique symbolisent des textes ou nombres réels affichés par Octave à la même position dans le message d’erreur ou d’avertissement donné.

Si le message contient le texte near line i column j et si l’erreur ou avertissement en cause s’est produit lors de l’exécution d’un fichier M, alors i et j sont le numéro de la ligne et le numéro de colonne dans cette ligne où une anomalie a été remarquée par l’interpréteur. Cela peut représenter l’emplacement de la source de cette anomalie mais pas toujours : il est possible qu’une telle anomalie est causée par une erreur de programmation commise avant (dans le cours de l’exécution du programme). Si l’erreur ou avertissement en cause s’est produit lors de l’exécution d’une instruction introduite en ligne de commandes d’Octave (dans la fenêtre de l’interpréteur) ou avant que l’exécution du fichier M approprié puisse commencer, alors i n’est que le numéro d’instruction dans la fenêtre Octave.
MessageExplicationPossible cause et solution
error: `c' undefined near line i column j
c est une commande (y compris le nom d’une fonction prédéfinie) en Matlab
La commande c n’est pas connue à l’interpréteur La graphie de c est incorrecte ; vérifiez-la, y compris majuscules/minuscules ainsi que l’usage correct d’espaces et de symboles voisins
error: `f' undefined near line i column j
f est le nom d’une fonction créée par vous
L’interpréteur n’a pas pu trouver le fichier M contenant la définition de la fonction f
  1. Le répertoire en cours n’est pas celui dans lequel se trouve le fichier M contenant la définition de cette fonction
    • Trouvez le fichier à l’aide de l’Explorateur Windows et notez le chemin de ce répertoire affiché en haut de la fenêtre
    • Affichez le répertoire de travail dans Octave (pwd, voir la conférence)
    • Si les deux répertoires sont différents, déplacez le fichier vers le répertoire de travail d’Octave ou changez du répertoire de travail d’Octave (cd, voir la conférence)
  2. L’extension du nom du fichier M n’est pas m
    • Assurez-vous que les extensions de fichiers sont affichés en Explorateur Windows (voir Introduction)
    • Si le nom du fichier ne finit pas par .m, ouvrez ce fichier et enregistrez-le avec une extension correcte (voir Introduction)
  3. Le nom du fichier est différent du nom de la fonction
    • Ouvrez le fichier
    • Comparez le nom du fichier avec le nom de la fonction défini avec la commande function
    • Si le nom du fichier est différent du nom de la fonction, changez du nom du fichier ou de la fonction de façon qu’ils soient identiques
  4. La connexion avec le serveur a été temporairement perdue
    • Momentanément changez du répertoire de travail d’Octave pour c:\ avec la commande cd('c:\')
    • Retournez au répertoire de travail approprié avec cd
  5. La connexion avec le serveur a été perdue de façon permanente
    • Ouvrez une nouvelle fenêtre Octave (pour le moment ne fermez pas la fenêtre actuelle) en cliquant sur le raccourci trouvé sur le bureau Windows
    • Si nécessaire, changez du répertoire de travail avec cd
    • Si vous êtes capable d’appeler votre fonction depuis la nouvelle fenêtre Octave, fermez l’ancienne (après avoir copié son contenu s’il peut vous servir dans le futur)
error: `a' undefined near line i column j
error: called from:
error: f at line k, column l
f est une fonction créée par vous et a est son argument
La valeur de l’argument a de la fonction f n’a pas été spécifiée Le passage de l’argument a est manquant ou incorrect dans la formule d’appel de la fonction f (voir la conférence)
error: `v' undefined near line i column j
error: called from:
error: f at line k, column l
f est une fonction créée par vous et v est une variable autre que son argument
Le mot v n’est pas un nom de variable reconnu à l’intérieur de la fonction f
  1. Vérifiez la graphie de v, y compris majuscules et minuscules ainsi que l’usage correct d’espaces et de symboles voisins
  2. Vous essayez d’utiliser une variable qui est définie dans l’espace de variables de base ou dans l’espace de variables d’une autre fonction ; v doit devenir un argument de la fonction f et sa valeur doit être passée comme argument dans la formule d’appel de f
error: `t' undefined near line i column j
t est un texte (y compris un caractère)
L’interpréteur a essayé de comprendre le mot t comme une commande ou un nom de fonction ou de variable, ce qu’il n’est pas Il faut proprement discerner des textes (chaînes de caractères) et des mots à interpréter (commande, nom de fonction, nom de variable ; voir la conférence)
error: operator o: nonconformant arguments (op1 is nxm, op2 is rxs) L’opération o ne peut pas être effectuée avec des opérandes matricielles ou vectorielles dont les tailles sont n×m et r×s Vous avez essayé de :
  • additionner, soustraire, multiplier ou diviser élément par élément des vecteurs à tailles différentes ou orientations différentes (horizontale / verticale)
  • multiplier ou diviser au sens matriciel au lieu de le faire élément par élément (voir la conférence)
parse error near line k of file n
 syntax error
k est le numéro d’une ligne située après la commande endfunction
L’interpréteur n’attend rien après la commande endfunction parce que c’est interdit par la syntaxe du langage Matlab Supprimez tous les caractères apparaissant après la commande endfunction
parse error near line k of file n
 syntax error
>>> fragment
>>> ^
k est le numéro d’une ligne située avant la commande endfunction
Erreur de syntaxe ; l’interpréteur n’a pas été capable de comprendre la ligne k du fichier n, à commencer du caractère marqué par ^ (possiblement dans le contexte des caractères ou lignes précédents),
  1. La graphie d’un mot (instruction, nom de fonction, nom de variable) est incorrecte
  2. L’espace ou autre caractère séparateur (virgule, deux-points, point-virgule, point…) :
    • est introduit où il ne doit pas être trouvé
    • manque où il est nécessaire pour séparer deux éléments du langage (p. ex. un mot et un nombre)
    • est utilisé là où la syntaxe du langage Matlab prévoit un autre
  3. Une opération (arithmétique, logique, de relation) est incomplète, p. ex. il manque une opérande
  4. Une structure de contrôle est incomplète, p. ex. son début manque d’informations, il manque son fin (end…)
warning: function name `f' does not agree with function file name `n' Le nom du fichier n est différent du nom de la fonction f Ouvrez le fichier ; comparez son nom avec le nom de la fonction défini avec la commande function ; changez l’un ou l’autre de façon que les deux soient identiques
warning: f: some elements in list of return values are undefined La valeur de la variable résultat de la fonction f n’a pas été définie Dans la définition de la fonction f, il manque l’affectation de la variable définie comme son résultat avec l’instruction function
warning: time stamp for `n' is in the future Il paraît à Octave que le fichier n a été modifié plus tard que maintenant L’horloge du serveur sur lequel se trouve votre compte (c’est-à-dire le disque H), où vous enregistrez vos fichiers, n’est pas synchronisé avec l’horloge de l’ordinateur sur lequel vous travaillez. Si le temps local est retardé par rapport au temps du serveur, vous verrez ce message que vous pouvez ignorer.

Autres problèmes avec l’environnement

DescriptionPossible cause et solution
Le résultat d’une fonction ne change pas malgré que vous avez modifié sa définition dans un fichier M
  1. Le fichier M n’a pas été enregistré après sa modification
    • Enregistrez-le dans l’éditeur texte où vous l’avez modifié
  2. Le fichier enregistré ne porte pas l’extension m
    • Assurez-vous que les extensions de fichiers sont affichés en Explorateur Windows (voir Introduction)
    • Si le nom du fichier ne finit pas par .m, ouvrez ce fichier et enregistrez-le avec une extension correcte (voir Introduction)
  3. Le nom du fichier M est différent du nom de la fonction
    • Ouvrez le fichier M et comparez son nom avec le nom de la fonction défini avec la commande function
    • Changez l’un ou l’autre de façon que les deux soient identiques
  4. Le fichier que vous avez modifié porte le même nom mais se trouve dans un répertoire différent
    • À l’aide de la commande pwd, vérifiez si le répertoire de travail d’Octave est correct ; sinon, changez-en à l’aide de cd (voir la conférence)
    • Ensuite fermez et rouvrez le fichier M se trouvant dans ce répertoire et assurez-vous que c’est bien lui qui a été modifié
  5. L’ancienne version de la fonction est restée dans la mémoire de l’ordinateur
    • Supprimez la version mémorisée avec la commande clear (voir la conférence)
    • Appelez la fonction une nouvelle fois
  6. La connexion avec le serveur a été temporairement perdue ; par conséquent Octave a cessé de rafraîchir sa mémoire de fonctions depuis le disque H
    • Momentanément changez du répertoire de travail d’Octave pour c:\ avec la commande cd('c:\')
    • Retournez au répertoire de travail approprié avec cd