ICC Information - Calcul - Communication / Pratique: initiation à la programmation (en C++) / (MT + EL)
Topic | Name | Description |
---|---|---|
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. |
|
Tutoriel Discourse [20.09.2021] | ||
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. |
|
Support de cours: MOOC / BOOC "Initiation à la Programmation en C++" / "C++ par la pratique" | ||
Conventions de Programmation en C++ [Octobre 2020] | ||
C++ Bug checklist sem1 [29.09.2018] | 2 minor corrections / adding -std=C++11 |
|
Memento: principales commandes Linux | ||
Graphe des relations entre les videos sur la représentation de l'information | ||
FAQ: myNAS, VM, Clavier, VPN, backup, etc... [16.09.2021] | 09.2021: plus de VM locale |
|
Table des priorités des opérateurs (et associativité) | ||
Topic 1 | Présentation du cours, C++, MOOC, VM, Projet [22.09.2021] | avec lien zoom pour exo online et dates hors-RLC |
video sur switchTube [2021-22] | mise à jour de la video le 24/9 à 14h |
|
linux.pdf utile pour l'exercice5 de la Série1 [22.09.2021] | ||
Série1: Se connecter, commandes LINUX , Q&A avec Discourse [17.09.21] | ||
Série 1: corrigé [22.09.2022] | ||
Topic 2 | Classe inversée: rappels, complément "mémoire centrale" et étude de cas [22.09.2021] | |
video switchTube [2021_22] | ||
Code vu en classe inversée | ||
fiche résumé 01 : variable | ||
fiche résumé 02 : opérateurs | ||
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 |
|
Principales commandes et raccourcis de geany | ||
MOOC tutoriel sem1 | ||
MOOC serie sem1 | ||
MOOC corrigé série sem1 | ||
MOOC compléments sem1 | ||
Topic 3 | Classe inversée : instruction conditionnelle / avec questions Speakup [2021-22] | |
video sur switchTube [2021_22] | ||
code des exemples vu en classe inversée |
|
|
Série 3 : avec complément sur l'estimation de la tolérance tau | titre plus précis |
|
MOOC tutoriel sem2 | ||
MOOC série sem2 | ||
MOOC corrigé sem2 | ||
MOOC série supplément sem2 | ||
MOOC corrigé supplément sem2 | ||
MOOC complément sem2 | ||
Topic 4 | video switchTube sur switch etc... [2021-22] | |
Classe inversée : les boucles (avec questions SpeakUp) [2021-22] | ||
video switchTube [2021-22] | ||
fiche résumé 03: structures de contrôle | ||
Série 4 : boucles | titre plus précis |
|
code vu en classe inversée | ||
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 |
|
MOOC série sem3 | ||
MOOC corrigé sem3 | ||
MOOC série supplément sem3 | ||
MOOC corrigé supplément sem3 | ||
Topic 5 | video switchTube: exemple sur la portée des variables [2021-22] | |
classe inversée : PREMIERE PARTIE sur les fonctions | ||
video switchTube : Fonctions 1iere partie [2021-22] | ||
code utilisé en classe inversée | ||
Fiche résumé 04: Fonction | ||
série 5 [2021-22] | ||
MOOC tutoriel sem4: seulement 4.1 (moyenne) | ||
MOOC série sem4 ; seulement exercices 11,12,13 | ||
MOOC corrigé sem4 | ||
MOOC série supplément sem4: seulement "fonction simple" et "sapin" | ||
MOOC corrigé supplément sem4 | ||
Topic 6 | 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. |
video switchTube [2021-22] | ||
code vu en classe inversée | ||
Fiche résumé 04: Fonction | ||
Série 6 : évaluation de performance et redirection | ||
Série 6: corrigé | ||
MOOC tutoriel sem4: 2ième partie (somme récursive) | ||
MOOC série sem4 ; seulement exercice 14 (Fibonacci) | ||
MOOC série supplément sem4: se concentrer sur "recherche dichotomique" | ||
Topic 7 | Liste des salles d'examen ICC du 5 novembre | |
Donnée du Test C++ du 5 novembre 2021 | ||
Solution du Test C++ du 5 novembre 2021 | ||
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". |
|
Donnée du test C++ final 2020-21 | seuls les exercices 1 et 3 sont au programme de l'examen du 5 novembre |
|
Solution du Test C++ final 2020-21 | ||
Donnée du Test C++ 2019-20 en semaine 10 | ||
Solution du Test C++ 2019-20 en semaine 10 | ||
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. |
|
Solution du test C++ 2018-19 en semaine 10 | ||
Donnée du projet SAME GRANMA V 1.0 | ||
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). |
|
Slides présentation projet du vendredi 5 novembre | ||
video de l'introduction sur le projet | ||
Conventions de programmation du cours [Octobre 2020] | ||
Notes de l'exécution (6 points max) | ||
Fichiers de test publics et cachés | ouvrir avec geany ou notepad (windows) |
|
barème de notation de la structuration et du style | ||
Note et commentaire structuration/restrictions code (2pts) | ||
Note et commentaires style du Code (2pts) | ||
note du Rapport+commentaire (2pts) et TOTAL du Projet (12pts) | ||
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. |
|
video switchTube [2021-22] | ||
code vu en classe inversée | ||
MOOC tutoriel sem5 | ||
MOOC complément sem5: tableau à la C | ||
Topic 8 | 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. |
video switchTube (démo autograder et exécution projet à la fin) [2021-22] | ||
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) |
|
Fiche résumé 05: comparaison array-vector [20.04.2021] | ||
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é". |
|
MOOC série sem5 | ||
MOOC corrigé sem5 | ||
MOOC série supplément sem5 | ||
MOOC corrigé supplément sem5 | ||
Topic 9 | 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 |
Tutoriel sur les opérateurs bit à bit | ||
code pour l'exemple du tutoriel | ||
video switchTube [2021-22] | ||
Opérateurs bit à bit: deux exemples + execution de code [30.11.2021] | ||
série 8 : exercices 18 et 16 + complément | ||
série8: corrigé | ||
MOOC tutoriel sem6 : introduction sur les struct | ||
MOOC série sem6: seulement exo 18 | ||
MOOC corrigé sem6 | ||
MOOC série supplément sem6: seulement exo 16 | ||
MOOC corrigé supplément sem6 | ||
Topic 10 | Classe inversée: première partie sur les pointeur et référence | |
video switchTube [2021-22] | ||
code vu en classe inversée | ||
AutoEvaluation: concepts d'adresse et de valeur | ||
AutoEvaluation: pointeur et tableau-à-la-C | ||
Série 9 [2021-22] | Avec complément: 1) sur les opérateurs bit à bit |
|
Série9 : corrigé [2021-22] | ||
MOOC série sem6: seulement exos 19 et 20 | ||
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. |
|
MOOC corrigé supplément sem6 | ||
MOOC série supplément sem6: seulement exo 17 | ||
MOOC corrigé sem6 | ||
Topic 11 | video question SpeakUp du cours précédent [2021-22] | |
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 ; |
|
video switchTube [2021-22] | ||
code vu en classe inversée, avec code question SpeakUp | ||
Série 10 | ||
Série 10 : corrigé [26.11.2020] | ||
MOOC série 7 | ||
MOOC corrigé série 7 | ||
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 | 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é. |
video switchTube [2021-22] M3_L2 performance ligne-par-ligne et colonne-par-colonne | ||
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. |
|
code vu en classe inversée complet | ||
Série 11 [2021-22] | 2021-22 |
|
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 | MISE A JOUR : Salle d'examen du 17 décembre [15.12.2021] | |
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. |
|
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. |
|
video switchTube [2021-22] | ||
Série 13 tutoriel : Fonction de conversion d'une chaîne à-la-C en valeur numérique | ||
Notes ICC Théorie et C++ du 17 décembre | ||
Sujet ICC C++ final 2021-22 | ||
Solution ICC C++ final 2021-22 | ||
Sujet ICC C++ unique 2020-21 | ||
Solution ICC C++ 2020-21 | ||
Sujet ICC C++ final 2019-20 | ||
Solution ICC C++ final 2019-20 | ||
Sujet ICC C++ final 2018-19 | ||
Solution ICC C++ final 2018-19 | ||
Topic 14 | support pour illustrer des exemples | |
video switchTube [2021-22] | ||
code utilisé en cours |