Programmation visuelle - Pages de Michel Deloizy

Transcription

Programmation visuelle - Pages de Michel Deloizy
Histoire…
„
„
1945 : John Von Neumann propose l'architecture interne d'un
calculateur universel (ordinateur)
1946 : construction de l'ENIAC à l'Université de Pennsylvanie
…
Programmation visuelle
…
…
…
Borland C++ Builder
Visual Basic
VBA
„
1949 : construction de l'EDVAC
…
…
„
„
„
„
„
„
„
„
„
„
„
1959 : conception de COBOL
1960 : conception de ALGOL (ALGOrithmic Language)
1965 : conception du langage BASIC (Beginners' All-purposes
Symbolic Instruction Code)
1969 : invention du langage PASCAL
1972 : conception du langage C
1975 : Bill Gates commercialise le langage BASIC. Création
de la société Microsoft.
1983 : conception du langage ADA (extension du PASCAL)
1984 : Le McIntosh d'Apple introduit une interface graphique
(menus, icônes...) et la souris
1984 : conception du langage C++
1995 : Windows 95 généralise l'interface graphique sur PC
architecture de Von Neumann
stockage des données sur disques magnétiques
1958 : IBM 7044
…
Langages
30 tonnes
160m2
mémoire constituée de 18 000 tubes à vide
puissance est équivalente à celle d'une petite calculette
actuelle
64 Koctets de mémoire
Programmation fonctionnelle
„
Découpage du programme en fonctions
…
…
„
Programme exécuté de manière séquentielle
…
…
…
„
„
Fonction principale (main)
Fonctions appelées
„ Analyse descendante du problème
1 point d’entrée
Parcours du programme par étapes successives dans
l’ordre défini par le programmeur
1 point de sortie
Interactivité faible
Adapté aux interfaces de type texte
1
Interfaces en mode texte
„
Interpréteur de commande attend la saisie de « mots »
…
…
„
…
…
…
L’interpréteur l’analyse
Le programme correspondant est cherché
Le programme est exécuté
Retour à l’interpréteur de commandes
Interpréteur de commandes masqué
…
…
…
„
…
…
Gestion disques
Gestions périphériques (imprimantes, réseaux, …)
Programmation d’une interface graphique
Complexe
…
…
…
…
…
Gestion des fenêtres
Gestion de la souris
Détection / Traitement des actions
Scrutation permanente des entrées
Forte dépendance du matériel
„
… à réaliser en plus de l’application
„
Faible portabilité
Utilisation d’icônes
Utilisation d’un dispositif de pointage (souris)
Utilisation réduite du clavier
L’utilisateur communique au système d’exploitation les
commandes grâce à des « clics », « double clics », « clic
droit », « glisser-déplacer », …
Le système d’exploitation exécute des tâches annexes en
parallèle :
…
„
„
mode com1:9600,n,8,1,p
cat readme.txt | more
Quand une commande est tapée et validée :
…
„
Interfaces en mode graphique
Traduit par l’interpréteur de commandes comme :
„ Sélectionner
„ Exécuter
„ Fonctions supplémentaires
„ Prendre le nom du fichier et …
Apports d’un système graphique
„
Pour l’utilisateur :
…
…
…
„
Confort
Visibilité
Comportement « généralisé » des programmes
Pour le programmeur :
…
…
…
…
Prise en charge de l’interface graphique
Prise en charge des organes de pointage
Chaque élément graphique peut recevoir ou communiquer
des informations
„ Gestion par le système d’exploitation
Exemples :
„ Clic sur un bouton
„ Mouvement d’une fenêtre, …
2
Principe de Windows
„
Toute action génère un ou plusieurs messages
…
…
…
…
…
„
…
…
…
…
…
…
…
File d’attente de Windows
Files d’attente de l’application (1 par thread)
hwnd :HWnd;
message:word;
wParam:word;
lParam : LongInt;
time : Longint;
pt:TPoint;
fenêtre destinataire
const. du message permet de l'identifier
paramètre codé sur un mot
paramètre codé sur un entier long
heure de la création du message
position de la souris en coord. écran
Déclenchement d’événements
Programmation événementielle
„
Structure d’un message :
L’application scrute en permanence les messages
…
„
„
Déplacement de la souris
Click gauche
Redimensionner une fenêtre
Top horloge
…
Les messages sont placés dans des files d’attente (FIFO)
…
„
Message
Messages traités par l’application
Événements
…
…
…
…
…
Associés aux objets
Déclenchés par messages
Exemple : Objet Button
„ OnClick
„ OnDoubleClick
„ …
=> fonctions associées aux objets
=> en C++ : méthodes de la classe
Conception d’une application
„
Définition de l’interface (ergonomie)
…
…
…
…
…
„
„
„
Feuilles
Boutons
Cases à cocher
Boites de dialogue
…
Paramétrage initial des objets
Événements à prendre en compte pour chaque objet
Écriture des fonctions correspondant
Un programme est constitué d’un ensemble de méthodes
appelées automatiquement lors de la réception des messages
3
Exemple : un convertisseur francs/euros
„
On souhaite réaliser un convertisseur Francs/Euros
…
Création de la fiche
„
Fichier -> Nouvelle application
…
Présentation :
…
…
…
…
Une acquisition dans la zone « Francs » entraîne une
conversion immédiate dans la zone « Euros » et vice versa
On quitte le programme en cliquant sur « Quitter » (après
confirmation de l’utilisateur)
Propriétés de la feuille
„
„
„
Name
Caption
BorderStyle
…
…
…
…
„
bsDialog
bsNone
bsSingle
bsSizeable
BorderIcons
…
…
…
…
biSystemMenu
biMinimize
biMaximize
biHelp
Project1
Form1
Unit1.cpp
„
Redimensionner la feuille (Form1)
„
Depuis la palette standard :
…
…
…
Mettre 2 Edit (zone d’édition)
Mettre 2 Label (texte)
Mettre un bouton
Outils de conception
Propriétés principales des objets
„
TEdit
…
…
…
„
TLabel
…
…
„
Name
Text
OnChange, OnKeyPress, OnExit (événements)
Name
Caption
TButton
…
…
…
Name
Caption
OnClick (événement)
4
Propriétés générales
„
TabStop
…
…
„
ShowHint
…
…
„
void SetFocus() :
„
void SendToBack() :
„
void BringToFront() :
„
void Close() :
…
…
…
…
L’élément est visible ou caché
…
Enabled
…
„
Permet l’affichage d’un menu contextuel lorsque la souris
est sur l’élément
Hint contient le texte à afficher
„
Visible
…
„
Autorise la sélection des éléments successifs d’une fenêtre
par l’appui de la touche TAB
TabOrder indique l’ordre du parcours
Méthodes
…
Donne le focus à l’objet désigné (fenêtre ou contrôle)
Envoie la fenêtre en arrière-plan
Amène la fenêtre au premier plan
Ferme une fenêtre
Appelle tout d’abord CloseQuery()
Termine le programme s’il s’agit de la fenêtre principale
L’élément peut déclencher un événement ou non
Exemple :
EdInput->Enabled = true;
Affichage de messages (erreurs, infos, …)
Affichage d’une nouvelle fenêtre
int MessageBox(char * Text, char * Caption, int Flags);
„ Flags :
„
…
…
…
…
…
…
„
MB_ABORTRETRYIGNORE
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL
Renvois :
…
…
…
…
…
…
…
IDOK
IDCANCEL
IDABORT
IDRETRY
IDIGNORE
IDYES
IDNO
„
Fenêtre créée sous l’IDE BCB (Nouvelle fiche) -> FormX
Faire apparaître la fenêtre (bloque l’application en cours) :
„
Revenir à la fenêtre initiale :
…
…
…
Res = FormX->ShowModal()
Mettre dans ModalResult une valeur non nulle
=> renvoyée dans Res
Les constantes suivantes sont définies :
„ mrNone (=0) par défaut, lors de l’appel de ShowModal
„ mrOk, mrCancel
„ mrAbort, mrRetry
„ mrIgnore
„ mrYes, mrNo
Exemple :
Application->MessageBox("Valeur incorrecte" , "Erreur", MB_OK);
„
5
Autre application : Tirage du Loto
„
Compléments au programme
On veux réaliser un programme réalisant un tirage de Loto
(aléatoire) avec une animation pendant le tirage :
…
…
…
…
…
Les 6 boules sont initialement rouges
À partir du lancement du tirage, les boules deviennent
vertes successivement, façon chenillard (une seule boule
verte à un instant donné, pendant 100 ms).
Chaque seconde, un numéro est tiré.
Lorsqu’un numéro est tiré, il est mis dans une boule qui
devient fixe, verte et contient la valeur du tirage.
Le processus continue jusqu’à l’obtention des 6 numéros.
„
Comment autoriser ou interdire un nouveau tirage pendant le
déroulement d’un tirage ?
„
Mettre un menu permettant :
…
…
…
…
de paramétrer la vitesse du chenillard
de paramétrer l’intervalle entre deux sorties de numéros
d’enregistrer le résultat dans un fichier texte
d’autoriser ou non un nouveau tirage
exemple
Travaux pratiques :
„
Faire un programme permettant de trouver le nombre
d’occurrences d’un mot se trouvant dans un fichier
…
…
…
…
…
Le mot sera communiqué dans une zone de texte
Le fichier sera choisi grâce à une boite de dialogue
Le résultat sera porté dans une Memo
On fera apparaître une barre de progression pendant la
recherche
L’utilisateur pourra choisir
„ De distinguer les minuscules/majuscules ou non
„ De prendre en compte uniquement les mots complets ou non
Graphiques
„
Utilisation de Canvas
…
…
…
…
…
„
„
Objet associé aux fenêtres ou au imprimantes
Écriture de texte (TextOut, TextRect, TextHeight, TextWidth)
Dessin de lignes (MoveTo, LineTo, …)
Définit les styles de traits, les couleurs, les polices
Affichage d’images
Le dessin peut être réalisé dans un Canvas associé à une
fenêtre, puis être reproduit sur imprimante en utilisant le
même code
Limites de dessin : (0,0) en haut à gauche
…
…
Form : ClientWidth, ClientHeight
Printer : PageWidth, PageHeight
6
Redessiner une fenêtre
„
Événement OnPaint :
…
…
„
La fenêtre a été masquée ou modifiée (partiellement ou
totalement) :
„ Par une autre fenêtre
„ Par une réduction ou agrandissement
„ Par un déplacement
Les contrôles sont redessinés automatiquement
Imprimante
„
Utilisation de Printer
TPrinter Prntr = Printer();
TRect r=Rect(200,200,Prntr->PageWidth–200,
Prntr->PageHeight–200);
Prntr->BeginDoc();
Prntr->Canvas->TextRect(r,200,200,Memo1->Lines->Text);
Prntr->EndDoc();
Repaint() : (méthode)
…
Force le réaffichage immédiat
Exécutable autonome
„
Projet->Options->Paquets :
„
Lieur :
…
…
…
Ne pas construire avec les paquets d’exécution
Ne pas inclure les informations de débogage
Ne pas utiliser la RTL dynamique
„
Compilateur :
„
Désactiver CodeGuard
…
Visual Basic
Version « Finale » (optimisation)
De Microsoft
7
Basic : Historique
„
Basic :
…
…
…
…
…
„
« Beginner's All-purpose Symbolic Instruction Code »
Inventé en 1964 par J.G. Kemeny et T.H. Kurtz
Langage généraliste dérivé du Fortran
But : permettre aux étudiants des filières non scientifiques
d'utiliser les ordinateurs
Fourni dans les premiers µOrdinateurs des années 1980 :
Basic interprété
Visual Basic : évolution 1
„
…
…
…
„
…
…
Basica
GW Basic
QBasic
…
…
„
Début du « RAD » (Rapid Application Development)
Grande facilité de développement
Construction graphique
Visual Basic 2 & 3 :
…
Basics Microsoft (versions DOS) :
…
1991 : Visual Basic 1
Grilles de propriétés
Programmation de bases de données DAO (objets d’accès
aux données)
OLE (Objet Linking and Embedding)
1995 : Visual Basic 4
…
…
…
Exécutables 32 bits
Contrôles active X
Bibliothèques de Classes
Visual Basic : évolution 2
„
„
1995 : Explosion d’Internet
Visual Basic 5 & 6 :
…
„
Développement pour le WEB
„ WebClasses
„ documents ActiveX
„ Dynamic HTML (DHTML)
2001 : Visual Basic .NET
…
…
…
Pas compatible avec les versions précédentes
„ Suppression de GOTO, GOSUB
„ Déclaration obligatoire des données
Langage objet
Perte de la simplicité initialement voulue par les concepteurs
8

Documents pareils