Нерассмотренные возможности Паскаля 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Нерассмотренные возможности Паскаля



Вы узнали о Паскале самое основное и распространенное. Однако это составляет, дай бог, одну третью часть всех богатств Паскаля. Оставшиеся 2/3 не изложены мной, так как они или менее часто употребляются, или слишком сложны для вводного курса. Еще одна причина - многие из них имеют дело с низкоуровневыми и чувствительными ресурсами компьютера, а современные компьютеры и операционные системы имеют тенденцию запрещать программисту прямое обращение к этим ресурсам. Поэтому я ограничусь кратким обзором этих возможностей. Интересующихся же я отсылаю к книге Полякова, указанной в списке литературы.

 

Модуль Graph. Подобно курсору в текстовом режиме, в графическом режиме есть свой графический курсор (невидимый). Существует несколько процедур, удобно рисующих с помощью этого курсора отрезки и ломаные. Имеется возможность использовать больше, чем 16 цветов. Можно использовать для заливки ваши собственные узоры. Можно использовать так называемые видеостраницы, которые ускоряют вывод на экран графической информации. Можно организовать на экране несколько графических окон, в каждом из которых в независимой системе координат отображать свою графическую информацию. Можно более тонко управлять выводом на экран векторных шрифтов, устанавливать собственные шрифты. Можно устанавливать разные видеорежимы и использовать свои видеодрайверы.

 

Модуль CRT. Подобно модулю Graph, организующему графические окна, модуль CRT может организовывать текстовые окна, может менять количество букв в строке с 80 на 40, раздвигать и сдвигать текстовые строки, менять яркость текста или делать его мигающим.

 

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

 

Файлы. Кроме текстовых файлов Паскаль различает еще два типа файлов: типизированные и бестиповые. Типизированный файл Паскаль рассматривает, как цепочку данных определенного типа (например, чисел типа Integer или записей заданной структуры). Бестиповой файл Паскаль рассматривает, как длинную цепочку битов, предназначенную для ввода в определенное место оперативной памяти, или наоборот – полученную в результате записи определенной области оперативной памяти на диск.

При работе с файлами и каталогами Паскаль позволяет:

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

· создавать и уничтожать каталоги

· определять текущий каталог

· устанавливать текущий каталог

 

Модуль DOS согласно своему названию позволяет программисту использовать в паскалевской программе многие возможности и команды операционной системы MS-DOS, а именно:

· определять размер дисков и свободного места на диске

· искать файлы

· определять их атрибуты

· анализировать полное имя файла (дорожку)

· работать с прерываниями DOS

· организовывать субпроцессы и резидентные программы

 

Ключи компиляции. В 15.2 мы уже рассматривали ключ компиляции {$I…….}, который позволял включать в программу в качестве фрагмента программный текст из другого файла. Для других целей существуют другие ключи компиляции, которые называются так потому, что используются Паскалем во время компиляции для настройки работы компьютера с программой и для настройки режима компиляции. Эти ключи можно узнать по конструкции {$l…….}, где вместо l стоит латинская буква.

 

Процедуры и функции. Паскаль позволяет использовать процедуры и функции, написанные на языке Ассемблера и предварительно откомпилированные.

Паскаль позволяет хранить процедуры и функции в памяти не только, как составные части программы, но и как данные. Для этого используется специальный тип данных – процедурный. Имена процедур и функций могут служить параметрами в списках параметров других процедур и функций. Это позволяет организовать удобную математическую обработку данных.

Математические возможности Паскаля включают действия над двоичным представлением данных.

 

Объекты. Введение процедур в программирование резко повысило надежность создаваемых больших программ и их обозримость, сделало сам процесс программирования более удобным. Следующим шагом на пути совершенствования программирования стало введение объектов. Объект – это синтез данных и процедур, которые эти данные обрабатывают. Структура объекта такая же, как и у записи (record), только вдобавок к полям для данных имеются поля для процедур и функций. Вот пример записи типа объекта:

TYPE X1 = OBJECT

A:Integer;

B:String;

Procedure C(f:Char);

Function D:Word

END

Объекты в программировании напоминают объекты реального мира. Например, чтобы описать стенные часы, мы должны описать совокупность их составных частей (шестеренки, маятник и прочее – в общем, «данные») плюс совокупность процессов взаимодействия этих частей (как качается маятник, как шестеренка цепляет шестеренку и так далее – в общем «процедуры и функции»).

Типичный пример объекта в программировании – окно в программе Windows. Чтобы заставить окно на экране функционировать, как надо, программисту пришлось описать его размер, цвет, толщину рамки и прочее (данные) плюс процессы перетаскивания его по экрану, изменения размера и прочее (процедуры и функции).

 

Низкоуровневое программирование. Наиболее эффективные программы пишутся на языке низкого уровня Assembler, но на этом языке неудобно создавать большие программы. Профессиональный программист знает, какой участок его паскалевской программы наименее эффективен (например, выполняется медленно). Он может записать этот участок на Ассемблере и вставить в паскалевскую программу. Более того, он может вставить в паскалевскую программу участок на машинном языке.

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

 

Миг между прошлым и будущим

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

Если вы решите стать профессиональным программистом, то будете работать с современными версиями языков программирования, такими как Delphi, и узнаете, что они полностью объектно-ориентированы и имеют богатый набор «модулей», предназначенных для удобного решения часто встречающихся типов задач, таких, например, как управление базами данных, создание окон и кнопок на экране и т.п. По сути, настолько удобного решения, что программу для этих задач компьютер пишет сам, а программист только задает исходные данные. Однако, писать программный текст вам придется все равно.

 

А теперь я хочу предложить вам задание 135 и последнее на звание «Программист-любитель II ранга». На выбор – одно из трех:

· Игра в морской бой

· Игра в крестики-нолики на бесконечном поле

· Игра в шашки

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

Правила морского боя и шашек общеизвестны. Правила крестиков-ноликов на бесконечном поле такие же, как и у крестиков-ноликов на поле 3 на 3, с тем отличием, что в линию нужно выстроить не 3, а 5 ноликов или крестиков. Конечно, запрограммировать игру на бесконечном поле довольно трудно, поэтому рекомендую ограничиться полем 20 на 20 или 10 на 10.

 

Требования и рекомендации к программам:

· Компьютер должен обнаруживать незаконное расположение кораблей, незаконные ходы в крестики-нолики и в шашки.

· Компьютер должен вести счет партий и отображать его на экране

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

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

· При нажатии на клавишу F1 любая порядочная программа предлагает помощь. В вашем случае достаточно показать правила игры

· Неплохо сделать в углу экрана управляемое с клавиатуры меню с такими, примерно, пунктами: сохранить игру, загрузить игру, выход из игры, помощь.

· Для того, чтобы не было игр-близнецов, ходы компьютера не должны быть железно заданы. Например, свои корабли компьютер должен располагать от игры к игре с разумной долей случайности, чтобы человек не мог легко догадаться, где будут стоять корабли в следующей игре. То же относится к выстрелам, ходам в крестики-нолики и в шашки.

· Рекомендации по выбору уровня сложности стратегии: В морском бое стратегия компьютера должна быть очень сильной, чтобы человеку было трудно у него выиграть. В крестиках-ноликах стратегию компьютера затруднительно сделать очень сильной. Достаточно, если компьютер будет обнаруживать простейшие угрозы человека: четверки с одним свободным концом и тройки с двумя свободными концами - и сам стремиться к их созданию. Что касается шашек, то шашечного чемпиона сделать очень трудно. Достаточно, если компьютер не будет бестолку подставлять свои шашки под бой. Правила шашек упростите – например, откажитесь от дамок.

 

 

Любая из этих задач достаточно сложна и потребует многих дней напряженной работы. Если вам кажется, что вы не сможете удовлетворить всем перечисленным в задании требованиям, потому что «мы этого не проходили», то я вам заявляю – все, что нужно, мы проходили! Нужно только немножко подумать.

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

Желаю успеха!

 

 



Поделиться:


Последнее изменение этой страницы: 2016-07-11; просмотров: 206; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.202.214 (0.012 с.)