1. Задать начальное значение курса.
2. Повторять
Ввести команду, определить новый курс и
Вывести его на экран
Пока не будет дана команда “Стоп”.
3. Закончить.
Уточним алгоритм
1. Старый_курс = Север.
2. Повторять
2.1. Ввести Команду.
2.2. Если Команда = “Вперед”, то
Новый_курс= Старый_курс
Иначе
Если Команда = “Вправо”, то
Если Старый_курс = “Запад”, то
Новый_курс=”Север”
Иначе
Новый_курс= Следующий(Старый_курс)
Иначе
Если Команда = “Назад”, то
Выбрать Старый_курс из
Север, Восток: Новый_курс = Следующий(Следующий (Старый_курс));
Юг, Запад: Новый_курс = Предшествующий(Предшествующий (Старый_курс))
Иначе
Если Команда = “Влево”, то
Если Старый_курс = “Север”, то
Новый_курс=” Запад ”
Иначе
Новый_курс= Предшествующий(Старый_курс)
Иначе
Если Команда не = “Стоп”, то
Вывести “неправильная команда”.
2.3. Выбрать Новый_курс из
Север : Вывести “ Север”
Восток : Вывести “Восток”
Юг : Вывести “ Юг ”
Запад : Вывести “ Запад "”
2.4. Старый_курс = Новый_курс.
Пока не будет Команда = “Стоп”.
3. Закончить.
Программа для этого алгоритма приведена ниже.
Program Ship;
Type
Side=( North, East, South, West);
Var
St_Curs,N_Curs : Side; { Старый и новый курс }
Com : String; { Команда }
Begin
St_Curs:= North;
WriteLn(’Идем на Север...’);
{ Определение нового курса }
Repeat
Write(’Введите команду: ’);
Readln(Com);
If Com = ’вперед’ then
N_Curs:= St_Curs
Else
If Com = ’вправо’ then
Begin
{ Движение вправо }
If St_Curs = West then
N_Curs := North
Else
N_Curs := Succ(St_Curs)
End
Else
If Com = ’назад’ then
Case St_Curs of
North,East : N_Curs := Succ(Succ (St_Curs));
South,West : N_Curs := Pred(Pred(St_Curs));
End
Else
If Com = ’влево’ then
If St_Curs = North then
N_Curs := West
Else
N_Curs := Pred(St_Curs)
Else
If Com <> ’стоп’ then
Writeln(’Неправильная команда’:30);
Write(’ Новый курс: ’);
Case N_Curs of
North : Writeln(’Север’);
East : Writeln(’Восток’);
South : Writeln(’Юг’);
West : Writeln(’Запад’);
End;
St_Curs := N_Curs;
Until Com = ’стоп’;
Writeln(’Приехали! Нажмите Enter’);
Readln;
End.
Для самопроверки напишите программу, в которой курс корабля может быть задан более точно, с промежуточными направлениями: Север, Северо-восток, Восток и т.д.