Рефераты. Программирование на языке Турбо Паскаль p> Процедуры последнего вида оказываются достаточно удобными. Можно один раз написать такую процедуру, убедиться в её работоспособности и использовать в других программах. Примерами таких процедур являются процедуры для работы со строками, встроенные в Турбо-Паскаль.

В нашем примере можно переписать программу и по-другому. Максимум из трёх чисел определяется по ним однозначно, или, говоря математическим языком, является функцией этих трёх чисел. Понятие функции есть также и в
Паскале. Рассмотрим такую программу: program Max4; var a,b,c,m: integer; function Max(n1,n2,n3: integer) : integer; var m: integer; begin if n1>n2 then m:=n1 else m:=n2; if n3>m then m:=n3;

Max:=m; end; begin write('Введите a: '); readln(a); write('Введите b: '); readln(b); write('Введите c: '); readln(c); writeln('Максимум = ',Max(a+b,b+c,a+c)); readln; end.

Нам уже известно как вызывать функцию из программы (например sqrt, sin и т. п.). Рассмотрим описание функции. Оно очень похоже на описание процедур, но есть два отличия:

1. После имени функции и списка параметров (если есть) через двоеточие записывается тип значения функции (возможны не только числовые типы, но и логические, строковые, символьные);

2. Среди операторов в теле функции наиболее важными являются операторы присваивания значения функции (в нашем случае это строчка Max:=m;).

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

Приведём другие примеры процедур и функций.

1. Напишем на Паскале функцию [pic]. function Cube(x: real): real; begin

Cube:=x*x*x; end;

2. Вычисление площади треугольника через длины сторон. Здесь будет использована формула Герона: [pic], где p ( полупериметр треугольника, a, b, c ( длины сторон. function Square(a,b,c: real): real; var p: real; begin p:=(a+b+c)/2;

Square:=sqrt(p*(p-a)*(p-b)*(p-c)); end;

3. Процедура для решения квадратного уравнения. Будем передавать этой процедуре коэффициенты уравнения, а результаты своей работы она будет выдавать в трёх параметрах-переменных. Через первую, логического типа, процедура сообщит, есть ли вещественные корни, а еще в двух она выдаст сами эти корни (если корней нет, то на эти две переменные пользователь нашей процедуры может не обращать внимания). procedure SqEquation(a,b,c: real; var RootsExist: boolean; var x1,x2: real); var d: real; begin d:=sqr(b)-4*a*c; if d>=0 then begin

RootsExist:=true; x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); end else RootsExist:=false; end;

Можно вместо процедуры написать и функцию, по логическому значению которой мы определяем, есть ли корни, а сами корни передаются также как и в процедуре: function EqHasRoots(a,b,c: real; var x1,x2: real) : boolean; var d: real; begin d:=sqr(b)-4*a*c; if d>=0 then begin

EqHasRoots:=true; x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); end else EqHasRoots:=false; end;

Использовать такую функцию даже проще чем последнюю процедуру: if EqHasRoots(1,2,1,r1,r2) then writeln(r1,' ',r2) else writeln('Нет корней');

Лекция 10. Модуль CRT

Модуль CRT - набор средств для работы с экраном в текстовом режиме, клавиатурой и для управления звуком. Для того чтобы использовать эти средства требуется после заголовка программы записать: uses CRT;.

1. Управление экраном

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

Наиболее распространённым в настоящее время является текстовый режим
80x25 при 16 возможных цветах текста и фона. Многие графические адаптеры позволяют использовать другие режимы, например: 40x25, 80x43, 80x50 и т. д.

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

Ниже приведены основные процедуры и функции для управления экраном в текстовом режиме.
|Название |Назначение |
|InsLine |Вставить строку в том месте где |
| |находится курсор, все строки ниже |
| |курсора сдвигаются вниз на одну позицию.|
| |Курсор остаётся на том же месте. |
|DelLine |Удалить строку в позиции курсора. Курсор|
| |остаётся на том же месте. |
|GotoXY(x,y: byte) |Переместить курсор в позицию (x,y); x — |
| |номер строки, y — номер столбца. |
|ClrEOL |Очистить строку от курсора и до правого |
| |края экрана. Курсор остаётся на прежнем |
| |месте |
|HighVideo |Устанавливает повышенную яркость для |
| |вывода текста |
|LowVideo |Пониженная яркость |
|NormVideo |Нормальная яркость |
|TextColor(color: byte) |Устанавливает цвет для вывода текста. |
| |Значения цветов — обычно числа от 0 до |
| |15. Вместо этих чисел можно указывать и |
| |существующие константы (black, white, |
| |red, green, blue, magenta, cyan, brown, |
| |lightgray и т. п.). При необходимости |
| |можно заставить текст мерцать прибавляя |
| |к номеру цвета число 128 или константу |
| |Blink. |
|TextBackGround(color: byte) |Устанавливает цвет для фона. |
|ClrScr |Очистить экран и поместить курсор в |
| |левый верхний угол, т.е. в позицию (1,1)|
| |— 1-я строка, 1-й столбец. При очистке |
| |экран заполняется цветом фона (см. |
| |TextBackground) |
|WhereX: byte |Эта функция возвращает номер строки, в |
| |которой находится курсор. |
|WhereY: byte |Номер столбца, в котором находится |
| |курсор |

2. Работа с клавиатурой

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

1. KeyPressed: boolean — возвращает true, если очередь клавиатуры не пуста (то есть была нажата). Простейший пример использования — повторять какие либо действия, пока не нажата клавиша: repeat ... until KeyPressed;.

2. ReadKey: char — возвращает символ, соответствующий нажатой клавише (из очереди клавиатуры). Если пользователь нажал клавишу, для которой имеется код ASCII, то в очередь будет положен один соответствующий символ, а если это специальная клавиша (F1, F2, ... F12, клавиши управления курсором, Ins, Del, Home, End, PgUp, PgDn), то сначала в очередь будет положен символ с кодом 0, а затем дополнительный символ.

Если очередь клавиатуры пуста, то Readkey будет ждать, пока пользователь не нажмёт какую-либо клавишу.

Для демонстрации работы ReadKey можно написать такую программу: uses Crt; var c: char; begin repeat c:=ReadKey; writeln(ord(c)); until c=#27 {клавиша Escape}; end.

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

3. Другие возможности

При необходимости организации задержек в программе можно использовать процедуру Delay(time: word). Параметр time — время в миллисекундах, на которое нужно приостановить программу.

Ещё одна возможность модуля CRT — работа с системным динамиком. Для включения звука нужна процедура Sound(f: word) (f — частота в герцах).
После включения требуется задержка (Delay) на необходимое время звучания, затем — выключение с помощью NoSound. Если не воспользоваться NoSound, то звук будет слышен даже после выхода из программы на Паскале.

Лекция 11. Графика в Турбо Паскале

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

Заметим, что существуют разные графические режимы, они отличаются количеством точек по горизонтали и вертикали (разрешением), а также количеством возможных цветов, например: 320x200x16, 640x480x16, 640x200x16,
800x600x256 и т. п.

Все средства для работы с графикой содержаться в стандартном модуле
Graph, поэтому его нужно будет упоминать после слова uses.

1. Включение и выключение графического режима.

Для включения графического режима используется процедура
InitGraph(driver,mode,path) опишем назначение её параметров: driver ( переменная типа integer, в котором задаётся тип видеоадаптера, установленного в компьютере. В модуле определены константы для различных адаптеров, которые избавляют нас от необходимости запоминать числа. Имеются такие константы: CGA, EGA, EGA64, EGAMono, VGA, MCGA, IBM8514 и т. п. Для нас наиболее важной будет константа detect, при указании которой InitGraph сама подыщет наиболее мощный тип адаптера, совместимый с тем адаптером, который установлен на компьютере. mode ( также переменная типа integer, задаёт режим, в котором работает выбранный видеоадаптер (здесь также определены константы). Почти каждый видеоадаптер может работать в нескольких режимах, например, у VGA есть
640x200x16 (VGALo), 640x350x16 (VGAMed), 640x480x16 (VGAHi). Если в первом параметре было указано значение detect, то InitGraph не обращает внимания на mode, а устанавливает наилучший, на её взгляд, режим. path ( строковый параметр. Для каждого видеоадаптера (или для группы сходных видеоадаптеров) существует программа-драйвер, с помощью которой модуль Graph общается с видеоадаптером. Такие драйверы хранятся в файлах с расширением «bgi». В параметре path указывается каталог, в котором хранятся драйверы. Если они находятся в текущем каталоге, то этот параметр равен пустой строке.

Обычно для включения графики мы будем использовать InitGraph в таком виде:

const gpath = ‘Y:WIN_APPSBPBGI’ var gd,gm: integer;

... begin

... gd:=Detect;

InitGraph(gd,gm,gpath);

...

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

2. Построение элементарных изображений

Система координат при работе с графикой имеет начало (точку (0,0)) в левом верхнем углу экрана. Ось x направлена вправо, ось y ( вниз. Очевидно, что все точки экрана имеют целочисленные координаты.

Страницы: 1, 2, 3, 4, 5, 6



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.