home *** CD-ROM | disk | FTP | other *** search
/ Old Hackers Atari User Group Newsletter / Old_Hackers_Atari_User_Group_Newsletter_OHJFM00B.atr / carray.txt < prev    next >
Text File  |  2023-02-26  |  11KB  |  1 lines

  1.                 ARRAYS¢                ======¢¢             by Ron Fetzer¢¢      There are 3 kinds of arrays that¢ we use in TURBO-BASIC or ATARI BASIC:¢      1)One dimensional number array¢      2)Two dimensional  number  array¢        or MATRIX¢      3)String Arrays(Pseudo-String¢        Array)¢¢       Arrays    are    also    called¢ Subscripted  Variables. P(2) = "P sub¢ 2". The P is the variable and  the  2¢ is  the  subscript.  The subscript is¢ always   in  parenthesis  P(3),  P(4)¢ etc.¢¢       Arrays   are   very  useful  in¢ manipulating numbers and strings.  It¢ is  the ONLY way you can sort numbers¢ or alphabetize strings. You also save¢ on  variable  names,  you  can   save¢ numbers  or  words  in a program, you¢ can handle large amounts  of  numbers¢ or  strings and you can speed up your¢ program   execution.   This   is    a¢ very useful   technique    and     is¢ frequently used in many programs.¢¢        ONE DIMENSIONAL ARRAYS¢        ----------------------¢¢      You   can   think   of   a   ONE¢ DIMENSIONAL  ARRAY  as  a  string  of¢ pearls.  Each  pearl is an element of¢ the array.¢¢            PEARL NECKLACE¢¢   -O----O----O----O----O----O----O-¢¢ Element #¢    0    1    2    3    4    5    6¢ Value $¢  $25  $33  $42  $50  $38  $28  $22¢¢¢      In number arrays the 1st element¢ is 0. In the example above we have 7 ¢ elments from 0 to 6. When we  use  an¢ array  we  must  DIM it. The DIM also¢ starts   with   0,   in   effect   we¢ dimensioned  for 7 elements or pearls¢ if we use DIM P(6). The  form  of  an¢ array is:¢¢               P(X) = V¢¢ P = The name of the array. You must¢     DIM it for the number of¢     elements you are going to have¢     in your array.¢¢ X = The element numbers. Usually¢     a FOR - NEXT LOOP¢¢ V = Inputs the value into each¢     element as the loop executes¢¢       ELEMENTS AND THEIR VALUE¢¢ P(0)=25, P(1)=33, P(2)=42, P(3)=50,¢ P(4)=38, P(5)=28, P(6)=22¢¢      Please  key  in  the  short demo¢ program to see how it works¢¢      10 CLS:?:?¢      20 DIM P(6)¢      30 FOR X = 0 TO 6¢      40 INPUT "THE VALUE OF EACH"¢         PEARL";V¢      50 P(X)=V:REM <-- ARRAY¢      60 NEXT X¢      70 PAUSE 60¢      80 ? "LETS SEE IF IT WORKED"¢      90 ?:INPUT "WHAT PEARL DO YOU¢         WANT TO SEE(0-6)";S¢      100 ? P(S):REM <-- ARRAY¢      110 GOTO 90¢¢      You now can call up any pearl or¢ element in the array and see its¢ value.¢¢      You  also  can print out all the¢ values  of  the  pearls  or  elements¢ automatically. Change lines 90 to 110¢ as follows:¢¢      90 ?: FOR Y = 0 TO 6¢      100 ? "PEARL #";Y;" = ";P(Y):¢         REM P(Y) IS THE ARRAY¢      110 NEXT Y¢¢¢     2 DIMENSIONAL ARRAY OR MATRIX¢     -----------------------------¢¢      2  Dimensional  arrays or Double¢ Subscripted Variables are also called¢ a  MATRIX.  A  matrix is a grid where¢ you have columns and rows.¢      For example lets take a  bowling¢ team  of 3 members and each one plays¢ 4   games.   This   is  how  you  can¢ visualize the matrix:¢¢                BOWLERS¢¢           1          2          3  ¢          ----       ----       ----¢   B(0,0)|250|B(0,1)|220|B(0,2)|240|¢ G        ----       ----       ----¢          ----       ----       ----¢ A B(1,0)|210|B(1,1)|190|B(1,2)|250|¢          ----       ----       ----¢ M        ----       ----       ----¢   B(2,0)|240|B(2,1)|230|B(2.2)|270|¢ E        ----       ----       ----¢          ----       ----       ----¢ S B(3,0)|220|B(3,1)|200|B(3,2)|260|¢          ----       ----       ----¢      In a matrix  the  first  element¢ also  starts  with  0. In the example¢ above we have a matrix  and  we  must¢ DIM  it DIM(2,3). The 2 in the DIM is¢ the 3 bowlers (0 to 2). The 3 in  the¢ DIM  is the 4 games (0 to 3). We have¢ a total of 3 x 4 or  12  elements  in¢ this 2 dimensional array.¢¢      The  bowling  score  for  the  4¢ games were as follows:¢¢      BOWLER 1  BOWLER 2  BOWLER 3¢      --------  --------  --------¢¢      250       220       240¢      210       190       250¢      240       230       270¢      220       200       260¢¢      In  the matrix the first element¢ is (0,0). We normally do not consider¢ 0  a number but the computer does not¢ make that distinction.¢¢      Please key in  this  short  demo¢ program to see how it works¢¢      10 CLS:?:?¢      20 DIM B(2,3)¢      30 FOR X=0 TO 2¢      40 FOR Y=0 TO 3¢      50 ? "BOWLER ";X+1;" GAME #";¢         Y+1¢      60 INPUT "SCORE PLEASE ";S¢      70 B(X,Y)=S:REM <--MATRIX¢      80 ?¢      90 NEXT Y¢      100 NEXT X¢      110 ?:PAUSE 60¢      120 ? "LETS SEE IF IT WORKED"¢      130 INPUT "WHAT BOWLER(1-3)";P¢      140 INPUT "WHAT GAME(1-4)";G¢      150 ? "    ";B(P-1,G-1):REM¢          MATRIX¢      160 GOTO 130¢¢      We  use nested loops to load the¢ matrix.  The  first  element  to  get¢ loaded is B(0,0). In line 50  we  use¢ X+1 for the bowler - if the loop is 0¢ then the bowler becomes 0+1 or 1.  We¢ did  the same thing for the games Y+1¢ so when the loop  furnishes  a  0  is¢ becomes  0+1  or  1.  We did the same¢ thing in line 150 except  in  reverse¢ so  the  matrix  will  find the right¢ element.  When  you  answer  for  the¢ bowler 1 it becomes P-1 or 1-1  or  0¢ so the right element is accessed. The¢ same is done for the game G-1 becomes¢ 1-1 or 0.¢¢       ELEMENTS AND THEIR VALUES¢¢ B(0,0)=250  B(0,1)=220  B(0,2)=240¢ B(1,0)=210  B(1,1)=190  B(1,2)=250¢ B(2,0)=240  B(2,1)=230  B(2,2)=270¢ B(3,0)=220  B(3,1)=200  B(3,2)=260¢¢      You  also  can print out all the¢ bowling     scores     or    elements¢ automatically.  Please  change  lines¢ 130 to 180 as follows:¢¢      130 FOR T=0 TO 2¢      140 FOR K=0 TO 3¢      150 ? "BOWLER ";T+1;" GAME #";¢          K+1;¢      160 ? " = ";B(T,K):REM<--MATRIX¢      170 NEXT K¢      180 NEXT T¢¢       As   a  practical  matter  most¢ programmers   do  no  use  element  0¢ either   in  an  array  or  a  matrix¢ because it complicates  the  program.¢ DIM  the  array  or  matrix  for  the¢ number  of elements you have. The FOR¢ - NEXT loop starts with 1 instead  of¢ 0. See the program below.¢¢      10 --¢      20 CLS:?:?¢      30 DIM B(3,4)¢      40 FOR X = 1 TO 3¢      50 FOR Y = 1 TO 4¢      60 ? "BOWLER ";X;" GAME #";Y¢      70 INPUT "SCORE PLEASE ";S¢      80 B(X,Y)=S:REM <--MATRIX¢      90 ?¢      100 NEXT Y¢      110 NEXT X¢      120 PAUSE 60¢      130 --¢      140 ? "LET'S SEE IF IT WORKED?"¢      150 FOR T = 1 TO 3¢      160 FOR K = 1 TO 4¢      170 ? "BOWLER ";T;" GAME #";K;¢      180 ?" = ";B(T,K):REM<--MATRIX¢      190 NEXT K¢      200 NEXT T¢¢¢             STRING ARRAYS¢             -------------¢¢      TURBO-BASIC  and  ATARI BASIC do¢ not allow string arrays. This  is  no¢ big  problem.  We  create  a   PSEUDO¢ STRING ARRAY that looks and acts like¢ a normal string array. We take a long¢ string and chop it into equal pieces.¢ In order to create this PSEUDO STRING¢ ARRAY we must do certain things.¢¢      1)Decide how many elements we¢        need¢      2)The length of each element¢      3)Calculate the end of the¢        FOR-NEXT loop and the STEP¢¢      For example, we want to create a¢ string array that has 7 elements  and¢ each  element  is 10 letters long. We¢ will call the main string X$. To find¢ out  how  much  to DIM X$ we multiply¢ the  number  of  elements  times  the¢ length of each element (7 x 10 = 70).¢ We  now DIM X$(70). The FOR-NEXT loop¢ starts with 1 and ends with  the  DIM¢ in  this  case  70.  The  step is the¢ element length(10) 'FOR N = 1  TO  70¢ STEP 10¢¢      Since  the words we put into the¢ string array will be shorter than  10¢ letters,  we  use  PAD$  which has 10¢ empty spaces to pad each substring or¢ element  so it is 10 letters long. We¢ can visualize this as follows:¢¢                  X$¢¢  -----------------------------------¢  |    |    |    |    |    |    |   |¢  |EL 1|EL 2|EL 3|EL 4|EL 5|EL 6|EL7|¢  |    |    |    |    |    |    |   |¢  -----------------------------------¢  1   10   20   30   40   50   60  70¢¢      Elements or substrings start and¢ end as follows:¢¢        ELEMENTS OR SUBSTRINGS¢¢      Element 1 =  1 to 10¢      Element 2 = 11 to 20¢      Element 3 = 21 to 30¢      Element 4 = 31 to 40¢      Element 5 = 41 to 50¢      Element 6 = 51 to 60¢      Element 7 = 61 to 70¢¢      It  looks  as if each element is¢ only 9 letters  long.  These  numbers¢ are  inclusive  so  each  one  is  10¢ letters long¢¢      If  we have a FOR-NEXT-STEP loop¢ we can generate these numbers.¢¢      10 FOR N = 1 TO 70 STEP 10¢      20 ? N, N+9¢      30 NEXT N¢¢      The result of this  loop  is  as¢ follows:¢¢      1    10¢      11   20¢      21   30¢      31   40¢      41   50¢      51   60¢      61   70¢¢      This  is  the  way  the  program¢ would  look. Please key in this short¢ demo program.¢¢      10 --¢      20 CLS:?:?¢      30 DIM X$(70),SUB$(10),PAD$(10)¢      40 PAD$="         ":REM FOR¢         PADDING THE SUBSTRING 10¢         SPACES¢      50 REM ASSIGNING PSEUDO STRING¢         ARRAY VALUES¢      60 FOR N = 1 TO 70 STEP 10¢      70 INPUT "GIVE ME A WORD(MAX¢         10 LETTRS)";SUB$:?¢      80 SL=LEN(SUB$):REM LENGTH OF¢         WORD¢      90 IF SL<10 THEN¢         SUB$(SL+1)=PAD$:REM PAD TO¢         10 LETTERS¢      100 X$(N,N+9)=SUB$:REM PUT¢          VALUE INTO ELEMENTS¢      110 NEXT N¢      120 --¢      130 ?:?¢      140 REM DISPLAY PSEUDO STRING ¢          ARRAY¢      150 FOR N=1 TO 70 STEP 10¢      160 K=K+1:REM COUNTER¢      170 ? "ELEMENT ";K;" = ";¢          X$(N,N+9)¢      180 NEXT N¢      190 --¢¢      A line by  line  explanation  of¢ this program is as follows:¢¢ 10 Draw 30 dashes¢ 20 Clear the screen¢ 30 Dim X$ for the total amount of¢    all the elements. The SUB$ is¢    the length of an element. The¢    PAD$ is the length of an element¢ 40 PAD$ = is the length of an¢    element(10). It is used to pad¢    a word that is too short - less¢    than 10 letters¢ 50 Rem explanation¢ 60 FOR-NEXT-loop. It starts with 1¢    and ends with the number of¢    elements(7) times the length of¢    each element(10) or (7x10=70).The¢    step is the length of the¢    element(10)¢ 70 INPUT the words¢ 80 Find out how long each word is.¢ 90 Pad each word to 10 characters¢ 100 Fill the elements or the SUB$¢     with words. The sub strings or¢     elements are 1-10, 11-20, 21-30,¢     31-40, 41-50, 51-60, 61-70¢ 110 End of loop¢ 120 Draw 30 dashes¢ 130 Print¢ 140 Rem explanation¢ 150 FOR-NEXT loop. See explanation¢     on line 60¢ 160 A counter that counts the number¢     of elements in the array¢ 170 Print the elements in X$(N,N+9)¢     The substrings or elements in X$¢     are 1-10, 11-20, 21-30, 31-40,¢     41-50, 51-60, 61-70¢ 180 End of loop¢ 190 Draw 30 dashes¢¢       You    can   also   print   out¢ individual  elements  of  the  string¢ array. Please  change  the  following¢ lines.¢¢      150 N = 0¢      160 INPUT "WHAT ELEMENT DO YOU¢          WANT TO SEE";N¢      170 ? "ELEMENT ";N;" = ";¢          X$(N*10-9,N*10)¢      180 GOTO 150¢¢ >>>>>>>>>>>>>>> END <<<<<<<<<<<<<<<<¢¢