[{"data":1,"prerenderedAt":260},["ShallowReactive",2],{"nav:fr:nsi":3,"page:fr:/nsi/algorithmique/dichotomie":224},[4,10,58,104,135,197],{"title":5,"path":6,"stem":7,"icon":8,"description":9},"Markdown","/nsi/markdown","0.nsi/0.markdown","i-vscode-icons-file-type-markdown","Nous avons appris au cours de cette première séquence à utiliser le **langage Markdown** pour rédiger des documents.",{"title":11,"icon":12,"description":13,"path":14,"stem":15,"children":16,"page":57},"Algorithmique","i-lucide-arrow-down-0-1",null,"/nsi/algorithmique","0.nsi/1.algorithmique",[17,22,27,32,37,42,47,52],{"title":18,"path":19,"stem":20,"icon":13,"description":21},"Préparer son programme","/nsi/algorithmique/preparation","0.nsi/1.algorithmique/0.preparation","",{"title":23,"path":24,"stem":25,"icon":13,"description":26},"Complexité linéaire et quadratique","/nsi/algorithmique/complexite","0.nsi/1.algorithmique/1.complexite","Lorsqu'on cherche à résoudre un problème par un algorithme, il est essentiel de mesurer l'efficacité de celui-ci. La complexité permet d'estimer les ressources nécessaires (temps, mémoire) en fonction de la taille des données à traiter.",{"title":28,"path":29,"stem":30,"icon":13,"description":31},"Protéger les variables constantes","/nsi/algorithmique/protection-constantes","0.nsi/1.algorithmique/2.protection-constantes","Lorsqu'on récupère des données, par exemple depuis un fichier CSV, il est essentiel de protéger les variables qui doivent rester inchangées. Nous allons voir quelques bonnes pratiques simples pour éviter les erreurs involontaires.",{"title":33,"path":34,"stem":35,"icon":13,"description":36},"Le jeu de la vie","/nsi/algorithmique/jeu-vie","0.nsi/1.algorithmique/3.jeu-vie","Un automate cellulaire consiste en une grille régulière de « cellules » contenant chacune un « état » choisi parmi un ensemble fini et qui peut évoluer au cours du temps. L'état d'une cellule au temps t+1 est fonction de l'état au temps t d'un nombre fini de cellules appelé son « voisinage ». À chaque nouvelle unité de temps, les mêmes règles sont appliquées simultanément à toutes les cellules de la grille, produisant une nouvelle « génération » de cellules dépendant entièrement de la génération précédente.",{"title":38,"path":39,"stem":40,"icon":13,"description":41},"Invariant de boucle","/nsi/algorithmique/invariant-boucle","0.nsi/1.algorithmique/4.invariant-boucle","Quand on programme une boucle, il est souvent utile de pouvoir raisonner sur ce qui ne change pas pendant son exécution. C’est ce qu’on appelle un invariant de boucle.",{"title":43,"path":44,"stem":45,"icon":13,"description":46},"Tri par sélection","/nsi/algorithmique/tri-selection","0.nsi/1.algorithmique/4.tri-selection","Le tri par sélection est un algorithme de tri simple qui fonctionne en sélectionnant l'élément le plus petit (ou le plus grand) d'une liste et en le plaçant à la bonne position. Il est souvent utilisé pour illustrer les concepts de base des algorithmes de tri.",{"title":48,"path":49,"stem":50,"icon":13,"description":51},"Tri par insertion","/nsi/algorithmique/tri-insertion","0.nsi/1.algorithmique/5.tri-insertion","Le tri par insertion est un algorithme de tri simple qui fonctionne en insérant chaque élément à sa place correcte dans la partie déjà triée du tableau. Il est souvent utilisé pour illustrer les concepts de base des algorithmes de tri.",{"title":53,"path":54,"stem":55,"icon":13,"description":56},"Recherche dichotomique","/nsi/algorithmique/dichotomie","0.nsi/1.algorithmique/6.dichotomie","La recherche dichotomique est un algorithme de recherche efficace qui fonctionne en divisant récursivement une liste triée en deux moitiés jusqu'à ce que l'élément recherché soit trouvé ou qu'il ne soit plus possible de diviser la liste.",false,{"title":59,"icon":60,"description":13,"path":61,"stem":62,"children":63,"page":57},"Architecture","i-lucide-cpu","/nsi/architecture","0.nsi/2.architecture",[64,69,74,79,84,89,94,99],{"title":65,"path":66,"stem":67,"icon":13,"description":68},"Binaire/décimal","/nsi/architecture/binaire","0.nsi/2.architecture/2.binaire","Nous comptons au quotidien en décimal. Les ordinateurs fonctionnent avec des 0 et des 1, en base 2, c'est le binaire. Quatre bits forment une valeur que l'on peut coder en hexadécimal (base 16).",{"title":70,"path":71,"stem":72,"icon":13,"description":73},"Les opérations bit à bit","/nsi/architecture/bit-a-bit","0.nsi/2.architecture/2.bit-a-bit","Les opérations bit à bit permettent de manipuler les bits d'un entier directement. Elles sont très utiles pour optimiser la mémoire et la vitesse d'exécution dans les programmes.",{"title":75,"path":76,"stem":77,"icon":13,"description":78},"Portes Logiques","/nsi/architecture/portes-logiques","0.nsi/2.architecture/2.portes-logiques","Ci-dessous, présentation des portes logiques utilisées en logique combinatoire, accompagnées de leurs tables de vérité.",{"title":80,"path":81,"stem":82,"icon":13,"description":83},"Le complément à deux","/nsi/architecture/complement-deux","0.nsi/2.architecture/3.complement-deux","Le complément à deux est une méthode permettant de représenter les entiers signés (positifs et négatifs) en binaire. C'est le système utilisé par la plupart des ordinateurs pour effectuer des opérations avec des nombres négatifs.",{"title":85,"path":86,"stem":87,"icon":13,"description":88},"TP bases","/nsi/architecture/binaire-tp","0.nsi/2.architecture/4.binaire-tp","Compte-rendu du TP portant sur les conversions entre les différentes bases.",{"title":90,"path":91,"stem":92,"icon":13,"description":93},"Architecture de von Neumann","/nsi/architecture/von-neumann","0.nsi/2.architecture/5.von-neumann","Découvrez comment l'idée révolutionnaire de John von Neumann de stocker les programmes en mémoire a transformé l'ordinateur en machine universelle et reste la base de tous les ordinateurs modernes.",{"title":95,"path":96,"stem":97,"icon":98,"description":21},"Projet tkinter","/nsi/architecture/projet-tkinter","0.nsi/2.architecture/6.projet-tkinter","i-heroicons-light-bulb",{"title":100,"path":101,"stem":102,"icon":13,"description":103},"Protocoles de communication","/nsi/architecture/communication","0.nsi/2.architecture/7.communication","Expérimentation des protocoles de communication à l'aide des cartes micro:bit : comprendre pourquoi et comment structurer les échanges d'informations pour rendre les messages compréhensibles et exploitables.",{"title":105,"icon":106,"description":13,"path":107,"stem":108,"children":109,"page":57},"Linux","i-devicon-linux","/nsi/linux","0.nsi/3.linux",[110,115,120,125,130],{"title":111,"path":112,"stem":113,"icon":13,"description":114},"Linux: présentation","/nsi/linux/presentation","0.nsi/3.linux/1.presentation","Présentation succincte du système Linux.",{"title":116,"path":117,"stem":118,"icon":13,"description":119},"Système de fichiers","/nsi/linux/fichiers","0.nsi/3.linux/2.fichiers","Présentation de la structure de base du système de fichiers Linux, et présentation des notions de chemins relatif et absolu.",{"title":121,"path":122,"stem":123,"icon":13,"description":124},"Commandes","/nsi/linux/commandes","0.nsi/3.linux/3.commandes","Présentation de la notion de commande, appliqué au système Linux.",{"title":126,"path":127,"stem":128,"icon":13,"description":129},"Permissions","/nsi/linux/permissions","0.nsi/3.linux/4. permissions","Dans les systèmes basés sur Linux, les permissions permettent de contrôler qui peut accéder à quoi. Chaque fichier ou répertoire dispose de permissions associées au propriétaire, au groupe assigné, ainsi qu'à l'ensemble des autres utilisateurs.",{"title":131,"path":132,"stem":133,"icon":13,"description":134},"Utilisateurs et groupes","/nsi/linux/utilisateurs","0.nsi/3.linux/5.utilisateurs","Linux est basé sur un système d'utilisateurs et de groupes qui ont une utilité pour les personnes qui l'utilisent, ainsi que pour le système lui-même.",{"title":136,"icon":137,"description":13,"path":138,"stem":139,"children":140,"page":57},"Python","i-vscode-icons-file-type-python","/nsi/python","0.nsi/4.python",[141,145,149,154,159,164,168,173,178,183,187,192],{"title":142,"path":143,"stem":144,"icon":13,"description":21},"Bonnes pratiques","/nsi/python/bonnes-pratiques","0.nsi/4.python/1.bonnes-pratiques",{"title":146,"path":147,"stem":148,"icon":13,"description":21},"Expressions et instructions","/nsi/python/expressions-instructions","0.nsi/4.python/1.expressions-instructions",{"title":150,"path":151,"stem":152,"icon":13,"description":153},"Types de valeurs","/nsi/python/types-valeurs","0.nsi/4.python/1.types-valeurs","En Python, on manipule des données, sous la forme de contenu statique, ou sous la forme de variables. Nous allons ici passer en revue les quatre types de valeurs dits **primitifs**.",{"title":155,"path":156,"stem":157,"icon":13,"description":158},"Chaînes de caractères","/nsi/python/chaines-caracteres","0.nsi/4.python/2.chaines-caracteres","Les chaînes de caractères sont très utilisées en programmation. En Python, plusieurs fonctions permettent de faciliter la manipulation de ces objets.",{"title":160,"path":161,"stem":162,"icon":13,"description":163},"TD : CSV > Markdown (1)","/nsi/python/csv-markdown","0.nsi/4.python/3.csv-markdown","Pour rappel nous avons vu en TD comment aborder la manipulation d'une chaîne de caractères multi-lignes contenant des données au format CSV. L'exemple fourni correspond au code ci-dessous :",{"title":165,"path":166,"stem":167,"icon":13,"description":21},"Conditions","/nsi/python/conditions","0.nsi/4.python/4.conditions",{"title":169,"path":170,"stem":171,"icon":13,"description":172},"Boucles","/nsi/python/boucles","0.nsi/4.python/5.boucles","La notion de boucle est fondamentale en informatique. Une boucle permet d'exécuter plusieurs fois des instructions, soit tant qu'une condition est réalisée (utilisation de la boucle `while`), soit en déterminant le nombre d'__itérations__ qui devront être réalisées (utilisation de la boucle `for`).",{"title":174,"path":175,"stem":176,"icon":13,"description":177},"Dictionnaires","/nsi/python/dictionnaires","0.nsi/4.python/5.dictionnaires","Un nouvel exemple de type construit est le dictionnaire.",{"title":179,"path":180,"stem":181,"icon":13,"description":182},"Listes","/nsi/python/listes","0.nsi/4.python/5.listes","Il est possible de \"stocker\" plusieurs valeurs dans une même structure. Ce type de structure est appelé une __séquence__.",{"title":184,"path":185,"stem":186,"icon":13,"description":182},"Tuples","/nsi/python/tuples","0.nsi/4.python/5.tuples",{"title":188,"path":189,"stem":190,"icon":98,"description":191},"Exercices pratiques","/nsi/python/exercices-1","0.nsi/4.python/6.exercices-1","Pour s'entraîner sur les conditions, boucles, et manipulation de chaînes de caractères, voici quelques exercices pratiques à réaliser :",{"title":193,"path":194,"stem":195,"icon":13,"description":196},"Fonctions","/nsi/python/fonctions","0.nsi/4.python/7.fonctions","Ce cours vise à rassembler les éléments importants à considérer lorsque l'on crée une fonction.",{"title":198,"icon":13,"description":13,"path":199,"stem":200,"children":201,"page":57},"IHM","/nsi/ihm","0.nsi/5.ihm",[202,206,211,216,220],{"title":203,"path":204,"stem":205,"icon":13,"description":21},"Formulaires HTML","/nsi/ihm/formulaires","0.nsi/5.ihm/1.formulaires",{"title":207,"path":208,"stem":209,"icon":13,"description":210},"Les requêtes HTTP","/nsi/ihm/http","0.nsi/5.ihm/2.http","Lorsqu'on soumet un formulaire, les données sont envoyées au serveur grâce à une requête HTTP. Mais c'est quoi exactement une requête HTTP ?",{"title":212,"path":213,"stem":214,"icon":13,"description":215},"Gestion des évènements","/nsi/ihm/evenements","0.nsi/5.ihm/3.evenements","Les évènements permettent d'exécuter des actions en réponse aux interactions des utilisateurs avec une page web, comme l'appui sur une touche ou le déplacement de la souris. JavaScript utilise des écouteurs d’évènements pour détecter ces interactions et déclencher des fonctions en conséquence.",{"title":217,"path":218,"stem":219,"icon":13,"description":21},"Manipulation du DOM","/nsi/ihm/dom","0.nsi/5.ihm/4.dom",{"title":221,"path":222,"stem":223,"icon":98,"description":21},"Jeu du clic","/nsi/ihm/tp","0.nsi/5.ihm/5.tp",{"id":225,"title":53,"body":226,"description":56,"extension":255,"icon":13,"landing":57,"links":13,"meta":256,"navigation":257,"path":54,"seo":258,"stem":55,"__hash__":259},"content_fr/0.nsi/1.algorithmique/6.dichotomie.md",{"type":227,"value":228,"toc":252},"minimark",[229,233,236,249],[230,231,232],"p",{},"La recherche dichotomique commence par comparer l'élément recherché avec l'élément du milieu de la liste. Si l'élément recherché est inférieur à cet élément, la recherche se poursuit dans la moitié gauche de la liste ; sinon, elle se poursuit dans la moitié droite. Ce processus se répète jusqu'à ce que l'élément soit trouvé ou que la liste ne puisse plus être divisée.",[230,234,235],{},"En résumé :",[237,238,239,243,246],"ul",{},[240,241,242],"li",{},"À chaque étape, on compare l'élément recherché avec l'élément du milieu,",[240,244,245],{},"On réduit la zone de recherche à moitié,",[240,247,248],{},"Puis on continue avec le reste de la liste.",[250,251],"dichotomie",{},{"title":21,"searchDepth":253,"depth":253,"links":254},2,[],"md",{},true,{"title":53,"description":56},"ww4W67nRteRJF-0MfPuQjpQDIR4DwVbViVnhguYYYc4",1774301504931]