Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 0
Регистрация: 03.12.2016
Сообщений: 45

Объяснить каждую процедуру и функцию. Для чего они все даны и что выполняют

01.06.2019, 13:28. Показов 1394. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа взята из папки PABWork.NET->CSamples->Graphic->GraphABC
Да, там есть комментарии к процедурам, но очень кратко, сжато и непонятно

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
uses GraphABC;
 
function f(x: real) := x*sin(x)*exp(-0.1*x);
 
procedure drawGraph(x1,x2: real; f: real -> real);
 var xl0,wl,yl0,hl: real;
       xs0,ws,ys0,hs: integer;
 
 function LtoSx(xl: real) := round(ws/wl*(xl-xl0)+xs0);
 function LtoSy(yl: real) := round(hs/hl*(yl-yl0)+ys0);
 function StoLx(xs: integer) := wl/ws*(xs-xs0)+xl0;
 
 begin 
  xs0 := 0;
  ys0 := WindowHeight-1;
  ws := WindowWidth;
  hs := WindowHeight-1;
  
  xl0 := x1;
  wl := x2-x1;
 
  var yi: array of real;
  SetLength(yi,ws+1);
 
  var min := real.MaxValue;
  var max := real.MinValue;
  for var xi:=0 to ws do
   begin
    yi[xi] := f(StoLx(xi+xs0));
    if yi[xi]<min then min := yi[xi];
    if yi[xi]>max then max := yi[xi];
   end;
  
  yl0 := min;
  hl := -(max-min);
 
  
  Line(0,LtoSy(0),ws,LtoSy(0));
  Line(LtoSx(0),0,LtoSx(0),hs);
 
  Pen.Color := clBlue;
  MoveTo(xs0,LtoSy(yi[0]));
  for var xi:=xs0+1 to xs0+ws do
    LineTo(xi,LtoSy(yi[xi-xs0]));
end;
 
procedure Resize;
begin
  ClearWindow;
  drawGraph(0,60,f);
  Redraw;
end;
 
begin
  LockDrawing;
  SetWindowCaption('График функции: масштабирование');
  drawGraph(0,60,f);
  Redraw;
  OnResize := Resize;
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2019, 13:28
Ответы с готовыми решениями:

Что за драйвера такие, для чего они и нужны ли они вообще?
Что за драйвера такие, для чего они и нужны ли они вообще? 1 Intel SATA Preinstall driver (For AHCI / RAID Mode) Note: Press F6...

Объясните 35-36 строчки ,что они делают и для чего они ?
//--------------------------------------------------------------------------- #include&lt;iostream.h&gt; #include &lt;vcl.h&gt; #pragma hdrstop ...

Кто сможет объяснить что означает в этом коде 0x55555, что это такое, для чего предназначено?
#include &quot;stdafx.h&quot; #pragma warning(disable : 4996) #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; int main() ...

3
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
01.06.2019, 19:23
Лучший ответ Сообщение было отмечено Dolya08 как решение

Решение

Чё-ж вы программу для PascalABC.NET выкладываете в разделе PascalABC?
Это совершенно разные языки!
И в последнем она не запустится…

Pascal
1
function f(x: real) := x*sin(x)*exp(-0.1*x);
Это, собственно, функция, график которой и строится.

drawGraph — выводит график.
При этом, процедуре передаются 3 параметра: от и до значения ординат, а так же сама выводимая функция.
Т.е. можно и нужно поменять первый параметр.
К примеру, на -10 в строках 50 и 57.
А вот, если поменять на -20, то уже не так интересно…
Замена второго параметра не так интересна.
Ну а третий параметр вообще не нужно менять ;–)

В строках с 25 по 32 вычисляются минимальное и максимальное значение функции на данном отрезке, чтобы можно было масштабировать график по оси абсцисс.

38 и 39 строки выводят линии осей координат.

С 41 по 44 — выводится график.

Процедура Resize — является обработчиком события изменения размера графического окна.
Т.е. если нажать кнопку „развернуть“ или просто изменять размеры окна потянув за любой из углов или сторону окна, то это вызовет перерисовку окна с новыми размерами.
1
2 / 2 / 0
Регистрация: 03.12.2016
Сообщений: 45
01.06.2019, 20:15  [ТС]
А что делают эти функции? И для чего они?

Pascal
1
2
3
 function LtoSx(xl: real) := round(ws/wl*(xl-xl0)+xs0);
 function LtoSy(yl: real) := round(hs/hl*(yl-yl0)+ys0);
 function StoLx(xs: integer) := wl/ws*(xs-xs0)+xl0;
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
02.06.2019, 06:41
Масштабирование.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2019, 06:41
Помогаю со студенческими работами здесь

Что такое саттелиты и для чего они нужны?
Что такое саттелиты и для чего они нужны? Какую роль они играют?

Что такое беки и для чего они нужны?
собственно вопрос уже задан...юзал тут поиск, че то не то происходит...говорил типа либо меньше 4 знаков либо завпрещенные запросы...хз...

Что такое шейдеры и для чего они нужны?
Всем привет! Кто сможет описать что такое шейдеры и для чего они нужны только более понятным русским языком(а не скачивая кусок из...

Можете ли вы мне, объяснить каждую строчку. "Зачем?" и "для чего?". Спасибо!
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; ...

Что такое compile-time алгоритмы и для чего они нужны?
А есть от них хоть какая-то практическая польза? По-моему нет


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru