Saturday, April 25, 2020

Вежби со настани

Настани со тастери

Сакаме во Small Basic да изработиме програма во која ќе имаме настани со тастатери од тастатурата, односно ќе се овозможи ротација на графички објект во графичкото прозорче кога ќе притиснеме на некој тастер од тастатурата.
Значи во примерот, ќе притиснеме на RETURN (ENTER) за да го ротираме правоаголникот во графичкиот прозорец. Кога ќе го отпуштиме овој тастер, правоаголникот ќе се врати во неговата оригинална положба.
Што треба да направиме?
  1. Најпрво да го нацртаме правоаголникот со користење на командата  AddRectangle од објектите  Shapes.
  2. Локацијата на правоаголникот ја одредуваме со користење на Move операцијата.
  3. Го одредуваме тастерот со кој правоаголникот ќе ротира. Го најавуваме тастерот и го прифаќаме како име на варијаблата. 
  4. Го користиме KeyDown настанот од GraphicsWindow објектот и најавуваме потпрограма за ротација на објектот кога е притиснато копчето. 
  5. Едноставно, го користиме  KeyUp настанот и најавуваме потпрограма за ротација на објектот кога корисникот ќе го ослободи притиснатиот тастер. 

Кога ќе кликнеме Run, програмот се извршува. Во графичкиот прозорец се појавува правоаголникот во средината. Кога ќе притиснеме RETURN (ENTER), правоаголникот ротира. Кога ќе го ослободиме копчето Return (Enter), правоаголникот ротира во оригиналната положба. 

GraphicsWindow.Height = 300
GraphicsWindow.Width = 300
GraphicsWindow.Title = "Graphics Window"

shape1 = Shapes.AddRectangle(100, 50)
Shapes.Move(shape1, 100, 125)
return = "Return"
GraphicsWindow.KeyDown = keydown
GraphicsWindow.KeyUp = keyup

Sub keydown
  If GraphicsWindow.LastKey = return then
    Shapes.Rotate(shape1, 90)
  EndIf
EndSub

Sub keyup
  If GraphicsWindow.LastKey = return then
    Shapes.Rotate(shape1, 0)
  EndIf
EndSub


Настани со глувче

Како што направивме настани со татстери, можеме да направиме програма во Small Basic што работи со настани кои ќе се извршуваат со клик на глувчето. Настаните со глувчето генерираат акции во програмата кога корисникот клика на глувчето. 
MouseDown одговара на настан кога корисникот клика на глувчето. 
MouseUp одговара на настан кога корисникот го ослободува глувчето. 
MouseMove одговара на настан кога корисникот го движи покажувачот на глувчето во графичкиот прозорец. 


Да видиме како можеме да ги користиме овие настани во програмата. Во овој пример, кликаме и го движиме (лизгаме) глувчето во графичкиот прозорец за да креираме линии со различни бои и ширини.


GraphicsWindow.MouseDown = MouseClick
GraphicsWindow.MouseMove = MouseDrag
GraphicsWindow.MouseUp   = MouseUp

Sub MouseClick
  OrgX = GraphicsWindow.MouseX
  OrgY = GraphicsWindow.MouseY
EndSub

Sub MouseDrag
  x = GraphicsWindow.MouseX
  y = GraphicsWindow.MouseY
  If (Mouse.IsLeftButtonDown) then
    GraphicsWindow.DrawLine(OrgX, OrgY, x, y)
  Endif
EndSub

Sub MouseUp
  GraphicsWindow.PenColor=GraphicsWindow.GetRandomColor()
  GraphicsWindow.PenWidth=Math.GetRandomNumber(5)
EndSub



Домашна работа:
1. Направете програма во која ќе користите настани со тастер, Односно, да се ротира некоја фигура (по ваш избор, само да не е круг) за 45 степени со клик на татстер, а со отпуштање на татерот, објектот да се враќа во нормална положба.
2. Истата задача да се дополни настан со глувчето. Односно при клик на глувчето да се ротира објектот за 90 степени.

Wednesday, April 15, 2020

Интерактивни програми со настани

Да подискутираме!

Ако куќата ја сметаме за објект, бројот на катови, врати, прозорци за особини на објектот, отворање, затварање врати и прозорци за операции во објектот, тогаш што ќе биде ѕвонењето на ѕвончето од влезната врата?   Одговорот е настан или случка.
На овој настан се одговара со соодветна операција во објектот, на пример отворање на вратата или прашање „ Кој е?“.
Преку овој настан во куќата се комуницира со надворешната околина.

Што е настан?

Настаните или случките во програмските јазици претставуваат нов градбен дел кој овозможува интерактивност во програмата преку активности со глувчето или притискање на соодветно копче од тастатурата.

Настаните се во тесна врска со потпрограмите. Потпрограмите се повикуваат кога ќе се случи некој настан и тогаш се извршуваат исказите во нив. 

Активност 1: Пример на програмски код со настан

GraphicsWindow.MouseDown =klik
Sub klik
        GraphicsWindow.ShowMessage (“Ej, pa ti klikna“, “ZDRAVO!“)
EndSub


Воочи!!!
Операцијата ShowMessage (“име_на_прозорецот“, “порака“) прикажува порака во посебен прозорец со доделено име.

Активност2: При клик со глувчето во прозорецот се исцртува топче на местото каде сме кликнале со глувчето во случајна боја.
GraphicsWindow . MouseDown =klik

Sub klik
     x= GraphicsWindow.MouseX
     y= GraphicsWindow.MouseY
     GraphicsWindow.BrushColor = GraphicsWindow   GetRandomColor()
    GraphicsWindow . FillEllipse (x,y,10, 10)
EndSub

Воочи!!!
Операцијата MouseX и MouseY во графичкиот прозорец ги дава координатите на глувчето во прозорецот.

Активност3: Напиши пример програма со повеќе настани
Настан со клик на глувчето при што се повикува потпрограмата која црта топче, а другиот настан со притискање на било кое копче од тастатурата при што се менува бојата на топчињата кои се цртаат.

GraphicsWindow . MouseDown =klik

GraphicsWindow . KeyDown =tipka
Sub klik
      x= GraphicsWindow . MouseX
      y= GraphicsWindow . MouseY
      GraphicsWindow . FillEllipse (x,y,10, 10)
EndSub
Sub tipka
      GraphicsWindow . BrushColor =GraphicsWindow .GetRandomColor()
EndSub

Активност4: Пишување програма со настан во која ќе се применува желка графиката.
Напиши програма со настан клик на глувчето по што се активира потпрограма која го движи желчето до позицијата каде е кликнато со глувчето.

Turtle.Show ()
Turtle.Speed =7
GraphicsWindow.MouseDown =klik
Sub klik
      x = GraphicsWindow.MouseX
      y = GraphicsWindow.MouseY
      Turtle .MoveTo (x,y)
      GraphicsWindow .PenColor=GraphicsWindow.GetRandomColor ()
EndSub

Воочи ја операцијата на желката MoveTo (x,y) со која желката се придвижува до точка со координати x и y.

Домашна работа: 
Да се направи програма со која при клик со глувчето во прозорецот се исцртува елипса (велигденско јајце) на местото каде сме кликнале со глувчето во случајна боја како на сликава:

Објаснување: Секоја елипса (јајце) се состои од три елипси кои имаат различни димензии. Или може да бидете креативни, па да нацртате било какви дизајни или бои во елипсите.

Sunday, April 5, 2020

Потпрограми

Што е потпрограма?


•Една иста група на искази (наредби) која се користи во различни делови од програмскиот код во зависност од проблемската ситуација и се запишува како посебен дел од главната програма, се нарекува – потпрограма (субрутина).
Потпрограма е дел од главната програма кој се состои од низа на искази со кои се извршува одредена активност.
•Потпрограмите ја намалуваат должината на програмскиот код, го поедноставуваат неговото пишување и разбирање.
•Потпрограмата има име и може да се повика од каде било во главната програма со одреден исказ.
•Самата потпрограма обично се пишува под главната програма и има одредена структура со почеток и крај.

• Името на потпрограмата не е осетливо на мали/големи букви.

Активност 1: Напиши го следниот пример програмски код со две потпрограми:

TextWindow .Write („Vnesi lozinka:“)
lozinka= TextWindow .Read ()

If lozinka=“JB007“ Then
        yes()
Else
        no()
EndIf

Sub no
    TextWindow . ForegroundColor =“red“
    TextWindow .WriteLine(“Lozinkata ne e tocna!“)
    TextWindow .WriteLine (“Vlezot e zabranet!“)
    Sound . PlayBellRing ()
EndSub

Sub yes
     TextWindow . ForegroundColor =“green“
     TextWindow .WriteLine(“Lozinkata е tocna!“)
     TextWindow .WriteLine (“Vlezot e sloboden!“)
     Sound . PlayChime ()
EndSub

Во примерот разликуваме една главна програма (тоа е првиот дел со внесувањето на лозинката и IF структурата) и две потпрограми yes() и no()
По главната програма се наоѓаат потпрограмите yes и no, и секоја почнува со Sub, а завршува со EndSub.


ВООЧИ!


Структурата за пишување на потпрограма е следна:

Sub ime_na _potprogramata
     Искази
EndSub

Потпрограмата се повикува од главната програма со исказот
ime_na _potprogramata().


Активност2: Пишување на пример програма со потпрограма која користи променливи од главната програма.


TextWindow .WriteLine (“Programa koja crta linii“)
TextWindow . Write (“Kolku linii treba da nacrtam?“)
broj=TextWindow .ReadNumber ()
linii()
Sub linii
For i = 1 To broj
       GraphicsWindow . DrawLine (50+x,50 50+x, 200)
       x=x+20
EndFor

EndSub

Размисли и одговори:
1. Која променлива од главната програма ја користи потпрограмата? 
2. Зошто координатите по x оската мора да се зголемат?

Воочи! Променливите во програмата се глобални, а тоа значи дека ја задржуваат својата вредност и име и во главната програма и во потпрограмата.


Активност3: Пишување на пример програма која повикува потпрограма во циклус


GraphicsWindow.Title =“ANIMACIJA SO TOPCINJA“
GraphicsWindow.Width =“300“
GraphicsWindow.Height =“300“
GraphicsWindow.BackgroundColor =“black“
For br=1 To 1000
  x= Math.GetRandomNumber (300)
  y= Math.GetRandomNumber (300)
  kruznica ()
EndFor
Sub kruznica
      GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor ()
      GraphicsWindow.FillEllipse (x,y,10,10)
      Program.Delay (10)
EndSub

Размисли и одговори: 
3. Колку пати се повикува потпрограмата во главната програма? 
4. Дали изразот за доделување вредност на координатите x и y може да се внесе во потпрограмата?


Пример програмите изработите ги во Small Basic на вашите компјутери, а прашањата одговорете ги во тетратка.

Програма за цртање PAINT

Преку овој пример, ќе видиме како може во Small Basic да се црта со помош на глувчето, користејќи настани и потпрограми: Воочи: Пр...