авторефераты диссертаций БЕСПЛАТНАЯ БИБЛИОТЕКА РОССИИ

КОНФЕРЕНЦИИ, КНИГИ, ПОСОБИЯ, НАУЧНЫЕ ИЗДАНИЯ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ


Pages:     | 1 | 2 || 4 |

«МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ УРАЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ...»

-- [ Страница 3 ] --

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

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

Как видно из примеров, один и тот же объект, возможно, изучать, применяя и статическую и динамическую модели.

3. Классификация по способу представления Материальные и информационные модели Модели Материальные Информационные Вербальные Знаковые Компьютерные Некомпьютерные Материальные модели иначе можно назвать предметными, физическими. Они воспроизводят геометрические и физические свойства оригинала и всегда имеют реальное воплощение.

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

Материальные модели — это, к примеру, чучела птиц в кабинете биологии, карты при изучении истории и географии, схемы солнечной системы и звездного неба на уроках астрономии, макет многоступенчатой ракеты и еще многое другое.

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

Информационная модель – совокупность информации, характеризующая свойства и состояние объекта, процесса, явления, а также взаимосвязь с внешним миром.

Знаковые и вербальные информационные модели К информационным моделям можно отнести вербальные (от лат. «verbalize» — устный) модели, полученные в результате раздумий, умозаключений. Они могут так и остаться мысленными или быть выражены словесно. Примером такой модели может стать наше поведение при переходе улицы. Человек анализирует ситуацию на дороге (что показывает светофор, как далеко находятся машины, с какой скоростью они движутся и т. п.) и вырабатывает свою модель поведения. Если ситуация смоделирована правильно, то переход будет безопасным, если нет, то может произойти авария. К таким моделям можно отнести и идею, возникшую у изобретателя, и музыкальную тему, промелькнувшую в голове композитора, и рифму, прозвучавшую пока еще в сознании поэта.

Вербальная модель – информационная модель в мысленной или разговорной форме.

Знаковая модель – информационная модель, выраженная специальными знаками, т. е.

средствами любого формального языка.

Знаковые модели окружают нас повсюду. Это рисунки, тексты, графики и схемы...

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

По форме представления можно выделить следующие виды информационных моделей:

геометрические модели — графические формы и объемные конструкции;

словесные модели — устные и письменные описания с использованием иллюстраций;

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

структурные модели — схемы, графики, таблицы и т. п.;

логические модели — модели, в которых представлены различные варианты выбора действий на основе умозаключений и анализа условий;

специальные модели — ноты, химические формулы и т. п.;

компьютерные и некомпьютерные модели.

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

4. Классификации информационных знаковых моделей: по способу реализации:

компьютерные и некомпьютерные модели.

Компьютерная модель – модель, реализованная средствами программной среды.

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

Модели Программные средства Тексты Текстовый редактор Рисунки Графический редактор Таблицы, графики, диаграммы Электронные таблицы Алгоритмы (алгоритм является Процедурные языки динамической моделью решения программирования (Бейсик, Паскаль задачи) и др.) Технология моделирования Управление компьютерным экспериментом происходит обычно в форме диалога человека и компьютера.

Анализ результатов моделирования.

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

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

Формальная и неформальная постановка задачи, переход от реальной задачи к информационной модели.

Человек издавна использует моделирование для исследования объектов, процессов, явлений (в дальнейшем все это будем называть объектами моделирования) в различных областях. Результаты этих исследований служат для определения и улучшения характеристик реальных объектов и процессов;

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

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

Может возникнуть вопрос, почему бы не исследовать сам оригинал, зачем создавать его модель?

1. В реальном времени оригинал (прототип) может уже не существовать или его нет в действительности. Для моделирования время не помеха.

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

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

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

3. Исследуемый объект либо очень велик (модель Солнечной системы), либо очень мал (модель атома), 4. Процесс протекает очень быстро (модель двигателя внутреннего сгорания) или очень медленно (геологические модели) 5. Исследование объекта может привести к его разрушению (модель самолета) Первым этапом любого исследования является постановка задачи, которая определяется заданной целью.

Задача формулируется на обычном языке. По характеру постановки все задачи можно разделить на две основные группы. К первой группе можно отнести задачи, в которых требуется исследовать, как изменятся характеристики объекта при некотором воздействии на него, «что будет, если?…». Вторая группа задач: какое надо произвести воздействие на объект, чтобы его параметры удовлетворяли некоторому заданному условию, «как сделать, чтобы?..».

Второй этап - анализ объекта. Результат анализа объекта – выявление его составляющих (элементарных объектов) и определения связей между ними.

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

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

Формализация — это процесс выделения и перевода внутренней структуры объекта в определенную информационную структуру — форму.

Моделирование любой системы невозможно без предварительной формализации. По сути, формализация — это первый и очень важный этап процесса моделирования.

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

В наиболее общем виде процесс построения и использования компьютерных моделей можно представить как последовательность этапов:

Компьютерная модель – модель, реализованная средствами программной среды.

При моделировании на компьютере необходимо иметь представление:

о классах программных средств, их назначении, инструментарии, технологических приемах работы/ Итак, подведем итоги.

Этапы разработки программ Разработка программы - это не только написание программы. Написание программы является одним из этапов. Для начала перечислим все этапы разработки программ, а затем подробно расскажем о них.

Этапы разработки программ:

1. Постановка задачи 1. Формулировка и анализ физической задачи 2. Составление математической модели 3. Составление алгоритма задачи 2. Создание программы 1. Составление текста программы 2. Ввод текста программы в компьютер 3. Синтаксическая отладка программы 4. Тестирование и семантическая отладка 5. Документирование программы 3. Запуск готовой программы и анализ полученных результатов Рассмотрим подробно каждый этап.

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

1.1.1Формулировка и анализ физической задачи Формулировка задачи - это само её объявление, её постановка.

Но просто формулировка ничем не поможет программистам. Для этого и существует второй подэтап - это анализ задачи.

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

1.1.2 Составление математической модели Начнем опять же с определения. Для более четкого понимания рассмотрим определения математической модели, объявленные в разных (математических, физических, экономических и т.д.) источниках и попробуем создать собственное определение, подходящее для программирования.

«Математическая модель - система уравнений и концепций, используемых для описания и прогнозирования данного феномена или поведения объекта. Математические модели находят как практическое, так и теоретическое применение (иногда одновременно). Практические задачи, в которых используются математические модели, включают создание новых материалов, предсказание погоды, проверку прочности мостов, самолетов и тому подобного» - это определение используется в физике, химии и математической биологии.

«Математическая модель -- это упрощенное описание реальности с помощью математических понятий. Существует два основных класса задач, связанных с математическими моделями: прямые и обратные. В первом случае все параметры модели считаются известными, и нам остается только исследовать её поведение. А во втором какие-то параметры модели неизвестны, и требуется их найти, сопоставляя поведение реальной системы с её моделью.» - данное определение используется в основном в экономике.

«Математическая модель -- это математическое представление реальности» - это определение созданное математиками.

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

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

1.1.3 Составление алгоритма задачи Изначально появление алгоритма связывают с возникновением математики. Алгоритм описание последовательности действий (план), строгое исполнение которых приводит к решению поставленной задачи за конечное число шагов.

У алгоритма есть 2 обязательных условия:

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

· Алгоритм должен быть представлен в форме, понятной тому объекту (в том числе и человеку), который будет выполнять описанные в алгоритме действия.

Так же у алгоритмов есть свойства:

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

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

3. Конечность, т. е. каждое действие и алгоритм в целом должны иметь возможность завершения.

4. Массовость, т. е. один и тот же алгоритм можно использовать с разными исходными данными.

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

В мире существует несколько видов алгоритмов:

· Линейный алгоритм (описание действий, которые выполняются однократно в заданном порядке);

· Циклический алгоритм (описание действий, которые должны повторятся указанное число раз или пока не выполнено условие);

· Разветвляющий алгоритм (алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий);

1.2 Создание программы Процесс создание программы, а точнее разработка программного обеспечения - это второй этап создания программы.

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

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

Синтаксическая отладка - поиск синтаксических ошибок в тексте программы.

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

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

1.2.3 Тестирование и семантическая отладка Тестирование - это динамический контроль программы, т.е. проверка правильности программы при ее выполнении на компьютере.

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

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

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

3. по тем же соображениям организация - разработчик программного обеспечения не должна “единолично ” его тестировать (должны существовать организации, специализирующиеся на тестировании программных средств);

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

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

6. при анализе результатов каждого теста необходимо проверять, не делает ли программа того, что она не должна делать;

7. следует сохранять использованные тесты (для повышения эффективности повторного тестирования программы после ее модификации или установки у заказчика);

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

9. следует учитывать так называемый “принцип скопления ошибок” : вероятность наличия не обнаруженных ошибок в некоторой части программы прямо пропорциональна числу ошибок, уже обнаруженных в этой части;

10. следует всегда помнить, что тестирование - творческий процесс, а не относиться к нему как к рутинному занятию.

Существует два основных вида тестирования: функциональное и структурное. При функциональном тестировании программа рассматривается как “черный ящик” (то есть ее текст не используется). Происходит проверка соответствия поведения программы ее внешней спецификации. Возможно ли при этом полное тестирование программы?

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

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

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

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

1) тестирование отдельных модулей;

2) совместное тестирование модулей;

3) тестирование функций программного комплекса (т.е. поиск различий между разработанной программой и ее внешней спецификацией );

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

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

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

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

Наиболее слабым из критериев полноты структурного тестирования является требование хотя бы однократного выполнения (покрытия) каждого оператора программы. Более сильным критерием является так называемый критерий С1: каждая ветвь алгоритма (каждый переход) должна быть пройдена (выполнена) хотя бы один раз.

Использование критерия покрытия условий может вызвать подбор тестов, обеспечивающих переход в программе, который пропускается при использовании критерия С1 (например, в программе на языке Паскаль, использующей конструкцию цикла WHILE х AND y DO..., применение критерия покрытия условий требует проверки обоих вариантов выхода из цикла: NOT x и NOT y). С другой стороны покрытие условий может не обеспечивать покрытия всех переходов.

Например, конструкция IF A AND B THEN... требует по критерию покрытия условий двух тестов (например, A=true, B=false и A=false, B=true), при которых может не выполняться оператор, расположенный в then - ветви оператора if. Практически единственным средством, предоставляемым современными системами программирования, является возможность определения частоты выполнения различных операторов программы. Но с помощью этого инструмента поддержки тестирования можно проверить выполнение только слабейшего из критериев полноты - покрытие всех операторов. Правда, с помощью этого же инструмента можно проверить и выполнение критерия С1. Но для этого предварительно текст программы должен быть преобразован таким образом, чтобы все конструкции условного выбора (IF, CASE или SWITCH) содержали ветви ELSE или DEFAULT, хотя бы и пустые. В этом случае все ветви алгоритма, не выполнявшиеся на данном тесте, будут “видимы” из таблицы частоты выполнения операторов преобразованной программы.

Актуальной остается задача создания инструментальных средств, позволяющих:

ь накапливать информации о покрытых и непокрытых ветвях для всех использованных тестов;

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

ь поддерживать более мощные критерии полноты структурного тестирования.

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

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

ь меньшая трудоемкость (при монолитном тестировании требуются 5 драйверов и заглушек;

при пошаговом тестировании требуются или только 5 драйверов - если модули подключаются “снизу вверх ”, - или только 5 заглушек - если модули подключаются “сверху вниз”);

ь более раннее обнаружение ошибок в интерфейсах между модулями (их сборка начинается раньше, чем при монолитном тестировании);

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

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

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

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

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

a) модули, содержащие операции ввода-вывода, должны подключаться к тестированию как можно раньше;

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

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

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

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

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

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

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

нет возможности совмещения проектирования с тестированием;

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

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

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

Существует 3 способа отладки программы:

1. Пошаговая отладка программ с заходом в подпрограммы;

2. Пошаговая отладка программ с выполнением подпрограммы как одного оператора;

3. Выполнение программы до точки остановки.

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

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

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

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

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

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

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

1.3.1 Пользовательская документация программы Пользовательская документация программы объясняет пользователям, как они должны действовать, чтобы использовать данную программу. Она необходима, если программа предполагает какое-либо взаимодействие с пользователями. К такой документации относятся документы, которыми руководствуется пользователь при установке программы.

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

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

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

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

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

Документация по сопровождению программы можно разбить на две группы:

1. документация, определяющая строение программ и структур данных программы и технологию их разработки;

2. документацию, помогающую вносить изменения в программу.

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

ь Внешнее описание;

ь Описание архитектуры программы, включая внешнюю спецификацию;

ь Описание модульной системы, включая внешнюю спецификацию каждого включенного модуля;

ь Для каждого модуля - его спецификация и описание его строения;

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

Документы второй группы содержат:

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

1.4 Запуск готовой программы и анализ полученных результатов После полученного нами файла с *.exe (обычно) разрешением мы можем запустить его и ещё раз проверить (проанализировать) верно, ли работает программа. На этом этапы создания программы закончены.

Тема 17. Понятие языка программирования.

Классификация языков программирования.

Компьютер - автомат. И, в отличии от человека, работает только по программе, заложенной в него. Для написания таких программ в настоящее время применяются АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ, число которых уже превысило число языков человеческого общения. Но хотя разработаны тысячи языков программирования, лишь сотни из них реализованы хотя бы для одного компьютера, но и среди этих сотен языков активно используются лишь несколько десятков.

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

1. Группу языков программирования НИЗКОГО УРОВНЯ обычно "открывает" язык МИКРОКОМАНД. На основе простейшего набора микрокоманд пишутся специальные микропрограммы, определяющие, с одной стороны, элементарные операции компьютера, а с другой - управление выполнением программ из элементарных операций. Совокупность таких микропрограмм иногда называют ЭМУЛЯТОРОМ.

Следующий по уровню язык из этой группы - МАШИННЫЙ. Каждая его команда описывается последовательностью микрокоманд. Синтаксически эти команды не более, чем последовательности нулей и единиц. Машинный язык, как и язык микрокоманд, удобен для интерпретации аппаратурой компьютера, но плохо приспособлен для непосредственного использования человеком-программистом.

Программирование в машинных кодах требует от программиста много времени, труда, повышенного внимания.

Следующим в иерархии языков низкого уровня стоит обычно язык символического кодирования - АВТОКОД или АССЕМБЛЕР. Операторы этого языка - те же команды, но они имеют мнемонические (ассоциативные, буквенные) названия, а в качестве операндов используются не конкретные адреса в оперативной памяти, а их символические имена.

Следующим естественным усложнением стала замена часто встречающихся последовательностей команд более крупными единицами - макрокомандами. Такие языки называют МАКРОЯЗЫКАМИ.

Все языки низкого уровня ориентированы на определенный тип компьютера.

2. Следующую, существенно более многочисленную группу составляют языки программирования ВЫСОКОГО УРОВНЯ. Для всех языков высокого уровня общее то, что ориентированы они не на систему команд того или иного компьютера, а на систему операторов, характерных для записи определённого класса алгоритмов.

Одним из первых языков высокого уровня был ФОРТРАН (Fortran). Уже само название его - ФОРмульный ТРАНслятор - говорит о том, что основное внимание здесь уделено удобному представлению формул. Уровень языка ФОРТРАН с позиций сегодняшнего дня не слишком высок, но он по-прежнему используется для инженерных и научных расчетов, и его популярность в значительной степени поддерживается физиками, усилиями которых созданы громадные библиотеки фортран-программ. В процессе создания, реализации и использования языка фортран были отработаны многие важные идеи "языкотворчества" в программировании, и можно даже сказать, что этот язык дал уверенность в правильности самой концепции языков высокого уровня.

Но честь научного обоснования всего направления безусловно принадлежит разработчикам языка АЛГОЛ (Algorithmic Language), первая версия которого появилась в 1958 году. В целом АЛГОЛ - это использование строгого и элегантного математического стиля для реализации сложных алгоритмов и, безусловно, это - целая эпоха в области языков программирования.

Алгоритмический язык ПАСКАЛЬ (Pascal) разработан в 1970 г. Норбертом Винером и назван в честь английского учёного Б. Паскаля. По своей идее это алголоподобный язык, вобравший в себя все лучшие проектные решения предшественника. Но вместе с тем это качественно новый шаг, связанный прежде всего с тем, что здесь впервые была воплощена концепция абстрактных типов данных.

Почти одновременно с паскалем, в начале 70-х годов, был разработан и язык программирования СИ (С). Но если паскаль шел больше от теории программирования, то язык СИ - типичный пример влияния практических потребностей системного программирования на разработку новых языков.

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

Язык БЕЙСИК (Basic), изучением которого мы с вами будем теперь заниматься, был разработан в 1964 году в США сотрудниками Дармутского колледжа Джоном Кемени и Томасом Курцем. Название языка образовано начальными буквами предложения Beginners All-purpose Simbolic Instruction Code, что в переводе означает Многоцелевой Символический Код для начинающих. Интересно отметить, что язык под названием Бейсик существовал задолго до появления компьютеров. Он состоял примерно из 300 английских слов и использовался в Африке местными жителями для общения с английскими миссионерами и как язык межплеменного общения.

Отношение к БЕЙСИКУ среди профессионалов весьма противоречивое. Одни вообще не считают его заслуживающим внимания (например, в энциклопедическом словаре ИНФОРМАТИКА для начинающих такого слова просто нет). А известный специалист в области информатики Р.Форсайт писал: "БЕЙСИК - это питон, пожирающий все на своем пути. БЕЙСИК только что закончил "переваривать" язык ПАСКАЛЬ со всеми его управляющими структурами. После небольшой паузы и нескольких отрыжек он будет в состоянии "слопать" ПРОЛОГ..."

Языки логического программирования ЛИСП (1959 г.), ПРОЛОГ (1973 г.), РЕФАЛ, предназначены для обработки не столько числовой, сколько символьной информации.

Центральным понятием в логическом программировании является отношение.

Программа представляет собой совокупность определений отношений между объектами и цели.

Прототипом объектно-ориентированного программирования явился язык SIMULA-67.

Но оформилось оно в самостоятельный стиль программирования с появлением языка (SMALLTALK-1972 г.), первоначально предназначенного для реализаций функций машинной графики. Этот стиль программирования характеризуется богатыми графическими возможностями и средой программирования, развитой модульной структурой программ. Именно модульность упрощает разработку сложных программных продуктов. Современные объектно-ориентированные языки: Visual Basic, Delphi, Visual C#, в основе которых лежат всё те же Basic, Pascal и C.

Сейчас уже невозможно представить себе жизнь в мире ПК без Интернета. Язык гипертекстовой разметки - HTML (Hyper Text Markur Language) позволяет создавать интернет-сайты.

ТРАНСЛЯТОРЫ.

Все языки построены по определенным законам, в основе которых лежат алфавит и правила образования слов и предложений. Языки программирования строятся по тем же законам, что и человеческие: у них есть свой алфавит, свои слова (их еще называют служебными), свои правила написания. ПРОГРАММЫ, написанные на таких языках, состоят из последовательности предложений, которые называются КОМАНДАМИ или ОПЕРАТОРАМИ. Двоим, говорящим на разных языках, для общения, наверное, понадобится человек, который знает эти оба языка. Он может помочь в разговоре, переводя с одного языка на другой. Если мы "заложим" в компьютер программу, написанную на одном из языков программирования, она не будет выполняться, компьютер ее не поймет. Сам компьютер понимает только один язык - язык машинных кодов (помните? Нули и единицы. Двоичное кодирование.) Чтобы программа была понята, ее надо перевести в машинный код. Для этого используются программы переводчики, их называют трансляторами (от латинского translatio - "передача").

Трансляторы обычно подразделяют на два типа:

1. КОМПИЛЯТОРЫ, переводящие целиком всю программу, написанную на языке программирования высокого уровня, на машинный язык, после чего программа записывается в память компьютера и лишь потом реализуется;

2. ИНТЕРПРЕТАТОРЫ, переводящие команды или операторы входной программы по очереди и немедленно выполняющие их.

Любой транслятор решает четыре основные задачи:

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

2. Если ошибок нет, транслятор генерирует выходную программу (ее часто называют объектной или рабочей) на машинном языке;

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

4. Распределяет машинную память для выходной программы.

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

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

Также система программирования может включать в себя:

библиотеки стандартных подпрограмм, отладчик компоновщик и другие сервисные средства.

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

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

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

Языки программирования Объектно Процедурные Функциональные Логические ориентированные Ведущими разработчиками систем программирования в настоящее время являются фирмы Microsoft и Borland International.

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

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

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

Примером функционального языка является язык LISP (List Processing-обработка списков) Разработан и реализован в Массачусетском технологическом институте в 1959 г.

Рассматривается специалистами как основной язык программирования систем искусственного интеллекта.

Логическое программирование Логика и программирование долгое время были непересекающимися областями исследований. Только в 1973 впервые было опубликовано описание языка PROLOG (PROgramming in LOGic- программирование в терминах логики) Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами и цели. В логическом программировании нужно только специфицировать факты, на которых алгоритм основывается, а не определять последовательность шагов, которые требуется выполнить. Логические программы отличаются принципиально низким быстродействием.

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

Объектно-ориентированное программирование. Корни объектно - ориентирования уходят в одну из ветвей логики, в которой первичной является не отношение, а объект.

Прототипом объектно-ориентированного программирования явился язык SIMULA-67. Но оформилось оно в самостоятельный стиль программ ирония с появлением языка (SMALLTALK-1972 г.), первоначально предназначенного для реализаций функций машинной графики. Этот стиль программирования характеризуется богатыми графическими возможностями и средой программирования, развитой модульной структурой программ. Именно модульность упрощает разработку сложных программных продуктов. Как пример объектно-ориентированного языка можно назвать Visual Basic и Delfi.

Сейчас уже невозможно представить себе жизнь в мире ПК без Интернета. Язык гипертекстовой разметки-HTML (Hyper Text Markur Language) позволяет создавать программы, с помощью которых можно блуждать по Сети.

Тема 18. Понятие алгоритма. Способы записи алгоритмов.

Свойства алгоритмов.

.

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

Рассмотрим пример алгоритма для нахождения середины отрезка при помощи циркуля и линейки.

Алгоритм деления отрезка АВ пополам:

1) поставить ножку циркуля в точку А;

2) установить раствор циркуля равным длине отрезка АВ;

3) провести окружность;

4) поставить ножку циркуля в точку В;

5) провести окружность;

6) через точки пересечения окружностей провести прямую;

7) отметить точку пересечения этой прямой с отрезком АВ.

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

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

Свойства алгоритмов:


1. Поочередное выполнение команд алгоритма за конечное число шагов приводит к решению задачи, к достижению цели. Разделение выполнения решения задачи на отдельные операции (выполняемые исполнителем по определенным командам) – важное свойство алгоритмов, называемое дискретностью.

2. Каждый алгоритм строится в расчете на некоторого исполнителя. Для того чтобы исполнитель мог решить задачу по заданному алгоритму, необходимо, чтобы он был в состоянии понять и выполнить каждое действие, предписываемое командами алгоритма. Такое свойство алгоритмов называется определенностью (или точностью) алгоритма. (Например, в алгоритме указано, что надо взять 3— стакана муки. Какие стаканы, что значит 3—4, какой муки?) 3. Еще одно важное требование, предъявляемое к алгоритмам, - результативность (или конечность) алгоритма. Оно означает, что исполнение алгоритма должно закончиться за конечное число шагов.

4. Универсальность. Алгоритм должен быть составлен так, чтобы им мог воспользоваться любой исполнитель для решения аналогичной задачи. (Например, правила сложения и умножения чисел годятся для любых чисел, а не для каких-то конкретных.) Таким образом, выполняя алгоритм, исполнитель может не вникать в смысл того, что он делает, и вместе с тем получать нужный результат. В таком случае говорят, что исполнитель действует формально, т.е. отвлекается от содержания поставленной задачи и только строго выполняет некоторые правила, инструкции.

Способы задания алгоритма:

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

Графическая форма представления алгоритма называется блок-схемой Исполнитель алгоритмов. Система команд исполнителя.

Формальное исполнение алгоритмов.

Компьютер как формальный исполнитель алгоритмов.

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

Исполнителя характеризуют:

среда;

элементарные действия;

система команд;

отказы.

Среда (или обстановка) - это «место обитания» исполнителя.

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

После вызова команды исполнитель совершает соответствующее элементарное действие.

Отказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.

Исполнитель ничего не знает о цели алгоритма. Он выполняет все полученные команды, не задавая вопросов «почему» и «зачем».

Компьютер как формальный исполнитель алгоритмов.

Рассмотрим процесс управления информационным процессом, в котором в качестве управляемого объекта выбран текст. Другими словами, рассмотрим информационный процесс, связанный с редактированием (изменением состояния) текста.

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

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

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

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

Например: пользователю необходимо отредактировать текст следующим образом:

Выделить символы с 1 по 15.

1.

Вырезать этот фрагмент и поместить его в буфер.

2.

Установить курсор на позицию после 7-го символа.

3.

Вставить вырезанный фрагмент текста.

4.

Этот алгоритм пользователь может выполнять формально. Пользователь в процессе выполнения алгоритма на компьютере будет нажимать клавиши клавиатуры, а при работе с графическим интерфейсом с помощью мыши активизировать те или иные кнопки, пункты меню и т.д. Фактически пользователь будет давать команды объектам программной среды Windows&Office, которые и будут исполнителями алгоритма.

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

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

Блок – схемы. Условные обозначения Начало конец Процесс Ввод вывод Типовой процесс Решение (условие) Базовые алгоритмические структуры Следование Ветвление Повторение (цикл) Тема 19. Разветвляющиеся алгоритмы.

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

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

Команда ветвления, как и любая другая, может быть:

Записана на естественном языке;

Изображена в виде блок-схемы;

Закодирована на языке программирования.

Структура ветвление существует в четырех основных вариантах:

Язык блок-схем Язык Бейсик 1. если - то IF условие THEN действия 2. если - то - иначе IF условие THEN действие 1 ELSE действие 3. выбор SELECT CASE CASE условие 1 действия CASE условие 2 действия...

CASE условие N действия N END SELECT 4. выбор - иначе SELECT CASE CASE условие 1 действия CASE условие 2 действия...

CASE условие N действия N ELSE действия N+ END SELECT Циклические алгоритмы.

Формы организации циклов.

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

В циклах типа пока тело цикла выполняется до тех пор, пока выполняется условие.

Выполнение таких циклов происходит следующим образом:

- пока условие справедливо (истинно), выполняется тело цикла, - когда условие становится несправедливым, выполнение цикла прекращается.

Цикл, как и любая другая алгоритмическая структура, может быть:

Записан на естественном языке;

Изображен в виде блок-схемы;

Закодирован на языке программирования.

Основные разновидности циклов представлены в таблице.

Язык блок-схем Язык Бейсик 1. Цикл с предусловием. (Цикл пока.) Предписывает выполнение тела цикла до тех пор, пока выполняется условие, записанное после слова пока WHILE условие тело цикла (последовательность действий) WEND 2. Цикл с постусловием.

Предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне FOR I = I1 TO I STEP n тело цикла (последовательность действий) NEXT Тема20. Структурное программирование Вспомогательные алгоритмы. Библиотека алгоритмов.

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

В 60 - 70 годах активно развивалось методика, которая получила название «структурное программирование». Структурная методика программирования включает в себя следующие принципы:

1. При построении алгоритма используются три базовые алгоритмические структуры:

линейную, разветвляющуюся и циклическую.

2. Метод последовательной детализации.

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

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

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

Пример вспомогательных алгоритмов в языке Бейсик:

Объявление вспомогательного алгоритма:

DECLARE SUB PROBEL () Описание (тело) вспомогательного алгоритма:


П/п обработки нажатия клавиши пробел - передвижения от одного ответа к другому SUB PROBEL X = POINT(0) LINE (X - 150, 200)-(X, 290), 2, B X = X + IF X 630 THEN LINE (X, 200)-(X + 150, 290), 15, B ELSE LINE (0, 200)-(150, 290), 15, B END SUB Вызов вспомогательного алгоритма:

A$ = INKEY$ IF A$ = CHR$(32) THEN CALL PROBEL Из отдельных вспомогательных алгоритмов формируются библиотеки вспомогательных алгоритмов, которыми могут пользоваться разработчики программного обеспечения.

Существуют также библиотеки стандартных алгоритмов (подпрограмм) Библиотека стандартных подпрограмм — это совокупность подпрограмм, составленных на одном из языков программирования и удовлетворяющих определенным единым требованиям к структуре, организации их входов и выходов, описаниям подпрограмм и т. п.

Стандартные подпрограммы имеют единую форму обращения, что обеспечивает простоту и удобство настройки параметров подпрограммы на решение конкретной задачи.

В качестве примера можно привести библиотеку стандартных подпрограмм по численным математическим методам решения уравнений, вычисления интегралов, нахождения экстремумов и т. п.

Тема 21. КОМПОНЕНТЫ ВЫЧИСЛИТЕЛЬНОЙ СЕТИ Информатизация - это сложный социальный процесс, связанный со значительными изменениями в образе жизни населения. Он требует серьезных усилий на многих направлениях, включая ликвидацию компьютерной неграмотности, формирование культуры использования новых информационных технологий и др.

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

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

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

Основными критериями развитости информационного общества являются следующие:

1. Наличие компьютеров;

2. Уровень развития компьютерных сетей 3. Владение информационной культурой, т.е. знаниями и умениями в области информационных технологий Появление и развитие компьютеров – это необходимая составляющая процесса информатизации общества. Информатизация общества является одной из закономерностей современного социального прогресса. При информатизации общества основное внимание уделяется комплексу мер, направленных на обеспечение полного использования достоверного, исчерпывающего и своевременного знания во всех видах человеческой деятельности. Для обеспечения доступности общения с компьютером на естественном языке он будет оснащен средствами мультимедиа, в первую очередь аудио – и видео- средствами. В перспективе портативные компьютеры должны стать более миниатюрными, при том быстродействие их микропроцессоров должно быть таким, как на современных супер ЭВМ. Они должны иметь плоский дисплей с хорошей разрешающей способностью. Их внешние запоминающие устройства – магнитные диски – будут портативными, иметь емкость более 100 Гбайт.

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

Инфракрасные каналы в пределах прямой видимости.

Телевизионные каналы.

Беспроводная технология высокоскоростной цифровой связи на частоте 10 Мгц.

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

Таким образом, человек обладает информационной культурой, если:

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

умеет использовать информационное моделирование при решении задач с помощью компьютера;

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

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

умеет обрабатывать числовую информацию с помощью электронных таблиц;

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

умеет использовать информационные ресурсы компьютерной сети;

знает и не нарушает законы об авторских правах на компьютерные программы;

соблюдает этические нормы при публикации информации в Интернете и в процессе общения с помощью Интернета.

Вычислительные сети В зависимости от удалённости ЭВМ, входящих в ВС, сети условно разделяют на локальные и глобальные.

Локальная сеть - ЛВС [local area network - LAN] – это группа связанных друг с другом ЭВМ, расположенных в ограниченной территории, например, в здании. Расстояния между ЭВМ в локальной сети может достигать нескольких километров. Локальные сети развёртываются обычно в рамках некоторой организации, поэтому их называют также корпоративными сетями.

Если сеть выходит за пределы здания, то такая ВС называется глобальной [wide area network -WAN]. Глобальная сеть может включать в себя другие глобальные сети, локальные сети и отдельные ЭВМ.

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

Сети предназначены для выполнения многих задач, в том числе:

организация совместного использования файлов для повышения целостности информации;

организация совместного использования периферийных устройств, например, принтеров, для уменьшения общих расходов на оборудование офиса;

обеспечения централизованного хранения данных для облегчения их защиты и архивирования.

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

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

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

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

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

3. Повышение достоверности информации и надежности ее хранения путем создания устойчивой к сбоям информационной системы.

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

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

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

Для эффективной работы сетей используются специальные ОС, которые в отличие от персональных ОС предназначены для решения специальных задач по управлению работой сети и называются сетевыми. Сетевые ОС устанавливаются на специально выделенные компьютеры, называемые серверами. Признанными лидерами сетевых операционных систем являются Windows-NT и Novell Net Ware.

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

Рабочая станция (workstation) - это персональный компьютер, подключенный к сети, на котором пользователь выполняет свою работу. Каждая рабочая станция обрабатывает свои локальные файлы и использует свою операционную систему, но при этом ему доступны ресурсы сети.

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

К коммутационным узлам сети относятся следующие устройства: повторители, коммутаторы (мосты), маршрутизаторы и шлюзы. Классификация сетей производится по ряду параметров. Архитектура локальной сети Для характеристики архитектура сети используют понятия логической и физической топологии.

Физическая топология [physical topology] – это физическая структура сети, способ физического соединения всех аппаратных компонентов сети. Существует несколько видов физической топологии.

Наиболее простой является физическая шинная топология [bus topology], в которой кабель идёт от ЭВМ к ЭВМ, связывая их в цепочку. Различают толстые и тонкие сети.

Толстая сеть [thicknet] использует толстый коаксиальный кабель в качестве магистрали, от которого отходят более тонкие кабели.

В тонкой сети [thinnet] используется более тонкий и гибкий кабель, к которому напрямую подключены рабочий станции.

Сети, построенные по шинной топологии, более дёшевы. Однако если узлы сети расположены по всему зданию, то гораздо более удобным оказывается использование звездообразной топологии.

При физической звездообразной топологии [star topology] каждый сервер и рабочая станция подключаются к специальному устройству – центральному концентратору [hub], который осуществляет соединение пары узлов сети – коммутацию.

Рис. 1. Шинная топология - толстая сеть Обрыв кабеля, идущего от одной рабочей станции не повлияет на работу остальных рабочих станций. Кроме того, взаимное расположение рабочих станций совершено не важно.

Рис. 2. Шинная топология - тонкая сеть Если сеть имеет много узлов, причём многие располагаются на большом удалении друг от друга, то расход кабеля при использовании звездообразной топологии будет большим. Кроме того, к концентратору можно подключить лишь ограниченное число кабелей. В таких случаях применяется распределённая звездообразная топология [distributed star topology], при которой несколько концентраторов соединяются друг с другом.

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

Логическая топология сети [logical topology] определяет способ, в соответствии с которым устройства сети передают информацию от одного узла к следующему.

Физическая топология не имеет прямого отношения к логической.

Различают два вида логической топологии: шинную и кольцевую.

Рис. 3. Звездообразная топология В шинной логической топологии процесс передачи данных организован следующим образом. Если какой-либо узел сети имеет данные для другого узла, то первый узел производит «оповещение» всей сети. Все остальные узлы «слушают» сеть и проверяют, предназначены эти данные для них или нет. Если предназначены, то они оставляют их себе, если нет – игнорируют. Любые передаваемые данные «слышны»

всем узлам сети. Узел, который хочет передать какие-то данные, сначала «слушает»

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

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

Аппаратные компоненты локальной сети Основными компонентами, составляющими любую локальную сеть, являются:

кабели, сетевые интерфейсные платы, модемы, серверы.

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

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

Пример Для соединения в локальных сетях используются: кабели типа «витая пара» и «экранированная витая пара», коаксиальный кабель, оптоволоконный кабель.

Таблица 1. Типы кабелей Тип кабеля Скорость Допустимая передачи длина, м данных, Мбит/с Витая пара 100 Экранированная витая 100 пара Коаксиальный 10 Оптоволоконный 155 Сетевые интерфейсные платы [network interface card] представляют собой дополнительные платы, устанавливаемые на материнскую плату ПЭВМ. К сетевой плате подключаются сетевые кабели. Сетевая плата определяет тип локальной сети.

Пример На практике используют два типа локальных сетей - Ethernet и Token Ring. Оба типа имеют модификации.

Таблица 2. Типы сетей Ethernet Название Физическая топология и кабель Скорость передачи Мбит/с Шинная, тонкий коаксиальный 10Base2 Шинная, толстый коаксиальный 10BaseS Звездообразная, витая пара Fast Ethernet Звездообразная, оптоволоконный Gigabit Ethernet Модем [modem] – это устройство, предназначенное для связи между ЭВМ по телефонным линиям. По телефонной сети любые данные могут передаваться лишь в аналоговой форме. Данные от ЭВМ поступают в цифровом виде. Задача модема заключается в преобразовании цифровых данных в аналоговую форму и наоборот.

Сервер [server] – это любая сетевая ЭВМ, обслуживающая другие сетевые ЭВМ.

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

Файловый сервер [file server] предоставляет другим ЭВМ (клиентам) доступ к данным, которые хранятся во внешней памяти сервера. Таким образом, на файловый сервер возложены все задачи по безопасности хранения данных, поиску данных, архивированию и др. Внешняя память сервера становится распределяемым ресурсом, так как её могут использовать несколько клиентов.

Сервер печати [printer server] организует совместное использование принтера.

Коммуникационные серверы служат для связи локальной сети с внешним миром, например, с глобальной сетью Internet. Для этого используются модемные пулы, прокси-серверы и маршрутизаторы.

Модемный пул [modem pool] представляет собой ЭВМ, снабжённую особой сетевой платой, к которой можно подключить несколько модемов. Таким образом достигается определённая экономия, когда, например, десять ЭВМ работают, используя три модема.

Прокси-сервер [proxy server] не только использует единственное соединение с Internet, но и предоставляет свою память для хранения временных файлов, что убыстряет работу с Internet.

Главной задачей маршрутизатора [router] является поиск кратчайшего пути, по которому будет отправлено сообщение, адресованное некоторой ЭВМ в глобальной сети. Маршрутизатор представляет собой либо специализированную ЭВМ, либо обычную ЭВМ со специальным программным обеспечением.

Сервер приложений [application server] используется для выполнения программ, которые по каким-то причинам нецелесообразно или невозможно выполнить на других сетевых ЭВМ. Очевидной причиной может быть недостаточная производительность клиентских ЭВМ. Другая причина – использование каких-нибудь стандартных библиотек, копирование которых на каждую клиентскую ЭВМ трудоёмко и, кроме того, создаёт возможность несогласованности версии библиотеки.

Многопользовательские операционные системы (Linux, Windows NT) позволяют построить так называемую тонкую клиентную сеть, в которой все ресурсы клиентов предоставлены сервером. Сами клиентские ЭВМ не тратят ничего на обработку данных. Тогда ЭВМ пользователей в такой сети называются терминалами, а сам сервер – терминальным сервером. Такой сервер должен иметь большой объём основной и внешней памяти и высокую производительность.

Глобальная сеть Internet Общая характеристика глобальной сети Internet В структуре глобальной сети можно выделить три уровня (см. рис. 4.8).

Первый – внутренний уровень составляет сеть передачи данных. Она состоит из узлов связи. Каждый узел связи представляет собой совокупность средств передачи данных и состоит из коммутационной ЭВМ и аппаратуры передачи данных.

Рис. 5. Структура глобальной сети Во второй уровень входят разнообразные серверы, называемые хост-ЭВМ [host computer], которые выполняют в сети задачи по хранению и обработке данных.

Такими серверами могут быть, например, серверы различных локальных сетей.

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

Каждая локальная сеть называется сайтом [site], а юридическое лицо, обеспечивающее работу сайта – провайдером. Сайт состоит из группы серверов, которая выполняет определённые задачи.

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

Время доставки сообщений определяется как статистическое среднее время от момента передачи сообщения в сеть до момента получения сообщения адресатом.

Производительность сети представляет собой суммарную производительность серверов.

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

Тип сети и все её характеристики в основном определяются строением и принципами работы сети передачи данных, которые описываются протоколом. Протокол [protocol] – это система правил, определяющих формат и процедуры передачи данных по сети.

Можно сказать, что протокол представляет собой язык, на котором «разговаривают»

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

Пример Свойства глобальной сети Internet определяются так называемым IP-протоколом.



Pages:     | 1 | 2 || 4 |
 





 
© 2013 www.libed.ru - «Бесплатная библиотека научно-практических конференций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.