Алгоритмика в теории и практике
.pdf
что начальное значение меньше или равно конечному. При отрицательном шаге начальное значение не должно быть меньше конечного.
Операторы, относящиеся к телу цикла, будут в процессе работы многократно повторяться с одной лишь разницей, что стоящая в них переменная I при каждом повторении будет изменять свое значение и не зависит от того, используется ли она в вычислениях внутри цикла или нет.
Общий вид блок — схемы для цикла будет выглядеть следующим образом:
Разберем пример:
Составьте программу, которая напишет на экране Вашу фамилию 10 раз.
В данном случае достаточно один раз написать оператор вывода фамилии на экран и заключить его внутри цикла. Переменная цикла I будет меняться в диапазоне от НЗП=1 до КЗП=10, шаг в данном случае равен единицы, поэтому его можно не указывать.
FOR I=1 TO 10
PRINT ''Фамилия''
NEXT I
Блок-схема такой программы будет следующая:
41
4. Операторы цикла
Часто программисты используют такую интересную функцию, как датчик случайных чисел.
С его помощью можно получать заранее неизвестные числа и применять в игровых задачах и при рисовании фигур, размер, цвет и местонахождение которых будет определяться случайным образом.
Запись А= RND(1) * 100), задает двузначное число, которое получается умножением полученного случайного положительного числа на промежутке от 0 до 1 на 100. Если требуется однозначное число, то надо умножать на десятки. Для получения трехзначного на сотни и т. д.
Разберем примеры
1. Заполните экран случайными точками.
CLS: SCREEN 9
FOR I=1 TO 1000 цикл повторяется 1000 раз Y=INT(RND(1) * 500) получили случайную координату для Х Õ=INT(RND(1) * 300) получили случайную координату для Y PSET (X,Y) выводим точку с координатами X,Y
NEXT I
2. Составьте программу, которая построит на экране 20 столбиков случайной высоты.
CLS : X=10:SCREEN 9
42
FOR I=1 TO 10
Y=INT(RND(1) * 100) координата Y задается случайным числом LINE(X, 190)-(X+5,Y) координата Х постоянная
X=x+10:
NEXT I
Второй тип оператора цикла имеет вид:
DO WHILE условие Операторы
LOOP
Этот оператор повторяет блок команд, пока условие верно. Как правило, переменная, на которую идет ссылка в условии, должна изменяться в теле цикла.
Необходимо создать программу рисования концентрических окружностей.
CLS SCREEN 9 R=100
DO WHILE R>10
CIRCLE (100,100),R:R=R–10 LOOP
Условие выполнение цикла проверяется перед выполнением блока операторов
Примеры решения задач по теме
1. Составьте программу, которая рисует квадрат, заштрихованный вертикальными линиями как на рисунке.
Решения:
Задание 1
Cls
Screen 9
Line (100,50)-(300,200),,b
For k=0 to 290 ståp 10
Line (100+k,50)-(100+k,200)
Next k
43
4.Операторы цикла
2.Составьте программу для рисования графика функции:
X ïðè X 10 |
|
|
|
X |
10 |
Y X 2 ïðè 10 |
||
|
|
|
X ïðè 10 |
|
|
Cls
Screen 9
Line (300,10)-(300,300)
Line (10,150)-(550,150)
For x=-150 to 150 step 0.1
If x<=-10 then y=-x
If x>=-10 and x<=10 then y=x^2
If x>10 then y=x
Pset (x+300,y+150)
Next x
3. |
Cоставьте программу для рисования графика функции |
|||
y |
|
10 |
|
5 sin x |
x |
|
|||
|
1 |
|||
Решение: |
||||
Cls: Sscreen 9
Line (300,10)-(300,300):Line (10,150)-(550,150)
For x=-50 to 50 step 0.1
If x <>1 then y=10/(x-1)+5*sin(x)
Pset (x+300, y+150)
Next x
4. Составьте блок-схему и программу для нахождения среднего арифметического двузначных чисел кратных 3.
Решение:
Cls: S=0: K=0
For A=12 to 99 step 3
S=S+A:K=K+1:Next A
Sr=S/K:Print ''среднее арифметическое='';Sr
44
5. Составьте блок-схему и программу для нахождения суммы по следующей формуле:
50 |
|
N kl l , k ввести с клавиатуры. |
|
l 3 |
3 l |
Решения:
Cls
Input ''введите значение k'';k
N=0
For l=3 to 50
N=N+(k*l-sqr(l))/(3+l)
Next l
Print ''сумма='';N
45
4. Операторы цикла
6. Составьте блок схему и программу для решения следующей задачи:
Сберкасса начисляет 2% годовых. Вывести какой станет сумма вклада S положенная в сберкассу на N лет. Значения S и N вводятся с клавиатуры.
Решение:
Cls
Input ''введите сумму вклада'';s Input ''введите кол-во лет'';N For k=1 to N
s=s+0.02*s Next k
Print ''через'';N; ''лет сумма вклада будет равна'';s ''рублей''
46
7. Напечайте таблицу перевода температуры из градусов по шкале Цельсия (С) в градусы по шкале Фаренгейта (F) от 150 до 300 градусов с шагом 10.
(по формуле F=1,8 C + 32). Все данные расположить в столбик.
Решение:
Cls
Print ТАB(10); ''Цельсий''; ТАB(30); ''Фаренгейт''
For C=150 to 300 step 10
F=1.8*C+32
Print TAB(10); C; tab(30);F
Next t
8. Используя оператор цикла и графические возможности, нарисуйте на экране:
47
4. Операторы цикла
Решение:
Cls
Screen 9
For k=0 to 250 step 50
Line (25+k, 250)-(50+k,100)
Line (50+k, 100)-(75+k, 250)
Next k
Составьте блок-схему и программу для следующих задач:
9. Определите и выведите на экран количество натуральных чи- сел меньших 1000 и делящихся на 5 и 7 одновременно.
Решение:
Cls : s=0
For A=1 to 1000
If (A mod 5)=0 and (A mod 7)=0 then s=s+1
Next A: Print ''кол-во чисел=''; S
48
10. Найдите и выведите все двузначные числа, сумма цифр которых не меняется при умножении на 2. (например: 27 и 27х2 = 54, сумма цифр 27 и 54 равна 9).
Решение:
Cls
For A=10 to 99
EA=A mod 10:DA=int (A/10):B=A*2
If B>99 then EB=B mod 10:DB=int ((B mod 100)/10): SB=int (B/100):S=EB+DB+SB
If B<100 then EB=B mod 10:
DB=int (B/10): S=EB+DB
If (EA+DA)=S then print A
Next A
49
4. Операторы цикла
11. Напишите программу по следующей блок схеме и проведите пробный счет при следующих значениях: x=133; 0;1,33
Решение:
Cls
Input"Введите значение х";x s=0
For i=1 to 5 s=s+1/i Next i y=x*s
Print ''y='';y
50
