лабораторные работы лазарус. лабораторные работы на Лазарусе. Лабораторная работа 1 Основные понятия среды Lazarus
Скачать 1.42 Mb.
|
Math, Classes, SysUtils, LResources, Forms, Controls, Graph- ics, Dialogs, StdCtrls; Задание 1. Вычислить значение функции x x x f 5 2 2 1 1 Решение любой задачи начинается с определения входных и выходных переменныха также определения типа переменных. входные переменные: x: integer; выходные переменные: f: real. Размещаем компоненты на форме (рис. 8). 13 Свойства выбранных компонент: Form1 – Caption – Значение функции Label1 – Caption – Введите значение х Label2 – Caption – Значение функции f Button1 – Caption – Вычислить Edit1 – Text – пусто Edit2 – Text – пусто При написании процедур необходимо помнить, что все вводимые данные воспринимаются как строки. Поэтому необходимо переводить вводимые чи- словые данные из строки в числа, а выводимый результат переводить из числа в строку. Процедура и блок-схема (рис. 9) для вычисления значения функции будет иметь ниже приведенный вид (обратите внимание, что при написании про- граммы все служебные слова выделяются автоматически жирным шрифтом): procedure TForm1.Button1Click(Sender: TObject); var x:integer; f:real; begin x:=strtoint(edit1.text); f:=1/(sqr(x+1)+2)+exp(5*ln(x))-sqrt(x); edit2.text:=floattostr(f); end; Задание 2. Добавить на форму командную кнопку Button2. Задать для нее надпись Очистить. Задать для кнопки Очистить реакцию на событие – при нажатии на кнопку должны очищаться компоненты Edit1 и Edit2 и курсор помещаться в компоненту Edit1. StrToInt – перевод строки в целое число StrToFloat – перевод строки в вещественное число IntToStr – перевод целого числа в строку FloatToStr – перевод вещественного числа в строку начало х x x x f 5 2 2 1 1 f конец Рис. 9. Рис. 8. 14 Задание 3. Известны длины сторон треугольника a, b и с (рис. 10). Вы- числить площадь S, периметр P и величины углов α, β и γ (в градусах) тре- угольника. Для вычисления площади треугольника применим формулу Герона: c r b r a r r S , где 2 c b a r – полупериметр. Первый угол α найдем по теореме косину- сов: ab c b a 2 cos 2 2 2 Второй угол β найдем по теореме синусов: sin sin a b Третий угол γ найдем по формуле: Необходимо помнить, что найденные углы по приведенным формулам будут вычислены в радианах. Для перевода радиан в градусы надо воспользо- ваться формулой: 180 x x , где х – угол в радианах. Определим в программе входные и выходные переменные: входные переменные: a, b, c (стороны): integer; выходные переменные: alfa, betta, gamma (углы), S (площадь), r (полупе- риметр): real; P (периметр): integer. Размещаем компоненты на форме (рис. 11). Свойства выбранных компонент: Form1 – Caption – Параметры треугольника Label1 – Caption – Введите длины сторон Label2 – Caption – а= Label3 – Caption – b= Label4 – Caption – с= Label5 – Caption – Величины углов Label6 – Caption – alfa= Label7 – Caption – betta= Label8 – Caption – gammа= α γ β b а c Рис. 10. Рис. 11. 15 Label9 – Caption – Периметр Р= Label10 – Caption – Площадь S= Button1 – Caption – Вычислить Button2 – Caption – Очистить Edit1 – Text – пусто Edit2 – Text – пусто Edit3 – Text – пусто Edit4 – Text – пусто Edit5 – Text – пусто Перед написанием процедуры необходимо в список модулей добавить модуль Math. Процедура и блок-схема (рис. 12) для кнопки Вычислить будет иметь вид: procedure TForm1.Button1Click(Sender: TObject); var a,b,c,P:integer; alfa,betta,gamma,S,r:real; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); c:=strtoint(edit3.text); P:= a+b+c; r:=Р/2; S:=sqrt(r*(r-a)*(r-b)*(r-c)); alfa:=arccos((sqr(b)+sqr(c)- sqr(a))/(2*b*c)); betta:=arcsin(b/a*sin(alfa)); gamma:=pi-(alfa+betta); alfa:=alfa*180/pi; betta:=betta*180/pi; gamma:=gamma*180/pi; Label6.caption:='alfa='+floattostr(alfa); Label7.caption:='betta='+floattostr(betta); Label8.caption:='gamma='+floattostr(gamma); Edit4.text:=inttostr(P); Edit5.text:=floattostr(S); Рис. 12. 16 end; Процедура для кнопки Очистить будет иметь вид: procedure TForm1.Button2Click(Sender: TObject); begin edit1.clear; edit2.clear; edit3.clear; edit4.clear; edit5.clear; edit1.setfocus; label6.caption:='alfa='; label7.caption:='betta='; label8.caption:='gamma='; end; Задания для самостоятельного выполнения 1. Найти значение функции (все переменные принимают действительные значения). 2. Решить задачу. Вариант Задание 1 1. x y x x x y x f 2 2 2 1 2 2 sin 1 2. В прямоугольном треугольнике известны катет b и площадь S. Найти величину гипотенузы с, второго катета а и углов и 2 1. 4 ln 2 x x y x x y f 2. Даны две стороны треугольника и угол между ними. Опреде- лить третью сторону, площадь треугольника и радиус описанной окружности. 17 3 1. 2 18 1 1 xy x x f x 2. Известны координаты вершин квадрата ABCD: A(x1, y1) и C(x2, y2). Найти его площадь и периметр. 4 1. 3 2 2 8 ab b a b a f 2. Известна площадь квадрата S. Вычислить сторону квадрата а, диагональ d и площадь круга S1, описанного вокруг квадрата. 5 1. a bt b at e f bt sin 2. В равнобедренном треугольнике известно основание с, угол при основании равен . Найти площадь треугольника S и вели- чину боковой стороны а. 6 1. 1 sin cos 2 bx e bx bx e x a f x x 2. Вычислить диагональ и площадь прямоугольника, вписанного в окружность радиуса R, если отношение его сторон равно n. 7 1. b x a b x tg x f 2 2 3 2. Задан периметр квадрата Р. Вычислить сторону квадрата а, диагональ d и площадь S. 8 1. 2 1 ln cos ln 3 2 x x x ctg f 2. Задан первый член а1 и разность d арифметической прогрес- сии. Вычислить сумму n членов арифметической прогрессии и значение n-го члена. 18 Лабораторная работа №3 Оператор ветвления Ветвление – это алгоритмическая структура, в которой проверяется некото- рое условие и в зависимости от результатов проверки выполняется то или иное действие. Для программирования проверки условия и выбора действия в зависимости от этого условия используются условные операторы. Условие в языке программирования может принимать два значения: истина (True) и ложь (False). Условие записывается с помощью операций отношений (табл. 11) и логических операторов (табл. 12). Таблица 11 Операции отношения Оператор Действие Оператор Действие > Больше <> Не равно < Меньше >= Больше или равно = Равно <= Меньше или равно Таблица 12 Логические операторы Оператор Действие Оператор Действие and логическое И or логическое НЕ not логическое НЕ xor логическое исключающее ИЛИ Использование операторов сравнения позволяет записывать простые усло- вия. Из простых условий, которые являются выражениями логического типа, мож- но строить сложные условия с применением к ним, как к операндам, логических операторов. Примеры задания условий с помощью операций отношений и логических операторов представлены на рисунке 13. Рис. 13. 19 Существует две формы условного оператора: 1. Полное ветвление (развилка). Синтаксис: If условие Then оператор1 Else оператор2; если условие то действие 1 иначе действие 2 все После условие и оператора1 «;» не ставится. Пример. If x>=4 Then y:=sqr(x) Else y:=abs(x); Иногда после служебных слов Then или Else может стоять более одного оператора. Тогда необходимо использовать составной оператор. Составной оператор может состоять из произвольного количества опера- торов, разделенных между собой «;». Синтаксис: Begin Оператор1; Оператор2; …….. Оператор n; End; Пример. If (x>=4) and (x<=5) Then Begin y:=sqr(x); z:=sqrt(x); end Else y:=x+8; запись полного ветв- ления выбора на ал- горитмическом язы- ке 20 2. Неполное ветвление. Синтаксис: If условие Then оператор; если условие то действие все Блок-схемы полного и неполного ветвлений представлены на рисунках 14 и 15. Задание 1. Составить программу нахождения действительных и ком- плексных корней квадратного уравнения 0 2 c bx ax Определим переменные задачи: входные переменные: a, b, c (коэффициенты уравнения): real; промежуточные переменные d(дискриминант), у1, у2(вспомогательные переменные): real; результат: x1, x2 (корни уравнения): real. Можно выделить следующие этапы решения задачи: 1) Ввод коэффициентов квадратного уравнения a, b и c. 2) Вычисление дискриминанта d по формуле ac b d 4 2 3) Проверка знака дискриминанта. Если d ≥0, то корни уравнения действительные и находятся по формулам: a d b x 2 2 , 1 Если d <0, то корни уравнения комплексные и находятся по формулам: a d i b x 2 2 , 1 Рис. 14. Рис. 15 запись неполного ветвле- ния выбора на алгорит- мическом языке 21 Рис. 17. Для нахождения корней будем использовать вспомогательные перемен- ные: a b y 2 1 , a d y 2 2 . Тогда корни уравнения примут вид: действительные – 2 1 1 y y x , 2 1 1 y y x ; комплексные – 2 1 1 iy y x , 2 1 1 iy y x Размещаем компоненты на форме (рис. 16). Свойства выбранных компонент: Form1 – Caption – Решение квадратного уравнения Label1 – Caption – Введите коэффициенты уравнения Label2 – Caption – Коэффициент а= Label3 – Caption – Коэффициент b= Label4 – Caption – Коэффициент с= Label5 – Caption – Корни уравнения Label6 – Caption – х1= Label7– Caption – х2= Button1 – Caption – Вычислить Button2 – Caption – Очистить Edit1…5 – Text – пусто Процедура и блок-схема (рис. 17) для вычисления значения функции бу- дет иметь вид: procedure TForm1.Button1Click(Sender: TObject); var a,b,c,d,x1,x2,y1,y2:real; begin a:=strtofloat(edit1.text); b:=strtofloat(edit2.text); c:=strtofloat(edit3.text); d:=sqr(b)-4*a*c; y1:=-b/(2*a); y2:=sqrt(abs(d))/(2*a); if d>=0 then begin Рис. 16. 22 Рис. 18. x1:=y1+y2; x2:=y1-y2; edit4.text:=floattostr(x1); edit5.text:=floattostr(x2); end else begin edit4.text:=floattostr(y1)+'+i'+floattostr(y2); edit5.text:=floattostr(y1)+'-i'+floattostr(y2); end; end; Задание 2. Процедуру для кнопки «Очистить» написать самостоятельно. Задание 3. Дано вещественное число x. Для функции, представленной графиком, вычислить x f y (рис. 18). Определим переменные задачи: входные переменные: х: real; результат: у: real. Аналитически функцию, представленную на рисунке 18, можно записать следующим образом: 1 , 1 1 2 , 2 , 4 2 x x x x y Размещаем компоненты на форме (рис. 19). Свойства выбранных компонент: Form1 – Caption – Значение функции Label1 – Caption – Введите х Label2 – Caption – Значение у Button1 – Caption – Вычислить Button2 – Caption – Очистить Edit1 – Text – пусто Edit2 – Text – пусто Рис. 19. 23 Процедура и блок-схема (рис. 20) для вычисления значения функции бу- дет иметь вид: procedure TForm1.Button1Click(Sender: TObject); var x,y:real; begin x:=strtofloat(edit1.text); if x<=-2 then y:=4 else if (x>-2) and (x<1) then y:=sqr(x) else y:=1; edit2.text:=floattostr(y); end; Задание 4. Процедуру для кнопки «Очистить» написать самостоятельно. Компонент CheckBox При ветвлении кроме известных компонент используется компонента CheckBox (независимый переключатель). Позволяет пользователю вы- брать/отменить определенную опцию. Для задания состояния независимого переключателя используется свой- ство State. CheckBox может находиться в трех состояниях: 1. Независимый переключатель выбран, в окошке компонента стоит га- лочка. Этому состоянию соответствует значение State=cbChecked. 2. Независимый переключатель не выбран, в окошке компонента галочка отсутствует. Этому состоянию соответствует значение State=cbUnchecked. 3. Независимый переключатель выбран, в окошке компонента стоит га- лочка, но само окошко и галочка серого цвета. Этому состоянию соответствует Рис. 20. 24 значение State=cbGrayed. Это, так называемое, промежуточное состояние. Свойство AllowGrayed=[true, false] включает (выключает) состояние cbGrayed. Задание 5. Составить программу «Флажок» для вычисления квадрата и модуля числа. Определим переменные задачи: входные данные: х: real; результат: у1,у2: real – модуль и квадрат числа соответственно. Для решения задачи расположим компоненты на форме (рис. 21). Свойства выбранных компонент: Label1 – Caption – Введите х CheckBox1 – Caption – Модуль CheckBox2 – Caption – Квадрат Edit1 – Text – пусто Edit2 – Text – пусто Edit3 – Text – пусто Процедуры для вычисления значений модуля и квадрата числа будут иметь вид: procedure TForm1.CheckBox1Change( Sender: TObject); var x,y1:real; begin x:=strtofloat(edit1.text); y1:=abs(x); if checkbox1.state=cbchecked then edit2.text:=floattostr(y1) else edit2.clear; end; procedure TForm1.CheckBox2Change( Sender: TObject); var x,y2:real; begin x:=strtofloat(edit1.text); y2:=sqr(x); if checkbox2.state=cbchecked then edit3.text:=floattostr(y2) Рис. 21. 25 Рис. 22. else edit3.clear; end; Задание 6. Определить, принадлежит ли некоторая точка М(х, y) закрашенной области (рис. 22). Определим переменные задачи: входные данные: х, y: real; результат: выделяется один из двух флажков: при- надлежит точка области или не принадлежит. Для решения задачи расположим компоненты на форме (рис. 23). Свойства выбранных компонент: Form1 – Caption – Область Label1 – Caption – Введите координаты точки М Label2 – Caption – х: Label3 – Caption – у: Button1 – Caption – Вычислить Button2 – Caption – Очистить CheckBox1 – Caption – Точка М принадлежит области CheckBox2 – Caption – Точка М не принадлежит области Edit1 – Text – пусто Edit2 – Text – пусто Процедуры для определения принадлежности точки области и очистки ком- понент будут иметь вид: |