Кривая Шибкина.
В книге С.В. Филичева, «Занимательный Basic», есть глава Кривая Шибкина. В которой Доктор Шибкин, пытался составить программу, рисующую на экране компьютера вертикальные полосы.Он написал программу (перевод на Паскаль мой):
program n1;
uses crt,graphabc;
var a:integer;
begin
clrscr;
SetWindowSize(600,600);
SetPenColor(clDkGray );
a:=0;
while (a<600) do begin
line(0,a,a,600);
a:=a+10;
end;
end.
И получил вот какое изображение:
Предлагаю превзойти Доктора и составить программу строящую следующий орнамент. Весь геометрический орнамент состоит из линий, попробуйте сами определить какая переменная в операторе LINE изменяется и как.
Оригинальная идея подсмотрена в этом рисунке:
Для кого решение этой задачи оказалось трудным, предлагаю решений ученика 11 класса Виноградова Никиты. Попробуйте разобраться в нем сами.
program n1;
uses crt,graphabc;
var a:integer;
begin
clrscr;
SetWindowSize(600,600);
a:=0;
while (a<610) do begin
begin
SetPenColor(clblue);
line(0,a,a,600);
line(600,a,a,0);
line(600,a,600-a,600);
line(600-a,0,0,a);
end;
SetPenColor(clred);
begin
line(0,300+a,a,600);
line(300+a,600,600,600-a);
line(300+a,0,600,a);
line(0,300-a,a,0);
end;
if(a<310) then
begin
SetPenColor(clblack);
line(300,600-a,300+a,300+a);
line(300,600-a,300+a,300+a);
line(600-a,300,300+a,300+a);
line(600-a,300,300+a,300-a);
line(300,a,300+a,300-a);
line(a,a,300,300-a);
line(a,300,300-a,300-a);
line(a,300,300-a,300+a);
line(300,600-a,300-a,300+a);
end;
a:=a+10;
end;
end. |