# FORTRAN Tutorial Lesson 3 | comment| range & precision| variable update

Go through all previous lessons, before proceeding here.

Comment, range and precision are the tools to understand the data and its uses in FORTRAN programming language. Let’s go one by one.

## What is comment?

Comment is an important part of any programming language. In any programming Language, all the codes are executed except comment. In other words, the text which are ignored by the compiler are comments.

It is an important tool to any programmer to increase their productivity. It is not mandatory to write. But, using it effectively, help to understand the code even better.

Programmer use comments for different proposes. — some use it to explain part of code, some use to leave a guide or mark to the code, and many other uses. The different program uses different syntax to write a comment.

## How to write comment in FORTRAN?

In FORTRAN, any text after ‘` ! `‘ is a comment.

for e.g:

``````integer :: my_age = 24
! This is a comment``````

You can write as many comments as you want. You can write comments even in the code line too.

``integer :: new = 45.67      ! new is the new variable``

## Range of data

Let’s talk about the range of data types:

First, you should know about the variables and data types in FORTRAN.

Let’s create a integer variable named cost for now:

``integer :: cost``

Now store value in that `cost` variable. But question comes, how greater value of integer can we store in the `cost` variable.

By default, we can store a maximum up to number. So if we try to store a number greater than that, we will get an error.

This is called range and this range can be changed using one intrinsic function called `KIND`. When `KIND` is not specified, default value of that `KIND` is 4. But we can change value to 8, and 16.

`so`

``````integer :: cost =  2147483648        ! error because that
! number is out of range, 2147483648 > 2^31 - 1
integer (kind=8) :: cost = 2147483648      ! correct because this
! variable has kind 8 so it can store up to 2^63 -1 number``````

So we understood the range of integer data types but what about the real data type?

## Precision of data

Real data type includes numbers in decimal value. So, there we talk about the precision of decimal values. By default, we get the real values with 8 decimal place, but we can increase or decrease its decimal place using the same `kind` specifier

``````real :: pi = 22.0/7.0
print*, pi                 ! output is 3.14285707, ( 8 decimal place)``````

now lets increase the precision of the value:

``````real (kind = 8) :: pi = 22.0 / 7.0
print*, pi               ! output is 3.142857074375488 ``````

Hence, the precision is increased using `kind` specifier.

## Variable update

Variables are created to store the value. Sometimes, we have to create a variable which value remains fixed throughout the program or the value keeps changing.

If the value to be stored in unchangeable, that means constant value, then using parameter keyword makes the variable value unchangeable.

``````real, parameter :: G = 6.67 * 10e-11      ! parameter makes this value
! unchangeable  ``````

But if we need to change the value then we can reassign different value to the same variable.

``````logical :: ans      ! ans variable is created with logical datatype
ans = True                ! True value is assigned.
ans = False                ! False value is reassigned``````

We can update the variable using the expression also.

``````integer :: value = 4
value = value + 6                    ! updating the variable
print*, value``````

Guess the output:

The second line code seems mistake, as we used value name on both sides, but its okay for any programming language.

First value is assigned 4, then `value = value + 6 `means `value = 4 + 6`, the first assigned value comes to the expression on right side of the equation and the calculation is done and new value is assigned to `value` variable.

The output of above code is `10`.

For more understanding, watch video Information on comments, range and precision.