Константы в Pascal.

Иногда, бывает так, что у нас в программе встречаются величины, которые не меняются в процессе выполнения программы (т.е. фактически они противоположность переменных). Такие величины называются константами. Константы указываются в специальном ...

Функции trunc, round в Pascal.

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

Применение логических операций с оператором IF.

В данном уроке мы рассмотрим применение логической операции And с условным оператором If.

Циклы и массивы

Тип данных Real.

Тип REAL (вещественный). Число типа REAL занимает три слова (шесть байтов). При работе с вещественными числами нужно помнить, что на любом отрезке вещественной оси существует бесчисленное множество ...

Оператор варианта CASE.

Иногда его называют также оператором выбора. Это оператор CASE, который является обобщением оператора IF и позволяет сделать выбор из произвольного числа имеющихся вариантов.

В предыдущем примере мы начали строить систему координат с помощью процедуры SetViewPort. Дополним предыдущий пример тем, что построим на осях координат единицы измерения и пронумеруем их.

 Построение системы координат с помощью процедуры SetViewPort.




Program Graphika27;
Uses Graph;
var  i,ch:integer;
chi:string;
Procedure Graphinterface;
Var  gd, gm, error:Integer;
s:String;
Begin
gd:=detect;
s:='';
Initgraph(gd,gm,s);
error:=GraphResult;
if error<>GrOk then
begin
writeln(GraphErrorMsg(Error));
Halt(error)
end
end;
begin
Graphinterface;
setviewport(getmaxx div 2, getmaxy div 2, getmaxx, getmaxy,clipoff);
setcolor(5);
setlinestyle(0,0,3);
line(-300,0,300,0);
line(0,-300,0,300);
line(300,0,270,-10);
line(300,0,270,10);
line(0,-300,-10,-270);
line(0,-300,10,-270);
i:=-250;
repeat
begin
line(i,10,i,-10);
i:=i+50;
end;
until i=300;
i:=-250;
repeat
begin
line(-10,i,10,i);
i:=i+50;
end;
until i=300;
ch:=-5;
i:=-250;
settextstyle(7,0,2);
setcolor(yellow);
repeat
begin
str(ch,chi);
outtextxy(i,20,chi);
ch:=ch+1;
i:=i+50;
end;
until ch=6;
ch:=5;
i:=-250;
repeat
begin
str(ch,chi);
outtextxy(20,i,chi);
ch:=ch-1;
i:=i+50;
if ch=0 then
begin
ch:=ch-1;
i:=i+50;
end;
end;
until ch=-6;
readln;
closegraph
end.



В строке №3 записываем несколько переменных. Одна из этих переменных «i» будет использоваться для цикла.

В строке №30 этой переменной мы присваиваем первоначальное значение равное – 250.

В строке №31 начинается цикл Repeat . . Until. В этом цикле будут выполняться 2 операции (строка №33 – рисование линии и строка №34 – операция присваивания), поэтому обе операции необходимо заключить в операторные скобки begin . . end (строка №32 - №35). Напомню, что операторные скобки необходимо использовать каждый раз, когда в цикле выполняется более одной операции.

Строка №33. Рисуем линию. В качестве координаты X указываем значение переменой «i». Первоначально, переменная «i» равна -250. Таким образом, строится линия с координатами        (-250,10,-250,-10).

Строка №34. Присваиваем переменной «i» новое значение, которое на 50 пикселей больше предыдущего. После этого будет построена линия с координатами (-200,10,-200,-10). Цикл будет продолжаться до тех пор, пока переменной «i» не будет присвоено значение в 300 пикселей (строка №36). Таким образом, будет построено несколько линий, которые будут пересекать ось X с интервалом в 50 пикселей.

В строке №37 - №43 также строим линии, которые теперь будут пересекать ось Y.
На рис. снизу представлен предварительный результат действия циклов.

Postroenie sistemih koordinat s pomothjyu procedurih SetViewPort

Теперь для каждой из этих линий поставим в соответствие число от  -5 до 5.

В строке №3 указываем переменную для хранения этих чисел «ch»

В строке №44 присваиваем переменной «ch» первоначальное значение, равное  -5.

В строке №45 переменной «i», которая используется для определения шага цикла, присваиваем значение   -250.

Строка №46. Устанавливаем шрифт, направление и величину символов выводимого текста. Здесь необходимо учесть, что если вы собираетесь выводить текст за пределами окна, установленного процедурой SetViewPort, то следует выбирать шрифт, отличный от шрифта DefoltFont (т.е. того, который стоит по умолчанию). Если вы будете использовать этот шрифт, а текст не поместится в окно, то он просто не выведется на экран.

В строке №47 устанавливаем цвет для выводимых символов.

Строка №48. Начало цикла. В цикле будет выполнено 4 операции (строка №50 - №54).

Строка №50. Переводим числовое значение переменной «ch» в строковое значение и записываем это строковое значение в переменную «chi» (не забудьте объявить эту переменную в разделе Var – строка №4).  Первоначальное значение переменной «ch» равно  числу  -5. С помощью процедуры Str это число будет преобразовано в символ   -5.

Строка №51. Выводим на экран текст. В качестве координаты X указываем значение переменной «i», а в качестве текста указываем значение переменной «chi». Первоначальное значение переменной «i» равно  -250, а первоначальное значение переменной «chi» является символ   -5. Таким образом, с помощью процедуры OutTextXY, на экран выведется символ  -5 с координатами (-250,20).

В строке №52 увеличиваем переменную «ch» на единицу, а встроке №53 увеличиваем переменную «i» на 50 пикселей. После этого, на экран выведется уже символ  -4 в координатах  (-200,20). Цикл будет повторяться до тех пор, пока переменной «ch» не будет присвоено значение, равное 6.   Таким образом, на экран выведется 11 чисел от -5 до 5 (включая 0) с интервалом в 50 пикселей. Эти числа будут выводиться под осью X.
На рис. снизу представлено действие этого цикла.

Postroenie sistemih koordinat s pomothjyu procedurih SetViewPort.

Способом, описанным выше, рисуем цифры для оси Y (строка №56 - №70). Здесь нам нужно исключить из цикла цифру 0, так как она уже нарисована. Для этого в строках №64 - №68 записываем условие. Если переменной «ch» будет присвоено значение, равное 0, то оно должно быть уменьшено на единицу, а координата вывода цифры должна быть увеличена на 50 пикселей.

Postroenie sistemih koordinat s pomothjyu procedurih SetViewPort..Postroenie sistemih koordinat s pomothjyu procedurih SetViewPort...Postroenie sistemih koordinat s pomothjyu procedurih SetViewPort.....

Postroenie sistemih koordinat s pomothjyu procedurih SetViewPort....


Предыдущая статья : Построение системы координат.

Оглавление : Уроки Паскаль. Графика.

Следующая статья : Алфавит языка Паскаль.


Комментарии  

 
0 # Захар 04.03.2013 18:25
:zzz а как построить график функции ax+by+c=0
 
 
+1 # Костя 06.03.2013 13:47
Захар - PutRixel'ом (в скобках пишешь любую функцию, но не забудь округлить)
 
 
0 # Сергей 10.12.2021 06:24
Здравствуйте!
У меня почему-то прописались не все цифры, а только те что находятся в "прямоугольнике ", остальные не прописались. У меня Windows 10 x64, Pascal версия 3.2.0, установлены, сумел скачать, только русские шрифты.
 
 
0 # Друзья 18.12.2021 08:52
Может так и должно быть
 
   ГлавнаяПаскальГрафика в ПаскальПроцедуры MoveTo и LineTo.