Topic Name Description
URL Outil Discourse pour les Questions/Réponses (pour C++ et pour la théorie)

Lire le tutoriel ci-dessous pour vous connecter avec le login gaspar. Vocabulaire: une question est un "Topic" ; elle contient un sujet court et informatif, elle appartient à une des "catégorie" prédéfinies (sélectionner dans menu) et on peut y ajouter des "tags" eux aussi prédéfinis pour faciliter les recherches ultérieures.

File Tutoriel Discourse [20.09.2021]
URL MOOC de Coursera: "Initiation à la Programmation en C++"
S'inscrire pour pouvoir suivre ce MOOC dès la seconde semaine du semestre ; l'heure hebdomadaire en auditoire sera effectuée en classe inversée, ce qui requiert d'avoir suivi la leçon et les quizzs du MOOC avant l'heure de la classe inversée.
File Support de cours: MOOC / BOOC "Initiation à la Programmation en C++" / "C++ par la pratique"
File Conventions de Programmation en C++ [Octobre 2020]
File C++ Bug checklist sem1 [29.09.2018]

2 minor corrections / adding -std=C++11

File Memento: principales commandes Linux
File Graphe des relations entre les videos sur la représentation de l'information
File FAQ: myNAS, VM, Clavier, VPN, backup, etc... [16.09.2021]

09.2021: plus de VM locale


URL Table des priorités des opérateurs (et associativité)
Topic 1 File Présentation du cours, C++, MOOC, VM, Projet [22.09.2021]

avec lien zoom pour exo online et dates hors-RLC

URL video sur switchTube [2021-22]

mise à jour de la video le 24/9 à 14h

File linux.pdf utile pour l'exercice5 de la Série1 [22.09.2021]
File Série1: Se connecter, commandes LINUX , Q&A avec Discourse [17.09.21]
File Série 1: corrigé [22.09.2022]
Topic 2 File Classe inversée: rappels, complément "mémoire centrale" et étude de cas [22.09.2021]
version complète
URL video switchTube [2021_22]
File Code vu en classe inversée
Dans la version conv0 il y a une "erreur_sémantique" ce qui veut dire que le compilateur produit un exécutable mais celui-ci ne donne pas les résultats attendus. En effet le compilateur a correctement traduit la sous-expression 5/9 par une division entière parce que les deux opérandes sont des constantes littérale entières. Or pour ce problème nous avons besoin de la division des nombres à virgule. Elle est obtenue dans l'autre version conv.cc en indiquant qu'un des opérandes est de type nombre à virgule flottante. Ce type étant plus fort que le type entier, le second opérande entier est automatiquement converti en type double et l'opération donne un résultat de type double. Cette fois le résultat est correct.
File fiche résumé 01 : variable
File fiche résumé 02 : opérateurs
File Série 2: lien entre moodle et le MOOC (éditeur geany) [25.09.2020]
modif GEANY_1 et GEANY_2: sauvegarder en .cc pour pouvoir configurer les commandes
File Principales commandes et raccourcis de geany
File MOOC tutoriel sem1
File MOOC serie sem1
File MOOC corrigé série sem1
File MOOC compléments sem1
Topic 3 File Classe inversée : instruction conditionnelle / avec questions Speakup [2021-22]
URL video sur switchTube [2021_22]
File code des exemples vu en classe inversée
  • conversion char vers int
  • conversion 0.0 vers booléen
  • lecture et test : type de variable et type de constante doivent être les mêmes
File Série 3 : avec complément sur l'estimation de la tolérance tau

titre plus précis

File MOOC tutoriel sem2
File MOOC série sem2
File MOOC corrigé sem2
File MOOC série supplément sem2
File MOOC corrigé supplément sem2
File MOOC complément sem2
Topic 4 URL video switchTube sur switch etc... [2021-22]
File Classe inversée : les boucles (avec questions SpeakUp) [2021-22]
URL video switchTube [2021-22]
File fiche résumé 03: structures de contrôle
File Série 4 : boucles

titre plus précis

File code vu en classe inversée
File série4 : solution de la question additionnelle "suite et série"

la version 2019-20 corrige la valeur de e obtenue avec double ; il manquait un 5 dans les chiffres non significatifs

File MOOC série sem3
File MOOC corrigé sem3
File MOOC série supplément sem3
File MOOC corrigé supplément sem3
Topic 5 URL video switchTube: exemple sur la portée des variables [2021-22]
File classe inversée : PREMIERE PARTIE sur les fonctions
URL video switchTube : Fonctions 1iere partie [2021-22]
File code utilisé en classe inversée
File Fiche résumé 04: Fonction
File série 5 [2021-22]
File MOOC tutoriel sem4: seulement 4.1 (moyenne)
File MOOC série sem4 ; seulement exercices 11,12,13
File MOOC corrigé sem4
File MOOC série supplément sem4: seulement "fonction simple" et "sapin"
File MOOC corrigé supplément sem4
Topic 6 File Classe inversée : seconde partie sur les fonctions (dont récursivité)

Question1: la bonne réponse est l'affichage du caractère 'v' car il y a une conversion automatique du type de l'expression qui suit l'instruction return dans le type de la fonction qui est char.

Question2: la bonne réponse est l'erreur de compilation causée par l'appel f2(w) car c'est un passage par référence et on lui passe une référence du mauvais type (ref sur double au lieu de ref sur int).

le code des deux programmes est fourni dans le fichier archive ci-dessous.

URL video switchTube [2021-22]
File code vu en classe inversée
File Fiche résumé 04: Fonction
File Série 6 : évaluation de performance et redirection

File Série 6: corrigé

File MOOC tutoriel sem4: 2ième partie (somme récursive)
File MOOC série sem4 ; seulement exercice 14 (Fibonacci)
File MOOC série supplément sem4: se concentrer sur "recherche dichotomique"
Topic 7 File Liste des salles d'examen ICC du 5 novembre
File Donnée du Test C++ du 5 novembre 2021
File Solution du Test C++ du 5 novembre 2021
File notes ICC : C++ / théorie / Total ajusté sur 44pts / note virtuelle sur 6pts

C'est la note "TOTAL adjusted" qui sera additionnée aux autres notes du cours ICC pour le calcul de la moyenne finale. Ce qui est indiqué dans la colonne de droite (Adjusted virtual) indique à quoi correspondrait votre note actuelle si elle était traduite en "note SAC".

File Donnée du test C++ final 2020-21

seuls les exercices 1 et 3 sont au programme de l'examen du 5 novembre

File Solution du Test C++ final 2020-21
File Donnée du Test C++ 2019-20 en semaine 10
File Solution du Test C++ 2019-20 en semaine 10
File Donnée du Test C++ 2018-19 en semaine 10

une ligne manquait à l'exercice 4 mais ça n'était pas le but de l'exercice c'est pourquoi la présente version destinée à l'entrainement contient cette ligne de déclaration de la fonction f(); ceux qui l'ont remarqué ont eu les points de cet exercice.

File Solution du test C++ 2018-19 en semaine 10
File Donnée du projet SAME GRANMA V 1.0
URL Autograder + test files + error messages

Ce serveur web permet de téléverser et tester votre projet de la même manière que pour le rendu final sur moodle.

A partir de ce fichier archive, l'autograder compile votre projet et l'exécute sur les fichiers publics et les fichiers non-publics. Vous pouvez voir le détail de l'exécution des fichiers publics dans le feedback sur la page web par l'autograder.

Dans la colonne de droite vous avez des liens pour télécharger les fichiers de test et récupérer les quelques déclarations de constantes C++ pour les messages d'erreurs (error.txt).

Important: l'autograder détruit les fichiers archives reçus après avoir fait tourner les tests ; il ne peut pas être utilisé comme outil pour soumettre la version finale de votre projet. Vous disposez dans la colonne de droite d'un lien vers le site moodle qui sera utilisé pour téléverser la soumission finale du projet (le lien n'est pas encore public).


File Slides présentation projet du vendredi 5 novembre
URL video de l'introduction sur le projet
File Conventions de programmation du cours [Octobre 2020]
File Notes de l'exécution (6 points max)
File Fichiers de test publics et cachés

ouvrir avec geany ou notepad (windows)

File barème de notation de la structuration et du style
File Note et commentaire structuration/restrictions code (2pts)
File Note et commentaires style du Code (2pts)
File note du Rapport+commentaire (2pts) et TOTAL du Projet (12pts)
File Slides du cours avec questions SpeakUp et thème du projet

SpeakUp1: la bonne réponse est D car le tableau est vide ; l'accès avec tab[0] produit un comportement indéterminé.

SpeakUp2: la bonne réponse est C même si l'exécution affiche effectivement 5 car cette valeur est rangée en dehors de l'espace réservé pour ce tableau de un seul élément ; il doit donc être accédé avec l'indice 0 et pas l'indice 1.

URL video switchTube [2021-22]
File code vu en classe inversée
File MOOC tutoriel sem5
File MOOC complément sem5: tableau à la C
Topic 8 File classe inversée: array et string , avec question SpeakUp

Question SpeakUp: la bonne réponse est D car l'offset de l'élément mat[0][3] est 3 et cela correspond à l'emplacement mémoire de mat[1][0] qui contient la valeur 'D'. C'est donc ce caractère 'D' qui est affiché.

Question annexe: aurait-on le même comportement si mat était un vector ? Réponse: non, car les éléments d'un vector à deux indices sont rangés différemment en mémoire comparé à un array à deux indices. Cela sera détaillé quand nous aurons vu les pointeurs.

Certaines méthodes travaillant sur les strings seront illustrées dans un cours ultérieur car le temps était dédié au projet en priorité aujourd'hui.

URL video switchTube (démo autograder et exécution projet à la fin) [2021-22]
File Code vu en classe inversée

avec le code définissant une constante VERBOSE pour l'affichage optionnel (utile pour la mise au point du projet)

File Fiche résumé 05: comparaison array-vector [20.04.2021]
File Série 7 (pointe vers les exercices du MOOC sem5)

Il n'y a pas d'exercice complémentaire cette semaine, donc pas de "série7 corrigé".

File MOOC série sem5
File MOOC corrigé sem5
File MOOC série supplément sem5
File MOOC corrigé supplément sem5
Topic 9 File Classe inversée: struct / bitfield / opérateurs bit à bit ; avec les questions SpeakUp

SpeakUp n&&p : la bonne réponse est B correspondant au booléen VRAI

SpeakUp n¦¦p: la bonne réponse est aussi B correspondant au booléen VRAI

SpeakUp !n : la bonne réponse est D correspondant au booléen FAUX

File Tutoriel sur les opérateurs bit à bit
File code pour l'exemple du tutoriel
URL video switchTube [2021-22]
URL Opérateurs bit à bit: deux exemples + execution de code [30.11.2021]
File série 8 : exercices 18 et 16 + complément
File série8: corrigé
File MOOC tutoriel sem6 : introduction sur les struct
File MOOC série sem6: seulement exo 18
File MOOC corrigé sem6
File MOOC série supplément sem6: seulement exo 16
File MOOC corrigé supplément sem6
Topic 10 File Classe inversée: première partie sur les pointeur et référence
URL video switchTube [2021-22]
File code vu en classe inversée
File AutoEvaluation: concepts d'adresse et de valeur
File AutoEvaluation: pointeur et tableau-à-la-C
File Série 9 [2021-22]

Avec complément:

1) sur les opérateurs bit à bit

File Série9 : corrigé [2021-22]
File MOOC série sem6: seulement exos 19 et 20
File MOOC série6 exercice 20 : code source de l'initialisation

l'exercice 20 sera pour la semaine prochaine (Topic 10)

la donnée et le corrigé de l'exercice 20 ont une ligne coupée dans la partie qui initialise le vector de QCM. Voici une version qui initialise directement une variable de type Examen avec les mêmes valeurs initiales.

File MOOC corrigé supplément sem6
File MOOC série supplément sem6: seulement exo 17
File MOOC corrigé sem6
Topic 11 URL video question SpeakUp du cours précédent [2021-22]
File classe inversée: slides avec question SpeakUp et son analyse

La bonne réponse est D. L'explication détaillée est dans le slide qui suit la question: en résumé, le symbole * s'applique seulement à la première variable déclarée b. Si on veut que c soit aussi déclarée comme pointeur il faut écrire. int* b, *c ;

URL video switchTube [2021-22]
File code vu en classe inversée, avec code question SpeakUp
File Série 10
File Série 10 : corrigé [26.11.2020]
File MOOC série 7
File MOOC corrigé série 7
File Manuel du Dévermineur/Debugger GDB (Tutorial de Sam Huang)
Cette description (en anglais) est à essayer avec les fichiers utilisés pour les 2 autres approches. L'utilisation en mode ligne de commande est moins familière au début mais elle fonctionne toujours, donc on aura avantage à s'en servir quand DDD ou geany-GDB ne fonctionnent pas correctement, ce qui est déjà arrivé.
Topic 12 File Classe inversée Projet: consolidation des pointeurs et analyse de vector: slides avec annotations

Question SpeakUp: le code de sizeofPointer.cc est disponible dans le fichier archive plus bas. La bonne réponse est D car, sur une machine donnée, un pointeur occupe toujours le même nombre d'octets quel que soit l'objet pointé.

URL video switchTube [2021-22] M3_L2 performance ligne-par-ligne et colonne-par-colonne
URL video switchTube [2021-22] analyse de vector

Attention: il y a une petite erreur dans la video au sujet de sizeof("1") car cet opérateur calcule la longueur totale de cette chaine-à-la-C et affiche 2 puisqu'il compte aussi le caractère de fin de chaine '\0'. L'indication de 8 n'est donc pas correcte pour cet exemple, même si le type d'une chaîne à-la-C est bien de type char*.

PS1: les slides sont correctes

PS2: un message sur Discourse parle des liens entre string et les chaines à-la-C.

File code vu en classe inversée complet
File Série 11 [2021-22]

2021-22

File Série11: corrigé [2021-22]

2020-21, correction coquille exC5 réponse b) la variable b ne change pas et conserve sa valeur de 2.

Topic 13 File MISE A JOUR : Salle d'examen du 17 décembre [15.12.2021]
File Complément sur les entrées-sorties conversationnelles / avec question SpeakUp [2021-22]

Question SpeakUp : la bonne réponse est bien B ; ça ne peut pas être C car il y a un bon gros bug avec le pointeur ligne 17. La réponse D n'est pas correcte parce que le texte "test2" est dans le buffer de sortie et il n'apparait pas dans le terminal à cause du bug qui stoppe le programme. Pour éviter cette mauvais inteprétation il faut systématiquement ajouter endl après tout message de debugging.

Slide5: il y a aussi affichage du contenu du buffer de sortie en fin d'exécution (normale) du programme et si on appelle la méthode flush sur cout.

File code vu en cours + compléments

Les programmes indiqués en bas des slides sont disponibles dans ce fichier archive, de même que le programme pour le tutoriel de conversion de chaînes.

En réponse à une question sur la taille max du buffer d'entrée vous trouverez aussi le programme cin_buffer_size.cc et le fichier texte big_file.txt qui suggère que le système augmente automatiquement la taille du buffer d'entrée selon les besoins. En effet le processeur pourrait être occupé à exécuter une partie du programme pendant que le système remplit le buffer d'entrée avec le contenu d'un fichier redirigé sur l'entrée. Il est très probable que le système ajoute un bloc supplémentaire (de l'ordre de 4KB) chaque fois que le buffer d'entrée arrive à sa taille max.

URL video switchTube [2021-22]
File Série 13 tutoriel : Fonction de conversion d'une chaîne à-la-C en valeur numérique
File Notes ICC Théorie et C++ du 17 décembre
File Sujet ICC C++ final 2021-22
File Solution ICC C++ final 2021-22
File Sujet ICC C++ unique 2020-21
File Solution ICC C++ 2020-21
File Sujet ICC C++ final 2019-20
File Solution ICC C++ final 2019-20
File Sujet ICC C++ final 2018-19
File Solution ICC C++ final 2018-19
Topic 14 File support pour illustrer des exemples
URL video switchTube [2021-22]
File code utilisé en cours