Курс лекций по дисциплине Программирование на языке Фортран
Скачать 0.98 Mb.
|
Пример нахождения минимального 3- х чиселОператор SELECT CASE Для избежания длинной последовательности проверок оператором if можно использовать оператор SELECT CASE SELECT CASE (выражение), где выражение- целочисленное символьное или логическое скалярное выражение . список I- список констант соответствующего выражению типа. Выражение не может быть вещественного типа. CASE(список 1) [блок 1] CASE(список 2) [блок 2] CASE(список 1n) [блок n] end select Левая граница диапазона должна быть меньше правой. Если опущена левая граница, то это указывает на список всех значений меньших и равных левой границе. Аналогично, если опущена правая граница. Оператором SELECT CASE могут быть вложены друг в друга. При этом каждая функция завершаться собственным END SELECT. Если в значении выражения входит в список I, то выполняется блок I операторов и затем управление передается на следующий за END SELECT операторов Если значение не входит ни в один из списков, то выполняется блок n(CASE DEFAULT). Пример нахождения числа положительных, отрицательных и нулевых элементов целочисленного массива. Integer a(100), np/0/,ne/0/,nz/0/,I ! ввод массива а Do I=1, 100 Select case (a(i)) Case(1:) Np=np+1 Case(-1:) Ne=ne+1 Case(0) !или case default Nz=nz+1 End select End do 2.5.4. Оператор цикла DO Оператор DO выполняет повтор некоторого блока операторов заданное число раз
где Lb – метка используемого оператора; var – переменная цикла, имеет тип INTEGER, или REAL; start, end – выражения или переменные (целые или вещественные), задающие начальные и конечные значения переменной var; step – необязательное выражение или переменная типа INTEGER, или REAL, задающее приращение(шаг) переменной var. step0, по умолчанию step1. Ч Пример: do i=1,5.3 ni=5 do i=1.2,5.3,1.1 ni=4 do i=-1.2,5.3,1.1 ni=0 исло итераций определяется по формуле: если в цикле нет операторов выхода, то он выполняется ni раз. Замечания: о do k=1,10 k=k+2 end do ператор DO целиком находится в теле других DO или IF операторов, т.е. должна соблюдаться вложенность; значения переменной цикла не должно меняться в теле цикла. Неверный код: Переход внутрь DO цикла извне запрещен. Пример вычисления многочлена по схеме Гарнера: p=a5x5+a4x4+a3x3+a2x2+a1x1+a0=((((a5x+a4)x+a3)x+a2)x+a1)x+a0 program Gorner integer i Real a(0:5),x,p Data a/2,3,4,5,6,7/ x=0.7 p=a(5) do i=4,0,-1 p=p*x+a(i) end do write (5,*)’Значения многочлена p=’,p end результат: p=10.39209 Пример вложенных циклов Real a(4,6), b(6,5), c(4,5) do i=1,4 do j=1,5 s=0.0 do k=1,6 s=s+a(i,k)*b(k,j) end do c(i,j)=s ! Внешняя операция индексирования end do end do 2.5.5. Оператор цикла с условием DO WHILE. Цикл с условием используется при заранее неизвестном количестве повторений. Синтаксис DO Lb WHILE (Logic_expr) …тело цикла Lb оператор или DO WHILE (Logic_expr) …тело цикла END DO где Lb –метка используемого оператора; Logic_expr –логическое текстовое выражение. Тело цикла – набор операторов, выполняемых до тех пор, пока текстовое выражение истинно При выполнении оператора DO WHILE выполняется следующая последовательность шагов Вычисление логических выражений Logic_expr. Если Logic_expr=.FALSE., то тело цикла не выполняется и управление передается на следующий за TND DO оператор; Если Logic_expr=.TRUE., то выполняется тело цикла. По достижению конца цела цикла логическое выражение Logic_expr вычисляется заново и выполнение цикла продолжается. Пример вычисления суммы знакочередующегося степенного ряда: S(x)= с точностью ε =10 т.к погрешность суммы членов {bk} знакочередующегося ряда не превосходит модуля первого отброшенного члена, то условие достижения заданной точности < ε. Значение последующего члена ряда удобно определить использую предыдущий, а именно его умножением на их отношение: тогда члены ряда определяются по рекуррентной формуле: bk=bk-1, при k=1,2,… при начальном условии b0=x (при k=0) 2.6.4. Оператор Function Оператор объявления функций: |