Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Локальные и глобальные переменные




Нисходящее программирование

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

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

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

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

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

Эффективность программирования

Экономические аспекты программирования. Развитие языков программирования всегда было неразрывно связано с развитием аппаратных средств вычислительной техники и, главное, с экономикой этой отрасли. На рубеже 60—70 годов, когда персо­нальных компьютеров еще не было, машинное время большой ЭВМ стоило десятки долларов в минуту. Эта величина намного превышала стоимость услуг, программистов, поэтому основным направлением в развитии языков программирования была борьба за эффективное использование машинного времени.

Наиболее ресурсоемким процессом подготовки программ всегда считался процесс отладки. С появлением языков структурного программирования ПАСКАЛЬ и СИ в 70-е годы эта проблема была во многом снята. Программы стали представлять собой множество небольших и относительно самостоятельных процедур. Появилась возможность отлаживать процедуры по отдельности, используя для этого- сравнительно недорогое оборудование мини- или микро-ЭВМ.

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

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

Библиотеки процедур и функций

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

 

Объектно-ориентированное программирование

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

Объектно-ориентированный подход

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

Рассмотрим компьютерную игру, имитатор автогонок «Формулы-1». С точки зрения пользователя процесс игры представляет собой непрерывное вза­имодействие между следующими объектами:

• автомобиль — дорога; • автомобиль — автомобиль; • автомобиль — пользователь.

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

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

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

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

Таким образом, в объектно-ориентированном про­граммировании объекты — это особые структуры, сочетающие в себе и данные, и программный код.

Классы объектов. А сейчас мы рассмотрим, как в объектно-ориенти­рованном программировании возникает высокий коэффициент повторного использования кода.

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

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

Если нам удалось создать игру, имитирующую автогонку на трассе в Барселоне, а потом захотелось создать новую трассу, например в Монако, то переделать надо только свойства одного объекта — Трасса. Если за рулем автомобиля №1 вместо Р. Шумахера сядет Д. Хилл, то переделать Надо только алгоритм, описывающий метод взаимодействия этого автомобиля с другими автомобилями и с трассой. Если завтра заказчик попросит выпустить игру, посвященную гонке не спортивных, а грузовых автомобилей, то переделке будет подлежать вполне ограниченное количество свойств и методов. Теоретически даже возможно заменить гонку автомобилей по шоссе маневрами танков на пересеченной местности. Заказчик увидит совершенно новую про­грамму и даже не задумается о том, что 90% ее кода осталось в неизменном виде.

Что такое класс? С точки зрения программиста классы — это особые типы данных. До появления объектно-ориентированного подхода программисты имели дело всего лишь с некоторыми типами данных — целыми действительными числами и со строковыми переменными. Объектно-ориентированный подход ввел бесконечное разнообразие типов данных.

Рассмотрим, к примеру, хорошо знакомое окно любой программы Windows. В объектном программиро­вании окно — это особый тип данных, то есть это класс, В отличие от чисел окна нельзя делить и умножать. Зато их можно закрывать и раскрывать. Их можно перемещать, наполнять и опустошать. Мы можем открыть одновременно несколько разных окон. Все они явятся разными объектами одного класса и наследуют его методы, например возмож­ность прокрутки содержимого с помощью полос прокрутки.

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




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 328; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.