МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Модули и объекты в языке Турбо Паскаль 7.0

    Модули и объекты в языке Турбо Паскаль 7.0

    Министерство образования Российской Федерации

    Таможенный колледж

    Оренбургский Государственный Аграрный Университет

    Бузулукское представительство

    КУРСОВАЯ РАБОТА

    по дисциплине "Основы алгоритмов и программирования"

    Модули и объекты в языке Турбо Паскаль 7.0

    Руководитель

    работы

    ________________Симонова С.В.

    "______"________________2002г.

    Исполнитель

    Студент

    гр. 34 АСОИ и У

    ______________Кислинский С.В.

    "______"________________2002г.

    Бузулук 2002

    Содержание

    Введение…............................................................

    .................................стр. 3

    1 Модули…………………………………………………...……..........стр. 4

    1.1 Структура модулей………………………………………...........стр. 6

    1.2 Заголовок модулей и связь модулей друг с другом……….…стр. 8

    1.3 Интерфейсная часть……………………………………………стр. 9

    1.4 Исполняемая часть………………………………………...…...стр. 10

    1.5 Инициирующая часть………………………....…………...…стр. 11

    1.6 Компиляция модулей………………………………….......…стр. 12

    1.7 Доступ к объявленным в модуле объектам……………..........стр. 14

    1.8 Стандартные модули…………………………………………стр. 15

    2 Объекты……………………………………………………………..стр. 17

    2.1 Основные принципы ООП……………………………………стр. 19

    2.2 Инкапсуляция………………………………………………….стр. 20

    2.3 Наследование…………………………………………………стр. 22

    2.4 Полиморфизм…...……………………………………………стр. 24

    Заключение……………………………………………………………стр. 26

    Список используемых источников…………………………………..стр. 27

    Приложение А………………………………………………………...стр. 28

    Введение

    В 1992 году фирма Borland International выпустила два пакета

    программирования на использовании языка Паскаль, - Borland Pascal 7.0 и

    Turbo Pascal 7.0.

    Пакет Borland Pascal 7.0 учитывает многие новейшие достижения в

    программировании и практике создания программ и включает в себя три режима

    работы: в обычном режиме операционной системы MS DOS, в защищенном режиме

    MS DOS и в среде Windows. Обладая расширенными возможностями, пакет Borland

    Pascal 7.0 тем не менее требует для использования всех своих возможностей

    довольно большую память – примерно 30 Мбайт на жестком диске и не менее 2

    Мбайт оперативной памяти.

    Пакет Turbo Pascal 7.0 обладает ограниченными возможностями и

    позволяет работать только в обычном режиме MS DOS. Начинающему

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

    именно с этого пакета.

    Язык характеризуется расширенными возможностями по сравнению со

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

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

    организовывать ввод-вывод, формировать графическое изображение и т.д.

    Среда программирования позволяет создавать тексты программ,

    компилировать их, находить ошибки и оперативно их исправлять, компоновать

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

    выполнять отлаженную программу.

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

    интегрированной среде, набор стандартных модулей.

    Паскаль ( замечательный язык программирования, который относительно

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

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

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

    языки программирования, такие, как, например Бейсик.

    Паскаль – гибкий и развитый в отношении типов данных язык.

    Привлекательны его рекурсивные возможности, а также поддержка технологии

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

    1 Модули

    Модуль ( это автономно компилируемая программная единица, включающая

    в себя различные компоненты раздела описаний (типы, константы, переменные,

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

    инициирующей части.

    Наличие модулей в Turbo Pascal позволяет программировать и

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

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

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

    Модуль содержит описания типов данных, переменных и других объектов,

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

    Подпрограмму имеет смысл включать в состав модуля в том случае, когда она

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

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

    один раз, а использовать многократно.

    Модули представляют собой прекрасный инструмент для разработки

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

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

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

    памяти. Максимальная длина сегмента не может превышать 64 Кбайта, однако

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

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

    Доступ к описаниям, функциям и процедурам модуля обеспечивает

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

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

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

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

    является модуль System, ссылка на который необязательна. Этот модуль

    содержит, в частности, процедуры файлового ввода/вывода, процедуры и

    функции для работы со строками и некоторые другие.

    Модуль начинается заголовком

    unit unit_name;

    где unit_name – имя модуля, которое выбирается в соответствии с

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

    модуль.

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

    функций, которых нет в числе встроенных функций языка Паскаль, но эти

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

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

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

    модуля. Итак, сам модуль выглядит следующим образом.

    {$N+}

    unit hyp_fun;

    interface

    type

    Float = Extended;

    function sinh(x: Float): Float;

    function cosh(x: Float): Float;

    function tanh(x: float): Float;

    implementation

    var

    t: Float;

    function sinh(x: Float): Float;

    begin

    t := Exp(x);

    sinh := 0.5*(t – 1.0/t);

    end;

    function cosh(x: Float): Float;

    begin

    t := Exp(x);

    cosh := 0.5*(t + 1.0/t);

    end;

    function tanh(x: Float): Float;

    begin

    t := Exp(2.0*x);

    tanh := (t – 1.0) / (t + 1.0);

    end;

    end.

    Зарезервированные слова interface и implementation здесь играют

    важную роль. Каждый модуль имеет части (секции), озаглавленные этими

    словами. Секция interface (она называется интерфейсной секцией) содержит

    описания констант, типов, переменных и процедур, доступных из вызывающей

    программы или модуля. Секция implementation (секция реализации) содержит

    исходный код программы. Она может также содержать локальные описания, такие

    как var t: Real; из нашего примера.

    Каждый модуль начинается с зарезервированного слова unit и

    заканчивается словом end, за котором следует точка. Для этого end не

    требуется соответствующего слова begin, хотя можно и поставить его

    непосредственно перед end. Оператор type в начале нашего модуля определяет

    тип Float, который в данном случае эквивалентен типу Extended. Указав,

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

    точность вычисления гиперболических функций.

    1.1 Структура модулей

    Модуль имеет следующую структуру:

    |Unit module_name |

    |Interface |

    |Интерфейсная секция |

    |Implementation |

    |Секция реализации |

    |Секция инициализации |

    Рис. 1. Структура модуля

    Здесь Unit ( зарезервированное слово (единица), начинает заголовок

    модуля; name ( имя модуля (правильный идентификатор). Interface –

    интерфейсная секция – содержит те описания типов, переменных и других

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

    модулях. Секция реализации начинается с зарезервированного слова

    implementation. Все описания, содержащиеся в секции реализации, являются

    локальными, их область действия – данный модуль. Здесь же содержаться

    полные описания функций и процедур модуля. Последняя часть модуля – секция

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

    слово end или включать в себя исполняемые операторы, выполняющие

    необходимые действия по инициализации (например, по присваиванию начальных

    значений переменным) модуля.

    В качестве примера рассмотрим модуль func1 /см. приложение А/,

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

    функции, отсутствующие в стандартных модулях системы. Среди «стандартных»

    функций – синус (Sin), косинус (Cos), арктангенс (ArcTan), экспонента

    (Exp), натуральный логарифм (Ln), квадрат числа (Sqr) и квадратный корень

    из него (Sqrt). В модуле func1 имеются тангенс (Tan), арксинус (ArcSin) и

    арккосинус (ArcCos), функции перевода градусной меры в радианную и наоборот

    (Degrees_to_Radians, Radians_to_Degrees), набор гиперболических функций

    (Sinh, Cosh, Tanh), а также десятичный логарифм (Log10) и произвольная

    степень числа (Power).

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

    [pic]

    [pic]

    [pic]

    В нашем примере интерфейсная секция содержит описания вещественного

    типа float, а также константу Infinity – «бесконечно большое значение».

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

    как значение, близкое к максимально допустимому для типа Extended. Далее

    следуют заголовки функций модуля.

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

    функциях. Затем идут полные описания функций. Вычисление тангенса

    использует «классическое» определение этой функции как отношение синуса к

    косинусу. Учтено также приближение значения тангенса к бесконечности при

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

    «машинную бесконечность».

    При программировании арксинуса и арккосинуса следует учитывать то,

    что эти функции – многозначные. В нашем случае вычисляется «главное

    значение», лежащее в интервале [-(/2, (/2] (для арксинуса) или [0, (] (для

    арккосинуса) радиан. Для этого используются формулы, известные из курса

    элементарной математики.

    При вычислении гиперболических функций учитывается то

    обстоятельство, что уже при относительно небольших значениях аргумента

    вычисление экспоненты приводит к арифметическому переполнению. В этом

    случае функция возвращает «бесконечное» значение.

    1.2 Заголовок модуля и связь модулей друг с другом

    Заголовок модуля состоит из зарезервированного слова Unit (

    следующего за ним имени модуля. Для правильной работы среды Турбо Паскаля и

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

    это имя должно совпадать с именем дискового файла, в который помещается

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

    Unit Global;

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

    дисковом файле GLOBAL.PAS. Имя модуля служит для его связи с другими

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

    предложением

    Uses

    Здесь Uses - зарезервированное слово (использует);

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

    элементами списка являются имена модулей, отделяемые друг от друга

    запятыми, например:

    Uses CRT, Graph, Global:

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

    описаний основной программы. Модули могут использовать другие - модули.

    Предложение Uses в модулях может следовать либо сразу за зарезервированным

    словом Interface, либо сразу за словом Implementation.

    1.3 Интерфейсная часть

    Через интерфейс осуществляется взаимодействие основной программы с

    модулем (модуля с модулем). В интерфейсе указываются константы, типы,

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

    программой (модулем) при вызове этого модуля.

    Интерфейсная часть открывается зарезервированным словом Interface. В

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

    констант, переменных и подпрограмм), которые должны стать доступными

    основной программе и/или другим модулям. При объявлении глобальных

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

    Unit Cmplx;

    Interface

    type

    complex = record

    re, Im : real

    end;

    Procedure AddC (x, у : complex; var z : complex);

    Procedure MulC (x, у : complex; var z : complex);

    Если теперь в основной программе написать предложение

    Uses Cmplx;

    то в программе станут доступными тип Complex и две процедуры ( AddC и МulC

    из модуля Cmplx.

    Отметим, что объявление подпрограмм в интерфейсной части

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

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

    основной программы и других модулей.

    Следует учесть, что все константы и переменные, объявленные

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

    основной программы, помещаются компилятором Турбо Паскаля в общий сегмент

    данных (максимальная длина сегмента 65536 байт). Порядок появления

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

    в интерфейсной части объявляются внешние подпрограммы или подпрограммы в

    машинных кодах, их тела (т.е. зарезервированное слово External, в первом

    случае, и машинные коды вместе со словом Inline ( во втором) должны

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

    интерфейсной). В интерфейсной части модулей нельзя использовать опережающее

    описание.

    В интерфейсах различных модулей недопустимо циклическое обращение

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

    1.4 Исполняемая часть

    Исполняемая часть включает все подпрограммы модуля. Она может также

    включать локальные метки, константы, типы и переменные.

    Исполняемая часть начинается зарезервированным словом

    Implementation и содержит описания подпрограмм, объявленных в интерфейсной

    части. В ней могут объявляться локальные для модуля объекты -

    вспомогательные типы, константы, переменные и блоки, а также ( метки, если

    они используются в инициирующей части.

    Описанию подпрограммы, объявленной в интерфейсной части модуля, в

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

    список формальных переменных (и тип результата для функции), так как они

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

    в полном виде, т.е. со списком формальных параметров и объявлением

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

    части, например:

    Unit Cmplx;

    Interface

    type

    complex = record;

    re, im: Real;

    end;

    Procedure AddC (x, у : complex; var r : complex);

    Implementation

    Procedure AddC;

    begin

    z.re := x.re + y.re;

    z,im := x.Im * y.im;

    end;

    end.

    Локальные переменные и константы, а также все программные коды,

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

    В отличие от интерфейсов модулей в исполнительных частях модулей

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

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

    Страницы: 1, 2, 3


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.