Объединение с другим множеством 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 переводится как «сборщик»). Его относят к языкам низкого уровня, – в отличие от Паскаля, Си и многих других, причисляемых к языкам высокого уровня. За что же так «унижен» Ассемблер? За то, что оперирует с потрохами процессора: адресами памяти, регистрами, флагами. Программирующий на Ассемблере должен хорошо представлять устройство компьютера и процессора, – на низком уровне нужна высокая квалификация! Ассемблер – удел профессионалов, и к нему прибегают там, где другие языки не годятся.
Технологии – не упускайте их из виду!
Изучая современные языки, вы постигните и технологии разработки крупных проектов: модульное и объектное программирование. И это не все. Технологии не стоят на месте, и новинки стремительно сменяют одна другую. Держите «руку на пульсе», следите за развитием технологий, – кто зазевался, тот отстал!
Изучайте типовые алгоритмы и структуры данных
Вам надо хорошо овладеть языками, но это не все. Любой проект начинают с разработки алгоритмов. Многие типовые задачи давным-давно решены, и для них созданы эффективные алгоритмы. Не изобретайте велосипед, изучайте типовые алгоритмы и структуры данных. Некоторые из них вам уже знакомы: это сортировка, двоичный поиск, списки, графы, стеки и очереди. И, хотя нерешенным задачам счету нет, в основе их решений лежат типовые алгоритмы и структуры данных.
Читать дальше