Урок №20. Диалоговые программы.
Все наши предыдущие программы Черепаха выполняла непрерывно от начала до конца. Мы не могли вмешаться в её работу, пока все команды программы не будут выполнены.
Часто требуется, чтобы человек, работающий с программой {пользователь) смог во время работы программы ввести какие-то исходные данные и получить от программы решение задачи именно для этих данных. Такой режим работы программы называется диалоговым, потому что человек и программа ведут диалог — обмениваются информацией.
Диалоговая программа принимает от пользователя исходные данные и выводит результаты работы программы для этих данных.
Напишем программу, которая возводит число в квадрат, т. е. умножает его само на себя. Самая простая программа, которая выводит квадрат числа 15, выглядит так:
алг Квадрат_числа
нач
вывод 15*15
кон
Символ * в языках программирования обозначает арифметическую операцию умножения, а символ / — операцию деления.
Команда вывод служит для вывода данных (чисел и текста) в область экрана, расположенную ниже поля Черепахи. Если в вашей программе нет ни одной команды Черепахи, то поле Черепахи будет скрыто. После запуска программы в нижней части окна мы увидим только число 225 .

Обратите внимание, что при выводе программа сразу вычислила произведение 15 • 15 и вывела результат.
Для того чтобы понять, что значит это число, нужновидить программу.
Давайте добавим в команду вывод пояснение:
алг Квадрат_числа
нач
вывод "Квадрат числа 15 равен ", 15*15
кон
В команде вывод можно через запятую перечислить те данные, которые нужно показать на экране. Эти данные называются списком вывода. Текст записывается в двойных кааычмян а числа, имена переменных или арифметические выражении без кавычек.
После запуска этой программы мы увидим результат:
Квадрат числа 15 равен 225Теперь всё понятно. Но для того чтобы изменить число которое возводится в квадрат, нам нужно изменить программу Чаще всего это сделать невозможно — у пользователя нет текста программы или он не знает язык программирования. Поэтому программисту нужно так написать программу, чтобы пользователь смог сам ввести нужные данные и получить ответ.
Ясно, что число 15 в программе использовать неправильно — ведь мы хотим считать квадраты разных чисел, а не только квадрат числа 15. Поэтому нужно заменить это число переменной. Назовём её именем N и объявим в начале программы:
алг Квадрат_числа
нач
цел N
кон
Теперь нужно сделать так, чтобы пользователь смог ввести число в переменную N:
вывод "Введите число"
ввод N
В первой строке мы выводим подсказку. Когда программа будет запущена, мы сразу увидим её приглашение «Введите число» и нам станет ясно, что нужно делать.
В следующей строке мы используем новую команду ввод. Выполняя эту команду, система ждёт, пока вы наберёте число на клавиатуре и нажмёте клавишу Enter. Это значение будет присвоено переменной N, имя которой записано после слова ввод.
Остаётся подсчитать квадрат введённого числа, которое хранится в переменной N, и вывести результат. Вот полная программа:
алг Квадрат_числа
нач
цел N
вывод "Введите число "
ввод N
вывод "Квадрат числа ", N, " равен ", N * N
кон
Если запустить её и ввести число 15, мы увидим:
Квадрат числа 15 равен 225
Эту программу уже можно назвать настоящей диалоговой программой. Она принимает данные от пользователя и показывает ему результат обработки введённых данных.
Программа может считать квадраты любых чисел (до пеки торого предела), при этом текст программы изменять но нужно,
Пример. Составим программу, которая складывает три числа:
алг Сложение
нач
цел A, B, C, S
вывод "Введите три числа "
ввод A, B, C
S:=A+B+C
вывод "Результат: "
вывод A, "+", B, "+", C, "=", S
кон
Разберёмся, как она работает. В строке 1 объявляются четыре целые перемен ими. Переменные А, В и С обозначают исходные числа, а в переменную S мы будем записывать сумму (от англ, sum — сумма),
В строке 2 мы выводим на экран подсказку, а в строке 3 принимаем от пользователя три числа и записываем их в переменные А, В и С.
Строка 4 — это оператор присваивания. В переменную S записывается сумма трёх введённых чисел.
В строках 5 и 6 результат выводится на экран.
Если мы введём числа 1, 2 и 3, то увидим:
Результат:
1+2+3=6
Напишем программу, которая вычисляет сумму натуральных чисел от 1 до N. Значение N нужно ввести с клавиатуры, используя команду ввод. Например, при вводе числа 10 нужно найти сумму 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9+10 = 55.
В программе объявим две переменные: N и S. В переменную N будем записывать введённое число, а в переменной S накапливать сумму:
алг Сложение
нач
цел N, S
кон
Начальное значение переменной S должно быть равно нулю, потому что сумма равна нулю до того, как мы добавим к ней первое число. Затем к сумме нужно добавить число 1, потом — число 2, число 3 и т. д. до N:
S:= О
S:= S + 1
S:= S + 2
S:= S + 3
...
S:= S + N
Многоточие обозначает добавление всех чисел от 4 до N—1. Но сложность в том, что написать программу в таком виде мы не можем, потому что не знаем заранее, какое значение N введёт пользователь.
Задачу можно решить с помощью цикла, который выполняется N раз:
нц N раз
S:=S+x
кц
Так при каждом повторении цикла к переменной S добавляется новое число, в программе его нужно обозначить переменной. Пусть она называется х. Конечно, эту переменную нужно объявить в начале программы.
В первый раз мы добавляем к сумме 1, поэтому начальное значение переменной х должно быть равно 1. Каждое новое значение х больше предыдущего на 1, поэтому в конца тела цикла значение х нужно увеличить на 1:
х:= 1
нц N раз
S:= S + х
х:= х + 1
кц
То значение S, которое получится после завершения цикла, нужно вывести на экран — это и есть сумма, которую нам нужно вычислить.
Получается такая программа:
алг Сложение
нач
цел N, S, x
вывод "Введите N: "
ввод N
S:=0
x:=1
нц N раз
S:=S+x
x:=x+1
кц
вывод "Сумма = ",S
кон