Олег Деревенец - Песни о Паскале
- Название:Песни о Паскале
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Олег Деревенец - Песни о Паскале краткое содержание
Песни о Паскале - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
• Объектно-ориентированное программирование основано на трех дополняющих друг друга механизмах: инкапсуляции, наследовании и полиморфизме.
• Инкапсуляция – это объединение данных и процедур, их обрабатывающих, в едином объекте.
• Наследование позволяет создавать новые типы объектов на базе существующих. Так создается иерархия родственных объектов.
• Полиморфизм состоит в схожем поведении объектов родственных типов.
А) Разработайте иерархию «человечьих» объектов в соответствии со следующим рисунком (новые типы объектов выделены цветом).

Дайте новым типам объектов подходящие имена, дополните их надлежащими полями, переопределите конструкторы и метод Report. Затем исследуйте механизм полиморфизма на предке и всех его потомках.
Б) Мощность множеств в Паскале не превышает 256, и часто этого бывает недостаточно. Сконструируем свой тип множеств, назовем его TBigSet, мощность которого составит 65536 (соответствует диапазону для типа Word). Оформим это множество как объект.
type
TSetArray = array [0..4096] of word; { хранит 65536 бит (4096*16) }
PSetArray = ^ TSetArray; { тип-указатель на массив }
TBigSet = object
mArray : PSetArray; { указатель на динамический массив }
Constructor Init; { создает динамический массив mArray )
Destructor Done; { освобождает память, занятую массивом }
procedure ClearAll; { опустошает множество }
procedure SetAll; { делает множество полным }
procedure Insert(N); { вставляет элемент N в множество }
procedure Delete(N); { удаляет элемент N из множества }
function Member(N):Boolean; { проверяет принадлежность N к множеству }
function IsEmpty:Boolean; { проверяет пустоту множества }
procedure Union(BS: TBigSet); { добавляет другое множество }
procedure InterSect(BS: TBigSet); { формирует пересечение множеств }
procedure Load(var F: text); { вводит множество из файла }
procedure Save(var F: text); { выводит множество в текстовый файл }
end;
Примените здесь сведения из главы 48, а также идеи из задачи 49-В (глава 49). Так, включение в множество и исключение из него элемента N может быть выполнено установкой и сбросом бита в массиве mArray^.
mArray^[N div 16]:= mArray^[N div 16] or (1 shl (N mod 16))
mArray^[N div 16]:= mArray^[N div 16] and not (1 shl (N mod 16))
Объединение с другим множеством Union(BS:TBigSet) можно сделать логическим суммированием массивов:
for I:=0 to 4095 do mArray^[ I ]:= mArray1^[ I ] or BS.mArray^[ I ]
И так далее. Напишите реализацию всех методов объекта и примените его к решету Эратосфена и прочим задачам из главы 38.
Глава 62
Самое интересное только начинается!

Мы у финишной черты, где принято подводить итоги. Нет, друзья, повременим с итогами, ведь для вас все только начинается, – лучше обсудим ваши планы на будущее.
Чем зарабатывает программист? – создает программы. У хорошего мастера дело спорится, и товар его добротен. Как скорее достичь мастерства? За что браться, с чего начать? Вот несколько советов.
Первым делом хорошенько оседлайте Паскаль – один из лучших языков программирования. Даже школьник, владеющий Паскалем, – это наполовину инженер, ведь мощная система программирования Delphi построена на этом языке. Часть пути к вершинам Паскаля мы преодолели вместе, но освоили далеко не все его возможности. Дальше ступайте сами: преодолев робость и сомнения, откройте «взрослый» учебник по Паскалю, – некоторые из таких учебников найдете в списке рекомендуемой литературы. Там вас ждет немало открытий!
А что другие языки? Среди них отметим Си – один из самых используемых. Но почему не Паскаль?
Языки Паскаль и Си – ровесники, они родились в начале 70-х годов прошлого века. Паскаль был задуман как строгий язык для надежного программирования, но на первых порах применялся лишь в образовании. Создатели языка Си преследовали иную цель, – им срочно понадобился незатейливый язык для появившихся в ту пору мини-ЭВМ. Надо заметить, что программы, написанные на Паскале, эти слабенькие ЭВМ переваривали с трудом, а строгие ограничения надежного Паскаля по рукам и ногам вязали ретивых системщиков. Потому сработанный на скорую руку простенький и ненадежный Си вдруг вынырнул вперед и захватил лидерство. А что было дальше? – об этом нельзя промолчать.
По мере того, как компьютеры становились мощнее, а программы сложнее, требования к их надежности возросли – ошибки программистов крайне дороги! Сторонники Си осознали необходимость типизации данных и прочих мер повышения надежности и позаимствовали эти идеи из Паскаля. С другой стороны слишком суровый контроль типов в Паскале был слегка ослаблен – в разумных пределах. Это и другие новшества, добавили языку гибкости, и Паскаль пробился в области, где безраздельно хозяйничал Си. Нынешние потомки Паскаля – языки Ada и Modula – применяют для создания надежных, ответственных программ (авиация, космос, вооружения). Но это секрет, о котором «настольные» программисты не знают, и для них C/C++ – «языки профессионалов». Впрочем, в «настольном» программировании эти языки все ещё востребованы, хотя и вытесняются где-то более современными Java и C#.
Ещё одна популярная сфера – разработка сайтов. Тем, кто углубится в WEB-программирование, пригодятся PHP, Perl, JavaScript, Pyton и другие WEB-языки (они все плодятся и плодятся!).
Особняком от «толпы» языков программирования держится Ассемблер (Assembler переводится как «сборщик»). Его относят к языкам низкого уровня, – в отличие от Паскаля, Си и многих других, причисляемых к языкам высокого уровня. За что же так «унижен» Ассемблер? За то, что оперирует с потрохами процессора: адресами памяти, регистрами, флагами. Программирующий на Ассемблере должен хорошо представлять устройство компьютера и процессора, – на низком уровне нужна высокая квалификация! Ассемблер – удел профессионалов, и к нему прибегают там, где другие языки не годятся.
Изучая современные языки, вы постигните и технологии разработки крупных проектов: модульное и объектное программирование. И это не все. Технологии не стоят на месте, и новинки стремительно сменяют одна другую. Держите «руку на пульсе», следите за развитием технологий, – кто зазевался, тот отстал!
Читать дальшеИнтервал:
Закладка: