We have been programming slowly and now we are more confident than before. We can now change the value of a variable, check for a particular condition, we now know how to manage a large formula in the form of a function and save it in the file to use it in the future. Now we will go a little further on our journey. Now we will learn how we can run the same calculations repeatedly. For example, if you are given a task to calculate the sum of all the numbers from 1 to 100, then you have to do the same thing 100 times, which is to add the next number to the previous sum. Which is very boring and error-prone. I assume that we can not use any formula for some unknown reason, so we have to add all the numbers one by one.
Suppose you were told to get the sum of all the numbers from 1 to 1000, then?
Or suppose you need the sum of all the numbers from 1 to 10000 !!!
You think the calculator will help. Well, you might not have to add the numbers, but you have to input all the numbers.
Impossible ???
Here is where programming helps you, you write a small program and run with bc to get the result within a few seconds. Let's see how -
Another way we can write a loop is by using the while keyword. Let's see how we do it -
Suppose you were told to get the sum of all the numbers from 1 to 1000, then?
Or suppose you need the sum of all the numbers from 1 to 10000 !!!
You think the calculator will help. Well, you might not have to add the numbers, but you have to input all the numbers.
Impossible ???
Here is where programming helps you, you write a small program and run with bc to get the result within a few seconds. Let's see how -
1 | /* This function will sum all numbers from 1 to n */ |
We have saved this program to a file and will run it with bc. I will now explain each line one by one.
- In line number 1, we wrote a comment, which implies what the function is doing. Comment does not run in bc, so you can run whatever you want in a comment. Comment is a good programming practice, so that another programmer or you yourself read the program later and understand why the program was written.
- We are already familiar with line number 2, so nothing to say there
- In line 3, we provide the value 0 to the variable named result. This is also part of a programming, where we assign values to a variable, in the language of programming it is called assignment.
- In the 4th line we have written a loop, we have used the for loop. There are 3 parts of a for loop. Assignment, condition, update, i = 1 assignment in our loop, i < n condition implies that as long as the value of i is less than n, the loop will run and finally we increase the value of i to 1 after running the loop every time, which is the update .
- At line number 5, we are adding the value of current i to the previous sum, as we run the loop every time. Think on what will be the final sum.
- Ending the loop on line number 6
- We also have a familiarity with the 7th line, so there is nothing to say about it.
totan@Home-Computer ~/bc $ bc -l sum_numbers.bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
sum_numbers(1)
1
sum_numbers(2)
3
sum_numbers(3)
6
sum_numbers(4)
10
sum_numbers(5)
15
sum_numbers(6)
21
sum_numbers(7)
28
sum_numbers(9)
45
sum_numbers(10)
55
sum_numbers(100)
5050
sum_numbers(1000)
500500
sum_numbers(10000)
50005000
sum_numbers(100000)
5000050000
sum_numbers(1000000)
500000500000
Another way we can write a loop is by using the while keyword. Let's see how we do it -
1 | /* This function will sum all numbers from 1 to n */ |
for and while works the same way and there are similar sections of assignment (line 4), condition (line 5), update (line 7) but all are in different places, unlike for loop where all these three sections come in a single line.
Now we will finish the mini-series related bc by writing a program with loop for factorial-
define factorial ( n ) {
result = 1;
for ( i = 1; i < = n; i ++ ) {
result = result * i;
}
return result;
}
I will not give an analysis of this program, I leave it on you to understand this program. Let's now calculate factorial of some numbers with this-
totan@Home-Computer ~/bc $ bc factorial.bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
factorial(5)
120
factorial(6)
720
factorial(4)
24
factorial()
Runtime error (func=(main), adr=3): Parameter number mismatch
factorial(3)
6
factorial(2)
2
factorial(1)
1
factorial(0)
1
factorial(-1)
1
factorial(10)
3628800
factorial(11)
39916800
factorial(12)
479001600
factorial(20)
2432902008176640000
factorial(25)
15511210043330985984000000
factorial(30)
265252859812191058636308480000000
factorial(40)
815915283247897734345611269596115894272000000000
factorial(50)
30414093201713378043612608166064768844377641568960512000000000000
factorial(55)
12696403353658275925965100847566516959580321051449436762275840000000\
000000
factorial(70)
11978571669969891796072783721689098736458938142546425857555362864628\
009582789845319680000000000000000
factorial(90)
14857159644817614973095227336208257378855699612846887669422168637049\
85393094065876545992131370884059645617234469978112000000000000000000\
000
factorial(100)
93326215443944152681699238856266700490715968264381621468592963895217\
59999322991560894146397615651828625369792082722375825118521091686400\
0000000000000000000000
factorial(120)
66895029134491270575881180540903725867527463331380298102956713523016\
33557244962989366874165271984981308157637893214090552534408589408121\
859898481114389650005964960521256960000000000000000000000000000
factorial(150)
57133839564458545904789328652610540031895535786011264182548375833179\
82912484539839312657448867531114537710787874685420416266625019868450\
44663559491959220665749425920957357789293253572904449624724054167907\
22118445437122269675520000000000000000000000000000000000000
factorial(180)
20089606249913429965695133689846683891754034079886777794043533516004\
48609533959809411801381120973097356315941010373996096710321321863314\
95273609598531966730972945653558819806475064353856858157445040809209\
56035846331964466489111425643001782414179675381819233864230269332781\
8731986039603200000000000000000000000000000000000000000000
factorial(200)
78865786736479050355236321393218506229513597768717326329474253324435\
94499634033429203042840119846239041772121389196388302576427902426371\
05061926624952829931113462857270763317237396988943922445621451664240\
25403329186413122742829485327752424240757390324032125740557956866022\
60319041703240623517008587961789222227896237038973747200000000000000\
00000000000000000000000000000000000
factorial(250)
32328562609091077323208145520243684709948437176737806667479424271128\
23747555111209488817915371028199450928507353189432926730931712808990\
82279103027907128192167652724018926473321804118626100683292536513367\
89390895699357135301750405131787600772479330654023390061648255522488\
19436572586057399222641254832982204849137721776650641276858807153128\
97877767295191399084437747870258917297325515028324178732065818848206\
24785826598088488255488000000000000000000000000000000000000000000000\
00000000000000000
factorial(300)
30605751221644063603537046129726862938858880417357699941677674125947\
65331767168674655152914224775733499391478887017263688642639077590031\
54226842927906974559841225476930271954604008012215776252176854255965\
35690350678872526432189626429936520457644883038890975394348962543605\
32259807765212708224376394491201286786753683057122936819436499564604\
98166450227716500185176546469340112226034729724066333258583506870150\
16979416885035375213755491028912640715715483028228493795263658014523\
52331569364822334367992545940952768206080622328123873838808170496000\
00000000000000000000000000000000000000000000000000000000000000000000\
000
factorial(400)
64034522846623895262347970319503005850702583026002959458684445942802\
39716918683143627847864746326467629435057503585681084829816288351743\
52289619886468029979373416541508381624264619423523070462443250151144\
48670890662773914918117331955996440709549671345290477020322434911210\
79759328079510154537266725162787789000934976376571032635033153396534\
98683868313393520243737881577867915063118587026182701698197400629830\
25308591298346162272304558339520759611505302236086810433297255194852\
67443223243866994842240423259980555161063594237696139923191713406385\
89965379701478272066063202173794720103213566246138090779423045973606\
99567595836096158715129913822286578579549361617654480453222007825818\
40084843641559122945427538480355837451802267590006139956014559520612\
72111929181050324910080000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000000000000000000
We have seen some interesting things in this series that will help us in our mathematical work, and we also knew how to do some simple programming. I will leave it here, but you can do some more with bc. If you want to know more, you can run man bc to know more about it and continue with bc.
No comments:
Post a Comment