- •Федеральное агентство по образованию
- •153003 Г. Иваново, ул. Рабфаковская, 34 Введение
- •Работа № 1. Прямые программы
- •Работа № 2. Разветвляющиеся программы
- •Работа № 3. Арифметические циклы с простой переменной
- •Работа № 4. Арифметические циклы с индексной переменной
- •Работа № 5.Итерационные циклы
- •Работа № 7. Работа с двумерным массивом
- •Работа № 8. Функции и подпрограммы
- •Работа № 9. Модули и файлы
- •Работа № 10. Строковые переменные
- •Приложение. Типовые операции в циклических программах
- •Содержание
Работа № 3. Арифметические циклы с простой переменной
Арифметическим называется цикл, в котором число повторений заранее известно или его можно предварительно вычислить. Название цикла связано с тем, что его параметр обычно изменяется по закону арифметической прогрессии. Если при этом параметр цикла X является простой переменной, например аргументом некоторой вычисляемой в цикле функции Y=F(X), то цикл называется арифметическим циклом с простой переменной.
Задание. Разработать блок-схемы и составить программы вычисления нижеследующих функций.
1.
где Х изменяется от XH=5 до ХK=100 с шагом H=1.
Пояснение. Количество повторений в подобных циклах можно определить по формуле
N = ( ХK – ХH)/Н +1
с округлением (в случае дробного результата) до ближайшего целого в меньшую сторону. В нашем примере N = 96.
Один из возможных вариантов блок-схемы арифметического цикла для решения данной задачи представлен на рис. 7.
Блок №3, в котором переменная Х принимает свое начальное значение, называют блоком подготовки цикла. Блоки №4,5 вычисления функции Y и вывода результатов составляют рабочую часть, или тело цикла. Блок №6 является блоком изменения параметра цикла, а блок №7 – блоком проверки окончания цикла.
На многих алгоритмических языках для организации циклических программ применяются специальные операторы цикла, позволяющие упростить написание таких программ. Оператор цикла обычно объединяет в себе функции трех блоков: задания начального значения параметра цикла, его изменения и проверки окончания (блоки №3,6,7). В связи с этим может быть упрощено и начертание блок-схем, как это сделано, например, на рис. 8 для нашего примера. Но для каждого алгоритмического языка такое упрощение может быть сделано по-разному, в зависимости от особенностей оператора цикла. Далее будут использоваться два вида блок-схем циклических программ:
а) универсальная блок-схема рис. 7, приемлемая для любого языка программирования. Отметим, что здесь возможен вариант и с расположением условия выхода из цикла (блок №7) перед телом цикла. В первом случае говорят, что это цикл с постусловием, а во втором – с предусловием;
б) упрощенная блок-схема рис. 8, которая будет использоваться в более сложных циклических программах с той целью, чтобы не загромождать общую схему решения задачи излишним количеством блоков.
В последнем случае указывается только начало и конец цикла, но не указывается способ его организации. По желанию программиста эта блок-схема всегда может быть развернута до нужной в соответствии с особенностями используемого языка программирования.
Переход от одного вида блок-схемы к другому можно легко осуществить, уяснив функции соответствующих блоков из сопоставления рис. 7 и рис. 8.
Стрелка от блока №6 к блоку №3 в упрощенной блок-схеме показана пунктирной линией, так как функции возврата на повторение при использовании оператора цикла реализуются в языках программирования автоматически без явной записи оператора перехода.
2.
где Х изменяется от ХН = 0 до XK = 10 с шагом Н = 0,5.
Из отрицательных значений функции Y сформировать массив.
Пояснение. Блок-схема решения задачи приведена на риc. 9, где идентификатором YО обозначен массив формируемых результатов, а идентификатором j – текущий индекс элементов этого массива.
В соответствии с правилами реализации типовых операций (см. приложение) до начала цикла, пока не получено ни одного результата Y, значение индекса j равно нулю (блок №3). В процессе расчетов в теле цикла, по мере нахождения очередного отрицательного значения Y (блок №7), происходит запоминание его в массив Y0 (блок №8), которое заключается в увеличении значения индекса j и присваивании элементу массива Y0j очередного значения Y. После окончания цикла величина j будет представлять количество элементов массива Y0, которым были присвоены отрицательные значения функции Y.
3.
где X изменяется от ХH до ХK с шагом Н.
Вычислить количество K нулевых, сумму S положительных и произведение P отрицательных значений функции Y. Вывод S и P произвести, если они вычислялись в цикле хотя бы один раз.
Пояснение. Блок-схема решения задачи приведена на рис. 10. В соответствии с правилами реализации типовых операций (см. приложение) до начала цикла задаются начальные значения К,S,Р, а непосредственно вычисление количества, суммы и произведения осуществляется в теле цикла в зависимости от значения Y. В качестве признаков необходимости вывода S и P использованы переменные KS и KP, изменяющие свои значения с нуля на единицу.
4.
где Х изменяется от ХH до ХK с шагом Н, найти и вывести максимальное значение функции MAX и ее аргумент ХМ.
Пояснение. Блок-схема решения задачи приведена на рис. 11. В соответствии с правилами реализации типовых операций (см. приложение) поиск максимального значения функции осуществляется в цикле путем поочередного сравнения каждого нового значения Y с наибольшим из всех предыдущих: если Y больше МАХ (блок №6), то значение МАХ принимается равным Y и запоминается значениеаргумента ХМ=Х (блок №7). В качестве первого МАХ до начала цикла принимается очень малое число (блок №3), так чтобы при первом же прохождении цикла условиеблока №6 быловыполнено и МАХ получил значение первого результата Y.
5.
где Х изменяется от 0 до 100 с шагом H, причем
Найти минимальный результат и его порядковый номер.
6.
где Х изменяется от -4 до 5 с шагом 0,2. Сформировать массив всех результатов. Найти произведения положительных и отрицательных значений функции Y.
7.
где t изменяется от 0 до 0,1 с шагом 0,002.
Значения функции U, большие величины С, запомнить, меньшие С просуммировать и перемножить. Найти количество значений функции U, равных C.
8.
где Х изменяется от Хнач до Xкон с шагом H = (Хнач - Xкон)/50.
Все результаты запоминать в массив, каждый третий результат вывести на экран. Найти суммы положительных и отрицательных результатов, а на экран вывести только сумму с наибольшим числом слагаемых.
9.
где
Все результаты запоминать в массив. Найти максимальное значение функции U и его порядковый номер, минимальное значение U и соответствующее ему значение аргумента.
Контрольное задание № 3. Составить циклическую программу вычисления функций Fm=F(X), где m=110, если аргумент Х изменяется от ХН до ХК с шагом Н. Вариант задания берется из табл. 3а в соответствии с номером, указанным преподавателем. Вычисляемая функция Fm вместе с вспомогательными функциями приведена в табл. 3б. Обозначения в графе “Задание на выполнение” табл. 3а следует расшифровать в соответствии с нижеследующими списками “Обозначения искомых переменных” и “Обозначения формируемых массивов”.
Таблица 3а
№
|
Fm |
XH |
XK |
H |
U1 |
U2 |
W1 |
W2 |
Задание на выполнение |
1 |
F1 |
-2,5 |
7,6 |
0,7 |
9,15 |
|
46 |
|
S0,S1,P3,K3,R2 |
2 |
F2 |
-3,1 |
3,1 |
0,4 |
1,35 |
-0,5 |
|
1,0 |
K0,S1,P1,S2,R5 |
3 |
F3 |
0,8 |
8,95 |
0,6 |
-10 |
63,5 |
-25 |
|
P0,S2,P1,K1,R2 |
4 |
F4 |
-0,2 |
2,85 |
0,3 |
-1,2 |
0,4 |
|
|
K0,S3,P2,P3,R0 |
5 |
F5 |
0,85 |
11,3 |
0,8 |
0 |
-0,2 |
|
0,3 |
S0,S3,P4,K4,R5 |
6 |
F6 |
-0,7 |
2,35 |
0,2 |
0,12 |
-0,2 |
|
|
P0,S3,K2,K3,R4 |
7 |
F7 |
-1,2 |
2,23 |
0,2 |
0,02 |
0,01 |
|
|
S0,P3,K2,K3,R3 |
8 |
F8 |
0,1 |
9,15 |
0,8 |
2,05 |
-0,7 |
|
1,2 |
P0,S2,S3,K3,R5 |
9 |
F9 |
-0,5 |
5,6 |
0,6 |
2,75 |
-1,5 |
|
4 |
S0,P2,P3,K3,R6 |
10 |
F10 |
4 |
7 |
0,2 |
0,01 |
0,02 |
-0.2 |
|
K0,S4,S1,P1,R1 |
11 |
F1 |
-1,3 |
5,6 |
0,5 |
|
-31 |
15 |
|
P0,S4,P4,K2,R2 |
12 |
F2 |
1 |
8,0 |
0,5 |
-2,5 |
0,75 |
|
0,5 |
P0,S1,K1,K4,R6 |
13 |
F3 |
-0,9 |
2,85 |
0,3 |
3,6 |
-1,2 |
|
|
S0,S1,P2,K2,R3 |
14 |
F4 |
-4,6 |
-0,8 |
0,4 |
1,05 |
0 |
-0,3 |
|
К0,S1,P4,К1,R1 |
15 |
F5 |
0,1 |
6,28 |
0,5 |
-0,1 |
0,02 |
|
|
S0,P1,K2,K3,R4 |
16 |
F6 |
2,5 |
10,3 |
0,8 |
0,9 |
|
|
0,5 |
P0,S3,K3,K1,R6 |
17 |
F7 |
-35,2 |
33,5 |
5,1 |
0,8 |
0,5 |
-0,3 |
|
К0,S2,Р2,К1,R1 |
18 |
F8 |
-9,1 |
0 |
0,7 |
|
1,5 |
|
|
S0,S2,K2,K4,R3 |
19 |
F9 |
1,5 I |
12,7 |
1,1 |
|
-1,5 |
|
2 |
S0,P0,P2,K4,R5 |
20 |
F10 |
1 |
5 |
0,3 |
|
0,3 |
|
1 |
S0,P4,S2,K2,R6 |
21 |
F1 |
-0,4 |
0,45 |
0,1 |
9,62 |
-8,3 |
|
|
P0,S3,P3,K2,R4 |
22 |
F2 |
-10 |
0 |
0,7 |
3,25 |
|
-2,0 |
|
K0,S1,P3,K1,R, |
23 |
F3 |
-5 |
5 |
0,8 |
1,75 |
-0,8 |
4,2 |
|
S0,S4,P3,K3,R1 |
24 |
F4 |
0,05 |
11,0 |
0,9 |
|
3,14 |
|
|
P0,S4,P4,K2,R4 |
25 |
F5 |
0,05 |
12,3 |
1,1 |
|
-0,3 |
|
|
S0,K2.P4,K4,R3 |
26 |
F6 |
2,15 |
15,0 |
1,1 |
-0,4 |
0,32 |
|
0,5 |
K0,S3,P3,K4,R6 |
27 |
F7 |
-3,3 |
6,66 |
0,6 |
-0,01 |
0,15 |
|
0,2 |
S0,Р2,К2,К3,R5 |
28 |
F8 |
-1 |
0,37 |
0,1 |
-1,5 |
0,5 |
-0,2 |
|
P0,S3,S4,K4,R1 |
29 |
F9 |
-5 |
0 |
0,4 |
0 |
-1,5 |
-2,3 |
|
K0,P3,P2,S2,R2 |
30 |
F10 |
0,75 |
9,54 |
0,7 |
|
0,3 |
-1 |
|
P0,P2,K2.K4,R1 |
Таблица 3б
Вычисляемая функция Fm |
Вспомогательная функция |
Обозначения искомых переменных:
Кn , Sn , Рn , Аt , Gt – соответственно количество, сумма, произведение, среднее арифметическое, среднее геометрическое вычисляемых значений Fm , где индексы n и t указывают, для каких конкретных значений Fm производятся расчеты перечисленных переменных:
n = 0 – для всех результатов Fm;
1 – для результатов Fm, меньших U1 ;
2 – для результатов Fm, меньших U2 ;
3 – для результатов Fm, больших U1 ;
4 – для результатов Fm, не меньших U2 .
t = 0 – для всех результатов Fm;
1 – для результатов Fm, меньших V1 ;
2 – для результатов Fm, меньших V2 ;
3 – для результатов Fm, больших V1 ;
4 – для результатов Fm, не меньших V2 .
MIN – минимальный результат,
МАХ – максимальный результат,
МIN1 – минимальный по абсолютной величине результат,
MAX1 – максимальный по абсолютной величине результат.
Обозначения формируемых массивов:
R0 – массив всех результатов Fm;
R1 – массив результатов Fm, меньших W1;
R2 – массив результатов Fm, не меньших W1;
RЗ – массив отрицательных результатов Fm;
R4 – массив положительных результатов Fm;
R5 – массив модулей результатов Fm, которые по абсолютной величине
больше W2;
R6 – массив модулей результатов F, которые по абсолютной величине меньше W2.
Рекомендации. Для контроля правильности получаемых результатов необходимо предусмотреть в цикле вывод таблицы расчетов функции Fm для всех аргументов в виде «аргумент X – функция Fm», по результатам которой следует производить анализ всех вычисленных значений из списка «Задание на выполнение»