|
| |||||||||||||||||||||
Паскаль для новичков (часть 1)Автор: Владислав Демьянишин
Еще пятнадцать лет назад наши школы в качестве языка программирования для обучения использовали Basic. Теперь в моде Pascal. Так отдадим же дань моде...
Настоящая серия статей (публикаций) посвящена известной реализации языка Pascal фирмы Borland International для персональных IBM-совместимых компьютеров - языку Turbo Pascal и предусматривает следующие тематические разделы:
Введение (краткая история создания языка Pascal)
Часть I. Pascal для новичков
1. Программный пакет(программы, необходимые для работы на Pascal и где их взять).
2. Ликбез(ячейки памяти - биты, байты, килобайты,..., порты, адреса)
3. Лексика и структура программ на Pascal.
4. Типы языка(система типов данных языка).
5. Операторы(описание операторов языка).
6. Процедуры и функции.
7. Динамически распределяемая память.
8. Выражения.
9. Работа с файлами.
10. Модули(стандартные модули, разработка собственных модулей).
11. Средства объектно-ориентированного программирования.
12. Системно-зависимые расширения(оверлеи, системные вызовы, память, порты, прерывания).
13. Рекомендуемая литература.
Часть II. Pascal для продвинутых
1. Снятие временных характеристик программ
2. Запуск независимых программ из Pascal-программы
3. Работаем с текстовым режимом
4. Работа с клавиатурой.
5. Покоряем MS Mouse
6. Расширение математических возможностей.
7. Покоряем XMS память.
8. Работа с INI файлами.
9. Ресурсные файлы.
10. Работаем с графическим режимом
11. Создание резидентных программ
Я помогу Вам приобрести базовые знания о языке Turbo Pascal и программированию на нем. К моменту, когда Вы приступите к чтению второй части для продвинутых, я поделюсь с Вами своим накопленным опытом в программировании, раскрою свои секреты.
Если эти знания пригодились мне, то пускай они послужат и Вам.
ВведениеЯзык программирования Pascal был разработан в 1968-1971 гг. Никлаусом Виртом в Цюрихском Институте информатики (Швейцария). Первоначальная цель разработки языка диктовалась необходимостью инструмента "для обучения программированию как систематической дисциплине". Однако очень скоро обнаружилась чрезвычайная эффективность языка Pascal в самых разнообразных приложениях, от решения небольших задач численного характера до разработки сложных программных систем - компиляторов, баз данных, операционных систем и т.п. К настоящему времени Pascal принадлежит к группе наиболее распространенных и популярных в мире языков программирования. Существуют многочисленные реализации языка практически для всех машинных архитектур; разработаны десятки диалектов и проблемно-ориентированных расширений языка Pascal; обучение программированию и научно-технические публикации в значительной степени базируются на этом языке.
Основной целью разработки системы программирования Turbo Pascal является обеспечение мощной и всесторонней поддержки всего технологического цикла создания программ производственного, научного и коммерческого назначения.
Язык Turbo Pascal - мощное расширение американского стандарта (ANSI Pascal), учитывающее архитектурные особенности операционной обстановки (MS-DOS) и снабженное внушительными по объему и разнообразию пакетами стандартных процедур. Такие принципиальные нововведения, как модульность и объектно-ориентированные средства разработки программ.
Программный пакетДля начала работы на Turbo Pascal надо иметь в распоряжении необходимые программы обеспечивающие составление и отладку программ на языке Turbo Pascal. Я не стану нагружать Вас, просто познакомлю с необходимыми программами. В дальнейшем я расскажу о этих программах подробнее, а пока Вам нужно знать следующее краткое описание пакета этих программ:
Turbo.exe - интегрированная среда разработки программ на языке Turbo Pascal, включает в себя редактор исходного кода программы, отладчик, компилятор, систему помощи.
Turbo.hlp - файл помощи к редактору.
Turbo.tpl - файл содержащий основные модули System(System.tpu), Dos(Dos.tpu),Crt(Crt.tpu),Printer(Printer.tpu),Overlay(Overlay.tpu).
Tpc.exe - компилятор командной строки(должен находиться в одном каталоге с Turbo.tpl).
Дополнительный модуль Graph.tpu.
Необязательный Tpumover.exe - компоновщик библиотеки Turbo.tpl.
Библиотеки графического интерфейса *.bgi, библиотека шрифтов *.chr .
Как всем этим пользоваться?Текст программы на языке Turbo Pascal должен содержаться в дисковом файле стандартной для MS-DOS структуры. Этот файл может быть сформирован любым доступным текстовым редактором (в частности, встроенным редактором системы Turbo Pascal).
Компилятор командной строки Tpc.exe предназначен для компиляции уже существующего файла *.pas с исходным кодом программы, например так:
c:/tpc.exe myprog.pas
выполнив эту командную строку получим файл myprog.exe, если конечно исходный код myprog.pas не содержит ошибок, выявляемых при компиляции, если же ошибка все-таки есть, то получим сообщение об ошибке, примерно такое:
c:/tpc.exe myprog.pas
Turbo Pascal Version 6.0 Copyright (c) 1983,90 Borland International
MYPROG.PAS(4): Error 3: Unknow identifier.
a:=b;
^
Итак, строка
MYPROG.PAS(4): Error 3: Unknow identifier.
гласит, что в файле MYPROG.PAS в строке 4 найдена ошибка с кодом 3 и названием "Unknow identifier". Строки
a:=b;
^
показывают строку, где была найдена ошибка и значком "^" отмечено место ошибки в строке.
Интегрированная среда разработки программ Turbo.exe является прежде всего редактором. Его можно запустить просто с пустым окном редактора:
c:/turbo.exe
и можно начинать писать новую программу. Можно запустить с именем уже существующего файла *.pas с исходным кодом программы:
c:/turbo.exe myprog.pas
и можно продолжать писать программу в окне редактирования.
Чтобы в редакторе открыть уже существующий *.pas файл, надо нажать [F3] и выбрать имя необходимого файла. Закрыть текущее окно можно одновременным нажатием [Alt]+[F3]. Если в редакторе уже открыто несколько файлов, то перейти в нужное окно можно нажав одновременно [Alt] и номер окна [1]...[9].
Сохранить редактируемый файл из текущего окна можно нажав [F2].
Откомпилировать исходный код можно нажав [F9]. Если в программе будет найдена ошибка, то на экране появится соответствующее сообщение, а если компиляция пройдут успешно, то появится небольшое окно с информацией:
Main file: MYPROG.PAS
Compiling: MYPROG.PAS
Destination: Disk Liner number: 1501
Free memory: 81K Total lines: 1501
Destination - указывает путь компиляции Disk или Memory.
При использовании компиляции в Memory (память) компилятор не создает файл *.exe и занимает много оперативной памяти. Если использовать компиляцию на Disk (диск), то компилятор создаст файл *.exe.
Free memory - свободная память в килобайтах, учитывая то что компилятор тоже находится в оперативной памяти.
Total lines - количество строк в исходном коде программы.
Запускается программа на выполнение клавишами [Ctrl]+[F9].
Прервать выполнение программы можно клавишами [Ctrl]+[Break].
Пошаговое выполнение программы (трассировка) выполняется клавишей [F8]. При каждом нажатии этой клавиши происходит выполнение одной строки кода. Для детальной трассировки надо использовать клавишу [F7].
Результат действия трассируемой программы можно увидеть, нажав [Alt]+[F5].
Выйти из окна редактирования в главное меню редактора можно клавишей [F10], а вернуться обратно [ESC] или [ESCAPE].
Выход из редактора в DOS клавишами [Alt]+[X].
Помощь вызывается клавишей [F1].
Алфавитная помощь [Shift]+[F1].
Помощь по конкретному элементу синтаксиса и процедурам можно получить разместив курсор на первом символе интересующего слова и нажать [Ctrl]+[F1].
Просмотр значений переменныхВ режиме отладки программы можно легко указать переменные, значения которых необходимо отслеживать и показывать в окне Watches. Для этого выйдя из окна редактирования клавишей F10 и выбрав меню Debug > Watches > Add Watch.. следует ввести имя переменной. При вводе первой переменной будет открыто окно Watches. Находясь в нем, можно нажать [Ins] ([Insert]) чтобы ввести еще одну переменную для просмотра ее значения. Для удаления переменной из окна просмотра следует пользоваться клавишей [Del] ([Delete]).
Сеанс MS-DOSПоскольку для более комфортной работы в Turbo Pascal желательно запускать текстовый редактор Паскаля turbo.exe в сеансе MS-DOS, то я рекомендую воспользоваться архивом Pascal.rar, где содержится сам компилятор языка, графические библиотеки, шрифты, основные модули. Помимо этого в архиве содержится Volkov Commander – файловый менеджер, позволяющий удобно копировать, перемещать файлы в среде DOS. Следует распаковать архив, при этом будет создана папка Pascal, где в папке VC будет запускной файл VC.com, для которого следует сделать ярлык на рабочем столе, чтобы было легко запускать его. Тогда система автоматически будет создавать сеанс MS-DOS и в нем запускать VC (Volkov Commander).
А уже находясь в нем можно многократно запускать компилятор. В конце работы с компилятором редактор следует закрыть комбинацией [Alt]+[X]. Затем закрыть Volkov Commander клавишей [F10]. После этого сеанс MS-DOS будет закрыт автоматически. Если нет, то следует в свойствах ярлыка сеанса в закладке Программа установить галочку Закрывать окно по завершении работы. Также рекомендую для каждой очередной создаваемой на Паскале программы создавать отдельную папку и туда копировать файлы: turbo.exe, turbo.tpl, tpc.exe, turbo.hlp, tpc.cfg.
Следует помнить, что Volkov Commander настроен так, что при выборе курсором в нем файла с окончанием .PAS и нажатием [F3] автоматически откроется редактор turbo.exe с уже загруженным выбранным файлом исходного кода выбранной программы. Если на выбранном файле .PAS нажать [Enter], то файл будет автоматически откомпилирован компилятором командной строки tpc.exe, в результате чего будет создан уже запускной файл (.EXE) вашей программы в этой же папке.
ЛикбезОднажды один из моих бывших сокурсников высказал непонимание того, что в единице памяти – байте может помещаться число от 0 до 255 и не более. Такая безграмотность меня поразила. Ведь мы вместе учили в вузе одно и тоже, но я усвоил, а он и после окончания вуза так и остался стоять перед этой дилеммой. Так высоко поднимем факел знаний и осветим дорогу любознательному путнику…
Каждая программа производит какие-нибудь операции над числами. Как правило, все числа в компьютере представляются с помощью нулей и единиц (а не десяти цифр, как это привычно для людей), что поделать, так сложилось :) . Иными словами, компьютеры обычно работают в двоичной системе счисления, поскольку при этом их устройство получается значительно более простым. Это значит что любой элемент ЭВМ понимает только два состояния 0/1, выключено/включено, ложь/истина. Компьютер внутри можно представить набором переключателей, которые могут находиться в двух позициях 0/1, выключено/включено, ложь/истина. Каждый такой переключатель называется битом(bit). Единицей информации в компьютере является один бит, т.е. двоичный разряд, который может принимать значение 0 или 1. Значит в одном бите информации можно хранить целые числа от 0 до 1. Маловато будет! А если взять и объединить вместе два бита, то получим возможность хранить целые числа от 0 до 3. Как это получается? Обозначим бит значком "X", то два бита будут выглядеть так
младшему биту X1 соответствует число 2 в степени 0, что равно 1;
старшему биту X2 соответствует число 2 в степени 1, что равно 2;
Если взять биты, которые равны единице, и сложить их двоичные разряды, то получим число, которое они вместе представляют. Например:
X2 X1
биты 0 0 где бит X1=0 и бит X2=0, то общее число 0;
биты 0 1 где бит X1=1 и бит X2=0, то общее число 1;
биты 1 0 где бит X1=0 и бит X2=1, то общее число 2;
биты 1 1 где бит X1=1 и бит X2=1, то общее число 2+1=3;
Таким образом, используя комбинации с несколькими битами можно получить определенную емкость для хранения чисел.
Все равно маловато!
Ну хорошо, возьмем четыре бита, в которых мы сможем хранить целые числа от 0 до 15.
младшему биту X1 соответствует число 2 в степени 0, что равно 1;
биту X2 соответствует число 2 в степени 1, что равно 2;
биту X3 соответствует число 2 в степени 2, что равно 4;
старшему биту X4 соответствует число 2 в степени 3, что равно 8;
Например:
т.е. двоичному числу 0101 соответствует десятичное 5. Еще пример:
т.е. двоичному числу 1110 соответствует десятичное 14.
Двоичная арифметика (для особо интересующихся).
Сложение в двоичной системе выполняется по тем же правилам, что и в десятичной арифметике, вот простой пример:
т.е. складывая младшие разряды 1+1=2, но число 2 в одном бите мы хранить не можем, и значит переносим 2 в следующий по старшинству разряд а в младшем остается остаток 0. Это все равно, если складывать десятичные 5+5=10, то число 10 в одном десятичном разряде не помещается, так как в одном десятичном разряде могут храниться числа от 0 до 9, и следовательно десятичный результат 10 состоит из двух разрядов: единицы в старшем разряде и нуля в младшем.
Вот еще пример:
В таком виде происходят вычисления и в таком виде данные хранятся в памяти ЭВМ.
Обычно биты организуются в группы по 8 бит, называемые байтами (byte) и могут хранить целые числа от 0 до 255.
В свою очередь байты могут группироваться парами в слова (word) и могут хранить целые числа от 0 до 65535. Когда байтов становится очень много, информацию начинают измерять в килобайтах (Кбайт) и 1 Кбайт=1024 байтам. Следующей единицей информации является мегабайт (Мбайт) и 1 Мбайт=1024 Кбайтам, а так же гигабайт (Гбайт) и на конец терабайт (Тбайт). Почему число 1024, а не 1000, как грамм в килограммах или метров в километрах? Откуда взялось магическое число 1024? Все просто, поскольку это результат все той же степени двойки, поскольку все пошло от двоичной системы счисления – машинной системы счисления. То есть число 1024 легко делится нацело на любую степень двойки, а значит вычисления адреса или длины передаваемых данных процессор сможет выполнять значительно быстрее, не затрачивая дополнительно драгоценное процессорное время.
АдресаКаждый байт несет некую информацию, и к нужному байту или к группе байтов, например, слову (word) или к большой группе байтов (массиву или array) надо как-то обращаться (читать/записывать). Каждый байт имеет свой уникальный адрес (address). Например, есть 100 байт, памяти:
байт "месяц" хранит номер текущего месяца (целое число от 1 до 12)
и находится по адресу 0054;
байты "год1" (младший) и "год2" (старший) вместе образуют слово и хранят информацию о текущем годе (целое число от 1 до 2010 и больше до 65535) и находится по адресу 0070;
Т.е. адрес всегда указывает на самый младший байт в группе адресуемых байт. Обычно адрес так и называют - указатель.
ПортыВ компьютере есть еще один вид памяти, к которой можно обращаться по адресу, но это не та память, в которой программист может размещать все, что он захочет. Порт(port) - это отдельная байтовая ячейка с уникальным адресом, которая функционирует предопределенным для нее образом. Есть порты, в которые можно заносить определенные значения, а есть порты, из которых можно только читать информацию в виде отдельных байт. Такие порты называются однонаправленными. Есть также двунаправленные порты, из которых можно не только читать, но и в них можно записывать.
Адрес байта памяти и адрес некого порта могут совпадать, но это не значит, что адреса указывают на одно и тоже. Память компьютера служит для хранения информации, а порты служат для обмена информацией с устройствами компьютера. Например, порт клавиатуры, из которого можно прочитать код нажатой клавиши, или порт принтера, записывая в который можно выводить информацию на принтер.
Продолжение следует…
© Владислав Демьянишин Вы находитесь на официальном сайте Владислава Демьянишина - разработчика игры Dune IV (Dune 4). На нашем сайте Вы можете бесплатно скачать игры Dune IV (Dune 4), Battle City (Танчики с Dendy/Nintendo), читы к играм и многое другое. Также Вы можете скачать бесплатно программы и полезные утилиты. Все программы чистые, т.е. не содержат вирусов и иного вредоносного ПО.
Журнал > Программирование > Паскаль для новичков (Turbo Pascal, Assembler) > Паскаль для новичков (часть 1)
| ||||||||||||||||||||||
|
||||||||||||||||||||||