билеты по инфе (1005104), страница 4
Текст из файла (страница 4)
- их вложением друг в друга − образованием вложенных конструкций.
25«Восходящий» и «нисходящий» способы проектирования программ. |
26 Алгоритм.Схема алгоритма
Алгоритм – это полное и точное описание на некотором языке конечной последовательности правил, указывающих исполнителю действия, которые он должен выполнить, чтобы за конечное время перейти от (варьируемых) исходных данных к конечному результату.
Схема алгоритма – это графический способ его представления с элементами словесной записи. Каждое предписание алгоритма изображается с помощью плоской геометрической фигуры – блока. Отсюда название: блок-схема. Переходы от предписания к предписанию изображаются линиями связи – линиями потоков информации, а направление переходов – стрелками. Различным по типу выполняемых действий блокам соответствуют различные геометрические фигуры. Приняты определенные стандарты (ГОСТ 19.701-90) графических изображений блоков (таблица). 1. Первым свойством алгоритма является дискретный (пошаговый) характер
определяемого им процесса. Возникающая в результате такого разбиения запись
алгоритма представляет собой упорядоченную последовательность отдельных
предписаний (директив, команд), образующих прерывную/дискретную структуру
алгоритма: только выполнив требования одного предписания можно приступить
к исполнению следующего.
2. Исполнитель может выполнить алгоритм, если он ему понятен, то есть записан
на понятном ему языке и содержит предписания, которые исполнитель может выполнить.
Набор действий, которые могут быть выполнены исполнителем, называется системой
команд исполнителя. Алгоритм не должен содержать описания действий, не входящих в
систему команд исполнителя, то есть своей структурой команд и формой записи алгоритм
должен быть ориентирован на конкретного исполнителя.
3. Алгоритмы, предназначенные для исполнения техническим устройством, не
должны содержать предписаний, приводящих к неоднозначным действиям. Алгоритм
рассчитан на чисто механическое исполнение, и если применять его повторно к одним и
тем же исходным данным, то всегда должен получаться один и тот же результат; при этом
и промежуточные результаты, полученные после соответствующих шагов
алгоритмического процесса, тоже должны быть одинаковыми. Это свойство
определенности и однозначности – детерминированности алгоритма позволяет
использовать в качестве исполнителя специальные машины-автоматы.
4. Основополагающим свойством алгоритма является его массовость,
применимость к некоторому классу объектов, возможность получения результата при
различных исходных данных на некоторой области допустимых значений. Например,
исходными данными в алгоритмах аль-Хорезми могут быть любые пары десятичных
чисел. Конечно, его способ не всегда самый рациональный по сравнению с известными
приемами быстрого счета. Но смысл массовости алгоритма состоит как раз в том, что он
49
одинаково пригоден для всех случаев, требует лишь механического выполнения цепочки
простых действий и при этом исполнителю нет нужды в затратах творческой энергии.
5. Цель выполнения алгоритма – получение конечного результата посредством
выполнения указанных преобразований над исходными данными. В алгоритмах аль-
Хорезми исходными данными и результатом являлись числа. Причем при точном
исполнении всех предписаний алгоритмический процесс должен заканчиваться за
конечное число шагов. Это обязательное требование к алгоритмам – требование их
результативности или конечности.
Схема алгоритма – это графический способ его представления с элементами
словесной записи. Каждое предписание алгоритма изображается с помощью плоской
геометрической фигуры – блока. Отсюда название: блок-схема. Переходы от предписания
к предписанию изображаются линиями связи – линиями потоков информации, а
направление переходов – стрелками. Различным по типу выполняемых действий блокам
соответствуют различные геометрические фигуры. Приняты определенные стандарты
графических изображений блоков (таблица).
Рассмотрим общие правила построения схем алгоритмов.
1. Для конкретизации содержания блока и уточнения выполняемого действия
внутри блока помещаются краткие пояснения – словесные записи с элементами
общепринятой математической символики.
2. Основное направление потока информации в схемах может не отмечаться
стрелками. Основное направление – сверху вниз и слева направо. Если очередность
выполнения блоков не соответствует этому направлению, то возможно применение
стрелок.
3. По отношению к блоку линии могут быть входящими и выходящими.
Количество входящих линий принципиально не ограничено. Количество выходящих
линий регламентировано и зависит от типа блока. Например, логический блок должен
иметь не менее двух выходящих линий, каждая из которых соответствует одному из
возможных направлений вычислений. Блок модификации должен иметь две выходящие
линии, одна соответствует повторению цикла, вторая – его окончанию.
4. Допускается разрывать линии потока информации, размещая на обоих концах
разрыва специальный символ «соединитель». В пределах одной страницы используется
символ обычного соединителя, во внутреннем поле которого помещается маркировка
разрыва либо отдельной буквой, либо буквенно-цифровой координатой блока, к которому
подходит линия потока. Если схема располагается на нескольких листах, переход линий
потока с одного листа на другой обозначается с помощью символа «межстраничный
соединитель». При этом на листе с блоком-источником соединитель содержит номер
листа и координаты блока-приемника, а на листе с блоком-приемником – номер листа и
координаты блока-источника.
5. Нумерация блоков осуществляется либо в левом верхнем углу блока в разрыве
его контура, либо рядом слева от блока. Принцип нумерации может быть различным,
наиболее простой – сквозная нумерация. Блоки начала и конца не нумеруются.
27,28,29(тестирование и отладка, типы ошибок, методы получения доп.инфы о процессе вып.проги)
Компилятор анализирует и преобразует исходный текст в объектный код (промежуточное состояние программы в относительных адресах и с неразрешенными внешними ссылками) с использованием всей логической структуры программы. Затем программа, представленная в объектном коде, обрабатывается служебной программой – компоновщиком, который осуществляет подключение внешних подпрограмм/разрешение внешних ссылок и выполняет дальнейший перевод программы пользователя в коды машины (в абсолютный/загрузочный код – с абсолютной адресацией машинных команд).
Интерпретатор сразу производит анализ, перевод (в машинный код) и выполнение программы строка за строкой.
Отладка программы – это процесс поиска и устранения ошибок.
Виды ошибок: синтаксические ошибки, ошибки времени выполнения, логических ошибок в алгоритме, т. е. алгоритмических или семантических ошибок.
Тестирование программы – это выполнение программы на наборах исходных данных (тестах), для которых известны результаты, полученные другим методом. Система тестов подбирается таким образом, чтобы проверить все возможные режимы работы программы и локализовать ошибку.
При тестировании программы простой и действенный метод дополнительного контроля над ходом её выполнения – получение контрольных точек, т. е. контрольный вывод промежуточных результатов.
В ходе отладки программа должна быть проверена в двух измерениях: в пространстве и во времени. Первое представляет собой контроль содержимого памяти в конкретные моменты работы программы, отслеживание текущих значений всех или выбранных групп переменных, проверку на соответствие их значений декларированным диапазонам (типам). Второе – это отслеживание хода выполнения алгоритма для проверки правильности заданной последовательности операций и передач управления при различных значениях параметров. Самым распространенным и полезным приемом отладки, позволяющим объединить обе формы контроля, являются отчеты о трассировке. Трассировка программы – это регистрация логического пути выполнения программы – последовательности выполнения ее операторов/блоков с контрольной выдачей информации о результатах каждого шага – обо всех изменениях значений рабочих переменных и параметров связи. Сам принцип трассировки – слишком общий. На практике реализуют трассировку программы в том или ином объеме, используя различные способы и средства отладки.
Самый простой способ отладки – это расстановка в тексте программы отладочных печатей промежуточных результатов вычислений, позволяющих проследить логический и арифметический следы программы, т. е. каким образом она выполнялась и что она вычисляла. Отладочные печати ставятся в узловых/ключевых точках программы, позволяющих контролировать ошибки ввода (эхо-печать введенных данных), результаты вычислительных операций и логику работы программы или отдельных ее частей. Отладочные операторы оформляются в отдельные строки, выделяются особым образом (например, сдвигом влево или вправо) и в зависимости от цели контроля могут содержать вывод значений контролируемых переменных, проверку условий или идентифицирующее сообщение (комментарий) о прохождении заданной точки программы, о начале или завершении работы определенного участка/блока. Средства для отладки могут быть вставлены в программу еще при ее разработке. В ходе отладки количество и место расположения отладочных операторов меняется, но их лучше не удалять, а превращать в комментарии. Такой способ отладки весьма трудоемок и может сам служить источником ошибок.
Процесс отладки значительно облегчается, если использовать для этого системные средства отладки – специальные программы-отладчики, имеющиеся в программном обеспечении компьютера.
Встроенный отладчик среды Delphi или Турбо Паскаля (Debugger) позволяет контролировать ход выполнения программы – выполнять трассировку программы без изменения самой программы с помощью следующих действий:
-
выполнения программы построчно/по шагам;
-
остановки выполнения программы в заданной точке останова;
-
перезапуска программы, не закончив ее выполнение;
-
назначения и модификации значений любых переменных и параметров программы, а также получения некоторых дополнительных сведений о программе, например списка активных процедур.
Эти возможности позволяют, отследив выполнение каждого оператора/операции, определить местоположение ошибки и понять ее причину. (Далее рассмотрим все эти управляющие средства.)
Автономный отладчик (Turbo Debugger – файл td.exe) предоставляет большие возможности: позволяет осуществить трассировку программы/блока на уровне ассемблерных и машинных инструкций, просмотреть содержимое/дамп памяти и пр., что требует особого режима компиляции исходного текста. Использование дополнительных возможностей автономного отладчика целесообразно при отладке и тестировании больших по объему и сложных программ и при наличии у программиста достаточно высокого уровня квалификации. (В данном пособии автономные средства отладки не рассматриваются.)
28.Виды ошибок в программах
В зависимости от этапа разработки ПО, на котором выявляется ошибка выделяют:
► Ошибка периода компиляции - это синтаксические ошибки
► предупреждения (warnings) компилятора
► ошибки времени исполнения, смысловые ошибки — они могут проявляться только при особых, заранее неизвестн
30 Назначение и типы вычислительных комплексов
Вычислительный комплекс – это совокупность узлов, соединенных с помощью каналов связи в единую систему.
Узел – любое устройство, непосредственно подключенное к передающей среде сети по каналам связи (например, другие ЭВМ или периферийные устройства типа принтеров, сканеров и проч.). У узла в сети минимум 2 адреса – физический (для оборудования) и логический (для пользователя). Узлы обмениваются сообщениями (целостными последовательностями данных).
Вычислительные сети используются для:
-
Предоставления доступа к программам, оборудованию и данным для любого пользователя сети (совместное использование ресурсов).
-
Обеспечения высокой надежности хранения данных в нескольких местах, что позволяет уменьшить возможность потери информации.
-
Обработки данных, хранящихся в сети.
-
Передачи данных между удаленными друг от друга пользователями.
Классификация сетей по виду технологии передачи:
-
Широковещательные (общий канал связи, который используется всем узлами; сообщения передаются сразу всем пользователям). Пример: телевидение.
-
Последовательная (сообщение передается только по одному узлу). Пример: электронная почта.
Сети по размеру бывают:
-
Локальные (соединяют пользователей в одном здании или на одной территории). Пример: сеть в учебном кабинете.
-
Региональные (соединяют несколько предприятий или город). Пример: сеть кабельного телевидения.
-
Глобальные (охватывают большую территорию, такую как страну или целы континент и представляют собой совокупность сетей меньшего размера). Пример: Интернет.
По иерархии (по принципу построения) сети классифицируются на:
-
Одноранговые (соединяют равноправные узлы; в такой сети не более 10 узлов).
-
Сети на основе выделенного сервера (имеют спец. узел – сервер, который хранит данные и раздает их другим узлам по запросам).
31. Назначение и типы компьютерных сетей.
Вычислительная сеть (информационно-вычислительная сеть) – это совокупность узлов, соединенных с помощью каналов связи в единую систему.
Узел – это любое устройство, непосредственно подключенное к передающей среде сети. Узлами могут быть не только ЭВМ, но и сетевые периферийные устройства, например, принтеры.
Вычислительные сети имеют следующие характеристики.
1. Производительность – это среднее количество запросов пользователей сети, исполняемых за единицу времени. Производительность зависит от времени реакции системы на запрос пользователя. Это время складывается из трех составляющих:
- времени передачи запроса от пользователя к узлу сети, ответственному за его исполнение;
- времени выполнения запроса в этом узле;
- времени передачи ответа на запрос пользователю.
2. Пропускная способность – это объем данных, передаваемых через сеть ее сегмент за единицу времени (трафик).
3. Надежность – это среднее время наработки на отказ.
4. Безопасность – это способность сети обеспечить защиту информации от несанкционированного доступа.
5. Масштабируемость – это возможность расширения сети без заметного снижения ее производительности.
6. Универсальность сети – это возможность подключения к сети разнообразного технического оборудования и программного обеспечения от разных производителей.
Вычислительные сети используются в следующих целях:
1) предоставление доступа к программам, оборудованию и данным для любого пользователя сети; эта цель называется совместным использованием ресурсов;
2) обеспечение высокой надежности хранения источников информации; хранение данных в нескольких местах позволяет избежать их потерю, в случае их удаления в одном из мест;
3) обработка данных, хранящихся в сети;
4) передача данных между удаленными друг от друга пользователями.