Nicolas M. Thiéry
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- tags: Enseignement, Info 111, FAQ --- # Foire Aux Questions, Amphi Info 111 Semaine 3 Ceci est un document partagé. Vous pouvez tous l'éditer. Consignes: - Lire les documents de cours et faire les feuilles d'exercices de TD de la [Semaine 3](http://nicolas.thiery.name/Enseignement/Info111/Web/Semaine3/). - Vous pouvez au choix travailler sur papier ou utiliser JupyterHub pour télécharger les documents (si le service est disponible). - En cas de question: vérifier si la réponse n'est pas disponible ci-dessous. Sinon, si la question est courte, la poser dans le chat. Si elle est longue, l'écrire ci-dessous avec votre nom, et me mettre une notification dans le chat. Lorsque «ça ne marche pas» donner des détails (messages d'erreurs, ...) pour que je puisse analyser le problème. Vous pouvez aussi poser des questions à l'oral. ## Organisation ### Le TD3 est il à faire sur feuille? Oui, les exercices de TD sont a priori à faire sur feuille. Mais puisque vous êtes devant votre ordinateur, vous pouvez aussi les faire sous jupyter si vous préférez. ### À partir de quel TP sera-t-il noté? Cela dépendra de votre enseignant. Il vous préviendra lorsque les TP seront notés. ## Questions sur l'utilisation de JupyterHub ### Je ne peux pas me connecter a JupyterHub > "500 : Internal server error" Ce n'est hélas pas surprenant: Le serveur n'est pas encore dimensionné pour 200 personnes simultanément. Je vais voir si je peux l'alléger, mais en attendant, consultez les documents sur la page web, et faites les exercices sur papier. ### quand j'essaye de me connecter sur le serveur jupyter je suis redirigée automatiquement sur la meme page Essayer les contournement proposés en dessous du bouton. Notamment de se connecter dans une fenêtre en navigation privée. ### Le noyau se crash; j'ai essayé de le relancer plusieurs fois mais en vain. Bien refermer les feuilles précédentes avec le menu "Fichier -> Fermer et arrêter" ### Lancement de Jupyter sous JupyterHub > Lorsque j'essaye d'ouvrir le notebook en tapant "info-111 jupyrer notebook" et lorsque j'utilise les liens qui me sont proposés , ils ne me redirige vers aucune page existante. Sous JupyterHub, jupyter est déjà lancé. Pas besoin de le relancer. Juste retourne dans l'onglet contenant le navigateur de fichiers. ## Questions sur téléchargement et soumissions ### Échec de `info-111 submit Semaine3 XXX` > J'ai une problème d'échec de la soumission, ''info-111 submit Semaine3 MI3'' ne marche pas. Pour ceux qui s'y sont pris en avance (bravo!) et ont téléchargé 'Semaine3' pendant le week-end, avant dimanche 18h environ: Il y avait un bug dans ce que j'avais déposé: vous avez récupéré *tout* le matériel du cours avec les solutions ce qui n'est pas très utile. Pour corriger cela, regarder les instructions en errata de: https://nicolas.thiery.name/Enseignement/Info111/Web/Semaine3 ### Téléchargement d'archive > Auparavant, il était possible de télécharger les Semaine2.zip et Semaine3.zip directement sur votre site Internet. Ce n'est plus d'actualité ? Non, en effet. C'est plus robuste d'utiliser la commande info-111. ### Transfert du travail entre salle de TP et JupyterHub > Bonjour, pendant le tp de la semaine dernière (dans les salles nautilus), après avoir finit le TP j'ai utilisé la commande usuelle pour le soumettre (info-111 submit Semaine2 MI4), mais quand je me connecte sur jupytercloud en distanciel, le dossier Semaine2 est bien là, mais toutes les modifications que je lui ait apporté ont disparues. Est ce que je dois recommencer Semaine2 depuis le début et le soumettre en distanciel, ou (de préférence) est ce qu'il y aurait un moyen de récupérer mon travail ? Est-ce que, depuis JupyterHub, tu as bien fait, après le TP, un info-111 fetch Semaine2 Si oui et que tu ne vois pas tes modifications, donne moi un lien vers ton dépôt sur gitlab (ou ton login) pour que j'aille voir. > C'était bien çainf le problème, j'avais oublié de faire le "fetch". Merci. Parfait! ## Questions de C++ ### à quel moment faut t'il mettre les points virgules dans les lignes de codes En C++, il faut en principe mettre un ; systématiquement à la fin de chaque instruction. Exception: dans Jupyter, il n'est pas nécessaire de mettre un ; à la fin d'une cellule. ### Dans la commande cout y a t il une limite de caracteres ecrivables entre les guillemets? De mémoire, Je ne crois pas. Mais pour que ça reste lisible, c'est pas plus mal de couper en petit bout qui tiennent dans une ligne. ### Que veut dire " std::string resultat;" Cela déclare une variable 'resultat' qui est de type "std::string": c'est à dire une chaîne de caractères; du texte en langage courant. Mais pourquoi l'on ajoute std:: en plus du type ici ? C'est un détail technique: Techniquement, c'est parce que string est déclarée dans la bibliothèque standard de C++ qui s'appelle `std`. Au lieu d'être dans le cœur du langage comme int ou double. On verra les détails à la fin du semestre. Pour le moment, infovous pouvez le prendre comme incantation magique. ### `#include <iostream>` est donc la bibliothèque de c++?? C'est en effet une (petite) partie de la bibliothèque de c++? Donc si l'on veut utiliser une commande venant de la bibliothèque C++ on devra toujours le précéder de std ou ce n'est pas nécessaire ? ### Cela signifie quoi indentation "indentation" est défini dans la feuille sur les if imbriqués. Est-ce que tu le retrouves? ### Est ce que «cout» c'est l'équivalent de print en python ? Oui! ### À quoi sert le `#include<iostream> ...` Par défaut, le langage C++ vient avec le strict minimum pour écrire des programmes. Beaucoup de fonctionalités sont définies dans des bibliothèques. Ici la bibliothèque standard. Je vous raconterais cela plus en détail à la fin du semestre. Pour le moment, vous avez juste à savoir qu'il faut mettre cette incantation magique avant d'utiliser `cout`. ### Que faut-il choisir entre cout<< x<<end et return x ? > La seule différence que je vois et que l'un renvoie uniquement la variable et l'autre la variable et son type mais dans ce cas est-ce qu'on doit en préferer un ? C'est une très bonne question sur laquelle nous reviendrons la semaine prochaine. Les deux sont en fait très différents dès que l'on veut faire autre chose du résultat que de l'afficher. Pour le moment: si tu es dans une fonction, le plus probable est que c'est d'un return dont tu as besoin. > Mais en soit dans une fonction où le seul but est d'afficher le résultat les deux se valent où bien on préfère utiliser return du coup ? Oui, si le rôle de ta fonction est en effet explicitement d'**afficher** une valeur plutôt que de la **calculer**, alors `cout` est le bon outil. ### Affichage de booléens > Quand j'affiche un boolean en faisant ``cout << le_boolean;`` j'obtiens un 1 ou un 0 et non true ou false, est-ce normal, dois-je modifier le code (exercice 2)? Voici mon code: ```c++ bool exo2(int heure) { return (heure >= 10 && heure <= 12) || (heure >= 14 && heure <=19); } ``` Dans Jupyter, cela devrait afficher true/false. Si c'est dans un programme compilé, true et false sont affichés comme 0 et 1 > Merci pour votre réponse, je ne suis pas passé par jupyter mais par g++. Parfait, ça explique cela :-) ### Déclarations multiples de variables dans une cellule > Peut-on déclarer plusieurs variables dans la même cellule? Oui! Il faut juste bien mettre un `;`après chaque déclaration, comme après chaque instruction. int a, b; float c; > Si `int a; int b` n'est pas du C++, qu'est ce que c'est alors ? C++ valide: int a, b; int a; int b; C++ invalide: int a, int b; ### Déclaration multiples de fonction dans une cellule > Pourquoi pour max3 ça marche, mais pour float le fonction marche pas? int max3(int a, int b, int c){ .... } double max3( double a, double b, double c ){ ... } input_line_26:3:44: error: function definition is not allowed here Interpreter Error C'est bien du code C++ valide. Mais il y a une limitation actuellement avec C++ dans Jupyter: chaque fonction doit être définie dans une cellule séparée. ## Nouvelles questions Comment peut-on sauter une ligne de façon élégante en C++ ? ```cpp int exo6isPrime(int n) { for (int i = 2; i <= n / 2; i++) if (n % i == 0) return false; return true; } int exo6isPrimeFixed(int n) { if (n == 0 || n == 1) // ça double la taille du programme :( return false; else return exo6isPrime(n); } void exo6ListPrimes(int n) { cout << 2; for (int i = 3; i <= n; i = i + 2) if (exo6isPrime(i)) cout << i; } ``` La dernière fonction fait une bouillie de tous les nombres (car il n'y a pas de saut de ligne). Pour faire un saut de ligne: cout << endl; > Merci. Est-il possible de faire les deux sur une même ligne (de code cette fois-ci) ? Oui: cout << 1 << endl; > Merci. ### Problème de soumission >[name=Bahri Manitas] ``` (info-111) manitas@LAPTOP-TS2PP50M:~/Info111$ info-111 submit ProgImperative/Semaine3 InfoMath1 [SubmitApp | WARNING] No nbgrader_config.py file found (rerun with --debug to see where nbgrader is looking) [SubmitApp | CRITICAL] Unwritable directory, please contact your instructor: /public/info-111/exchange [SubmitApp | ERROR] nbgrader submit failed info-111: exécution de: submit ProgImperative/Semaine3 InfoMath1 [SubmitApp | WARNING] No nbgrader_config.py file found (rerun with --debug to see where nbgrader is looking) [SubmitApp | CRITICAL] Unwritable directory, please contact your instructor: /public/info-111/exchange [SubmitApp | ERROR] nbgrader submit failed ``` D'après le message, je fais l'hypothèse que tu travailles sur ton portable, avec une installation des logiciels datant de l'année dernière. Comme la procédure de soumission a changé, il faudrait mettre à jour lesdits logiciels. Le plus simple est probablement de refaire l'installation (la partie a propos de conda). Il faudra aussi créer le répertoire ProgImperative, et lancer info-111 depuis celui-ci. > D'accord, je vous remercie. Et j'avais créé le répertoire ProgImperative mais la commande info-111 ne s'execute que dans le repertoire Info111 sinon j'ai le message d'erreur suivant qui s'affiche. ``` (info-111) manitas@LAPTOP-TS2PP50M:~/Info111/ProgImperative$ info-111 submit Semaine3 Vous devez être dans le sous-répertoire Info111 de votre répertoire pour lancer cette commande ``` ### Problème pour afficher la variable tarif std::string tarif; int age; age=20; if (age <11) { tarif ="efant"; }else if (age <27){ tarif ="jeune"; }else if (age>=60){ tarif ="senior"; }else { tarif = "plein tarif"; } tarif Ce programme m'affiche le message d'erreur suivant : In file included from input_line_11:1: /home/laof/miniconda3/envs/info-111/include/xcpp/xmime.hpp:35:30: error: no viable overloaded '=' ...bundle["text/plain"] = cling::printValue(&value) + "\ntype: "+type(value); ~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ input_line_87:2:2: note: in instantiation of function template specialization 'xcpp::mime_bundle_repr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >' requested here mime_bundle_repr(*(*(std::string**)0x7ffccd2556a0)); ^ /home/laof/miniconda3/envs/info-111/include/nlohmann/json.hpp:16469:17: note: candidate function not viable: no known conversion from 'basic_string<char, std::char_traits<char>, std::allocator<char> >' to 'nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, adl_serializer>' for 1st argument basic_json& operator=(basic_json other) noexcept ( ### Fonction bool Je suis en train de faire l'exercice 6 du TD3 mais lorsque j'essaye ma fonction bool, il y a un message d'erreur. "input_line_14:14:1: warning: control may reach end of non-void function [-Wreturn-type]" Voici mon code : bool premier(int n) { int k = 2; while (k < n) { if ((n % k) == 0 ) { return false; }else { return true; } } } > Ta fonction n'est pas une fonction void (je suppose), elle doit donc retourner quelque chose (un boolean apparemment), ce message te précise qu'il se pourrait que tu sortes de la fonction sans avoir retourné de valeur. Cela arriverait si k était supérieur à n par exemple. Essaye de rajouter un return après ta boucle while.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully