
- •1. Этапы подготовки и решения задач на эвм. Понятие алгоритма.
- •2. Элементарные базовые управляющие структуры
- •3. Состав и работа системы программирования Турбо Паскаль
- •4. Алфавит языка
- •5. Простейшие конструкции и типы данных
- •6. Структура программ на Паскале
- •7. Ввод и вывод данных
- •8. Программирование линейных структур в Паскале
- •Var b,y,z: real;
- •Var day: integer;
- •Var X,y: real; к: integer;
- •11. Программирование циклов с неизвестным числом повторений
- •Var X: integer;
- •Var X,a,p: real; k:integer;
- •12. Программирование вложенных циклов. Массивы.
- •Var amin:real; I, j : integer; a:array[1..100] of real;
- •13. Процедуры и функции в Паскале
- •Var a,b,c,s1,s2,s3,k,r,z:real;
- •Var c,n,m,l: integer;
- •Var p,I: integer;
- •14. Записи в Паскале.
- •15. Работа с файлами в Паскале
- •I:byte;
- •16. Программирование в графическом режиме
- •17. Анимация изображений в Паскале
- •X,y,dy,dx,time,delta,radius,Gd,Gm: integer;
- •18. Построение графика аналитически заданной функции
- •Xn, xk, X, y, Ymin, Ymax, dx:real;
- •19. Численные методы вычисления определённого интеграла
- •I, n: integer;
- •20. Численные методы решения нелинейных уравнений. Общие принципы.
- •22. Численные методы решения нелинейных уравнений. Метод Ньютона (метод касательных).
- •23. Численные методы решения нелинейных уравнений. Метод хорд (метод ложного положения).
- •24. Численные методы решения обыкновенных дифференциальных уравнений. Общие принципы.
- •25. Численные методы решения обыкновенных дифференциальных уравнений. Метод Эйлера.
- •Xn,xk,yn,h,X,y:real;
- •I:integer;
- •26. Численные методы решения обыкновенных дифференциальных уравнений. Модифицированный метод Эйлера.
- •Xn,xk,yn,yw,h:real;
- •I,n:integer;
- •X,y:array [1..20] of real;
- •27. Численные методы решения обыкновенных дифференциальных уравнений. Метод Рунге-Кутта.
- •Xn,xk,yn,h,k0,k1,k2,k3:real;
- •I,n:integer;
- •X,y:array [1..20] of real;
I:byte;
Begin
Assign(f1, 'text.txt');
Assign(f2, 'text_new.txt');
Reset(f1);
Rewrite(f2);
Repeat
Readln(f1, s);
for i:=1 to Length(s) do
if s[i]='k' then s[i]:='K';
WriteLn(f2, s);
until Eof(f1);
Close(f1);
Close(f2);
End.
Следующая программа выполняет ту же функцию, однако, доступ к элементам файла значительно упрощен. Это достигается за счет иного описания структуры файла. В данном случае тип того же файла задан как символьный, что позволяет использовать только один цикл.
Var
f1,f2:file of char;
ch:char;
Begin
Assign(f1, 'text.txt');
Assign(f2, 'text_new.txt');
Reset(f1);
Rewrite(f2);
Repeat
Read(f1, ch);
if ch='k' then ch:='K';
Write(f2, ch);
Until Eof(f1);
Close(f1);
Close(f2);
End.
16. Программирование в графическом режиме
В Паскале при выводе на экран графической информации (линии, эллипсы, многоугольники, растровые изображения и др.) используется графический режим работы монитора, в котором изображение строится из пикселей – точек на экране, каждая из которых может иметь свой цвет.
Для разработки программ, работающих в графическом режиме, в системе программирования Турбо Паскаль существует стандартный модуль GRAPH.TPU, содержащий константы, типы, процедуры и функции (более 50-ти). Кроме файла GRAPH.TPU для разработки и работы программ в графическом режиме требуется графический драйвер Egavga.bgi (для адаптеров EGA и VGA), а также файлы *.chr, в которых находятся векторные шрифты для графического режима. В дистрибутивном пакете системы Турбо Паскаль эти шрифты не имеют русских букв, однако можно найти и русифицированные *.chr файлы, например, в системе Quattro Pro.
Для работы в графическом режиме следует выполнить действия: - скопировать в каталог с файлом программы драйвер egavga.bgi; - в разделе описания используемых модулей указать Uses Graph; - описать две переменные целого типа Gd и Gm: Var Gd, Gm:integer; - задать автоматический режим настройки графического драйвера: Gd:=Detect; - для переключения в графический режим вызвать процедуру InitGraph: InitGraph(Gd,Gm,''); - выполнить вывод на экран графической информации; - для выхода из графического режима вызвать процедуру ClоseGraph;
После переключения в графический режим вместо текстового курсора используется невидимый текущий указатель, который может быть установлен в определённой точке экрана с помощью задания графических координат. Для режима VGA 640*480 верхний левый угол экрана будет иметь координаты (0,0), а правый нижний угол (639,479).
Пример 1. Наберите текст программы, рисующей 5 концентрических окружностей в центре экрана.
Текст программы на Паскале:
Program Krug2;
Uses Graph;
Var
Gd,Gm,rad,xc,yc:integer;
begin
Gd:=Detect; { функция InitGraph должна выполнить }
{ автоопределение типа монитора (Gd) и его }
{ максимального разрешения (Gm)}
InitGraph(Gd,Gm,''); { инициализация графического режима }
if GraphResult <> 0 then { в случае ошибки инициализации }
begin
Writeln('Ошибка инициализации графического режима');
Writeln('В каталоге программы должен присутствовать
драйвер egavga.bgi');
Writeln('или укажите путь к нему в IniGraph(Gd,Gm,<путь>)');
Halt(1);
end;
Case Gd of { анализируем тип дисплея }
{ и вычисляем координаты центра экрана }
9: begin { VGA монитор }
xc:=(640-1) div 2; yc:=(480-1) div 2;
end;
3: begin { EGA монитор }
xc:=(640-1) div 2; yc:=(350-1) div 2;
end;
end;
for rad:=1 to 5 do
Circle(xc,yc,rad*20); { рисуем окружности }
Readln;
CloseGraph; { возврат в текстовый режим }
end.
Для работы в графическом режиме наиболее часто используются следующие процедуры и функции.
Функция GetMaxX:Integer; Возвращает максимальную x-координату (разрешение по горизонтали) текущего графического режима.
Функция GetMaxY:Integer; Возвращает максимальную y-координату (разрешение по вертикали) текущего графического режима.
Функция GetX:Integer; Возвращает текущую x-координату указателя.
Функция GetY:Integer; Возвращает текущую y-координату указателя.
Процедура PutPixel(x,y,color); Выводит на экран точку с координатами (x,y) и цветом color.
Процедура SetColor(color); Устанавливает цвет рисуемых далее линий.
Процедура SetBkColor(color); Устанавливает цвет фона.
Процедура Line(xStart,yStart,xEnd,yEnd); Проводит прямую линию из точки c координатами (xStart,yStart) в точку (xEnd,yEnd).
Процедура LineTo(xEnd,yEnd); Проводит прямую линию из текущего положения указателя в точку с координатами (xEnd,yEnd).
Процедура MoveTo(x,y); Перемещает указатель в точку с координатами (x,y).
Процедура Circle(x,y,Radius); Рисует окружность с центром в точке (x,y) и радиусом Radius.
Процедура Rectangle(x1,y1,x2,y2); Рисует прямоугольник с координатами левого верхнего и правого нижнего угла (x1,y1) и (x2,y2) соответственно.
Процедура Bar(x1,y1,x2,y2); Рисует закрашенный прямоугольник с координатами левого верхнего и правого нижнего угла (x1,y1) и (x2,y2) соответственно.
Процедура Ellipse(x,y, a1,a2, xRad,yRad); Рисует эллиптическую дугу с центром в точке (x,y), начальным и конечным углами a1 и a2 и радиусами по осям xRad, yRad; углы отсчитываются от положительного направления оси х в градусах.
Процедура FloodFill(x,y, border); Закрашивает замкнутую область, внутри которой расположена точка (x,y), согласно текущему стилю заполнения. Параметр border задаёт цвет границы.
Процедура SetFillPattern(parttern, color); Устанавливает тип закраски и её цвет. Тип закраски выбирается из списка: EmptyFill – сплошное заполнение цветом фона; SolidFill - сплошное заполнение заданным цветом; LineFill – заполнение горизонтальными линиями; LtSlashFill -диагональное заполнение (/ / /); LtBkSlashFill - обратное диагональное заполнение (\ \ \); XhatchFill – косое клетчатое заполнение.
Процедура SetLineStyle(Style,Pattern,color); задаёт стиль, палитру и толщину линий. Стили: Solidln - сплошная; Dotted - точечная; Dashed - пунктирная; Centerln - штрихпунктирная. Толщина линий: NormWidth – нормальная; ThickWidth – толстая. Параметр Pattern=0.
Процедура OutTextXY(x,y,s); Выводит текстовую строку s начиная с точки с координатами (x,y).
Простейшие примеры работы с процедурами и функциями графического режима содержатся в справочной системе Турбо Паскаль. Полный список констант, типов, процедур и функций модуля GRAPH содержится также в файле Graph.int.