Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИиП_3.doc
Скачиваний:
1
Добавлен:
21.04.2019
Размер:
303.1 Кб
Скачать

3.6.2. Конструкция select case

<имя:> SELECT CASE (тест-выражение)

CASE (СП1) <имя>

<БЛОК1>

<CASE (СП2) <имя>

<БЛОК2>>

............................

<CASE DEFAULT <имя>

<БЛОКn>>

END SELECT <имя>

Пример. Найти число положительных, отрицательных и нулевых элементов целочисленного массива.

program yok2

integer a(15), ap/0/, ae/0/, az/0/, i ! описание и инициализация данных

print *, 'Input a(15)' ! вывод сообщения

read *, (a(i), i=1,15) ! ввод массива:

! -2 10 -3 0 3 14 -7 0 4 12 0 8 1 0 2

! определение числа положительных ap, отрицательных ae и нулевых az

! элементов в массиве а

i=1 ! подготовка цикла

1 continue ! точка возврата на повторение цикла

select case (a(i)) ! использование конструкции SELECT CASE

case (1:) ! определение количества

ap=ap+1 ! положительных чисел

case (:-1) ! определение количества

ae=ae+1 ! отрицательных чисел

case (0) ! определение количества

az=az+1 ! чисел, равных нулю

end select

i=i+1 ! увеличение счетчика цикла

if (i<=15) goto 1 ! проверка условия конца цикла

print *, ap,'(>0)', ae,'(<0)', az,'(=0)' ! вывод результатов:

end program yok2 ! 8(>0) 4(<0) 3(=0)

3.6.3. Операторы DO, EXIT и CYCLE

Оператор цикла с известным числом повторений:

<имя:> DO v = m1 ,m2 ,m3

БЛОК

END DO <имя>

Логический оператор цикла:

<имя:> DO WHILE (ЛВ)

БЛОК

END DO <имя>

Оператор EXIT <имя>

Оператор CYCLE <имя>

Пример использования операторов цикла. Вычислить сумму элементов главной диагонали матрицы аr. Найти значение квадратного корня из числа b заданной точностью . Вычислить сумму элементов одномерного массива а, значения которых больше 5 (вычисления завершаются при обнаружении нулевого элемента).

program yok3

integer :: a(10), summa = 0, i ! описание и

real :: b, eps=0.001, x0, x1 ! инициализация

real ar(5,5), sumar /0.0/ ! переменных

! ввод исходных данных

print *, 'Input real array 5*5' ! вывод сообщения

read *, ar ! ввод двухмерного массива по столбцам

print *, 'Input real x, x0 (<>0)' ! вывод сообщения

read *, b, x0 ! ввод числа b и примерного значения корня из b

print *, 'Input integer array a(10) ' ! вывод сообщения

read *, (a(i), i=1,10) ! ввод элементов одномерного массива

do j=5,1,-1 ! вычисление суммы

sumar= sumar + ar(j,j) ! элементов главной диагонали

end do ! матрицы аr

! вычисления квадратного корня из числа b с заданной точностью

if (x0==0.) then ! проверка: исключение

goto 1 ! деления на 0

else

x1=(x0+b/x0)/2 ! квадратный корень x из числа b

do while(abs(x1-x0).gt.eps) ! вычисляется по формуле

x0=x1 ! x xi=0,5(xi-1 + b/xi-1)

x1=(x0+b/x0)/2 ! пока |xi - xi-1| >

end do

x=x1 ! присвоение значения корня

end if