# 100 Days of Code Log R1D2

Today I had continued with Fortran for Scientific Computing and learned about

• Character datatype
• Logical datatype and operators
• Conditional Statements

### Character Datatypes

The character dataypes are declared as either a single character or as an array of particular length.

 ``````1 2 `````` ``````character :: c character(len=5) :: str ``````

Two main points about strings are that,

• if the length of string input is less than specified, the remaining is filled by space.
• If it greater than the specified length, only the specified length is read and rest is discarded.

Also, I learnt about functions such `achar`, `iachar`, `trim`, `len_trim` and so on.

### Logical statements

The logical statements are verbose and hence it is very easy to read how they work. In the following code, read `.eqv.` as “equivalent” and `.neqv.` as not equivalent. The rest will be easy to understand.

 ``````1 2 3 4 5 6 `````` ``````logical function is_it_leap_year(year) integer :: year is_it_leap_year = (mod(year, 400)==0) .or. (mod(year, 4)==0) .and. .not. (mod(year, 100)==0) end function is_it_leap_year ``````

### Conditional Statements

The fortran code has two ways of having if statements

#### Multiline

 ``````1 2 3 `````` ``````if (x< 3) then x = x+3 end if ``````

#### Inline (logical if)

 ``````1 `````` ``````if (x<3) x = x+3 ``````

### Iterations

The iterations are carried through either

 ``````1 2 3 4 5 `````` ``````! do loops do i = 1, 11, 2 ! 1 - start; 11 - end; 2 - step size print *, i, i**2 end do ``````

or the

 ``````1 2 3 4 5 6 `````` ``````! while loops integer :: i = 0 do while (i < 10) print *, i, i**2 i = i + 2 end do ``````

I also attempted the quizzes which gave insights to the various little things by which fotran may differ from, say, python.