Skip to content
This repository has been archived by the owner on Jan 1, 2019. It is now read-only.

Commit

Permalink
Add a folder for Fortran
Browse files Browse the repository at this point in the history
  • Loading branch information
thatlittlegit committed Oct 16, 2017
1 parent 1808415 commit e958648
Show file tree
Hide file tree
Showing 6 changed files with 182 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Fortran/HelloWorld.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
! | Like ... in XML
program hello ! Start the program | <program hello>
print *, "Hello, World!" ! Print "Hello, World!" | <print>Hello, World</print>
end program hello ! End the program | </program>
43 changes: 43 additions & 0 deletions Fortran/IO.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
program io_example
CHARACTER*10 :: input
CHARACTER*20 :: file_input
!
! Output
!

! The print command is used to print text on screen.
print *, "Hello, World!"
! write(*,*) is equivilent
write (*,*) "Hello, World!"

! File IO
! Open a file descriptor 20 for my.txt
! NOTE: usually you would have a constant for it, but you don't have to.
open (unit=20, file="my.txt", action="write", status="replace")
! Write to it
write (20,*) "Hello, my.txt!"
! Close it
close (20)
! (that was basically a fopen(3), fwrite(3) and fclose(3))

!
! Input
!

! Get input from standard input
read (*, *) input
! Spit it out to standard output
print *, input

! File IO
! Open a file descriptor 12 for my.txt
open (unit=12, file="my.txt", action="read", status="old")
! Read it
! (the '(A)' makes it read the whole line)
read (12,'(A)') file_input
! Spit it out to stdout
print *, file_input
! Close it
close (12)
! (aka fopen(3), fread(3) and fclose(3))
end program io_example
65 changes: 65 additions & 0 deletions Fortran/Logic.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
program logic_example
! Variables
LOGICAL :: myVar
! Integer(16)
INTEGER (16) :: myInt = 4, myNewInt

!
! if statement
!
myVar = .TRUE.

if (myVar) then
print *, "It works!"
end if

!
! Comparison Operators
!
if (myInt .GT. 1) then ! or if (myInt > 1) then...
print *, "It works!"
end if

if (myInt .LT. 5) then ! or if (myInt < 5) then...
print *, "It works!"
end if

if (myInt .GE. 4 .AND. myInt .LE. 4) then ! or if (myInt >= 4 .AND. myInt <= 4) then...
print *, "It works!"
end if

if (myInt .EQ. 4 .AND. myInt .NE. 3) then ! or if (myInt == 4 .AND. myInt /= 3) then...
print *, "It works!"
end if

!
! select case () [switch]
!
select case (myInt)
case (1)
print *, "Nope!"
case (2)
print *, "Nope!"
case (3)
print *, "Nope!"
case (4)
print *, "We have a winner!"
case default
print *, "Nooope!"
end select

!
! do loop [for-like]
!
do myInt=0, 20
print *, myInt ** 2
end do

! Can be nested
do myInt=1, 20
! Third argument means count by twos
do myNewInt=1, 10, 2
print *, myInt ** myNewInt
end do
end do
end program logic_example
20 changes: 20 additions & 0 deletions Fortran/Math.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
program math_example
! Variables
INTEGER :: a, s, d, m
REAL :: dd
DOUBLE PRECISION :: dpd

a = 1 + 1 ! Set a to 1+1
s = 2 - 1 ! Set s to 2-1
d = 2 / 3 ! Set d to 2/3 or 0 (round down)
dd= 2.0 / 3.0 ! Set dd to 2/3 or 0.666666687
dpd=2.0 / 3.0 ! Set dpd to 2/3 or 0.66666668653488159
m = 2 * 2 ! Set m to 2*2

print *,a
print *,s
print *,d
print *,dd
print *,dpd
print *,m
end program math_example
13 changes: 13 additions & 0 deletions Fortran/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Fortran
> Fortran is a programming language mainly used by the scientific community. Its name is a contraction of FORmula TRANslation, and its aim is to provide a way to tell computers to calculate complicated mathematical expressions, with more ease than assembly language.
>
> ~[WikiBooks](https://wikibooks.org/wiki/Fortran)
>
Fortran is a language originally made in 1957, and since updated in 1958, 1962, 1966, 1977, 1991, 2003 and finally 2008. It was one of the first programming languages for an IBM computer.


> ### Note
> I'm going to be using Fortran 90, from 1991.
>
> Also, Fortran is case-insensitive, but I will be using lowercase.
37 changes: 37 additions & 0 deletions Fortran/Variables.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
program variable_example
!
! Integers, strings and booleans
!
INTEGER :: myNumber = 0 ! Declare an integer, with value 0
INTEGER (16) :: myBigNumber ! Declare a 8-byte (64-bit) integer
INTEGER (1) :: myTinyNumber = 9 ! Fix a compile error
LOGICAL :: myBoolean = .TRUE. ! Declare a boolean
CHARACTER*3 :: myWord = "Pig" ! Declare a word myWord to Pig
! Note that all variables by default are
! mutable. For constant, try ,PARAMETER
LOGICAL, PARAMETER :: myConstantBoolean = .FALSE. ! A constant boolean.

REAL :: myFloat = 3.1415 ! Declare a REAL, aka a float
DOUBLE PRECISION :: myDouble = 3.141526 ! Declare a DOUBLE PRECISION, aka a double

!
! Reassignment
!
myInteger = 1 ! Change myInteger from 0 to 1
myBigNumber = 11**myTinyNumber ! Set myBigNumber to 11^9 (overflows to negative)
myBoolean = .FALSE. ! Change myBoolean from .TRUE. to .FALSE.
myWord = "Dog"

!myConstantBoolean = .TRUE. ! This will not compile, as myConstantBoolean is constant!

myWord = "Food!" ! This does compile, but myWord only keeps Foo

! Output the values
print *, myNumber ! => 0
print *, myBigNumber ! =>
print *, myBoolean ! => F
print *, myWord ! => Foo
print *, myConstantBoolean !=> F
print *, myFloat ! => 3.14150000
print *, myDouble ! => 3.1415259838104248
end program variable_example

0 comments on commit e958648

Please sign in to comment.