Quelques raccourcis :

420-201-RE – Introduction à la programmation

Ceci est un petit site de support pour le cours 420-201-RE – Introduction à la programmation. Notez toutefois que la référence principale pour ce cours est http://vechelard.clg.qc.ca/ que je vous invite bien sûr à visiter.

Vous trouverez aussi des liens sur divers langages (dont C#, notre outil de prédilection dans ce cours) un peu partout dans http://h-deb.clg.qc.ca/. Portez une attention particulière à ../../../Sujets/Divers--cdiese/index.html.

Les diverses sections de cette page (en fonction desquelles vous trouverez quelques liens dans l'encadré à droite) vous mèneront elles-aussi sur des pistes qui vous permettront d'explorer un peu plus par vous-mêmes, de valider vos acquis et d'enrichir votre apprentissage.

Cliquez sur cette cible pour le plan de cours, sous forme électronique

Pratiques de correction

Je corrige les programmes en appliquant des codes de correction. Vous trouverez ici la liste des codes les plus fréquents.

Ma stratégie de correction en tant que telle (pour le code, à tout le moins) est résumée ici.

Cliquez sur cette cible pour un résumé des principales règles de programmatique en vigueur dans ce cours

Cliquez sur cette cible pour les normes appliquées dans ce cours, en ce qui a trait au pseudocode

Détail des séances en classe

Date Séance Détails

22 août

T00

Au menu :

  • Présentation du cours et du plan de cours
  • Introduction à la conception logicielle (chapitre 01 des notes de cours)
  • Premiers pas avec les séquences et le pseudocode (et même une touche de code C#, pour le plaisir)
  • Quelques éléments de culture, incluant une très brève mention d'Alan Turing, un personnage important pour nous, et diverses considérations historiques (j'ai glissé un mot sur Kurt Gödel, sur David Hilbert)
  • Mention de noms et de préfixes utilisés pour nommer des quantités, particulièrement en informatique (bit, byte, octet, de même que les préfixes kilo (considéré par certains comme valant 1000, et par la plupart des informaticien(ne)s comme valant 1024), méga, giga et téra)

24 août

L00

Au menu :

  • Suites de nos premiers contacts avec le pseudocode
  • Introduction plus formelle du type float, pour représenter des nombres à virgule flottante
  • Première mention formelle du type int, pour représenter des nombres entiers
  • Retour sur les règles de nomenclature applicables dans le cours :
    • comment exprimer un nom de variable
    • comment exprimer un nom de constante
    • pourquoi limiter les noms en majuscules aux constantes
    • comment séparer des mots dans un nom de variable?
    • comment séparer des mots dans un nom de constante?

Exercices en classe :

  • Exercice sur la conversion de °F à °C (pseudocode, C#)
  • Exercice sur la permutation de valeurs, avec plusieurs solutions distinctes, et brève discussion des mérites de chacune (pseudocode, trace, jeux d'essai)

À faire pour T01 :

  • Laboratoire 00 : remettre un document
  • Laboratoire 00(bis) : culture générale

29 août

T01

Au menu :

  • Retour sur le laboratoire 00
  • Retour sur le laboratoire 00(bis)
  • Algorithmes et codification (chapitre 02 des notes de cours)

À faire pour L01 :

  • Laboratoire 01 : conversion d'unités de mesure (analyse, pseudocode, jeux d'essai)

31 août

L01

Au menu :

  • Discussions sur le laboratoire 01
  • Préciser ce qui constitue ou non un intrant (ou : que signifie la primitive Lire du pseudocode?)
  • Retour sur les règles de nomenclature applicables dans le cours :
    • comment exprimer un nom de variable
    • comment exprimer un nom de constante
    • pourquoi limiter les noms en majuscules aux constantes
    • comment séparer des mots dans un nom de variable?
    • comment séparer des mots dans un nom de constante?
  • Retour sur le fait que deux noms différents dénotent deux objets distincts
  • Nombres à virgule flottante : utiliser le '.' ou la ','?
  • Types string, int, float et double
  • Suites de la section Algorithmes et codification (chapitre 02 des notes de cours)

À remettre :

  • Laboratoire 01 : conversion d'unités de mesure (analyse, pseudocode, jeux d'essai)

À faire pour L02 :

  • Laboratoire 02 : Pavage sans extra inc. (analyse, pseudocode, code C#, jeux d'essai)

5 septembre

T02

Au menu :

  • Retour sur le laboratoire 01 :
    • rappel des règles sur les identifiants (format azAZ_[azAZ09_]+, donc pas de '(', de '/', de ')', d'espaces, etc.)
    • rappel des règles sur les noms de variables (débute par une minuscule, début des autres mots par une majuscule, succinct mais significatif)
    • rappel des règles sur les noms de constantes (en majuscules, mots séparés par un '_')
    • rappel des règles quant au rapport :
      • cohérence (un nom a le même sens partout dans le rapport)
      • jeux d'essai (nom de chaque intrant, nom de chaque extrant, valeurs numériques avec virgules, identifiants respectant les règles habituelles)
      • rôle des sections (intrants, extrants, traitement, autres informations, pseudocode)
    • rappel de programmatique générale :
      • ça ne sert à rien de remplacer 1000/3600 par 2,778 dans le programme. Laissez l'ordinateur faire ce à quoi il excelle
      • ça ne sert à rien d'écrire vMs plutôt que vitesseMètreSeconde
      • une constante comme C est acceptable dans une équation mathématique, mais pas dans un programme
      • une constante comme CONVERSION ne nous informe pas suffisamment sur son rôle dans le programme pour être utile
      • pour un ordinateur, remplacer 1000/3600 par 5/18 n'apporte rien sinon une perte de compréhension. C'est le même calcul
  • Bref regard sur le transtypage, ou comment forcer le compilateur transformer une valeur d'un type vers un autre type – nous n'avons pas exploré formellement la chose, cela dit; nous l'avons mentionné et utilisé, sans plus, mais nous y reviendrons
  • Expressions arithmétiques, séquences et fonctions (chapitre 03 des notes de cours)

À faire pour L02 :

  • Laboratoire 02 : Pavage sans extra inc. (analyse, pseudocode, code C#, jeux d'essai)

7 septembre

L02

Au menu :

  • Suites de la section Expressions arithmétiques, séquences et fonctions (chapitre 03 des notes de cours)
  • Survol des fonctions mathématiques de C#
    • aujourd'hui, nous limiterons notre démarche à l'utilisation de fonctions; évidemment, dans quelques séances, nous rédigerons nos propres fonctions
  • Services des types de C#
    • méthode Parse()
    • méthode ToString()
    • certaines constantes telles que MinValue, MaxValue et (pour les nombres à virgule flottante) Epsilon
  • Survol de la structure interne des nombres entiers
  • Débordements et leur effet (en utilisant un bloc checked... ne faites pas ça à la maison!)
  • Quelques exercices :
    • lire un nombre et en afficher la valeur absolue (code C#, avec recours à une fonction mathématique du langage)
    • exercices de programmation tirés des notes de cours
  • Présentation du laboratoire 03 : APOO volet plongeon (analyse, pseudocode, code C#, jeux d'essai)

À remettre :

Laboratoire 02 : Pavage sans extra inc. (analyse, pseudocode, code C#, jeux d'essai)

À faire :

  • Travail sur le laboratoire 03 : APOO volet plongeon (analyse, pseudocode, code C#, jeux d'essai)

12 septembre

T03

Au menu :

Ce qui suit est important, mais n'est pas matière à examen pour le Minitest #1 qui se tiendra à la séance L03.

  • Introduction à l'approche que l'on nomme le développement graduel (approche Top-Down), chapitre 04 des notes de cours
  • Fonctions en pseudocode
    • paramètres passés par valeur
    • variables locales
    • retour
  • Fonctions en C#
    • paramètres passés par valeur
    • variables locales
    • retour
  • Diagramme hiérarchique

À faire :

  • Travail sur le laboratoire 03 : APOO volet plongeon (analyse, pseudocode, code C#, jeux d'essai)

14 septembre

L03

Au menu :

  • Minitest #1
  • Présentation du laboratoire 04 : APOO volet glisse (analyse, pseudocode, code C#, jeux d'essai)

À remettre :

  • Laboratoire 03 : APOO volet plongeon (analyse, pseudocode, code C#, jeux d'essai)

19 septembre

T04

Au menu :

  • Retour sur le minitest #1
  • Arrondir un nombre à virgule flottante avec C#
  • Retour sur le laboratoire 03
  • Petite activité avec le débogueur
  • Premier contact sommaire avec les alternatives, chapitre 05 des notes de cours
  • Structures alternatives (bases)
  • Structures alternatives plus complexes :
  • Fonctions prédicats

À faire :

  • Travail sur le laboratoire 04 : APOO volet glisse (analyse, pseudocode, code C#, jeux d'essai)

21 septembre

L04

Au menu :

  • Suite des alternatives, chapitre 05 des notes de cours
  • Problème du calcul de la monnaie
  • Présentation du laboratoire 05 : calcul du salaire avec déductions conditionnelles (analyse, pseudocode, code C#, jeux d'essai)

À remettre :

  • Laboratoire 04 : APOO volet glisse (analyse, pseudocode, code C#, jeux d'essai)

À faire :

  • Travail sur le laboratoire 05 : calcul du salaire avec déductions conditionnelles (analyse, pseudocode, code C#, jeux d'essai)

26 septembre

T05

Pour ma part, je serai à CppCon 2017. Vous pourrez me suivre (à travers ../../../Sujets/Orthogonal/cppcon2017.html) si vous le souhaitez.

Je serai remplacé :

Je les remercie sincèrement tous les deux. Vous serez entre bonnes mains.

28 septembre

L05

Pour ma part, je serai à CppCon 2017. Vous pourrez me suivre (à travers ../../../Sujets/Orthogonal/cppcon2017.html) si vous le souhaitez.

Je serai remplacé :

Je les remercie sincèrement tous les deux. Vous serez entre bonnes mains.

3 octobre

T06

Au menu :

  • Introduction à la logique et aux répétitives, chapitres 06 et 07 des notes de cours
  • Un peu de logique
  • Introduction aux répétitives :
    • bases
    • variante cumulative
    • imbrication d'alternatives
    • survol d'une variante de la répétitive classique

Étant donné l'incident de la semaine dernière, qui a privé l'un des deux groupes de son enseignant remplaçant, nous ajusterons l'horaire comme suit :

  • La remise du laboratoire 06 sera déplacée à la séance L07 (12 octobre)
  • Le laboratoire 07 sera tout de même présenté à la séance L06, et sera à remettre aussi lors de la séance L07
  • Vous n'avez pas de cours à l'horaire le 10 octobre, ce qui vous dégagera un peu de temps pour rattraper le tout

Je suis sincèrement désolé de ces perturbations

5 octobre

L06

Au menu :

  • Présentation du laboratoire 07 : contraventions

À faire :

  • Travail sur le laboratoire 06 : fonctions mathématiques (code C#)
  • Travail sur le laboratoire 07 : contraventions (analyse, pseudocode, code C#, jeux d'essai)

10 octobre

s/o

Attention : mardi avec cours selon l'horaire du lundi

12 octobre

L07

Au menu :

  • Introduction aux répétitive (suite), chapitres 06 et 07 des notes de cours :
    • bases
    • variante cumulative
    • imbrication d'alternatives
    • survol d'une variante de la répétitive classique
  • Présentation du laboratoire 08 : calcul du cosinus

À remettre :

  • Laboratoire 06 : fonctions mathématiques (code C#)
  • Laboratoire 07 : contraventions (analyse, pseudocode, code C#, jeux d'essai)

17 octobre

T07

Au menu :

  • Retour sur le laboratoire 06 :
    • le % de C# et ses particularités
    • police non-proportionnelle pour le code
    • un seul point de sortie par fonction (à moins d'avoir une bonne raison... et vous n'en avez pas dans ce travail!)
    • utilité des constantes symboliques... et quand les éviter
  • Introduction à la modularisation, chapitre 08 des notes de cours :
    • des rectangles?
    • un sapin!
  • Petit bonbon syntaxique : ++cpt et cpt++

À faire :

  • Travail sur le laboratoire 08 : calcul du cosinus (code C#)

19 octobre

L08

Au menu :

  • Minitest #2
  • Présentation des bases (très naïves) de la POO

À remettre :

  • Laboratoire 08 : calcul du cosinus (code C#)

24 octobre

T08

Au menu :

  • Retour sur le minitest #2
  • Retour sur le laboratoire 08
  • Exercices formatifs sur les bases (très naïves) de la POO

26 octobre

L09

Au menu :

  • Fonctions, intrants et extrants ()
    • paramètres ref
    • paramètres out
  • Présentation du laboratoire 09 : devinette (code C#)

À faire :

  • Travail sur le laboratoire 09 : devinette (code C#)

31 octobre

s/o

Jour de mise à niveau (cours suspendus)

3 novembre

s/o

Jour de mise à niveau (cours suspendus)

7 novembre

T09

Au menu :

  • Tableaux unidimensionnels

À faire :

  • Travail sur le laboratoire 09 : devinette (code C#)

9 novembre

L10

Au menu :

  • Retour sur les tableaux 1D
  • Présentation du laboratoire 10 : loterie (pseudocode, code C#)

À remettre :

  • Laboratoire 09 : devinette (code C#)

14 novembre

T10

Au menu :

  • Introduction brève aux énumérations
  • Activité intégratrice impliquant tableaux unidimensionnels, classes et énumérations
  • Introduction aux tableaux 2D (rectangulaires)

À faire :

  • Travail sur le laboratoire 10 : loterie (pseudocode, code C#)

16 novembre

L11

Au menu :

À remettre :

21 novembre

T11

Au menu :

  • Retour sur le minitest #3
  • Présentation de l'activité synthèse

23 novembre

L12

Au menu :

  • Travail sur l'activité synthèse

28 novembre

T12

Au menu :

  • Travail sur l'activité synthèse

30 novembre

L13

Au menu :

  • Travail sur l'activité synthèse

5 décembre

T13

Au menu :

  • Travail sur l'activité synthèse

7 décembre

s/o

Journée d'examen de français, formation générale. Cours suspendus

12 décembre

T14

Au menu :

  • Travail sur l'activité synthèse

14 décembre

L14

À remettre :

  • L'A.S. de la session A2017

Chic examen final

Petits coups de pouces

Vous trouverez ici quelques documents, la plupart petits, qui peuvent vous donner un petit coup de pouce occasionnel.

Comment accéder à du code .NET à partir d'un client C++ natif.

Vous trouverez aussi des exemples de code C# dans la section Divers – C# du site, mais notez que je n'ai pas nécessairement harmonisé ces exemples (écrits pour des cours plus avancés, sous forme de survols) aux standards de programmation appliqués dans le présent cours. À lire avec prudence et discrimination, donc.

Où placer vos projets?

Lorsque vous travaillerez avec Visual Studio au laboratoire, vous devrez choisir un emplacement pour chaque projet. J'ai demandé à notre chic équipe technique à quel endroit vous devriez placer vos projets; voici ce que l'on m'a répondu :

« Pour la sauvegarde des projets, c'est préférable de sauvegarder quelques part dans C:\utilisateurs\"nom d'utilisateur".

Ils peuvent mettre un copie sur le réseau mais ils doivent travailler localement.

Il ne faut pas oublier qu'ils n'ont que 400 Mo d'espace réseau, et que ce qu'ils déposent dans Remise compte dans leur quota. »

Prenez note qu'en travaillant sur C:\utilisateurs\"nom d'utilisateur", votre projet se trouvera sur un ordinateur spécifique, ce qui signifie que vous n'y aurez pas accès si vous travaillez ultérieurement sur un autre ordiateur du laboratoire. Pour cette raison, assurez-vous de faire des copies que vous pourrez transporter avec vous (en passant par une puce USB ou en vous envoyant le code source de vos programmes par courriel, à titre d'exemple).

Solutionnaires

Quelques solutionnaires suivent. Référez-vous aux règles programmatiques pour plus de détails sur les normes de programmation appliquées dans ce cours.

Travail

Conversion de vitesses

Laboratoire 05 – calcul du salaire avec déductions conditionnelles

Laboratoire 07 – contraventions

À venir

En espérant que ça vous aide à organiser vos idées!

Résultats des travaux pratiques

Ce qui suit collige les résultats des divers travaux pratiques réalisés au cours de la session. La moyenne est exprimée en pourcentage, peu importe l'échelle d'origine pour la correction des travaux en question. Les absent(e)s sont considéré(e)s avoir eu zéro. La valeur de exprimée dans le tableau reflète toutefois le nombre de participant(e)s au travail pratique; cette valeur devrait normalement être équivalente au nombre d'étudiant(e)s inscrit(e)s au cours.

Travail Remise Groupe 2 Groupe 3

Labo 00 (bis)

T01

Labo 01

L01

Labo 02 (analyse, pseudocode)

L02

Labo 02 (C#)

L02

Labo 03 (analyse, pseudocode)

L03

Labo 03 (C#)

L03

Labo 04 (analyse, pseudocode)

L04

Labo 04 (C#)

L04

Labo 05 (analyse, pseudocode, jeux d'essai, code C#)

L05

Labo 06 (code C#)

L07

Labo 07 (analyse, pseudocode, jeux d'essai)

L07

Labo 07 (code C#)

L07

Labo 08 (code C#)

L08

Labo 09 (code C#)

L10

Labo 10 (code C#)

L11

Résultats des minitests et des examens

Les résultats des minitests et des examens suivent.

Contrôle Séance Groupe 2 Groupe 3

Minitest #1

L03

Minitest #2

L08

Minitest #3

L11

Examen final

L14


Valid XHTML 1.0 Transitional

CSS Valide !