Главная Обратная связь

Дисциплины:






Пример выполнения задачи 4



Задание: В соответствии с условием разработать алгоритм комбинированной структуры и составить программу

Условие:Вычислить значение функции

,0,5 < с < 2,5

y = , с ≤ 0,5 или с ≥ 2,5,

 

для с = -1,5 ; -0,5 ; -0,1 ; 0 ; 0,5 ; 1,75 ; 1,8 ; 2,5 ; 3,4 ; 5,7.

Тут . Пренебречь членами ряда, меньшими ε = 10 - 4

Решение: обозначим z → Z, zn → ZN, i →I, n → N, ε → EPS как простые переменные, c → C(I), y → Y(I) как одномерные массивы, длина каждого из которых составляет 10 элементов (по количеству заданных значений с).

Комбинированный алгоритм данной задачи состоит из фрагментов разветвляющегося алгоритма и двух циклических: простого (с заранее известным числом повторений) и итерационного (для вычисления суммы Z), прекращение которого происходит при достижении заданной точности вычислений zn < ε = 10-4.

 

Реализация итерационного цикла возможна только с помощью циклических алгоритмов типа ''Пока'' или ''До''. Для простого цикла можно использовать цикл ''Со счетчиком''.

 

Первая часть алгоритма осуществляет вычисление переменной Z (итерационный цикл) значение которой используется во второй части (простой цикл вычисления функции Y(I) с разветвлением – выбором соответствующей формулы, в зависимости от введенного значения переменной C(I)).

 

 

1-й вариант

Блок – схема

 
 
n=1, z =0


 

 
 


+

 

       
   
 


 
 

 


+ -

       
 
Y(i) 1-я формула
   
Y(i) 2-я формула
 

 


 

 
 

 


Программа

REM алгоритм комбинированной структуры ‘оператор- комментарий

DIM EPS, N, Z, ZN, I, C(1 TO 10), Y(1 TO 10) ‘ описание переменных

INPUT “ EPS ”; EPS ‘ввод данных

DATA –1.5,-.5,-.1,0,.5,1.75,1.8,2.5,3.4,5.7 ‘строка данных

N = 1: Z = 0 ‘оператор присваивания

DO ‘оператор начала цикла

ZN = 0.1*N / (N+0.6)^3: Z=Z+ZN ‘операторы присваивания N= N + 1

LOOP WHILE ABS(ZN) > EPS ‘завершение цикла

PRINT “Z=”; Z ‘вывод

FOR I = 1 TO 10 ‘оператор начала цикла

READ C(I) ‘ввод данных

IF C(I)> .5 AND C(I)< 2.5 THEN ‘оператор условного перехода

Y(I) = (C(I) * Z - 3) ^ 2 ‘оператор присваивания

ELSE Y(I) = .5 * Z ^ 3 - 5 * C(I) ‘оператор присваивания

END IF ‘завершение оператора условного перехода

PRINT “Y”; I; “=”;Y(I) ‘вывод



NEXT I ‘завершение цикла

END ‘конец программы

Й вариант (с использованием подпрограммы пользователя)

Замечания

Фрагмент вычисления Z выделен в отдельный программный модуль – подпрограмму пользователя (SUB) с именем SUMZ.

Место подпрограммы SUB - после текста основного модуля.

Ввод программы, в тексте которой находится обращение к подпрограмме пользователя, выполняется в 2 этапа:

1. После ввода последней строки основной программы необходимо ввести часть заголовка процедуры, а именно SUB <имя> и нажать ENTER.

На экране появятся 3 строки

SUB имя

-

END SUB

2. Ввод текста процедуры.

После ввода последнего оператора подпрограммы необходимо нажать клавишу F2.

На экране в поле диалога появляются имена головного модуля (например, UNTITLED) и функции.

С помощью курсорных клавиш и ENTERможно перейти в поле редактирования головного модуля или подпрограммы.

 

Запуск процедуры SUB осуществляется из головной программы оператором CALL

CALL имя подпрограммы (факт. параметр[,ф.п....])

 

Обмен данными между головным модулем и подпрограммой, осуществляется 2 способами:

 

1. Использование глобального объявления типов данных с помощью оператора DIM SHARED (данные, которые объявлены глобальными, доступны как в основной программе, так и в процедуре)

2. Использование механизма формально-фактических параметров (здесь подпрограмма использует формальные параметры, значения которых определяются с помощью фактических параметров при обращении к подпрограмме).

Между фактическими и формальными параметрами существует соответствие по типу, количеству и порядку следования.

Оба способа обмена могут быть использованы в одной процедуре.

 

После выполнения подпрограммы SUB управление передается оператору, следующему за оператором – вызовом подпрограммы CALL

 

Блок – схема

               
   
 
 
   
 
     
n=1, z =0
 


                               
   
 
   
     
 
       
Z = Z + Zn
 
 
 
 
   
n = n + 1
 
 
   



+ -

Y(i) 2-а формула

+

 
 


       
   
 
 


Программа

REM алгоритм комб. структуры с подпрограммой ‘оператор- комментарий

REM основная программа

DIM SHАRED I, EPS, N, Z, ZN ‘описание простых переменных

DIM C(1 TO 10),Y(1 TO 10) ‘описание массивов

INPUT “ EPS ”; EPS ‘ввод данных

DATA –1.5,-.5,-.1,0,.5,1.75,1.8,2.5,3.4,5.7 ‘строка данных

CALL SUMZ(EPS,Z) ‘ обращение к подпрограмме вычисления Z

FOR I = 1 TO 10 ‘оператор начала цикла

READ C(I) ‘ввод данных

IF C(I)> .5 AND C(I)< 2.5 THEN ‘оператор условного перехода

Y(I) = (C(I) * Z - 3) ^ 2 ‘оператор присваивания

ELSE Y(I) = .5 * Z ^ 3 - 5 * C(I) ‘оператор присваивания

END IF ‘завершение оператора условного перехода

PRINT “C”; I; “=”;C(I) ‘вывод

NEXT I ‘завершение цикла

END ‘конец основной программы

 

SUB SUMZ(EPS,Z) ‘заголовок (начало) подпрограммы SUMZ

N = 1: Z = 0 ‘операторы присваивания

DO ‘оператор начала цикла

ZN = .1*N / (N+0.6)^3: Z=Z+ZN : N= N + 1 ‘операторы присваивания

LOOP WHILE ABS(ZN) > EPS ‘завершение цикла

PRINT “Z=”; Z ‘вывод

END SUB ‘конец подпрограммы SUMZ

Результат выполнения программы:

EPS ? .001 _

Z = 5.597609E-02

Y2 = 2.500088

Y3 = 5.000088

Y4 = 8.769555E-05

Y5 = -2.499912

Y6 = 8.421847

Y7 = 8.40561

Y8 = -12.49991

Y9 = -16.99991

Y10 = -28.49991





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...