Модуль - Для квадратного уравнения напишите модуль, реализующий нахождения его корней.
Описание
Цель работы: Научится создавать и реализовывать модули в программах.
/ задача из РК программа в Pascal Lazarus.
В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023
Условия для программы, под которые она выполнена:
- Для квадратного уравнения напишите модуль, реализующий нахождения его корней.
Программа в сделанном виде:




Показать/скрыть дополнительное описание
Лабораторная работа №8. Вариант 5. ЛР Модуль Цель работы: Научится создавать и реализовывать модули в программах. / задача из РК программа в Pascal Lazarus. В архиве также файл с объяснениями работы программы. Тэги: Программа на Lazarus, PascalObject, Pascal, Delphi, Turbo Delphi, Pascal ABC / Анимация, ЛР, РК, ДЗ, 2023 Условия для программы, под которые она выполнена: Для квадратного уравнения напишите модуль, реализующий нахождения его корней. Программа в сделанном виде: Лабораторная работа № 8 Модуль. Цель работы: Научится создавать и реализовывать модули в программах. Теоритическая часть: Модуль это такая программная единица, которая может и, чаще всего, компилируется отдельно и независимо от главной программы.
В модуле могут содержаться определения и реализации, часто используемых функций и процедур, а также константы, переменные, объявленные типы. Это позволяет разделить работу между программистами при разработке больших и сложных программ. Например, один программист может разрабатывать один модуль, второй программист – другой модуль, а третий главную программу. Распределением работы, в том числе какие функции и процедуры должны содержаться в том или ином модуле, что они должны делать, какие результаты они должны выдавать, их интерфейс, т.е. список и типы формальных параметров, как правило, занимается руководитель проекта. При этом каждый программист пишет и отлаживает свой модуль независимо от других.
Текст модуля на языке программирования называется исходным модулем. После компиляции создается так называемый объектный модуль. Объектный модуль это такой модуль, который уже переведен на внутренний машинный язык. На этапе компоновки (сборки) необходимые модули включаются в программу (компонуются) для обеспечения правильных вызовов функций и процедур. Например, главная программа вызывает некую функцию из модуля А, в модуле В происходит вызов процедуры из модуля С и т.д. Такой процесс называется разрешением связей. В итоге собирается исполняемая программа. Структура модуля Структура модуля имеет вид: unit <Имя модуля>; interface// раздел интерфейса <раздел открытых описаний> implementation // раздел реализации <раздел закрытых описаний> initialization// раздел инициализации finalization // раздел завершения end.
Модуль начинается со служебного слова unit, за которым следует имя модуля. В случае если данный модуль использует другие модули, после слова interface необходимо поместить служебное слово uses и список используемых модулей. Интерфейсный раздел модуля начинается со служебного слова interface. В этом разделе можно определять константы, типы данных, переменные, процедуры и функции, которые доступны для всех программ и модулей, использующих данный модуль. Глобальные переменные, помещенные в интерфейсной секции, могут быть использованы в основной программе. Раздел реализации модуля начинается служебным словом implementation. В секции реализации могут находиться свои описания, невидимые для программ и модулей, использующих данный модуль.
Описанные в секции интерфейса константы, типы данных, переменные, процедуры и функции являются видимыми в секции реализации. Те процедуры и функции, которые описаны в интерфейсной секции, описываются еще раз в секции реализации, причем их заголовок должен быть точно таким же, как тот, который указан в секции интерфейса. В секции инициализации помещаются операторы, выполняющиеся только один раз при обращении к данному модулю основной программы. Эти операторы обычно используются для подготовительных операций. Например, в секции инициализации могут инициализироваться переменные, открываться нужные файлы. При выполнении программы, использующей некоторый модуль, секция инициализации этого модуля вызывается перед запуском основного тела программы.
При использовании нескольких модулей, их секции инициализации вызываются в порядке, указанном в операторе uses. Секция инициализации является необязательной и может вообще отсутствовать. Раздел finalization также является необязательным. В нем выполняются различные действия перед закрытием программы, например закрытие файлов баз данных, освобождение динамически распределенной памяти и т.д. С целью уменьшения размера основной программы, улучшения читабельности готовые подпрограммы рекомендуется оформлять в виде модуля. Имя библиотечного модуля должно совпадать с именем файла, под которым хранится текст модуля на диске. Исходный текст библиотечного модуля имеет расширение *.pas (<имя модуля>.pas).
Пример 1: Создать модуль, который реализует перевод градусный меры угла в радианы. Для того чтобы создать модуль, необходимо в меню Файл выбрать пункт Создать модуль. В окне редактора исходного кода появится заготовка кода для модуля, где и необходимо ввести текст модуля. Листинг модуля: unit my_modul; {$mode objfpc}{$H+} interface function gradus_radian(gradus , minuta , secunda : double):real; implementation function gradus_radian(gradus , minuta , secunda : double):real; begin gradus_radian:=gradus*pi/180+minuta*pi/180/60+secunda*pi /180/60/60; end; end. Сохраните модуль обязательно с тем же именем, что указан в заголовке модуля, т.е. my_module.pas в какой-нибудь папке.
Откомпилируйте модуль нажав клавиши Ctrl+F9 или меню Запуск - > Собрать. Для каждого модуля создаются два файла: двоичный файл описания модуля с расширением (.ppu) и объектный с расширением (.o). Таким образом, в вашей папке создадутся два файла my_module.ppu и my_module.o Создадим GUI приложение для реализации модуля. Листинг программы: unit Unit1; {$mode objfpc}{$H+} interface uses Classes,SysUtils,FileUtil,Forms,Controls, Graphics, Dialogs, StdCtrls, Buttons, my_modul; type { TForm1 } TForm1 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; var procedure BitBtn1Click(Sender: TObject); private { private declarations } public { public declarations } end; Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.BitBtn1Click(Sender: TObject); var grad, min, sec: double; begin grad:=strtofloat(Edit1.text); min:=strtofloat(Edit2.Text); sec:=strtofloat(Edit3.Text); Edit4.text:=floattostr(gradus_radian(grad,min,sec)); end; end.
Рис.1 Задания для самостоятельной работы: 1.Вычислите выражение z(x)=(sign(x)+sign(y)) sign(x+y). При решении задачи учесть свойства функции sign: −1, 𝑥 < 0 𝑠𝑖𝑔𝑛(𝑥) = � 0, 𝑥 = 0 1, 𝑥 > 0 2.Даны вещественные числа s, t. Получите: H(s,t)+(max(H2(s-t,s*t),H4(s-t,s+t))+H(1,1), где 𝐻(𝑎, 𝑏) =𝑎 1+𝑏 𝑏 1+𝑎2 − (𝑎 − 𝑏)3 3.Создайте модуль, вычисляющий sh(x), и для заданного значения переменной x вычислите следующее выражение: sh(x)+tg(x+1)-tg2(2+sh(x-1)) 4.Напишите модуль, реализующий сложение двух дробей, результатом которой является несократимая правильная дробь. Используйте функцию для нахождения наибольшего общего делителя. 5.Для квадратного уравнения напишите модуль, реализующий нахождения его корней.
6.Напишите программу, используя функции в виде отдельного модуля: Вводитсяпоследовательностьцелыхчисел,0–конец последовательности.Определить,содержитлипоследовательность хотя бы одно число, сумма цифр в котором равна их количеству. Создать модуль, который возвращает сумму и количество цифр в числе. 7.Вывести на экран значения функции f(x)=x-2ex и ее первой производной f\'(x), в диапазоне от -5 до 5, с шагом 0.5. Для вычисления значений f(x) и f\'(x) создать функции реализованной в виде модуля. 8.Вводится последовательность из N целых элементов. Для всех положительных элементов последовательности вычислить значение факториала и вывести его на экран.
Вычисление факториала оформить в виде модуля. 9.Вывестинаэкранзначениефункции𝑓(𝑥) = �(5𝑥3)sin(𝑥2)и 𝑥 𝑔(𝑥) = � 𝑒4, если 𝑥 > 0; 5√𝑥2, если 𝑥 < 0. в диапазоне от a до b, с шагом h. Для вычисления значений f(x) и g(x) создать функции в виде модуля. 10.Даны натуральные числа n, a1, … , an. Определить, используя ранее созданные соответствующие модули, количество членов ak последовательности a1, … , an: а) являющихся нечетными числами; б) кратных 3 и не кратных 5; 11.Даны натуральные числа n, a1, … , an. Определить, используя ранее созданные соответствующие модули, количество членов ak последовательности a1, … , an: а) являющихся квадратами четных чисел; б) удовлетворяющих условию a < ak−1+ak+1 2 12.Даны натуральные числа n, a1, … , an.
Определить, используя ранее созданные соответствующие модули, количество членов ak последовательности a1, … , an: а) удовлетворяющих условию 2k < ak < k!; б) имеющих четные порядковые номера и являющихся нечетными числами. 13.Даны натуральные числа n, q1, … , qn. Найти, используя ранее созданные соответствующие модули, те члены qi последовательности q1, … , qn, которые а) являются удвоенными нечетными числами; б) при делении на 7 дают остаток 1, 2 или 5; 14.Даны целые числа a1, … , a50. Получить, используя ранее созданные соответствующие модули, сумму тех чисел данной последовательности, которые а) кратны 5; б) удовлетворяют условию |ai| < i2 15.Даны натуральное число n, целые числа a1, … , an.
Найти, используя ранее созданные соответствующие модули, количество и сумму тех членов данной последовательности, которые делятся на 5 и не делятся на 7. 16.Даны натуральные числа n, p, целые числа a1, … , an. Получить, используя ранее созданный соответствующий модуль, произведение членов последовательности a1, … , an, кратных p. 17.Даны целые числа p, q, a1, … , a67 ( p > q ≥ 0 ). В последовательности a1, … , a67 заменить, используя ранее созданный соответствующий модуль, нулями члены, модуль которых при делении на p дает в остатке q. 18.Даны натуральное число n, действительные числа a1, … , an. Вычислит, используя ранее созданный модуль, обратную величину произведения тех членов ai последовательности a1, … , an, для которых выполнено i+1 < ai < i!.
Контрольные вопросы 1.Что такое модуль....
Файлы условия, демо
Характеристики лабораторной работы
Список файлов
