Відповідь:
Пояснення:
Алгоритмы, в которых команды выполняются последовательно одна за другой, в порядке их записи, называются линейными.
Пример 1. Написать алгоритм получения изображения двузначного числа с исполнителя Чертежник.
Выберем следующий алгоритм построения изображения:
1) создать поле для исполнителя Чертежник размером 6х5 (6 клеток по горизонтали, 5 клеток по вертикали);
2) сместиться в точку (2, 2);
3) опустить перо;
4) изобразить цифру 1;
5) поднять перо и смечтиться в точку (4,3);
6) опустить перо;
7) изобразить цифру 2;
8) поднять перо и перейти в начало координат.
Вначале запишем алгоритм решения задачи на русском языке. Затем для каждой команды этого алгоритма выберем соответствующую команду исполнителя Чертежник.
Запись алгоритма на русском языке Текст программы
Заголовок программы;
Program PR_1;
вызов исп. Чертежник;
uses Drawman;
начало программы;
begin
создание поля размером 6х5;
Field(6,5);
рисуем цифры 1 и 2;
ToPoint(2,2);PenDown;
ToPoint(3,3);
ToPoint(3,1);
PenUp;
ToPoint (4,3);
PenDown;
ToPoint(5,3);
ToPoint(5,2);
ToPoint(4,1);
ToPoint(5,1);
PenUp;
ToPoint (0,0);
закончить программу.
end.
Можешь загрузить! Пример 1
Для выполнения программы выберем команды ПрограммаàВыполнить (F9 или кнопка на панели инструментов). Откроется окно исполнителя Чертежник, где нужно нажать кнопку Пуск или клавишу Enter на клавиатуре.
Команда OnVector(a,b)
OnVector(a,b)– перемещает перо Чертежника на вектор (a,b).
Выполним пример 1, но вместо команды ToPoint(x,y), кторая перемещает перо Чертежника в точку (x,y). будем использовать OnVector(a,b).
Перемещение из точки (1,2) в точку (3,3) с вектора: OnVector(2,1).
Перемещение из точки (3,3) в точку (1,2) с вектора: OnVector(-2,-1).
Перемещение из точки (1,3) в точку (4,3) с вектора: OnVector(3,0).
Перемещение из точки (4,3) в точку (1,3) с вектора: OnVector(-3,0).
Перемещение из точки (3,2) в точку (3,5) с вектора: OnVector(0,3).
Перемещение из точки (3,5) в точку (3,2) с вектора: OnVector(0,-3).
Пример 2. Написать алгоритм получения изображения двузначного числа с исполнителя Чертежник, используя команду OnVector(a,b).
var
f:file of integer;
i,k:integer;
begin
Randomize;
Assign(f,'in.dat'); Rewrite(f);
for i:=1 to 20 do begin
k:=Random(99)+1;
Write(f,k)
end;
Close(f)
end.
Тестовое решение
38 35 14 46 92 49 51 48 84 90 26 14 38 79 82 77 7 24 94 13
2. Основная программа
uses Crt;
const
nn=100;
var
i,j,k,n:integer;
fin,fout:file of integer;
a:array[1..nn] of integer;
dub:boolean;
begin
ClrScr;
Assign(fin,'in.dat'); Reset(fin);
Read(fin,k);
if not eof(fin) then begin
n:=1; Write(k,' '); a[n]:=k
end
else n:=0;
while (not eof(fin)) and (n<=nn) do begin
Read(fin,k); Write(k,' ');
j:=1; dub:=false;
while (j<=n) and (not dub) do begin
dub:=(a[j]=k); Inc(j);
end;
if not dub then begin Inc(n); a[n]:=k; Inc(j) end
end;
Writeln;
Close(fin);
for i:=1 to n do Write(a[i],' ');
Writeln; Writeln('n=',n);
Assign(fout,'out.dat'); Rewrite(fout);
Write(fout,n); Close(fout);
ReadKey
end.
Тестовое решение:
38 35 14 46 92 49 51 48 84 90 26 14 38 79 82 77 7 24 94 13
38 35 14 46 92 49 51 48 84 90 26 79 82 77 7 24 94 13
n=18
В качестве бонуса - решение этой же задачи в современной системе программирования PascalABC.NET.
// PascalABC.NET 3.1, сборка 1219 от 16.04.2016
begin
var fin,fout:file of integer;
Reset(fin,'in.dat');
var k:integer;
var a:=new integer[fin.FileSize];
var n:=0;
while not eof(fin) do begin
Read(fin,k); a[n]:=k; Inc(n)
end;
Close(fin);
a.Println;
var b:=a.ToHashSet;
b.Println; Writeln('n=',b.Count)
end.
Тестовое решение
38 35 14 46 92 49 51 48 84 90 26 14 38 79 82 77 7 24 94 13
38 35 14 46 92 49 51 48 84 90 26 79 82 77 7 24 94 13
n=18
И вопрос: для чего давать школьникам, 9/10 из которых никогда не будут программистами, устаревшие и громоздкие, сложные для понимания, написания и отладки системы программирования? Чтобы показать, "как все это сложно"?