середу, 27 січня 2021 р.

Практична робота

Складання та виконання алгоритмів з графічним відображенням даних

 1. Створити алгоритм, який малює смайлик

Підказка для посмішки: 
canvas.create_arc(40, 40, 160, 160, start=180, extent=180, style=ARC, width=5, outline='red')

2. Відповісти на питання тесту

а

понеділок, 25 січня 2021 р.

Графічний пайтон

 


Елементи керування «напис» та «кнопка»

 Кольорова палітра

або тут https://www.colorschemer.com/color-picker/


Програмний код

from tkinter import *
def animal (event):
poetry = "Моя улюблена тваринка\n- котик. \nЯ люблю котиків.\nВони дуже хороші тваринки!."
label2 = Label(text=poetry, #додаємо змінну, яку ми ввели раніше
justify=LEFT, #Вирівнювання тексту
font=20, #розмір символів
fg="#D6225E", #колір тексту
bg="#78D63A", #фон надпису
)
label2.pack()

def plant (event):
poetry = "Моя улюблена рослина\n - підсніжник.\nЯ люблю підсніжники.\nПідсніжник - першоцвіт весни."
label2 = Label(text=poetry, #додаємо змінну, яку ми ввели раніше
justify=LEFT, #Вирівнювання тексту
font=20, #розмір символів
fg="#D6225E", #колір тексту
bg="#78D63A", #фон надпису
)
label2.pack()

My_window = Tk()
My_window.title("Вибір")
My_window.geometry("600x600")
b1=Button(text='Моя улюблена тварина', #текст кнопки
background='#006400', #фоновий колір кнопки
foreground='#FF8C00',
font='18', #висота шрифту
width='25',
height='2',
)

b1.bind('<Button-1>',animal)
b1.pack()

b2=Button(text='Моя улюблена рослина', #текст кнопки
background='#006400', #фоновий колір кнопки
foreground='#FF8C00', #колір тексту
font='18', #висота шрифту
width='25',
height='2',
)

b2.bind('<Button-1>',plant)
b2.pack()
label1 = Label(text="Моя улюблена тварина і рослина",
fg="#39FF12", #колір тексту
bg="#FF337E", #фон надпису
justify=LEFT, #Вирівнювання тексту
font=20, #розмір символів
)

label1.pack()

My_window.mainloop()

Візуалізація елементів табличної величини за допомогою графічних примітивів

 У різних сферах діяльності виникає потреба подавати вихідні дані й результати в графічній формі. На прикладі порівняння довжин річок в Україні розглянемо різні типи діаграм:


Проект "Довжина річок в Україні"

1. Створюємо форму з елементами


2. Описуємо глобальні змінні:

const 

cl: array[1..4] of TColor = (clBlue,clGreen,clYellow,clRed); // масив, який містить кольори
D: array[1..4] of Integer = (981, 705, 591, 174); // масив, який містить дожини річок
Nazva: array[1..4] of String = ('Дніпро', 'Дністер', 'Десна', 'Дунай'); // масив, який містить їх назви

var

Form1: TForm1;
sh,sh1: array[1..4] of TShape; // два масиви для об'єктів Shape
lb,lb1: array[1..4] of TLabel; // два масиви для об'єктів Label

3. Процедура створення форми (при старті проекту попередні налаштування)

procedure TForm1.FormCreate(Sender: TObject);
begin
// побудова лінійчатої діаграми
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.FillRect(Image1.ClientRect);
sh[1] := Shape1;
sh[2] := Shape2;
sh[3] := Shape3;
sh[4] := Shape4;
lb[1] := Label1;
lb[2] := Label2;
lb[3] := Label3;
lb[4] := Label4;
// побудова стовпчикової діаграми
Label5.Caption := '';
Image2.Canvas.Brush.Color := clWhite;
Image2.Canvas.FillRect(Image2.ClientRect);
{ побудова координатних осей }
Image2.Canvas.Polyline ([Point(5,5),Point(5,150),Point (300,150)]);
Image2.Canvas.Polyline ([Point (2,8), Point (5,5), Point (9,9)]);
Image2.Canvas.Polyline ([Point (295,147), Point (300,150), Point (295,153)]);
// побудова кругової діаграми
Image3.Canvas.Brush.Color := clWhite;
Image3.Canvas.FillRect(Image3.ClientRect);
sh1[1] := Shape5;
sh1[2] := Shape6;
sh1[3] := Shape7;
sh1[4] := Shape8;
lb1[1] := Label6;
lb1[2] := Label7;
lb1[3] := Label8;
lb1[4] := Label9;
// побудова графіка
Image4.Canvas.Brush.Color := clWhite;
Image4.Canvas.FillRect(Image4.ClientRect);
{ побудова координатних осей }
Image4.Canvas.Polyline ([Point(5,5),Point(5,150),Point (300,150)]);
Image4.Canvas.Polyline ([Point (2,8), Point (5,5), Point (9,9)]);
Image4.Canvas.Polyline ([Point (295,147), Point (300,150), Point (295,153)]);
end;

4. Побудова лінійчатої діаграми


procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
  For i := 1 to 4 do begin
      sh[i].Width := D[i] div 5; // довжини річок зменшені в масштабі
      lb[i].Caption := Nazva[i]; // виводимо їх назви
      sh[i].Top := 30 * i; // розміщення прямокутника відносно верхньої межі
      lb[i].Top := 30 * i; // аналогічно для мітки
      Image1.Canvas.TextOut (D[i] div 5 + 20, 30 * i, IntToStr(D[i])); // підпис (легенда)
end;
end;    

5. Побудова гістограми


procedure TForm1.Button2Click(Sender: TObject);
var i: Integer;
begin
For i := 1 to 4 do begin
With Image2.Canvas do begin
{ задавання кольору і стилю заливки і-го стовпця }
Brush.Color := cl[i];
Brush.Style := bsSolid;
Rectangle (i * 60, 150-D[i] div 10, i* 60 + 50, 150); // побудова стовпчика
Brush.Style := bsClear;
Font.Size := 12;
TextOut (i * 60, 130 - D[i] div 10, IntToStr(D[i])); // підпис числових даних
end; 
Label5.Caption := Label5.Caption + '    ' + Nazva[i]; // підпис категорій
end;
end;    

6. Побудова кругової діаграми


procedure TForm1.Button3Click(Sender: TObject);
var  i: Integer; sum, ps: Real; // градусна міра сектора
     x0, y0: Integer; // координати центра діаграми
     wx, wy: Integer; // координати першої точки
     x,y: Integer; // координати наступних точок
     r: Integer;
begin
    sum := 0;
For i := 1 to 4 do sum := sum + D[i] div 100;
{ обчислення координат центра діаграми }
x0 := Image3.Width div 2; y0 := Image3.Height div 2;
r := Image3.Width div 3; // обчислення радіуса
wx := x0 + r; wy := y0; // перша точка
ps := 0;
For i := 1 to 4 do
With Image3.Canvas do begin
ps := ps + 2 * pi * (D[i] div 100)/sum; // кут сектора
x := Round(x0 + r * cos(ps));
y := Round(y0 + r * sin(ps));
Brush.Color := cl[i];
Pie(x0 - r, y0 - r, x0 + r, y0 + r, x, y, wx, wy);
wx := x;    
wy := y;
sh1[i].Brush.Color := cl[i];
lb1[i].Caption := Nazva[i];
end;
end;     

7. Побудова графіка

procedure TForm1.Button4Click(Sender: TObject);
Var i: Integer;
begin
{ виведення імен категорій }
For i := 1 to 4 do Image4.Canvas.TextOut (50 * i, 160, Nazva[i]);
Image4.Canvas.MoveTo (5,150); // встановлення олівця в початкову позицію
Image4.Canvas.Pen.Width := 3; // товщина олівця
Image4.Canvas.Pen.Color := clBlue; // колір олівця
{ малювання відрізків графіка }
For i := 1 to 4 do Image4.Canvas.LineTo (60 * i, 150 - D[i] div 10);
end;                    

суботу, 23 січня 2021 р.

Складання і виконання алгоритмів знаходження сум і кількостей значень елементів табличних величин за заданими умовами в середовищі програмування

 Практична робота

Створити проект для розв’язання задачі


Хід роботи

1. Форма містить наступні елементи:


2. Опис глобальних змінних:


3. Введення даних в таблицю:


4. Обчислення кількості опадів та їх середнього значення:


5. Знаходження мінімального значення (найсухіший місяць):


6. Знаходження максимального значення (найвологіший місяць):


7. Знаходження елементів, які задовольняють певним умовам (місяці, кількість опадів в яких <40мм):

пʼятницю, 22 січня 2021 р.

Основні алгоритми опрацювання масивів

Дивитися підручник Інформатика 9 клас Бондаренко

Розглянемо найбільш поширені дії з елементами масиву на прикладі


Заповнення масиву


Перший рядок  - це номери стовпчиків і це ж номери елементів масиву (заповнюються одночасно з запуском програми)

procedure TForm1.FormCreate(Sender: TObject);
  var i:integer;
begin
  For i :=1 to 10 do
  StringGrid1.Cells[i-1, 0] := IntToStr(i);
 end;             

Заповнення масиву

     

Заповнимо масив випадковими числами від 0 до 20

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
Randomize;
For i := 1 to 10 do begin
a[i] := Random(20);
StringGrid1.Cells[i-1, 1] := IntToStr(a[i]); end;
end;

 Сума елементів масиву



Знаходження суми елементів масиву і їх добутку

procedure TForm1.Button4Click(Sender: TObject);
 var i,sum,pr: Integer;
begin
 sum:=0;
 pr:=1;
 For i := 1 to 10 do begin
  sum:= sum + a[i];
  pr:=pr*a[i];
 end;
 Edit1.Text:=IntToStr(sum);
 Edit6.Text:=IntToStr(pr);
end;     

Середнє значення елементів масиву



procedure TForm1.Button2Click(Sender: TObject);
 var sr_znach: Real;
begin
 sr_znach:=StrToInt(Edit1.Text)/10;
 Edit2.Text:=FloatToStr(sr_znach)
end;   

Знаходження кількості елементів масиву


Знайдемо кількість елементів масиву, які більші за середнє значення

procedure TForm1.Button3Click(Sender: TObject);
  var i,kol: Integer;
begin
  kol:=0;
  For i := 1 to 10 do
  if a[i]>StrToFloat(Edit2.Text) then
  kol:=kol+1;
  Edit3.Text:=IntToStr(kol)
end;   

Знаходження мінімального елементу


procedure TForm1.Button5Click(Sender: TObject);
 var i,min,n: Integer;
begin
 min:=a[1];
 For i := 2 to 10 do
  if a[i]<min then begin
   min:=a[i];
   n:=i;
  end;
 Edit4.Text:=IntToStr(min);
 Edit7.Text:=IntToStr(n);
end;  

Знаходження максимального елементу


procedure TForm1.Button6Click(Sender: TObject);
 var i,max,m: Integer;
begin
  max:=a[1];
 For i := 2 to 10 do
  if a[i]>max then  begin
  max:=a[i];
  m:=i;
  end;
 Edit5.Text:=IntToStr(max);
 Edit8.Text:=IntToStr(m);
end;  

Ведення елементів масиву з клавіатури


procedure TForm1.Button8Click(Sender: TObject);
  var i: Integer;
begin
  For i:=1 to 10 do
  If Length(StringGrid2.Cells[i-1,1]) <> 0
  then b[i] := StrToInt(StringGrid2.Cells[i-1,1])
  else b[i] := 0;
end;   

Змінення елементів масиву

а) зміна розташування обміном (поміняти місцями сусідні елементи)

procedure TForm1.Button9Click(Sender: TObject);
  var i,c: Integer;
begin
  i:=1;
  While i <= 9 do begin
   c:= b[i]; b[i]:= b[i+1]; b[i+1]:= c;
   i:= i+2 end;
   For i:=1 to 10 do
   StringGrid2.Cells[i-1,1]:=IntToStr(b[i]);
end;   

б) зміна значення за умовою (елементи з парними номерами замінити на 0)


procedure TForm1.Button11Click(Sender: TObject);
   var i: Integer;
begin
  For i:=1 to 10 do begin
   if i mod 2 = 0 then
   b[i]:=0;
   StringGrid4.Cells[i-1,1]:=IntToStr(b[i]);
  end;
end; 

Очистка масиву


procedure TForm1.Button10Click(Sender: TObject);
begin
   StringGrid2.Rows[1].Clear;
   StringGrid3.Rows[1].Clear;
   StringGrid4.Rows[1].Clear;
end;  

Алгоритми упорядкування масиву

Сортування перестановкою (за зростанням)


procedure TForm1.Button12Click(Sender: TObject);
var i,k,max,m,c: integer;
begin
For k:=10 downto 2 do
begin
m:=1; max:=a[1];
for i:=2 to k do
if a[i]>max then
begin
max:=a[i]; m:=i;
end;
c:=a[m]; a[m]:=a[k]; a[k]:=c;
end;
For i:=1 to 10 do
StringGrid5.Cells[i-1,1]:=IntToStr(a[i]);
end;

Сортування бульбашкою (за спаданням)

procedure TForm1.Button13Click(Sender: TObject);
  var i,j,c: integer;
   flag:boolean;
begin
  j:=1;
repeat flag:=false;
for i:=1 to 9 do
if a[i]<a[i+1] then begin
c:=a[i]; a[i]:=a[i+1]; a[i+1]:=c;
flag:=true end;
j:=j+1;
Until flag=false;
for i:=1 to 10 do
StringGrid6.Cells[i-1,1]:=IntToStr(a[i]);
end;  

І ще раз про очистку


procedure TForm1.Button7Click(Sender: TObject);
begin
StringGrid1.Rows[1].Clear;
StringGrid5.Rows[1].Clear;
StringGrid6.Rows[1].Clear;
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Edit6.Clear;
Edit7.Clear;
Edit8.Clear;
end;







неділю, 10 січня 2021 р.

Види алгоритмів. Складання алгоритмів для виконавців


Спробуйте свої сили в блоках Pilas https://pilasbloques.kab-info.pp.ua/#/libros/1



План дій, інструкція, команда. Поняття алгоритму. Алгоритми і виконавці.


Інтерактивні вправи

Щоб виконати інтерактивні вправи, треба:

1. перейти на сайт https://learningapps.org
2. натиснути кнопку Реєстрація


 3. увійдіть зі своїм логіном і паролем ( у всіх вас обліковий запис вже створений). Логін і пароль знайдете в таблиці нижче.

4. таблиця з логінами та паролями: 


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


 6. перейдіть до виконання вправ, які запропоновані до цього уроку


 7. після виконання вправ стан вікна вашого класу буде таким