
- •Языки и системы программирования Алгоритмы
- •Языки программирования
- •Область применения языков программирования
- •Сложность и эффективность языков программирования
- •Трансляторы
- •Характеристика с/п Pascal abc
- •Используемые в с/п Pascal abc «горячие клавиши»
- •Структура программы на Паскале
- •Сообщения об ошибках. Отладка программы.
- •Система подсказок.
- •Команды вывода данных на экран
- •Константы
- •Переменные
- •Арифметические выражения. Приоритет арифметических операций
- •Стандартные арифметические функции
- •Процедуры инкремента и декремента
- •Примеры решения линейных задач
- •Ввод данных с клавиатуры
- •Примеры решения диалоговых задач
- •Линейные задачи для самостоятельной работы
- •Лаб. 1. Линеаризовать выражение:
- •Лаб. 2. Линейные диалоговые задачи (на одно действие)
- •Лаб. 3. Диалоговые задачи на несколько действий
- •Ветвление
- •Логические выражения
- •Вложенное ветвление
- •Лаб. 4. Задачи на ветвление:
- •Лаб. 5. Задачи на ветвление с вычислениями:
- •Выбор варианта
- •Лаб. 6. Задачи на выбор варианта:
- •Как выбрать цикл?
- •Экстренные события в теле цикла
- •Лаб. 7. Числовые задачи с циклом For
- •Лаб. 8. Сюжетные задачи с циклом For
- •Лаб. 9. Задачи с условными циклами
- •Библиотека crt
- •Библиотека sounds
- •Лаб. 10. Задачи с использованием циклов и библиотек crt и sounds
- •Порядковые типы данных
- •Перечислимый тип данных
- •Символьный тип данных
- •Ограниченный (интервальный) тип данных
- •Лаб. 11. Задачи со строками
- •Массивы
- •Решение задач с массивами
- •Поиск минимального (максимального) элемента массива
- •Сортировка массива.
- •Двумерные и многомерные массивы
- •Лаб. 12. Задачи с одномерными массивами
- •Лаб. 13. Задачи с двумерными массивами
- •Множества
- •Файлы данных
- •Записи и базы данных
- •Библиотека GraphAbc
- •Действия с графическим окном:
- •Точечная графика
- •Графические примитивы
- •Текст в графическом окне
- •Использование готовых точечных рисунков
- •Вспомогательные алгоритмы
- •Рекурсия
- •Событийное программирование
- •Использование таймеров
- •Использование сторонней библиотеки ukeyb
Библиотека GraphAbc
В системе программирования PascalABC кроме текстового окна можно использовать графическое окно, в котором можно рисовать. Рисунок состоит из пикселов – маленьких одноцветных квадратиков («точек»).
Действия с графическим окном:
1. ClearWindow; - очищает графическое окно белым цветом;
2. ClearWindow(c); - очищает графическое окно цветом c;
3. FillWindow(n); - заполняет окно рисунком с описателем n;
3. SetWindowSize(w,h); - задаёт размеры графического окна;
4. SetWindowPos(l,t); - задаёт отступ графического окна от левого верхнего угла экрана;
5. SetWindowCaption(s); - задаёт заголовок окна;
6. CloseWindow; - закрывает графическое окно;
7. ScreenWidth - возвращает ширину экрана;
8. ScreenHeight: - возвращает высоту экрана;
9. CenterWindow; - центрирует графическое окно на экране;
10. MaximizeWindow; - разворачивает графическое окно на весь экран, оставляя видимой лишь панель задач;
11. NormalizeWindow – восстанавливает размер графического окна.
Точечная графика
Рисовать отдельными точками, конечно, неудобно. Но, если применять цикл, в котором координаты и цвета точек рассчитываются по каким-либо формулам, можно получить графики функций и другие красивые рисунки.
Поставить в окне один пиксел цвета c можно командой SetPixel(x,y,c); Функция GetPixel(x,y) позволяет узнать цвет пиксела с координатами (x,y).
Библиотека GraphABC использует 24-битную цветовую палитру. Цвета имеют числовые значения от 0 (чёрный) до 16 777 215 (белый). Любой оттенок цвета можно вычислить по его красной (r), зелёной (g) и синей (b) составляющим с помощью функции RGB(r,g,b);, где r, g и b принимают значения от 0 до 255. 0 соответствует минимальной яркости, 255 – максимальной.
Библиотека GraphABC имеет константы для обозначения стандартных цветов: clBlack – черный; clPurple – фиолетовый; clWhite – белый; clMaroon – темно-красный; clRed – красный; clNavy – темно-синий; clGreen – зеленый; clBrown – коричневый; clBlue – синий; clSkyBlue – голубой; clYellow – желтый; clCream – кремовый; clAqua – бирюзовый; clOlive – оливковый; clFuchsia – сиреневый; clTeal – сине-зеленый; clGray – темно-серый; clLime – ярко-зеленый; clMoneyGreen – цвет зеленых денег; clLtGray – светло-серый; clDkGray – темно-серый; clMedGray – серый; clSilver – серебряный.
В качестве примера нарисуем звездное небо, разбросав точки случайного цвета по случайным координатам окна.
program
starsky;
uses
GraphABC;
var
i,x,y,c:
integer;
begin
randomize;
SetWindowSize(600,500);
CenterWindow; ClearWindow(clblack);
for
i:=1 to
1000 do
{В
цикле
рисуем
1000 звёзд}
begin
x:=random(600);
{Случайный x в пределах окна}
y:=random(500);
{Случайный y в пределах окна}
c:=1+random(clwhite);
{Сл. цвет точки от 1 до белого}
SetPixel(x,y,c);
{Ставим точку}
end;
end.
Графические примитивы
Более удобным способом является рисование не отдельными точками, а отрезками, дугами и замкнутыми фигурами. В таких командах цвет линии и заливки не указывают для каждой фигуры, а задают заранее.
Линия определяется характеристиками пера:
SetPenColor(c); - задаёт цвет пера;
SetPenWidth(w); - задаёт толщину пера в пикселах;
SetPenStyle(s); - задаёт стиль пера.
Стили пера задаются следующими константами: psSolid – сплошная линия; psClear - прозрачная линия; psDash - штриховая линия (- - - - - ); psDot - пунктирная линия (······); psDashDot - штрихпунктир (─·─·─·─·); psDashDotDot- штрих и двойной пунктир (─··─··─··─··);
Заливка определяется характеристиками кисти:
SetbrushColor(c); - задаёт цвет кисти;
SetBrushPicture(fname); - загружает из графического файла рисунок - образец для заливки;
ClearBrushPicture; - отключает рисунок-образец;
SetBrushStyle(s); - задаёт стиль заливки:
После настройки пера и кисти можно рисовать, используя такие команды: (все параметры – целые числа)
1. Line(x1,y1,x2,y2); - рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2);
2. MoveTo(x,y); - передвигает невидимое перо к точке с координатами (x,y); Эта функция работает в паре с функцией LineTo(x,y)., которая рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).
3. Circle(x,y,r); - рисует окружность с центром в точке (x,y) и радиусом r.
4. Ellipse(x1,y1,x2,y2); - рисует эллипс, заданный описанным вокруг него прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2).
5. Rectangle(x1,y1,x2,y2); - рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
6. RoundRect(x1,y1,x2,y2,w,h); - рисует прямоугольник со скругленными углами; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления углов.
6. Arc(x,y,r,a1,a2); - рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).
7. Pie(x,y,r,a1,a2); - рисует сектор окружности, ограниченный дугой (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
8. Chord(x,y,r,a1,a2); - рисует фигуру, ограниченную дугой окружности и отрезком, соединяющим ее концы (параметры процедуры имеют тот же смысл, что и в процедуре Arc).
9. FillRect(x1,y1,x2,y2); - заливает прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2), цветом текущей кисти.
10. Polygon(a,n); - строит ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.
11. Polyline(a,n); - строит замкнутую ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.
Замкнутые фигуры заливаются цветом кисти. Можно также нарисовать замкнутую область отрезками, дугами и другими примитивами и залить внутреннюю область цветом c, начиная с точки (x,y), с помощью команды FloodFill(x,y,c);