Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Текст программы. { Программа Лабораторной работы N 8.






    Program Graph_work;

    { Программа Лабораторной работы N 8.

    Вариант N 31.

    Построение графика функции.

    А.Я.Умненькая, ст. гр. Я-007 }

    Uses Graph, Crt, Print; {Print – только при наличии принтера для печати графика с экрана на бумагу }

    Var

    X, Y, { текущие значения переменных Х и Y }

    Xmin, Xmax, {минимальное и максимальное значения Х на графике}

    Ymin, Ymax, {минимальное и максимальное значения Y на графике}

    DeltaX, DeltaY, {диапазоны изменения X и Y в пределах рисунка}

    Dx, { шаг построения графика по Х }

    Dxs, Dys, { Шаги разметки осей по Х и по Y }

    Part, Pole, { Доля экрана, занятая рисунком и доля чистого поля с каждой стороны }

    Mx, My {Коэффициенты пересчета Х в J и Y в I}

    : real;

    Imin, Imax, {координаты экрана, соответствующие Ymin и Ymax}

    Jmin, Jmax, {координаты экрана, соответствующие Xmin и Xmax}

    J, I, {текущие значения переменных координат экрана }

    JAll, IAll, {Максимальные размеры экрана (в пикселях) по X, Y}

    J0, I0, {Координаты на экране точки пересечения осей графика}

    DeltaJ, DeltaI, {Экранные размеры рисунка по Х и Y в пикселях}

    Nx, Ny {Шаги разметки осей Х и Y в пикселях }

    : integer;

    Riska: String[5]; {Строка для вывода чисел у рисок осей}

    GraphDrv, {Тип графического драйвера }

    GraphMode: integer; {Устанавливаемый графический режим}

    Code: word; {Код завершения инициализации графики }

    BEGIN { Начало программы }

    {1.Задание констант, стандартных значений }

    Xmin: =-1.0; Xmax: =2.0;

    Dxs: =0.5; Dys: =1.0;

    Part: =0.6; Dx: =0.2;

    {2.Ввод исходных данных - в примере не используем}

    {3.Печать исходных данных - в примере не используем}

    {4.Расчет характеристик функций }

    DeltaX: =Xmax-Xmin;

    Ymin: =exp(Xmin);

    Ymax: =exp(Xmax);

    if Ymin> 0 then Ymin: =0;

    if Ymax< 0 then Ymax: =0;

    DeltaX: =Xmax-Xmin;

    DeltaY: =Ymax-Ymin;

    {5.Открытие графики с проверкой правильности срабатывания}

    GraphDrv: =0; {пусть определяет режим сам }

    InitGraph(GraphDrv, GraphMode, 'D: \TP6\BGI');

    Code: =GraphResult;

    if Code< > 0 then {если завершение с кодом не 0 - закончить программу}

    Begin

    writeln('Ошибка открытия графики с кодом: ', Code);

    Halt; { Останов программы }

    End;

    {6.Настройка фона}

    SetBkColor(15); {Фон белый }

    ClearDevice; {Очистка экрана}

    {7.Расчет параметров графика на экране}

    JAll: =GetMaxX;

    IAll: =GetMaxY;

    Pole: =(1.0-Part)/2.0;

    Jmin: =Round(Pole*JAll);

    Jmax: =Round((1.0-Pole)*JAll);

    Imin: =Round((1.0-Pole)*IAll);

    Imax: =Round(Pole*IAll); { Imin > Imax!!! }

    DeltaJ: =Jmax-Jmin;

    DeltaI: =Imax-Imin;

    {8.Расчет масштабных коэффициентов перехода от X к J и от Y к I}

    Mx: =DeltaJ/DeltaX;

    My: =DeltaI/DeltaY;

    {9.Построение графика функции}

    {9.1.Задание характеристик линии}

    SetColor(4); { цвет красный }

    SetLineStyle(3, 0, 3); { штриховая толстая }

    {9.2.Начальная точка графика}

    Nx: =Round(Dxs*Mx);

    Ny: =Round(Dys*My); { Шаг разметки по Y - отрицательный }

    J: =Jmin;

    I: = Imin+Round((exp(Xmin)-Ymin)*My);

    MoveTo (J, I);

    {9.3.Цикл расчета экранных координат графика (X-> J, X-> Y-> I) и проведения отрезков}

    X: =0;

    While X< =Xmax do

    Begin

    X: =X+Dx;

    Y: =exp(X);

    J: =Jmin+Round((X-Xmin)*Mx);

    I: =Imin+Round((Y-Ymin)*My);

    LineTo(J, I);

    End;

    {10.Построение осей 10.1.Задание характеристик линии }

    SetColor(8); { цвет темно-серый }

    SetLineStyle(0, 0, 3); { сплошная толстая }

    {10.2.Построение осей }

    J0: =Jmin+Round((0-Xmin)*Mx);

    I0: =Imin+Round((0-Ymin)*My);

    Line(J0, Imin, J0, Imax); {Построение оси Y (где X=0)}

    Line(Jmin, I0, Jmax, I0); {Построение оси Х (где Y=0)}

    {11.Разметка осей 11.1.Задание характеристик линии }

    SetLineStyle(0, 0, 0); { сплошная тонкая }

    {11.2.Характеристики шрифта для подписи значений }

    SetTextStyle(0, 0, 0); { шрифт стандартный, подпись горизонтальна }

    SetTextJustify(1, 2); {Размещение текста симметрично, относительно заданной точки по горизонтали и ниже точки по вертикали}

    {11.3.Цикл проведения разметки оси X, риски вверх от оси, по 10 пикселов }

    J: =J0;

    X: =0;

    while J< =Jmax+1 do {от начала координат - вправо }

    begin

    Line(J, I0, J, I0-10);

    Str(X: 3: 1, Riska);

    OutTextXY(J, I0+5, Riska);

    X: =X+Dxs;

    J: =Jmin+Round((X-Xmin)*Mx);

    end;

    J: =J0;

    X: =0;

    while J> =Jmin do {от начала координат - влево }

    begin

    Line(J, I0, J, I0-10);

    Str(X: 3: 1, Riska);

    OutTextXY(J, I0+5, Riska);

    X: =X-Dxs;

    J: =J-Nx;

    end;

    {11.4.Цикл проведения разметки оси Y, риски вправо от оси, по 10 пикселов }

    SetTextJustify(2, 1); {Размещение текста симметрично, относительно заданной точки по вертикали и левее точки по горизонтали }

    I: =I0;

    Y: =0;

    while I> =Imax do {от начала координат - вверх }

    begin

    Line(J0, I, J0+10, I);

    Str(Y: 3: 1, Riska);

    OutTextXY(J0-10, I, Riska);

    Y: =Y+Dxs;

    I: =I+Ny;

    end;

    { Для данной функции ниже оси Х разметка не нужна}

    I: =I0;

    while I< =Imin do

    begin

    Line(J0, I, J0+10, I);

    I: =I-Ny;

    end;

    {12.Подпись графика}

    {12.1.Характеристики шрифта, цвет }

    SetColor(1); { цвет синий }

    SetTextJustify(1, 1); {Размещение текста симметрично, относительно заданной точки по горизонтали и по вертикали}

    {12.2.Вывод подписи }

    I: =Round(IAll*(1-Pole/2)); {середина нижнего поля}

    OutTextXY(JAll div 2, I, 'График функции Y = exp(X)');

    {13.Задержка графика на экране }

    while Not KeyPressed do;

    {14. Вывод графика на печать (на принтер) - только если он подключен }

    Pr;

    CloseGraph; {14.Закрытие графического режима }

    END.

    Рисунок 10. Результат работы программы 31-го варианта

    Разбор контрольного варианта № 32






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.