Cтраница 2
Решение задач с использованием ЭВМ включает следующие этапы: формулировка задачи на профессиональном языке, математическая постановка задачи, выбор метода решения, выбор структуры данных и разработка алгоритма, программирование отладка и тестирование программы, счет по готовой программе и анализ результатов. Здесь в упрощенном виде рассмотрены те этапы, выполнение которых необходимо при решении простых задач в начальный период изучения программирования. [16]
Как обычно, выбор структуры данных влияет на потенциальную эффективность алгоритмов, посему стоит обдумать несколько вариантов. [17]
Первая проблема связана с начальным выбором алгоритмов и структур данных, реализуемых в ПО. Пели, па-пример, выбор структуры данных сделан преждевременно, то на более низких уровнях проектирования может выявиться ее неприменимость для эффективной реализации ряда алгоритмов - возникает необходимость перепроектирования всего ПО. Поэтому нисходящее проектирование требует с самого начала ставить и решать наиболее фундаментальные задачи, откладывая частные вопросы для последующего рассмотрения. [18]
Организация данных для обработки является важным этапом разработки программ. Для реализации многих приложений выбор структуры данных - единственное важное решение: когда выбор сделан, разработка алгоритмов не вызывает затруднений. [19]
На этапе технического проекта решаются вопросы организации структуры программ и данных, создания внешних спецификаций программ. Существенными факторами здесь являются выбор структуры данных управляющей программы, детальная спецификация аппаратурной части устройства, спецификация взаимодействия процессоров и задач, внешние спецификации ключевых программ и предварительная оценка временных диаграмм решения критических задач. Первые две стадии обычно выполняются небольшим числом сотрудников высокой квалификации, так как решения, принятые на этих стадиях, определяют качество проекта в целом и сроки его выполнения. [20]
![]() |
Параметры, использованные для решения тестовых задач. [21] |
Речь идет в первую очередь о выборе структуры данных, позволяющей с максимальной скоростью производить умножение матрицы на вектор. [22]
Ьта общность между описанием алгоритма и представлением данных, к которым он применяется или которые возникают в рзэуль - tere SPO выполнения, позволяет говорить не только о языках для описания алгоритмов, но и о языках для представления данных. Обычно данные имзют определенное отроение, структуру, подобно программен, которые их обрабатывают. Следовательно, вопросы выбора структуры данных и структурной организации программ являются основными при конструировании программ Яйбэго уровня сложности. [23]
В настоящее время выбор языка программирования эквивалентен выбору структуры данных, и если эта структура не подходит для тех данных, которые вы хотите обрабатывать, то остается только глубоко посочувствовать вам. В некотором смысле представляется более логичным сначала выбрать подходящую для проблемы структуру данных, а затем искать или конструировать с помощью набора имеющихся средств язык, пригодный для манипулирования такой структурой данных. Люди иногда толкуют о языках программирования высокого и низкого уровней, не вполне отчетливо формулируя, что они при этом имеют В виду. Если язык высокого уровня таков, что структура данных фиксирована и не поддается изменениям, а в языке низкого уровня имеется некое разнообразие выбора структур данных, то я полагаю, что мы можем наблюдать отход к языкам программирования низкого уровня, по крайней мере для некоторых целей. [24]
Этот этюд длинный и трудный. Не последнюю роль здесь играет то, что два центральных алгоритма нужно в какой-то степени принимать на веру. Однако, как это часто бывает в реальных задачах, главной проблемой является не кодирование программы, а выбор структур данных. [25]
![]() |
История одной колонии Жизни. Номер поколения выписан слева от каждой картинки. Найдите самостоятельно поколения 9 и 10. [26] |
Хотя этого и не видно из примеров, некоторые колонии разрастаются невероятным образом при весьма скромных начальных размерах. Есть другие колонии, которые медленно перемеща ются по пустыне, переходя на все новые и новые территории. Ваша программа должна обрабатывать большие колонии без чрезмерной траты памяти или времени. Многократный просмотр большого массива для построения следующих поколений - это банальный подход; здесь программистская задача состоит в выборе более экономичных структур данных и алгоритмов. Вам, возможно, захочется испытать какой-либо метод, отслеживающий только занятые квадраты. [27]
В настоящее время выбор языка программирования эквивалентен выбору структуры данных, и если эта структура не подходит для тех данных, которые вы хотите обрабатывать, то остается только глубоко посочувствовать вам. В некотором смысле представляется более логичным сначала выбрать подходящую для проблемы структуру данных, а затем искать или конструировать с помощью набора имеющихся средств язык, пригодный для манипулирования такой структурой данных. Люди иногда толкуют о языках программирования высокого и низкого уровней, не вполне отчетливо формулируя, что они при этом имеют В виду. Если язык высокого уровня таков, что структура данных фиксирована и не поддается изменениям, а в языке низкого уровня имеется некое разнообразие выбора структур данных, то я полагаю, что мы можем наблюдать отход к языкам программирования низкого уровня, по крайней мере для некоторых целей. [28]