Le qbasic

 <<-Retour     Home        Contact       Blog       Vidéo     Suite->> 


 1- Aide
 2- Avant-propos
 3- Démarrer
 4- Marche à suivre
 5- La Base
 6- Données fixes
 7- Données variables
 8- Calcul
 9- Sauver
10- Instructions
11- Résumé du chapitre 1
12- Premier programme
13- Un titre
14- Les Variables
15- Balise
16- CLS
17- Tab(chiffre)
18- INPUT
19- UCASE$ (variable$)
20- IF ... THEN ...
21- USING ; "###.##"
22- END
23- TEST
24- Résumé du chapitre 2
25- Second programme
26- Description du programme.
27- OPEN
28- FIELD
29- match$
30- Lire une donnée du fichie
31- LSET
32- PUT
33- GOTO et GOSUB
34- Boucle
35- Résumé du chapitre 3
36- Soignez la présentation
37- LOCATE
38- PALETTE
39- COLOR
40- LPRINT
41- STRING$(...)
42- CHR$(...)
43- DATA
44- RETORE
45- RUN
46- DATE$
47- TIME$
48- SLEEP
49- SCREEN (x)
50- Divers
51- Résumé du chapitre
52- Derniers petits conseils
53- CALCULE BAS
54- TELEPHON BAS
55- Résumé du chapitre
56- Jeux de caractères ASCII
57- Index
58- Signes & Symboles
59- Les Liens

E-Mail
Home









Valid HTML 4.01 Transitional






catalogue
Votre webmaster :
www.webhabilis.be


25- Second programme
Second programme.

Nous voici déjà au second programme. Ce programme va permettre de créer un répertoire téléphonique. C´est-à-dire ;
  • Écrire des données,
  • conserver des données,
  • effacer OU
  • modifier des données stocker.

Pour ouvrir une nouvelle page cliquez sur l´icône <QBASIC>. dans votre répertoire <QBASIC>

À la page d´accueil, tapez sur la touche <Escape> pour fermer la boîte de dialogue et débuter une nouvelle page.
Vous êtes sur une page de travaille. Vous pouvez directement commencer à travailler en recopiant bien ce petit programme sur la nouvelle page.

´ REPERTOIRE D'ADRESSES

´LES VARIABLES
FICHIER% = 1 : limite = 500

ecran:
CLS
OPEN ´´R´´, FICHIER%, ´´PERSON.RND´´
IF ´´PERSON.RND´´ = ´´´´ THEN GOSUB CreeFichier

FIELD FICHIER%, 15 AS enr.nom$, 15 AS enr.Prenom$, 50 AS enr.adress$, 10 AS enr.tel$, 9 AS enr.member$, 6 AS enr.naiss$, 1 AS enr.pay$, 1 AS enr.ins$
FIELD FICHIER%, 107 AS enreg$

TrouverEnregistrement:
INPUT ´´TAPEZ UN NUMERO DE PERSONNE (1 à 500) SUIVI DE <ENTER>´´,person
IF person < 1 OR person > limite THEN GOTO TrouverEnregistrement
PRINT : PRINT ´´Numéro Personnel´´ , person
GOSUB AttenteEntreeClavier
IF enr.nom% = ´´´´ THEN GOSUB SousProgrammes ELSE GOSUBCasEnregistrementExistant

PRINT : PRINT ´´TAPEZ <F> pour Finir ou <C> pour Continuer´´
match$ = ´´FfCc´´ : GOSUB TestClavier
IF reponse > 2 THEN GOTO TrouverEnregistrement
GOTO TrouverEnregistrement

fin:
CLOSE
END

SousProgramme:
PRINT ´´Numéro Personnel´´ ; person ; ´´INCONNUE !!´´ : PRINT
PRINT ´´AJOUTER UN NOUVELLE ENREGISTREMENT <O>ui <N>on <Q>uitter´´
GOSUB AttenteEntreeClavier
match$ = ´´OoNnQq´´ : GOSUB TestClavier
IF reponse$ = ´´O´´ OR reponse$ = ´´o´´ THEN GOSUB AjoutRemplacementEnregistrement
IF reponse$ = ´´N´´ OR reponse$ = ´´n´´ THEN GOSUB TrouverEnregistrement
IF reponse$ = ´´Q´´ OR reponse$ = ´´q´´ THEN GOSUB fin

CasEnregistrementExistant:
PRINT : PRINT ´´EnregistrementExistant pour la fiche´´ ; person : PRINT
PRINT ´´NOM : ´´ ; enr.nom$
PRINT ´´PRENOM : ´´ ; enr.Prenom$
PRINT ´´ADRESSE : ´´ ; enr.adress$
PRINT ´´Téléphone : ´´ ; enr.rel$ : PRINT
PRINT ´´N. De membre : ´´ ; enr.member$ ; TAB(30) ; ´´Ref pays : ´´ enr.pay$ ; TAB(60); ´´Ref INS : ´´ enr.ins$
PRINT

Menu:
PRINT ´´<C>hanger <E>ffacer <I>mprimer <S>uite <Q>uitter´´
match$ = ´´CcEeIiSsQq´´ : GOSUB TestClavier
IF reponse$ = ´´C´´ OR reponse$ = ´´c´´ THEN GOSUB AjoutRemplacementEnregistrement
IF reponse$ = ´´I´´ OR reponse$ = ´´i´´ THEN GOSUB EcritSurLaDisquette
IF reponse$ = ´´S´´ OR reponse$ = ´´s´´ THEN GOSUB TrouverEnregistrement
IF reponse$ = ´´Q´´ OR reponse$ = ´´q´´ THEN GOSUB fin
RETURN

AjoutRemplacementEnregistrement:
PRINT ´´Ajout et/ou Remplacement de l'Enregistrement.´´ ; person
INPUT ´´NOM :´´ , nom$ : nom$ = UCASE$(nom$)
INPUT ´´PRENOM : ´´ , prenom$ : prenom$ = UCASE$(prenom$)
INPUT ´´ADRESSE : ´´ , adress$ : adress$ = UCASE$(adress$)
INPUT ´´TELEPHONE : ´´ , tel$
INPUT ´´DATE DE NAISSANCE : Jour : ´´ , jour$
INPUT ´´........................................ Mois : ´´ , mois$
INPUT ´´....................................... Annee : ´´ , annee$
INPUT ´´N. de membre : ´´, membre$
INPUT ´´PAYS : ´´ , pay$
INPUT ´´REF INS : ´´ , ins$
match$ = ´´OoNn´´
PRINT ´´<N>=Non pour recommencer <O>=Oui pour continuer´´
GOSUB TestClavier
IF reponse > 2 THEN GOTO AjoutRemplacementEnregistrement
LSET enr.nom$ = nom$
LSET enr.prenom$ = prenom$
LSET enr.adress$ = adress$
LSET enr.jour$ = jour$
LSET enr.mois$ = mois$
LSET enr.annee$ = annee $
LSET enr.tel$ = tel$
LSET enr.pay$ = pay$
LSET enr.ins$ = ins$
LSET enr.member$ = membre$
PUT FICHIER%, person
RETURN

CreeFichier:
PRINT ´´Création d'un fichier vide ... Patientez !´´
OPEN ´´R´´, fichier%, ´´PERSON.RND´´
FIELD fichier%, 107 AS enreg$
LSET enreg$ = ´´´´
FOR A = 1 to 500
PUT fichier%
NEXT
PRINT ´´LE FICHIER EST CREER !´´
RETURN

TestClavier:
reponse$= INKEY$
WHILE reponse$ = ´´´´
reponse$ = INKEY$
WEND
reponse = INSTR(match$, reponse$)
IF reponse = O THEN GOTO TestClavier
RETURN

AttenteEntreeClavier:
RETURN

EcritSurLaDisquette:
PRINT ´´FICHIER PERSONNEL : ´´ ; person : PRINT
PRINT ´´NOM : ´´; enr.nom$
PRINT ´´PRENOM : ´´; enr.prenom$
PRINT ´´ADRESSE : ´´; enr.adress$
PRINT ´´Téléphone : ´´; enr.tel$ :
PRINT ´´N. membre : ´´ ; enr.member$ ; TAB(30); ´´Ref PAYS : ´´ ; enr.pay$ ; TAB(60) ; ´´Ref INS : ´´ ; enr.ins$
RETURN




Une fois recopier, sauver votre travaille.

Sauver ce programme en cliquant sur <Fichier> ou si vous préférez les raccourcis clavier c´est :
<alt>
ensuite la lettre <F>
Ensuite cliquez sur <Enregistrer sous ...> ou tapez sur la lettre <R>.

Le programme vous demande un nom de fichier. Vous pouvez lui donner le nom de votre choix huit lettres au maximum. Dans l´exemple, je l´ai appelé Adresses.

Après le nom, le programme lui donnera l´extension de trois lettres BAS bien que vous puissiez mettre l´extension de votre choix, mais à ce stade ci je vous déconseille de modifier ces trois lettres.

Pour voir le résultat taper la touche de fonction <F5>.

Si le programme ne fonctionne pas bien, VERIFIER si vous avez bien recopier l´exemple en respectant bien la ponctuation, les espaces et que vous n´ayez pas oublié une ligne (cela peut arriver).





26- Description du programme.
Description du programme.

Je ne vais pas revenir sur chaque ligne et chaque commande déjà vues au chapitre précédent, mais uniquement sur les nouvelles commandes vues dans ce chapitre.

De plus, il semble difficile de donner une explication longue et détaillée pour chaque commande qui nécessiterait un chapitre entier par commande. Ce qui n´est pas le but de ce site.

Maintenant analysons ensemble ce programme pas à pas.

Après le sous-titre ´ Les variables nous pouvons voir la commande :
FICHIER%=1

Pour lire dans un fichier ou écrire dans ce fichier il faut lui donner un numéro de fichier : c´est à dire FICHIER% = 1

Ensuite, il faut donner la taille du nombre de données qu'on souhaite dans le fichier. En claire combien d´adresses allons nous y placer. Ici, la limite a été fixée à 500 entrées.


´ REPERTOIRE ADRESSES

´LES VARIABLES

FICHIER% = 1 : limite = 500








27- La fonction OPEN.
La fonction OPEN.

Nous y voilà ! J'aurais presque envie de dire que c'est tout l'intérêt d'un programme informatique. Pouvoir écrire, conserver et modifier des donnés.

Je passe à propos de la balise <ecran:> avec les deux points [ : ] et la commande CLS car pour vous, c'est du déjà vu !

On arrive à la commande <OPEN>.


´ REPERTOIRE D'ADRESSES

´LES VARIABLES
FICHIER% = 1 : limite = 500

ecran:
CLS

OPEN ´´R´´, FICHIER%, ´´PERSON.RND´´



OPEN ´´R´´, FICHIER%, ´´PERSON.RND´´

´´R´´ est le mode, ou comment nous allons ouvrir le fichier. R pour Random, c´est-à-dire un accès aléatoire.

Pour OPEN (ouvrir) le fichier en mode Random, il faut savoir quel est le numéro de fichier : c´est-à-dire celui indiquer dans les variables : FICHIER%=1 qui se nomme ´´PERSON.RND´´.

Les trois dernière lettre ´´.RND´´ sont l´abréviation de RANDOM.


ecran:
CLS
OPEN ´´R´´, FICHIER%, ´´PERSON.RND´´ IF ´´PERSON.RND´´ = ´´´´ THEN GOSUB CreeFichierFIELD FICHIER%, 15 AS enr.nom$, 15 AS enr.Prenom$, 50 AS enr.adress$, 10 AS enr.tel$, 9 AS enr.member$, 6 AS enr.naiss$, 1 AS enr.pay$, 1 AS enr.ins$FIELD FICHIER%, 107 AS enreg$

[ ... ]

fin:
CLOSE
END




Après avoir ouvert un fichier en lecture avec la fonction OPEN il faut fermer le fichier avec la fonction CLOSE. C´est pourquoi après la balise fin: la fonction de clôture CLOSE a été placée.





28- La commande FIELD
La commande FIELD.

Lorsqu'on écrit dans un fichier, il faut que le programme sache combien de variable et la longueur des ces variables.

A l'image 29 vous pouvez lire :

FIELD FICHIE%,


FIELD signifie champ, c´est-à-dire que les FIELD dans le FICHIER% seront de 107 et là vous allez attribuer la longueur des champs par donnée.

A propos AS signifie comme.

Donc, si la ligne du programme serait en français cela donnerait ceci :
une longueur comme nom-du-champ.

Mais comme c'est en anglais cela donne ceci :
15 AS enr.nom$,
50 AS enr.adress$

C´est à dire que :
pour l´enregistrement du champ appelé nom$ vous attribuez 15 caractères.
Pour l´enregistrement du champ address$ vous attribuer 50 caractères. Etc.

Et le total des caractères attribués dans le FICHIER% est bien précisé dans la commande FIELD dans notre exemple cela fait 107 caractères.

FIELD FICHIER%, 107 AS enreg$


Chiffre que vous pouvez modifier suivant vos besoins.




29- match$.
match$.


match$ = ´´FfCc´´ : GOSUB TestClavier

[ ... ]

TestClavier:
reponse$= INKEY$
WHILE reponse$ = ´´´´
reponse$ = INKEY$
WEND
reponse = INSTR(match$, reponse$)
IF reponse = O THEN GOTO TestClavierRETURN




A l´image ci-dessus, il y a deux partie. La première partie c´est l´instruction

match$ = ´´ ... ´´


La seconde partie, c´est ce qui suit la balise

TestClavier:


qui peut se placer à la fin du programme ou autre part selon votre convenance.

En résumé, cette instruction permet de bloqué le clavier de l´utilisateur sans risque.

Entre guillemets vous placer la ou les lettres, le ou les chiffres à répondre à la question posée avec INPUNT.

Dans notre programme on souhaite que l'utilisateur tape une des lettres suivantes : F, f, C ou c. Lorsque une de ces lettres aura été choisie le clavier se débloquera et suivant la réponse le programme agira.






30- Lire une donné du fichie
Lire une donné du fichier.

Etant donné que notre fichier est toujours ouvert en lecture il suffira de demander de PRINTER un enregistrement, et il sera affiché à l´écran, c´est pas gentil ça !

C'est pourquoi, par exemple, pour obtenir le nom on écrira dans le programme :

PRINT enr.nom$


Pour obtenir le pr´nom, on écrira :

PRINT enr.Prenom$


Ainsi de suite pour afficher à l´écran les données à visualisées.

CasEnregistrementExistant:
PRINT
PRINT ´´Enregistrement Existant pour la fiche´´ ; person
PRINT
PRINT ´´NOM : ´´ ; enr.nom$
PRINT ´´PRENOM : ´´ ; enr.Prenom$
PRINT ´´ADRESSE : ´´ ; enr.adress$
PRINT ´´Téléphone : ´´ ; enr.rel$ : PRINT
PRINT ´´N. De membre : ´´ ; enr.member$ ; TAB(30) ; ´´Ref pays : ´´ enr.pay$ ; TAB(60); ´´Ref INS : ´´ enr.ins$
PRINT



De cette manière vous allez afficher à l´écran chaque variable que vous avez mis en mémoire.





31- LSET
La fonction <LSET>

LSET enr.nom$ = nom$
LSET enr.prenom$ = prenom$
LSET enr.adress$ = adress$
LSET enr.tel$ = tel$
LSET enr.pay$ = pay$
LSET enr.ins$ = ins$
LSET enr.member$ = member$




Je vous entends déjà me dire : ´´- Lire un fichier tampon avec PRINT enr.nom$, c´est bien ! Mais, ... Comment on écrit les données dans ce fichier tampon ?´´

C´est là que j´interviens en vous disant LSET.

Cette fonction transfère des données dans un fichier tampon comme à la présentation précédente.





32- PUT
Non, Ce n'est pas un gros mot !

Gestion de vos données.

La fonction PUT écrit dans un fichier le contenu d´un tampon ou d'une variable.

C´est à dire que si vous avez déjà écrit dans FICHIER% un enr.egistrement, pour modifier cet enregistrement, il faut la fonction PUT.

Cela vous permettra d´écraser les anciennes données et de les remplacer ou de les effacer.

Voici un exemple :

TYPE enrTest
eNom AS STRING * 20
res AS SINGLE
END TYPE
DIM enr AS enrTest
OPEN "FINAL.DAT" FOR RANDOM AS #1 LEN = LEN(enr)
enr.eNom = "MarySa"
enr.res = 99
PUT #1, 1, enr
CLOSE #1
OPEN "FINAL.DAT" FOR RANDOM AS #1 LEN = LEN(enr)
GET #1, 1, enr
PRINT "NOM : ", enr.eNom
PRINT "RESULTAT :", enr.res
CLOSE #1
KILL "FINAL.DAT"



C'est à dire que PUT écrit dans un fichier le contenu d'un tampon ou d'une variable.

PUT [#]numFich%[,[numEnr&][,variable]]

numFich%    Numéro d'un fichier ouvert.
numEnr&    Pour les fichiers à accès aléatoire, numéro de
l'enregistrement à lire ou à écrire. Pour les fichiers binaires, position de l'octet où l'écriture ou la lecture commence.
variable    Pour GET, variable employée pour recevoir les données
à partir du fichier. Pour PUT, variable contenant les
données à écrire sur le fichier.
Une variable d'enregistrement est généralement employée.





33- GOTO et GOSUB
GOTO et GOSUB


Ces fonctions auraient pu être aborder plutôt. Mais tout vient à point à qui sait attendre ( jolie formule, il faudra que je la replace !).

Les deux fonctions agissent comme un aiguillage.

La fonction GOTO fait suivre le programme vers un endroit précis du programme, généralement vers une balise.

Par contre la fonction GOSUB à la même fonction que GOTO mais cette fonction fait suivre le programme vers un endroit précis du programme, afin de réaliser un procédure. Après avoir terminé la procédure, il faut la fonction RETURN pour revenir là où GOSUB est intervenu pour continuer la suite du programme.

Voici un exemple plus clair.
´La commande GOTO

debut:
CLS
INPUT ´´Quel est votre prénom ´´ ; prenom$
PRINT
PRINT ´´Bonjour ´´ ; prenom$
PRINT ´´Votre choix ?´´
PRINT ´´- Tapez 1 et <ENTER> pour recommencer ?´´
PRINT ´´- Tapez 2 et <ENTER> pour visualiser à l´écran le prénom, l´heure et quitter le programme ?´´
PRINT
INPUT ´´Votre choix est le ´´ ; choix
IF choix = 1 THEN GOTO debut
IF choix = 2 THEN GOTO voir
PRINT ´´Vous avez tapez autre chose que 1 ou 2 !! ... Fin du programme...´´

GOTO fin

voir:
PRINT prenom$ ; ´´ ´´ ; TIMES$

fin:
PRINT ´´Au revoir ...´´
END
 



Voilà, je pense que l´exemple est suffisamment claire, n´est-il pas ?
Mais si ce n´est pas le cas voyez avec l´exemple suivant au point 34- Boucle






34- Boucle
Boucle


INPUT ´´Tapez <A> ou <B> ´´ ; reponse$
IF reponse$ = ´´A´´ OR reponse$ = ´´a´´ THEN GOTO fin
IF reponse$ = ´´B´´ OR reponse$ = ´´b´´ THEN GOSUB boucle
PRINT ´´ ... La fin de la boucle.´´
END

boucle:
PRINT : PRINT ´´VOUS AVEZ CHOISI LA LETTRE <B> !´´
PRINT
RETURN

fin:
PRINT ´´VOUS AVEZ TAPEZ LA LETTRE <A> !´´
END




En lissant le programme vous constaterez que vous connaissez déjà toutes les fonctions.

Vous remarquerez que le programme ne se lis pas de la première ligne à la deuxième puis troisième et ainsi de suite. Au contraire c´est le principe de l´autoroute entre le point A et le point B vous faites une escale pour aller manger, une autre pour faire une photo, etc.





35- Résumé du chapitre.
Résumé du chapitre.

Nous avons réalisé un programme un peu plus élaboré.

Des commandes importantes ont été utilisées telles que : OPEN, CLOSE, FIELD, AS, match$, PUT, GOTO, GOSUB, RETURN, LSET.

Avec les commandes vues au chapitre 1 et 2, vous pouvez déjà réaliser vos propres programmes un peu plus élaborés, suivant vos besoins ou ceux de vos clients.





  Haut de page  
Page précédente   Page suivante
  Home  


Powered by : www.webhabilis.be