Cours d'environnement de programmation en informatique en BAT4

PREAMBULE


Un des trois Modules pour appréhender l'immotique

Trois Modules pour appréhender l'immotique

Préambule & Approche pédagogique

Préambule & Approche pédagogique

Outils de travaux pratiques

Environnement de développement logiciel utilisé pour ce module

Cours et Tutoriaux sur la Programmation Objet en C#

Quelques références sur la Programmation orientée objet et C#

Pour aller plus loin

Auteur(s) : Luc Gervais

Editeur(s) : Eni, Collection : Ressources Informatiques

Date de parution : 11/09/2013 , EAN13 : 9782746082977

LES COURS PROGRAMMATION et ENVIRONNEMENT LOGICIEL


Séance 1 Introduction du langage C# hors objet : Introduction des outils de développement logiciel et mise en place de l'environnement du module

Durée : 2h
Résumé de la Séance :
Tutorial : Développement sous Visual Studio

Support du Tutorial

A FAIRE
Aidez-vous du tutorial pour créer votre premier programme en mode console, ce programme affiche Hello.
Compétences acquises :
  • Utiliser Visual Studio pour créer et exécuter un projet Win32 console (i.e. sur un terminal non graphique)

Séance 2 : Introduction du langage C# hors objet : Mise en œuvre de l'environnement de développement

Durée : 2h
Résumé de la Séance :
A FAIRE
  • Importer le programme de test de debugging et exécutez-le.
  • Placer un point d'arrêt au bon endroit pour comprendre quel est le bug.
  • Corriger le bug en complétant le programme pour qu'il affiche 0, 1 ou 2 solutions selon que le déterminant est négatif, nul ou positif.

Programme de test de debugging

  • Récupérer les coefficients du polynômes saisi au clavier avec conversion caractères vers double
CORRIGE

Calcul des racines d'une équation du 2d degré

Compétences acquises :
  • Utiliser le debugger de Visual Studio pour placer des points d'arrêts et visualiser des variables en cours d'exécution
  • Utilisation de l'instruction conditionnelle “If”
  • Conversion de types de données

Séance 3 : éléments du langage C# hors Objets et mise en oeuvre

Durée : 2h
Résumé de la Séance :
Comparaison entre C# et VBA

Exemple de codes écrits en C# et en VBA

Code C# support de cours

Exemple introductif aux fonctions et procédures

Fonctions et procédures pour lire et écrire à la console

Rappel : Vous trouverez des compléments d'information sur Cours Complet POO C# de Référence

A FAIRE
Écrire un programme de test de parité d'un nombre
  • Il faudra demander de saisir un nombre au clavier
  • Récupérer la valeur entière saisie
  • Écrire une fonction booléenne qui teste la parité d'un entier
  • Tester avec l'appel de cette fonction la parité de l'entier saisi et
  • Afficher selon le message “est pair” ou “est impair”

Nota : utiliser les fonctions de lecture écriture ci-dessus.

CORRIGE

Deux versions de la parité d'un nombre

Compétences acquises :
  • Écriture de fonctions, de procédures et réutilisation dans un programme
  • Conversion programme VBA vers C#

Séance 4 : éléments du langage C# hors Objets et mise en oeuvre :

Durée : 2h
Résumé de la Séance :
Code C# support de cours

Exemples de boucles : la somme des n premiers entiers

A FAIRE
  • Application directe : calcul de nombre factoriel
  • Programme de calcul mental. Écrire un programme qui affiche des équations du type “x + 12 = 36” et qui demande à l'utilisateur quelle est la valeur de x. Le programme propose 10 équations en tout et affiche le score final, par exemple 3/10 si on a répondu correctement à 3 équations sur 10.
  • Programme de calcul mental (facultatif). L'utilisateur a maintenant 3 tentatives pour chaque équations. Le score est calculé ainsi : 3pts si la valeur est trouvée en une seule tentative, 2pts en 2 tentatives, 1pt en une tentative et Opt si la valeur n'est pas trouvée.

Code C# à compléter pour le calcul mental

CORRIGE

Calcul mental

Rappel : Vous trouverez des compléments d'information sur Cours Complet POO C# de Référence

Compétences acquises :
  • Boucles while
  • Lecture/écriture de données à la console
  • Utilisation du tirage aléatoire d'un entier
A FAIRE (en séance)
  • écrire une fonction qui renvoie le produit scalaire de deux vecteurs.
  • écrire un programme Colle qui prend des mots passés en paramètre du main et qui les colle séparés par _, lancer le programme dans le terminal (cmd). Exemple : Colle.exe il fait beau doit afficher il_fait_beau.
  • compléter le projet sur les tableaux en ajoutant la multiplication vectorielle(matrice par vecteur) ainsi que la lecture d'une matrice.

Séance 5 : éléments du langage C# hors Objets : types complexes

Code C# support de cours

Manipulation de tableaux d'entiers

A FAIRE (en séance)
  • écrire une fonction qui renvoie le produit scalaire de deux vecteurs.
  • écrire un programme Colle qui prend des mots passés en paramètre du main et qui les colle séparés par _, lancer le programme dans le terminal (cmd). Exemple : Colle.exe il fait beau doit afficher il_fait_beau.
Compétences acquises :
  • manipulation de tableaux d'entiers

Rappel : Vous trouverez des compléments d'information sur Cours Complet POO C# de Référence


Travail personnel évalué

A FAIRE
  • compléter le projet sur les tableaux en ajoutant la multiplication vectorielle(matrice par vecteur) ainsi que la lecture d'une matrice.
DATES d'évaluation

Pour préparer le contrôle de la rentrée

Compléments sur les tableaux : tableaux en escaliers int[,] versus tableaux multi-dimensionnels int[][])


Séance 6 : Introduction du langage C# : types complexes

Code C# support de cours

La struct Rectangle

A FAIRE
  • Application directe : compléter le projet sur les rectangles en ajoutant le calcul de l'aire du rectangle (des 2 façons, avec ou sans struct)
  • DecoAndCo : On veut repeindre les murs d'un appartement en utilisant la même peinture dans toutes les pièces. On vous demande d'écrire un programme qui lit le pouvoir couvrant de la peinture (i.e. le nombre de m2 que le pot permet de couvrir) puis qui lit les caractéristiques des pièces de l'appartement (nom, hauteur, largeur, longueur), qui affiche pour chaque pièce la surface à peindre et le nombre de pots nécessaires. A la fin, le nombre de pots total est affiché.
CORRIGE

Déco And Co

Compétences acquises :
  • Créer et manipuler un struct
  • Passer d'un problème à un programme qui modélise ce problème
  • Décomposer un problème en parties ⇒ choix des fonctions ou procédures

Rappel : Vous trouverez des compléments d'information sur Cours Complet POO C# de Référence


Séance 7 : Premiers pas vers la programmation orientée Objet par l'exemple

Code C# support de cours

Exemple de programme manipulant des objets : de la struct poutre à la classe poutre

Rappel : Vous trouverez des compléments d'information sur les classes sur https://msdn.microsoft.com/fr-fr/library/ey4ke239(v=vs.90).aspx

A FAIRE
  • Application directe 1 : reprendre votre solution Polygone pour remplacer la struct Rectangle par une classe Rectangle
  • Application directe 2 : reprendre votre solution DecoAndCo pour remplacer la struct Piece par une classe Piece
  • DecoAndCo cont'd : il s'agit maintenant de repeindre la maison. Votre programme principal contient un tableau de pièces. On demande le nombre de pièces, on lit les caractéristiques des pièces à la console puis on affiche :
    • la surface au sol de la maison
    • la surface totale à peindre (on ne peint que les murs)
    • le nombre de pots de peintures nécessaires pour peindre la maison.
CORRIGE

Classe Rectangle : 1ère version

DecoAndCo V2 : version avec la classe Piece


Séance 8 : Séance Programmation orientée Objet en C# (4h)

Exemple d'illustration du private versus public et de l'intérêt des propriétés

Solution de l'exemple d'illustration en C#, Gestion des chaines de caractères contenant un entier

Rappel : Vous trouverez des compléments d'information sur Cours Complet POO C# de Référence

A FAIRE
- Définissez dans la classe rectangle deux propriétés pour éviter qu'une longueur ou qu'une largeur soit inférieure ou égal à 0. - Écrire le constructeur par défaut qui initialise les côtés à 0.
CORRIGE

Classe Rectangle avec propriétés pour éviter qu'une longueur ou qu'une largeur soit inférieure ou égal à 0 et sortie de l'application dans le cas contraire

Compétences acquises :
  • Utilisation des propriétés (ex. public double largeur … get{}, set{} et mot clef value)
  • Remplacement du constructeur par défaut par un constructeur explicite (ex. public Rectangle(double la, double lo))

Séance 9 : Introduction à la programmation orientée Objet en C#

Pour les curieux, les explications détaillées sont là |https://docs.microsoft.com/fr-fr/dotnet/csharp/programming-guide/classes-and-structs/inheritance.

A FAIRE
  1. Exercice de cours : Écrire une classe “carré” qui contiendra les mêmes attributs et méthodes que la classe rectangle (héritage) puisqu'il s'agit d'un rectangle particulier. Trois objets seront alors instanciés et testés.
  2. Gestion de véhicules. On vous donne la classe Vehicule et la classe Voiture qui étend Vehicule. On vous donne aussi le programme qui gère un tableau de Voiture.
  • Vous devez créez la classe Moto. En plus des caractéristiques d'un véhicule, une moto a une cylindrée comprise entre 50 et 1000. Le permis nécessaire est le “AM” si la cylindrée est 50, le “A1” si la cylindrée est 125 et le “A2” sinon.
  • Ajoutez un tableau de motos dans le programme principal. Créez quelques motos et affichez toutes les voitures puis toutes le motos.
  • plutôt qu'utiliser un tableau de Voiture et un tableau de Moto, utilisez un tableau de Vehicule et pour y stocker aussi bien des Moto que des Voiture.

La solution des véhicules à compléter

Rappel : Vous trouverez des compléments d'information sur Cours Complet POO C# de Référence

CORRIGE

Classe Carre qui hérite Rectangle. Version avec new et override

Les véhicules avec héritage

Compétences acquises :
  • Héritage d'une classe (ex. Class Carre : Rectangle)
  • Écriture d'un constructeur dans la classe qui hérite (ex. public Carre©: base (c,c) dans le cas de la classe héritée Rectangle)
  • Champs protected plutôt que private pour les utiliser au travers de l'héritage
  • Surcharge d'une méthode dans la classe qui hérite avec le mots clef “new”
  • Utilisation d'une méthode de la classe héritée dans la classe qui hérite (ex. base.affiche())

Séance 10 : Programmation orientée Objet et Interface Graphique

Programmation d'une interface graphique dans un projet Winforms (Windows Forms) en trois temps :

  1. instanciation des objets graphiques (appelés aussi widgets)
    • illustration du concept d'instance de classe
  2. modification des propriétés des objets graphiques
  3. programmation du comportement de l'application dans les méthodes événementielles des objets graphiques

Tutoriel sur les projets de type WinForms avec VisualStudio.

A FAIRE
  1. Exercice de cours : construire pas à pas votre première interface graphique en suivant le tutoriel ci-dessus.
  2. Application : un compteur graphique.
    • créer une classe qui gère un compteur initialisé à 0, incrémentable avec incr(), réinitialisable avec reset(), lu avec val().
    • en suivant les étapes décrites ci-dessus, créer une interface graphique contenant un bouton qui changera de couleur et de nom quand la souris passera dessus (Rouge/“OUT” et Vert/“IN”)
    • Afficher dans la fenêtre principale le compteur qui s'incrémentera à chaque click sur ce bouton ci-dessus,
    • Ajouter un bouton de Reset pour réinitialiser le compteur à 0.
Compétences acquises : Après ces manipulations, vous devez être capables de créer des programmes C# similaires aux programmes que vous avez développés en mode console et leur rajouter des interfaces graphiques.

Autre référence : C# Programming Tutorial - Programming Winforms in C#


Séance 11 : Test en séance sur la programmation objet

Correction en mode console

fichier .zip du projet console manipulant les compteur_set et compteur_nonset


Séance 12 : Interface graphique pour une application métier

A FAIRE
Il s'agit de créer une interface graphique pour le compteur écrit lors de la séance de test.
  1. Finir le code du compteur (code métier), avec les deux versions : compteur qui peut prendre n'importe quelle valeur (Compteur_set), compteur qui ne peut être initialisé qu'à 0 (Compteur_non_set).
  2. Créez une interface (projet WinForm) contenant :
    • un TextBox (champ de texte modifiable) qui affiche la valeur du Compteur_set et un Label qui affiche la valeur du Compteur_non_set
    • 5 boutons : quit positionné en bas au centre de la fenêtre, reset et incr positionnés sous le Compteur_set, reset et incr positionnés sous le Compteur_non_set
    • comportement : appuyer sur reset remet le compteur correspondant à 0, appuyer sur incr l'incrémente et appuyer sur quit ferme la fenêtre.
  3. On aurait pu choisir d'afficher le Compteur_non_set dans un TextBox, comment faire pour que le comportement soit cohérent ?
Correction en mode console et graphique

fichier .zip des projets Console et Winforms manipulant les compteur_set et compteur_nonset


Séance 13 : Utilisation d'Excel depuis un programme C#

Il s'agit d'utiliser une API pour lire/écrire des informations depuis/dans un fichier excel.

A FAIRE
  • télécharger la librairie suivante : ExcelLibray.dll, sauvez-la sur votre machine et dé-zipez-la pour récupérer ExcelLibray.dll
  • créer un projet console
  • indiquer que ce projet utilisera cette librairie. Pour cela, menu projet → ajouter une reference → parcourir et chercher le fichier ExcelLibray.dll
  • copier/coller le code qui se trouve dans le fichier Program.cs dans la classe Program. Program.cs
  • exécuter le programme et comprenez ce qu'il fait.

Nota 1 : vérifier que le fichier excel a bien été créé, s'il y a un problème de chemin, changer la variable path dans le programme Nota 2 : si vous interrompez l'exécution de votre programme C#, le fichier excel reste ouvert. Il faut donc tuer le processus excel qui a été créé via le gestionnaire des tâches.

Pour ceux qui veulent utiliser toutes les fonctionnalité de l'interopérabilité excel, voici la solution de la librairie excel, que vous pouvez étendre si besoin.

Cours sur l'interopérabilité avec Excel en C# Tutorial Utilisation d'Excel en C#


TP final

Ce TP est à faire en séance. A la fin de la séance, vous devrez impérativement envoyer une archive TPfinal.zip à votre responsable de TD dans un mail dont le sujet est : [BAT4] TP final. Ceux qui souhaitent aller plus loin pourront améliorer leur travail en envoyant un mail identique avec une version plus avancée au plus tard le vendredi 22 décembre.

Il s'agit d'afficher dans une interface WINFORM les informations calculées dans un fichier excel qui donnent la classe d'énergie d'un bâtiment en fonction de son SHON et du volume consommé dans les différentes énergies (gaz, fuel …). Ce fichier provient en partie de l'ADEME. Les entrées de ce fichier excel sont le SHON et la consommation des différentes énergies. La sortie est une X en face de la classe énergétique (A, B, C,… G). Vous n'avez pas le droit de modifier ce fichier.
  • a minima, il faudra fournir dans votre interface graphique en C# un moyen de modifier le SHON et d'afficher la classe énergétique
  • il pourra être intéressant de permettre de modifier aussi les consommations énergétiques
  • l'affichage de la classe énergétique pourra être simplement un label
  • il pourra être intéressant d'afficher une flèche en face du logo des classes énergétiques de l'ADEME.

L'archive TPFinal.zip contient :


Introduction aux bases de données. Exemple de MySQL (1h30 19/01/15) Site de Téléchargement et d'Installation de MySQL pour Windows

Introduction Base e données:MySQL

TD Utilisation de MySQL dans un Programme C# Utilisation de Scilab depuis un programme C#

exemple de projet C# utilisant les librairies scilab

Autres éléments de cours

Import de DLL
Cours et illustrations des Notions de Programmation Orientée Objet en C#

Exemple de solution Visual Studio 2012: Interface Salarié

Support du cours 2 Programmation Orienté Objet en C#

Exemple de Solution Visual Studio 2013 : Ma première classe en C#

Les CONSTRUCTEURS Exemple de Solution Visual Studio 2013 : Les constructeurs d'une classe en C#

Les PROPRIETES

Exemple de Solution Visual Studio 2013 : une propriété dans une classe en C#

Les MEMBRES STATIQUES de CLASSE

Exemple de Solution Visual Studio 2013 : méthodes et attributs statiques en C#

Exercices Programmation orientée Objet de base en C#

Les exceptions

Pour les plus avancés, membres static et héritage …

Exercices POO et Références de classe

Pour les plus avancés, un peu d'algorithmique en C# …

Exercices POO et Algorithmique

Zone Enseignant

Cours BAT Env Log Zone Enseignant

Années précédentes

Cours BAT Env Log 2013 2014 Cours BAT Env Log 2015 2016 Cours BAT Env Log 2017 2018