Quelques questions

Quelques questions

by Pierre Victor Ancey -
Number of replies: 4

Monsieur,

Quelques questions me taraudent sur la réalisation d'algorithmes dans la partie exercices des examens ainsi que sur le stockage de l'information.


Premièrement, dans l'examen de 2018 question 13, il est écrit dans la correction : << supprimer le i-ème élément de L>>. Or n'est-ce pas absurde de ne pas détailler une partie de l'algorithme alors que l'on détaille tout le reste ? Comment peut-on savoir ce que l'on peut décrire en français et ce que l'on doit spécifier ?

Je vous pose ces questions car cela peut être dérangeant dans le cas de la personne qui va perdre un temps non-négligeable à rédiger ce bout d'algorithme alors que ce n'est visiblement pas ce qui est attendu...


Puis, il m'arrive de rédiger mes algorithmes en C++.  Je sais qu'un algorithme est indépendant du langage de programmation mais les réflexes persistent. Est-ce que je peux être pénalisé à l'examen à cause de ce type de rédaction ?


Enfin, nous avons vu dans le cours de la semaine dernière la façon de représenter les lettres à l'aide du code ASCII ou UTF-8. Pour cela, nous utilisons visiblement la base hexadécimale. Mais alors, lorsque l'ordinateur reçoit des lettres/des chiffres/des symboles, stocke-t-il l'information en binaire ou en base hexadécimale ? Si il la stocke en binaire, il doit passer de l'hexadécimal au binaire. Comment fait-il alors pour effectuer cette traduction ?


Je vous remercie d'avance pour vos réponses.
In reply to Pierre Victor Ancey

Re: Quelques questions

by Jean-Cédric Chappelier -
  1. « supprimer » : vous avez raison c'est un raccourci non totalement toléré ; en clair : la version « simplifie4 » telle qu'écrite ici n'aurait pas tous les points (comme dit d'ailleurs dans les commentaires qui suivent dans le corrigé) ;
    mais on peut simplement l'écrire comme :
    L  <-- (L[1], ..., L[i-1], L[i], ..., L[n])
    ce qui est plus clair (et où l'on voit mieux que c'est possiblement en O(n) ;
    Je répète (il me semble l'avoir dit plusieurs fois clairement) : vous n'avez droit d'utiliser que des opérations élémentaires (étant convenu que les opérations arithmétiques sont axiomatiquement considérées comme élémentaires dans ce cours) et des algorithmes vus en classe (taille(), recherche linéraire, recherche dichotomique, tri et algorithme de Floyd).
    « supprimer » ne répond au aucun de ces deux critères ;

  2. « C++ »  : Je préfère la rédaction d'algorithme « en français mathématique » comme fait en cours et en exercices plutôt qu'en C++ pour plusieurs raisons :
    1. ne pas évaluer 2 choses à la fois (l'algorithmique et la syntaxe C++ [quid si une faute de C++ ??])
    2. relié au point précédent (« supprimer »), ne pas utiliser des fonctionnalités trop avancées de C++ ;
    3. la cohérence : ne mélangez surtout pas les deux ; il faut dans un algorithme donné n'utiliser qu'une et une seule façon d'écrire.
    Ceci dit, je n'interdis pas l'utilisation du C++ pour l'écriture d'algorithmes ; MAIS faites bien attention aux trois points ci-dessus !!

  3. « hexadécimal » : votre question est liée au slide 12/58 du cours « Organisation de l'information ») : la machine « utilise » le binaire ou l'hexa de façon équivalente au sens où c'est nous, humains, qui interprétons un pattern binaire d'une façon ou d'une autre : dans la machine, il n'y a que des « fils » dans lesquels le courant passe ou ne passe pas et des circuits qui combinent ces fils pour réaliser les opérations demandées (p.ex. l'addition ; nous verrons tout cela en détails dans la leçon III.1) ;
    que l'on regarde ces fils un à un (binaire) ou par paquet de 8 ou 16, et que l'on écrive la valeur correspondante en hexa, ne regarde que nous, humains ; la machine, strictement parlant « s'en moque » : elle est ce qu'elle est : un assemblage de ces « fils » ; c'est notre vision/interprétation de ce qui s'y passe qui donne un sens (binaire) ou l'autre (hexa).
    Mais l'autre facette de votre question (« traduction ») pose la question de la communication de cette information, par exemple en entrée : à nouveau, il faut ici une (ou plusieurs) convention(s) pour dire comment l'on donne/lit l'information à la machine ; une de ces conventions peut être d'entrer un nombre écrit en hexa (avec des caractères, donc) et il y aura alors là un algorithme pour traduire ces caractères en « binaire » (au sens où : pour mettre « le bon courant dans les bons fils de la machine »).
    Est-ce que cela répond à votre question ?

In reply to Jean-Cédric Chappelier

Re: Quelques questions

by Pierre Victor Ancey -

Très bien, je vous remercie pour vos réponses. Je me demande tout-de-même comment l'ordinateur va transformer des informations exprimées en base hexadécimale/binaire en courant. J'ai souvent entendu dire que l'assembleur est le langage de base de l'ordinateur. Mais alors, comment l'ordinateur va transformer des informations codées en assembleur en courant électrique ?