week 4 - PowerPoint PPT Presentation

About This Presentation
Title:

week 4

Description:

week 4 – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 48
Provided by: tor92
Category:
Tags: bsa | calculates | week

less

Transcript and Presenter's Notes

Title: week 4


1
Introduction to Scientific Engineering
Computing Basic Building Blocks
In all ways of life, the easiest way to solve
most problems is to break them down into smaller
sub_problems and then to deal with each of these
in turn, further sub-dividing these subproblems
as necessary.
2
Programs and modules
  • Main program unit
  • program name
  • use statements
  • .
  • .
  • .
  • Specification statements
  • .
  • .
  • .
  • Executable statements
  • .
  • .
  • .
  • end program name

3
(No Transcript)
4
Modules
  • Programs for solving complex problems should be
    designed in a modular fashion.
  • The problem should be divided into simpler
    subproblems, so that the subprograms can be
    written to solve each of them.
  • Every program must include exactly one main
    program and may also include one or more modules.

5
Modules
  • Modules are a second type of program unit.
  • The basic structure of a module is similar to the
    main program unit.
  • The initial module statement of each module
    specifies the name of that module based on the F
    language rules.
  • A module unit ends with an end module statement
    incuding its name.
  • A module does not contain any executable
    statements.
  • A module may contain any number of subprograms
    which are seperated from the other statements by
    a contain statement.

6
Procedures
  • A Special section of program which is, in some
    way, referred to whenever required, is known as
    a procedure.
  •  Programs can be written by the programmer
  • By some other person who allows the programmer
    to use them
  • Can be a part of the F language itself (i.e.
    intrinsic procedures whose names are
  • reserved words ? must always be written in lower
    case). 
  • Subprograms can also be categorized
    as subroutines  
  • Functions ( create only a single result there
    are a lot of intrinsic functions available in F )

7
Procedures
  • Procedures - origin
  • Write your own (homemade)
  • Intrinsic (built-in, comes with F )
  • sin(x), cos(x), abs(x),
  • Written by someone else (libraries)
  • Procedures (subprograms) form
  • Functions
  • Subroutines

8
Procedures
  • name (argument_1, argument_2, ...)
  • Examples
  • a b log (c)
  • -b sqrt ( b b 4.0 a c)

9
  • The F language does not accept procedures that
    are not in a module.
  • Most features of Fortran 90/95 that are related
    to modules and module procedures are included.
  • Statement functions are not in F.
  • Functions and subroutines are intended to be
    included as module procedures.

10
Subprograms
Functions Functions may, of course, be provided
by the user and they are normally implemented by
means of an F subprogram which is physically
placed within a module as is explained in
Modules.  On the other hand, very important
principle which applies to all procedures in F is
that the main program and any subprograms need
never be aware of the internal details of any
other program unit or subprograms . A function
subprogram can be called by     the main
program     another subroutine
subprogram     another function
11
Functions
  • function name (d1, d2, ) result(result_name)
  • Specifications part
  • .
  • .
  • Execution part
  • end function name
  • Variables
  • Internal (local) variables
  • Result variable (keyword result)
  • Dummy argument (keyword intent(in))

attribute
12
Subroutines
  • call name (arg1, arg2, )
  • intent(in),intent(out),intent(inout)

13
Arguments
  • Actual arguments in the calling program
  • Dummy arguments in the subroutine or function
  • The order and types of the actual arguments must
    correspond exactly with the order and types of
    the corresponding dummy arguments

14
Objects
  • The PRIVATE and PUBLIC attributes specify the
    accessibility of entities in a module. (These
    attributes are also called accessibility
    attributes.)
  • Local variables versus global variables
  • private versus public objects

15
Example
FUNCTION SUBPROGRAM
MAIN PROGRAM
16
Example Write a subprogram which calculates the
cube root of a positive real number
MAIN PROGRAM program test_cube_root use
maths real x print , Type a positive real
number read , x Print , The cube root of
,x, is , cube_root(x) a b cube_root(x)
d end program test_cube_root
17
module maths Publiccube_root contains function
cube_root (x) result (root) ! a function to
calculate the cube root of a positive real
number ! Dummy arguments declaration real,
intent (in) x ! Result variable
declaration real root ! Local variable
declaration reallog_x ! Calculate cube root by
using logs log_x log (x) root exp (log_x /
3.0) function cube_root end module maths
18
Attributes
  • intent (in) the dummy argument only provides
    information to the procedure and is not allowed
    to change its value any way
  • intent (out) the dummy argument only returns
    information from the procedure to the calling
    program
  • intent (inout) the dummy argument provides
    information in both directions

19
Examples of subprograms
  • Write a program using either subroutine or
    function
  • read the edges of a rectangle,
  • write a subprogram which calculate
  • area of rectangle

20
program
subprogram
!this program is calculates area of a
rectangle !using subroutine program
area_calculation use rec reala,b,al print ,
"enter two edges of the rectangle" read ,
a,b call area (a,b,al) print ,
"a",a print,"b",b print , "area_of_rectangle"
,al endprogram area_calculation
module rec publicarea contains subroutine
area(a,b,al) real, intent(in)a,b real, intent
(out)al alab return endsubroutine area end
module rec
21
program
subprogram
!this program is calculates area of a
rectangle program area_calculation use
rec reala,b,al print , "enter two edges of the
rectangle" read , a,b alarea (a,b) print ,
"a",a print,"b",b print , "area_of_rectangle"
,al endprogram area_calculation
module rec publicarea contains function
area(a,b)result (al) real, intent(in)a,b reala
l alab return endfunction area end module rec
22
  • Write a program using either subroutine or
    function
  • read the three edges of a triangle,
  • write a subprogram which calculate area of
    triangle

23
! This program written by SALIH SARIHAN studying
Electrical Engineering in ITU ! This program
calculate area of a triangle and control the rule
of drawn a triangle. ! this program writen by
using subroutine ! emailsarihans_at_itu.edu.tr mod
ule al_tria publicarea contains subroutine
area(a,b,c,al) real,intent(in)a,b,c real,inten
t(out)al reals s(abc)/2 alsqrt(s(s-a)
(s-b)(s-c)) return end subroutine area end
module al_tria
24
program triangle_area use al_tria reala,b,c,al p
rint,"Please enter edges of the
triangle!" read,a,b,c call area(a,b,c,al) !
s(abc)/2 and area_of_trianglesqrt(s(s-a)(s-b
)(s-c)) if a triangle can be drawn, ! it
provides the a-bltcltab rule. Therefore if
a triangle is drawnable, ! s(s-a)(s-b)(s-c)
be a pozitive integers not a negative integer or
zero. ! Finally, if a triangle can be drawn, area
of triangle will be bigger than zero. if (algt0)
then print,"a",a print,"b",b print,"c",c pri
nt,"area of triangle is",al else print,"
This triangle can not be
drawn!!!" print," Please check the edges value
of the triangle and enter correct values
again!!!" end if end program triangle_area
25
!This program written by Adem GÃœNEL from ITU
Meteorology Department module Arithmeticpublic
Addition,Subtraction,Multiplication,Division subr
outine Addition(x,y,z) integer,intent(in)x,y i
nteger,intent(out)zzxyend subroutine
Addition subroutine Subtraction(x,y,z) integer,i
ntent(in)x,y integer,intent(out)zzx-yend
subroutine Subtraction 
subroutine Multiplication(x,y,z) integer,intent(i
n)x,y integer,intent(out)zzxyend
subroutine Multiplication subroutine
Division(x,y,z) integer,intent(in)x,y integer,
intent(out)zzx/yend subroutine Divisionend
module Arithmetic
26
!This program written by Adem GÃœNEL from ITU
Meteorology Department program
Arithmetic_Operationsuse Arithmeticintegera,y,
z,x do print, " Which arithmetic operations do
you want to?" print, "Addition (1)
Print, Subtraction (2)" print,
"Multiplication (3)" print, "Division
(4)" print, "Exit
(5)"read,a select case(a) case(1)
print, "Please enter two numbers"
read,x,ycall Subtraction(x,y,z) print,"Sum
of ,x,y, is ",z case(2) print, "Please
enter two numbers" read,x,y call
Subtraction(x,y,z) print,"Subtraction of
,x,y, is ",z
case(3) read,x,ycall Multiplication(x,y,z)
print,"Multiplication of ,x,y, is ",z
case(4) print, "Please enter two numbers"
read,x,ycall Division(x,y,z)
print,"Division of ,x,y, is ",zcase(5)
exit case default end selectenddoend
program Arithmetic_Operations
27
program
subprogram
module ak public alan contains function
alan(a,b,c) result (al) real, intent(in)
a,b,c real al real s s(abc)/2.0
alsqrt(s(s-a)(s-b)(s-c)) return end
function alan end module ak
program triangle_area use ak real
a,b,c,al print ,"a,b,c" read ,a,b,c al
alan(a,b,c) print ,al end program triangle_area
28
Write a subroutine which, when supplied with the
coordinates of two points (x1,y1) and (x2,y2),
calculates the distance of each point from the
origin and the distance between the points.
Note you can use these formulas
module distance_m publicdistancecontainssubro
utine distance(x1,y1,x2,y2,d12,d1,d2)!dummy
argument declarationreal, intent(in)x1,y1,x2,y2
real, intent(out)d12,d1,d2!calculate distance
of the first point from origind1 sqrt(x12
y12)!calculate distance of the second point
from origind2 sqrt(x22 y22)!calculate
distance between the two points.d12
sqrt((x2-x1)2 (y2-y1)2)!exit subend
subroutine distanceend module distance_m
program distance_proguse distance_m!variable
declarationrealx1,y1,x2,y2,d1,d2,d12!read the
first point (x1,y1)print ,"enter the first
point as (x1,y1)"read ,x1,y1!read the second
point (x2,y2)print ,"enter the first point as
(x2,y2)"read ,x2,y2!call subroutine distance
call distance(x1,y1,x2,y2,d12,d1,d2)!print
resultsprint,"the distance of the first point
to origin is gt d1",d1print,"the distance of
the second point to origin is gt
d2",d2print,"the distance between the two
points is gt d12",d12!end of the main
programend program distance_prog
29
Write a function, which will return the cube root
of its argument.
module testcube publiccube_root contains functio
n cube_root(x) result(root) ! This function
program calculates the cube root of any real
number ! Dummy argument and result
declarations !Dummy argument declaration real,
intent(in)x !Result variable declaration realr
oot !Local variable declaration reallog_x !elimi
nate the zero case if(x0.0) then root
0.0 !Calculate cube root by using logs else if
(xlt0.0) then ! calculate the cube root by using
logs negative argument log_x log(-x) root
-exp(log_x/3.0) else !positive argument log_x
log(x) root exp(log_x/3.0) end if end function
cube_root end module testcube
Structure plan Function cube_root(x) If
x0 Return zero Else if xlt0 Return
exp(log(-x)/3) Else Return exp(log(x)/3)
30
program e_4_1 use m1 real x1,y1,x2,y2,d_1,d_2,di
stance print ,"Koordinatlari giriniz ,
x1,y1,x2,y2" read , x1,y1,x2,y2 call
s1(x1,y1,x2,y2,d_1,d_2,distance) end program
e_4_1 module m1 public s1 contains
subroutine s1(x1,y1,x2,y2,d1,d2,d) real, intent
(in) x1,y1,x2,y2 real, intent (out)
d1,d2,d d1sqrt(x1x1y1y1)
d2sqrt(x2x2y2y2) dsqrt((x2-x1)2
(y2-y1)2) print ,"Merkezden uzaklik (x1,y1)
icin",d1 print ,"Merkezden uzaklik (x2,y2)
icin",d2 print ,"Noktalar arasi uzaklik",d
end subroutine s1 end module m1
31
program distance_prog! variable
declaration realx,y,b ! read the value of
x print ,"enter the values of x and b (both
must be positive)" read ,x,b! call function
for the log. y log_b_x(x,b)! print
results print ,"the logarithm of number x",x,"
to base b",b," is ",y! end of the main
program end program exercise_2!

function log_b_x(x,b) ! dummy argument
declaration real, intent(in)x,b real
log_denominator,log_nominator ! calculate the
nominator of the formula log_nominator
log10(x)! calculate the nominator of the
formula log_denominator log10(b)! calculate
the result log_b_x log_nominator /
log_denominator! exit sub end function log_b_x
32
module cube_root_calc_1 public
cube_root contains function cube_root(x)
result(root)! Dummy argument declaration realx
! Result variable declaration realroot! Local
variable declaration reallog_x! Calculate
cube root by using logs log_x log(x) root
exp(log_x/3.0) end function cube_root end
module cube_root_calc_1!
program
test_cube_root use cube_root_calc_1 real
x print ," type real positive number" read ,
x print ,"the cube root of x",x,"
is",cube_root(x)end program test_cube_root
33
module various_roots_1public
rootscontainssubroutine roots(x,square_root,cube
_root,fourth_root,fifth_root)!subroutine to
calculatebvarious rots of a positive real
numbers! Supplied as the first argument, and
returned them in the second to fifth
arguments!Dummy argument declarationreal,
intent(in)x!Result variable declarationreal,
intent(out)square_root,cube_root,fourth_root,fif
th_root!ocal variable declarationreallog_x!Ca
lculate square root using intrinsic
sqrt()square_root sqrt(x)!Calculate other
root by using logslog_x log(x)cube_root
exp(log_x/3.0)fourth_root exp(log_x/4.0)fifth_
root exp(log_x/5.0)end subroutine rootsend
module various_roots_1!

34
program various_roots use various_roots_1!A
program to show the use of the subroutineroots re
al x,root_2,root_3,root_4,root_5 print ,"
type real positive number" read , x! obtain
roots call roots(x,root_2,root_3,root_4,root_5)
print ,"the square root of x",x,"
is",root_2 print ,"the cube root of x",x,"
is",root_3 print ,"the fourth root of x",x,"
is",root_4 print ,"the fifth root of x",x,"
is",root_5 end program various_roots
35
module make_full_name_1 contains
subroutine get_full_name(first_name,last_name,full
_name)! Subroutine to join two names to form a
full name with a single! space between the
first and last names! Dummy argument
declaration character (len), intent(in)
first_name,last_name character (len),
intent(out) full_name! use adjustl to remove
redundant leading blanks, and trim! to
remove redundant blanks atr the end of first
name full_name trim(adjustl(first_name)) // "
" // c adjustl(last_name) end
subroutine get_full_name end module
make_full_name_1!
program
make_full_name use make_full_name_1! Variable
declaration character (len80)name_1,name_2,nam
e! read the first name print ,"enter the first
name" read ,name_1! read the surname print
,"enter the surname" read ,name_2! combine
two names by using the subroutine named
get_fuul_name call get_full_name(name_1,name
_2,name) print ,"the combination of the two
names is gt ",name end program make_full_name
36
module Natural_Constantsreal,parameter,publicpi
3.1415927,g 9.81, e2.7182818end module
Natural_Constants!
program module_example_1 use
Natural_Constants print ,g,pi end program
module_example_1
37
! Example P.8. (Catherine Spade, 11 October
1999) ! Temperature Converter with Procedures.
program A08 use A08M implicit none
real Fahr, Cels ! start program A08 call
Input( Fahr ) ! Subroutine reference Cels
Temp_C( Fahr ) ! Function reference call Output(
Fahr, Cels ) ! Subroutine reference stop end
program A08
38
module A08M implicit none public Input,
Temp_C, Output Contains End
module A08M
subroutine Input( F_Temp ) real,
intent(out) F_Temp ! start subroutine Input
write (unit , fmt ) " Please enter the
Fahrenheit temperature. " read (unit ,
fmt ) F_Temp return end subroutine
Input
function Temp_C( F_Temp ) result( Temp_C_R )
real, intent(in) F_Temp real
Temp_C_R real, parameter T_SCALE 1.8,
OFFSET 32.0 ! start function Output
Temp_C_R (F_Temp - OFFSET) / T_SCALE
return end function Temp_C
subroutine Output( F_Temp, Temp_C_R ) real,
intent(in) F_Temp, Temp_C_R ! start
subroutine Output write (unit , fmt )
F_Temp, " deg. F ", Temp_C_R, " deg. C"
return end subroutine Output
39
! Example 2.14 program C14 use C14M
implicit none ! start program C14 call Input(
) call Calculate( ) call Output( )
stop end program C14
module C14M implicit none public
Input, Calculate, Output real, private
Fahr, Cels contains subroutine Input( ) !
start subroutine Input write (unit , fmt
) " Enter the Fahrenheit temperature. "
read (unit , fmt ) Fahr return
end subroutine Input subroutine Calculate( )
real, parameter T_SCALE 1.8, OFFSET
32.0 ! start subroutine Calculate Cels
(Fahr - OFFSET) / T_SCALE return end
subroutine Calculate subroutine Output( ) !
start subroutine Output write (unit ,
fmt ) Fahr, " deg. F ", Cels, " deg. C"
return end subroutine Output end module
C14M
40
Prepare a computer program which calculates and
prints, the bottom surface area and the volume of
a concrete cylinder block having the following
initial values   radius r 210 cm
height h 315 cm
41
program question4 realr,h,bsa, vol real,
parameterpi3.14 r210 h315 bsapirr volbsa
h print,"bottom surface area",bsa,
"cm2" print,"volume", vol, "cm3" end program
question4
42
Write a function which, when supplied with the
coordinates of two points (x1, y1) and (x2,
y2), calculates the distance between the points
by means of following formula.  d (x2 - x1)
2 (y2 - y1) 2 1/2
43
!this program is calculates distance !between two
points program distance use distance_m realx1,y1
,x2,y2,d print , "enter coordinates of two
points" read , x1,y1,x2,y2 ddist(x1,y1,x2,y2) pr
int , "x1",x1, "y1",y1 print,"x2",x2,"y2",y2
print , "distance",d endprogram distance
module distance_m publicdist contains function
dist(x1,y1,x2,y2)result (d) real,
intent(in)x1,y1,x2,y2 reald dsqrt((x2-x1)2
(y2-y1)2) return endfunction dist end module
distance_m
44
module mod1public fun1,fun2,fun3,sub1contains
function fun1(x) result(a)real, intent(in)
xreal aa2x33xend function
fun1function fun2(x) result(b)real, intent(in)
xreal bb3x24end function
fun2function fun3(x) result(c)real, intent(in)
xreal cc 7x5end function
fun3subroutine sub1(a,b,c,z,fz)real, intent(in)
a,b,c,zreal, intent(out) fzfz
az2b2cend subroutine sub1end module mod1
pragram calculation use mod1 real
a,b,c,x,z,fz print , "enter a value for x" read
, x print , "enter a value for z" read , z a
fun1(x) b fun2(x) c fun3(x) call
sub1(a,b,c,z,fz) print , "fz is equal, fz end
program calculation
45
HOMEWORK
PROBLEM Consider a geometrical body which
consists of a steel-cylinder and a cone of lead
having the same radius. Then, prepare a computer
program having the structure described in below

46
  • The main program will read the input values
    (radius r50cm, height of the cylinder, h1300cm,
    height of the cone h2 150cm, density of steel,
    d1 7.85 t/m3, density of lead d2 11.40 t/m3
    )
  • calculate the total volume of the given body
  • calculate the total weight of the given body
  • finally print,
  • the input values
  • the volume of the cylinder
  • the weight
  • the volume of the cone
  • the weight of the cone
  • the total volume of the given body
  • the total weight of the given body
  • using list directed output command including the
    above-given expressions for the input values and
    the results obtained.

47
A function sub-program will calculate only the
bottom surface area   A subroutine sub-program
will calculate the volume of the cylinder the
weight of the cylinder   Another subroutine
sub-program will calculate the volume of the
cone the weight of the cone
Write a Comment
User Comments (0)
About PowerShow.com