
Программирование диалога с компьютером
МБОУ «СОШ №2» городского округа Судак
Жолтикова Е.М .


Что такое диалог с компьютером
- Любую программу составлять нужно так, чтобы ее исполнение реализовывало диалог между компьютером и пользователем в понятной для человека форме.

Сценарий диалога
- Прежде чем начать составление программы, нужно продумать сценарий такого диалога.
Введите первое слагаемое: А = 237
Введите второе слагаемое: В = 658
А + В = 895
Пока!

Любой вывод на экран происходит по оператору вывода, записанному в программе
- с помощью оператора вывода на экран выносятся не только результаты решения задачи, но и все элементы диалога со стороны компьютера.

Вот программа, которая реализует наш сценарий:
Program Summa;
var А , В : integer;
begin
write ('Введите первое слагаемое: А =');
readln(А);
write ('Введите второе слагаемое: В =');
readln(В);
writeln;
writeln('А + В = ', А+В);
writeln('Пока!')
end.

Сценарий работы программы — это описание ее общения с пользователем (пользовательского интерфейса).
Интерфейс обязательно должен быть дружественным. Любой символьный вывод на экран программируется с помощью оператора write или writeln .

Ветвления и исполнение диалога между компьютером и пользователем:
- Вася собирает древние монеты. Он приобрел а динариев и b сестерциев разного достоинства и года выпуска. Хватит ли ему места в альбоме, если там всего с ячеек для монет?
- ветвления. ppt

Program money;
Var
A,b,c: integer;
Begin
Write(‘Сколько динариев купил Вася? ‘); readln(a);
Write(‘Сколько сестерциев купил Вася? ‘); readln(b);
Write(‘Cколько свободных ячеек в альбоме? ‘); readln(с);
If a+b then
Writeln(‘Места в альбоме хватит’)
Else
Writeln(‘Места а альбоме не хватит’);
End.

Бой со змеем Горынычем

Собрался Иван-царевич на бой со Змеем Горынычем, трехглавым и треххвостым.
- Вот тебе меч-кладинец –говорит ему баба Яга. – одним ударом ты можешь срубить либо голову, либо две головы, либо один хвост, либо два хвосты. Но запомни: срубишь один хвост – два вырастут, срубишь два хвоста – голова вырастет, срубишь голову – голова вырастет, срубишь две головы – ничего не вырастет.
Задача

За сколько ударов Иван-царевич может срубить Змею Горынычу все головы и все хвосты?

Этапы решения расчетной задачи на компьютере
1. Постановка задачи.
2. Математическая формализация.
3. Построение алгоритма.
4. Составление программы на языке программирования.
5. Отладка и тестирование программы.
6. Проведение расчетов и анализ полученных результатов.

Формализация задачи:
Дано:
G=3
Решение:
Найти:
X=3
N=0
N – число ударов?
RG
Ввод RG и RX
RX
Если срубить 1 голову(RG=1), то голова вырастет (N=N+1)
Если срубить 2 головы(RG=2), то ничего не вырастет (G=G-2 , N=N+1)
Если срубить 1 хвост(RX=1), то 2 хвоста вырастут (X=X+1, N=N+1)
Если срубить 2 хвоста(RX=2), то голова вырастет (G=G+1 , X=X-2, N=N+1)
Алгоритм решения

Циклы
- Алгоритм решения данной задачи будет циклическим. С циклическими алгоритмами вы уже познакомились, работая с графическим исполнителем.
- Цикл — это команда исполнителю многократно повторить указанную последовательность команд.

Цикл с предусловием
Сколько различных слов можно составить из N букв (слова не обязательно должны иметь смысл)


« Цикл с предусловием »: пока истинно условие цикла, повторяется выполнение тела цикла .
while do
- Служебное слово while означает «пока», do — «делать», «выполнять».
- Оператор, стоящий после слова do, называется телом цикла. Тело цикла может быть простым или составным оператором, т. е. последовательностью операторов между служебными словами begin и end.

Алгоритм решения:
НАЧАЛО
N=0; G=3; X=3
да
((G0) and (X0)) or ((G0) and (X=0))or ((G=0) and (X0)) ?
нет
Что будем рубить?
Ввод ( голов ) RG, (хвостов) RX
нет
да
(RX=0) and (RG0) ?
да
нет
(RX0) ?
RG=1 ?
да
да
N=N+1
нет
RХ=1 ?
нет
N=N+1; G=G-2
нет
N=N+1; G=G+1; X=X-2
N=N+1; X=X+1
Вывод N
КОНЕЦ
19

