; Qbasic Tutorial 4
Documents
User Generated
Resources
Learning Center
Your Federal Quarterly Tax Payments are due April 15th

# Qbasic Tutorial 4

VIEWS: 292 PAGES: 31

• pg 1
```									                                             LESSON 27
HANDLING OF ARRAYS, FUNCTIONS AND SUB-ROUTINE

27.1   INTRODUCTION
In the previous lesson, you have gone through the programming technique and various
INPUT/OUTPUT and control statements in BASIC. But the features that make this
programming language more useful are use of subscripted variables, subroutine and various
functions provided to help the programmer. We shall be discussing all these features in this
lesson. We have also included various sample programs, which will help you further in
writing more complex programs in BASIC language.

27.2   OBJECTIVES
This lesson will explain you about handling of lists, tables, subroutine, sub-programs and
some of the functions of BASIC. At the end of this lesson, you should be able to:
   use functions and subroutines in BASIC language
   write complex programs in BASIC language
   learn how to set up and use arrays in BASIC programs

27.3   HANDLING LISTS AND TABLES (ARRAYS) IN BASIC
In all our programs so far, a single variable (one storage location in internal memory) has
been associated with each variable name. In this lesson, we will discuss the concept of an
array: a collection of variables, all of which are referenced by the same name. We will
discuss one-dimensional arrays (lists) and two-dimensional arrays (tables), concentrating on
the former. Each item of data in an array does not have a unique variable name, on the other
hand, a group of similar data is given one name. The smallest component of an array is called
an element of the array.
Example 1: suppose we want to represent five numbers (10,12,42,91,7,) which represent the
marks of five students
Solution:
We can use an array name M(I) which is also called the subscripted variable and I is the
subscript which varies from 1 to 5. M is the name of array and M(1) is an element of the
array M.

1
In the memory it is stored as,
M(I)           Cells             Quantities

M(1)              10
M(2)              12
M(3)              42
M(4)              91
M(5)              7
Problem1: Write a program to read the above data into the memory.
Program 1
10     DIM M(5)
20     FOR I = 1 TO 5
40     NEXT I
50     DATA 10,12,42,91,7
60     END

Let us go back to the above example.
M is an array of 5 numbers 10,12,42,91,7, where under the array name M the five different
elements M(1),M(2), M(3), M(4), M(5), are given one subscript I. This M(I), with a single
subscript I, is an example of a one-dimensional array. Let us study a practical example of
one-dimensional array.

Example 2: We have an item biscuit in a shop. We have prices for 10 different biscuits as 60,
45.5, 32.6, 19.5, 52, 49,53.75, 29, 43, 38.6. We write a program to print these different values
or we want to know the price of any type of the above biscuits. We will do it by using an
array.
Solution
Since they are similar items, we give them a single name BISCUIT or in short BIS. Since we
know only one specification i.e. price we have a single subscript, say I. So the array is now
BIS(I). Since there are 10 prices for 10 types of biscuits I varies from 1 to 10 i.e. BIS(1),
BIS(2)…….BIS(10).

2
If we want to know the price for the biscuit of type 4, we will print BIS(4) which will give us
the required price.

Program 2
10     DIM BIS(10)
20     REM PRICES FOR 10 TYPES OF BISCUITS ARE TO BE READ
30     REM THE 10 PRICES HAS TO BE PRINTED ALSO
40     FOR I = 1 TO 10
60     NEXT I
70     PRINT “THE PRICES OF TEN DIFFERENT BISCUITS”
80     FOR I =1 TO10
90     PRINT BIS(I)
100    NEXT I
110    DATA 60,45.5, 32.6, 19.5, 52,49,53.75
120    DATA 29,43,38.6
130    END

OUTPUT
Line number 70 will print
THE PRICES OF TEN DIFFERENT BISCUITS
Line number 90 due to line number 80 and 100 will print
60
45.5
32.6
19.5
52
49
53.75
29
43
38.6

3
The line number 10 DIM BIS(10) is compulsory. This informs the machine that we are giving
an array with single subscript having 10 elements. So, 10 cells in the memory location will be
kept for the variable name BIS.
If we want an array of strings instead of numeric value, see the following example:

Example 3
To store the names of six motor cars in any array (table) such as:

FORD            MARUTI        AMBASSADOR           FIAT      STANDARD           VAUXHAL
L

We can write a program as follows:

Program 3
10     REM DECLARE THE NAME AND SIZE OF THE TABLE
20     DIM C\$(6)
30     REM… USE THE READ/DATA TECHNIQUE
40     REM TO STORE STRINGS
50     FOR J = 1TO 6
70     NEXT J
80     REM.. NOTE THE STRINGS USED AS DATA ARE
90     REM.. ENCLOSED BETWEEN QUOTATION MARKS
100    REM.. ARRAY NAME TO STORE STRINGS IS
110    REM.. GIVEN AN STRING VARIABLE NAME C\$
130    DATA “FIAT”, “STANDARD”, “VAUXHALL”
140    END

The REM (i.e. remarks) given in the line number 30,40,80,90,100,110, explains the program.
Though DATA is given in two lines 120 to 130, the data should be in the order they are
placed.
C\$(1) = “FORD”
C\$(2) = “MARUTI”

4
C\$(4) = “FIAT”
C\$(5) = “STANDARD”
C\$(6) = “VAUXHAULL”

Example 4
Let the 10 data values are given as 4, -6, 7, 2.3, - 6.1, 5. 3
-1, 0, - 2.7,9
WE give this set of values the name, say VAR (I) where I is the subscript.
If I = 1, then VAR (1) has the value 4
I = 5, then VAR (5) has the value -6.1
I = 8 then VAR (8) has the value 0, and so on.

The program for adding all the 10 numbers.

Program 4
10       REM ADDING 10 NUMBERS IN A ONE DIMENSIONAL TABLE
12       DIM VAR (10)
15       LET SUM = 0
20       FOR I = 1 TO 10
40       LET SUM = SUM +VAR (I)
50       NEXT I
60       DATA 4, -6,7, 2.3, -6.1, 5.3, -1, 0, -2.7,9
70       PRINT SUM
80       END
27.3.1 The DIM Statement
When subscripted variables are used in a program, certain information about them must be
supplied to the computer before it is used. These are:
(a)     Which variables are subscripted?
(b)     What is the maximum size for each subscript?

DIM is the short form of DIMENSION.

5
By using this statement in line number 10 of the program 1 above, the array whose name is M
has been allotted 5 cells in the memory location. Syntax for the DIM statement is
Line number DIM array name (unsigned integer)
The unsigned integer specifies the size of the array variable.
If we write 10 DIM A(100), X(10), then 100 locations are reserved for the array name A and
10 locations for the array name X.
DIM should be the first statement in the program barring REM statement.

Problem 5
Suppose we want to read the roll number of a student and his marks obtained in five subjects
in the board examination. Now print the roll number and average marks secured by him.

Program 5
10      DIM M(5)
20      INPUT ROLLNO
25      LET TOT = 0
30      FOR I = 1 TO 5
50      LET TOT = TOT + M(I)
60      NEXT I
70      LET AVERAGE = TOT/5
80      PRINT ROLLNO, AVERAGE
90      DATA 60,52,49,80,72
100     END

On the execution of line number 30, initially the control variable I becomes 1 and line
number 40 reads M(I), i.e. the first mark from line number 90, that is 60 and adds to the
variable TOT which is initially zero. So for I = 1 line 50 gives TOT = 0 +60 = 60, control
then goes to line number 60 and back to 30. Now I becomes 2 and line number 40 reads
M(2), i.e. 2nd marks from DATA, i.e. 52. In line number 50 TOT = 60 + M(2), i.e. TOT =
60+52 = 112 and so on. So line number 30 to 60 is executed five times. Thus finally in the
variable name TOT we have TOT = 60+52+49+80+72=313.

6
So, when line number 70 is executed AVERAGE = 313/5 =62.6. Line number 80 will print
the ROLLNO which is entered in line number 20 and the average AVERAGE as 62.6.

If we want to do this process for a large number of students say 10 we have to give more data
in DATA statement, i.e. 45 more data values and put another loop to repeat the process for
ten students.

Program 5(a)
10       DIM M (5)
15       FOR J = 1 TO 10
20       INPUT ROLLNO
25       LET TOT =0
30       FOR I = 1 TO 5
50       LET TOT = TOT + M(I)
60       NEXT I
70       LET AVERAGE = TOT/5
80       PRINT ROLLNO, AVERAGE
85       NEXT J
90       DATA 60,52,49,80,72,98,69,72,80,75
100      DATA 88,61,54,48,60,52,92,86,81,65
110      DATA _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
120      DATA _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
130      DATA _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
140      END

7
IN-TEXT QUESTIONS 1
1. Given the following code:
10      LET S =0
20      FOR I = 1 TO N STEP 2
30      LET S = S+2*I-1
40      NEXT I
50      END
You are required to complete each statement.
(a) The accumulator is the variable ___________
(b) The control variable is _______________
(c) After execution, S contains the sum of the first N _________ Integers.

2. Correct the errors in each of the following program segments:

(a) 10      FOR K = 1 TO 5
20      FOR J = 1 TO K
30      PRINT K + J
40      NEXT K
50      NEXT J

(b) 10      LET S = 0
20      FOR I = 1 TO 10
30      LET S = S + I
40      PRINT S
50      NEXT K

3. What is the output of each of the following program segments?
(a) 10      FOR I = 7 TO 10 STEP 2
20      PRINT I;
30      NEXT I
40      PRINT I
50      END

8
(b) 10       FOR I = 1TO 10
20    IF I = 5 THEN 40
30    PRINT I + 1
40    NEXT I
50    END
27.3.2 Double-Subscripts or two-dimensional arrays
A subscripted variable name in BASIC can have up to three subscripts. The use of two
subscripts has very wide applications, especially manipulation of tables or any such things,
which has rows and columns both in it.
Example: Represent subscripted variable or two-dimensional array having name
TABLE(I.,J) where I indicates row and J indicates column.
Where,         TABLE (I,J) =         2      4       8       10
1      3       5       7
3      7       13      17

Thus we see TABLE (I,J) has 3 rows, i.e. I = 1 TO 3 and 4 columns, i.e. J = 1 TO 4.

Problem 6
We want to read and print the values of TABLE (I,J) as given above

Program 6
10    DIM TABLE (3,4)
15    FOR I = 1 TO 3
20    FOR J = 1 TO 4
35    PRINT TABLE (I,J)
40    NEXT J
50    NEXT I
70    DATA 2,4,8,10,1,3,5,7,3,7,13,17,
80    END
See how it reads the data

9
TABLE(1,1) TABLE(1,2) TABLE(1,3) TABLE(1,4)
2 ---------> 4 --------> 8 ----------> 10
TABLE(2,1) TABLE(2,2) TABLE(2,3) TABLE(2,4)
1 ---------> 3 --------> 5 ----------> 7
TABLE(3,1) TABLE(3,2) TABLE(3,3) TABLE(3,4)
3 ---------> 7 --------> 13 ----------> 17

As the subscript J corresponding to the column is in the inner FOR loop, the table is read
row-wise. J being in the inner loop changes more frequently from 1 to 4 for every value of I,
which is in the outer loop. If we want to read the data column-wise program will be as
follows.

Program 7
10      DIM TABLE (3,4)
20      FOR J =1 TO 4
30      FOR I =1 TO 3
50      NEXT I
60      NEXT J
70      DATA 2, 1, 3, 4, 3, 7, 8, 5, 13, 10, 7, 17
80      END

More applications relating to subscripted variables will be shown in the last section.
We have shown you to store numeric data in a table (array) with row and column subscripts.
Now, You will see how string data is stored in a two-dimensional array.

Example
The following are data values (names), which are to be stored in the table form with rows and
columns.

10
HARIOM                 DINESH                   RAJESH                   PANKAJ
BIMLA                  UPMA                     SANJU                    ANAMIKA

The program is as follows:

Program 7
10     REM DECLARE THE NAME AND SIZE OF THE TABLE
20     DIM N\$ (2,4)
30     REM SET UP AN OUTER LOOP TO CONTROL THE ROW SUBSCRIPT
40     FOR M = 1 TO 2
50     REM…..SET UP AN INNER LOOP TO CONTROL THE COLUMN
SUBSCRIPT
60     FOR P = 1 TO 4
70     REM .. USE A READ/DATA STATEMENT TO STORE DATA AS
80     REM .. SHOWN IN DIAGRAM
100    NEXT P
110    NEXT M
120    DATA "HARIOM", "DINESH" "RAJESH"
130    DATA "PANKAJ", "BIMLA"
140    DATA "UPMA", "SANJU", "ANAMIKA"
150    END

IN-TEXT QUESTIONS 2

1.     Determine whether each of the following statements is true or false.
(a) Array of string data and array of numeric data can be declared in the same DIM
statement.
(b) All elements of an array must be of either string type or numeric type.

11
(c) One and two-dimensional arrays cannot be declared in the same DIM statement.

2.     A two-dimensional array FAX has two rows and four columns
5       10      15      20
25      30      35      40
(a) What are the values of FAX (1,3) and FAX (2,1) ?
(b) Which elements of FAX contain the numbers 30 and 20 ?

3.     What is displayed when the following program segment is executed?
10      DIM A (2,3)
20      FOR I = 1 TO 2
30      FOR J = 1TO3
40      LET A(I,J) = I+J+1
50      NEXT J
60      NEXT I
70      PRINT A(1,2); A(2,1); A(2,2)
80      END

4      Write a BASIC program that determines and prints the smallest and largest elements
of a two-dimensional array  (assuming that it; has been already inputted) with four
rows and five columns.

5.     Write a BASIC program to arrange the following numbers in an ascending order:
-71, -20, 14, 0, 5

27.4   FUNCTION AND SUBROUTINE
27.4.1 Defining a function---the DEF statement
To avoid repeated programming of the same set of calculations, the programmer would like
to write his or her own functions, which are similar to the Library functions. It may so happen
that a particular calculation or a set of calculations occurs more than once in the program. If
the calculation can be defined by a single statement then we use the function statement DEF
FN.

12
Syntax: line number DEF FNV (a) = expression
Where “V” is the one-letter name of the function and "a" is the argument, which appears as a
variable in the expression on the right.

Problem 1
Suppose we want to write a program to calculate y for various values of x, say for x =
1,2,3,4,5, for the expression y(x) =ax2 + bx + c

Program 1
10      DEF FNY (X) = A*X*X + B*X + C
20      INPUT A, B, C
30      FOR X = 1 TO 5
40      PRINT X, FNY(X)
50      NEXT X
60      END

On execution of the program line number 30 TO 50 will give the value of y(1) through y(5)
for the respective value of x, calculated at line number 10. The value of x is supplied in line
number 30 and values of A, B and C are input at line 20.

Problem 2
Let us consider the program to calculate
y = 1.5x + 3 for x<= 2
y = 2x + 5 for x>2

Program 2
100     DEF FNY(X)
105     INPUT X
110     IF X < = 2 THEN 140
120     LET FNY = 2*X + 5
130     GO TO 150
140     LET FNY = 1.5*X + 3
150     FNEND
170     PRINT X, FNY(X)

13
180   END

Here DEF FNY (X) statement in line number 100 is used without being equated to
expression. The FNEND statement in line number 150 indicates the end of the function. The
line numbers 160 to 180 consist the main program. On execution of line 170 a call to the
function FNY(X) is made causing the execution of line number 100 to 150 with the input
value of X.
The DEF statement must have DEF FN and variable name with one character and arguments
included in the parenthesis. Arguments can be more than one also. The argument is a
variable, which must appear in the right side after the equal to (=) sign, in case of DEF FN
statement is equated to an expression. (For example, see problem 1)

Example 1
Evaluate the algebraic formula       z =(u/v + x/y)/2      for different set of values of u, v,
x, y.

Solution
10    DEF FNZ(U,V,X,Y) =(U/V + X/Y)/2
20    INPUT U,V,X,Y
30    PRINT FNZ(U,V,X,Y)
40    END

This is for one set of values for U,V,X,Y. Now the program given below will evaluate the
formula for different set of values for U,V,X,Y
10    DEF FNZ (U,V,X,Y) = (U/V + X/Y)/2
20    INPUT U,V,X,Y
30    PRINT FNZ(U,V,X,Y)
35    IF U = O THEN 50
40    GO TO 20
50    END

Line number 40 sends the control back to INPUT. Now, you can enter another set of values
for U,V,X,Y. When you want to stop, you enter O for U. Then line number 35 will bring the
program to END.

14
Example 2
Define a function for subprogram for the algebraic formula
p = log(t2 -a) for t2 > a
log(t2) for t2 = < a

Solution
30      DEF FNP(T,A)
40      INPUT T,A
50      IF T * T < = A THEN 80
60      LET FNP =LOG (T ^ 2 -A)
70      GO TO 90
80      LET FNP = LOG (T ^ 2)
90      FNEND
100     PRINT T, A FNP (T,A)
110     END

In line number 40, the values of T,A can be input by READ/DATA or by using LET
statements twice.
Note: Please consult the machine manual for DEFFN statement before running the programs
in the machine.

27.4.2 Defining a subroutine -The GOSUB and RETURN statements
A subroutine is a collection of statements belonging to a process, which requires to be
repeated very frequently in the program. A subroutine consists of set of program statements
that may be used repeatedly at different places throughout the main program. In the main
program the subroutines are called at different places using GOSUB statement.

GOSUB Statement
Syntax: line number GOSUB n
Where n is the line number of the 1st statement in the subroutine.
Subroutines are placed at the end of the main programs in order to repeat a process. The
program control has to exit from the main program to enter a subroutine and after the process
is completed it comes back to the main program using RETURN statement.

15
RETURN statement
Syntax: line number RETURN
The RETURN statement in the subroutine transfers the control back to the main program to
the line immediately following the corresponding GOSUB statement. RETURN is the last
statement in the subroutine.
GOSUB and RETURN are always used together in the program not independently.

Properties of GOSUB
   One subroutine can follow another subroutine but each subroutine should be complete
within itself.
   GOSUB unconditionally transfers the program from the main to the subroutine.
   GOSUB can also transfer the program conditionally by using it with IF-THEN ELSE
Syntax: Line number IF (Logical expression) THEN COSUB (line number) ELSE GOSUB
(line number)
   A subroutine can be called by the main program a number of times. But the returning
point will be different in each time.
   GOSUB takes the control from the main program to the subroutine and return brings back
the control from the subroutine to the main program.

Problem 1
Write a program to add, subtract, multiply and divide any two numbers.
10      INPUT A, B
20      INPUT "CHOICE", C\$
30      IF C\$ = "ADD" THEN GOSUB 80 : GOTO 65
40      IF C\$ = "SUB" THEN GOSUB 120 : GOTO 65
50      IF C\$ = "MUL" THEN GOSUB 170 : GOTO 65
60      IF C\$ = "DIV" THEN GOSUB 210
65      PRINT C
70      END
90      LET C = A + B
91      RETURN

16
120     REM "SUBROUTINE FOR SUBTRACTION"
130     LET C =A-B
150     RETURN
170     REM "SUBROUTINE FOR MULTIPLICATION"
180     LET C = A*B
200     RETURN
210     REM "SUBROUTINE FOR DIVISION"
220     LET C = A/B
240     RETURN

Short form of Problem 1 for addition
10      INPUT A, B
20      INPUT "CHOICE" C\$
30      IF C\$ = "ADD" THEN GOSUB 50
40      END
50      PRINT A+B
60      RETURN

So whatever will be the input of C\$ in line number 20, GOSUB will go to these subroutines
as it is written for C\$ = "ADD" similar subroutines will follow for "SUB", "MUL", "DIV"
ON GOSUB statement is similar to ON GOTO.
Syntax is given as:

Line no ON                   Numeric variable           GOSUB
Or
Numeric expression
(Line number of sub-
routine 1, sub. 2, sub .3….)

Program 2

17
10     INPUT A,B
20     INPUT "1-ADD, 2-SUB, 3-MUL, 4-DIV"; N
30     ON N GOSUB 50, 60, 70, 80
40     END (To make the program repeat we should add GOTO 10)
50     PRINT A+B : RETURN
60     PRINT A-B : RETURN
70     PRINT A*B : RETURN
80     PRINT A/B : RETURN
Note: To make the program repeat, we should add GOTO 10 at line 35

IN-TEXT QUESTIONS 3

1.    (a) What is a subscripted variable?
(b) What is the function of a DIM statement?
(c) Define a subroutine?
(d) What does a RETURN statement do?

2.    What is displayed when each of the following program segments is run?
(a)    10      GOSUB          400
20      GOSUB          500
30      PRINT "ONE"
40      END
400     PRINT          "TWO"
410     RETURN
500     PRINT "THREE"
510     RETURN

(b)    10      DEF FNA (W) = 2*W+1
20      PRINT FNA (2)
30      LET x = 3
40      PRINT SQR (FNA (x+1))
50      END

18
27.5   EXAMPLES AND PROGRAMS SHOWING USAGE OF SOME BASIC
FUNCTIONS: INT, MOD, RND, LOCATE, LEN, VAL, STR\$, RIGHT\$, MID\$

27.5.1 INT Functions
It takes a numeric value as its argument and returns its value after truncating the decimal part.
The value returned is always smaller than the number provided as the argument. For example,
10      Y= INT(13.2)
20      X= 15.6
30      Y= INT(X)

Statement 10 will return Y = 13 and
Statement 30 will return Y = 15.

Example 1
Two numbers A and B are given. To find the higher number between them:

Program 1
10      INPUT "HIGHER NO"; A
20      INPUT "SMALLER NO ";B
30      LET C = A/B
40      IF INT(C)= C THEN PRINT “ HIGHER NUMBER=“; A
50      END
This shows the use of the INT function.

Example 2
Write a program to find whether any year of the current century is a leap year or not.

Program 2
10      REM ** PROGRAM TO FIND WHETHER THE YEAR IS A LEAP YEAR
OR
15      REM NOT **

19
20      PRINT "ENTER THE YEAR"
30      PRINT
50      INPUT YEAR
60      LET Y1 =INT(YEAR/4)
70      LET Y2 =YEAR/4
80      IF Y1 =Y2 THEN 110
90      PRINT YEAR "IS NOT A LEAP YEAR"
100     GO TO 120
110     PRINT YEAR; "IS A LEAP YEAR"
120     END

(A) Suppose we input year as 1988, then line number 60, we compute Y1 as 497 and also line
number 70 gives Y2 as 497. Thus line number 80 gives Y1=Y2 and so the control is
transferred to 110.

(B)    Suppose we input year as 1989. The line number 60, we compute Y1 as 497. In line
number 70, we get Y2 as 497.25. Thus in line number 80 Y1 is not equal to Y2, therefore
control passes to 90.
27.5.2 MOD FUNCTION
Program 3
10      INPUT C, D
20      LET X= C MOD D
30      PRINT X
40      END

The MOD function determines the remainder on dividing a number by another. For example,
9 MOD 2 will give 1.

27.5.3 THE RND, LOCATE function
RND generates random numbers between 0 and 1.

Program 4
10      LET C= INT (RND*80)+1
20      LET R= INT( RND*25)+1

20
30      LOCATE R, C : PRINT "*"
40      GO TO 10
50      END

RND*80 and RND*25 generates random numbers between 0 to80 and 0 to25 respectively.
Thus, in line number 10,20 C is assigned the integer value of RND*80 plus 1 and R is
assigned the value RND*25 plus I respectively. The LOCATE clause followed by R,C
followed by PRINT "*", prints a "*'in the Rth row an Cth column.

27.5.4 THE LEN, VAL, STR\$ function
LEN is used to count the number of character in a string. It takes a string as an argument and
counts every character including a blank.

Example
10      LET C\$ = "BEAUTIFUL"
20      LET C = LEN (C\$)
30      PRINT C
40      END
Output is 9 (as there are 9 characters in the word BEAUTIFUL. Note that the function LEN
returns a numeric constant.
VAL(X\$) function returns a numeric constant equivalent to the value of the number
represented by the string X\$. This string X\$ should consist of all digits.

Example
10      LET X\$= "12345"
20      LET Y = VAL(X\$)
30      PRINT Y
40      END

Output of this program, on execution, will be 12345.
STR\$(Y)
This is the reverse operation of VAL. The value of Y here is converted into a string literal. Y
can be a numeric constant, variable or expression.

21
Example
10      LET Y =7384
20      LET X\$=STR\$(Y)
30      PRINT X\$
40      END
The output will be “7384”. The numeric value of Y is converted to string in line number 20,
i.e. X\$ = “7384”
27.5.5 String Processing in BASIC
Following are the few functions, which operate on string variables and help in string
processing.

Left String
LEFT\$ (X\$,Y) Returns the left most Y characters from the string X\$

Example 1
10      LET X\$ = "MATHEMATICS"
20      PRINT LEFT\$ (X\$, 4)
30      END
The output will be MATH

Example 2
10      LET C\$ ="INFORMATICS"
20      LET D\$ = LEFTS(C\$,6)
30      PRINT D\$
40      END
Output will be INFORM.

Right string
RIGHT\$(Y\$,X) returns the rightmost X characters from the string Y\$

Example 3
10      LET X\$ = "PORTBLANK"
20      PRINT RIGHT\$(X\$,5)
30      END

22
Output will be BLANK.

Example 4
10       LET A\$ = "MANAGED"
20       LET B\$ = RIGHT\$ (A\$,4)
30       PRINT B\$
40       END
Output will be AGED.

Middle String
MID\$(X\$,X,Y) Returns a sub string of X\$ starting at the character position X from the left
and containing Y characters.

Example 5
10       LET X\$ = "MANHATTAN"
20       PRINT MID\$(X\$,4,3)
30       END
Output will be HAT.

IN-TEXT QUESTIONS 4
1.     (a)      What is the use of an INT function?
(b)      What would be the value of X in the following program segments?
(i)      C\$ = "AVAILABLE"
X = LEN(C\$)

(ii)     C\$ = "899"
X = VAL(C\$)

2.     If A\$ = "TO ERR IS HUMAN" B\$ = "TO FORGIVE DIVINE", find the values of
following functions:
(a)      LEFT\$(A\$,2)
(b)      MID\$(A\$, 2, 3)
(c)      RIGHT\$ (B\$, 4)

23
(d)    A\$ +" " +B\$
(e)    MID\$ (A\$,4, 3) + MID\$ (B\$,5,2)

27.6   EXAMPLE PROGRAMS

Problem 1
Write a program to invert TAERG to GREAT.

Program 1
5      LET L\$ = “ ”
10     LET C\$ = "TAERG"
15     L = LEN(C\$)
20     FOR X = L TO 1 STEP -1
30     LET L\$ = L\$ +MID\$(C\$,X,1)
40     NEXT X
50     PRINT L\$
60     END
Output GREAT

Problem 2
Write a program to give the word GRAPEFRUIT and FRUITGRAPE when GRAPE and are
separately. Given

Program 2
10     LET F\$ = "GRAPE"
20     LET B\$ = "FRUIT"
30     LET C\$ = F\$ +B\$
40     PRINT C\$
50     LET A\$ = B\$ +F\$
60     PRINT A\$
70     END

24
Line 40 prints GRAPEFRUIT
Line 60 prints FRUITGRAPE

Problem 3
The prices of different articles are stored in a one-dimensional table, there product code is
also given as:

Price in Rs.     20    15     16     18      14
Product Code 1          2     3      4       5

Let us assume that product code and quantity sold for an article is inputted through keyboard.
Write a program to calculate and print the cost of sale along with product code and quantity
sold. Terminate the procedure when the product code is out of range.

Program 3
10       DIM P (5)
20       FOR C = 1 TO 5
40       NEXT C
50       DATA 20,15,16,18,14
60       INPUT "PRODUCT CODE"; C
70       IF C<1 OR C>5 THEN END
80       INPUT "QUANTITY SOLD"; Q
90       LET S = Q*P(C)
100      PRINT "PRODUCT CODE"; C ; "QUANTITY SOLD "; Q; COST OF SALE" ; S
110      GO TO 60
Line number 70 contains END.

Problem 4
A set of given numbers are there. Write a program to arrange them in descending order.

Program 4

25
10     REM    PROGRAM        TO   ARRANGE       THE    GIVEN   NUMBERS   IN
DESCENDING ORDER
15     DIM X (25)
20     INPUT "HOW MANY NUMBERS ARE THERE",N
50     FOR I = 1 TO N
65     NEXT I
70     PRINT "ORIGINAL ORDER IS:"
80     FOR I = 1 TO N
90     PRINT X(I) ;
100    NEXT I
110    PRINT "NUMBERS IN DECREASING ORDER"
120    FOR I = 1 TO N-1
130    FOR J= 1 TO N-1
140    IF A (J)>=A (J+1) THEN 180
150    TEMP= A (J)
160    A (J)= A (J+1)
170    A (J+1) =TEMP
180    NEXT J
190    NEXT I
200    FOR I = 1 TO N
210    PRINT A (I);
220    NEXT I
230    END

Problem 5

Program 5
10     LET A\$ = "MAIDAMS'
20     PRINT LEFT\$(A\$, 2)+MID\$(A\$,4,3); MID\$(A\$,3,1)+
RIGHT\$(A\$, 1);LEFT\$(A\$,2)+MID\$(A\$,4,1)
30     END
Line number 20 can be put in two consecutive PRINT statement also.

26
Problem 6
Write a program to print the Prime Numbers between any two numbers A (say 1) and B (say
100).

Program 6
10     INPUT “TWO NUMBERS”; A,B
20     FOR N= A TO B STEP 1
30     IF N MOD 2= 0 OR N<= 1 THEN GO TO 80
40     FOR X=3 TO SQR(N) STEP 2
50     IF N MOD X =0 THEN 80
60     NEXT X
70     PRINT N; “IS THE PRIME NO”
80     NEXT N
90     END

Explanation
In the line number 30, N MOD 2 is same as MOD(N,2) it gives the remainder of N/2,
similarly in line number 50,N MOD X means remainder of N/X.

27.7     WHAT YOU HAVE LEARNT
In this lesson we have discussed various statements relating to decision making, looping and
branching. Use of subroutine, sub-programs and arrays has been explained clearly by taking
number of examples. These commands play very important role in writing programs. The
illustrations given in this lesson will help you for a better grasp of BASIC programming.
Usage of some BASIC functions has been clearly defined for the benefit of the students.

27.8     TERMINAL QUESTIONS
1. Write a BASIC program to run up the following series
(a) 1,3,5,7, 9 ………………100
(b) 2,4,6,8,10………………100
(c) 1,4,9,16,25………………100
(d) 1,8,27,64,125……………1000
2.     What will be the output of the following programs?

27
(a) 10 FOR I = 1 TO 3
20 FOR J = 1 TO 5
30 PRINT I, J, I+J
40 IF J = 3 THEN 100
50 PRINT I, J , I*J
60 PRINT I+J, I-J
70 PRINT
100 NEXT J
110 NEXT I
120 END

(b) 10 FOR I = 1 TO 5
30 PRINT I ;
40 FOR J = 1 TO K
50 PRINT ““;
60 NEXT J
70 PRINT
80 NEXT I
90 DATA 5,9,3,2,6
100 END
3. Write a program to invert LOOHCS to SCHOOL.
4. Write a program to write
PANKAJ KUMAR GOEL as P.K. GOEL.
5. Write a program to write your own address 10 times on the screen.

27.9    FEEDBACK TO IN-TEXT QUESTIONS

IN-TEXT QUESTIONS 1
1.      (a)      S
(b)      I
(c)      Positive odd
2.      (a)      40       NEXT J

28
50       NEXT K
(b )   50       NEXT I

3.   (a)    7 9 11

(b)    2
3
4
5
7
8
9
10
11

IN-TEXT QUESTIONS 2
1.   (a)    True
(b)    True
(c)    False

2.   (a)    FAX(1,3,) = 15, FAX(2,1) = 25
(b)    FAX(2,2) = 30, FAX(1,4) = 20

3.   4      4        5

4.   10     LET SMALL = X(1,1)
20     LET LARGE = X(1,1)
30     FOR I = 1 TO 4
40     FOR J = 1 TO 5
50     IF X(I,J) < SMALL THEN LET SMALL = X(I,J)
60     IF X(I,J) > LARGE THEN LET LARGE = X(I,J)
70     NEXT J
80     NEXT I
90     PRINT "SMALLEST VALUE ="; SMALL

29
100   PRINT "LARGEST VALUE ="; LARGE
110   END

5   10    DIM A(5)
20    REM READ NUMBER OF DATA VALUE
40    REM READ DATA VALUE INTO ARRAY A
50    FOR I =1 TO N
70    NEXT I
80    REM NOW SORTING STARTS
90    FOR M = 1 TO N-1
120   IF A (M+1) > = A(M) THEN 18 0
130   REM INTERCHANGE OF DATA VALUES
140   LET P = A(M)
150   LET A (M) = A (M+1)
160   LET A(M+1) = P
180   NEXT M
190   REM PRINT THE SORTED ARRAY
200   FOR K = 1 TO N
210   PRINT A (K);
220   NEXT K
230   DATA 5, -71, -20, 14, 0, 5
240   END

IN-TEXT QUESTIONS 3
1. (a) A list of quantities can be given one variable name using a subscript.
Such a variable is called a subscripted variable.
(b)    It defines the number of memory locations required for the array name.
(c)    It is a collection of statements, which requires to be repeated very
frequently in a program. It is placed at the end of the program and may
be referred to at different places in the main program using GOSUB
statement.

30
(d)    RETURN transfers the control back to the main program, to the
statement immediately following the subroutine call.(i.e. GOSUB
statement)
2.    (a)    TWO
THREE
ONE
(b)    5
3

IN-TEXT QUESTIONS 4
1     (a) It takes numeric value as its argument and returns its value after truncating
its decimal part.
(b)    (i) 9
(ii) 899 (As numeric value)

2    (a)   TO
(b)   OE
(c)   TO ERR IS HUMAN TO FORGIVE DIVINE
(e)   ERROR

31

```
To top
;