Страница:
103 из 357
2), а затем завершает программу используя свой параметр в качестве ее возвращаемого значения. Более радикальный способ завершения программы – это вызов abort(), которая обрывает выполнение сразу же или сразу после сохранения где-то информации для оладчика (дамп памяти); о подробностях справьтесь, пожалуйста, в вашем руководстве.
3.1.5 Драйвер
Когда все части программы на месте, нам нужен только драйвер для инициализации и всего того, что связано с запуком. В этом простом примере main() может работать так:
int main() (* // вставить предопределенные имена: insert(«pi»)-»value = 3.1415926535897932385; insert("e")-»value = 2.7182818284590452354;
while (cin) (* get_token(); if (curr_tok == END) break; if (curr_tok == PRINT) continue; cout «„ expr() «« «\n“; *) return no_of_errors; *)
Принято обычно, что main() возвращает ноль при нормалном завершении программы и не ноль в противном случае, поэтому это прекрасно может сделать возвращение числа ошибок. В данном случае оказывается, что инициализация нужна только для введения предопределенных имен в таблицу имен.
Основная работа цикла – читать выражения и писать ответ. Это делает строка:
cout «„ expr() «« «\n“;
Проверка cin на каждом проходе цикла обеспечивает завешение программы в случае, если с потоком ввода что-то не так, а проверка на END обеспечивает корректный выход из цикла, когда get_token() встречает конец файла. Оператор break осуществляет выход из ближайшего содержащего его оператора switch или оператора цикла (то есть, оператора for, оператора while или оператора do).
|< Пред. 101 102 103 104 105 След. >|