<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Module 1: Algorithme et pseudocode on INF 1220 - Introduction à la programmation</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/</link><description>Recent content in Module 1: Algorithme et pseudocode on INF 1220 - Introduction à la programmation</description><generator>Hugo</generator><language>fr</language><atom:link href="https://lemire.github.io/inf1220-nexam/docs/modules/module1/index.xml" rel="self" type="application/rss+xml"/><item><title>Modèle du cours</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/teluq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/teluq/</guid><description>&lt;h1 id="le-modèle-pédagogique-du-cours"&gt;&#10; Le modèle pédagogique du cours&#10; &lt;a class="anchor" href="#le-mod%c3%a8le-p%c3%a9dagogique-du-cours"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Le cours INF 1220 est autoportant. Cela signifie que vous êtes capable, de manière&#10;autonome, de réaliser toutes les activités du cours. Il est important de bien&#10;comprendre ce modèle avant de débuter si vous n&amp;rsquo;êtes pas familier avec les cours&#10;en ligne de ce type.&lt;/p&gt;&#10;&lt;h2 id="le-modèle-de-luniversité-téluq"&gt;&#10; Le modèle de l’Université TÉLUQ&#10; &lt;a class="anchor" href="#le-mod%c3%a8le-de-luniversit%c3%a9-t%c3%a9luq"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;figure&gt;&lt;img src="https://lemire.github.io/inf1220-nexam/comics/modelteluq.jpg"&#10;&#9;&#9;&#9;alt="Le modèle de l&amp;#39;Université TÉLUQ"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;p&gt;Plusieurs étudiants inscrits au cours INF 1220 en sont en leur premier cours à l’Université TÉLUQ. À l’Université TÉLUQ, nous offrons un enseignement personnalisé : vous débutez et terminez le cours à une date qui vous convient, vous faites les travaux au sein du cours à votre rythme. Le cours est conçu pour être autoportant : un travail pédagogique substantiel a été fait afin que l’étudiant autonome puisse compléter le cours par lui-même, sans aide. Un professeur ou une personne tutrice est là pour répondre à vos questions lorsque vous êtes devant une impasse après avoir fait les lectures et vos recherches, à tous les moments de votre parcours. Ce modèle diffère de celui des Universités traditionnelles où il y a de rencontres de groupes hebdomadaires et où tous les étudiants cheminent en même temps. Les deux modèles ont des forces et des faiblesses. L’Université TÉLUQ offre plus de flexibilité, mais son modèle exige plus d’autonomie intellectuelle de la part des étudiants.&lt;/p&gt;</description></item><item><title>Robot conversationnel et intelligence artificielle</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/robot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/robot/</guid><description>&lt;h1 id="robot-conversationnel-et-intelligence-artificielle"&gt;&#10; Robot conversationnel et intelligence artificielle&#10; &lt;a class="anchor" href="#robot-conversationnel-et-intelligence-artificielle"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;L&amp;rsquo;intelligence artificielle (IA) transforme profondément le domaine de la programmation, redéfinissant la manière dont les développeurs conçoivent, écrivent et maintiennent le code. Les outils basés sur l&amp;rsquo;IA, comme les assistants de codage (par exemple, GitHub Copilot), permettent d&amp;rsquo;automatiser des tâches répétitives, telles que la génération de code boilerplate ou la complétion automatique de fonctions. Ces outils s&amp;rsquo;appuient sur des modèles de langage avancés, entraînés sur d&amp;rsquo;immenses bases de données de code, pour proposer des suggestions contextuelles précises. Cette assistance accélère le processus de développement, permettant aux programmeurs de se concentrer sur des aspects plus créatifs et complexes de leurs projets, tout en réduisant les erreurs humaines.&lt;/p&gt;</description></item><item><title>Autoévaluation</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/autoevaluation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/autoevaluation/</guid><description>&lt;h1 id="autoévaluation"&gt;&#10; Autoévaluation&#10; &lt;a class="anchor" href="#auto%c3%a9valuation"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Avant de débuter le cours, il est important de faire le point sur votre préparation.&#10;Je vous invite donc à faire une autoévaluation.&lt;/p&gt;&#10;&lt;h2 id="connaissances-technologiques"&gt;&#10; Connaissances technologiques&#10; &lt;a class="anchor" href="#connaissances-technologiques"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;Le cours ne nécessite pas une connaissance approfondie du fonctionnement des ordinateurs, mais il est utile d&amp;rsquo;avoir&#10;une certaine connaissance de base. Vous devriez savoir que les ordinateurs disposent d&amp;rsquo;un processeur, de mémoire, de&#10;disques, etc. et qu&amp;rsquo;ils fonctionnent à l&amp;rsquo;aide d&amp;rsquo;un système d&amp;rsquo;exploitation. Si vous ne vous êtes jamais intéressés à&#10;ces concepts de base, il peut être utile que vous preniez un peu de votre temps pour faire des recherches sur ces&#10;questions. Il peut être difficile de suivre ce cours si vous ne savez vraiment pas ce qu&amp;rsquo;est un processeur ou de la&#10;mémoire informatique.&lt;/p&gt;</description></item><item><title>Java pas à pas</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/pasapas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/pasapas/</guid><description>&lt;h1 id="java-pas-à-pas"&gt;&#10; Java pas à pas&#10; &lt;a class="anchor" href="#java-pas-%c3%a0-pas"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Vous devez vous procurer le manuel Java pas à pas. Vous avez accès &lt;a href="https://raw.githubusercontent.com/RobertGodin/JavaPasAPas/master/JavaPasAPas.pdf"&gt;au document PDF&lt;/a&gt;. Si vous devez lire un document PDF, nous vous encourageons à charger le fichier sur votre machine et à l&amp;rsquo;ouvrir au sein d&amp;rsquo;un outil dédié (par ex. Adobe Acrobat). Il n&amp;rsquo;est pas très pratique de lire un document PDF au sein d&amp;rsquo;un navigateur web.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.amazon.ca/Java-pas-Introduction-programmation-langage/dp/B0CR7RW87Y/"&gt;Vous pouvez aussi acheter la version papier du manuel Java pas à pas chez Amazon &lt;/a&gt; pour une somme modeste :&lt;/p&gt;</description></item><item><title>Les ordinateurs et leurs langages</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/ordinateurs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/ordinateurs/</guid><description>&lt;h1 id="court-historique-des-langages-de-programmation"&gt;&#10; Court historique des langages de programmation&#10; &lt;a class="anchor" href="#court-historique-des-langages-de-programmation"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;figure&gt;&lt;img src="https://lemire.github.io/inf1220-nexam/comics/langages.jpg"&#10;&#9;&#9;&#9;alt="Les langages de programmation"&gt;&#10;&lt;/figure&gt;&#10;&#10;&lt;p&gt;L’idée de programmer des machines remonte au 19e siècle, époque marquée par l’émergence des premières machines de calcul et d’automatisation. Dès 1801, les métiers à tisser Jacquard utilisaient des cartes perforées pour programmer des motifs textiles, préfigurant les concepts de codage. Cependant, c’est au milieu du 19e siècle qu’un jalon historique est posé avec les travaux d’Ada Lovelace (1815-1852) sur la machine analytique de Charles Babbage. Considérée comme la première programmeuse, elle rédigea des notes détaillées incluant un algorithme pour calculer les nombres de Bernoulli, démontrant qu’une machine pouvait exécuter des instructions complexes. Le langage Ada, créé dans les années 1980, rend hommage à cette contribution pionnière.&lt;/p&gt;</description></item><item><title>Les algorithmes</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/algorithmes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/algorithmes/</guid><description>&lt;h1 id="les-algorithmes"&gt;&#10; Les algorithmes&#10; &lt;a class="anchor" href="#les-algorithmes"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;The etymology of program is pro ‘before’ + graphein ‘write’. I think of programming as making a plan that will be executed in the future, something that every human does from time to time. The hard part is that a computer has to execute the plan, and computers are incredibly stupid. Dealing with such stupidity requires more patience and determination than many people have.&lt;/em&gt; (Peter Turney)&lt;/p&gt;</description></item><item><title>Les algorithmes : conception et syntaxe</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/algorithmes2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/algorithmes2/</guid><description>&lt;h1 id="les-algorithmes--conception-et-syntaxe"&gt;&#10; Les algorithmes : conception et syntaxe&#10; &lt;a class="anchor" href="#les-algorithmes--conception-et-syntaxe"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Un algorithme est une méthode structurée pour résoudre un problème de manière systématique et efficace. Comparable à une recette culinaire, il fournit des instructions précises, exécutables pas à pas, pour transformer des données d’entrée en résultats attendus. Comprendre la conception et la syntaxe des algorithmes est essentiel pour tout programmeur souhaitant traduire une solution abstraite en code fonctionnel, quel que soit le langage utilisé.&lt;/p&gt;</description></item><item><title>Les algorithmes: les structures de contrôle</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/algorithmes3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/algorithmes3/</guid><description>&lt;h1 id="les-structures-de-contrôle"&gt;&#10; Les structures de contrôle&#10; &lt;a class="anchor" href="#les-structures-de-contr%c3%b4le"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Nous avons déjà présenté les notions d&amp;rsquo;embranchement et de boucle. C&amp;rsquo;est ce que nous appelons des structures de contrôle. Il est essentiel&#10;d&amp;rsquo;en comprendre la fonction.&lt;/p&gt;&#10;&lt;p&gt;On peut concevoir un algorithme qui ne comprend qu&amp;rsquo;une liste d&amp;rsquo;opérations simples (addition, soustraction, etc.). Cependant sans structures de contrôle, nous aurons du mal à gérer les données dynamiques, par exemple un tableau qui peut contenir un nombre variable d&amp;rsquo;éléments, et on risque de devoir répéter beaucoup d&amp;rsquo;opérations.&#10;Les structures de contrôle permettent à l&amp;rsquo;algorithme de faire des choix de traitement en fonction de conditions. Une structure de contrôle correspond à l&amp;rsquo;action de tester des variables de contrôle et selon les résultats d&amp;rsquo;effectuer des opérations ou non.&lt;/p&gt;</description></item><item><title>Les problèmes difficiles</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/difficile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/difficile/</guid><description>&lt;h1 id="les-problèmes-difficiles"&gt;&#10; Les problèmes difficiles&#10; &lt;a class="anchor" href="#les-probl%c3%a8mes-difficiles"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;blockquote class="book-hint info"&gt;&#10;&lt;p&gt;Dans ce cours, vous n&amp;rsquo;avez pas à maîtriser la notion de problème difficile, mais vous devriez être familier avec le concept.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Dans un cours d’introduction à la programmation, la plupart des exercices se concentrent sur des problèmes dont les algorithmes sont relativement simples à concevoir, surtout si vous maîtrisez les bases de la programmation et des mathématiques. Ces problèmes, comme calculer une moyenne ou trier une liste, demandent souvent une compréhension des structures de contrôle (conditions et boucles) et une application directe de concepts logiques. Cependant, dans des contextes plus avancés, certains problèmes se révèlent bien plus complexes, non pas à cause de la programmation elle-même, mais en raison de la difficulté à trouver un algorithme efficace. Ces défis, qualifiés de « problèmes difficiles », nécessitent des approches créatives et parfois des compromis, car leurs solutions idéales peuvent être hors de portée avec les ressources informatiques actuelles.&lt;/p&gt;</description></item><item><title>Complexité algorithmique</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/complex/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/complex/</guid><description>&lt;h1 id="complexité-algorithmique"&gt;&#10; Complexité algorithmique&#10; &lt;a class="anchor" href="#complexit%c3%a9-algorithmique"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;La plupart des problèmes ne sont pas fondamentalement difficiles, mais toutes les solutions&#10;ne sont pas également efficaces. La complexité algorithmique fournit une mesure de cette efficacité.&lt;/p&gt;&#10;&lt;p&gt;La complexité algorithmique mesure le temps ou la mémoire qu’un algorithme nécessite en fonction de la taille de l’entrée (souvent notée \( n \)). Pour comparer les algorithmes, on utilise la notation grand-O (ou O-grande), qui donne un ordre de grandeur du nombre d’opérations à effectuer lorsque la taille des données augmente.&lt;/p&gt;</description></item><item><title>Les erreurs communes</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/erreurs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/erreurs/</guid><description>&lt;h1 id="erreurs-communes"&gt;&#10; Erreurs communes&#10; &lt;a class="anchor" href="#erreurs-communes"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Rédiger du pseudocode n&amp;rsquo;a rien de sorcier, mais plusieurs étudiants font des erreurs. Voici quelques erreurs communes.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Certains étudiants rédigent du pseudocode qui a l&amp;rsquo;air formel et correct, mais qui est en fait ambigu et inutilisable. Prenons cet exemple: &lt;code&gt; SI j'ai mal au dos ALORS je prends des aspirines OU SI j'ai faim ALORS je mange&lt;/code&gt;. Bien sûr, je n&amp;rsquo;ai utilisé que des expressions logiques. Des SI, des ALORS des OU. Mais qu&amp;rsquo;est-ce que ça signifie ? Par exemple, est-ce que je peux à la fois manger et prendre des aspirines dans ce scénario ? La réponse est subjective. Votre pseudocode doit être exécutable sans interprétation. Un pseudocode n&amp;rsquo;est pas un texte à interprétation subjective. Vous ne pouvez pas faire semblant d&amp;rsquo;écrire du pseudocode en utilisant simplement les termes qu&amp;rsquo;on trouve fréquemment au sein des pseudocodes. Ce n&amp;rsquo;est pas une question de syntaxe. On peut parfaitement écrire du pseudocode sans jamais utiliser SI, TANT QUE, etc. Plusieurs étudiants obsèdent sur la syntaxe, croyant à tort que si on leur donne les bons termes, la bonne grammaire, ils trouveront comment comprendre ce qu&amp;rsquo;est un pseudocode. Or, c&amp;rsquo;est justement le contraire de la leçon ici: nous voulons que vous compreniez que la syntaxe exacte est secondaire dans la pensée algorithmique. On peut être imprécis et incohérent en utilisant une syntaxe formelle, et on peut être précis et cohérent en utilisant du français usuel. Ce n&amp;rsquo;est pas parce que vous utilisez des expressions qui vous semblent précises que vous l&amp;rsquo;êtes. Vous devez avoir une idée précise en tête et vous devez l&amp;rsquo;exprimer avec précision.&lt;/p&gt;</description></item><item><title>Présentation du pseudocode</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/syntaxe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/syntaxe/</guid><description>&lt;h1 id="guide-pour-présenter-du-pseudocode"&gt;&#10; Guide pour présenter du pseudocode&#10; &lt;a class="anchor" href="#guide-pour-pr%c3%a9senter-du-pseudocode"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;Adoptez un style simple. Testez la lisibilité de votre pseudocode en le lisant à haute voix.&lt;/p&gt;&#10;&lt;p&gt;Voici un exemple de pseudocode difficile à comprendre.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;entrée : un nombre&#10;si mon nombre nombre &amp;gt; 0 alors &amp;#34;positif&amp;#34;&#10; autrement&#10; afficher &amp;#34;négatif ou zéro&amp;#34;&#10;fin du code&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Voici un bon exemple.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;entrée : nombre&#10;si nombre &amp;gt; 0 alors&#10; afficher &amp;#34;positif&amp;#34;&#10;sinon&#10; afficher &amp;#34;négatif ou zéro&amp;#34;&#10;fin si&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="indentation"&gt;&#10; Indentation&#10; &lt;a class="anchor" href="#indentation"&gt;#&lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;L&amp;rsquo;indentation est utile pour montrer la structure hiérarchique (boucles, conditions, blocs). Utilisez systématiquement 2 à 4 espaces par niveau, vous pouvez aussi utiliser des tabulations. Ne mélangez pas espaces et tabulations.&#10;Indentez chaque bloc intérieur d&amp;rsquo;un niveau supplémentaire. Alignez les instructions de fin de bloc (comme &amp;ldquo;fin si&amp;rdquo; ou &amp;ldquo;fin pour&amp;rdquo;) avec le début du bloc. Conservez une indentation cohérente dans tout le document.&lt;/p&gt;</description></item><item><title>Exercices sur les algorithmes et les ordinateurs</title><link>https://lemire.github.io/inf1220-nexam/docs/modules/module1/exercices/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lemire.github.io/inf1220-nexam/docs/modules/module1/exercices/</guid><description>&lt;h1 id="exercices-sur-les-algorithmes-et-les-ordinateurs"&gt;&#10; Exercices sur les algorithmes et les ordinateurs&#10; &lt;a class="anchor" href="#exercices-sur-les-algorithmes-et-les-ordinateurs"&gt;#&lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;La notion d&amp;rsquo;algorithme a été abordée implicitement dès les premiers cours de mathématiques, par exemple avec l&amp;rsquo;algorithme de la division longue. Ces exercices visent à vous faire décrire formellement un algorithme. La principale difficulté pour la plupart des étudiants réside dans la rigueur et la précision requises. Au-delà d’un certain point, il n’existe pas de lectures supplémentaires : la pratique est essentielle.&lt;/p&gt;</description></item></channel></rss>