Алгоритмизация Работа с блок-схемами
Чтение блок-схем Данные задания нацелены на чтение блок-схем и определения результата. Определите значение целочисленной переменной х после выполнения фрагмента алгоритма:
1) -112) 113) 444) 55 х:=121 у:=66 х=у х>у х:=х-уу:=у-х да нет данет Примечание: знаком := обозначена операция присваивания
1)82)163)324)12
1)12)453)554)66
1) 362) 453) 564) 50 c b:=0 c:=1 b:=b+1 c:=c + b да нет b = 10
1) 52) 83) 134) 21 s A:=1 b:=0 d:=1 s:=a+d b:=b+1 d:=a a:=s да нет b = 5
да нет усл 1 усл 2 серия 1 серия 2 серия 3 Фрагмент блок-схемы представляет алгоритм, который содержит две команды ветвления. 1) команду ветвления в сокращенной форме, в которую вложена команда ветвления в полной форме 2)две команды ветвления в полной форме, одна из которой вложена в другую 3)две команды ветвления в сокращенной форме, одна из которой вложена в другую 4)команду ветвления в полной форме, в которую вложена команда ветвления в сокращенной форме
Составить блок-схемы Поиск минимального значения из трех чисел A,B,C при помощи двойного сравнения.
+ НАЧАЛО Ввод A,B,C A
Составить блок-схемы Поиск минимального числа из трёх А,В,С. 1.Метод последовательного сравнения.
+ + НАЧАЛО Ввод А,В,С АC A
Составить блок-схему Пример 3. Составить алгоритм определения находится ли точка М с координатами Х,У на окружности радиуса R. Решение. Визуальный алгоритм приведен на сл. рис. Для решения в нем используется математическая модель в виде формулы окружности R 2 = X 2 +Y 2.
+ Начало Kонец Ввод M(X, Y), R НЕТ T:=X 2 +Y 2 T=R 2 ДА
Составить блок-схему Пример 4. Составить алгоритм определения корней уравнения (X 2 +B*X+C=0). Решение. При составления этого алгоритма надо рассмотреть случаи, когда уравнение не имеет корней и когда имеется только один корень. Обозначим корни уравнения через переменные Х1,Х2. D - промежуточная переменная для вычисления дискриминанта. Алгоритм вычисления корней уравнения заданного вида приведен на сл. рис.
+ КОНЕЦ НАЧАЛО Ввод B,C НЕТ КОРНЕЙ Вывод X1,X2 Вы- вод X D:=B 2 - 4*C X1:=(-B+D 0,5 )/2 X1:=-B/2 X2:=(-B-D 0,5 )/2 D
Задания для самостоятельного выполнения Составить визуальные разветвленные алгоритмы для следующих задач. 1.Для двух чисел Х,У определить, являются ли они корнями уравнения А*Р^4+D*P^2+C=0 2.Если среди трех чисел А,В,С имеется хотя бы одно четное вычислить максимальное, иначе – минимальное 3.Ввести положительное А>=1. Найти наибольшее из выражений вида 1\А и SIN(A). 4.Ввести два числа. Меньшее заменить полусуммой, а большее - удвоенным произведением. 5.Ввести три числа А,В,С. Удвоить каждое из них, если А>=В>=С, иначе поменять значения А и В. 6.Определить является ли точка с координатами X,Y точкой пересечения диагоналей квадрата со стороной R,одна вершина которого расположена в начале координат. 7.* Определить значения функции в зависимости от значения аргумента а*х 2, если х > 10 у= 1/х, если –10 х 10 Sin(х), если х < 10
ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ Циклические алгоритмы являются наиболее распространенным видом алгоритмов, в них предусматривается повторное выполнение определенного набора действий при выполнении некоторого условия. Такое повторное выполнение часто называют циклом.
Цикл с предусловием Цикл с предусловием начинается с проверки условия выхода из цикла. Это логическое выражение, например I
Цикл с постусловием Цикл с постусловием функционирует иначе. Сначала выполняется один раз те действия, которые подлежат повторению, затем проверяется логическое выражение, определяющее условие выхода из цикла, например, I>6.Проверка его осуществляется тоже по-другому. Если условие выхода истинно, то цикл с постусловием прекращает свою работу, в противном случае - происходит повторение действий, указанных в цикле. + i>6 i=1 K:=K+1 i:=i+0,1 K
Повторяющиеся действия в цикле называются "телом цикла".
Классическим примером циклического алгоритма служит алгоритм для вычисления степени числа Y=X. Этот алгоритм может быть реализован на основе операции умножения. Табличное представление такого алгоритма, отражающего зависимость У от Х при изменении показателя степени n от 1 до 3, представлено в табл. В этой таблице показаны также рекуррентные соотношения между У и Х, определяющие как на каждом шаге зависит значение У от значения Х и от значения У, вычисленного на предыдущем шаге.
Таблица. Рекуррентные соотношения при вычислении Y=X nYРекуррентные соотношения 1Y[1]=XY=X 2Y[2]=X*X или Y[2]=Y[1]*X Y=X*X или Y=Y*X 3Y[3]=X*X*X или Y[3]=Y[2]*X Y=X*X*X или Y=Y*X
Составление блок-схем Пример 5.Пусть требуется составить алгоритм вычисления суммы ряда S=x+x^2+x^3+…+x^n. Решение. Исходные данные для алгоритма это переменные x и n. На каждом шаге будем вычислять очередной член суммы Y и прибавлять его к предыдущему значению суммы S.Для этого используем реккурентную формулу вычисления степени Х (см. таблицу 3) Y=Y*Х, тогда сумма ряда на каждом шаге итерации будет вычисляться по формуле S=S+Y. Количество итераций K изменяется от 1 до n и равно количеству членов ряда. Начальное значение суммы ряда S равно 0. На рис. 12 представлен циклический алгоритм с предусловием для вычисления заданной суммы ряда.
Алгоритм вычисления суммы ряда S=x+x^2+x^3+…+x^n НАЧАЛО Ввод x, N S:=0 Y:=x K:=1 K
Составление блок-схем Пример 6. Требуется составить алгоритм получения на отрезке [-15,15] множества значений функции Y= SIN(X) в виде таблицы значений (X,Y) при изменении аргумента Х по формуле X[k]=X[k-1]+h, где h=1,5. Решение. Такие задачи относят к задачам табулирования функций. Из условия задачи определяем, что начальное значение отрезка табулирования X= -15, конечное значение - X=15. Процесс получения множества пар Х,Y) является итерационным, значит проектируемый алгоритм будет циклическим. Условие выхода из цикла Х>15. На рис. 13 представлен циклический алгоритм с предусловием вычисления табличного значения функции Y= SIN(X) на отрезке -15
Циклический алгоритм табулирования функции Y =sin (X) X:= -15 x
Задания для самостоятельного выполнения 1.Вычислить число в факториале Y=X! 2.Вычислить сумму ряда, общий член которого задан формулой An=(x*n)/n!. 3.При табулировании функции y=cos(x+a) на отрезке [1,10] c шагом h=1 определить сумму значений y, больших p. 4.Подсчитать количество цифр в целом числе Х. 5.Вычислить сумму значений функции у=x^2 на отрезке [1,5] c шагом 1. 6.* Найти минимальное значение функции Y=Sin(X)*X, на отрезке [C,D] с шагом Реализовать цикл с постусловием. 7. Протабулировать функцию y=sin(x) на отрезке [1,5] с шагом h=0,5. Вывести предпоследнее положительное значение функции.
8. Определить постановку задачи и составить визуальный алгоритм для этой задачи, если табличное представление ее решения изображено ниже: Задания для самостоятельного выполнения Условие N>0 SN >0 да0+5=512 12>0 да5+2=71 1>0 да7+1=80 0>0 нет
9. Составить визуальную и табличную формы алгоритма по его текстовому представлению, а также определить конечное значение S Задания для самостоятельного выполнения А) I=0; S=0; В) I=1; S=0; ПОКА I 1 I=I+3 S=S+1/I S=S+I*I I=I-1 ВЫВОД S ВЫВОД S
10. Составить визуальную и текстовую форму представления алгоритма, заданного в табличной форме. Задания для самостоятельного выполнения I J S = = = =16
11. Определить является ли данный фрагмент алгоритма циклом, если да, то какого вида и какое действие является телом цикла? Задания для самостоятельного выполнения + I =1 I := I +1 K + I=1 I
12. * Протабулировать функцию Y=tg(X), при изменении X на отрезке [A,B] с шагом K и определить количество точек разрыва(M) этой функции. Задания для самостоятельного выполнения
13. Определите местонахождение ошибок в алгоритмическом решении следующей задачи. Найти минимальное значение функции Y=A*X 2 +Sin(X)*X 0,5, для Х изменяющемся на отрезке [C,D] с шагом 0,01. Задания для самостоятельного выполнения
НАЧАЛО C, D X := C M := A*X 2 +SIN(X)*X 0. 5 Y=М X := X Y, X Y D M КОНЕЦ Y := A*X 2 +SIN(X)*X 0. 5 C := Y