Главная страница
Навигация по странице:

  • Лабораторная работа №3 Оператор ветвления Ветвление

  • Begin Оператор1; Оператор2; …….. Оператор n; End; Пример. If

  • end else begin edit4.text:=floattostr(y1)++i+floattostr(y2); edit5.text:=floattostr(y1)+-i+floattostr(y2); end ; end ; Задание 2.

  • лабораторные работы лазарус. лабораторные работы на Лазарусе. Лабораторная работа 1 Основные понятия среды Lazarus


    Скачать 1.42 Mb.
    НазваниеЛабораторная работа 1 Основные понятия среды Lazarus
    Анкорлабораторные работы лазарус
    Дата05.04.2023
    Размер1.42 Mb.
    Формат файлаpdf
    Имя файлалабораторные работы на Лазарусе.pdf
    ТипЛабораторная работа
    #1039153
    страница2 из 5
    1   2   3   4   5
    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 – пусто
    Процедуры для определения принадлежности точки области и очистки ком- понент будут иметь вид:
    1   2   3   4   5


    написать администратору сайта