Методика решения задач с помощью ЭВМ.
Все решение задачи начинается с проблем.
1. Возникновение задачи связанной с реальной жизнью. Алгоритма для решения задачи.
2. Анализ задачи. Характеристика промежуточных данных (Выходными на одном этапе и входными на другом этапе). Они показывают информационные потоки данных.
3. Формулировка (постановка) задачи.
o Понятна ли, та терминология, которая используется заказчиком (расшифровка терминов)
o Что дано, что требуется получить.
o Каких входных данных не хватает, нет ли лишних входных данных
o Какие сделаны ограничения
o Есть ли соглашения для исполнения задачи
4. Построение математической модели.
o Какие мат.структуры проще всего отражают данные, которые обрабатываются программой.
o Какие мат.действия проще всего отражают существующий алгоритм обработки информации.
5. Замысел задач. Анализ существующих вариантов решения задачи и выбор одного из них.
o Приблизительная стоимость на конкретную задачу.
o Приблизительный срок исполнения
o Затраты
6. Разработка алгоритма для решения задачи.
o Алгоритм должен точно перерабатывать входные задачи данные в выходные.
o Должно затрачиваться минимум усилий.
МЕТОДЫ:
Декомпозиция – способ разбиения одной задачи на несколько более мелких.
Эвристика – способ решения задач восходящих к здравому смыслу (метод моделирования рассуждений человека).
Итерация – способ получения решения, когда повторяется одна и та же последовательность шагов начиная с одного или нескольких заранее заданных значений (пошаговое приближение к точному результату).
Рекурсия – решение выражается через эту же самую задачу, но меньшей размерности (задача сводится сама к себе).
7. Выбор языка программирования.
8. Написание программы.
o Ввод текста программы в память компьютера.
o Трансляция программы – перевод программы с ЯВУ в машинный код.
17Этапы прохождения заданий через ЭВМ.
1.Перенос алгоритма в компьютер
2.Трансляция - перевод программы с языка программирования на объектный режим. В результате получается объектный код. Трансляторы:1Компеляторы(создают объектный код программы); 2Интерпритаторы(объектный
код не создают, они выполняют программу построчно)
3.Сборка программы(редактрирование связей) - устанавливаются связи между программой пользователя и программами, который использует о.с.
4. Выполнение.
формула назыв. рекуррентной, если она связывает м/у собой (n+1)членов соседних последовательности.
позволяет определить значение любого члена послед-ти, если заданы её первые n-значений. значеение n, используемое для определения рекуррентной формулы, называют её порядком.
*линейная однородная рукуррент.формула:
A1=a2=a3=1
ai=ai-1+2*ai-2+3*аi-3 (3-го порядка)
*нелинейная рекуррентная формула:
Ai=a2i-1 + cos ai-2 (2-го порядка)
*линейная неоднородная рекуррентная формула:
Ai=ai-1 + 3 (1-го порядка)
*линейная формула с переменными коэффициентами:
Ai=i*ai-1 (1-го порядка)
В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия), например, функция A вызывает функцию B, а функция B — функцию A. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
Мощь рекурсивного определения объекта в том, что такое конечное определение способно описывать бесконечно большое число объектов. С помощью рекурсивной программы же возможно описать бесконечное вычисление, причём без явных повторений частей программы.
Реализация рекурсивных вызовов функций в практически применяемых языках и средах программирования, как правило, опирается на механизм рекурсивного стека — адрес возврата и локальные переменные функции записываются в стек, благодаря чему каждый следующий рекурсивный вызов этой функции пользуется своим набором локальных переменных и за этот счёт работает корректно. Оборотной стороной этого довольно простого по структуре механизма является то, что рекурсивные вызовы не бесплатны — на каждый рекурсивный вызов требуется некоторое количество оперативной памяти компьютера, и при чрезмерно большой глубине рекурсии может наступить переполнение стека вызовов. Вследствие этого обычно рекомендуется избегать рекурсивных программ, которые приводят (или в некоторых условиях могут приводить) к слишком большой глубине рекурсии.
При обратном ходе рекурсии происходит «разгрузка» стека. Данные, берущиеся оттуда используются для дальнейших операций.