ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.09.2024
Просмотров: 12
Скачиваний: 0
У мові C++ багато можливостей директив препроцесора можна замінити директивами мови. Більш того, автор мови Страуструп виражав свій намір звільнити мову від препроцесора.
Завдання для самостійної роботи. Вивчити директиви #define, #line, #if, #else, assert().
3. Етапи вирішення завдань на комп'ютері
Рішення будь-якої задачі на комп'ютері складається з декількох етапів:
-
постановка завдання
-
вибір моделі
-
розробка методу рішення
-
розробка алгоритму рішення
-
складання програми
-
відладка програми
-
розрахунок завдання за програмою, обробка і аналіз результатів.
Перші два етапи, як правило, виходять за рамки можливостей студентів і вважаються заданими. Фактично формулювання завдання неявно закриває ці етапи. Останні етапи присутні, проте на шостий і сьомий етапи рідко акцентується увага. Для учбових програм ці етапи зводяться до простої перевірки рішення на 1–2 тестових завданнях. Для реальних завдань етапи шість і сім важливі. Що стосується обробки і аналізу результату, то це вимагає від програміста високого рівня кваліфікації, компетенції і глибини знання проблеми. У учбових завданнях студент, як правило, працює в рамках третього, четвертого і п'ятого етапів. Дуже часто виявляється, що третій етап для завдання відомий, а етапи три і чотири за своєю суттю тотожні, тобто вирішення третього етапу тотожне етапу чотири і, навпаки, алгоритм рішення фактично є методом рішення. Розподіл труднощів етапів три і чотири може бути найрізноманітнішим. Тут можливі будь-які комбінації труднощів. Якщо побудувати таблицю розподілу труднощів етапів три і чотири, вона може виглядати так.
Розподіли труднощів етапів 3 і 4
Важливим моментом третього етапу є вибір структури даних для вирішення поставленого завдання, від цього залежатиме метод рішення задачі і алгоритм його реалізації. Структура даних – це внутрішнє питання програми. Формат даних, який прийнятий для вирішення завдання на ПК, зовсім не обов'язково повинен відповідати (або збігатися) вигляду початкової інформації від джерела завдання. Програміст сам вирішує питання про те, в якому вигляді йому треба представити вхідну інформацію. Це не означає, що він повинен вимагати від замовника змінити форму представлення початкових даних. Форма представлення даних повинна мати природний вигляд, що склався. Питання об переформатування початкової інформації до зручного для програми вигляду повинне вирішуватися автоматично в рамках самої програми. Початкуючий програміст навіть для простих завдань, в яких питання про структуру даних не настільки важливе, повинен по можливості завжди продумувати питання про представлення даних. Н. Вірт в книзі «Алгоритми + структури даних = програми» підкреслює важливість питання про структуру даних при проектуванні програми.
Далі не проводитимемо розділення рішення задачі на етапи, оскільки для учбових завдань вони часто розмиті і не настільки чітко відокремлені один від одного. Проте інколи відзначатимемо, до якого етапу віднести ті або інші міркування при аналізі її рішення. У учбовому курсі, як правило, важкими завданнями є ті, для яких потрібно розробити метод рішення. Такі завдання можна розділити на два класи. Перший клас не вимагає спеціальних знань для розробки методу рішення, другий клас завдань такі спеціальні знання передбачає. Завдання, для яких потрібно розробити метод рішення, швидше відносяться до математики, чим до програмування, що і робить їх важкими для студентів.
Контрольні питання:
-
Критерії оцінки проектуванні мови програмування.
-
Що таке абстракція і її види.
-
Критерії надійності програми.
-
Препроцесор і його директиви.
-
Перерахувати етапи вирішення завдань на комп'ютері
Література:
-
Березін Б.І., Березін С.Б. Початковий курс С і C++. — М.: ДІАЛОГ-МІФІ, 1996
-
Ван Тассел Д. Стиль, розробка, ефективність, відладка і випробування програм. — М.: Світ, 1981.
-
Подбельський в.в. Мова Си++. — М.: Фінанси і статистика, 1996.
-
Паппас До., Мюррей У. Программирование на С і C++. — Київ: «Ірина»; BHV, 2000.