0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
1 | |
Перешёл с Lafore на Стенли Б. Липпмана21.06.2021, 20:07. Показов 1563. Ответов 9
Метки нет (Все метки)
И сразу же проблемы. Первое задание - создать функцию main (){return 0}.
Второе задание - main (){return -1}, мол, увидите, как компилятор реагирует на сообщение об ошибке. А никак не реагирует. Я усложнил задачу, ввёл решение простого примера. Пример решает правильно, на сообщение об ошибке никакой видимой реакции. Что я упустил? В чём урок?
0
|
21.06.2021, 20:07 | |
Ответы с готовыми решениями:
9
Выполняя задания из книги Стенли Липпмана допустил ошибку. Не могу понять где. Найти причины и способы исправления ошибки "C1083: Не удается открыть файл включение" (книга Стенли Липпмана) Где взять файл Sales_item.h для книги Стенли Липпмана "C++ для начинающих" Тонкости из учебника Lafore |
Вездепух
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
|
|
21.06.2021, 20:28 | 2 |
О какой именно книге идет речь?
Это в книге Липпмана вы увидели объявление функции main без указания типа возвращаемого значения?О каком месте в книге идет речь? Без указания типа возвращаемого значения? Без ; в конце return-statement? Что это за компилятор такой?
0
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
21.06.2021, 20:36 [ТС] | 3 |
Липпман 5 переиздание от 2012 года.
стр 20. Упражнение 1.2. Измените код программы так, чтобы функция main() возвращала значение -1. Возвращение значения -1 зачастую свидетельствует о сбое при выполнении программы. Перекомпилируйте и повторно запустите программу, чтобы увидеть, как используемая операционная система реагирует на свидетельство об отказе функции main(). Разумеется, было написано: int main (){return 0;}. Добавлено через 3 минуты #include <iostream> using namespace std; int main() { int s = 1; ++s; cout << s; return -1; }
0
|
Вездепух
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
|
|
21.06.2021, 20:37 | 4 |
Как книга называется???
Не понял. Здесь написано: "как используемая операционная система реагирует...". В исходном сообщении вы нам рассказывали про "мол, увидите, как компилятор реагирует на сообщение об ошибке." Почему в исходном сообщении вы нам рассказывали про реакцию компилятора, если в книге ясно написано про реакцию операционной системы?
1
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
21.06.2021, 20:52 [ТС] | 5 |
То, что ясно для вас, не ясно мне. Я только начал учить язык.
1) В чём разница между компилятором и операционной системой? Разве компилятор не часть её? 2) Хорошо, задам вопрос по другому: как операционная система должна была реагировать, и где я должен был увидеть это, как не в компиляторе? Добавлено через 8 минут Книга называется:" Пятое издание Язык программирования C++ Базовый курс Стенли Б. Липпман Жози Лажойе Барбара Э.Му"
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
21.06.2021, 21:27 | 7 |
Walex,
Нет.
В командной строке, в данном случае. Вы же пишете консольное приложение. Вот в консоли и надо смотреть реакцию. Каким компилятором вы пользуетесь? Добавлено через 18 минут Тут как бы есть нюанс. Обычно перед изучением языка программирования нужно пройти хотя бы минимальный курс информатики. Из чего состоит компьютер, что такое операционная система, как пользоваться командной строкой, что такое компилятор - это все в этом курсе. Насколько знаю, это все в том или ином виде есть в школьной программе. Если по какой-либо причине у вас этих знаний нет, или они неполные, перед началом чтения любого учебника по языку программирования, нужно хотя бы бегло ознакомиться с "нулевым" уровнем. Думаю, можно найти учебник, в котором в первых главах есть нужные сведения, но поверьте, это закономерно сказывается на качестве материала. В тех книгах, где автор пытается охватить вообще все, вставляет туда и историю ЭВМ, и основы работы с ПК, и, например, работу в интернете, остается очень мало места для собственно языка программирования. В итоге материл дается по верхам (иначе книга получилась бы на 5000 страниц), что ничего хорошего для изучения не несет.
0
|
0 / 0 / 0
Регистрация: 15.06.2021
Сообщений: 174
|
|
21.06.2021, 21:54 [ТС] | 8 |
Вероятно, да, нужно. Но командной строки я не вижу, так как выхожу в программу через Visual Studio. Поэтому я общаюсь непосредственно с компилятором.
Оценить необходимость тех или иных знаний (а их бесконечно много, утонуть можно), можно только упираясь в проблему. Если можно, посоветуйте нужную книгу (а лучше - статью), где бы коротко и самую суть. А пока что я вижу, что компилятор работает нормально. Он делает то, что мне нужно, даже если идёт возврат ошибки. Вы, покуда я не получил знаний по операционной системе, можете на пальцах объяснить, что даёт возврат в систему сообщения об ошибке?
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
21.06.2021, 23:42 | 9 |
Запускайте через F5. Увидите вот это:
Другие программы могут его анализировать и как-то использовать.
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
22.06.2021, 00:03 | 10 |
Сообщение было отмечено Walex как решение
Решение
Компилятор отвечает только за компиляцию. Т.е. только за то, что относится к непосредственно языку.
А то, что смотрите вы, - это уже этап выполнения программы. За это отвечает среда исполнения. В данном случае эту среду контролирует IDE. IDE (Visual Sudio) - это не компилятор, компилятор - это только ее часть. "Возврат ошибки" - это часть логики программы. Т.е. в данном случае важно то, что произойдет после того, как ваша программа отработает. Допустим вы написали программу, которая копирует один файл. Ваша программа открывает файл по заданному пути и пытается скопировать его в указанный каталог. На протяжении этих действий могут возникнуть разнообразные ошибки. Например заданного файла может не оказаться на диске, путь некорректный или нет прав на чтение. Это - ошибки исполнения программы. Естественно, если эта ситуация произошла, то программа дальше работать не может. Что она может? Уведомить пользователя о том, что произошла ошибка соответствующим сообщением, а затем корректно завершить работу. Допустим эта ваша программа копирования файлов участвует в скрипте командной строки (скрипт может быть написан вами или другим пользователем, который имеет в распоряжении вашу программу). Скрипт получает список файлов и затем для каждого из них выполняет копирование. Как скрипт узнает, что копирование выполнено успешно? Он может анализировать код возврата каждого из вызовов вашей программы и что-то с этим сделать. Для того, чтобы это стало возможным, вы можете написать программу копирования файлов так, что в случае возникновения ошибки, помимо вывода информационного сообщения, был также предусмотрен возврат соответствующего кода при завершении программы. Какие это будут коды, и сколько из них будут означать ошибку - определяете вы сами, и, например, указываете в справке к вашей программе. Т.е. это всего лишь соглашение, определение правил которого оставлено за вами.
1
|
22.06.2021, 00:03 | |
22.06.2021, 00:03 | |
Помогаю со студенческими работами здесь
10
Учебник Lafore. Обыкновенные дроби Ошибки компиляции примера из учебника Lafore Стенли Липман - С++ Класс Sales_item.h Стенли Липман, С++, файл Sales_item.h Упражнение из учебника С. Липпмана Поясните по примеру из Липпмана Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |