Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Некоторые вспомогательные формулы



Формула Примечание
Факториал
Среднее арифметическое элементов х1, х2, …, хn,
Среднее геометрическое элементов х1, х2, …, хn (хi > 0),

 

 

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

Условие: записать арифметические выражения в символах алгоритмического языка

 

;

;

;

 

Типы алгоритмов

Алгоритм – упорядоченная последовательность действий, выполнение которых позволяет преобразовать исходные данные в конечный результат.

Конечный результат
Алгоритм
Исх. данные  

Алгоритм оформляется в виде блок – схем.

       
   
 


начало (конец) програмы ввод – вывод

логический блокарифметический блок

выводя на принтер блок модификаций

 
 


обращение к процедуре логическое следование

Типы алгоритмов: линейный, разветвляющийся, циклический

Алгоритм линейной структуры – выполняет действия в строгой линейной последовательности.

Алгоритм разветвляющийся структуры - выполняет действия в одном из предусмотренных направлений

Алгоритм циклический структуры– предусматривает выполнение многократно повторяющихся действий.

 

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

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

Условие: найти площадь грани, площадь полной поверхности и объем куба с длиной ребра - а.

Решение: примем обозначения: а → А, Sгр → SGR,

Sп→ SP, Vкуб → V

Блок – схема Программа

 
 

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

INPUT “Длина ребра куба A”; A ‘ ввод данных

Sгр
SGR = A ^ 2

Sпов
SP = SGR * 6 ‘операторы присваивания

V = A ^ 3

V
PRINT “Sгр =”; SGR; “Sп =”; SP; “V =”; V ‘ вывод

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

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

 

Длина ребра куба A? 3_

Sгр = 9 Sп = 54 V = 27

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

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

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

Решение: примем обозначения: Y → Y, a → A, x → X, n → N

 

При решении необходимо предусмотреть два варианта: при равенстве нулю знаменателя в формуле Y вычисление не происходит и выдается текстовое сообщение, в противном случае вычисляется значение функции Y и печатается результат.

Блок – схема

       
   
 
 


 

 


+ -

Y

           
   
 
 
 
   



Программа

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

INPUT “ A, N”; A, N ‘ввод данных

X = SIN (N+1) / (2+N) ‘операторы присваивания

IF X < > 0 THEN ‘оператор условного перехода

Y = (A+TAN(A ^ 2+1)) / X ^ 2 ‘операторы присваивания

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

ELSE

PRINT “Функция Y не определена” ‘вывод

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

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

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

1-й вариант

A, N? 2, 3_

Y = -60.25818266

2-й вариант

A, N? 2, -1_

Функция Y не определена

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

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

Условие: , если 1 < x < 2

y = , если x ≥ 2

, если x ≤ 1

Решение: примем обозначения: Y → Y, x → X, a → A, b → B

При решении необходимо предусмотреть три возможных варианта вычисления функции Y по одной из трех формул в зависимости от условий.

Блок – схема

 
 


+ -

-

Y 1-я формула
+

Y 3-я формула
Y 2-я формула

 

       
   
 
 


Программа

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

INPUT “ A, B, X”; A, B, X ‘ввод данных

IF X > 1 AND X < 2 THEN ‘оператор условного перехода

Y = (A+ X^2) ^ (1 / 3) ‘оператор присваивания

ELSE IF X > = 2 THEN ‘оператор условного перехода

Y = LOG (0.5 + X) ‘оператор присваивания

ELSE

Y = SIN (ABS(X)) + B ‘операторы присваивания

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

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

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

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

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

1-й вариант A, B, X? 2, 3, 1.5 _

Y = 1.61977

2-й вариант A, B, X? 2, 3, 4 _

Y = 1.504077

3-й вариант A, B, X? 2, 3, -1 _

Y = 3.017452

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

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

Условие: , де ,

Решение: примем обозначения yk → yk, xk → xk, Δ → DL, k → К

В основе решения лежит простой цикл, при реализации которого заранее известно число циклических действий (повторений). Решение можно осуществить с помощью операторов WHILE – WEND, DO – LOOP, FOR – NEXT.

Блок – схемы

1. Цикл ''Пока'' 2. Цикл '' До'' 3. Цикл ''Со счетчиком''

k=2

               
 
   
 
   
xk
   
 
 


xk
yk
yk
+

yk

k=k+2

 
 


k=k+2
-

+

 

Замечание:

в алгоритмах № 1 и 2 необходимо до начала циклических действий выполнить начальные присваивания – действия, обеспечивающие выполнение первого шага цикла (в данном примере – это начальное значение параметра цикла k = 2).

Программы

REM алгоритм циклической структуры ''Пока'' ‘оператор- комментарий

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

K= 2 ‘оператор присваивания

WHILE K < = 10 ‘оператор начала цикла

XK =0.2+DL * K: YK = SIN(ABS(1- XK))^3 ‘оператор присваивания

PRINT “Y''; K; ” =”; YK ‘вывод

K= K+2 ‘оператор присваивания

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

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

 

REM алгоритм циклической структуры '' До'' ‘оператор- комментарий

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

K= 2 ‘оператор присваивания

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

XK =0.2+DL * K: YK = SIN(ABS(1- XK))^3 ‘оператор присваивания

PRINT “Y''; K; ” =”; YK ‘вывод

K= K+2 ‘оператор присваивания

LOOP UNTIL K > 10 ‘завершение цикла

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

 

REM алгоритм цикл. структуры ''Со счетчиком'' ‘оператор- комментарий

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

FOR K = 2 TO 10 STEP 2 ‘оператор начала цикла

XK =0.2+DL * K: YK = SIN(ABS(1- XK))^3 ‘оператор присваивания

PRINT “Y''; K; ” =”; YK ‘вывод

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

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

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

DL? 0.3 _

Y2 = 7.841378E-03

Y4 = 5.905402E-03

Y6 =.5958232

Y8 =.9987214

Y10 =.5284869

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

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

Условие: , де ,

Решение: обозначимs → S, xi → XI, x0 → X0, h → H, i → I

Блок – схемы

1. Цикл ''Пока'' 2. Цикл '' До'' 3. Цикл ''Со счетчиком''

           
 
     
 

           
 
i =1, S=0
   
i =1, S=0
     
S=0
 
 


-

xi

xi
xi
+

Si = cos xi3
-

Si = cos xi3

             
   
S = S + Si
     
 
S = S + Si
 
   
i = i +1
 
 

 

 


i = i +1
_

+

             
   
     
 
 
   
 
 


Замечания:

Во всех алгоритмах до начала циклических действий выполняются начальные присваивания (в данном примере – это S = 0 – начальное значение суммы и i = 1 – начальное значение параметра цикла в алгоритмах № 1 и 2).

Вывод результата вычисления суммы осуществляется после окончания циклических действий.

Программы

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

INPUT “ H, X0 ”; H, X0 ‘ввод данных

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

DO UNTIL I > 11 ‘оператор начала цикла

XI = X0+H * I: SI = COS (XI ^ 3) ‘операторы присваивания

S = S + SI: I = I + 1

LOOP ‘завершение цикла PRINT “S =”; S ‘вывод

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

 

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

INPUT “ H, X0 ”; H, X0 ‘ввод данных

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

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

XI = X0+H * I: SI = COS (XI ^ 3) ‘операторы присваивания

S = S + SI: I = I + 1

LOOP WHILE I < = 11 ‘завершение цикла

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

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

 

REM алг. цикл. структуры ''Со счетчиком''оператор- комментарий

INPUT “ H, X0 ”; H, X0 ‘ввод данных

S = 0 ‘оператор присваивания

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

XI = X0+H * I: SI = COS (XI ^ 3) ‘операторы присваивания

S = S + SI

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

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

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

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

H, X0? 1.2, 0.4 _

S= -4.155788

Пример выполнения задачи 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 ‘конец программы

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

Замечания

Фрагмент вычисления 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

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

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

Условие: Задан одномерный массив, состоящий из mэлементов ai.

Получить новый массив Виз исходного массива А заменой элементов с четными порядковыми номерами числом π , остальные элементы массива В получить делением соответствующих элементов исходного массива А на максимальный элемент этого массива.

Решение: обозначим ai → A(I), bi → В(I), m → M, i → I,

π → PI, amax → MAX.

 

Для решения задачи необходимо предварительно найти максимальный элемент массива и затем сформировать новый массив В.

Блок – схема

           
 
 
   
 
   


+ -

 
 
MAX=A(i)

 


       
   
 
 

+ -

       
   
 
B(i) = π
 

 


 

 

Программа

REM одномерный массив ‘оператор- комментарий DIM M, PI, I, MAX ‘описание простых переменных

INPUT “ M, PI ”; M, PI ‘ввод данных

DIM A(1 TO M), B(1 TO M) ‘описание массивов

DATA –1.1, -3.5, 1.8, 0,.75, 3.25, 0, 2.5, 5.25 ‘строка данных

FOR I = 1 TO M ‘оператор начала цикла READ A(I) ‘ввод данных

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

MAX=A(1) ‘оператор присваивания

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

IF MAX < A(I) THEN ‘оператор условного перехода

MAX = A(I) ‘оператор присваивания

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

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

PRINT “MAX”; MAX ‘вывод

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

IF (-1) ^ I > 0 THEN ‘оператор условного перехода

B(I) = PI ‘оператор присваивания

ELSE B(I) = A(I) / MAX ‘оператор присваивания

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

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

NEXT I ‘завершение цикла END ‘конец программы

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

M, PI? 9, 3.14 _ Для расчетов был использован одномерный массив

MAX = 5.25 А = –1.1, -3.5, 1.8, 0,.75, 3.25, 0, 2.5, 5, 25

B1 = -.2095238 В результате получено следующее:

B2 = 3.14 максимальный элемент MAX = 5, 25

B3 =.3428571 новый массив В

B4 = 3.14 В = –0.21, 3.14, 0.34, 3.14, 0.14, 3.14, 0, 3.14, 1

B5 =.1428571

B6 = 3.14

B7 = 0

B8 = 3.14

B9 = 1

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

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

Условие: Задан двумерный массив, состоящий из m строк и nстолбцов элементов: aij.

Определить в каждом столбце количество kjэлементов отличных от 0 с нечетными номерами строк.

Получить новый массив Сиз исходного массива А заменой нулевых элементов последним элементом каждой строки.

Решение: обозначим aij → A(I, J), cij → C(I, J), m → M, n → N,

i → I, j → J, kj → K(J).

Блок – схема

 
 


           
 
 
   
 
   



- +

 
 

K(J)=K(J)+1

 
 


+

- +

C(i, J)=A(I, J)  
C(i, J)=A(i, N)  

Программа

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

DIM M, N, I, J ‘описание простых переменных

INPUT “ M, N ”; M, N ‘ввод данных

DIM K(1 TO N) ‘ описание одномерного и двумерных массивов

DIM A(1 TO M, 1 TO N), C(1 TO M, 1 TO N)

DATA 3, 6, 0, 2, 9, 5, 0, 4, 0, 7, 3, 2, 3, 8, 0, 5 ‘ строка данных

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

FOR J = 1 TO N ‘оператор начала цикла по j

READ A(I, J) ‘ввод данных

NEXT J ‘завершение цикла по j

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

FOR J = 1 TO N STEP 2 ‘оператор начала цикла по j

K(J) = 0 ‘оператор присваивания

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

IF A(I, J) < > 0 THEN ‘оператор условного перехода

K(I) = K(I) + 1 ‘оператор присваивания

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

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

PRINT “K”; J; ”=”; K(J) ‘вывод

NEXT J ‘завершение цикла по j

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

FOR J = 1 TO N ‘оператор начала цикла по j

IF A(I, J) = 0 THEN ‘оператор условного перехода

C(I, J) = A(I, N) ‘оператор присваивания

ELSE C(I, J) = A(I, J) ‘оператор присваивания

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

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

NEXT J ‘завершение цикла по j

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

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

 

Для расчетов был использован следующий двумерный массив

 

 

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

 

M, N? 4, 4 _ В результате выполнения программы

K1 = 1 K2 = 2 K3 = 1 K2 = 2 получено:

C(1, 1) = 3

C(1, 2) = 6 одномерный массив К = 1; 2; 1; 2 и

C(1, 3) = 2

C(1, 4) = 2 двумерный массив С

C(2, 1) = 9

C(2, 2) = 5

C(2, 3) = 4

C(2, 4) = 4

C(3, 1) = 2

C(3, 2) = 7

C(3, 3) = 3

C(3, 4) = 2

C(4, 1) = 3

C(4, 2) = 8

C(4, 3) = 5

C(4, 4) = 5

ЛІТЕРАТУ


Поделиться:



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


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.35 с.)
Главная | Случайная страница | Обратная связь