Сторінка 1

вівторок, 7 березня 2017 р.

Реалізація алгоритмів з графічним відображенням даних засобами мови програмування

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
      1. Які особливості малювання геометричних фігур за координатами в середовищі програмування Lazarus?
      2. Чим відрізняється додавання зображень у середовищах програмування мовами Python та Object Pascal?
      Діємо разом
      • Вправа 1. У середовищі програмування мовою Python розробіть проект, у якому у вікні головної форми буде побудована стовпчаста діаграма, що демонструє співвідношення між числами 15, 50, 70, 25, 10, 30.
      1. Завантажте середовище програмування мовою Python, створіть новий файл і збережіть його з іменем Побудова діаграми
      2. У вікно редактора коду введіть програмний код:
        """ 
            Проект "Стовпчаста діаграма" 
            
        """
        import tkinter
        from tkinter import ttk
        from tkinter import messagebox
        main = tkinter.Tk()
        main.wm_title('Стовпчаста діаграма')
        
        # оголошення списку значень 
        data = [15, 50, 70, 25, 10, 30]
        
        # створення полотна для малювання та розміщення на головній формі
        cnv = tkinter.Canvas(main, width=200, height=100)
        cnv.pack()
        
        # команди для малювання на полотні - створення графічного примітиву: прямокутника
        cnv.create_rectangle(0, 100, 200, 100)
        i = 0
        d_list = len(data)
        while i < d_list:
            cnv.create_rectangle(10 + i * 30,
                                 100,
                                 30 + i * 30,
                                 100 - data[i], 
                                 fill='yellow')
            i += 1
        
        #запуск опрацювання подій програми
        main.mainloop()
      3. Запустіть проект на виконання. Перевірте, чи отримали ви вікно форми, зображене на малюнку.
      • Вправа 2. У середовищі програмування Lazarus розробіть проект, у якому кошеня після натискання кнопки Бігти змінює своє положення. Зображення кошеняти збережені у файлах cat1.pngcat2.png, cat3.png, cat4.png. 
      1. Завантажте середовище Lazarus і створіть новий проект.
      2. Додайте на форму 4 зображення кошеняти, використовуючи компонент Image
      3. Додайте на форму кнопку з написом "Бігти".
      4. Додайте на форму компонент Timer (встановлює затримки часу при виконанні тих чи інших дій).
      5. Для компонента Timer (1) в Інспекторів об'єктів встановіть такі значення властивостей, як на скріншоті: (2) - включення/виключення таймера, (3) - інтервал часу в мілісекундах, через який будуть змінюватися зображення кошеняти
      6. Результуюча форма матиме такий вигляд:
      7. Запишіть програмний код у вікні редактора коду перед словом implementation, в якому описані дві змінні: stage - може набувати значень цілих значень 0, 1, 2, 3 - це положення кошеняти (або номер зображення кошеняти), flag - логічна змінна, набуває значення істини (True) або хибності (False)
        var
          Form1: TForm1;
          stage : Integer;
          flag : Boolean;
        implementation 
      8. Створіть процедуру опрацювання події натиснули кнопку Бігти. Для цього двічі натисніть на кнопку з написом Бігти і у вікні редактора коду введіть команди
        procedure TForm1.Button1Click(Sender: TObject);
        begin
        
         flag := True;
         case stage of
            0:
              begin
                Image1.Visible := False;
                Image2.Visible := True;
                stage:= stage + 1;
              end;
            1:
              begin
                Image2.Visible := False;
                Image3.Visible := True;
                stage:= stage + 1;
              end;
            2:
              begin
                Image3.Visible := False;
                Image4.Visible := True;
                stage:= stage + 1;
              end;
            3:
              begin
                Image4.Visible := False;
                Image1.Visible := True;
                stage:=0;
              end;
        
        end;
        end;  
      9. Двічі натисніть на формі на зображенні годинника (компонент Timer). У вікні редактора коду запишіть програмний код для обробника подій:
        procedure TForm1.Timer1Timer(Sender: TObject);
        begin
          Timer1.Enabled := flag;
          stage:=0;
        end;
      10. Запустіть проект на виконання. Перевірте, чи змінює своє положення і вигляд кошеня після натискання кнопки Бігти.
      Виконуємо самостійно
      • Завдання 1. Розробіть проект Енциклопедія, у якому на екранній формі Сенсорна система після натиснення кнопки Відобразити можна отримати відомості про основні сенсорні системи: зорову, слухову, смаку, нюху, рівноваги, руху, дотику, температури, болю. Спосіб відображення відомостей – малюнок, текст обирається за допомогою елементів управління. Вибір сенсорної системи – відповідними перемикачами. Потрібні відомості та зображення знайдіть в Інтернеті. Орієнтовний зразок форми:
        Створіть програму в середовищі Lazarus, скориставшись програмним кодом нижче. Зверніть увагу, на використання нового компонента Memo (текстове поле для зберігання великих текстів)
        та проаналізуйте код на наявність нових конструкцій і назв, які не зустрічалися до цього часу. Знайдіть інформацію про їхнє використання.
        procedure TForm1.Button1Click(Sender: TObject);
        var m, t : boolean;
        begin
          m := CheckBox1.Checked;
          t := CheckBox2.Checked;
          if RadioGroup1.ItemIndex = 0 then
            begin
              Memo1.Lines.Clear;
              if m then Image1.Picture.LoadFromFile('img/zir.jpg')
              else
                  Image1.Picture := nil;
              if t then Memo1.Lines.Add('Орган зору людини складається з очного яблука і допоміжного апарату. Очне яблуко розміщене в очній ямці черепа. Має кулясту форму і складається з трьох оболонок: зовнішньої — щільної білкової, яка захищає очне яблуко від пошкоджень та проникнення сторонніх тіл ззовні (спереду вона переходить у прозору і проникну для світла рогівку), до неї прикріплюються м' + #39 + 'язи, які рухають око; середньої — судинної (пронизаною густою сіткою кровоносних судин, що постачають кров очному яблуку); внутрішньої — сітчастої (в ній розміщені рецептори ока — палички і колбочки), де під дією світла виникають нервові збудження, які по зоровому нерву передаються в зорову зону кори головного мозку.')
        
            end
          else if RadioGroup1.ItemIndex = 1 then
            begin
              Memo1.Lines.Clear;
              if m then Image1.Picture.LoadFromFile('img/sluh.png')
              else
                  Image1.Picture := nil;
              if t then Memo1.Lines.Add('Вухо як орган слуху забезпечує сприйняття звукових коливань. Завдяки слуху розрізняють звуки навколишнього середовища. Людина спроможна визначити напрямок звуку з джерела, що дає змогу орієнтування в навколишньому середовищі, а також висоту, тембр, силу звуку. Слух є одним із чуттів людини, які сприяють психічному розвитку повноцінної особистості. З слухом пов' + #39 + 'язані звукові, мовні спілкування. Орган слуху розташований в отворі слухового проходу скроневої кістки черепа. Він складається з трьох основних відділів: зовнішнього вуха, середнього вуха, внутрішнього вуха. Перші два беруть участь тільки в проведенні звукових коливань, а третій відділ містить звукосприймальний і вестибулярний апарат.')
        
            end
          else if RadioGroup1.ItemIndex = 2 then
            begin
              Memo1.Lines.Clear;
              if m then Image1.Picture.LoadFromFile('img/smak.jpg')
              else
                 Image1.Picture := nil;
              if t then Memo1.Lines.Add('Смак — це сприйняття смакових особливостей речовин, що потрапляють в ротову порожнину. Рецептори смаку розташовані в смакових цибулинах виростів слизової оболонки язика — сосочків на стінках глотки і м'+#39+'якого піднебіння. Збудження від рецепторів передається по волокнах язикового нерва у довгастий мозок, міст, до скроневої кістки, де формується сприйняття у вигляді різних смакових відчуттів. Смак допомагає людині визначити якість їжі, сприяє виділенню травних соків і проходження процесу травлення в цілому.')
        
            end
          else if RadioGroup1.ItemIndex = 3 then
            begin
              Memo1.Lines.Clear;
              if m then Image1.Picture.LoadFromFile('img/nuh.jpg')
              else
                 Image1.Picture := nil;
              if t then Memo1.Lines.Add('Нюх — це сприйняття запахів різних речовин. Велика кількість нюхових рецепторів міститься в слизовій оболонці порожнини носа. Від нюхових рецепторів нервові імпульси передаються у проміжний мозок, потім у лобову частку кори, де проходить аналіз речовин, що вдихаються. За запахом людина відрізняє недоброякісну їжу, вловлює появу в повітрі шкідливих для її здоров'+ #39+'я домішок.')
        
            end
          else if RadioGroup1.ItemIndex = 4 then
            begin
              Memo1.Lines.Clear;
              if m then Image1.Picture.LoadFromFile('img/dotuk.jpg')
              else
                 Image1.Picture := nil;
              if t then Memo1.Lines.Add('Дотик — це сприйняття форми, розміру, щільності, температури різних предметів. У слизових оболонках шкіри містяться дотикові рецептори. Найбільше їх на губах, кінчику язика, пальців, а також на долоні. Користуючись дотиком, людина може визначити фізичні властивості предметів такі, як форма, твердість, м'+#39+'якість, характер поверхні, тепло або холод, орієнтуватися в темряві, блискавично реагувати на загрозливу небезпеку.')
        
            end
          else if RadioGroup1.ItemIndex = 5 then
            begin
              Memo1.Lines.Clear;
              if m then Image1.Picture.LoadFromFile('img/rivnovaga3.jpg')
              else
                 Image1.Picture := nil;
              if t then Memo1.Lines.Add('Функція регуляції положення тіла в просторі і рівноваги забезпечується вестибулярним апаратом, який утворюється рецепторами мішечків і напівколових каналів внутрішнього вуха. Коли змінюється положення голови або людина рухається, рецептори збуджуються, виникають нервові імпульси. Вони проходять по нервових шляхах у середній мозок, мозочок і кору великих півкуль. Завдяки аналізатору контролю рівноваги і положення тіла забезпечується прямоходіння.')
        
            end
          else if RadioGroup1.ItemIndex = 6 then
            begin
              Memo1.Lines.Clear;
              if m then Image1.Picture.LoadFromFile('img/ruh.jpg')
              else
                 Image1.Picture := nil;
              if t then Memo1.Lines.Add('М’язова система є джерелом численної сенсорної імпульсації. До складу нервів, що іннервують м’язи, вхо­дить від 30 до 50% аферентних волокон. Рецепторний апарат м'+ #39 + 'язів і суглобів сигналізує в нервову систему про ступінь напружен­ня м’язових волокон, положення суглобів і різних частин тіла однієї відносно інших. Ця зворотна інформація необхідна для автоматич­ної регуляції постави і рухових актів. При порушеннях рухового аналізатора людина не може ні ходити, ні стояти. Імпульси від рухового аналізатора необхідні також для підтримання тонусу м’язів і тонкого пристосування вегетативних функцій до умов м’язової роботи.')
        
            end
          else if RadioGroup1.ItemIndex = 7 then
            begin
              Memo1.Lines.Clear;
              if m then Image1.Picture.LoadFromFile('img/dotuk.jpg')
              else
                 Image1.Picture := nil;
              if t then Memo1.Lines.Add('Згідно із сучасними уявленнями, біль є суб' + #39 + 'єктивним сприй­няттям системних процесів, які включають сенсорну оцінку інфор­мації про ноцирецептивні (які порушують цілість тканин) стимули і про різноманітні рефлекторні реакції, спрямовані на захист організму від дії цих стимулів. Біль, на відміну від інших сенсорних модальностей, інформує нас про небезпеку, яка загрожує організмові. За образним вислов­люванням стародавніх греків, біль є сторожовим псом здоров' + #39 + 'я. Справді, незважаючи на те що біль майже завжди порушує жит­тєдіяльність, знижує працездатність людини, позбавляє її сну, він усе ж таки потрібний і до певних меж корисний.')
            end
        end;
      • Завдання 2. Розробіть проект Природні зони, у якому на формі розміщене зображення карти України, збережене у файлі Map_of_Ukraine.png. Після вибору у списку однієї з природних зон рівнинної частини України: зона мішаних лісів і широколистяних лісів, зона лісостепу, зона степу – межі відповідної зони виділяються ламаною червоного кольору.
        Розгляньте програмний код (координати точок спробуйте визначити самостійно) і реалізуйте програму:
        procedure TForm1.RadioGroup1SelectionChanged(Sender: TObject);
        begin
          Image1.Canvas.Pen.Color := clRed;
          Image1.Canvas.Pen.Width := 3;
          Image1.Canvas.Pen.Style := psDot;
          if RadioGroup1.ItemIndex = 0 then
              begin
        
                   Image1.Canvas.MoveTo(46,169);
                   Image1.Canvas.LineTo(96,121);
                   Image1.Canvas.LineTo(107,121);
                   Image1.Canvas.LineTo(109,100);
                   Image1.Canvas.LineTo(97,65);
                   Image1.Canvas.LineTo(98,45);
                   Image1.Canvas.LineTo(130,34);
                   Image1.Canvas.LineTo(275,56);
                   Image1.Canvas.LineTo(352,68);
                   Image1.Canvas.LineTo(380,31);
                   Image1.Canvas.LineTo(487,14);
                   Image1.Canvas.LineTo(511,50);
                   Image1.Canvas.LineTo(506,78);
                   Image1.Canvas.LineTo(434,96);
                   Image1.Canvas.LineTo(371,143);
                   Image1.Canvas.LineTo(46,169)
              end
          else
              if RadioGroup1.ItemIndex = 1 then
                  begin
                      Image1.Canvas.MoveTo(46,170);
                      Image1.Canvas.LineTo(366,145);
                      Image1.Canvas.LineTo(434,96);
                      Image1.Canvas.LineTo(506,80);
                      Image1.Canvas.LineTo(633,121);
                      Image1.Canvas.LineTo(646,183);
                      Image1.Canvas.LineTo(305,220);
                      Image1.Canvas.LineTo(319,336);
                      Image1.Canvas.LineTo(242,248);
                      Image1.Canvas.LineTo(127,289);
                      Image1.Canvas.LineTo(18,239);
                      Image1.Canvas.LineTo(46,170);
        
                  end
              else
                  if RadioGroup1.ItemIndex = 2 then
                      begin
                           Image1.Canvas.MoveTo(321,336);
                           Image1.Canvas.LineTo(321,336);
                           Image1.Canvas.LineTo(306,220);
                           Image1.Canvas.LineTo(645,184);
                           Image1.Canvas.LineTo(633,122);
                           Image1.Canvas.LineTo(773,182);
                           Image1.Canvas.LineTo(742,269);
                           Image1.Canvas.LineTo(702,275);
                           Image1.Canvas.LineTo(681,324);
                           Image1.Canvas.LineTo(543,389);
                           Image1.Canvas.LineTo(556,432);
                           Image1.Canvas.LineTo(489,454);
                           Image1.Canvas.LineTo(446,438);
                           Image1.Canvas.LineTo(492,391);
                           Image1.Canvas.LineTo(371,370);
                           Image1.Canvas.LineTo(323,446);
                           Image1.Canvas.LineTo(281,447);
                           Image1.Canvas.LineTo(260,432);
                           Image1.Canvas.LineTo(295,369);
                           Image1.Canvas.LineTo(341,367);
        
                      end;
        end;
        
        procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        begin
             Edit1.Text := IntToStr(X)+' ; '+IntToStr(Y)
        end;
        
        procedure TForm1.Button1Click(Sender: TObject);
        begin
          Image1.Picture.LoadFromFile('Map_of_Ukraine.png')
        end;                                              
      Домашнє завдання
      • Опрацювати підручник: §27 с. 181-189