Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции

.pdf
Скачиваний:
48
Добавлен:
09.02.2015
Размер:
1.45 Mб
Скачать

51

Наименование

символа

Процесс (вычислительн ый блок)

Решение (логический блок)

Модификация (заголовок цикла)

Пуск-останов (начало-конец)

Предопределен ный процесс (вызов подпрограммы

)

Ввод/вывод

Соединитель

Межстраничн

ый

соединитель

Обозначение и размеры

a

b

0,25a

a0,5

0,15a

0,25a

a b

0,5 a

0,5 a

0,6 a

0,2 a

Функция

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

Выбор направления выполнения алгоритма в зависимости от некоторых условий

Выполнение операций по управлению циклом – повторением команды или группы команд алгоритма

Начало или конец выполнения программы или подпрограммы

Вызов и использование ранее созданных и отдельно описанных алгоритмов (подпрограмм)

Общее обозначение ввода или вывода данных в алгоритме безотносительно к внешнему устройству

Указание прерванной связи между блокам в пределах одной страницы

Указание прерванной связи между блоками, расположенными на разных листах

2. Основное направление потока информации в схемах может не отмечаться стрелками. Основное направление – сверху вниз и слева направо. Если очередность выполнения блоков не соответствует этому направлению, то возможно применение стрелок.

52

 

 

 

 

 

 

 

A

 

8

 

 

2

 

7

Max

8 A := B + 2

A := B + 2

 

Ввод

 

 

 

C := A3

 

 

A, B

 

(A, B)

9

 

 

 

 

A

8

Вывод

C:= A3

 

 

 

 

 

 

 

 

 

 

 

 

Z

 

а

 

 

 

 

в

 

 

 

 

 

 

 

 

10

Да

B2

Нет

 

 

D2 D := A + C

 

D2

 

 

 

 

 

A > B

 

 

 

 

 

 

 

 

C3

 

 

12

E3

Нет

 

 

A := B

 

 

A > B

 

 

 

 

E3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

B4

Вывод

 

 

 

Лист 10

 

Лист 12

 

A, B

 

 

 

 

 

 

 

 

б

 

 

 

г

 

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

4.Допускается разрывать линии потока информации, размещая на обоих концах разрыва специальный символ «соединитель». В пределах одной страницы используется символ обычного соединителя, во внутреннем поле которого помещается маркировка разрыва либо отдельной буквой, либо буквенно-цифровой координатой блока, к которому подходит линия потока. Если схема располагается на нескольких листах, переход линий потока с одного листа на другой обозначается с помощью символа «межстраничный соединитель». При этом на листе с блоком-источником соединитель содержит номер листа и координаты блока-приемника, а на листе с блоком-приемником – номер листа и координаты блока-источника.

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

6.Для блоков приняты следующие размеры: а = 10, 15, 20 мм; b = 1,5а. Если необходимо увеличить размер блока, то допускается увеличение на число, кратное пяти. Необходимо выдерживать минимальное расстояние 3 мм между параллельными линиями потоков и 5 мм между остальными символами.

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

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

Блок-схемы не накладывают никаких ограничений на степень детализации в изображении алгоритма. Степень детализации определяется программистом. Однако следует помнить, что схемы общего характера мало информативны, а излишне подробные схемы проигрывают в наглядности. При разработке сложных алгоритмов, чтобы понять сущность выполняемых действий и выявить основные связи, алгоритм записывается в виде общей схемы, состоящей из крупных блоков. Блоки соответствуют основным шагам алгоритма (вводу данных, обработке, выводу данных). Затем крупные блоки разбивают на более мелкие, составляя более детальные схемы, позволяющие проверить их логическую правильность.

53

5.5. Технология разработки алгоритмов

Опыт практической алгоритмизации и программирования привел к формированию неких общих принципов и методов проектирования, разработки и оформления алгоритмов.

Какими качествами должен обладать хороший алгоритм?

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

По своей сути структурный подход есть отказ от беспорядочного стиля в алгоритмизации и программировании (в частности, отказ от оператора goto) и определение ограниченного числа стандартных приемов построения легко читаемых алгоритмов и программ с ясно выраженной структурой. Теоретическим фундаментом этого подхода является теорема о структурировании, из которой следует, что алгоритм решения любой практически вычислимой задачи может быть представлен с использованием трех элементарных базисных управляющих структур: а) структуры следования или последовательности; б) структуры ветвления; в) структуры цикла с предусловием (см. Ошибка! Источник ссылки не найден.унок, где P – условие, S – оператор).

 

 

 

 

Да

 

 

Нет

S1

 

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S1

 

 

S2

S2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

б

P

S

в

Базисные управляющие структуры

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

Ошибка! Источник ссылки не найден.унок).

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

54

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в

г

 

Дополнительные управляющие структуры

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

-их последовательным соединением образованием последовательных конструкций;

-их вложением друг в друга образованием вложенных конструкций.

5.6. Разработка программы

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

машину и последующий перевод на машинный язык (в коды машины).

Язык программирования это строго формализованный язык для описания процесса решения задачи на ЭВМ, представляет собой совокупность ограниченного набора символов и строгих правил их использования. Составленная программа вводится в

ЭВМ и затем автоматически переводится на язык машины с помощью специальных программных средств, позволяющих автоматизировать этот процесс. Перевод – "трансляция" исходного текста программы выполняется служебной программой – транслятором, который осуществляет синтаксический контроль текста программы и последующий его перевод.

Трансляторы могут быть компилирующего типа – компиляторы и интерпретирующего типа – интерпретаторы.

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

55

подпрограмм/разрешение внешних ссылок и выполняет дальнейший перевод программы пользователя в коды машины (в абсолютный/загрузочный код – с абсолютной адресацией машинных команд). Программа в абсолютном коде может быть сохранена (в .exe-файле) и выполнена на компьютере. Загрузка программы из .exe-файла в память машины для её выполнения осуществляется служебной программой загрузчик.

Интерпретатор сразу производит анализ, перевод (в машинный код) и выполнение программы строка за строкой. Поэтому интерпретатор должен находиться в оперативной памяти в течение всего времени выполнения программы пользователя. При интерпретации скорость выполнения программы существенно снижается, однако весь процесс прохождения программы на ЭВМ упрощается и имеется возможность организации диалогового (интерактивного ) режима отладки и выполнения программы.

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

Язык программирования Паскаль был создан профессором, директором института информатики Швейцарской высшей политехнической школы г. Цюриха Никлаусом Виртом, в 1968 г. впервые опубликовано предварительное описание языка, а в 1970 г. представлен компилятор. Язык назван в честь известного математика Блеза Паскаля (1623

– 1662 г.г.), автора первой механической вычислительной сумматорной машины. Язык Паскаль был создан автором специально для обучения дисциплине программирования в высшей школе как язык поддержки технологии структурного программирования и средство формирования у обучаемого определенного стиля и практических навыков программирования. Основной тезис его разработки: «язык должен быть очевидным и естественным отражением фундаментальных и наиболее важных концепций алгоритмов». Широкое распространение языка Паскаль, его современных диалектов, свидетельствует о его практической ценности в различных сферах применения и, прежде всего, в сфере начального обучения программированию и формирования профессиональных навыков будущего специалиста в области IT-технологий.

5.7. Отладка и тестирование программы

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

Ошибочные ситуации могут возникнуть и при выполнении программы, например, деление на нуль или извлечение корня квадратного из отрицательного числа. Такие ошибки называются ошибками времени выполнения.

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

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

а) проверить все возможные режимы работы программы;

56

б) по возможности, локализовать ошибку.

При тестировании программы простой и действенный метод дополнительного контроля над ходом её выполнения – получение контрольных точек, т. е. контрольный вывод промежуточных результатов.

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

Для сложных по структуре программ плохо спланированные процессы алгоритмизации и программирования приводят к ошибкам, которые могут быть обнаружены лишь после многократных проверок, и процесс отладки и тестирования может потребовать значительно больше машинного времени, чем собственно само решение задачи на ЭВМ.

57

Глава 6. Лекция 6

6.1. Вычислительные сети

Вычислительная сеть (информационно-вычислительная сеть) – это совокупность узлов, соединенных с помощью каналов связи в единую систему.

Каналы связи

Узлы

Структура вычислительной сети

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

Каждый узел в сети имеет минимум два адреса: физический, используемый оборудованием, и логический, используемый пользователями и приложениями.

Узлы обмениваются сообщениями. Здесь сообщение – это целостная последовательность данных, передаваемых по сети.

Отдельные части сети называются сегментами.

Передающая среда сети (канал связи) определяет, как будут передаваться сообщения по сети. Примерами передающих сред являются кабельные, радио-, спутниковые каналы.

Вычислительные сети имеют следующие характеристики.

1.Производительность – это среднее количество запросов пользователей сети, исполняемых за единицу времени. Производительность зависит от времени реакции системы на запрос пользователя. Это время складывается из трех составляющих:

- времени передачи запроса от пользователя к узлу сети, ответственному за его исполнение;

- времени выполнения запроса в этом узле; - времени передачи ответа на запрос пользователю.

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

3.Надежность – это среднее время наработки на отказ.

4.Безопасность – это способность сети обеспечить защиту информации от несанкционированного доступа.

5.Масштабируемость – это возможность расширения сети без заметного снижения ее производительности.

6.Универсальность сети – это возможность подключения к сети разнообразного технического оборудования и программного обеспечения от разных производителей.

58

Вычислительные сети используются в следующих целях:

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

2)обеспечение высокой надежности хранения источников информации; хранение данных в нескольких местах позволяет избежать их потерю, в случае их удаления в одном из мест;

3)обработка данных, хранящихся в сети;

4)передача данных между удаленными друг от друга пользователями.

По виду технологии передачи вычислительные сети делятся на следующие типы:

-широковещательные сети обладают общим каналом связи, совместно используемым всеми узлами; сообщения передаются всем узлам; примером широковещательной сети является телевидение;

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

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

По размеру сети можно подразделить на следующие типы:

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

-региональные сети объединяют несколько предприятий или город; примером сетей такого типа является сеть кабельного телевидения;

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

По принципу построения сети делятся на следующие типы:

-одноранговые сети объединяют равноправные узлы; такие сети объединяют не более 10 узлов;

-сети на основе выделенного сервера имеют специальный узел – вычислительную машину (сервер), предназначенную для хранения основных данных сети и предоставления этих данных узлам (клиентам) по запросу.

6.2. Модель взаимодействия открытых систем

Для описания общей модели взаимодействие открытых систем используется эталонная модель OSI (Open System Interconnection). Модель OSI состоит из 7 уровней (от низших к высшим):

1)физический;

2)канальный;

3)сетевой;

4)транспортный;

5)сеансовый;

6)представительский;

7)прикладной.

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

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

59

Передача данных

Прикладной

Представительский

Сеансовый

Транспортный

Сетевой

Канальный

Физический

данных Прием

Уровни модели взаимодействия открытых систем

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

Рассмотрим задачи каждого из уровней модели OSI.

1-й уровень – физический. Самый низший уровень модели OSI. Основной задачей физического уровня является управление аппаратурой передачи данных и подключенным к ней каналом связи. На этом уровне формируются сигналы, которые передают данные в виде потока бит по передающей среде.

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

3-й уровень – сетевой. Отвечает за адресацию сообщений и перевод логических адресов в физические. Этот уровень разрешает проблемы, связанные с разными способами адресации и разными протоколами при переходе пакетов из одной сети в другую, позволяя объединять разнородные сети.

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

5-й уровень – сеансовый. Позволяет двум процессам (например, приложениям) разных узлов устанавливать, использовать и завершать соединение, называемое сеансом. Этот уровень управляет передачей между двумя узлами и определяет, какая из сторон, когда и как долго должна осуществлять передачу.

6-й уровень – представительский. На этом уровне определяется формат, используемый для обмена данными между узлами. Уровень отвечает за преобразование, кодирование и сжатие данных.

7-й уровень – прикладной. Предоставляет доступ прикладным процессам к сетевым службам. Этот уровень управляет общим доступом к сети.

6.3. Сетевые протоколы

Протоколы – это соглашение о формате и правилах передачи данных по сети. Протоколы обладают следующими свойствами:

-протоколы работают на разных уровнях модели OSI, поэтому функции протокола определяются уровнем, на котором он работает;

-несколько протоколов могут работать совместно, в этом случае они образуют

стек или набор протоколов разных уровней модель OSI.

60

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

-разбивает данные на пакеты;

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

-передает пакеты в сеть через сетевой адаптер.

Узел-получатель выполняет шаги в обратной последовательности:

-принимает пакеты из сети через сетевой адаптер;

-проверяет правильность передачи данных и удаляет служебную информацию из

пакетов;

-объединяет пакеты в исходный блок данных.

6.4. Топологии вычислительных сетей

Вычислительные машины, объединенные в локальную сеть, физически могут располагаться различным образом. Однако порядок их подсоединения к сети определяется топологией – усредненной геометрической схемой соединений узлов сети.

Наиболее распространенными топологиями локальных сетей, в которых передающей средой является кабель, являются кольцо, шина, звезда.

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

Топология кольцо

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

Топология шина представляет собой последовательное соединение узлов между собой. Данные распространяются по шине в обе стороны. В каждый момент времени передачу может вести только один узел, поэтому производительность сети зависит только от количества узлов в сети. Сообщение поступает на все узлы, но принимает его только тот узел, которому оно адресовано. Узлы не перемещают сообщение, поэтому выход из строя одного узла не приводит к нарушению функционирования сети.

Топология шина

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]