Название: Квантовая механика - Учеб. пособие. (Краснопевцев Е. А.)

Жанр: Информатика

Просмотров: 1113


3. примеры для выполнения заданий к лабораторной работе № 8

 

3.1. Пример. Тело массой 4,6 кг движется прямолинейно по закону , где s дано в см, t – в сек. Определить и напечатать значение кинетической энергии тела в конце 1, 3, 5, …

…, 9 сек. Вывод осуществить:

а) в виде таблицы

-----------------------

|     t        |     E       |

-----------------------

|     1.000|    20.700|

------------------------

|     3.000|    43.189|

------------------------

|     5.000|    88.412|

---------------------

|     7.000|   152.504|

------------------------

|     9.000|   235.139|

-------------------------

 
 

 

10, 20, 30 – метки оператора Format, на который идет ссылка из операторов вывода write

 
Выполнение

     Program p8_1

     real:: m=4.6, t, v, E

10, 20, 30 – метки оператора Format, на который идет ссылка из операторов вывода write

 
     write (*,10)   

     write (*,20)                        

    write (*,10)

    do t=1,9,2

        s=1+t+t**2

        v=s/t

       E=m*v**2/2

       write (*,30) t,E

       write (*,10)

     enddo

    10 Format(30x,23('-'))  !  по этому формату осуществляется подчеркивание строк

    20   Format(30x,'|',5x,'t',4x,'|',5x,'E',4x,'|') ! вывод заголовка

    30 Format(30x,'|',2(F10.3,'|'))  !  вывод двух чисел по ДП для вещественных чисел F10.3

    end

 

б) время и кинетическую энергию записать в одномерные массивы, затем осуществить форматный вывод массивов в виде:

 

 

 

 

в) время и кинетическую энергию записать в двумерный массив, затем осуществить форматный вывод массива в виде: 

     t           E

------------------

1.0          20.700

3.000    43.189

5.000    88.412

7.000   152.504 

9.000   235.139

 
 

Выполнение

Program p8_3

 real:: m=4.6, t/1/, v, E, rez(5,2)

 integer i/1/

 do while (t<=9)

 s=1+t+t**2

 v=s/t

 E=m*v**2/2

 rez(i,1)=t  !  запись переменной t в первый столбец массива rez

 rez(i,2)=E!  запись переменной E во второй столбец массива rez

i=i+1

t=t+2

enddo

write (*,"(18x,'t',8x,'E',5x)")  !  вывод заголовка

write (*,"(15x,15('-'))")  !  подчеркивание заголовка

write (*,'(10x,2F10.3)') ((rez(i,j),j=1,2),i=1,5) ! форматный вывод двумерного массива rez

 end

 

г) вывести время и кинетическую энергию во внешний файл. Затем считать данные из внешнего файла и вывести их на печать. При записи и считывании можно использовать В/В под управлением списка. Количество записей во внешнем файле равно числу итераций цикла.

выполнение:

Program p8_4

Создается внешнее устройство с номером 4, к которому подсоединяется внешний файл с именем a.txt.

 
real:: m = 4.6,t/1/,v,E,tv,Ev 

integer i/1/

open (4,file='a.txt')

do while (t<=9)

Вывод записей во внешний файл a.txt, который подсоединен к устройству с номером 4, каждая запись состоит из полей вывода переменных t и E. Размер поля вывода определяется форматом вывода, который используется по умолчанию при применении  В/В под управлением списка (F15.6). Число записей равно числу итераций цикла.

 
  s = 1+t+t**2

  v = s/t

  E = m*v**2/2

  write (4,*) t,E  !

  I = i+1

  t = t+2

 enddo

 rewind 4!  переход к началу первой записи в файле a.txt

 do

Цикл завершает свою работу при достижении записи “конец файла”

 
 read (4,*) tv,Ev  считывание записей из файла a.txt в переменные tv и Ev

 print *, tv,Ev

 if(EOF(4).eqv..true.) exit  !

 enddo

 close(4)  !  устройство с номером 4 отсоединяется от внешнего файла a.txt и закрывается

end

 

3.2. Пример. Во внешний файл сделать четыре записи. Затем из этого файла считать третью запись и распечатать ее.

program P8_5

real:: a = 123.89

Создается внешнее устройство с номером 1, к которому присоединяется файл с именем s.txt

 
integer:: k = 100

complex:: z = (12.45,78.9),kom

logical:: f =.true. ,g

open (1,file = 's.txt')  !

write (1,*) a  !  первая запись в файл s.txt

write (1,*) k  !  вторая запись

write (1,*) z  !  третья запись

write (1,*) f  !  четвертая запись

backspace 1  !  возврат от конца файла к четвертой записи

backspace 1  !  возврат от четвертой записи к третьей

read(1,*) kom  !  считывание третьей записи в файле s.txt в переменную kom

print *,kom

close(1)  ! устройство с номером 1 отсоединяется от внешнего файла s.txt и закрывается

end

 

3.3. Пример. Даны две символьные переменные, целое и комплексное число. Преобразовать их в строку, используя строку как внутренний файл. Распечатать строку. Затем из этой строки считать числа и распечатать их.

program p8_6

character(18):: tx ='Celoe chislo =', tk ='  complex =', st*53

integer:: k = 20, kv

complex:: z = (123.6,56.8), zk

Запись переменных tx, k, tk, z в строку st, длина строки равна длине символьных переменных tx, tk + число позиций под целое число k +число позиций под комплексное число z (18+18+3+2*7 = 53).

 
write (st,'(a,i3,a,2F7.2)') tx, k, tk, z

print *,st

read (st,'(18x, i3)') kv

read (st,'(39x, 2F7.2)') zk

print *,kv, zk

end