Пример 10. Построить график функции y=x+1.
Программа решения задачи может иметь вид:
Program grafik;
uses crt, graphabc;
var x0, y0, x1, y1, k, i: integer;
x, y : real;
begin
x0:=400; y0:=350; k:=20;
setWindowSize(1100,800);
clearWindow (clDeepSkyBlue);
setPenColor(clBrown);
setPenWidth(2);
setFontSize(7);
{график рисуем на фоне координатных осей, точка пересечения которых находится в центре выделенного для графика окна}
line (10,y0,800,y0);
line (800,y0,780,y0+10);
line (800,y0,780,y0-10);
setFontColor(clRed);
setFontSize(12);
setFontStyle(fsBold);
textOut(805,350,'X');
line (x0,10,x0,750);
line (x0,10,x0+10,30);
line (x0,10,x0-10,30);
textOut(375,10,'Y');
setFontSize(10);
textOut(389,351,'0');
setPenWidth(3);
setPenColor(clViolet);
x:=-19;
{Табулируем функцию и строим ее график по вычисленным точкам с учетом перерасчета осей координат с целью использования отрицательных значений х и у }
While x<=19 do
Begin
y:=x+1;
x1:=trunc(x*k+x0);
y1:=trunc(-y*k+y0);
setPixel(x1,y1,clPurple);
circle(x1,y1,1);
x:=x+0.5;
delay(50);
end;
end.
После выполнения программы на экране монитора появится графическое окно со следующим рисунком (рис. 1.19):

Рис. 1.19
Если в программе grafik строку y:=x+1 заменить на строку y:=sin(x), получится следующая картинка:

Рис. 1.20
И снова арифметика.
Пример 11. Необходимо найти наибольший общий делитель (НОД) двух данных целых чисел.
Известно, что НОД двух чисел можно найти с помощью алгоритма Евклида, суть которого состоит в том, что следует от большего числа отнимать меньшее до тех пор, пока они не сравняются – это и будет результатом. Понятно, что такой алгоритм требует использования оператора While.
Программа, реализующая алгоритм Евклида, может иметь вид:
program NOD_2;
var a, b,NOD:integer;
begin
write ('a=');
readln (a);
write ('b=');
readln (b);
while a<>b do {проверка выполнения условия задачи}
if a>b then a:=a-b {если a>b, то вычитаем из a b,}
else b:=b-a; {иначе вычитаем из b a}
NOD:=a; {результат - одно из чисел a либо b}
writeln ('НОД=',NOD) { после выхода из цикла a=b}
end.
Результат выполнения программы при a=12 и b=20:
a=12 b=20 НОД=4 |
Пример 12. Найти делители натурального числа.
Для того, чтобы найти все делители натурального числа, большего 2, необходимо попытаться делить число на все числа, начиная с 2 до половины данного числа. Этот алгоритм можно реализовать в цикле с параметром.
Программа решения задачи может иметь вид:
program Deliteli;
var a, d:integer;
begin
write ('введите число: ');
readln (a);
for d:=2 to (a div 2) do {значение делителя d может
принимать от 2 до половины данного числа}
if a mod d = 0 then write (d,' '); {если остаток от
деления а на d = 0,то вывести на экран делитель d}
end.
Результат выполнения программы при а=12:
введите число: 12 2 3 4 6 |
Пробуем разбогатеть.
Пример 13. Допустим, вы открыли счет в банке на сумму
в 200000 рублей. На вклад ежегодно начисляется определенный процент, например, 10% (капитализированный вклад). Через сколько лет сумма вашего первоначального вклада увеличится в 2 раза?
Процент называется капитализированным, если в конце года начисляемая сумма добавляется к основному вкладу и на следующий год процент начисляется на новую сумму вклада. И так каждый год.
Для решения этой задачи следует применить цикл с предусловием.
Программа решения задачи может иметь вид:
program Vklad;
var sum, proc:real;
k:Integer;
begin
sum:=200000; {начальная сумма вклада}
proc:=10; {процент}
k:=0; {счетчек годов}
while sum<400000 do {проверка выполнения условия задачи}
begin
k:=k+1; {увеличиваем счетчик лет на 1 год}
sum:=sum+sum*proc/100; {ежегодное увеличение суммы}
end;
writeln ('через ',k,' лет')
end.
Результат выполнения программы:
через 8 лет |
Попробуйте на основе этой программы провести эксперимент, изменяя сумму вклада и ежегодный процент ее увеличения.
А теперь поиграем.
Пример 14. Составить программу, с помощью которой компьютер загадает число от 0 до 10, а вам предстоит его угадать.
Программа решения задачи может иметь вид:
Program Igra;
var x, a,n:integer;
begin
n:=1; {количество попыток}
randomize; {генератор случайных чисел}
x:=random(11); {случайное число от 0 до 10 записывается
в переменную х}
writeln ('Задумано целое число от 0 до 10. Угадай-ка!');
write ('введи предполагаемое число ');
readln (a);
while a<>x do
begin
n:=n+1;
writeln ('Не угадали!');
if a<x then writeln ('Ваше число меньше задуманного!')
else writeln ('Ваше число больше задуманного!');
writeln ('Попытайтесь еще раз!');
readln (a)
end;
writeln ('Поздравляю! Число угадано за ',n,' попыток')
end.
Поиграйте с компьютером, реализуя эту программу.
Упражнения
Составьте программы для решения следующих задач:
1. Вычислите сумму первых N четных чисел.
2. Вычислите произведение первых N нечетных чисел.
3. Выведите на экран монитора квадраты первых N натуральных
чисел.
4. Сколько слагаемых должно быть в сумме 1+3+5+7+…., чтобы эта сумма
оказалась больше 40.
5. Найдите наименьшее натуральное х, удовлетворяющее условию
х3 – х2 =100.
6. Вычислите: a) 5n b) a10 c) (a+1)n.
7. Нарисуйте пучок из 20 отрезков двух цветов разной длины, выходящих из левого верхнего угла экрана монитора.
8. Нарисуйте звездное небо, состоящее из N звезд разных цветов на темно-синем фоне.
9. Выведите на экран 10 концентрических окружностей разных цветов.
10. Нарисуйте на экране узор из 30 окружностей случайного диаметра.
11. Нарисуйте на экране узор из прямоугольников разного размера,
размещенных случайным образом.
12. Даны два целых числа. Определите, являются ли они взаимно простыми.
Натуральные числа называют взаимно простыми, если их наибольший
общий делитель равен 1.
13. Сколько делителей имеет данное число?
14. Определите, является ли простым данное число. (простое число делится
только на 1 и на само себя).
15. Получите наименьшее число вида 2n, превосходящее 100.
16. Сумма в S рублей положена в банк. При этом прирост составляет P%
ежегодно (капитализированный вклад). Через сколько лет сумма
увеличится в 3 раза?
17. Составьте программу, которая выводит таблицу значений функции у=х2 ,
отрезке [-4,4] с шагом 1.
18. Найдите НОД трех данных чисел.
Упражнения для любознательных
19. Найдите НОК двух данных чисел. НОК(a, b)=a*b/НОД(a, b).
20. Дано некоторое натуральное число. Определить, является ли оно
совершенным. Число называется совершенным, если оно равно сумме
всех своих делителй, включая 1. Например, 6 =1+2+3.
21. Дан рост учеников 8 класса, состоящего из N человек.
Определите, сколько учащихся имеет рост выше 170 см.
22. Дано натуральное число. Чему равна сумма его цифр.
23. Верно ли, что сумма цифр данного натурального числа является
нечетной?
24.Выведите на экран первые N чисел Фибоначчи.
Числа Фибоначчи – это члены числовой последовательности
1 1 2 3 5 8 13. …, которые вычисляются по следующему правилу:
a1=1, a2=1, a3=a2+a1,…, an=an-1+an-2.
25. Составьте программу «Угадай!». С помощью датчика случайных чисел в
программе загадывается число в диапазоне от 0 до 99. На отгадывание
числа дается 10 попыток. Играющий вводит каждый раз очередное число.
После каждого ответа программа выводит на экран одно из сообщений:
«больше», «меньше» или «угадано» в зависимости от введенного числа.
Цикл завершается при выполнении одного из условий: либо дан
правильный ответ, либо число попыток достигло 10.
26. Составьте программу, которая рисует график функции у=|х| ,
если х меняется на отрезке [-15,15] с шагом 0,05.
27. Составьте программу, которая выводит на экран монитора флаг
Олимпийских игр.
Дерзайте!
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 |


