
- •1.Общие сведения об эвм
- •2.Мультипрограммная эвм
- •3. Представление info в эвм.
- •4.Состав аппаратных средств пк.
- •5.Программное обеспечение пк.
- •7.Понятие алгоритмического языка.
- •11,Оптимизирующие компиляторы.
- •8.Понятие о структурном подходе разработки алгоритма. Основные структуры алгоритма.
- •9.Основные проблемы, связанные с проектированием диалоговых (интерактивных) систем.
- •10. Элементы технологии программирования.
- •12.Методы структурированного программирования.
- •13.Структурное программирование с точки зрения блок-схем.
- •14.Пошаговая детализация.
- •15.Методы тестирования и отладки программ.
- •16.Модульное построение программы.
- •17.Программный модуль. Этапы обработки программ на эвм.
- •18.Загрузчики.
13.Структурное программирование с точки зрения блок-схем.
Двумя теоретиками, Дж. Бойм и Ф. Якоми, доказано, что любую программу, реализующую соответствующую логику этой программы можно составить только из 3 основных структур: следование, развилка, повторение.
Обозначение обработки.
Это действие, которое необходимо выполнить. Обозначается прямоугольником, в который входит и из которого выходит ровно одна линия управления. Этот прямоугольник называется узлом обработки, или функциональным узлом.
Действие «а», указываемое в этом прямоугольнике может быть отдельным оператором, вызван с возвратом отдельной программы другой управляющей структурой или несколькими управляющими структурами, образуемые подпрограммы.
Обозначение проверки. Определяется символом, который называется придикартным узлом. Он представляет собой ромб, в который входит одна линия управления, а выходит две. «р» обозначают условие, которое необходимо проверить. В результате проверки выбирается один из выходов: истина или ложь.
Обозначение слияние. Это кружок, где соединяются пути управления. В этом узле ничего не делается: это соединение с двумя входами и одним выходом.
Соединительные линии. Изображают передачи управления от одного из перечисленных выше обозначений к другим в направлении, указанном стрелкой.
Следование. Указывает, что управление передается от одного обозначения обработки к следующему.
Развилка. Если/то/иначе – структура, которая служит для выбора одной из двух альтернатив.
Сначала вычисляется логическое выражение «р», которое может быть либо отдельной переменной, принадлежащей значению «истина»/ «ложь», либо комбинацией этой переменной. Развилка полностью реализует структуру если/то/иначе.
Цикл «пока»
Служит для изображения повторений или циклов, которые встречаются почти во всех программах.
В этой структуре управление проходит через узел слияния к обозначению проверки. Здесь осуществляется логическое выражение «р». Если оно истинно, то выполняется действие «а» и слова «р». Если оно ложь, то «а» не выполняется. Т.к. выражение «р» вычисляется до начала выполнения действия, может случится так, что это действие может не выполниться ни разу. Если «р» содержит управляемую переменную, начальное значение которого было присвоено до начала цикла, то при выполнении действия «а», то значение переменной изменяется.
Цикл «do»
Здесь в зависимости от предшествующей ситуации. Проверка осуществляется после выполнения «а», а в цикле «пока» перед его выполнением. Таким образом, цикл «do» независимо от значения «р» будет выполнен хотя бы 1 раз. Цикл завершается когда переменная «р» становится истинной, а в цикле «пока» - когда ложная величина.
Выбор.
Является обобщением развилки.
Здесь, как в если/то/иначе пути, после разных действий сходятся в одной точке. Управление от точки входа всегда попадает в точку выхода. Выбор же пути полностью определяется проверкой.
14.Пошаговая детализация.
Очень известный метод, позволяющий детализировать (уточнять) программу. Каждый шаг этого процесса включает в себя: разложение функции модуля на подфункции. В конечном итоге эти подфункции превращаются в шаги нужной программы. Этот процесс подобен нисходящему проектированию программы, при котором схема иерархии используется как средство разложения программы на составляющие ее модули. Схема иерархии показывает функции и их подчинение, но не проявляет внутреннюю логику каждого модуля. Пошаговая детализация применяется для декомпозиции функции каждого модуля в соответствии с внутренней логикой, необходимой для выполнения модулем этой функции. Термин пошаговой детализации подразумевает уточнение на каждом шаге программы, причем первый шаг может быть очень общим (сложной функцией). Дальнейшее разложение первого общего шага превращ в дальн. второго или более низкого уровня, заставляя более точно опред логику модуля, что является детализацией формулировки задач. Детализация отдельных программных модулей связана с функциональными расширениями и графическим изображением следующим образом:Справа от уточняемой строки необходимо нарисовать скобку, а затем за ней помещаются детальные строки и т.д. При использовании псевдокода для пошаговой детализации на каждом новом проходе логика работы модуля описывается все точнее. Когда каждое предложение псевдокода непосредственно переводятся в один или два предложения языка программирования, то можно считать, что процесс пошаговой детализации завершен. Таким образом, предложение на псевдокоде на самом первом уровне является очень общим (обработать запрос). Промежуточный уровень детализации - обновить основную запись; самый нижний уровень – увеличить счетчик записи.
Блок-схемы для пошаговой детализации. Являются универсальным инструментом программиста и ими также можно пользоваться для пошаговой детализации. Однако, если алгоритм является большим и разветвленным, то тогда он заменяется на псевдокод.
Правила детализации.
Существует несколько общих принципов, которых следует придерживаться независимо от того, применяете ли вы блок-схемы или псевдокод для метода пошаговой детализации.
1.Не спешите заниматься мелочами (не вдавайтесь в детали слишком рано, концентрируйте свое внимание на самом существенном).
2.Тщательно взвешивайте принимаемые решения (пытайтесь понять последствия того, что делается вами).
3.Внимательно следите за данными.
4.Будьте готовы отменить ранее принятые решения.
Сегментирование – программные модули, которые очень большие (100-200 операторов) могут быть разбиты на сегменты.
Сегмент – это логическая и физическая часть модуля. Логическая часть – это подфункция функции, физическая часть ограничивается числом строк исходного текста, которое помещается на 1 странице (50-60 строк).
Сегментирование – это способ разумной организации листинга программы. Этот способ характеризуется тем, что логика управления концентрируется в сегментах более высокого уровня, а менее важные детали переносятся в сегменты нижнего уровня. Такой подход упрощает программирование и сегментирование модуля, облегчает чтение и понимание его, а также упрощает внесение изменений, которые могут потребоваться в будущем. Каждый сегмент должен быть простой программой и возвращать управление своему «старшему» сегменту. Это позволяет читать и понимать любой сегмент высокого уровня без изучения сегментов более низкого уровня.