1. Опишите формальную грамматику, порождающую множество целых двоичных чисел. 2. Измените описание грамматики из примера в п.8.1.2. таким образом, чтобы она описывала конструкции типа «Имя_1, Имя_2...Имя_N делают_то-то». 3. Что определяет следующая нотация Бекуса-Наура: <формула>::=<цифра>|(<формула><знак><формула>) <знак>::= +| - | * <цифра>::= 0|1|2|3|4|5|6|7|8|9 4. На каком-либо языке программирования напишите программу, функционирующую в соответствии с нотацией, приведенной в предыдущем задании. 5. С помощью синтаксических диаграмм опишите следующие конструкции языка PASCAL: a) оператор цикла с предусловием WHILE...DO; b) составной оператор; c) оператор цикла с параметром FOR...DO; d) оператор выбора CASE. 6. Можно ли считать формальным исполнителем алгоритма следующие устройства: a) кодовый замок; b) графический редактор; c) телефон с памятью для записи номеров; d) принтер? 7. Постройте блок-схемы следующих структурных алгоритмов: а) вычисление n! (ввод n); b) суммирование цифр целого числа при произвольной его разрядности (ввод - целое число); c) перевод целого числа в двоичную систему счисления (ввод - целое число); d) вычисление значения функции sin(x) с заданной точностью е путем суммирования ее разложения в ряд Тейлора (ввод - аргумент х, точность вычисления е). 8. Запишите с помощью псевдокода алгоритмы, приведенные в задании 7. 9. Напишите программы на каком-либо языке программирования для алгоритмов задания 7. 10. В чем смысл и значение структурной теоремы для практики разработки алгоритмов? Возможно ли существование неструктурных алгоритмов? Если «да» - приведите примеры. |