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

  • Лабораторная работа №2 Линейные структуры

  • Лабораторная работа №3 Cписки

  • Лабораторная работа №4 Структуры с ветвлениями

  • Лабораторная работа №5.1 Циклы с неизвестным числом повторений

  • Лабораторная работа № 5.2 Циклы с заданным числом повторений

  • Лабораторная работа №6 Новогодняя открытка

  • Лабораторная работа №7 Таблицы

  • Листинг программы

  • лабораторные работы. Отчет по Л.Р. Романова Света. ПРИ-191. Лабораторная работа 1 Создание калькулятора


    Скачать 0.89 Mb.
    НазваниеЛабораторная работа 1 Создание калькулятора
    Анкорлабораторные работы
    Дата10.11.2020
    Размер0.89 Mb.
    Формат файлаdoc
    Имя файлаОтчет по Л.Р. Романова Света. ПРИ-191.doc
    ТипЛабораторная работа
    #149548

    Романова Света

    ПРИ – 191

    ООП

    Лабораторная работа 1

    Создание калькулятора
    Цель работы: Изучение основных элементов языка программирования Free Pascal: переменных, их типов, основных операций и функций на

    примере создания простейшего калькулятора.
    Листинг программы:

    unit Unit1;

    {$mode objfpc}{$H+}

    interface

    uses

    Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,

    ActnList, Interfaces;

    type

    { TForm1 }

    TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Button5: TButton;

    Button6: TButton;

    Button7: TButton;

    Button8: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button6Click(Sender: TObject);

    procedure Button7Click(Sender: TObject);

    procedure Button8Click(Sender: TObject);

    private

    public

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.lfm}

    { TForm1 }

    procedure TForm1.Button1Click(Sender: TObject);

    var e1,e2,e3:extended;

    begin

    e1:=strtofloat(edit1.Text);

    e2:=strtofloat(edit2.Text);

    e3:=e1+e2;

    edit3.Text:=floattostr(e3);

    end;

    procedure TForm1.Button2Click(Sender: TObject);

    var e1,e2,e3:extended;

    begin

    if e2<>0 then ShowMessage('ОШИБКА! На 0 делить нельзя!')

    else

    begin

    e1:=strtofloat(edit1.Text);

    e2:=strtofloat(edit2.Text);

    e3:=e1/e2;

    edit3.Text:=floattostr(e3);

    end;

    end;

    procedure TForm1.Button3Click(Sender: TObject);

    var e1,e2,e3:extended;

    begin

    e1:=strtofloat(edit1.Text);

    e2:=strtofloat(edit2.Text);

    e3:=e1-e2;

    edit3.Text:=floattostr(e3);

    end;
    procedure TForm1.Button4Click(Sender: TObject);

    var e1,e2,e3:extended;

    begin

    e1:=strtofloat(edit1.Text);

    e2:=strtofloat(edit2.Text);

    e3:=e1*e2;

    edit3.Text:=floattostr(e3);

    end;

    procedure TForm1.Button5Click(Sender: TObject);

    var e1,e2,e3:extended;

    begin

    e1:=strtofloat(edit1.Text);

    edit2.clear;

    e3:=Sqr(e1);

    edit3.Text:=floattostr(e3);

    end;

    procedure TForm1.Button6Click(Sender: TObject);

    var e1,e2,e3:extended;

    begin

    e1:=strtofloat(edit1.Text);

    edit2.clear;

    e3:=Sqrt(e1);

    edit3.Text:=floattostr(e3);

    end;

    procedure TForm1.Button7Click(Sender: TObject);

    begin

    close;

    end;

    procedure TForm1.Button8Click(Sender: TObject);

    begin

    edit1.clear;

    edit2.clear;

    edit3.clear;

    end;

    end.
    Вид программы:


    Рисунок 1 – Окно программы 1
    На рисунке 1 кнопка «+» - складывает введенные данные в строке



    Рисунок 2 – Окно программы 2
    На рисунке 2 Кнопка «-» - вычитает введенные данные в строке



    Рисунок 3 – Окно программы 3
    На рисунке 3 Кнопка «/» - делит веденные данные в строке


    Рисунок 4 – Окно программы 4
    На рисунке 4 Кнопка «*» - умножает введенные данные в строке



    Рисунок 5 – Окно программы 5
    На рисунке 5 Кнопка «возвести в квадрат» выполняет соответствующую команду.


    Рисунок 6 – Окно программы 6
    На рисунке 6 Кнопка «извлечь квадратный корень» выполняет соответствующую команду.

    Лабораторная работа №2

    Линейные структуры
    Цель работы: Изучение основных элементов языка

    программирования: переменных, их типов, основных операций и функций на

    примере создания программы для расчета формулы при заданных значениях

    переменных.

    Задание

    1. Вычислить значения переменных в соответствии с вариантами за-

    дания, приведенными в табл. 7. Вывести значения вводимых исходных дан-

    ных и результаты, сопровождая их вывод именами выводимых переменных.

    Задание выполнить в виде консольного приложения.

    2. Повторить задание 1, используя функции из модуля math.

    Задание 1.
    Листинг программы:

    program project1;

    {$APPTYPE CONSOLE}

    uses

    SysUtils;

    Label 10;

    var

    s,w,x,y,z: real;

    proba:integer;

    begin

    10: writeln('Vvedite x,y');

    readln(x,y);

    writeln('Vi vveli');

    writeln('x=',x:8:3,' y=',y:8:3);

    writeln('Vvedite 1, esli dannie sovpadaut s zadannimi');

    readln(proba);

    if proba<>1 then

    begin

    writeln;

    goto 10;

    end;

    writeln;

    s:=1+x+(sqr(x)/1*2)+(sqr(x)/1*2*3)+(sqr(x)/1*2*3*4);

    w:=x*(sin(x)+cos(y));

    writeln('Rezultat');

    writeln('s=',s:8:3,' w=',w:8:3);

    readLn;

    end.


    Результат программы изображен на рисунке 7.


    Рисунок 7 – Результат программы
    Задание 2

    Листинг программы:

    unit Unit1;

    {$mode objfpc}{$H+}

    interface

    uses

    Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;

    type

    { TForm1 }

    TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Image1: TImage;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    private

    public

    end;

    var

    Form1: TForm1;

    implementation
    {$R *.lfm}

    { TForm1 }

    procedure TForm1.Button1Click(Sender: TObject);

    var x, y, s, w:extended;

    begin

    x:=strtofloat(edit1.Text);

    y:=strtofloat(edit2.Text);

    s:=1+x+(sqr(x)/1*2)+(sqr(x)/1*2*3)+(sqr(x)/1*2*3*4);

    w:=x*(sin(x)+cos(y));

    edit3.Text:=floattostr(s);

    edit4.text:=floattostr(w);

    end;

    procedure TForm1.Button2Click(Sender: TObject);

    begin

    edit1.clear;

    edit2.clear;

    edit3.clear;

    edit4.clear;

    end;

    procedure TForm1.Button3Click(Sender: TObject);

    begin

    close;

    end;

    initialization

    end.
    Результат программы изображен на рисунке 8.



    Рисунок 8 – Результат
    Лабораторная работа №3

    Cписки
    Цель работы: Изучение основных команд, используемых для работы со списками.

    Листинг программы:

    object Form1: TForm1

    Left = 318

    Height = 594

    Top = 179

    Width = 876

    Caption = 'Работа со списками'

    ClientHeight = 594

    ClientWidth = 876

    Color = clBlue

    DesignTimePPI = 120

    LCLVersion = '2.0.8.0'

    object ListBox1: TListBox

    Left = 24

    Height = 319

    Top = 48

    Width = 271

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    ItemHeight = 0

    ParentFont = False

    TabOrder = 0

    end

    object Label1: TLabel

    Left = 49

    Height = 22

    Top = 16

    Width = 138

    Caption = 'Простой список'

    Color = clWhite

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    ParentColor = False

    ParentFont = False

    Transparent = False

    end

    object ComboBox1: TComboBox

    Left = 352

    Height = 30

    Top = 48

    Width = 188

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    ItemHeight = 22

    ParentFont = False

    TabOrder = 1

    end

    object Label2: TLabel

    Left = 352

    Height = 22

    Top = 16

    Width = 227

    Caption = 'Комбинированный список'

    Color = clDefault

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    ParentColor = False

    ParentFont = False

    Transparent = False

    end

    object Button1: TButton

    Left = 624

    Height = 32

    Top = 16

    Width = 162

    AutoSize = True

    Caption = 'Инициализация'

    Color = clLime

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    OnClick = Button1Click

    ParentFont = False

    TabOrder = 2

    end

    object Button2: TButton

    Left = 624

    Height = 32

    Top = 64

    Width = 207

    AutoSize = True

    Caption = 'Принять в ComboBox'

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    OnClick = Button2Click

    ParentFont = False

    TabOrder = 3

    end

    object Button3: TButton

    Left = 624

    Height = 32

    Top = 112

    Width = 245

    AutoSize = True

    Caption = 'Редактировать ComboBox'

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    OnClick = Button3Click

    ParentFont = False

    TabOrder = 4

    end

    object Button4: TButton

    Left = 624

    Height = 32

    Top = 160

    Width = 221

    AutoSize = True

    Caption = 'Копировать ComboBox'

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    OnClick = Button4Click

    ParentFont = False

    TabOrder = 5

    end

    object Label3: TLabel

    Left = 24

    Height = 22

    Top = 424

    Width = 121

    Caption = 'Введите текст'

    Color = clDefault

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    ParentColor = False

    ParentFont = False

    Transparent = False

    end

    object Edit1: TEdit

    Left = 176

    Height = 30

    Top = 424

    Width = 232

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    ParentFont = False

    TabOrder = 6

    end

    object Button5: TButton

    Left = 624

    Height = 31

    Top = 208

    Width = 94

    Caption = 'Очистить'

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    OnClick = Button5Click

    ParentFont = False

    TabOrder = 7

    end

    object Button6: TButton

    Left = 624

    Height = 32

    Top = 256

    Width = 194

    AutoSize = True

    Caption = 'Закрыть программу'

    Font.CharSet = RUSSIAN_CHARSET

    Font.Color = clBlack

    Font.Height = -20

    Font.Name = 'Times New Roman'

    Font.Pitch = fpVariable

    Font.Quality = fqDraft

    OnClick = Button6Click

    ParentFont = False

    TabOrder = 8

    end

    end
    Вид программы:

    На рисунке 9 изображено окно программы с результатом проделанной работы.



    Рисунок 9 - Результат

    Инициализация. Кнопкой Инициализация очищаем Edit1 и передаем

    ему фокус ввода. Курсор появляется в поле ввода Edit1.

    Заполнение списка ComboBox. Для каждой строки в редакторе Edit1 за-

    носим текст, кнопкой Принять в ComboBox переносим его в список. Повто-

    ряем операцию нужное число раз. Каждый раз проверяем список ComboBox,

    убеждаясь в появлении новой строки в конце.

    Редактирование. В редакторе Edit1 заносим строку текста для ввода в

    произвольно выбираемую позицию. В ComboBox выделяем позицию для вво-

    да, ее текст перемещается в верхнюю строку редактирования.

    Копирование. В ComboBox выделяем позицию для копирования, ее

    текст перемещается в верхнюю строку редактирования. Кнопкой Копировать

    в ListBox переносим строку в ListBox. Каждый раз наблюдаем ListBox, чтобы

    убедится в появлении там новой строки в очередной позиции.

    Лабораторная работа №4

    Структуры с ветвлениями

    Цель работы: Изучение основных команд условной и безусловной передачи управления, вычислительного процесса с разветвляющейся структурой.

    Вычислить значения функции по варианту задания из табл. 8. Вывести значения исходных данных и полученные результаты, сопровождая их именами переменных. Значения аргумента взять из указанного диапазона так, чтобы протестировать все ветви программы. Проект – обычное приложение.


    Листинг программы:

    program project1;

    {$APPTYPE CONSOLE}

    uses

    SysUtils, Unit1;

    var a, y, x, xs, xk,dx:real;

    label 20;

    begin

    writeln('Vvedite a,xs,xk,dx');

    readln(a,xs,xk,dx);

    writeln;

    writeln('Tabl y(x)');

    x:=xs;

    20: if a*x<1.3 then y:=(PI*SQR(x))-(7/SQR(x))

    else if a*x=1.3 then y:=a*(SQR(x*x*x))-7/(SQRT(x))

    else y:=(sin(x)/cos(x))*(x+7*(SQRT(x)));

    writeln('x', x:5:1, 'y=', y:6:3);

    x:=x+dx;

    if x<=xk then goto 20;

    readln;

    end.

    Результат изображен на рисунке 10



    Рисунок 10 – Окно работающего приложения

    Задание 2.

    Листинг программы:

    unit Unit1;

    {$mode objfpc}{$H+}

    interface

    uses

    Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,

    Buttons;

    type

    { TForm1 }

    TForm1 = class(TForm)

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    BitBtn3: TBitBtn;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Memo1: TMemo;

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn3Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    private

    { private declarations }

    public

    { public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.lfm}

    { TForm1 }

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    end;

    procedure TForm1.BitBtn1Click(Sender: TObject);

    var a, y, x, xn, xk,dx:real;

    label 20;

    begin

    a:=strtofloat(Edit1.Text);

    xn:=strtofloat(Edit2.Text);

    xk:=strtofloat(Edit3.Text);

    dx:=strtofloat(Edit4.Text);

    x:=xn;

    20:if x<1.3 then y:=(PI*SQR(x))-(7/SQR(x))

    else if x=1.3 then y:=a*(SQR(x*x*x))-7/(SQRT(x))

    else y:=(sin(x)/cos(x))*(x+7*(SQRT(x)));

    Memo1.lines.add(floattostrF(y,ffFixed,4,2));

    Edit1.SetFocus;

    x:=x+dx;

    if x<=xk then goto 20;

    end;

    procedure TForm1.BitBtn3Click(Sender: TObject);

    begin

    Edit1.clear;

    Edit2.clear;

    Edit3.clear;

    Edit4.clear;

    Memo1.clear;

    end;

    end.
    Результат программы изображен на рисунке 11.



    Рисунок 11 – Окно с результатами тестирования программы.
    Лабораторная работа №5.1

    Циклы с неизвестным числом повторений

    Цель работы: Изучение организации циклов с неизвестным числов повторенний с помощью операторов while...do и repeat...until.

    Задание 1

    Вариант задания:


    Листинг программы:

    program project1;

    {$APPTYPE CONSOLE}

    uses

    SysUtils;

    var a,e,q,s,x:real;

    n:integer;

    begin

    writeln('Vvedite tochnost');

    write('e=');

    readln(e);

    writeln('Vvedite argument');

    write('x=');

    readln(x);

    n := 0;

    a := x;

    s := a;

    while abs(a)>E do

    begin

    q:=2*n-1/2*n*(sqr(x))-3*(sqr(x));

    a:=a*q;

    s:=s+a;

    n:=n+1;

    end;

    writeln;

    writeln('Rezultat');

    writeln('Summa s=',s:8:3);

    writeln('Chlenov ryada n=',n);

    readln;

    end.
    Окно запущенной программы изображено на рисунке 12



    Рисунок 12 – Результат

    В данной Л.Р нужно было вычислить значение суммы членов бесконечного ряда с заданной точностью Е с использованием оператора цикла while...do. На печать вывести значение суммы и число членов ряда, вошедших в сумму.

    Задание 2 (обычное приложение)
    Листинг программы:

    unit Unit1;

    {$mode objfpc}{$H+}

    interface

    uses

    Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,

    Buttons;

    type

    { TForm1 }

    TForm1 = class(TForm)

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    Button1: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Image1: TImage;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    procedure BitBtn1Click(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    private

    { private declarations }

    public

    { public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.lfm}

    { TForm1 }

    procedure TForm1.BitBtn1Click(Sender: TObject);

    begin

    Edit1.clear;

    Edit2.clear;

    Edit3.clear;

    Edit4.clear;

    end;

    procedure TForm1.BitBtn2Click(Sender: TObject);

    begin

    close;

    end;

    procedure TForm1.Button1Click(Sender: TObject);

    var e,x,q,a,s:extended;

    var n:integer;

    begin

    e:=strtofloat(edit1.text);

    x:=strtofloat(edit2.text);

    n:=0;

    a:=x;

    s:=a;

    while abs(a)>E do

    begin

    q:=2*n-1/2*n*(sqr(x))-3*(sqr(x));

    a:=a*q;

    s:=s+a;

    n:=n+1;

    edit3.text:=floattostr(s);

    edit4.text:=floattostr(n);

    end;

    end;

    end.
    Окно запущенной программы изображено на рисунке 13



    Рисунок 13 – Результат
    Лабораторная работа № 5.2

    Циклы с заданным числом повторений

    Цель работы: Изучение организации циклов с заданным числом повторенний с помощью операторов for...to...do и for...downto...do.

    Задание:

    Вычислить значения функции с использованием оператора цикла for...to...do. Проект – обычное приложение.



    Листинг программы(консольное приложение):

    program project1;

    {$APPTYPE CONSOLE}

    uses SysUtils;

    var

    z,k,s,t,a,b: real;

    n,m,p: integer;

    begin

    writeln('Vvedite k:');

    readln(k);

    z:=0;

    for n:=1 to 12 do z:=cos(k)+sin(k);

    writeln;

    writeln('Rezultat');

    writeln('k=', k:8:3, 'z=', z);

    begin

    writeln('Vvedite a:');

    readln(a);

    writeln('Vvedite b:');

    readln(b);

    s:=0;

    t:=1;

    for m:=1 to 5 do

    for p:=2 to 10 do

    s:=(a*b)+s;

    t:=s*t;

    writeln;

    writeln('Rezultat');

    writeln('a=',a:8:3, 'b=', b);

    writeln('t=',t);

    readln;

    end;

    end.

    Рузультат изображен на рисунке 14



    Рисунок 14 – Результат

    Задание 2

    Код для обычного приложения:

    unit Unit1;

    {$mode objfpc}{$H+}

    interface

    uses

    Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;

    type

    { TForm1 }

    TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    private

    public

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.lfm}

    { TForm1 }

    procedure TForm1.Button4Click(Sender: TObject);

    begin

    close;

    end;

    procedure TForm1.Button3Click(Sender: TObject);

    begin

    Edit1.clear;

    Edit2.clear;

    Edit3.clear;

    Edit4.clear;

    end;

    procedure TForm1.Button1Click(Sender: TObject);

    var z,t,p,k:extended;

    n:integer;

    begin

    k:=strtofloat(edit1.text);

    p:=1;

    for n:=1 to 2 do

    p:=p*cos(k)+sin(k);

    edit3.Text:=floattostr(p);

    end;

    procedure TForm1.Button2Click(Sender: TObject);

    var s,t:extended;

    a,b:integer;

    begin

    a:=strtoint(edit1.text);

    b:=strtoint(edit2.text);

    s:=0;

    b:=1;

    for a:=1 to 5 do

    for b:=2 to 10 do

    begin

    s:=(a*b)+s;

    t:=s*t;

    end;

    edit4.Text:=floattostr(t);

    end;

    end.
    Результат работы приложения изображен на рисунках 15, 16


    Рисунок 15 - Окно программы с заданным числом повторений (результаты работы программы)



    Рисунок 16 - Окно программы с заданным числом повторений (результаты работы программы)
    Лабораторная работа №6

    Новогодняя открытка

    Цель работы: Изучение графических функций среды визуального программирования Lazarus на примере создания программы «Новогодняя открытка».
    Листинг программы:

    unit Unit1;

    {$mode objfpc}{$H+}

    interface

    uses

    Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

    ExtCtrls, StdCtrls;

    type

    { TForm1 }

    TForm1 = class(TForm)

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Button6: TButton;

    Image1: TImage;

    Timer1: TTimer;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button6Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Image1Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    private

    public

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.lfm}

    { TForm1 }

    procedure TForm1.Timer1Timer(Sender: TObject);

    begin

    form1.canvas.brush.color:=$000000+random(255*255*255);

    form1.canvas.pen.color:=$000000+random(255*255*255);

    form1.canvas.ellipse(390,20,410,40);

    end;

    procedure TForm1.Button1Click(Sender: TObject);

    var p: array[1..15] of TPoint;

    begin

    form1.canvas.Pen.Color:=clgreen;

    form1.Canvas.brush.Color:=clLime;

    form1.Canvas.pen.Width:=3;

    p[1].x:=400; p[1].y:=30;

    p[2].x:=360; p[2].y:=90;

    p[3].x:=380; p[3].y:=90;

    p[4].x:=340; p[4].y:=130;

    p[5].x:=380; p[5].y:=130;

    p[6].x:=320; p[6].y:=200;

    p[7].x:=380; p[7].y:=200;

    p[8].x:=380; p[8].y:=220;

    p[9].x:=420; p[9].y:=220;

    p[10].x:=420; p[10].y:=200;

    p[11].x:=480; p[11].y:=200;

    p[12].x:=420; p[12].y:=130;

    p[13].x:=460; p[13].y:=130;

    p[14].x:=420; p[14].y:=90;

    p[15].x:=440; p[15].y:=90;

    p[16].x:=400; p[16].y:=30;

    form1.canvas.polygon (p);

    end;

    procedure TForm1.Button2Click(Sender: TObject);

    begin

    form1.canvas.Pen.Color:=clwhite;

    form1.Canvas.brush.Color:=clwhite;

    form1.Canvas.pen.Width:=3;

    form1.canvas.ellipse(590,160,680,220);

    form1.canvas.ellipse(600,110,670,160);

    form1.canvas.ellipse(615,70,655,110);

    end;

    procedure TForm1.Button3Click(Sender: TObject);

    begin

    form1.canvas.Pen.Color:=clblue;

    form1.Canvas.brush.Color:=clyellow;

    form1.Canvas.pen.Width:=2;

    form1.canvas.rectangle(260,220,200,90);

    form1.canvas.rectangle(500,140,160,140);

    form1.canvas.rectangle(40,220,300,80);

    form1.canvas.rectangle(90,100,150,150);

    form1.canvas.MoveTo(120,100);

    form1.canvas.LineTo(120,150);

    form1.canvas.Pen.Color:=clgray;

    form1.Canvas.brush.Color:=clblue;

    form1.Canvas.pen.Width:=2;

    form1.Canvas.brush.Color:=clgreen;

    form1.canvas.rectangle(0,220,700,280); //подиум

    //каркас дома

    form1.canvas.rectangle(20,80,320,60); // крыша снизу вверх

    form1.canvas.rectangle(50,40,290,60);

    form1.canvas.rectangle(90,40,250,20);

    form1.canvas.rectangle(200,0,140,20);

    form1.canvas.rectangle(250,220,190,90);

    end;

    procedure TForm1.Button4Click(Sender: TObject);

    var p:array of TPoint;

    cx,cy,r,i:integer;

    u:double;

    begin

    cx:=clientwidth div 2;

    cy:=clientheight div 20;

    if cx
    setlength(p,11);

    u:=pi/1;

    for i:=0 to 10 do

    begin

    if not odd(i) then

    begin

    p[i].x:=cx+round(r*cos(u));

    p[i].y:=cy-round(r*sin(u));

    end

    else

    begin

    p[i].x:=cx+round(r*cos(u)*0.382);

    p[i].y:=cy-round(r*sin(u)*0.382);

    end;

    u:=u+pi/5;

    end;

    with Canvas do

    begin

    pen.Width:=2;

    pen.Color:=clRed;

    brush.Color:=clGreen;

    polygon(p);

    end;

    end;

    procedure TForm1.Button6Click(Sender: TObject);

    begin

    close;

    end;

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    end;

    procedure TForm1.Image1Click(Sender: TObject);

    begin

    end

    end.

    На рисунках 17, 18 будет изображено окно программы



    Рисунок 17 - Окно программы «Новогодняя открытка»


    Рисунок 18 - Окно программы «Новогодняя открытка»

    Кнопка «Елка» выводит на экран рисунок елки.

    Кнопка «Снеговик» выводит на экран рисунок снеговика.

    Кнопка « Дом» выводит на экран рисунок дома.

    Кнопка «Звездочка» выводит на экран звезду.

    В данной лабораторной работе нужно было создать Новогоднюю открытку применяя объекты Timer, Label, Image, анимацию.

    Графика нужна для визуализации информации. Кроме того, иногда возникает потребность украсить свое приложение какими-то изображениями.

    1.Для рисования рисунков использовался объект TImage. Компонент (TImage) обеспечивает вывод на поверхность формы иллюстраций, представленных в bmp–формате (чтобы компонент можно было использовать для отображения иллюстраций в формате JPG, надо подключить модуль JPEG – указать имя модуля в директиве uses).

    2.Рисование выполнялось путем обращения к свойству Canvas (графическая канва) этого объекта: Image1.Canvas.
    Лабораторная работа №7

    Таблицы

    Цель работы: Изучение основных возможностей работы с таблицей в среде визуального программирования Lazarus на примере создания программы «Таблица конвертации».
    Листинг программы:

    unit Unit1;

    {$mode objfpc}{$H+}

    interface

    uses

    Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Grids,

    ExtCtrls;

    type

    { TForm1 }

    TForm1 = class(TForm)

    Image1: TImage;

    Image2: TImage;

    Image3: TImage;

    Image4: TImage;

    SellAgree: TButton;

    SumAgree: TButton;

    Button3: TButton;

    DecCol: TButton;

    IncCol: TButton;

    DecRow: TButton;

    IncRow: TButton;

    EdCell: TEdit;

    EdSum: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    LbDate: TLabel;

    StringGrid1: TStringGrid;

    procedure Button3Click(Sender: TObject);

    procedure DecColClick(Sender: TObject);

    procedure DecRowClick(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Image1Click(Sender: TObject);

    procedure IncColClick(Sender: TObject);

    procedure IncRowClick(Sender: TObject);

    procedure SellAgreeClick(Sender: TObject);

    procedure SumAgreeClick(Sender: TObject);

    private

    public

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.lfm}

    { TForm1 }

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    StringGrid1.ColCount:=6;

    StringGrid1.RowCount:=4;

    StringGrid1.Cells[0,0]:='Валюта';

    StringGrid1.Cells[1,0]:='Курс рубля';

    StringGrid1.DefaultColWidth:=78;

    StringGrid1.Cells[2,0]:='Сумма выдачи';

    StringGrid1.Cells[3,0]:='Комиссия,%';

    StringGrid1.Cells[4,0]:='Комис-ные';

    StringGrid1.Cells[5,0]:='Взнос';

    StringGrid1.Cells[0,1]:='USD';// Доллар США

    StringGrid1.Cells[0,2]:='JPY';// Японская йена

    StringGrid1.Cells[0,3]:='GBP';// Фунт стерлингов

    StringGrid1.Cells[1,1]:='77,06';

    StringGrid1.Cells[1,2]:='0,73';

    StringGrid1.Cells[1,3]:='99,7';

    StringGrid1.Cells[3,1]:='2';

    StringGrid1.Cells[3,2]:='2';

    StringGrid1.Cells[3,3]:='2';

    LbDate.Caption:='По состоянию на'+ DateToStr(Date);

    end;

    procedure TForm1.IncColClick(Sender: TObject);

    begin

    StringGrid1.ColCount:=StringGrid1.ColCount+1;

    end;

    procedure TForm1.IncRowClick(Sender: TObject);

    begin

    StringGrid1.RowCount:=StringGrid1.RowCount+1;

    end;

    procedure TForm1.SellAgreeClick(Sender: TObject);

    begin

    StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=EdCell.Text;

    end;

    procedure TForm1.SumAgreeClick(Sender: TObject);

    var

    ResVal, Komis:real;

    i:byte;

    S:string;

    begin

    with form1 do

    for i:=1 to StringGrid1.RowCount-1 do

    if (StrToFloat(StringGrid1.Cells[1,i])<>0) then

    begin

    Komis:=StrToFloat(EdSum.Text)/100*StrToFloat(StringGrid1.Cells[3,i]);

    ResVal:=(StrToFloat(EdSum.Text)-Komis)/StrToFloat(StringGrid1.Cells[1,i]);

    str(Komis:0:2,s);

    StringGrid1.Cells[4,i]:=s;

    str(ResVal:0:2,s);

    StringGrid1.Cells[2,i]:=s;

    str(StrToFloat(EdSum.Text):0:2,s);

    StringGrid1.Cells[5,i]:=s;

    end;

    end;

    procedure TForm1.DecRowClick(Sender: TObject);

    begin

    if StringGrid1.RowCount>2 then StringGrid1.RowCount:=StringGrid1.RowCount-1;

    end;

    procedure TForm1.DecColClick(Sender: TObject);

    begin

    if StringGrid1.ColCount>2 then StringGrid1.ColCount:=StringGrid1.ColCount-1;

    end;

    procedure TForm1.Button3Click(Sender: TObject);

    begin

    Close;

    end;

    end.
    Данная программа позволяет конвертировать российские рубли в такие валюты как: доллар США, японская йена, фунт стерлинга.

    На форме размещены следующие компоненты:

    • Label1 – заголовок таблицы

    • Label2 – описание поля ввода(Редактор ячеек)

    • Label3 – описание поля ввода (Сумма для конвертации)

    • Label4 – вывод даты

    • EdCell – поле ввода редактирования

    • EdSum – поле ввода суммы для конвертации

    • Button1 (SellAgree) – принятие изменений текущей ячейки

    • Button2 (SumAgree) – принятие суммы и расчет по курсу

    • Button3 – выполняет выход из приложения

    • Button4 (< DecRol) – уменьшение числа столбцов на 1

    • Button5 (> IncCol) – увеличение числа столбцов на1

    • Button6 (^ DecRow) – уменьшение числа строк на 1

    • Button7 (v IncRow) – увеличение числа строк на 1

    • StringGrid1 – основная таблица

    • Image1-Image4.



    Работа программы показана на рисунке 19.



    Рисунок 19 – Окно работы программы.
    В программе имеется возможность добавления или удаления строк и столбцов (Рис.20):



    Рисунок 20 – Добавление строки и столбца
    Также можно редактировать любые ячейки (Рис.21).



    Рисунок 21 – Редактирование ячейки «Комиссия, %».


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