Структурное программирование

XXII. Основные технологии программирования Модульное программирование

Модульное программирование - метод разработки программ, предполагающий разбиение программы на независимые модули. Разделение большой программы на модули облегчает ее разработку, отладку и сопровождение. Считается, что оптимальный по размерам модуль целиком помещается на экране дисплея.
Заглушка

Заглушка в структурном программировании - процедура, представленная точной спецификацией заголовка и пустым телом. Заглушка позволяет компилировать и выполнять программу в отладочном режиме

Метод восходящего проектирования (Программирование "снизу вверх")

Метод восходящего проектирования - подход, при котором в первую очередь определяются и разрабатываются вспомогательные модули, которые потребуются для проектируемой программы.

Нисходящее программирование (Программирование "сверху вниз")

Нисходящее программирование - методика разработки программ, при которой разработка начинается с определения целей решения проблемы, после чего идет последовательная детализация, заканчивающаяся детальной программой. При этом происходит пошаговое разбиение алгоритма на всё более мелкие части до тех пор, пока получатся такие фрагменты, для которых можно написать конкретные команды.

Структурное программирование - методология и технология разработки программных комплексов, основанная на принципах:
- программирования "сверху-вниз";
- модульного программирования.

При этом логика алгоритма и программы должны использовать три основные структуры: последовательное выполнение, ветвление и повторение.

XXIII. Основные принципы структурного программирования
(программирование без GO TO)

Алгоритм задачи представляется только как композиция трёх базовых типов алгоритмов: линейных, ветвлений и циклов. Эти конструкции могут быть соединены или вложены друг в друга произвольным образом, но никаких других способов управления последовательностью выполнения операций не используется.

В алгоритме задачи выделяются модули. Модуль – это либо логически законченный фрагмент общей задачи, либо часто повторяющийся блок расчётов.

Каждый модуль оформляется по определённым правилам в виде подпрограммы, и в текст основного алгоритма вместо него вставляется короткая инструкция вызова подпрограммы. Когда выполнение программы доходит до этой инструкции, выполняется фрагмент, заложенный в подпрограмму, после чего управление передаётся на команду, следующую за инструкцией вызова подпрограммы.

Различают подпрограммы функции (используется как операнд в выражениях) и процедуры (используется как оператор). Общий вид подпрограммы:

Заголовок: Имя и Формальные параметры
Тело подпрограммы
Признак окончания подпрограммы

В инструкции по вызову указывается имя подпрограммы и фактические параметры, то есть значения формальных параметров, с которыми следует выполнить тело подпрограммы в данном месте.

Пример. Дан массив целых чисел {Ai},i=1, 2, ..., 15. Программа вычисляет произведение сумм некоторых элементов массива А. Так как операции, которые следует выполнить для суммирования, не зависят от конкретных значений используемых чисел, алгоритм суммирования оформлен в виде подпрограммы. Поскольку каждая из сумм, которые входят в конечное произведение, не представляет интереса сама по себе, подпрограмма оформлена по типу подпрограммы-функции.

Функция СУММА(I1,I2)

начало: S=0

начало цикла для I=I1 до I2

S=S+A(i)

конец цикла

СУММА=S

конец функции

начало программы

писать("введите значения массива А")

начало цикла для j=1 до 15

читать А(j)

конец цикла

читать G,W,T,L

Р:= СУММА(G,W)*СУММА(T,L)

писать ("произведение равно",Р:6)

конец программы

В программу введены константы: G=1; W=12;T=8;L=15. Это – фактические параметры, которые надо использовать вместо формальных параметров I1 и I2 при вычислении значения Р. В результате переменная Р примет значение произведения сумм элементов с 1 по 12 и с 8 по 15 из массива А.

 

Разработка программы идёт пошагово, методом сверху-вниз. Сначала пишется текст основной программы, в которой вместо фрагментов, выделенных в подпрограммы, ставят «заглушки». Это подпрограммы, в которых вместо реально нужных операторов ставят сигнальные печати или ввод данных, которые должна была бы сосчитать эта подпрограмма. Таким образом проверяют и отлаживают основной алгоритм. Затем подпрограммы-заглушки по очереди заменяют на нужные подпрограммы, отлаживают и тестируют их. Такая технология облегчает создание программы, уменьшает количество ошибок и облегчает нахождение допущенных ошибок.

Альтернативный способ – метод снизу-вверх: сначала пишут и отлаживают все подпрограммы, потом с их помощью строят, как из кубиков, основную программу.

Основные языки программирования, использующие структурную технологию:

– Ада, Си – языки общего назначения;

– Бейсик (до Visual Basic);

– КОБОЛ – для экономических задач (много операторов, облегчающих манипуляции с файлами);

– Фортран, Паскаль, ПЛ/1 – для вычислительных задач (удобные средства для записи формул).

XXIV. Основные принципы объектно-ориентированного программирования
Объектно-ориентированное программирование
(ООП) применяют при программировании разных манипуляций над объектами (программы управления размерами и положением окон Windows, листами книги Excel, файлами и т. п.).

Основные принципы составления алгоритма решения таких задач:

– Моделируемая система состоит из объектов. Объекты могут быть вложены друг в друга (объект лист Excel – это часть объекта книга Excel).

– Объекты каким-то образом взаимодействуют между собой.

– Каждый объект характеризуется своим состоянием и поведением. Состояние объекта задаётся значением некоторых его свойств (объекты типа «книга Excel» имеют свойства имя, размер, открыта/закрыта и т. п.). Действия, которые можно выполнять над объектом или которые он сам может выполнять, называются методами (объект типа «книга Excel» можно открыть, закрыть, переименовать, перенести в другую папку и т. п.). После каждого действия изменяются какие-то свойства объекта.

Основные термины и понятия:

Класс объектов – шаблон, определяющий основные свойства, методы и события группы объектов, объединяемых в класс.

События – ситуации, в которых надо программировать какой-то отклик объекта (что делать, когда над гиперссылкой или кнопкой расположен курсор, или щёлкает курсор, или происходит двойной щелчок).

Наследование – порождает иерархию объектов. В основном классе (родителе) можно выделять подклассы. Они состоят из объектов, входящих в класс родителя и обладают наряду со всеми его характеристиками дополнительной группой свойств, которых у других объектов класса-родителя нет. Пример: класс-родитель – окно Windows, подклассы – диалоговые окна, окна документов, окна папок. Подклассы окон документов – окна документов Word, окна документов Excel, окна документов Power Point и т. п.

Определение наследования в Интернет-тестах: свойство ООП, которое может быть смоделировано с помощью таксонометрической классификационной схемы (иерархии).

Инкапсуляция – сокрытие деталей программ, создающих и манипулирующих объектами. Создание объектов, манипулирование ими оформляется в виде подпрограмм. Программист указывает в своей программе только то, что и с каким объектом нужно сделать или какой результат нужно получить. То есть объекты рассматриваются как «чёрные ящики». Такой способ упрощает разработку программы и её модификацию.

Полиморфизм –.одно и то же имя может обозначать в разных подклассах одного класса разные методы для выполнения одного и того же типа действий (трансформация объекта: для подкласса овал – один метод (программа), для подкласса прямоугольник – другой.

По другому. Использование одного имени для задания общих для класса действий, что означает способность объектов выбирать внутренний метод, исходя из типа данных.

По другому. Возможность использования разных функций с одним и тем же именем в разных классах.

Основные языки ООП:

– С++ – для системного программирования;

– Java, JavaScript, PHP, Perl – для разработки сценариев в динамических Veb-страницах;

– Simula – первый язык, построенный по принципам ООП;

– Delphi (Object Pascal) – удобен для программирования баз данных.

XXV.Этапы решения задач на компьютере
Постановка задачи:

– сбор информации о задаче;

– описание исходных данных и конечных целей;

– определение формы выдачи результатов.

1. Анализ и исследование модели задачи:

– анализ существующих аналогов;

– анализ технических и программных средств;

– разработка мат. модели;

– разработка структур данных.

2. Разработка алгоритма:

– выбор метода проектирования алгоритма;

– выбор формы записи алгоритма (блок-схема, псевдокод и т.п.);

– выбор тестов и метода тестирования;

– проектирование алгоритма.

3. Программирование:

– выбор языка программирования;

– уточнение способа организации данных;

– запись алгоритма на выбранном языке.

4. Отладка и тестирование:

синтаксическая отладка: исправление ошибок в форме записи конструкций;

отладка семантики и логической структуры (семантика – система правил истолкования отдельных конструкций языка): проверка правильности организации, например, циклов, ветвлений и т. п., соответствия типов переменных в выражениях, логическая структура – правильная последовательность обработки данных;

– тестовые расчёты и анализ результатов тестирования;

– совершенствование программы.

5. Деятельность, направленная на исправление ошибок в программной системе, называется отладкой .Тестирование – прогон отлаженной программы на эталонных вариантах исходных данных, для которых заранее известны результаты.

6. Анализ результатов тестирования и, если нужно, уточнение модели и повторение п.п. 2–5.

7. Сопровождение программы: составление документации по мат. модели, алгоритму, программе, набору тестов, использованию готовой программы и т. п.

 

? Интегрированная система программирования включает среди прочих компоненты:

:#5 текстовый редактор – для создания исходного текста программы;

#5 компилятор и #5интерпретатор – для перевода исходного текста программы в машинный код.

? Система программирования представляет программисту возможность:#5 автоматической сборки разработанных модулей в единый проект

? В состав средств программирования на языках высокого уровня входят:

#5 трансляторы,#5интерпретаторы.

? Интерпретатор: #5 воспринимает исходную программу на исходном языке и выполняет её построчно, не создавая исполняемого модуля.

Исполняемый файл создаётся из исходного текста программы компилятором и предполагает выполнение следующих процессов:

а) компиляция

б) компоновка

 

? Ошибка в форме записи программы приводит к сообщению о синтаксической ошибке:

? На этапе отладки программы:#5 проверяется корректность работы программы.

На этапе тестирования проверяется правильность составления алгоритма и выделения существенных закономерностей в моделируемой системе.

---------------------------------------------------------------------------------------------------------------------------

РАЗДЕЛ 8.
ЛОКАЛЬНЫЕ И ГЛОБАЛЬНЫЕ СЕТИ ЭВМ.
МЕТОДЫ ЗАЩИТЫ ИНФОРМАЦИИ

XXVI. Компоненты вычислительных сетей
Компьютерная сеть
– это два или больше компьютеров, связанных каналами передачи информации.

Виды каналов передачи информации:

специальные кабели (коаксиальный кабель, витая пара – телефонный кабель, оптоволоконный кабель – самая надёжная и быстрая связь);

электромагнитные волны на разных частотах (спутниковая связь, подключение ноутбуков, мобильных телефонов);

Важнейшая характеристика канала – скорость передачи информации. В ЛВС обычно от 10 до 100 Мбит/сек., в крупных сетях – **__________ (чем короче кодировка символов, тем больше скорость передачи информации)

Цель создания сетей – обеспечение совместного доступа к сетевым ресурсам.

Для создания сетей необходимо специальное аппаратное обеспечение (сетевое оборудование) и специальное программное обеспечение (сетевые программные средства).

Виды сетевых ресурсов:

аппаратные (общий принтер, общий жёсткий диск для хранения программ и данных отдельных пользователей);

программные (для выполнения сложных и длительных расчётов можно подключиться к мощной ЭВМ, послать на неё задание на расчёты и исходные данные, и, по окончании расчётов просто получить готовые результаты: аналог химчистки или прачечной);

информационные (всевозможные справочные данные, архивы научных работ, книг и т.п.).

XXVII. Классификация вычислительных сетей

Виды сетей по географическому признаку и размерам:

Локальная (ЛВС или LAN) – сеть предприятия или учреждения, в которой рабочие станции распределены на расстоянии не более 300-500 м.

Региональные и Корпоративные (MAN) – объединяют компьютеры большого региона или филиалы учреждений, разбросанные в пределах города, большого географического региона, страны.

Глобальные (WAN) – объединяют всех абонентов (LAN и MAN) вне зависимости от места их расположения (страны, континента, всей земли – Интернет).

По возможностям передачи сигналов:

узкополосные: канал связи может передавать только один сигнал в любой момент времени (?телефонная линия);

широкополосные: одновременно можно передавать несколько сигналов, используя для каждого свою частоту передачи (кабельное телевидение).

Виды сетей по способу соединения компьютеров (Топология сети – это логический и физический способ соединения компьютеров.) см. далее.

XXVIII. Программное обеспечение вычислительных сетей
Сетевые протоколы
– это наборы правил для обмена информацией в сети и разработки сетевого оборудования. Более подробно их можно определить как стандарты, которые определяют формы представления и способы пересылки разных типов сообщений между компьютерами, а также правила совместной работы различного оборудования в сетях, необходимые при создании этого оборудования.

Совокупность протоколов, которые используют компьютеры при работе в сети, обозначается термином стек. Традиционно стек делится на 7 уровней, функции которых определяются эталонной моделью взаимодействия открытых систем (сетевая модель OSI – Open System Interconnection):

Прикладной уровень (7): совокупность правил для разработки программ-приложений, которые делают запросы к ресурсам, расположенным в сети. В него входит регламентация всех работ, которые связаны с запуском программ пользователя и их выполнением. Примеры протоколов этого уровня: HTTP, SMTP, FTP, DNS, РОР3 ( с помощью этих программ пользователь делает запрос на использование каких- то сетевых ресурсов).

Представительский уровень (6): определяет синтаксис данных, т.е. коды и форматы данных, посылаемых в сеть. Каждая прикладная программа, каждая операционная система имеет свой способ кодировки своих данных и команд. На этом уровне устанавливаются стандартные способы кодировки для информации, которая выходит из локальной сети (аппаратное обеспечение – шлюзы). Примеры протоколов: Х.226

Сеансовый уровень (5): осуществляет установку и поддержку сеанса связи между двумя абонентами. Определяются средства, необходимые для синхронизации и управления обменом данных между сетевыми объектами. Примеры протоколов: NetBEUT, RPC, X.225

Транспортный уровень (4): интерфейс между процессами и сетью, т.е. устанавливает логические каналы между процессами и обеспечивает передачу информационных пакетов, сформированных по правилам сетевого уровня. Примеры протоколов: TCP (Transmission Control Protocol), UDP, NSP, X.224

Сетевой уровень (3): Отвечает за маршрутизацию пакетов и связь между разными сетями. т.е. устанавливает логические каналы между объектами для реализации протоколов транспортного уровня. Примеры протоколов: IP (Internet Protocol), IPX,IDN,X.25

Канальный уровень (2): передача информации по логическому каналу, установленному между двумя ЭВМ, соединёнными физическим каналом. На этом уровне обнаруживаются ошибки передачи пакетов, реализуется алгоритм восстановления информации в случае обнаружения сбоев или потери данных. Детализируются способы осуществления непосредственной связи объектов сетевого уровня. Примеры протоколов: LAP-B, SNAP, HDLC

Физический уровень (1): процедуры управления аппаратурой передачи данных и подключённым к ней каналам связи. Примеры протоколов: Ethernet,Arcnet, Token Ring,

Основной протокол, под управлением которого работает Интернет, – это TCP/IP (Другая редакция: основой построения и функционирования сети Интернет является семейство протоколов ТСР/IP)