Главная Обратная связь Поможем написать вашу работу!

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Организация циклических вычислений



Операторы цикла FOR … NEXT

 

Циклические вычисления могут иметь известное или неизвестное из исходных данных число повторений вычислений. Циклы, в которых число повторений вычислений известно из исходных данных, называются арифметическими, в противном случае итерационными.

В Бейсике для организации арифметических циклических вычислений используется специальные операторы цикла FOR… NEXT. Общий вид операторов цикла

FOR I=a TO b STEP c

операторы тела цикла

NEXT I

 

Здесь I – переменная цикла; а –- начальное значение переменной цикла; b–- конечное значение переменной цикла; с – величина приращения (шаг) переменной цикла при каждом повторении цикла. Если шаг равен единице, запись STEPс – можно опустить. Верхней и нижней границами цикла служат операторы начала FOR и конца цикла NEXT. Операторы тела цикла выполняются многократно до тех пор, пока значение переменной цикла не превысит значение, заданное переменной b.

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

 

Рисунок 8 Схема операторов цикла FOR … NEXT

 

Рисунок 9 Схема алгоритма решения примера 2.4 с помощью операторов цикла

Рассмотрим решение примера 2.4 с помощью оператора цикла.

 

FOR X=1 TO 20 STEP 0.25

Y=X^2+X*SIN(X)

PRINT “X=”;X; “Y=”;Y

NEXT X

END

 

2.8 Программирование алгоритмов циклической структуры
с использованием массивов данных

 

Массив – это совокупность однотипных данных, имеющих одно общее имя и индивидуальные порядковые номера (индексы), изменяющиеся от 1 с шагом 1. Имя массива образуется так же, как имена переменных (буква или буква и цифра). Положение элемента в массиве определяется индексами, записываемыми в круглых скобках после имени массива. Под массивы, так же как и под переменные, должен быть отведен определенный объем памяти. Для этого необходимо сообщить, какие массивы будут использоваться в программе и размер каждого массива. Эта информация задается в операторе описания массивов DIM. В операторе DIMуказывается имя массива (или через запятую имена) и в круглых скобках задаются верхние границы изменения индексов, которые должны быть целыми положительными числами. В Бейсике могут использоваться массивы как числовые, так и символьные. Например, оператор



DIM А(20), В(5,10), С$(14)

описывает два числовых массива: одномерный А из 20 элементов, двумерный В из 5 строк и 10 столбцов и символьный массив С$ из 14 элементов.

Ввод и вывод массивовосуществляется с использованием операторов цикла FOR... NEXT, переменная цикла при этом отслеживает изменения индексов каждого элемента. Ввод-вывод может быть организован как с помощью специально организуемого цикла, так и попутно с основным циклом вычислений. Например, при необходимости ввода и вывода одномерного массива А из 30 элементов (А1 А2,...,А30) фрагмент программы может иметь вид:

DIM A (30)

FOR I=1 TO 30

PRINT "Введите"; I; "-и элемент массива А";

INPUT A(I)

NEXT I

FOR J = l ТО 30

PRINT J; "-й элемент массива А равен";A (J)

NEXT J

 

В программе оператор DIM A(30) резервирует место для одномерного массива из тридцати элементов, которое затем заполняется числовыми значениями в порядке возрастания индексов. Использование первого оператора PRINTв программе позволяет организовать подсказку для пользователя, на устранение ошибок ввода. В подсказке по мере выполнения цикла переменная I в операторе PRINT указывает номер элемента массива, значение которого следует вводить. При выводе указывается значение каждого элемента и его место в массиве.



Пример 2.5 В заданном массивеА1, А2,… А30 найти среднее арифметическое отрицательных элементов массива, а затем вывести на печать элементы массива модуль, которых меньше модуля найденного значения, и найденное среднее арифметическое.

 

DIM A(30)

FOR 1=1 TO 30

INPUT A(I)

NEXT I

S=0: K=0

FOR 1=1 TO 30

IF A(I)<0 THEN S=S+A(I):K=K+1

NEXT I

SR=S/K

FOR 1=1 TO 30

IF ABS(A(I))<ABS(SR) THEN PRINT А(I)

NEXT 1

PRINT "Среднее арифметическое";SR

END

 

 
Рисунок 10 Схема алгоритма решения примера 2.5

Пример 2.6 Задано натуральное число n и массив Х1, Х2,… Хn. Превышает ли наибольший элемент массива число 25?

 
  Рисунок 11 Схема алгоритма решения примера 2.6

PRINT ”Введи n”

INPUT N

DIM X (N)

FOR 1=1 TO N

INPUT X(I)

NEXT I

MAX=X(1)

FOR I=2 TO N

IF X(I)>MAX THEN MAX=X(I)

NEXT 1

IF MAX>25THEN

PRINT "ПРЕВЫШАЕТ"

ELSE

PRINT "НЕ ПРЕВЫШАЕТ"

END

2.9 Алгоритмы и программы с использов
анием итерационных циклов

 

 

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



Пример 2.7 В ёмкости находится V м3 жидкости. После работы в течение 1 часа откачивающего насоса производительностью Р1 м3 /час дополнительно подключился подающий насос производительностью Р2 м2 / час (причём Р1 > Р2). Определить, через сколько полных часов от начала работы 1-го насоса ёмкость опустеет, если кроме того в конце каждого часа порционно расходовалось Р % от содержимого ёмкости.

Математическая формулировка задачи:

V = V− Р1 − содержание ёмкости после 1-го часа работы откачивающего насоса.

− содержимое ёмкости в результате ежечасного порционного расхода. V = V− Р1 + Р2 − содержимое ёмкости после каждого часа работы насосов. Тогда обозначим время через T, схема алгоритма решения задачи будет следующей (рисунок 12):


 
 

 

 


 

нет

да

 

 

Рисунок 12 Схема алгоритма решения к примеру 2.7

 

Проверка на отсутствие жидкости в ёмкости осуществляется сравнением V ≤ 0, так как при сравнении V равно нулю может произойти зацикливание вычислительного процесса.

Для программирования итерационных вычислений использование операторов цикла FOR … NEXT невозможно. В данном случае используются операторы присваивания и условного перехода IF.

 

 

PRINT ‘’ Введи V, P1, P2, P’’

INPUT V, P1, P2, P

V=V-P1

T=1

2 V-V-V*P/1ØØ

V=V-P1+P2

T=T+1

IF V<=0 THEN GOTO 5 ELSE GOTO 2

5 PRINT ‘’Через’’; T; ‘’ часов ёмкость опустеет’’

END


Просмотров 979

Эта страница нарушает авторские права




allrefrs.ru - 2021 год. Все права принадлежат их авторам!