Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки для начинающих программистов - N23


Служба Рассылок Subscribe.Ru проекта Citycat.Ru
Уроки для начинающих программистов
Выпуск N 23
10 августа
Ведущий рассылки Дмитрий.
Сайт: HTTP://PROGE.RU

Здравствуйте, дорогие подписчики!

Проект сайта библиотека программиста - HTTP://PROGE.RU
Как всегда сайт встретит Вас огромным количеством книг и статей на самые различные компьютерные темы, исходниками, скриптами, интересными рассылками. Приглашаем вас принять участие в нашем форуме.

http://proge.ru - Это все, что нужно!

Сегодня для Вас в выпуске:
      1. Рекомендую рассылку!
      2. Новости
      3. Паскаль: Свои модули.

1. РЕКОМЕНДУЮ РАССЫЛКУ!

Рекомендуем!

Рассылка "Новости электронной компьютерной библиотеки InfoCity"

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

Обучайтесь с нами!
http://www.infocity.kiev.ua
 

2. НОВОСТИ

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

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

Вернусь примерно в конце августа. Отсюда будет небольшой перерыв в выходе рассылки, то есть задержка на одну-две недели. Также я не буду иметь возможности отвечать на Вашу почту, Поэтому призываю задавать Ваши вопросы на форуме сайта Библиотека программиста - http://proge.ru/board/ Не примените возможностью зайти на наш форум и принять в нем участие - ведь чем вы будете больше помогать людям советом, тем больше будут помогать вам :)

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

Новые темы на нашем форуме:

- Платный и бесплатный хостинг - что лучше?
- Приветствую Вас на новом форуме!
- Форум
- Photoshop
- Не работает библиотека по C и C++
- Ошибка "DIVISION BY ZERO"
- Документация для С++ и Vi.. С++
- Еще один новый форум - ВЕБДИЗАЙН
- Perl vs. PHP
- Доки по VC++ 6
- Фиксированный рисунок фона
- Алгоритм сортировки массива
- исходники
- Mail CLient на Си для Форточек ::::

Приглашаем к общению!

 

3. Паскаль: Свои модули.

ВВЕДЕНИЕ

Модуль - это удобная возможность языка Turbo Pascal оптимизировать свои программы и сделать их более простыми для создания и прочтения. Кроме того, однажды созданные модули могут быть использованы после при написании многих программ, то есть являются универсальным инструментом. Вы уже знакомы с понятием модуля по стандартным вроде CRT или DOS. Но до сегодняшнего дня в рассылке рассказывалось лишь о том, как подключить к программе готовые файлы. Сегодня я научу Вас создать свои модули, собрав их из собственных процедур и функций. Для чего может потребоваться написание своего модуля, понятно. При создании большой программы появляется такое огромное количество функций, что разбираться с ними становиться тяжело. Программа запутывается и становится трудночитаемой. Модули же позволяют разбить функции на отдельные файлы по тематическим группам. При этом подключать их к основной программе по мере необходимости, то есть составлять программу по кирпичикам, из отдельных составляющих.

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

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

КАК ВЫГЛЯДИТ МОДУЛЬ

Сам исходный текст модуля не сильно отличается от обычной программы и имеет привычное расширение .pas. Однако присутсвуют отличия в компиляции и формате выходного файла. Компилированные модули в Turbo Pascal храняться в отдельных файлах с расширением .tpu (turbo pascal unit) или .tpp (turbo pascal protect), это в случае, если модули компилируются в защищенном режиме. При этом если данный модуль используется в программе, требуется присутсвие самого файла модуля. Надо отметить, что если модуль не был скомпилирован заранее, то есть нет tpu файла, а есть лишь исходный текст модуля (pas), то он будет скопмилирован "на лету" и после компиляции вы сможете лицезреть не только привычный .exe, но и свежесформированный .tpu. Также для использования модуля совсем не обязательно иметь файл .pas, т.е. исходник этого модуля. (Вспомните стандартные модули - исходников на них нет). То есть для использования достаточно иметь файл .tpu.


ПОДСКАЗКА

Pretected mode (защищенный режим) - режим, который подерживает всю оперативную память компьютера. Данный режим поддерживается компилятором Borland Pascal. Кстати, режим, в котором мы пишем сегодня называется real mode (реальный режим). И поддерживает он лишь первые 640 кбт памяти.


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

СТРУКТУРА МОДУЛЯ

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

Модуль всегда начинается служебным словом unit (модуль). Присутсвие этого заголовка, в отличии от слова Program, обязательно. Именно по нему Turbo pascal будет определять, что нужно компилировать модуль, а не программу. Заметьте, модуль нельзя запустить на выполнение (Ctrl+F9), так как он не является выполнимым.

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

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


unit my_unit; {имя модуля. обязательно. }

{ начало интерфейсной части - описываем процедуры }
interface

Function GetLines(fName: String): Word;
{fName - имя файла. Функция возвращает кол-во строк}

{ начало выполнимой части - наш код }
implementation

Function GetLines(fName: String): Word;
var
  F: Text;
  S: String;
  I: Word;

begin
  I := 0;
  Assign(F, fName);
  Reset(F);
  While not EOF(F) do
  begin
    Readln(F, S);
    Inc(I);
  end;
  GetLines := I;
  Close(F);
end;

end.

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

1 шаг. Указываем имя модуля.
2 шаг. Раздел "interface" - опишем все, что будет доступно извне.
3 шаг. Раздел "implementation" - исходный код модуля.
4 шаг. Конец модуля. Слово "end" или раздел "begin-end".

Вот, такие простые и понятные четыре шага. Главное запомнить как пишутся служебные слова, особенно implementation :)

ИСПОЛЬЗОВАНИЕ МОДУЛЯ В ПРОГРАММЕ

Нет ничего проще. Мы пишем в начале программы "uses имя_модуля", далее используем все, что нам этот модуль предоставляет, то есть данные раздела interface. Вот программа, которая использует наш модуль "my_unit".


Program My_program;

uses my_unit;

begin
  Write(GetLines("1.txt"));
  Readln;
end;

Советую протестировать ее следующим образом: прямо в среде Паскаля создайте файл 1.txt и запишите в него любое количество строк. Например так:


11111111
222222
33333
444444444
555
6666666
77777777777

Запустите и поймете, что произошло. Надеюсь как это произошло тоже :))

ЭКСПОРТ ТИПОВ

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

Пусть нам нужно в программе иметь тип, который представляет собой запись с двумя полями. Для того, чтобы описать ее в модуле и использовать в программе, нужно просто поместить в раздел interface подраздел type и описать в нем эту запись. Вот пример такого экспорта:


unit my_unit;

interface

type
  A = record
     Name: string;
     Phone: string;
  end;
 ........

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

ДРУГИЕ ВОЗМОЖНОСТИ

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

  1. Модуль может использовать любые другие модули в самом себе. При этом они могут подключаться как в разделе interface, так и в разделе implementation. Кстати, повторяться uses не должен, то есть написать можно либо в interface, либо в implementation.
  2. В разделе implementation могут быть любые процедуры, не описанные в interface. При этом они будут принадлежать только модулю и недоступны извне. Та же история и с переменными, типами, константами и т.п.
  3. Файл с исходником модуля должен иметь то же имя, которое указано в заголовке unit. К примеру, модуль озаглавленный как "unit my_unit" должен быть сохранен на диске с именем my_unit.pas.

РЕЗЮМЕ

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

На этом все, до встречи!


Где еще можно посмотреть:
http://proge.ru/source/pascal/ - Раздел сайта с исходниками на Паскале. Есть много интересных и полезных модулей. Рекомендую!
http://proge.ru/lib/pascal/pasbp7ul.html - Borland Pascal 7.0 - РУКОВОДСТВО ПО ЯЗЫКУ
http://proge.ru/lib/pascal/pasbp7pg.html - Borland Pascal 7.0 - Справочное руководство программиста
http://proge.ru/board/ - обсудите эту тему на форуме!


Copyright http://www.proge.ru (E-mail: admin@proge.ru).



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

В избранное