Главная страница

Учебное пособие для школьников 79 классов СанктПетербург Павловск 20152016 Введение


Скачать 0.84 Mb.
НазваниеУчебное пособие для школьников 79 классов СанктПетербург Павловск 20152016 Введение
Дата05.05.2022
Размер0.84 Mb.
Формат файлаpdf
Имя файлаabcpascal.pdf
ТипУчебное пособие
#514238
страница2 из 6
1   2   3   4   5   6
Использование модуля CRT
Язык Паскаль имеет специальную библиотеку работы с экраном в текстовом режиме. Она называется CRT
5
. Эта библиотека содержит набор подпрограмм, позволяющих задавать цвет выводимых букв, цвет фона, устанавливать курсор в желаемую позицию. В текстовом режиме считается, что окно содержит 25 строк по 80 колонок. В каждой позиции может быть один символ (буква, цифра, специальные знаки). Графические объекты (прямые, окружности и т.п.) в текстовом окне не допустимы. Модуль CRT эмулирует текстовый терминал первых персональных компьютеров.
Подключение библиотеки к программе осуществляется предложением Uses:
Program
Card;
Uses
CRT; { Это предложение вставляется сразу после Program }
Далее могут идти описания переменных, затем begin и тело программы.
Рассмотрим использование подпрограмм этой библиотеки на примере создания заставки программы.
Program
Card;
Uses
CRT; { Подключить модуль CRT }
begin
ClrScr; { Очистить экран }
TextColor(White); { Установить белый цвет букв }
TextBackGround(Blue); { Установить синий цвет фона }
GotoXY(36,13); { Поставить курсор в 36 колонку, 13 строку } write(' Привет '); { Вывести текст }
ReadKey; { Ожидать нажатия любой клавиши }
end
Наберите текст этой программы и выполните её
Разберем действия отдельных процедур:
ClrScr – очищает экран или текущее окно (от англ. Clear Screen), закрашивая его текущим цветом фона, установленным процедурой TextBackGround. По умолчанию – цвет экрана белый.
TextColor(цвет) – устанавливает текущий цвет букв, который будет исполь–
зоваться операторами write и writeln. По умолчанию используется светло-серый цвет букв.
TextBackgroud(цвет) – устанавливает текущий цвет фона, который будет исполь- зоваться операторами write и writeln.
GotoXY(колонка, строка) – переводит курсор в указанную позицию; вывод, осуществляемый последующим оператором write или writeln будет начинаться с этой позиции. Обычно экран в текстовом режиме содержит 80 колонок и 25 строк.
ReadKey – ожидание нажатия на любую клавишу (далее мы рассмотрим другое применение этой подпрограммы).
5
От английского Cathode Ray Tube – Электронно-лучевая трубка (ЭЛЧ)

Тема №2 – Использование модуля CRT
А.С.Цветков, ABC Pascal
- 10 -
19.09.2015
В качестве цвета может использоваться число от 0 до 15, но лучше пользоваться определенными в модуле CRT константами:
Таблица цветов
Рассмотрим еще несколько полезных подпрограмм.
Window(x1,y1,x2,y2) – создание окна вывода. В случае задания окна, все операторы write и writeln выводят только в него, процедура ClrScr будет очищать только это окно.
WhereX, WhereY – две функции, позволяющие узнать координаты местонахождения курсора. Пример использования: GotoXY(WhereX+10,WhereY+2).
Задание №2:
Напишите программу «Визитная карточка», которая выводила бы на экран хорошо оформленные ваши личные данные: имя, фамилию, год рождения, адрес, телефон.
Используйте разные цвета, хорошо скомпонуйте.
Задание №2*:
Модуль Sounds содержит процедуры и функции для работы со звуком:
n:=LoadSound(fname)
– загружает звук из файла с именем fname в оперативную память и возвращает описатель звука в целую переменную n (звуковой файл должен может иметь любой формат);
PlaySound(n)
– начинает проигрывание звука с описателем n;
StopSound(n)
– останавливает проигрывание звука с описателем n;
RewindSound(n)
– "перематывает" звук с описателем n на начало;
DestroySound(n)
– удаляет звук с описателем n из оперативной памяти, описатель звука при этом становится недействительным;
SoundLength(n)
– возвращает длительность звука с описателем n в миллисекундах.
Используйте его возможности для «улучшения» программы «Визитная карточка»
Пример использования модуля sound:
Program
Player;
Uses
Sounds, CRT;
var
n: integer;
begin
n:=LoadSound('C:\WINDOWS\MEDIA\ringin.wav'); // укажите расположение файла
PlaySound(n);
Sleep(SoundLength(n));
DestroySound(n);
end
Black
Черный DarkGray
Темно-серый
Blue
Синий LightBlue
Светло-синий
Green
Зеленый LightGreen
Светло-зеленый
Cyan
Небесно голубой LightCyan
Ярко-голубой
Red
Красный LightRed
Светло-красный
Magenta
Малиновый LightMagenta
Светло-малиновый
Brown
Коричневый Yellow
Желтый
LightGray
Светло-серый White
Белый

Тема №3. Графика в системе ABC Pascal
А.С.Цветков, ABC Pascal
- 11 -
19.09.2015
Занятие №3
Графический модуль GraphABC
Система ABC Pascal обладает великолепной графической библиотекой. Для ее модключения после заголовка программы необходимо написать Uses GraphABC. Модуль
GraphABC содержит константы, типы, процедуры и функции для рисования в графическом окне. Они подразделяются на несколько групп:
• Графические примитивы
• Действия с цветом
• Действия с точками и прямоугольниками
• Действия с пером
• Действия с кистью
• Действия со шрифтом
• Действия с рисунками
• Действия с графическим окном
Рассмотрим сразу пример:
Program
Gr01;
Uses
GraphABC;
begin
SetWindowSize(256,256);
SetPenColor(RGB(0,0,255));
Line(0,0, WindowWidth, WindowHeight)
Line(0,WindowHeight, WindowWidth, 0)
end
Процедура SetWindowSize устанавливает размер графического окна 256×256 пикселей.
Процедура SetPenColor определяет цвет рисования линий. Функция RGB возвращает цвет, заданный своими Red, Green, Blue компонентами. Процедура Line рисует линию из точки, заданной первой парой координат, в точку, заданную второй парой координат. Функции
WindowWidth и WindowHeight возвращают текущие значения ширины и высоты графического окна (следовательно, если вы поменяете размер окна в процедуре
SetWindowSize, то линии все равно будут проводиться из угла в угол).
Оконные координаты
• Координата x растет слева на право от 0 до значения WindowWidth
• Координата y растет сверху вниз от 0 до значения WindowHeight
0 0
WindowWidth
WindowHeigth

Тема №3. Графика в системе ABC Pascal
А.С.Цветков, ABC Pascal
- 12 -
19.09.2015
Задание цвета
Как известно восприятие цвета у человека трехцветное. Основываясь на этом, в графических библиотеках используется именно такое трехкомпонентное представление цвета. Цвет задается с помощью функции rgb(Red,Green,Blue)
Здесь
Red – число от 0 до 255, соответствующее интенсивности красной компоненты
Green – число от 0 до 255, соответствующее интенсивности зеленой компоненты
Blue – число от 0 до 255, соответствующее интенсивности синей компоненты
Функция формирует целое число (integer), которое может использоваться везде в графической библиотеке, где требуется указание цвета. Есть несколько предопределенных цветов: clBlack – черный clPurple – фиолетовый clWhite – белый clMaroon – темно-красный clRed – красный clNavy – темно-синий clGreen – зеленый clBrown – коричневый clBlue – синий clSkyBlue – голубой clYellow – желтый clCream – кремовый clAqua – бирюзовый clOlive – оливковый clFuchsia – сиреневый clTeal – сине-зеленый clGray – серый clLime – ярко-зеленый clLightGray – светло-серый clMoneyGreen – цвет зеленых денег clDarkGray – темно-серый
Задание стиля и цвета пера
• SetPenColor(цвет) – устанавливает цвет пера, задаваемый параметром color.
• SetPenWidth(ширина) – устанавливает ширину пера.
• SetPenStyle(стиль) – устанавливает стиль пера (сплошной, пунктир и т.п.), возможные значения указаны в таблице (стиль применим только к ширине пера 1 пиксел) psSolid psClear psDash psDot psDashDot psDashDotDot
Текущее перо используется для рисования линий, прямоугольников, ломаных, окружностей, эллипсов, дуг и т.п.
Пример:
Program
Gr02;
Uses
GraphABC;
Var
i : integer;
begin
SetWindowSize(512,512);
SetPenStyle(psDash);
SetBrushStyle(bsClear);
Circle(256,256,WindowHeight div 2);
end

Тема №3. Графика в системе ABC Pascal
А.С.Цветков, ABC Pascal
- 13 -
19.09.2015
Задание стиля и цвета кисти
• SetBrushColor(цвет) – устанавливает цвет кисти
• SetBrushPicture(имя файла) – устанавливает в качестве образца для закраски кистью образец, хранящийся в файле, при этом текущий цвет кисти при закраске игнорируется.
• ClearBrushPicture – очищает рисунок-образец, выбранный для кисти.
• SetBrushStyle(стиль) – устанавливает стиль кисти, задаваемый параметром bs.
Возможные стили кисти:
bsSolid bsClear bsCross bsDiagCross bsHorizontal bsBDiagonal bsVertical bsFDiagonal
Текущей кистью закрашиваются все замкнутые фигуры, контур фигур рисуется текущим пером. Чтобы нарисовать не закрашенную фигуру, используйте SetBrushColor(bsClear).
Пример:
Program
Gr03;
Uses
GraphABC;
Var
i,j : integer;
begin
SetWindowSize(512,512);
SetBrushColor(rgb(128,0,255));
SetBrushStyle(bsDiagCross);
Rectangle(10,10,WindowWidth-10,WindowHeight-10);
end
Некоторые графические примитивы
6
• Line(x1,y1,x2,y2) – рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).
• Circle(x,y,r) – рисует окружность с центром в точке (x,y) и радиусом r.
• Ellipse(x1,y1,x2,y2) – рисует эллипс, заданный своим описанным прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2).
• Rectangle(x1,y1,x2,y2) – рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
• RoundRect(x1,y1,x2,y2,w,h) – рисует прямоугольник со скругленными краями; (x1,y1) и
(x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев.
• Arc(x,y,r,a1,a2) – рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).
• Pie(x,y,r,a1,a2) – рисует сектор окружности, ограниченный дугой (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
• Chord(x,y,r,a1,a2) – рисует фигуру, ограниченную дугой окружности и отрезком, соеди- няющим ее концы (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
• FloodFill(x,y,color) – закрашивает область одного цвета, начиная с точки (x,y) цветом color.
Задание:
Напишите программу, использующую не менее трех процедур рисования, которая рисовала бы несложный рисунок (домик, автомобиль, и т.п.)
6
Дополнительную информацию можно получить в справочной системе ABC Pascal, раздел Стандартные
модули – Модуль GraphABC.

Тема №3. Графика в системе ABC Pascal
А.С.Цветков, ABC Pascal
- 14 -
19.09.2015
Пример решения задания
program
avto;
uses
graphABC;
var
i : integer;
begin
SetWindowSize (800,600);
SetPenStyle (psClear); // верхняя часть автомобиля setBrushColor (Clgreen); rectangle (250,250,550,351); setBrushColor (ClAqua); // окна rectangle (255,255,395,345); rectangle (405,255,545,345); setBrushColor (Clgreen); // корпус rectangle (50,350,750,500); setBrushColor (ClYellow); // фары rectangle (749,375,764,400); setBrushColor (ClRed); rectangle (35,375,51,400); setBrushColor (ClLightGray); // бампер
RoundRect (725,450,775,475,10,10);
RoundRect (25,450,75,475,10,10);
SetPenStyle (psSolid); // двери
Line(250,350,250,425);
Line(250,425,300,500);
Line (400,250,400,500);
Line (550,350,550,425);
Line (550,425,500,500); setBrushColor (ClBlack); // колеса
Circle (200,500,50); setBrushColor (ClLightGray);
Circle (200,500,25); setBrushColor (ClBlack);
Circle (600,500,50); setBrushColor (ClLightGray);
Circle (600,500,25);
end

Тема №4. Цикл for
А.С.Цветков, ABC Pascal
- 15 -
19.09.2015
Занятие №4
Цикл for
Цикл for
используется для повторения фрагментов программы заданное число раз.
Синтаксис оператора:
for i:=N1 to N2 do оператор; или
for i:=N1 to N2 do
begin
оператор1; оператор2;
end;
Здесь i
– индекс цикла (обязательно переменная целочисленного типа),
N1 – целочисленное выражение, определяющее нижнюю границу индекса цикла,
N2 – целочисленное выражение, определяющее верхнюю границу индекса цикла,
N2 должно быть больше или равно N1, для того чтобы цикл выполнился хоть один раз.
Алгоритм выполнения оператора такой:
1. Индексу цикла присваивается значение выражения N1.
2. Проверяется условие i<=N2. Если условие истинно, то переход к п. 3, иначе к п.6.
3. Выполняются операторы тела цикла.
4. Значение индекса цикла увеличивается на единицу (автоматически!).
5. Переход к п. 2.
6. Конец цикла.
Пример:
Построить таблицу квадратов чисел от 1 до 10.
Program
Square;
var
i, j : integer;
begin
for i:=1 to 10 do
begin
j:=sqr(i); writeln(i:4,j:4);
end;
end.
или проще:
Program
Square;
var
i: integer;
begin
for i:=1 to 10 do writeln(i:4,sqr(i):4);
end.
Обратите внимание на указание формата вывода целого числа в операторе writeln.Число после двоеточия указывает на количество символов, отводимых для представления целого числа. Если число занимает меньшее количество цифр, то при выводе оно слева дополняется необходимым числом пробелов.
Составной оператор
– это группа операторов, заключенная в операторные скобки begin ... end.

Тема №4. Цикл for
А.С.Цветков, ABC Pascal
- 16 -
19.09.2015
Цикл
fordownto
Иногда возникает желание выполнить цикл for наоборот, так чтобы индекс цикла не возрастал, а убывал. Эту возможность реализует следующая конструкция:
for i:=N2 to N1 do оператор;
Здесь подразумевается, что N2 должно быть больше или равно N1.
Использование цикла
for для построения изображений
Использование цикла for весьма эффективно при построении изображений. Например, следующая программа строит набор концентрических окружностей.
Program
Concentric;
uses
graphABC;
var
i : integer; // для цикла for
begin
SetWindowSize (400,400);
SetBrushStyle (bsClear);
// строятся 10 окружностей с
// радиусами 20, 40, ... 200
for i:=1 to 10 do Circle(200,200,i*20);
end
Вот более сложный пример, разберитесь с ним сами. Ответьте на вопрос: «Почему используется цикл не for … to, а for … downto
Program
Concentric2;
uses
graphABC;
var
i : integer; // для цикла for
begin
SetWindowSize (400,400);
SetPenStyle(psClear);
for i:=20 downto 1 do
begin
SetBrushColor (RGB(10*i,0,0));
Circle(200,200,i*10);
end;
end.
Интересных эффектов можно добиться, используя так называемый «генератор случайных чисел». Встроенная функция random(N) возвращает случайное число в диапазоне от 0 до N–1. Посмотрите, как эта возможность применяется в следующей программе.
Program
RandomLines;
uses
graphABC;
var
i : integer;
begin
SetWindowSize (400,400);
for i:=1 to 200 do
Line(Random(400),Random(400),Random(400),Random(400));
end
Задание №5.
Дополните вашу графическую программу узором, получаемым с помощью цикла for.

Тема №5. Оператор if
А.С.Цветков, ABC Pascal
- 17 -
19.09.2015
Занятие №5
Оператор if
В языке Pascal существуют операторы, позволяющие изменить линейный ход программы.
Их можно разделить на две группы: развилки и циклы.
Развилки
Циклы
if ... then ... else ... while if ... then repeat ... until case for
Развилки
Оператор if
Синтаксис
7
оператора:
if
логическое условие then оператор-1 else оператор-2;
Пример:
if
x>0 then z:=1 else z:=–1;
Выполнение оператора начинается с проверки логического условия, если оно истинно, то выполняется оператор-1, иначе оператор-2. В качестве оператора может выступать простой оператор или составной оператор. Составной оператор – это группа операторов, заключенная в операторные скобки begin ... end.
Пример:
if x>0 then begin z:=1; x:=2*x;
end
else begin z:=-1; x:=-x;
end;
Обратите внимание, что перед else точка с запятой не ставится. Точка с запятой используется только для разделения операторов друг от друга. Можно было бы и не ставить запятую после операторов x:=2*x и x:=-x, поскольку begin и end не являются операторами, а являются скобками. Паскаль будет интерпретировать
8
точку с запятой перед end, как наличие пустого оператора между ней и end.
Обратите внимание на запись “лесенкой”, она не обязательна, но весьма желательна, поскольку помогает наглядно увидеть алгоритмическую структуру программы. Правило такое: end пишем под begin.
7
Синтаксис оператора – правила его записи.
8
Интерпретировать – толковать.

Тема №5. Оператор if
А.С.Цветков, ABC Pascal
- 18 -
19.09.2015
1   2   3   4   5   6


написать администратору сайта