Программирование
для новогоднего праздника в школе возникла сделать гирлянду. светодиоды в гирлянде должны зажечься в определенной последовательности 5 раз подряд, а потом погаснуть. из кружка робототехники решили сначала прототипировать эту . они собрали схему, в которой есть 3 светодиода и запрограммировали её так, что светодиоды по очереди включаются и выключаются, и каждый следующий светодиод должен был загораться на 0.1 секунду быстрее предыдущего. школьники собрали следующую схему:
после этого написали программу на sсratch и получился вот такой код:
затем школьники решили написать код на язык arduino ide, но что-то пошло не так, и программа не работает должным образом:
укажите, в чем заключается ошибка?
выберите один вариант из списка
в цикле if нет счетчика
слишком длинные задержки (delay)
переменные были заданы неправильно
ошибка в выборе пинов для светодиодов
4.
program p3;
uses Robot;
procedure Square2;
begin
right;
paint;
down;
paint;
left;
paint;
up;
paint
end;
var i,j:integer;
begin
Task('p3');
for i := 1 to 6 do
begin
Square2;
if i<=5 then
begin
for j := 1 to 2 do left;
for j := 1 to 2 do up
end
end
end.
5.
program p4;
uses Robot;
procedure Square2;
begin
paint;
right;
paint;
down;
paint;
left;
paint;
up
end;
var i:integer;
begin
Task('p4');
Square2;
for i:= 1 to 2 do right;
Square2;
for i:= 1 to 2 do down;
Square2;
for i:= 1 to 2 do left;
Square2;
for i:= 1 to 2 do up
end.
Объяснение:
Второй вариант 5-го задания с двумя процедурами
program p4;
uses Robot;
procedure Square2;
begin
paint;
right;
paint;
down;
paint;
left;
paint;
up
end;
procedure Square;
var i:integer;
begin
Square2;
for i:= 1 to 2 do right;
Square2;
for i:= 1 to 2 do down;
Square2;
for i:= 1 to 2 do left;
Square2;
for i:= 1 to 2 do up
end;
begin
Task('p4');
Square
end.
eps = 0.001;
function Pow(p: real; n: integer): real;
// возвращает значение p^n
begin
Pow := exp(n * ln(p))
end;
function Fact(n: integer): real;
// возвращает значение n!
var
p: real;
i: integer;
begin
p := 1;
for i := 1 to n do p := p * i;
Fact := p
end;
var
i: integer;
a, ai: real;
begin
a := 0;
ai := 2 * eps;
i := 0;
while ai > eps do
begin
i := i + 1;
ai := Pow(2 / i, i) * Fact(i);
a := a + ai
end;
writeln('Сумма первых ',i, ' членов ряда с точностью ', eps:0:4, ' равна ', a:0:4)
end.
Тестовое решение:
Сумма первых 32 членов ряда с точностью 0.0010 равна 12.9467