La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024.

Présentations similaires


Présentation au sujet: "PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024."— Transcription de la présentation:

1 PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024

2 Contenu du Chapitre III u Visual Basic.NET (VB.NET) –VB et premier programme –Introduction à la programmation-objet –Applications Windows –Manipulations de fichiers –Dessins et images

3 VB.NET ( Introduction à la programmation-objet ) u Nous avons vu qu'un programme VB de type Application Windows était défini à l'aide d'une classe appelée Form1. u Cette section introduit les concepts de la programmation-objet dans le contexte de VB.NET. u Tous les langages de programmation modernes utilisent la programmation-objet. Bien que la notation puisse varier d'un langage à l'autre, les principes fondamentaux sont toujours les mêmes. u En fait la programmation-objet est basée fondamentalement sur le concept de classe.

4 VB.NET ( Introduction à la programmation-objet ) u Une classe est caractérisée par: –La définition d'une structure de données qui représente un nouveau type de données; un ensemble d’attributs; cette structure de données mémorise l'état d'un objet ou instance (un élément du nouveau type); les objets sont toujours désignés par des variables et nous pouvons référer aux éléments de la structure comme suit: nom_variable_objet. nom_élément_de_la_structure –La définition d'un ensemble de procédures (appelées des méthodes) qui sont spécialisées pour manipuler les structures de données du nouveau type; ces procédures s'appliquent uniquement dans le contexte d'un élément du nouveau type : nom_variable_objet. nom_procédure( paramètres... )

5 VB.NET ( Introduction à la programmation-objet ) u Une classe est caractérisée par:

6 VB.NET ( Introduction à la programmation-objet ) u Éléments de bases de la programmation VB –Cette section décrit les éléments (ex: types de données) déjà définis dans VB et la syntaxe de base des instructions. u Les types primitifs de Visual Basic:

7 VB.NET ( Introduction à la programmation-objet ) u Les types primitifs de Visual Basic:

8 VB.NET ( Introduction à la programmation-objet ) u À partir des types de base, nous pouvons construire d'autres types de données plus complexes appelés des objets. u La description formelle de ces objets est appelée une classe. Visual Basic offre aussi un ensemble de classes (d'objets) contenu dans la librairie.NET (.NET Framework SDK (system development kit)). u Dans les versions précédentes de VB, nous retrouvions le type Variant qui était le type de données par défaut. Ce type qui pouvait contenir toutes sortes de valeurs n'existe plus avec.NET. Il est remplacé par le type Object qui est le type fondamental de toutes les données, sous.NET. u Autrefois, nous retrouvions le type Currency qui servait à représenter les valeurs monétaires. Ce type n'existe plus. Il est remplacé par le nouveau type Decimal qui est un nombre fractionnaire à point fixe sur 128 bits et qui supporte 28 chiffres significatifs. La position du point étant fixé, le type Decimal n'a pas l'imprécision des types Single et Double qui ont le point flottant.

9 VB.NET ( Introduction à la programmation-objet ) u Traitement simple des données –Cette section présente un exemple de programme en VB qui convertit un nombre de 3 bits en 1 chiffre octal. Ce programme sert aussi à expliquer les éléments que nous retrouvons dans un programme d'ordinateur. Nous expliquons d'abord ces éléments, et ensuite présentons le programme. u Variable –Une variable est un nom associé à une zone de mémoire. Cette variable a aussi un type qui détermine le type des données que la mémoire peut contenir. Le type détermine aussi la taille de la mémoire en bits (ou en octets). –Les commentaires dans un programme apparaissent à droite d’une apostrophe. –L'énoncé de programme Dim sert à définir des variables. –* est l'opérateur de multiplication; autres opérateurs: +, -, / (addition, soustraction et division) Dim x as Integer ' on déclare que x est une variable contenant un entier x=3 ' mettre 3 dans la variable x; on appelle cette opération ' l'affectation; 3 est une constante de type integer (entier) Dim y as Integer y=x*5 ' x*5 est une expression arithmétique; si x contient 3, ' alors x*5 vaut 15; puis 15 est mis dans la variable y;

10 VB.NET ( Introduction à la programmation-objet ) u String –Les Strings sont des chaînes de caractères (des séquences). Une String est de longueur variable, i.e. que le système s'occupe de changer la taille de la mémoire requise selon nos besoins. Dim s as String' ici, s est une string de longueur variable Dim var ' les variables qui n'ont pas de type sont du type ' par défaut Object; ce type permet de s'adapter ' et de contenir les autres types s="ceci est une constante de type string" ' initialiser s avec une constante s="ceci est" s=s+" une constante de type chaine" ' le plus permet de concatener ' ensemble des chaines u En général, nous devons spécifier les types des variables. Ceci permet d'éliminer plusieurs erreurs de programmation dès le départ.

11 VB.NET ( Introduction à la programmation-objet ) u Procédures –Une procédure est un groupe d'instructions qui possède un nom. Nous pouvons alors demander d'exécuter ces instructions en utilisant le nom de la procédure. Il existe 2 types de procédures en VB, les Sub (subroutines) et les Function (fonctions). Par exemples: ' ici, définisons deux Sub qui s'appellent add3byRef et add3byVal ' et qui ont un paramètre x Public Sub add3byRef(ByRef x as Double) ' x entre et sort x=x+3 'ajouter 3 à x end sub Public Sub add3byVal(ByVal x as Double) ' x entre uniquement x=x+3 'ajouter 3 à x end sub

12 VB.NET ( Introduction à la programmation-objet ) u Procédures ' exemple d'utilisation de la Sub dans un autre programme Dim y as Double y=10 call add3byVal(y) 'ici y vaut 10 y=10 call add3byRef(y) 'ici y vaut 13

13 VB.NET ( Introduction à la programmation-objet ) u Procédures: –La procédure précédente incrémente une variable de 3. –Le paramètre x est une variable locale à la Sub, i.e. ce x n'est pas visible par les instructions en dehors de la Sub. Les paramètres servent à créer un lien de communication entre l'utilisateur (l’appelant) et la Sub. –Dans l'exemple précédent avec "call add3byRef(y)", x devient y et l'addition de 3 est réalisée. La variable y est alors modifiée. –Par contre, dans "call add3byVal(y)", x reçoit la valeur de y et les modifications de la variable x n'affectent en rien la variable y. –En d'autres termes, ByRef signifie que l'information entre et sort, tandis qu'avec ByVal l'information ne fait qu'entrer.

14 VB.NET ( Introduction à la programmation-objet ) u Les fonctions sont identiques aux Sub avec en plus un mécanisme pour retourner une valeur.

15 VB.NET ( Introduction à la programmation-objet ) u Les fonctions sont identiques aux Sub avec en plus un mécanisme pour retourner une valeur. u Ceci permet de faciliter l'écriture des instructions. Par exemple: Public Function mul4(ByVal x as Double) as Double' retoune un nombre mul4=x*4 ' on retourne x*4 End Function ' utilisation de la fonction précédente y=mul4(12) ' on afffecte y avec le résultat de 12*4=48

16 VB.NET ( Introduction à la programmation-objet ) u Plusieurs fonctions et procédures sont définies par Visual Basic (voir Help).

17 VB.NET ( Introduction à la programmation-objet )

18 u Voici une description de certaines de ces fonctions. Dim s as String Dim x, y as Double ' x et y contiennent des nombres s="1234" x=Val(s) ' la chaîne de caractères s est convertie en nombre ' x contient le nombre 1234 Dim longueur as Integer longueur=Len(s) ' longueur contient 4 (Length) x=29 y=x mod 3 ' mod (modulo) est le reste de la division de x par 3 ' y vaut 2 s=Str(1234) ' convertir en chaîne; s vaut "1234" x=9.87 y=Int(x) ' conversion en Integer avec troncature de la fraction ' y vaut 9

19 VB.NET ( Introduction à la programmation-objet ) u Voici une description de certaines de ces fonctions. Dim ss as String ' ss contiendra une chaîne de caractères s="123456789" ss=Mid(s,4,3) ' extraire une sous-chaîne de la chaîne s; 4 est la position ' du premier caractère à extraire, et 3 est le nombre de ' caractères à extraire; ss vaut "456"

20 VB.NET ( Introduction à la programmation-objet ) u Tableau –Un tableau est une variable qui comportent plusieurs emplacements de mémoire d'un type donné. Par exemple: Dim tabI(7) as integer ' tabI est un tableau qui contient 8 entiers tabI(0)=10 tabI(1)=20 u Les 8 entiers sont stockés dans les emplacements de mémoire donnés par: tabI(0), tabI(1),tabI(2), tabI(3),tabI(4), tabI(5), tabI(6), tabI(7),. u Le numéro de la mémoire qui apparaît entre les parenthèses représente "l'indice" du tableau. 0 1 2 3 4 5 6 7 tabI

21 VB.NET ( Introduction à la programmation-objet ) u Exemple de programme: Conversion d’un nombre binaire de 3 bits en 1 chiffre octal u Voici un exemple dans lequel nous faisons la conversion d’une chaîne de 3 bits (bits) en une chaîne de 1 caractère octal correspondant aux bits. D'abord, construisons la fenêtre (Form) qui interagit avec l'utilisateur:

22 VB.NET ( Introduction à la programmation-objet ) u Nous avons positionné deux TextBox, un bouton et 2 Label pour les titres en noir. u Le TextBox de gauche s'appelle "TextBoxBINAIRE", celui de droite "TextBoxOCTAL" u Le bouton "ButtonConvertir" permet d’activer la conversion. u Nous n’avons pas besoin de donner des noms particuliers aux Label parce que nous ne les utilisent pas dans le code.

23 VB.NET ( Introduction à la programmation-objet ) u Voici le code de la forme que vous devriez avoir:

24 VB.NET ( Introduction à la programmation-objet )

25 u Dans le code précédent, la procédure "Form_load" est appelée au démarrage du programme. Nous remplissons alors le tableau "octal" avec toutes les combinaisons possibles de 3 bits. u La procédure "ButtonConvertir_Click" qui répond à l'événement "Click" sur le bouton extrait le texte du TextBox "TextBoxBINAIRE" et le place dans la variable "te". u Ensuite, la procédure "convertir3bits" est appelée, elle trouve le texte correspondant au chiffre octal découlant de la conversion du nombre binaire de trois bits.

26 VB.NET ( Introduction à la programmation-objet ) u Dans la procédure "convertir3bits", les paramètres sont appelés "bits" et "o". Ces noms sont des variables locales à la procédure et n'ont de sens qu'à l'intérieur de la procédure "convertir3bits". Le type de ces variables est String. u Dans l'appel de la procédure, nous avons utilisé "te" et "r". u Dans la Sub "convertir3bits", les mots "For... Next" délimitent une séquence de lignes d'instructions qui sont répétées pour toutes les valeurs de i de 0 à 7. u Dans ces lignes, nous comparons les bits reçus avec chaque entrée du tableau octal(). Si nous trouvons une égalité, nous convertissons alors i en chaîne de caractère (Str()) qui est déposée dans o, et la sub se termine ainsi (Exit Sub).

27 VB.NET ( Introduction à la programmation-objet ) u Si nous ne trouvons pas de correspondance entre les bits et leur chiffre octal dans le tableau octal, cela signifie que l'entrée bits est invalide. u Nous affichons alors un message d'erreur avec un MsgBox. u Note sur les tableaux: –Les tableaux en VB sont des structures de données qui contiennent entre autres une description de leurs dimensions. –Les fonctions UBound, LBound permettent d'obtenir les limites des indices des tableaux. –Évidemment, ces tableaux peuvent avoir plusieurs dimensions.

28 VB.NET ( Introduction à la programmation-objet ) u Le Debugger –Le "debugger" est très utile pour trouver les erreurs dans un programme et aussi pour comprendre le déroulement d'un programme. –D'abord, nous clickons dans la zone grise à gauche d'une ligne, ce qui insère un point d'arrêt (break point).

29 VB.NET ( Introduction à la programmation-objet )

30 u Cela signifie que si durant l'exécution, le programme rencontre une ligne avec un break point, l'exécution s'y arrêtera. u A ce moment, on peut examiner le contenu des variables en positionnant le curseur sur une variable. u Par exemple, nous pouvons démarrer le programme de conversion précédent.

31 VB.NET ( Introduction à la programmation-objet )

32 u Notez que "Start" va enclencher un processus de vérification de toute la syntaxe de votre programme avant de le démarrer comme tel. S'il y a une erreur, VB va vous donner un message. Vous devez au préalable corriger ces erreurs. Puis, entrez par exemple les bits "011" et clicker le bouton Convertir:

33 VB.NET ( Introduction à la programmation-objet ) u Le debugger stoppe sur le point d’arrêt:

34 VB.NET ( Introduction à la programmation-objet ) u Avec le menu "Debug/Step Over" nous pouvons exécuter la ligne suivante et le programme s'arrête de nouveau. Avec "Step Into" nous pouvons suivre le déroulement dans la procédure "convertir3bits":

35 VB.NET ( Introduction à la programmation-objet ) u L'option du menu "Debug/Quick Watch" permet d'examiner le contenu d'un objet. Ici nous avons sélectionné le tableau "octal" et le bouton Add Watch:

36 VB.NET ( Introduction à la programmation-objet ) u L’opération ADD WATCH permet d’observer le contenu d’un objet. Vous pouvez alors observer au bas à gauche, le contenu de la variable sélectionnée dans la section "Watch 1":

37 VB.NET ( Introduction à la programmation-objet ) u En faisant les touches de raccourcis "F10" plusieurs fois (Step Over), nous pouvons remarquer que la procédure copie la chaîne " 3" dans la variable "o" et sort de la procédure pour revenir dans la procédure appelante, après "call convertir3bits(te,r)".

38 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur simple (somme de deux nombres)

39 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur simple (liste des contrôles)

40 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur simple (Code associé au bouton btnSum) Private Sub btnSum_Click(ByVal sender as System.Object, _ ByVal e as System.EventArgs) _ Handles btnSum.Click Dim intFirst, intSecond, intSum As Integer intFirst = CInt(txtFirstNum.Text) intSecond = CInt(txtSecondNum.Text) intSum = intFirst + intSecond txtSum.text = CStr(intSum) End Sub

41 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur simple (Code associé au bouton btnClear) Private Sub btnClear_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) _ Handles btnClear.Click txtFirstNum.Text = "" txtSecondNum.Text = "" txtSum.Text = "" txtFirstNum.Focus() End Sub

42 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur simple (Résultat d’exécution)

43 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur simple (Opérations arithmétiques)

44 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur simple (Précédence des opérateurs arithmétiques) u L’ordre d’exécution des opérations arithmétiques –Parenthèses –Élever à la puissance –Négation –Multiplication ou division –Division entière –Modulo –Addition ou soustraction

45 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur simple (Fonctions de conversion)

46 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur de paiement de prêt (Forme principale)

47 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur de paiement de prêt (Code du bouton btnCompute_Click) Private Sub btnCompute_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) _ Handles btnCompute.Click Dim decAmount, decPayment As Decimal Dim intMonths As Integer Dim sngRate As Single decAmount = CDec(txtAmount.Text) intMonths = CInt(txtMonths.Text) sngRate = (CSng(txtRate.Text) / 100) / 12 decPayment = Pmt(sngRate, intMonths, -decAmount) txtPayment.Text = Format(decPayment, "currency") txtAmount.Text = Format(decAmount, "currency") End Sub

48 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur de paiement de prêt (Résultat d’exécution)

49 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur de paiement de prêt (Fonctions utiles) –Format( expression, format ) –FormatCurrency( expression )

50 VB.NET ( Introduction à la programmation-objet ) u Autre exemple: Calculateur de paiement de prêt (Fonctions prédéfinies)

51 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection –Le processus de sélection consiste à effectuer une comparaison –Le résultat d’une comparaison est booléen –SI VRAI, exécution d’un ensemble d’énoncés –SI FAUX, exécution d’un autre ensemble d’énoncés Example: If x=y Then ‘ensemble d’énoncés Else ‘autre ensemble d’énoncés End If

52 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection

53 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (opérateurs de comparaison)

54 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (opérateurs logiques)

55 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Exemple de calcul de la paie) If Hours > 40 Then Pay = 40*PayRate+1.5*(Hours-40)*Payrate Else Pay = Hours*Payrate End If

56 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Exemple de calcul de la paie: Forme principale)

57 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Exemple de calcul de la paie: Code associé au bouton BtnCompute_Click) Private Sub btnCompute_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles btnCompute.Click Dim decPayRate, decPay As Decimal Dim sngHours As Single decPayRate = CDec(txtPayRate.Text) sngHours = CSng(txtHours.Text) If sngHours >= 40 Then 'Compare hours work to 40 decPay = decPayRate * 40 + 1.5 * decPayRate * (sngHours - 40) Else decPay = decPayRate * sngHours End If txtPay.Text = Format(decPay, "currency") txtPayRate.Text = Format(txtPayRate.Text, "currency") End Sub

58 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Exemple de calcul de la paie: Résultat)

59 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection multiple

60 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection multiple (exemple d’affectation de cote)

61 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection multiple (exemple d’affectation de cote, code du bouton btnLetter_Click) Private Sub btnLetter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnLetter.Click Dim intAverage As Integer, strLetterGrade As String intAverage = CInt(txtAverage.Text) If intAverage >= 90 Then strLetterGrade = "A" ElseIf intAverage >= 80 Then strLetterGrade = "B" ElseIf intAverage >= 70 Then strLetterGrade = "C" ElseIf intAverage >= 60 Then strLetterGrade = "D" Else strLetterGrade = "F" End if txtLetter.Text = strLetterGrade End Sub

62 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection multiple (exemple d’affectation de cote, code de la barre de défilement vsbAverage_Scroll) Private Sub vsbAverage_Scroll(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.ScrollEventArgs) _ Handles vsbAverage.Scroll txtAverage.Text = CStr(vsbAverage.value) End Sub

63 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection multiple (exemple d’affectation de cote, résultat d’exécution)

64 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Case) Select Case expression Case condition1 ‘Code for condition1 Case condition2 ‘Code for condition2 Case condition3 ‘Code for condition 3 Case Else ‘Code for other conditions End Select

65 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Case: Conditions de comparaison)

66 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Case: exemple de détermination d’un cote) Private Sub btnLetter_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs)_ Handles btnLetter.Click Dim intAverage As Integer Dim strLetterGrade As String intAverage = CInt(txtAverage.Text) Select Case intAverage Case Is >= 90 strLetterGrade = "A" Case Is >= 80 strLetterGrade = "B" Case Is >= 70 strLetterGrade = "C" Case Is >= 60 strLetterGrade = "D" Case Else strLetterGrade = "F" End Select txtLetter.Text = strLetterGrade End Sub

67 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Case: exemple de calcul d’une facture, ajout d’un contrôle list box)

68 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Case: exemple de calcul d’une facture)

69 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de sélection (Case: exemple de calcul d’une facture, code du contrôle SelectedIndexChanged) Private Sub lstTypes_SelectedIndexChanged(ByVal sender As System.Object, - ByVal e As System.EventArgs) Handles lstTypes.SelectedIndexChanged Dim strDVDType As String, decPrice As Decimal strDVDType = lstTypes.SelectedItem Select Case strDVDType Case "Kids" decPrice = 0.99 Case "Regular" decPrice = 1.99 Case "Classic" decPrice = 2.99 End Select txtDVDPrice.Text = Format(decPrice, "c") End Sub

70 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de répétition

71 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de répétition

72 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de répétition (Exemple de calcul de la somme d’une suite de nombres introduits interactivement)

73 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de répétition (Exemple de calcul de la somme d’une suite de nombre: Code du bouton btnCalc_Click) Private Sub btnCalc_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) _ Handles btnCalc.Click Dim intTheValue, intSum As Integer Dim intNumValues, intCounter As Integer intSum = 0 If txtNumValues.Text = "" Then 'Number not entered MsgBox("Please enter number of values to be summed") Exit Sub 'Do not go into loop End If intNumValues = CInt(txtNumValues.Text) For intCounter = 1 To intNumValues intTheValue = CInt(InputBox("Enter next value")) intSum = intSum + intTheValue lstEntries.Items.Add(CStr(intTheValue)) Next txtSum.Text = CStr(intSum) lstEntries.Items.Add("Sum is " & Str(intSum)) End Sub

74 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Processus de répétition (Exemple de calcul de la somme d’une suite de nombre: Code du bouton btnClear_Click) Private Sub btnClear_Click(ByVal eventSender As System.Object, _ ByVal eventArgs As System.EventArgs) Handles btnClear.Click txtNumValues.Text = "" txtSum.Text = "" lstEntries.Items.Clear() 'Clear list box txtNumValues.Focus() 'Set focus to txtNumvalues End Sub

75 VB.NET ( Introduction à la programmation-objet ) u Instructions de contrôle: Voici un programme qui illustre la plupart des instructions de contrôle. Le programme reprend l'exemple de programme de conversion:

76 VB.NET ( Introduction à la programmation-objet )

77

78

79

80

81

82

83


Télécharger ppt "PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024."

Présentations similaires


Annonces Google