24497 BIL106E Introduction to Scientific and Engineering

advertisement

24497 BIL106E Introduction to Scientific and Engineering Programming

2012-2013 Spring Semester Midterm Exam 1

05.04.2013

PROBLEM 1: (10p) Find the value of each of the following expressions

(a)

(e)

2/3/4

(b) 2/(3/4)

(c) 2/3/4.0

(d) 2/3.0/4

2**3**2

(f) 4**3/2

(g) 4**(3/2)

(h) 4**(3/2.0)

(i) 4.0**(3/2)

(j) "abcde"(3:5)//"-"// "99"

SOLUTION 1:

(a) 0

(b) division by zero

(c) 0.0

(d) 0.166666

(e) 512

(f)

(g)

(h)

(i)

(j)

32

4

8.0

4.0 cde-99

PROBLEM 2: (10p) What will be the output of the following program? program prn integer :: i, j do i = 5, 1, -1 print "(1x, 5i1)", (/(i-j+1, j=1, i)/) end do end program prn

SOLUTION 2:

◊54321

◊4321

◊321

◊21

◊1

PROBLEM 3: (10p) Consider the array numb = (/1, 2, 3, 4, 5, 6, 7, 8, 9, 0/). Print the array as

(a) a single row of numbers

(b) a single column of numbers

(c) two rows of five numbers

(d) five rows of two numbers

(e) a single row leaving one space between consecutive numbers

Your answers should be single print statements.

SOLUTION 3:

(a) print *, numb

(b) print "(i1)", numb

(c) print "(5(1x, i1))", numb

(d) print "(2(1x, i1))", numb

(e) print "(1x,10(i1, 1x))", numb

PROBLEM 4: (15p) Write a function the receives an integer number n as an argument and returns a string value

"negative" – if n is a negative number

"zero" – if n is equal to zero

"positive" – if n is a positive number.

SOLUTION 4: function signum(n) result(ans) integer, intent(in) :: n character(len = 8) :: ans select case(n) case(:-1) ans = "negative" case(0) ans = "zero" case(1:) ans = "positive" end select end function signum

PROBLEM 5: (15p) Write a subroutine that interchanges the first characters of two strings.

SOLUTION 5: subroutine swapletter(a, b) character(len = *), intent(inout) :: a, b character(len = 1) :: temp temp = a(1:1) a(1:1)=b(1:1) b(1:1)=temp end subroutine swapletter

PROBLEM 6: (20p) Consider the figure below. The square OABC has a sidelength of 1 cm . The coordinates of the point P are x

P

and y

P

, respectively. Write a program that reads x

P

and y

P

and prints the output message

"inside"- when the point P is inside or on the edge of the square

"outside" - when the point P is outside the square.

SOLUTION 6: program prob6 real :: xp, yp print *, "Enter the x and y coordinates of the point P" read *, xp, yp if (xp<0.or.xp>1.or.yp<0.or.yp>1) then print *, "outside" else print *, "inside" end if end program prob6

y

O

C (0, 1) B (1, 1)

P ( x

P

, y

P

)

A (1, 0) x

PROBLEM 7: (20p) The velocity of a particle P is defined by

Write a program that finds the instants in the interval t

  s v

P

( t )

 t

3 

6 t

2 

11 t

6 m / s .

at which the velocity of the particle is equal to zero. Do this by dividing the time interval into subintervals of 0.05 s and checking whether the sign of the velocity function at an instant t i

 t

0

 i

  t changes.

SOLUTION 7: program prob7 integer :: i, n real :: x1, x2, fx1, fx2 n = 5.0 / 0.05 do i = 0, n x1 = i * 0.05 x2 = x1 + 0.05 fx1 = x1 ** 3 - 6.0 * x1 ** 2 + 11.0 * x1 - 6.0 fx2 = x2 ** 3 - 6.0 * x2 ** 2 + 11.0 * x2 - 6.0 if (fx1*fx2<0) then print *, x1 end if end do end program prob7

Download