Правильная организация циклов Неправильная–циклы перекрываются.


Рис. 8

 

Конечный оператор цикла не может быть оператором: перехода, цикла, условным оператором, возврата, паузы и останова. Если цикл, по условию задачи, должен быть закончен одним из “запрещенных ” операторов, то в качестве конечного оператора цикла рекомендуется использовать оператор продолжения CONTINUE, разместив его после “запрещенного” оператора.

Пример: вычислить сумму элементов каждого столбца прямоугольной матрицы. Суммы разметить в массиве S.

В программе необходимо оператором DIMENSION зарезервировать место в памяти ЭВМ для массивов А и S, т.е. двумерный массив А(50, 40)и одномерный массив S(40). Тогда программа может иметь следующий вид:

 

PROGRAM SUMSTO

DIMENSION A (50,40), S (40)

PRINT*, ‘Введите количество строк N и столбцов К в массиве А’

READ (5, *) N, K

PRINT*, ‘Введите элементы массива А по строкам ’

READ (5, *) ((A (I, J), J=1,K), I=1,N)

PRINT*, ((A(I,J), J=1,K), I=1,N)

* PRINT 50, ((A(I,J), J=1,K), I=1,N)

* 50 FORMAT(2X, ' ИСХОДНАЯ МАТРИЦА A ' , / (2X,3F6.1))

J K I     N    
DO 15 I = 1, K

SUM = 0.

DO 10 J=1, N

SUM =SUM + A (J, I)

10 CONTINUE

S (I) =SUM

15 CONTINUE

PRINT *, ‘ СУММЫ ЭЛЕМЕНТОВ СТОЛБЦОВ’

PRINT*,‘ S (I)= ’, (S(I), I=1,K)

END

 

В этой программе ввод элементов матрицы осуществляется по строкам, оператором ввода: READ(5, *) ((A (I, J), J=1,K), I=1,N) (неявный цикл). Затем занулением создается ячейка SUM, для суммирования элементов каждого столбца, что выполняется вложенным циклом DO. Сумма элементов каждого столбца заносится в массив S, в результате работы внешнего цикла DO. Когда все столбцы просуммированы и занесены в массив S, он (его содержимое) выводится на печать.

 

Задания к лабораторной работе № 4

Вариант № 1

Составить программу выборки минимального элемента из массива А (М, N). Использовать форматный вывод. ( М, N ≤ 20.)

Вариант № 2

Составить программу выборки максимального элемента из массива А (М, N).

Использовать форматный вывод. ( М, N ≤ 20.)

Вариант № 3

Составить программу вычисления суммы отрицательных элементов из массива А (М, N). Использовать форматный вывод. ( М, N ≤ 20.)

Вариант № 4

Составить программу вычисления суммы положительных элементов из массива А(М,N). Использовать форматный вывод. (М, N ≤ 20.)

Вариант № 5

Составить программу вычисления количества положительных элементов в массиве А (М, N). Результат распечатать. (М, N ≤ 20.)

 

Вариант № 6

Составить программу вычисления количества отрицательных элементов в массиве А (М, N). Использовать форматный вывод. ( М, N ≤ 20.)

 

4.5 Пример выполнения задания лабораторной работы № 4

Тема: Работа с двумерными массивами.

Цель работы: Составление программы для обработки элементов двумерных массивов.

Теория: Краткие сведения из теории ………

 

Пример варианта задания:

Составить блок-схему (рис 9.) и программу выборки минимального элементаизмассива А (М, N), используя форматный вывод. (М, N≤ 20)

 
 


PROGRAM MIN_EL

DIMENSION A (20, 20)

*IrinaI418z

AMIN = A (1, 1)
PRINT*,'ввести N, M '

READ(5,*) N, M

PRINT *,'ввести элементы массива'

READ (5,*) ((A( I,J ), I = 1, N), J=1,M)

AMIN = A (1,1)

DO 2 I = 1, N

DO 2 J = 1, M

IF (А( I, J).GE. AMIN) GOTO 2

AMIN = A ( I, J ) да

2 CONTINUE

PRINT*, 3, AMIN нет

AMIN = A (I,J)
3 FORMAT ('3X, ‘AMIN ', F 12.5)

END

Введите N, M

3 3

Введите элементы массива

-2 5 3 1 0 25 7 11 9

 

Ответ: AMIN -2 Рис. 9

 

 

РАЗДЕЛ V.Лабораторная работа № 5

 

Программные единицы

Все рассмотренные до сих пор программы состояли из одной программной единицы, начинавшейся с оператора PROGRAM. Однако программа на Фортране может состоять из нескольких программных единиц. Такая составная программа всегда содержит главную программную единицу, или главную программу, и одну или несколько подпрограмм.

Главная программа, как следует из названия, является ведущей программной единицей, и обработка всей программы начинается с первого исполняемого оператора главной программы. При записи на диске или на бумаге главную программу обычно располагают в начале всей программы, за главной программой следуют подпрограммы. Порядок следования подпрограмм значения не имеет.

Нередко последовательность команд, выполняющих конкретное вычисление, необходимо повторить в нескольких различных точках программной единицы. Записывать эту последовательность команд несколько раз слишком трудоемко. Существует специальный механизм, позволяющий записать последовательность команд только один раз и выполнить ее в тех точках программы, где это необходимо. Для этого нужная последовательность команд соответствующим образом оформляется, в виде отдельной програм­мной единицы, называемой подпрограммой. Идея подпрограммы оказалась очень плодотворной, стало возможным создание больших библиотек подпрограмм, написанных специалистами, компоновка сложных программ из библиотечных подпрограмм и подпрограмм, написанных программистом. Программист избавлен, таким образом, от необ­ходимости тратить массу времени на написание своих собственных программ, выполняющих стандартные, математические вычисления. Эта идея использована и при построении стандартных функций Фортрана. Например, в операторе Х = - В + SQRT(В*В - 4.0*А*С) находится значение аргумента функции SQRT (т.е. делаются вычисления в скобках). Затем переход ко встроенной функции (т.е. подпрограмме) SQRT, которая выполняет последовательность команд по вычислению квадратного корня. Найденное значение корня возвращается в арифметическое выражение и вычисление значения этого выражения продолжается.

Имеются два основных типа подпрограмм: FUNCTION (подпрограммы – функции) и SUBROUTINE подпрограммы. FUNCTION во многом подобна стандартным функциям языка Фортран, вычисляет единственное значение и возвращает управление в вызывающую программную единицу вместе с вычисленным значением.

SUBROUTINE - подпрограммы позволяют решать более сложные задачи, например, такие как сортировка чисел в массиве, вычислять координаты центра тяжести тел сложной формы, выполнять сложные операции вывода и т.п.

Программная единица, из которой осуществляется вызов подпрограммы, называется вызывающей программной единицей или программным модулем. Часто это главная программа, но вызывающей программной единицей может быть и подпрограмма. В Фортране запрещен вызов подпрограммы из самой себя непосредственно или через другую программную единицу.

5.2. Оператор FUNCTION

Определение подпрограммы - функции всегда начинается с оператора FUNCTION. За ним указывается имя функции, а затем - список аргументов в скобках. Перед ним может быть описатель типа REAL или INTEGER. Таким образом, общая форма оператора определения функции имеет вид: тип FUNCTION имя (список аргументов)

Имя функции дается по общим правилам для имен переменных. Следует избегать употребления в операторе FUNCTION имен стандартных функций. Если выбранное имя функции совпадает с именем стандартной функции, то будет вычисляться значение стандартной функции, за исключением случаев, которые будут рассмотрены позже.

Возвращаемое в вызывающую программную единицу вычисленное значение связано с именем функции, поэтому тип этого значения определяется либо по имени функции в соответствии со стандартным соглашением о типах, либо типом функции, явно указанным в операторе FUNCTION.

Информация, необходимая для вычисления значения функции, передается из вызывающей программной единицы через аргумент функции. Тип аргументов и их количество зависят от назначения функции. В качестве аргументов функции чаще всего используются простые вещественные и целые переменные. Аргументы отделяются друг от друга запятыми. Весь список аргументов заключается в скобки. Скобки обязательно должны быть, даже если аргументов нет. Теперь рассмотрим примеры операторов FUNCTION F(X)Этот оператор определяет функцию с именем F, вычисляющую вещественное значение. Она имеет один вещественный аргумент, обозначенный в определении функции буквой X. Оператор REAL FUNCTION LONG(А, В) определяет функцию с именем LONG, которая вычисляет вещественное значение и имеет два аргумента вещественных, обозначенных буквами А и В. Если бы не был указан тип функции REAL, то функция LONG в соответствии с соглашением о типах вычисляла бы целое значение. При использовании этой функции необходимо в вызывающей программной единице объявить имя - LONG вещественнымпри помощи оператораREAL.

Оператор INTEGER FUNCTION COUNT (I, J, Y) определяет функцию с именем COUNT, которая выдает целое значение и имеет два целых аргумента Iи J и один вещественный аргумент Y.

Оператор FUNCSION NCHEK ( ) определяет функцию с именем NCHEK, которая выдает целое значение и не имеет аргументов, однако скобки в записи оператора опустить нельзя.

 

 









Последнее изменение этой страницы: 2016-04-07; Нарушение авторского права страницы

infopedia.su не принадлежат авторские права, размещенных материалов. Все права принадлежать их авторам. Обратная связь