- Расчет площади и объема фигур на Делфи (часть 1)
- BestProg
- Разработка простейшей программы расчета площади круга и объема шара как Windows-приложения
- Содержание
- Условие задачи
- Математическая постановка задачи
- Выполнение
- 1. Создание приложения типа VCL Form Application .
- 2. Вкладка Standard панели инструментов Tool Palette .
- 3. Компонент TLabel
- 4. Компонент TEdit
- 5. Компонент TButton
- 6. Программирование события клика на кнопке « Вычислить «
- 7. Установка названия приложения
- 8. Результат выполнения приложения
- Итоги
- Метод Монте-Карло вычисления площадей фигур и его реализация в среде Delphi
- 💡 Видео
Видео:Нахождение площади треугольника в DelphiСкачать
Расчет площади и объема фигур на Делфи (часть 1)
Простой пример программы на расчет площади поверхности цилиндра и полого цилиндра, шара и объема шара на Делфи. Дляэтогосоздадимновыйпроект (VCL Forms Aplication — Delphi) в Embarcadero RAD Studio 2010 . Сохраним в новой папке. Будем отталкивать от постановленной задачи.
Вычислить площадь поверхности и объем:
- цилиндра (радиус r, высота h);
- полого цилиндра (радиусы R и r, высота h);
- шара (S=4Pr2, V=(3/4)Pr3).
Примерный расклад событий: будет вводиться радиусы R и r, высота h. Формулы для расчетов соответственно:
площадь S = 2 π r(h + r) , объем цилиндра равен V = Pr 2 H ;
площадь S=2PRh-2Prh=2Ph(R-r), объем полого цилиндра V= PR2H- Pr2H=Ph(R2-r2);
площадь S =4 Pr 2, объем шара V =(3/4) Pr 3.
На моей форме будет располагаться три компонента TEdit и три компонента TLabel . А также кнопка TButton и компонент TCombobox . Примерно выглядит так:
Вывод ответа будет осуществляется в четвертый TLabel . Немного переделаю главную форму. Она не должна развертываться на полный экран – в BorderIcons ( biMaximisize ) ставлю false . BorderStyle=bsSingle.
В каждом TLabel напишем нужные названия. Теперь выделяем наши три TLabel ( Shift + нажатие мышки на объекте) и ставим Size =14 в Font . Теперь сброс – просто клик где угодно на форме. Также выделяем три объекта TEdit . Ставим NumbersOnly – галочка , Alignment – toRightJustify, в Text уменястоит 0. Опять сбросим выделение и займемся кнопкой. Просто поле Caption будет название &Вычислить. На этом визуальное оформление можно было бы закончить, но остается Combobox . Он нужен для выбора. Будет выбираться фигура для расчета. У компонента TCombobox есть список Items . Там заполняем нужную информацию для дальнейшего выбора фигур. У меня список: цилиндр, полый цилиндр и шар. В поле Text — выберите фигуру. Визуальная заготовка выглядит так:
В следующей статье рассмотрим детальное решение для нашей программы.
. площадь целиндра вычислить delphi вычисление площади объема формула 4pr2 площадь целиндра вычислить delphi площадь полого цилиндра формула
Видео:Нахождение площади треугольника по координатам.mp4Скачать
BestProg
Видео:Интегралы №12 Вычисление площадейСкачать
Разработка простейшей программы расчета площади круга и объема шара как Windows-приложения
В этой теме рассматривается пример создания простейшего приложения, предназначенного для эксплуатации в среде Windows.
Содержание
Условие задачи
Составить программу для вычисления площади круга S и объема шара V на основе заданного радиуса R . Программу реализовать как Windows-приложение.
Математическая постановка задачи
Перед началом разработки приложения необходимо осуществить математическую постановку задачи, то есть, определить формулы по которым будет произведен расчет а также входные данные и исходящие результаты.
Площадь круга вычисляется по формуле:
S = π · R²
Входящим значением здесь есть радиус окружности R, результатом есть площадь круга – S.
Объем шара вычисляется по формуле:
V = 4/3 · π · R³
Входящим значением здесь есть, опять же, радиус окружности R, результат – объем шара (хотя, как известно, «шара» объема не имеет).
В обеих формулах фигурирует константа π, равная 3,14159.
Таким образом, нарисуем последовательность этапов решения задачи (рисунок 1).
Рис. 1. Этапы решения задачи
Выполнение
1. Создание приложения типа VCL Form Application .
Запустить систему визуальной разработки приложений Embracadero RAD Studio Delphi 2010 и создаем Windows-приложение. Подробный пример создания приложения по шаблону Windows Form Application описан здесь.
Первоначальный вид формы приложения перед началом проектирования изображен на рисунке 2.
Рис. 2. Вид окна программы
2. Вкладка Standard панели инструментов Tool Palette .
В данном приложении необходимо использовать несколько компонент, которые перечислены ниже:
- компонент типа TLabel , представляющий строку текста, которая выводится на форме;
- компонент типа TButton , представляющий кнопку на форме;
- компонент типа TEdit , являющийся строкой ввода текста.
Все эти компоненты размещены на панели инструментов Tool Palette на вкладке Standard (см. рис. 3.).
Рис. 3. Вкладка Standard на палитре компонент
3. Компонент TLabel
3.1. Размещение компонента TLabel на форме
Для этого необходимо кликнуть мышкой на компоненте TLabel (рис. 4), а потом кликнуть в верхнем левом углу формы, как изображено на рис. 5.
Рис. 4. Компонент TLabel на палитре инструментов
Рис. 5. Компонент типа TLabel на главной форме программы
3.2. Задание текста в TLabel
Для выполнения каких-либо действий с компонентом TLabel его сначала необходимо выделить с помощью «мышки» или выбором в панели Object Inspector . После этого устанавливаем свойство Caption компонента TLabel в значение « R = » (рис. 6).
Рис. 6. Свойство Caption
В результате на форме текст « Label1 » изменится на текст « R = «.
Object Inspector дает возможность просматривать много других свойств этого компонента. В нашем случае нас будет интересовать свойство Name , в котором содержится значение названия переменной (объекта). По умолчанию это значение равно « Label1 «. Это значит, что во время написания программного кода к свойствам этого компонента можно обращаться с префиксом « Label «. Например, для того чтобы в программе изменить свойство Caption необходимо набрать следующую строку:
Таким же образом выносим на форму компоненты с именами Label2 и Label3 чуть ниже предыдущего компонента. Устанавливаем значения свойства Caption соответственно в « S = » и « V = «.
Форма приложения должна иметь приблизительно следующий вид (рис. 7).
Рис. 7. Форма приложения после размещения компонент Label1, Label2, Label3
Перенос и обработка всех других компонент с палитры Tool Palette осуществляется аналогично.
4. Компонент TEdit
Добавляем из палитры Tool Palette с вкладки Standard компонент TEdit , представляющий строку ввода. С помощью использования этого компонента будем получать значения радиуса окружности введенного пользователем с клавиатуры. После добавления компонента на форму система Delphi создает компонент-переменную с названием Edit1 (свойство Name ).
Очищаем свойство Text компонента.
5. Компонент TButton
Добавляем из палитры Tool Palette компонент TButton , представляющий собой обычную кнопку, после нажатия на которой будет вычисляться площадь круга и объем шара. В приложении системой Delphi автоматически будет добавлено компонент-переменную с именем Button1 .
Свойство Caption компонента устанавливаем в значение « Вычислить «.
Форма приложения в режиме проектирования будет иметь вид, изображенный на рис. 8.
Рис. 8. Форма приложения после добавления компонент TEdit и TButton
6. Программирование события клика на кнопке « Вычислить «
Следующим шагом в разрабатываемом приложении есть программирование события в Delphi, которое возникает при нажатии на кнопке Button1. Событие клика мышкой на кнопке называется OnClick.
Delphi 2010 автоматически создает фрагмент программного кода, в котором необходимо вписать собственный код обработки события. Созданный системой код имеет вид:
Первоочередным заданием есть определение входных данных, результатов или промежуточных переменных, которые будут использоваться в программе.
Согласно условия задачи в нашей программе опишем три переменные с соответствующим обозначением:
- R – радиус окружности;
- S – площадь круга;
- V – объем шара.
Все переменные должны быть вещественного типа.
Также в программе используется одна константа – число Пи. Обозначим его именем Pi . Следует отметить, что в Delphi есть встроенная функция с именем Pi , но в нашем приложении она не будет задействована. Таким образом, описание переменных и констант перед словом begin будет следующим:
Между операторами begin и end вписываем следующие строки основного программного кода:
Объясним некоторые функции (методы), использующиеся в программном коде. Функция StrToFloat осуществляет преобразование строчной величины Edit1.Text в число вещественного типа. Например, после выполнения следующего кода
значение х станет равно -3.675 .
В пунктах 2 и 3 происходят обычные вычисления площади круга и объема шара с помощью арифметических операций языка Паскаль.
В пункте 4 осуществляется вывод результатов. Поскольку программа реализована как Windows -приложение, то для вывода результата достаточно заполнить значение свойства Caption в компонентах Label2 (площадь) и Label3 (объем).
Функция FloatToStrF осуществляет обратное преобразование к функции StrToFloat , то есть преобразует число вещественного типа в строку. Например, для преобразования числа 2.87 в строку с точностью 4 знака после запятой нужно написать:
где v – переменная вещественного типа; str – переменная строкового типа; ffFixed – формат преобразования. Константа 8 означает, что используется общая ширина вывода размером в 8 знаков. Константа 4 означает точность после запятой.
Общий листинг процедуры обработки события OnClick компонента Button1 имеет вид.
7. Установка названия приложения
Чтобы изменить название приложения вместо непонятного « Form1 » нужно в свойстве Caption главной формы установить значение « Расчет площади круга и объема шара «.
8. Результат выполнения приложения
После запуска приложения (программы) на исполнение отображается окно с запросом о введении радиуса окружности R . Вводим значение 2,5 . Окно с результатом выполнения программы изображено на рисунке 9.
Рис. 9. Результат выполнения приложения
Итоги
При решении данной задачи было использовано компоненты следующих типов:
- TLabel — компонент типа «метка», представляющий обычную текстовую строку для вывода на форме;
- TButton — компонент, представляющий обычную кнопку на форме;
- TEdit — компонент реализующий строку ввода, предназначенную для получения информации введенной пользователем с клавиатуры.
Для проектирования интерфейса программы использовалась панель инструментов Tool Palette а также инспектор объектов Object Inspector .
Также рассмотрено две дополнительные функции, осуществляющие преобразование строки в число и обратно, а именно:
- функция StrToFloat , преобразующая строку, отображающую число, в вещественное число (например, ‘3,678’ => 3.678 ) с учетом региональных настроек Windows ;
- функция FloatToStrF , преобразующая вещественное число в строковой вид соответственно заданному формату (например 2.88 => ‘2,880’ ) с учетом региональных настроек Windows .
Видео:Delphi Квадратное уравнениеСкачать
Метод Монте-Карло вычисления площадей фигур и его реализация в среде Delphi
В начале урока рассказываю идею метода. Ребята, сегодня мы рассмотрим интересный метод приближенного вычисления площадей фигур – метод Монте – Карло. Пусть у нас есть какая – нибудь фигура на плоскости, площадь которой ( Sfig ) нам необходимо найти. Ограничим ее другой фигурой, площадь которой ( Stotal ) мы можем легко вычислить. Например, прямоугольником АСDB со сторонами, параллельными координатным осям (см. рис. 1). И пусть про любую точку прямоугольника мы можем быстро узнать, попадает эта точка внутрь фигуры, площадь которой мы ищем, или нет.
А теперь начнем опыт – будем бросать на бумагу зерна случайным образом (вообще – то это нелегко сделать, чтобы обеспечить случайность). Когда нам покажется, что зерна почти полностью покрыли бумагу, посчитаем, сколько всего зерен на прямоугольнике (пусть их число Ntotal ) и сколько из них на фигуре ( Nfig ). Ясно, что число зерен, попавших внутрь фигуры, пропорционально ее площади: больше площадь – больше зерен, меньше площадь – меньше зерен. Поэтому, поделив количество зерен , попавших внутрь фигуры , на количество всех зерен в прямоугольнике, мы сможем найти, какую часть площади прямоугольника занимает фигура:
Промоделируем этот опыт на ЭВМ. Предположим, нам надо найти площадь фигуры ограниченной сверху кривой Y = F(X), а снизу – осью абсцисс. Пусть Y = cos(X), а Х I [– p /2, p /2] (см. рис. 2). Ограничим нашу фигуру прямоугольником АСDB, его площадь равна p .
Из чего должен состоять алгоритм:
1. Бросание зерна – бросание случайной точки, координаты X и Y которой случайны, причем Х должна меняться от – p /2 до p /2, а Y – от 0 до 1. И в этих интервалах X и Y должны появляться с одинаковой вероятностью в любой точке этих отрезков, т.е. X и Y должны быть равномерно распределены по осям. Тут надо напомнить ребятам, как получить равномерно распределенное случайное вещественное число на интервале [А, В]:
Х = random* ( B – A) + A
2. Надо определить, куда попала точка – под кривую или выше нее. И вести подсчет Nfig. Условие попадания точки под кривую: Y ? sin (X).
3. Повторить пп.1 и 2 столько раз, чтобы получить желаемую точность результатов.
Дети без труда напишут программу по данному алгоритму (на практическом занятии). И после этого наступает момент разочарования. Сухие цифры.
Предложение учителя: давайте создадим проект в Delphi, который наглядно демонстрировал бы работу метода Монте – Карло. Разработаем интерфейс программы. Тут ребята сами предлагают несколько вариантов оформления проекта, один из которых представлен на рис. 3.
Разместим на форме следующие компоненты:
Edit – окно редактирования для ввода общего количества испытаний (бросков зерен) – Ntotal;
Button – кнопка для запуска работы метода Монте – Карло;
Panel – панель для вывода посчитанной площади фигуры;
(все вышеперечисленные компоненты расположены на вкладке Standart Палитры компонентов)
Image – для вывода точек, попавших в искомую область (компонент расположен на вкладке Additional Палитры компонентов).
Если необходимо, надо напомнить ребятам некоторые свойства и методы выбранных компонентов (это может быть и домашним заданием предыдущего урока, чтобы не терять время на “воспоминания”) .
Свойство Text – содержит текст, который пользователь набирает в окне Edit. Этот текст надо преобразовать в число Ntotal. Для этого в Delphi есть необходимая функция StrToInt:
Ntotal = StrToInt (Edit1.Text).
Свойство Caption – содержит текст, который выводится на панель. Чтобы вывести полученное число Sfig на панель, мы должны преобразовать его в строку S с помощью процедуры Str:
а потом вывести эту строку на панель следующим образом:
Panel1.Caption := ‘Площадь фигуры = ‘ + S
Свойства Height и Width – соответственно высота и ширина компонента;
Свойство Canvas – отводит канву (место) для рисования на компоненте Image;
FillRect(ClientRect) – закрашивает область клиента компонента Image каким – либо цветом
(по – умолчанию – белым), т.е. стирает предыдущую картинку;
MoveTo(X, Y) – перемещает перо в точку с координатами X, Y без проведения линии (координаты задаются в пикселях);
LineTo(X, Y) – проводит линию из текущей точки в точку с координатами X, Y;
Pixels[I, J] – содержит цвет точки с координатами I, J.
У кнопки (компонент Button) мы будем обрабатывать событие onClick (событие нажатие кнопки). Т.е. вышеописанный алгоритм мы программируем в процедуре Button1Click.
Тут учитель задает вопрос классу: “ Какая проблема возникает при выводе точки на экран (на компонент Image)?” Ответ: расчетные координаты очень малы (0 ? Y ? 1,меньше пикселя, -p /2 ? X ? p /2); а если взять другую кривую Y = F(X), они могут оказаться слишком большими (больше размера компонента Image). Поэтому, при выводе значений функций (графиков) на экран монитора, необходимо преобразовывать расчетные координаты в графические с учетом дискретности растровой сетки монитора, а также предусмотреть возможность автоматического масштабирования функции (графика) по осям координат. Для этого желательно создать отдельную подпрограмму.
Для полного размещения функции (графика) в расчетной области (это область компонента Image) необходимо определить X_min, X_max, Y_min, Y_max – минимальные и максимальные значения по X и по Y соответственно. X_min =А, X_max = В. Как найти Y_min, Y_max.
Коллективно обсуждается следующий алгоритм:
1. Разобьем интервал [А, В] по Х на N равных частей и определим массивы значений аргумента и функции X[i] и Y[i] = F(X[i]), где I = 1..N;
2. Определяем наибольшее Y_max и наименьшее Y_min значения функции в заданном интервале изменения аргумента;
3. Находим коэффициенты масштабирования Kx, Ky при построении графика в заданной области;
4. Т.к. коэффициенты масштабирования Kx, Ky могут отличаться, то выводимый график может искажаться. Устраняем искажения графика;
5. Преобразуем расчетные координаты точки X, Y в графические Xg, Yg. С учетом того, необходимости “переворота” оси Y, которая в координатах монитора направлена сверху вниз.
Листинг программы, реализующей данные алгоритмы представлен в конце статьи. Результат работы программы при разном количестве испытаний представлен на рис. 3, 4.
Задания для самостоятельной работы:
1. Применить метод Монте – Карло для приближенного вычисления площади фигуры, ограниченной сверху кривой Y = sin (X), при Х I [ 0, p ];
2. Применить метод Монте – Карло для приближенного вычисления числа p . Подсказка: рассмотреть круг единичного радиуса с центром в т. (1, 1). Его площадь и будет равна p .
3. Применить метод Монте – Карло для приближенного вычисления площади фигуры, ограниченной сверху кривой Y = sin (X), при Х I [ 0, 2p ];
4. Применить метод Монте – Карло для приближенного вычисления площадей фигур, представленных на рис. 5 – 7.
5. Доработать проект:
а) организавать проверку правильности ввода информации в поле Edit (чтобы вводились только целые числа);
б) разметить оси и подписать числовые значения.
На последующих уроках, на которых предполагается изучение тем “Вычисление площадей (интегралов) методом трапеций и методом прямоугольников”, можно предложить ребятам доработать проект, поместив на форму дополнительные компоненты Image, Button, Edit, Panel (для каждого численного метода – свои). В окно компонента Edit пользователь будет вводить количество разбиений интервала [А, В] по Х. Таким образом, ребята смогут сравнить и наглядно увидеть работу всех трех численных методов.
unit Monte;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
Edit1: TEdit;
Label1: TLabel;
Image1: TImage;
const A = -Pi/2.0; B = pi/2.0; n = 1000;
var
Form1: TForm1;
N_total:longint;
implementation
Function FUNC(x:real):real;
begin
Func:=Cos(x);
end;
Procedure Graphic( var right, down: integer;
var X_min, X_max, Y_min, Y_max, Kx, Ky: real);
type arr=array[1..n] of real;
var
X, Y: arr; dx: real;
i: integer;
begin
dx:=(B-A)/(n-1);
for i:=1 to n do begin X[i]:=A+dx*(i-1);
Y[i]:=FUNC(X[i]);
end;
X_max:=B; X_min:=A;
Y_max:=Y[1]; Y_min:=Y[1];
for i:=2 to n do begin
if Y_max Y[i] then Y_min:=Y[i];
end;
💡 Видео
Вычисление площади круга и длинны окружности по заданному радиусу в Паскаль с применением константыСкачать
Программа вычисления площади треугольника на языке Си.Скачать
program integral delphiСкачать
Delphi-экзаменатор. Задача про тортСкачать
Видеоурок по математике "Вычисление площади фигуры"Скачать
Delphi. Видеокурс. Урок2Скачать
Вычисление площади треугольника по координатам его вершин. | Задачи C#Скачать
Уроки Lazarus|Delphi Проект "Площа фігур"Скачать
Курсы программирования. Урок 6. Математические функции DelphiСкачать
Вычисление площади треугольника через основание и высоту в программе на языке ПаскальСкачать
#9 Программирование в Delphi. Математические операцииСкачать
рисуем круг и отрезаем кусочек делфи программированиеСкачать
Вычисление площади и периметра прямоугольника на Pascal.Скачать
Программирование в Delphi / Урок 1. Знакомство со средой разработки. Приложение "Привет, мир!"Скачать
Вычисление площади и периметра прямоугольника в ПаскальСкачать