Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмика в теории и практике

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
475 Кб
Скачать

2. Введите с клавиатуры переменную А. Если 0<А<100, нарисуйте окружность радиусом равным А и центром с координатами Х=150, У=150. Иначе выведите на экран значение переменной А.

Cls:screen 9

Input ''введите значение переменной А'', А

If A>0 and A<100 then circle(150,150), A else print ''A='';A

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

20 ïðè X 20

Yx ïðè 20 X 30

30 ïðè X 30

Cls

Input ''введите значение аргументаX '';x

If x<=–20 then y=20

If x>–20 and x<=30 then y=sqr(x)

If x>30 then y=30

Print ''значение функции ='';y

31

3. Операторы условного перехода

При решении некоторых задач иногда не требуется проверки условия, а надо перейти на какую-либо строку. Тогда около строки устанавливается числовая метка N. И по оператору GOTO N программа переходит к этой строке и продолжает работать с этого места. Такие операторы часто применяются при многоразовом возвращении к началу программы после выполнения ряда команд, для ожидания нового задания. Работа безусловного перехода заключается в том, что переход на указанную строку не зависит от условий и выполняется всегда, как только будет встречаться данный оператор.

На следующем примере можно показать работу условного и безусловного перехода:

5 INPUT A,B

A> B THEN PRINT A ELSE PRINT B GOTO 5

Задачу ¹2 из предыдущих примеров можно переделать с использованием оператора безусловного перехода:

Cls

Input ''введите значение переменной А'', А

If A>0 and A<100 then circle(150,150), A :GOTO 10 print ''A='';

10 end

В этом варианте после вычерчивания окружности происходит переход на конец программы, который обозначен оператором end и меткой 10.

Оператор условного перехода может обрабатывать одновременно несколько условий. Тогда его вид примет следующую форму:

IF условие THEN блок операторов 1

ELSEIF опер (или метка перехода) ELSE условие

блок операторов 2

.........

ELSE

блок операторов n

END IF

32

Примеры решения задач по теме

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

X 2 ïðè X 20

YX ïðè 20 X 0

X ïðè X 0

Решение:

Cls

Input ''введите значение аргумента X '';x If x<=-20 then y=x^2

If x>-20 and x<=0 then y=abs(x) If x>0 then y=sqr(x)

Print ''значение функции ='';y

Y x2

x

2. При заданном с клавиатуры значении x, вычислите по формуле y и определите принадлежит ли точка А(x;y) заданной на рисунке области. Выдайте на экран значения x и y, а также сообщение о принадлежности точки данной области.

33

3. Операторы условного перехода

Y x sin x

Решение:

Cls

Input ''введите значение координаты X '';x Y=-sqr(x-sin(x))

If x<0 and x>-2 and y<0 and y>-2 then Print ''принадлежит''else Print ''не принадлежит''

3. Введите с клавиатуры переменные c и d. Если 0<c<d, то нарисуйте квадрат со стороной равной с, иначе выведите на экран сумму значений переменных c и d.

Решение:

Cls: screen 9

Input ''введите значения переменных с и d'';c,d If c>0 and c<d then 10 else 20

10 draw''U10 R10 D10 L10'':GOTO 30

20 s=c+d: Print''сумма c и d='';S

30 end

4. Найдите и выведите максимальное из двух переменных введенных с клавиатуры.

Решение:

Cls

Input ''введите значение переменных a и b''; a,b

If a>b then print ''переменная A>B'' else print ''переменная B>A''

5. Напишите программу, которая по введенным с клавиатуры числам e, f, g, h будет вычислять значения коэффициентов a, b и c

34

квадратного уравнения по предлагаемым формулам, решать это квадратное уравнение и выдавать результаты его решения.

 

3

 

 

3

 

 

33g

 

 

a

e

 

g b sin e cos2 h c

 

 

 

f

ef 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дискриминант D b 2 4ac

корни уравнения x

1,2

b D

 

 

 

 

 

 

 

 

 

 

2a

 

 

 

 

 

 

 

 

 

 

 

Решение:

Cls

Input ''введите значение переменных e,f,g,h''; e,f,g,h A=sqr((abs(e-3/f))^3+g)

B=sin(e)+(cos(h))^2 C=(33*g)/(e*f-3) D=b^2-4*a*c

If D<0 then print ''корней нет''

If D=0 then x1=(-b+sqr(D))/(2*a):Print ''x1='';x1

If D>0 then x1=(-b+sqr(D))/(2*a): õ2 =(-b-sqr(D))/(2*a): Print ''x1=";x1; ''x2=''; x2

End

6. Составьте программу, которая определяет количество дней в году, номер которого вводится с клавиатуры.

Решения:

Cls:Input ''введите номер года'';N

If (N mîd 4)=0 then print ''êîë-âî äíåé â ãîäó=366"ålse print ''êîë-âî äíåé â ãîäó =365"

End

7. Составьте блок-схему и программу для решения следующей задачи:

Введите с клавиатуры три числа. Проверьте, если числа не равны, то заменить числа их квадратами, вывести результаты. Если все числа равны нулю, то сделать их соответственно равными 5, 20, 15, вывести результаты. Иначе найти и выдать сумму этих чи- сел.

Решение

Cls

Input ''введите значения трех переменных a, b, c''; a,b,c

35

3. Операторы условного перехода

If a><b and b<>c then a=a^2:b=b^2:c=c^2:goto 10 If a=0 and b=0 and c=0 then a=5:b=20:c=15:goto 10 S=a+b+c: Print ''Сумма равна='';s:goto 20

10 Print ''a='';a; ''b='';b; ''c='';c

20 end

8.Составьте программу, которая, вводит с клавиатуры 4 числа

èпроверяет является ли произведение этих чисел четным числом.

Решения:

Cls:Input ''введите 4 переменных a,b,c,d''; a,b,c,d P=a*b*c*d

If P mod 2=0 then print ''произведение число четное''else print ''произведение число нечетное'': End

9. Составьте блок-схему и программу для решения следующей задачи:

Введите с клавиатуры 3 числа. Если сумма чисел кратна 5, то уменьшить их в 5 раз. Если сумма меньше 50, то выдать на экран эту сумму, иначе числа уменьшить на 1,5 и выдать результаты.

36

Cls

Input ''введите значение трех переменных a,b,c'';a,b,c S=a+b+c:If s mod 5 =0 then a=a/5; b=b/5; c=c/5: goto 10 If s<50 then print ''сумма='';s : goto 20

A=a-1.5; b=b-1.5; c=c-1.5

10 Print ''a='';a; ''b='';b; ''c='';c

20 End

10. Введите с клавиатуры 2 числа, однозначное и трехзначное. Проверьте, равна ли сумму цифр трехзначного числа однозначному числу.

Решение:

Cls

Input ''введите однозначное число'';a

37

3. Операторы условного перехода

Input ''введите трехзначное число'';c

ec= c mod 10

'единицы числа с

dc = int ((c mod 100)/10)

' десятки числа с

sc = int(c/100)

'сотни числа с

if (ec+dc+sc)=a then print ''равна''еlse print ''не равна''

11. Введите с клавиатуры 2 трехзначных числа. Если единицы первого числа в 6 раз меньше суммы цифр двух других его цифр, то уменьшите второе число в 10 раз. Если произведение цифр второго числа равно 677, то первое число увеличьте на 3, а второе уменьшите на 2, выведите результаты, иначе числа уменьшите в 1,5 раза и выдайте их сумму.

Cls :Input ''введите два трехзначных числа'';a,b ea= a mod 10 :da = int ((a mod 100)/10)

sa = int(a/100) :eb=b mod 10

db = int ((b mod 100)/10):sb = int(b/100)

If ea*6=da+sà then b=b/10: print ''b='';b: goto 10

If (ea*sa*da)=677 then a=a+3: b=b-2:Print ''a='';a;"b=";b:goto 10

38

a=a/1.5: b=b/1.5: s=a+b: Print ''сумма='';s 10 End

39

4. Операторы цикла

Очень часто при составлении алгоритмов некоторую последовательность команд приходится выполнять многократно. По определению алгоритм является циклическим, если некоторая последовательность шагов выполняется несколько раз.

Поэтому изучая данный параграф мы переходим к построению циклических алгоритмов.

Для построения циклических алгоритмов используются операторы цикла.

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

начало цикла FOR I=1 TO 10 STEP 1 тело PRINT I

конец цикла NEXT I

Этот оператор состоит из двух частей:

1)заголовка или начала оператора цикла (FOR I=НЗП TO КЗП STEP N), где указываются основные параметры: НЗП — начальное значение переменной I, КЗП — конечное значение переменной I, N — шаг изменения переменной I,

2)конца цикла (NEXT I), где проверяются значения переменной цикла и принимается решение, если переменная цикла имеет значение больше чем КЗП, то управление передается оператору следующему за NEXT, иначе повторяется работа операторов, находящихся в теле цикла.

Начальное и конечное значение переменной являются обязательными параметрами, а, если значение шага не указывается, то он по умолчанию принимает значение равное 1. Переменная цикла — это параметр цикла (поэтому такой цикл иногда называют параметрическим циклом). Параметр цикла последовательно принимает значения от начального значения до конечного с указанным интервалом шага.

Что будет, если начальное и конечное значение переменной совпадает? Цикл будет работать только один раз.

Шаг может иметь отрицательное значение. Но тогда начальное значение переменной должно быть больше конечного.

При положительном шаге переменная цикла должна увеличи- ваться и оператор цикла будет повторяться только при условии,

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]