Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 112

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 316 >> Следующая

так, массивы и файлы явля тся структурами данных, естественно соот-ветствуими потокам. структура, которая теоретически адекватна потоку — потенциально бесконечная последовательность данных — остается для программ важным призраком, стоящим за частичными представлениями.
Пример 7.2.5. Задача об N максимальных числах.
Цель настоящего примера — продемонстрировать начинающему программи-
7.2. ПОТОКОВАЯ ОБРАБОТКА
317
сту многообразие вариантов реения да е довольно простой задачи. Ситуация, когда разработчик программы вынужден делать выбор того или иного пути задаваемых вычислений, внешне кажущихся равнозначными, является весьма типичной. В то е время далеко не всегда мо но сформулировать ясне критерии такого вбора.
Когда в своей работе программисту приходится отдавать предпочтение одним решениям перед другими, он, прежде всего, определяет условия функционирования данного фрагмента программы. Иными словами, он должен выяснить, как сказывается эффективность фрагмента на пользовательских характеристиках программы в целом. Из ответа на этот вопрос можно понять:
a) следует ли экономить память;
b) оптимизировать ли время исполнения фрагмента;
c) нужно ли заботиться о компактности программы;
d) каковы требования к интерфейсу данного фрагмента и окружающей его программной среды;
e) насколько критична наглядность программы в данном месте?
От правильности такой оценки зависит качество создаваемого программного изделия7.
отелось б , чтобы из приводимого ни е материала стало очевидным, что рассу дения по поводу реаемой задачи могут оказаться не менее полезными для выработки варианта, чем, к примеру, прямой подсчет скорости работы и занимаемой памяти. Они могут указать на путь, мимо которого легко пройти при прямолинейном программировании. а е если такой путь будет отвергнут, польза от его рассмотрения в том, что он будет отвергнут мотивированно. Возможно, что после изменения ситуации8 отвергнутый подход окажется предпочтительнее.
И последнее предварительное замечание. Разработка программы — это не только разработка ее алгоритма, но и, преде всего, вбор наиболее под-ходяих структур даннх. начинаего программиста в арсенале пока
7 Следует к тому же отметить, что опытный программист никогда не позволит себе неоправданных расходов ресурсов. Сравните с поведением, скажем, программного обеспечения фирмы Microsoft, которое занимает все доступные ресурсы.
8 Часто задача динамически меняется в ходе ее решения.
318
7.
мало вариантов, меду которыми приходится выбирать тип переменных, размещение их в памяти и др. Но даже в этом случае следует подходить к выбору осознанно, чтобы приучить себя к соответствующей дисциплине. Зача-сту именно вбор структур данных программы диктует применение того или иного алгоритма. В то же время процесс выбора далеко не так прямолинеен, как это может показаться на первый взгляд. Как правило, приходится делать множество итераций, прежде чем система из алгоритма и структур данных станет реализуемой программой. Общего рецепта здесь нет, и можно надеяться только на вработку ориентиров, совокупность которых в конечном итоге и определяет программистску квалификаци разработчика.
Что же касается выбора языка и системы программирования, которые используются для решения задачи, то по важности это вопрос второго порядка. Если на этот выбор программист повлиять не в состоянии, то ему придется приспосабливаться к вненим условиям и независимо от предпочтений работать с тем, что есть И ными словами, квалифицированный программист должен легко адаптироваться к любой среде программирования. Именно по этой причине в данном разделе мы иллстрируем разработку программы, используя не С/С++, как ранее, а Pascal (стандарт языка). Мы намеренно опускаем объяснение некоторых конструкций (изучение их — предмет элементарного самообразования либо особого курса для тех, кто не умеет учиться сам), считая, что их смысл мо ет быть извлечен из контекста при чтении программы. Впредь мы будем чередовать эти и другие языки, почти произвольно выбирая один или другой, с тем, чтобы у читателя складывались не стереотипы, а предпочтения.
Рассмотрим просту учебну задачу, которая затем будет обобена с цель иллстрации возмо нх подходов к реени и к анализу вариантов. о ходу изло ения критику тся реения, принимаеме без анализа ситуации, отмечаются типичные ошибки. Учебная цель примера — дать в простейшей, модельной, ситуации наглядное представление о том:
a) как можно настраивать программу на условия применения?
b) какие вопросы целесообразно задавать себе при составлении программ?
c) какие мотивации принимаемых и отвергаемых решений обыкновенно со-прово да т развитие алгоритма?
Задача поиска максимального элемента потока чисел, символов или значений какого-либо другого типа, обладаего операцией отноения срав-
7.2.
319
нения значений, — классический пример, с которого часто начина т знакомиться с задачами на составление алгоритмов. В варианте для чисел она формулируется следующим образом:
Пусть имеется вводимая последовательность чисел (для определенности, целых, принадлежащих некоторому диапазону например, от 1 до 1000), поступающих на вход программы одно за другим, — поток. Требуется написать программу, которая из входного потока выбирает и печатает самое большое число.
Предыдущая << 1 .. 106 107 108 109 110 111 < 112 > 113 114 115 116 117 118 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100