Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Некоторые вспомогательные формулы ⇐ ПредыдущаяСтр 5 из 5
Пример выполне6ния задачи 1А Условие: записать арифметические выражения в символах алгоритмического языка
; ; ;
Типы алгоритмов Алгоритм – упорядоченная последовательность действий, выполнение которых позволяет преобразовать исходные данные в конечный результат.
Алгоритм оформляется в виде блок – схем. начало (конец) програмы ввод – вывод
логический блокарифметический блок
выводя на принтер блок модификаций обращение к процедуре логическое следование Типы алгоритмов: линейный, разветвляющийся, циклический Алгоритм линейной структуры – выполняет действия в строгой линейной последовательности. Алгоритм разветвляющийся структуры - выполняет действия в одном из предусмотренных направлений Алгоритм циклический структуры– предусматривает выполнение многократно повторяющихся действий.
Пример выполнения задачи 1Б Задание: В соответствии с условием разработать алгоритм линейной структуры и составить программу. Условие: найти площадь грани, площадь полной поверхности и объем куба с длиной ребра - а. Решение: примем обозначения: а → А, Sгр → SGR, Sп→ SP, Vкуб → V Блок – схема Программа
REM алгоритм лин. структуры ‘оператор- комментарий INPUT “Длина ребра куба A”; A ‘ ввод данных
V = A ^ 3
END ‘конец программы Результат выполнения программы:
Длина ребра куба A? 3_ Sгр = 9 Sп = 54 V = 27 Пример выполнения задачи 2А Задание: В соответствии с условием разработать алгоритм разветвленной структуры и составить программу вычисления функции Условие: вычислить значение функции , де Решение: примем обозначения: Y → Y, a → A, x → X, n → N
При решении необходимо предусмотреть два варианта: при равенстве нулю знаменателя в формуле 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 по одной из трех формул в зависимости от условий. Блок – схема + - -
Программа 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. Цикл ''Со счетчиком''
+
Замечание: в алгоритмах № 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. Цикл ''Со счетчиком''
-
+ Замечания: Во всех алгоритмах до начала циклических действий выполняются начальные присваивания (в данном примере – это 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-й вариант Блок – схема
+
+ -
Программа 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
Блок – схема
+ -
+ Программа 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.
Для решения задачи необходимо предварительно найти максимальный элемент массива и затем сформировать новый массив В. Блок – схема
+ -
+ -
Программа 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). Блок – схема
- +
+ - +
Программа 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; Просмотров: 408; Нарушение авторского права страницы