Программировании mBlock есть робот с ультразвуковым датчиком смотрящий в одну сторону(прямо). Какой порядок алгоритма для самостоятельного прохождения лабиринта. Как уже видно на чертеже, впереди есть тупик, как можно прописать код так, чтобы робот не поехал назад в точку старта?
Линейный - самый простой. Например, измерить стороны прямоугольника и найти его периметр. Начало - Измерить ширину, длину - Удвоить сумму длины и ширины - Записать ответ-периметр - Конец
Разветвляющийся - имеет условие, две "ветки". Ситуация на перекрестке. Начало - Подошли к перекрестку - Горит зеленый свет? - ветка "да": перейти дорогу ветка "нет": стоять и ждать зеленый свет - Конец
Цикл означает повтор какого-то действия, например, покраска стены. Начало - Подойти к стене и взять кисть и краску - начало цикла: обмакнуть кисть в краску и провести по стене, пока вся стена не будет закрашена - Убрать кисть и краску на место - Конец
uses crt; var s:string; c:char; m:set of char; n,i,k,p:byte; begin writeln('Введите текст из строчных латинских букв, окончаание ввода Enter'); s:=''; repeat c:=readkey; if c in ['a'..'z'] then begin write(c); s:=s+c; end; if c=#13 then writeln until c=#13; n:=length(s); m:=[]; for c:='a' to 'z' do begin k:=0; for i:=1 to n do if s[i]=c then k:=k+1; if k>1 then m:=m+[c]; end; if m=[] then write('Нет букв, встречающихся более 1 раза') else for c:='a' to 'z' do if c in m then write(c) end.
Начало - Измерить ширину, длину - Удвоить сумму длины и ширины - Записать ответ-периметр - Конец
Разветвляющийся - имеет условие, две "ветки". Ситуация на перекрестке.
Начало - Подошли к перекрестку - Горит зеленый свет? -
ветка "да": перейти дорогу
ветка "нет": стоять и ждать зеленый свет
- Конец
Цикл означает повтор какого-то действия, например, покраска стены.
Начало - Подойти к стене и взять кисть и краску -
начало цикла: обмакнуть кисть в краску и провести по стене,
пока вся стена не будет закрашена
- Убрать кисть и краску на место - Конец