Доделать шахматную доску - Turbo Pascal
Формулировка задачи:
Всем привет!Нужна помошь в задание!
«шахматная» доска, содержащая 25 параллелограммов и сформированная из 5 диагональных полос 2-х направлений (главная и побочная диагонали)
Решение задачи: «Доделать шахматную доску»
textual
Листинг программы
uses dos; procedure intGraph; begin asm mov AH,0 mov AL,4 int 10H end; end; procedure HorLine(clr:shortint;y,x1,x2:integer); var i: integer; begin for i:=x1 to x2 do begin asm mov al,clr mov cx,i mov dx,y mov ah,12 int 10H end; end; end; var h, w, i, j, k, x, y : integer; delta : real; const maxx = 320; maxy = 200; begin intgraph; w := round(maxx / 7.5); h := maxy div 5; y := maxy - h; delta := (w div 2) / h; for i := 1 to 5 do begin x := i*(w div 2); for j := 1 to 5 do begin if odd(i+j) then begin for k := 0 to h - 1 do horline(7, y + k, trunc(x - k*delta), trunc(x - k*delta + w)); end; x := x + w; end; y := y - h; end; readln; end.
Объяснение кода листинга программы
- В начале кода используется директива
uses
, которая указывает на использование библиотеки Turbo Pascal. - Затем идет объявление процедуры
intGraph
, которая не содержит параметров и выполняет командуint 10H
- это встроенная команда в Turbo Pascal для выполнения операцииint
(интерпретация ввода-вывода) с числом 10H. - После этого объявляется процедура
HorLine
, которая имеет три параметра:clr
(цвет),y
(строка),x1
иx2
(координаты). Внутри процедуры выполняется циклfor
, который проходит по всем индексам отx1
доx2
. Для каждого индекса вызывается ассемблерная вставкаasm
, которая выполняет командуmov al,clr
(установка регистраal
в цветclr
),mov cx,i
(установка регистраcx
в значениеi
),mov dx,y
(установка регистраdx
в значениеy
) иmov ah,12
(установка регистраah
в значение 12, что соответствует командеint 10H
). - Далее объявляются переменные
h
,w
,i
,j
,k
,x
иy
типаinteger
. - Затем определяется константа
maxx
, которая равна 320, и константаmaxy
, которая равна 200. - После этого вызывается процедура
intGraph
. - Далее идет цикл
for
, который выполняется пять раз. На каждой итерации цикла выполняется следующая последовательность действий:- Переменная
x
устанавливается в значениеi*(w div 2)
. - Если
i
иj
нечетные, то выполняется горизонтальная линия на доске, начиная с координат(x, y + k)
и заканчивая координатами(x + w, y + k + h)
. Здесьk
- это значение, полученное из деленияx
наdelta
(см. ниже). - Значение
x
устанавливается вx + w
. - Значение
y
устанавливается вy - h
. - Затем вызывается процедура
HorLine
с параметрами7
,y + k
иtrunc(x - k*delta)
,trunc(x - k*delta + w)
. - После завершения цикла
for
вызывается функцияreadln
.
- Переменная
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д