Процедура Writeln в Pascal

Помимо зарезервированного слова Write, для вывода сообщения на экран в Pascal используется процедура Writeln. Отличие процедуры Writeln от оператора Write заключается в том, что Writeln после вывода сообщения на экран переводит курсор на другую ...

Приоритет выполнения логических операций в Pascal.

Логические операции применяются при написании многих программ в Pascal. Все операции имеют определенный приоритет выполнения : Первой выполняется операция NOT. Второй выполняется операция AND. Последними выполняются операции OR и XOR (Они имеют ...

Оператор выбора Case Of в Pascal.

Помимо условного оператора If в языке программирования Pascal существует оператор выбора Case of. Рассмотрим его применение на примере программы, которая выводит на экран то или иное сообщение, в зависимости от введенного числа.

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

Массив символов.

Одномерный массив символов по своим свойствам существенно отличается от всех остальных массивов языка Паскаль. Свойства одномерного массива символов приближены к свойствам коротких строк (String).

Структурное программирование

Самое главное в программировании - это научиться писать четкие, логические и структурированные программы.

• Используйте осмысленные имена для переменных, процедур и функций.

• Используйте отступы ...

В предыдущем примере мы начали строить систему координат с помощью процедуры 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
Ответить
 
 
0 # Костя 06.03.2013 13:47
Захар - PutRixel'ом (в скобках пишешь любую функцию, но не забудь округлить)
Ответить
 

Добавить комментарий

Защитный код
Обновить

   ГлавнаяПаскальГрафика в ПаскальФункции GetmaxX и GetmaxY.