Метка: Дистанционное обучение
Предварительный анализ задачи
Однако иногда предварительный анализ задачи может не дать информации, позволяющей легко разбить ее на последовательность отдельных шагов, и тогда может потребоваться спланировать и спроектировать одну большую программу. В этом случае при проектировании программы важно обеспечить высокую степень модульности. Другими словами, каждое специфическое задание, выполняемое программой, должно определяться как отдельная подпрограмму. Далее, сложные задания должны быть разбиты на несколько подпрограмм, каждая из которых выполняла бы определенную...
Повторяющийся код
Третий вид излишнего кода, повторяющийся код, встречается тогда, когда один и тот же текст появляется в программе более одного раза. Он может быть исключен, если оформить его в виде подпрограммы, которая будет вызываться везде, где это необходимо. Однако нельзя пользоваться этим приемом без разбора, поскольку вызов подпрограммы приводит к накладным расходам, связанным с памятью и временем. Если длина повторяющегося кода невелика или если он повторяется много раз, экономия памяти может оказаться слишком мала, чтобы оправдать накладные...
Модификация программы
Вторая причина определяется необходимостью модифицировать программу при изменении спецификаций. Программы должны изменяться в соответствии с нуждами пользователей, а также с целью их улучшения. В научном мире общепринято вырывать из существующих программ модули, которыми можно воспользоваться при конструировании новых программ. Чтобы приспособить эти модули к изменившимся условиям, могут потребоваться некоторые переделки.
В обоих случаях требуется, чтобы программист в общих чертах разбирался во всей программе и более глубоко в...
Этапы разработки программного обеспечения
Типичный проект разработки программного обеспечения проходит следующие этапы.
1. Составление функциональной спецификации.
Точное и как можно более подробное описание всех функций, которые должна выполнять система.
2. Проектирование системы.
Проектирование всего программного обеспечения, необходимого для выполнения описанных в функциональной спецификации функций.
3. Составление программной спецификации.
Описание и документирование всех программ, интерфейсов между программами и структур данных.
4. Кодирование. Написание отдельных...
Распределение заданий
Распределение заданий должно производиться очень внимательно. Разных людей интересуют разные области разработки программ, поэтому хорошо было бы так распределить работу, чтобы люди выполняли те задания, которые их больше интересуют. При этом надо учитывать опыт каждого сотрудника. Какого рода работой он занимался в прошлом? Задание должно быть таким, чтобы каждый мог применить свой опыт и даже имел некоторую свободу выбора — это позволило бы использовать его наиболее продуктивно. Тогда каждый не только будет стремиться достигнуть поставленных...
Элементарные по Кальмару алгоритмы
Эта работа не столько о конкретных алгоритмах, сколько о том общем, что есть в алгоритмах, которые заведомо находятся в практическом фундаменте науки. Настоящая статьяотражает значительную работу по существенному увеличению прозрачности фундаментальной теории элементарных по Кальмару алгоритмов. При этом пришлось исключить не только значительное количество устаревших результатов, но и некоторые блестящие теоремы, созерцание которых способно нарушить начальное гармоничное представление об основах теории элементарных по Кальмару...
Классическая теория алгоритмов
Классическая теория алгоритмов выделилась в математической логике в основном благодаря доставляемым ею средствам доказательства неразрешимости многих проблем общематематического характера. Значительным дополнительным стимулом для ее развития послужили исследования в области конструктивной математики, предпринятые, в частности, А. А. Марковым, Г. С. Цейтиным, Н. А. Шаниным и другими математиками, включая автора. Среди традиционных определений математического понятия алгоритма имеется большое разнообразие.
Фундаментом теории алгоритмов...
Оценка величины необходимой памяти
В настоящее время задачи, для которых принципиально возможен алгоритм, их решающий, классифицируют по его сложности. Классификация осуществляется в основном с помощью оценки числа необходимых шагов или оценки величины необходимой памяти. Рассматриваются и другие оценки сложности алгоритмов.
Прежде всего отметим, что в качестве нижней оценки времени и памяти ЭВМ итерированная экспонента характеризует задачу как абсолютно нереальную для вычисления ее на ЭВМ для ряда значении параметров.
Еще изобретатель шахмат продемонстрировал, что...
Основные понятия
Приступая к изучению нового для нас языка программирования, мы прежде всего задаемся вопросами: какие конструкции есть в этом языке (какова морфология), как они записываются (каков синтаксис) и что означают (какова семантика). Например, в широко распространенном языке Паскаль имеется около двадцати конструкций (идентификатор, число без знака, присваивание, условный оператор и др.), синтаксис которых обычно задают с помощью граф-схем или порождающих правил, а семантику объясняют на основе той или иной машинно независимой модели вычислений....
Служебные слова
Пусть служебные слова RBLK A,N и WBLK A,N ->-выполняют чтение блока с указанным номером в заданную область оперативной памяти и запись из нее.
Для записи всех измененных буферов во внешнюю память служит слово SAVE-BUFFERS (сохранить буфера).
При исполнении слова SAVE-BUFFERS все буфера остаются приписанными прежним блокам. Слово FLUSH (очистить) переписывает все исправленные блоки во внешнюю память и освобождает буфера. Многие реализации имеют слово EMPTY-BUFFERS (опустошить буфера), которое освобождает буферный пул, не переписывая исправленные блоки.
Внешняя память...
Локальные переменные
Стек данных как универсальное средство для передачи параметров и результатов между форт-словами имеет неоспоримые преимущества. Вместе с тем внутри определения он используется для промежуточных вычислений и размещения значений, которые в них участвуют. Это вызывает определенные трудности для доступа к такому локальному значению, поскольку его положение относительно вершины стека постоянно меняется.
Для упрощения работы желательно закрепить за локальным объектами внутри определения некоторые постоянные имена, через которые и осуществлять...
Понятие алгоритма
Таким образом, понятие алгоритма возникло и используется давно, значительно раньше появления ЭВМ. Тем не менее широким распространением это понятие обязано основополагающей идее — идее автоматизации поведения исполнителя-автомата, реализуемой на основе алгоритма. В ряду всевозможных автоматов ЭВМ является лишь частным (хотя и наиболее впечатляющим) примером такого исполнителя. Задача обучения алгоритмизации заключается в том, чтобы научить составлять записи алгоритмов, причем делать это так, чтобы воображаемый при этом исполнитель...
Запись алгоритма
В данном случае речь фактически идет о том, что запись алгоритма должна быть настолько четкой, настолько полной и продуманной в деталях, чтобы у исполнителя никогда не могло возникать потребности в принятии каких-либо самостоятельных решений, не предусмотренных составителем алгоритма. Говоря иначе, алгоритм не должен оставлять места для произвола исполнителя. Поэтому такие предписания, как, например, Взять две-три ложки сахарного песку, Через несколько минут снять трубку с рычага, Умножить х на одно из двух данных чисел а или 6, не могут...
Ключевое слово
Установка точки осуществляется оператором
PSET (X, Y)
Здесь PSET (pont — точка, set — ставить) — ключевое слово, X, Y — произвольные арифметические выражения. Результатом выполнения оператора является установка точки, координатами которой являются целые части значений X и Y соответственно (т. е. NT (X) и NT (Y)). Пользуясь оператором PSET, можно получать точечные изображения фигур. Так, например, программа по аналогии с программой примера 4.6, использующей оператор PLOT, строит точечную окружность радиуса 50 с центром в точке (120, 90). Оператор GOTO в строке 50 зацикливает...
Множество
Множество — это любой набор объектов одного типа, воспринимаемый как целое. Элементом множества является все, что может быть именем в Паскале. Множества задаются в квадратных скобках или перечислением, или указанием диапазона. Например:
2, 8, 73
5, 9... 14, 19 4
КРАСНЫЙ, ГОЛУБОЙ, ЗЕЛЕНЫЙ, БЕЛЫЙ
Задание множества указанием диапазона включает нижнюю и верхнюю границы значений, разделенных двумя последовательными точками. Над множеством в Паскале можно производить операции присваивания (: = ), отношения (==, Ф, объединения ( + ), пересечения (>Ю, вычитания...
НОД
Тело описанной выше процедуры НОД заключено в специальные скобки НАЧ (начало) и КОН (конец). В теле процедуры обязательно присутствие оператора, выполняющего присваивание результата (или результатов, если их несколько) их носителям, объявленным в заголовке. В данном случае таким оператором является оператор присваивания N:=X. В частном случае процедура может и не иметь параметров.
Вызов процедуры осуществляется с помощью команды, которая составляется из имени процедуры, за которым в круглых скобках указываются фактические параметры, например:
На...
Реализация компилятора
На практике он возникает в тех случаях, когда при помощи рекурсии можно четко описать алгоритм, но основным недостатком является неэффективность такого описания с точки зрения выполнения алгоритма на ЭВМ. Можно возразить, что это скорее относится к способу реализации компилятора, а не к свойствам самого метода, однако справедливость этого возражения не заставит программу работать быстрее Эффективность рекурсии относительно времени и памяти рассматривается в разд. 3.3. Что касается разработки алгоритмов, то, если рекурсивный алгоритм...
Фортран
Так, Фортран, разработанный с целью обеспечения простоты выражения научных формул, дошел к нам из тех времен, когда считалось само собой разумеющимся, что минимизация времени прогона очень важна, потому что процессорное время было главным фактором. Многие современные языки позволяют не хуже и даже лучше, чем Фортран, выражать научные формулы и обрабатывать научные задачи вообще, так что если эти моменты являются основными, то существует лучший выбор. Тем не менее минимизация времени прогона по-прежнему важна (хотя сейчас это имеет меньшее...
Компилятор
Под ними подразумеваются эффективность и объем как компилятора, так и скомпилированного кода. И то и другое, очевидно, в большой степени аппаратурно-зависимо, но могут существовать ограничения, либо налагаемые самой машиной, либо финансовые, либо определяемые временем прохождения задания, которые будут в конкретных случаях устранены другими языками или, по крайней мере, ослаблены ими. Другой параметр — специальные машинные средства, которые могут Вам понадобиться, такие как графопостроитель или устройство микрофильмирования. Может...
Стандарты языков программирования
В предыдущем разделе в качестве одного из критериев выбора языка была выделена возможность переноса законченной программы с машины на машину. Если требуется перенос на машину того же самого типа, то предполагается, что все языки, имеющиеся на Вашей машине, есть и на другой, и проблемы здесь не возникает, хотя существует ряд других проблем, связанных с переносом, которые рассмотрены в разд. 5.3. Если же программа предназначена для переноса на ЭВМ, относящуюся к другому классу, выбор ограничен лишь широко распространенными языками (такими как...
