Пусть Чертёжник стоит в точке (0,0). Выполняя программу, Чертёжник нарисует цифры 1-9 и 0, в таком виде, как они пишутся на почтовых конвертах (см. рисунок). В фигурных скобках - комментарии, они не выполняются.
использовать Чертежник алг Циферки нач {рисуем 1} поднять перо сместиться в точку (2, 1) опустить перо сместиться в точку (2, 3) сместиться в точку (1, 2) {рисуем 2} поднять перо сместиться в точку (3, 3) опустить перо сместиться в точку (4, 3) сместиться в точку (4, 2) сместиться в точку (3, 1) сместиться в точку (4, 1) {рисуем 3} поднять перо сместиться в точку (5, 3) опустить перо сместиться в точку (6, 3) сместиться в точку (5, 2) сместиться в точку (6, 2) сместиться в точку (5, 1) {рисуем 4} поднять перо сместиться в точку (7, 3) опустить перо сместиться в точку (7, 2) сместиться в точку (8, 2) поднять перо сместиться в точку (8, 3) опустить перо сместиться в точку (8, 1) {рисуем 5} поднять перо сместиться в точку (10, 3) опустить перо сместиться в точку (9, 3) сместиться в точку (9, 2) сместиться в точку (10, 2) сместиться в точку (10, 1) сместиться в точку (9, 1) {рисуем 6} поднять перо сместиться в точку (12, 3) опустить перо сместиться в точку (11, 2) сместиться в точку (11, 1) сместиться в точку (12, 1) сместиться в точку (12, 2) сместиться в точку (11, 2) {рисуем 7} поднять перо сместиться в точку (13, 3) опустить перо сместиться в точку (14, 3) сместиться в точку (13, 2) сместиться в точку (13, 1) {рисуем 8} поднять перо сместиться в точку (15, 3) опустить перо сместиться в точку (15, 1) сместиться в точку (16, 1) сместиться в точку (16, 3) сместиться в точку (15, 3) поднять перо сместиться в точку (15, 2) опустить перо сместиться в точку (16, 2) {рисуем 9} поднять перо сместиться в точку (17, 1) опустить перо сместиться в точку (18, 2) сместиться в точку (18, 3) сместиться в точку (17, 3) сместиться в точку (17, 2) сместиться в точку (18, 2) {рисуем 0} поднять перо сместиться в точку (19, 1) опустить перо сместиться в точку (19, 3) сместиться в точку (20, 3) сместиться в точку (20, 1) сместиться в точку (19, 1) {возвращаемся в начало} поднять перо сместиться в точку (0, 0) кон
begin SetWindowSize(w,h); // поле для графика в окне var xLeft:=50; var yLeft:=50; var xRight:=w-xLeft; var yRight:=h-yLeft; // интервалы по осям var ax:=-12.0; var bx:=12.0; var hx:=1.0; var ay:=-6.5; // минимум f(x) с запасом var by:=6.5; var hy:=0.5; // масштабы по осям var mx:=(xRight-xLeft)/(bx-ax); var my:=(yRight-yLeft)/(by-ay); // точка начала координат графика var x0:=xLeft+Trunc(abs(ax)*mx); var y0:=yRight-Trunc(abs(ay)*my); // рисование координатных осей Line(xLeft,y0,xRight+10,y0); Line(x0,yLeft-10,x0,yRight); SetFontSize(12); SetFontColor(clBlue); TextOut(xRight+15,y0-10,'X'); TextOut(x0-4,yLeft-30,'Y'); SetFontSize(8); SetFontColor(clGreen); // рисование засечек var s:string; for var i:=1 to Round((bx-ax)/hx)+1 do begin var num:=ax+(i-1)*hx; var x:=xLeft+Trunc(mx*(num-ax)); Line(x,y0-3,x,y0+3); Str(num,s); if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s) end; for var i:=1 to Round((by-ay)/hy)+1 do begin var num:=ay+(i-1)*hy; var y:=yRight-Trunc(my*(num-ay)); Line(x0-3,y,x0+3,y); Str(num,s); if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s) end; TextOut(x0-10,y0+10,'0'); // собственно график var xi:=ax; while xi<=bx do begin var yi:=f(xi); var x:=x0+Round(xi*mx); var y:=y0-Round(yi*my); if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed); xi+=1e-3 end end.
begin SetWindowSize(w,h); // поле для графика в окне var xLeft:=50; var yLeft:=50; var xRight:=w-xLeft; var yRight:=h-yLeft; // интервалы по осям var ax:=-15.0; var bx:=15.0; var hx:=1.0; var ay:=-6.5; // минимум f(x) с запасом var by:=6.5; var hy:=0.5; // масштабы по осям var mx:=(xRight-xLeft)/(bx-ax); var my:=(yRight-yLeft)/(by-ay); // точка начала координат графика var x0:=xLeft+Trunc(abs(ax)*mx); var y0:=yRight-Trunc(abs(ay)*my); // рисование координатных осей Line(xLeft,y0,xRight+10,y0); Line(x0,yLeft-10,x0,yRight); SetFontSize(12); SetFontColor(clBlue); TextOut(xRight+15,y0-10,'X'); TextOut(x0-4,yLeft-30,'Y'); SetFontSize(8); SetFontColor(clGreen); // рисование засечек var s:string; for var i:=1 to Round((bx-ax)/hx)+1 do begin var num:=ax+(i-1)*hx; var x:=xLeft+Trunc(mx*(num-ax)); Line(x,y0-3,x,y0+3); Str(num,s); if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s) end; for var i:=1 to Round((by-ay)/hy)+1 do begin var num:=ay+(i-1)*hy; var y:=yRight-Trunc(my*(num-ay)); Line(x0-3,y,x0+3,y); Str(num,s); if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s) end; TextOut(x0-10,y0+10,'0'); // собственно график var xi:=ax; while xi<=bx do begin var yi:=f(xi); var x:=x0+Round(xi*mx); var y:=y0-Round(yi*my); if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed); xi+=1e-3 end end.
использовать Чертежник
алг Циферки
нач
{рисуем 1}
поднять перо
сместиться в точку (2, 1)
опустить перо
сместиться в точку (2, 3)
сместиться в точку (1, 2)
{рисуем 2}
поднять перо
сместиться в точку (3, 3)
опустить перо
сместиться в точку (4, 3)
сместиться в точку (4, 2)
сместиться в точку (3, 1)
сместиться в точку (4, 1)
{рисуем 3}
поднять перо
сместиться в точку (5, 3)
опустить перо
сместиться в точку (6, 3)
сместиться в точку (5, 2)
сместиться в точку (6, 2)
сместиться в точку (5, 1)
{рисуем 4}
поднять перо
сместиться в точку (7, 3)
опустить перо
сместиться в точку (7, 2)
сместиться в точку (8, 2)
поднять перо
сместиться в точку (8, 3)
опустить перо
сместиться в точку (8, 1)
{рисуем 5}
поднять перо
сместиться в точку (10, 3)
опустить перо
сместиться в точку (9, 3)
сместиться в точку (9, 2)
сместиться в точку (10, 2)
сместиться в точку (10, 1)
сместиться в точку (9, 1)
{рисуем 6}
поднять перо
сместиться в точку (12, 3)
опустить перо
сместиться в точку (11, 2)
сместиться в точку (11, 1)
сместиться в точку (12, 1)
сместиться в точку (12, 2)
сместиться в точку (11, 2)
{рисуем 7}
поднять перо
сместиться в точку (13, 3)
опустить перо
сместиться в точку (14, 3)
сместиться в точку (13, 2)
сместиться в точку (13, 1)
{рисуем 8}
поднять перо
сместиться в точку (15, 3)
опустить перо
сместиться в точку (15, 1)
сместиться в точку (16, 1)
сместиться в точку (16, 3)
сместиться в точку (15, 3)
поднять перо
сместиться в точку (15, 2)
опустить перо
сместиться в точку (16, 2)
{рисуем 9}
поднять перо
сместиться в точку (17, 1)
опустить перо
сместиться в точку (18, 2)
сместиться в точку (18, 3)
сместиться в точку (17, 3)
сместиться в точку (17, 2)
сместиться в точку (18, 2)
{рисуем 0}
поднять перо
сместиться в точку (19, 1)
опустить перо
сместиться в точку (19, 3)
сместиться в точку (20, 3)
сместиться в точку (20, 1)
сместиться в точку (19, 1)
{возвращаемся в начало}
поднять перо
сместиться в точку (0, 0)
кон
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
uses graphABC;
const
w=1000;
h=600;
function f(x:real):=0.5*x*cos(2*x);
begin
SetWindowSize(w,h);
// поле для графика в окне
var xLeft:=50;
var yLeft:=50;
var xRight:=w-xLeft;
var yRight:=h-yLeft;
// интервалы по осям
var ax:=-12.0;
var bx:=12.0;
var hx:=1.0;
var ay:=-6.5; // минимум f(x) с запасом
var by:=6.5;
var hy:=0.5;
// масштабы по осям
var mx:=(xRight-xLeft)/(bx-ax);
var my:=(yRight-yLeft)/(by-ay);
// точка начала координат графика
var x0:=xLeft+Trunc(abs(ax)*mx);
var y0:=yRight-Trunc(abs(ay)*my);
// рисование координатных осей
Line(xLeft,y0,xRight+10,y0);
Line(x0,yLeft-10,x0,yRight);
SetFontSize(12); SetFontColor(clBlue);
TextOut(xRight+15,y0-10,'X');
TextOut(x0-4,yLeft-30,'Y');
SetFontSize(8); SetFontColor(clGreen);
// рисование засечек
var s:string;
for var i:=1 to Round((bx-ax)/hx)+1 do begin
var num:=ax+(i-1)*hx;
var x:=xLeft+Trunc(mx*(num-ax));
Line(x,y0-3,x,y0+3);
Str(num,s);
if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s)
end;
for var i:=1 to Round((by-ay)/hy)+1 do begin
var num:=ay+(i-1)*hy;
var y:=yRight-Trunc(my*(num-ay));
Line(x0-3,y,x0+3,y);
Str(num,s);
if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s)
end;
TextOut(x0-10,y0+10,'0');
// собственно график
var xi:=ax;
while xi<=bx do begin
var yi:=f(xi);
var x:=x0+Round(xi*mx);
var y:=y0-Round(yi*my);
if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed);
xi+=1e-3
end
end.
*******************************************
// PascalABC.NET 3.1, сборка 1204 от 24.03.2016
uses graphABC;
const
w=1000;
h=600;
function f(x:real):=8*sin(x)*sin(2*x);
begin
SetWindowSize(w,h);
// поле для графика в окне
var xLeft:=50;
var yLeft:=50;
var xRight:=w-xLeft;
var yRight:=h-yLeft;
// интервалы по осям
var ax:=-15.0;
var bx:=15.0;
var hx:=1.0;
var ay:=-6.5; // минимум f(x) с запасом
var by:=6.5;
var hy:=0.5;
// масштабы по осям
var mx:=(xRight-xLeft)/(bx-ax);
var my:=(yRight-yLeft)/(by-ay);
// точка начала координат графика
var x0:=xLeft+Trunc(abs(ax)*mx);
var y0:=yRight-Trunc(abs(ay)*my);
// рисование координатных осей
Line(xLeft,y0,xRight+10,y0);
Line(x0,yLeft-10,x0,yRight);
SetFontSize(12); SetFontColor(clBlue);
TextOut(xRight+15,y0-10,'X');
TextOut(x0-4,yLeft-30,'Y');
SetFontSize(8); SetFontColor(clGreen);
// рисование засечек
var s:string;
for var i:=1 to Round((bx-ax)/hx)+1 do begin
var num:=ax+(i-1)*hx;
var x:=xLeft+Trunc(mx*(num-ax));
Line(x,y0-3,x,y0+3);
Str(num,s);
if abs(num)>1E-15 then TextOut(x-TextWidth(s) div 2,y0+10,s)
end;
for var i:=1 to Round((by-ay)/hy)+1 do begin
var num:=ay+(i-1)*hy;
var y:=yRight-Trunc(my*(num-ay));
Line(x0-3,y,x0+3,y);
Str(num,s);
if abs(num)>1E-15 then TextOut(x0+7,y-TextHeight(s) div 2,s)
end;
TextOut(x0-10,y0+10,'0');
// собственно график
var xi:=ax;
while xi<=bx do begin
var yi:=f(xi);
var x:=x0+Round(xi*mx);
var y:=y0-Round(yi*my);
if (y>=yLeft) and (y<=yRight) then SetPixel(x,y,clRed);
xi+=1e-3
end
end.