Полная версия

Главная arrow Информатика arrow Базовые средства программирования на Visual Basic в среде VisualStudio. Net

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ ПОСМОТРЕТЬ ОРИГИНАЛ   >>

Введение в алгоритмизацию и программирование

В.1. Основные понятия и определения

Программное обеспечение (ПО) является логическим продолжением технических средств. Сфера применения конкретного компьютера определяется созданным для него ПО.

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

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

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

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

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

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

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

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

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

Кроме того программное обеспечение условно можно разбить на два класса: «малое» и «большое».

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

Примером «малого» ПО могут служить программы базовых алгоритмов, изучаемые в данном пособии и примеры проектов из лабораторных работ.

«Большое» программное обеспечение имеет две три или более характеристик из следующего перечня: решает совокупность взаимосвязанных задач; использование приносит значимую выгоду; удобство его использования играет важную роль; обязательно наличие полной и понятной документации; низкая скорость работы приводит к потерям; сбои, неправильная работа, наносит ощутимый ущерб; программы в составе ПО во время работы взаимодействует с другими программами и программно-аппаратными комплексами; работает на разных платформах; требуется развитие, исправление ошибок, добавление новых возможностей; группа разработчиков состоит из более чем 5 человек [9].

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

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

Что же определяет структуру и стиль программных систем? Прежде всего, это парадигма программирования, которой необходимо следовать, работая в любой среде системы программирования.

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

В данном учебном пособии при изучении базовых средств алгоритмического языка высокого уровня Visual Basic используется среда программирования Visual Studio .NET. Поскольку в основе этой среды лежат различные технологии, в том числе технологии структурного, процедурного, визуального и объектно- ориентированного программирования, то в первую очередь необходимо следовать, правилам этих технологий. Все они - всего лишь различные инструменты, которые можно использовать при разработке ПО. Каждый из этих инструментов по-своему хорош. То есть, на самом деле, различные методики «программирования» дают разный выигрыш для решения задач разных классов.

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

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

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

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

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

Процедурное программирование - это парадигма программирования,

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

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

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

Структурное программирование - методология разработки ПО, в основе которой лежит представление программы в виде иерархической структуры базовых алгоритмических блоков. Она предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом. В соответствии с этой методологией:

  • 1) Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций: последовательность - однократное выполнение операций в том порядке, в котором они записаны в тексте программы; разветвление - однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия; цикл - многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла); в программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
  • 2) Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. процедур (подпрограмм или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.
  • 3) Разработка программы ведётся пошагово, методом «сверху вниз».

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

Технология нисходящего проектирования с пошаговой детализацией

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

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

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

Объектно-ориентированное программирование (ООП) - парадигма программирования, в которой основными концепциями являются понятия объектов и классов.

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

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

 
<<   СОДЕРЖАНИЕ ПОСМОТРЕТЬ ОРИГИНАЛ   >>