Gérer les nombres

GW-BASIC (PC-BASIC)

Initiation au langage Basic

Avez-vous essayé d'écrire des programmes pour gérer beaucoup d'informations ?

Si c'est le cas, vous serez heureux d'apprendre que GW-BASIC dispose d'un outil facile à gérer pour suivre les informations.

Supposons, par exemple. vous voulez écrire un programme qui vous permette de gérer ces informations :

District

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Votes pour le candidat A

143
215
125
331
442
324
213
115
318
314
223
152
314
92

Jusqu'à maintenant, vous avez utilisé des variables pour stocker des informations en mémoire. Par exemple, pour comptabiliser les votes des trois premiers districts, tapez :

A = 143
B = 215
C = 125

Mais voici un meilleur type de variable que vous pouvez utiliser. Tapez:

A(1) = 143
A(2) = 215
A(3) = 125

Chacune des variables ci-dessus a un "indice" (1), (2) et (3). Mis à part la façon dont ils utilisent l'indice, ces variables fonctionnent de la même manière que toutes les autres variables. A voir par vous-même. tapez ces deux lignes :

PRINT A; B; C
PRINT A(1); A(2) ; A(3)

Maintenant, jetez un coup d'œil et comparez les deux programmes ci-dessous. Les deux fonctionnent de la même manière : le programme 1 utilise des "variables simples". Le programme 2 utilise des "variables indicées".

PROGRAM 1

5 CLS
10 DATA 14,215,125,331,442
20 DATA 324,213,115,318,314
30 DATA 223,152,314,92
40 READ A ,B,C,D,E
50 READ F,G,H,I ,J
60 READ K,L,M,N
70 INPUT "DISTRICT NO. (1-14)"; Z
75 IF Z>14 THEN 70
80 IF Z=1 THEN PRINT A "VOTES"
90 IF Z=2 THEN PRINT B "VOTES"
100 IF Z=3 THEN PRINT C "VOTES"
110 IF Z=4 THEN PRINT D "VOTES"
120 IF Z=5 THEN PRINT E "VOTES"
130 IF Z=6 THEN PRINT F "VOTES"
140 IF Z=7 THEN PRINT G "VOTES"
150 IF Z=8 THEN PRINT H "VOTES"
160 IF Z=9 THEN PRINT I "VOTES"
170 IF Z=10 THEN PRINT J "VOTES"
180 IF Z= 11 THEN PRINT K "VOTES"
190 IF Z= 12 THEN PRINT L "VOTES"
200 IF Z= 13 THEN PRINT M "VOTES"
210 IF Z= 14 THEN PRINT N "VOTES"
220 GOTO 70

PROGRAM 2

5 CLS
10 DATA 14,215,125,331,442
20 DATA 324,213,115,318,314
30 DATA 223,152,314,92
40 DIM A(14)
50 FOR X = 1 TO 14
60 READ A (X)
70 NEXT X
80 INPUT "DISTRICT NO. (1-14)"; Z
85 IF Z<0 OR Z > 14 THEN 80
90 PRINT A(Z) "VOTES"
100 GOTO 80

Le programme 1 est lourd à écrire. Le programme 2 est court et simple à écrire.

Entrez et exécutez le programme 2. Voici comment cela fonctionne :

La ligne 40 réserve de l'espace pour une liste d'informations appelée "tableau (Array)" nommé A-avec 14 éléments indicés.

Les lignes 50 et 70 configurent une boucle pour compter de 1 à 14. la ligne 60 lit les 14 votes dans le tableau A :

La ligne 80 vous demande d'entrer un indice et la ligne 90 affiche l'élément que vous avez demandé.

Maintenant que vous avez stocké des informations dans un tableau, il est facile de les gérer. Par exemple, vous pouvez ajouter ces lignes, qui vous permettent de modifier les informations :

92 INPUT "VOULEZ-VOUS DES VOTES AJOUTER A CECI OUI ou NON "; R$
94 IF R$ = "NON" OR R$ = "non" THEN 80
96 INPUT "COMBIEN DE VOTES DE PLUS"; X
97 A(Z) = A(Z) + X
98 PRINT "TOTAL DES VOTES POUR LE DISTRICT" Z "EST MAINTENANT" A(Z)

Ou vous pouvez ajouter ces lignes pour afficher les informations :

72 INPUT "VOUS VOULEZ VOIR TOUS LES TOTAUX ";S$
74 IF S$ = "OUI" OR S$ = "oui" THEN GOSUB 110
100 GOTO 72
110 PRINT "DISTRICT", "VOTE5"
120 FOR X = 1 TO 14
130 PRINT X, A(X)
140 NEXT X
150 RETURN

Un deuxième tableau

Supposons que vous souhaitiez également suivre les votes d'un deuxième candidat ---- Candidat B :

Résultats des élections

District

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Votes pour le candidat A

143
215
125
331
442
324
213
115
318
314
223
152
314
92
Votes pour le candidat B

678
514
430
475
302
520
613
694
420
518
370
412
460
502

Pour ce faire, ajoutez un autre tableau au programme. Appelez-le tableau (Array) B. Le programme suivant enregistre les votes pour le candidat A (Array A) et le candidat B (Array B) :

5 CLS
10 DATA 14,215,125,331,442
20 DATA 324,213,115,318,314
30 DATA 223,152,314,92
40 DATA 678,514,430,475,302
50 DATA 520,613,694,420,518
60 DATA 370,412,460,502
70 DIM A(14), B(14)
80 FOR X = 1 TO 14
90 READ A (X)
100 NEXT X
110 FOR X = 1 TO 14
120 READ B (X)
130 NEXT X
140 INPUT "DISTRICT NO. (1-14)"; Z
145 IF Z<0 OR Z > 14 THEN 140
150 INPUT "CANDIDAT A OU B "; R$
160 IF R$ = "A" OR R$ = "a" THEN PRINT A(Z)
170 IF R$ = "B" OR R$ = "b" THEN PRINT B(Z)
180 GOTO 140

Programme faites-le vous même

Écrivez un programme d'inventaire qui garde la trace de 12 articles numérotés de 1 à 12 et la quantité que vous avez de chaque article.

5 CLS
10 DATA 33,12,42,13,15,23
20 DATA 25,30,33,27,14,8
30 DIM I(12)
40 FOR X = 1 TO 12
50 READ I (X)
60 NEXT X
70 INPUT" ARTICLE NO. "; N
75 IF N<0 OR N > 12 THEN 70
80 PRINT "INVENTAIRE POUR L'ARTICLE " N "EST" I(N)
90 GOTO 70

Distribuez les cartes

Pour garder une trace de 52 "cartes", vous devez utiliser un tableau. Effacez votre programme et tapez et exécutez celui-ci :

40 FOR X = 1 TO 52
50 C = INT(52*RND(1)+1)
90 PRINT C;
100 NEXT X

L'ordinateur distribue 52 "cartes" aléatoires, mais si vous regardez attentivement, vous voyez que certaines cartes sont identiques.

Pour vous assurer que l'ordinateur ne distribue chaque qu'une seule fois, vous pouvez créer un autre tableau - Array T - qui garde une trace de chaque carte distribuée. Ajoutez ces lignes :

5 DIM T(52)
10 FOR X = 1 TO 52
20 T (X) = X
30 NEXT X

Les lignes ci-dessus construisent le tableau T et y placent toutes les 52 cartes : T(l) = 1, T(2) = 2, T(3) = 3 ... T(52) = 52.
Ajoutez ensuite quelques lignes qui "effacent" chaque carte du tableau T après qu'elle a été distribuée. Taper:

60 D(X) = C
80 T(C) = 0

Maintenant, l'ordinateur ne peut pas distribuer deux fois la même carte au hasard. Par exemple, supposons que l'ordinateur distribue d'abord un deux. La ligne 80 change la valeur de T(2)s de 2 à 0.

Supposons ensuite que l'ordinateur en distribue deux autres. Puisque T(2) est maintenant égal à 0.
La ligne 60 retourne à la ligne 50 pour distribuer une autre carte.

Exécutez le programme. Notez comment l'ordinateur ralentit à la fin du pont. Il doit essayer plusieurs cartes différentes avant d'en trouver une qu'il n'a pas encore distribuée.

Pour jouer à un jeu de cartes, vous devez garder une trace des cartes qui ont été distribuées. Vous pouvez le faire en construisant un autre tableau-Array D.

Ajoutez ces lignes, qui stockent toutes les cartes, dans l'ordre où elles sont distribuées, dans Array D :

7 DIM D(52)
60 D(X) = C
90 PRINT D(X);

Programme faites-le vous même

Ajoutez des lignes au programme pour qu'il n'affiche que votre "main" - les 5 premières cartes distribuées.

1 RANDOMIZE TIMER
5 DIM T(52)
7 DIM D(52)
10 FOR X = 1 TO 52
20 T (X) = X
30 NEXT X
34 CLS
36 PRINT " DISTRIBUTION DES CARTES"
40 FOR X = 1 TO 52
50 C = INT(52*RND(1)+1)
55 IF T (C) = 0 THEN 50
60 D(X) = C
70 SOUND 128,1
80 T(C) = 0
90 PRINT D(X);
100 NEXT X
110 CLS
120 PRINT "Votre Main"
130 FOR X = 1 TO 5
140 PRINT D(X) " ";
150 NEXT X

Voir aussi BLACKJAC.BAS

Tableau à deux dimensions

Le tableau des résultats des élections pour les deux candidats peut être représenté dans un seul tableau à deux dimensions.

  Colonne 1 Colonne 2
No Ligne

1
2
3
4
5
6
7
8
9
10
11
12
13
14
District

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Votes pour le candidat A

143
215
125
331
442
324
213
115
318
314
223
152
314
92
Votes pour le candidat B

678
514
430
475
302
520
613
694
420
518
370
412
460
502

La variable tableau A a deux dimensions, 14 lignes et 2 collonnes

70 DIM A(14,2)

Le programme ci-dessous attribut les valeurs pour la première colonne et ensuite pour la deuxième

5 CLS
10 DATA 14,215,125,331,442
20 DATA 324,213,115,318,314
30 DATA 223,152,314,92
40 DATA 678,514,430,475,302
50 DATA 520,613,694,420,518
60 DATA 370,412,460,502
70 DIM A(14,2)
80 FOR X = 1 TO 14
90 READ A(X,1)
100 NEXT X
110 FOR X = 1 TO 14
120 READ A(X,2)
130 NEXT X
140 PRINT "Résultats des élections"
150 PRINT "Candidat A", "Candidat B"
160 FOR X = 1 TO 14
170 PRINT TAB(4);A(X,1);TAB(18);A(X,2)
180 NEXT X

Créer un fichier de résultats

10 CLS
20 OPEN "O",1,"Result.txt"
30 PRINT #1,"District";",Candidat A,";"Candidat B"
40 FOR X = 1 TO 14
50 PRINT "ENTREZ LES VOTES - DISTRICT ";X
60 INPUT "Votes pour le Candidat A ";A
70 INPUT "Votes pour le Candidat B ";B
80 PRINT #1,X; ","A;","B
90 NEXT X
100 CLOSE #1
110 OPEN "I", #1, "Result.txt"
120 INPUT #1,D$,A$,S$
130 PRINT D$,A$,S$
140 FOR X = 1 TO 14
150 INPUT #1,D,A,B
160 PRINT D,A,B
170 NEXT X
180 CLOSE #1

Maintenant faisons un programme créer un fichier de données brute pour le tableau ci-dessous:

District

A(X)
Population
Pop
A(X,1)
P
A

A(X,2)
A
B

A(X,3)
B
%A

A(X,4)
PA
%B

A(X,5)
PB
%Population
%Pop
A(X,6)
PP
%A Pop

A(X,7)
PPA
%B Pop

A(X,8)
PPB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
100
125
98
130
209
55
145
126
156
127
99
108
123
100
51
92
8
51
102
1
112
82
51
120
52
89
23
49
39
22
81
69
93
50
21
39
99
2
33
8
87
48
         

(Votes Total) VT = A + B, PA = A/VT, PB = B/VT, PP = VT / Pop, PPA= A/Pop, PPB = B/Pop

VOTES2.BAS

Maintenant faisons un programme avec un menu qui utilise un tableau pour:

1. Afficher le nombre de votes pour un district en particulier.

2. Afficher le nombre de votes pour tous les districts.

3. Quitter le programme

VOTES3.BAS

Maintenant voici un programme pour créer un fichier avec un entête.

VOTES4.BAS

 


 

 

 

 

 

Recherche personnalisée