Monday, May 25, 2020

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

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





Воочи: Програмата има две потпрограми (pocni и crtaj). Со потпрограмата pocni, се одредуваат координатите на глувчето според неговата позиција во моментот кога ќе се кликни на него. Со потпрограмата crtaj, се црта линија од почетната точка до друга точка каде што го придвижуваме глувчето. При тоа, ако кликниме и се движиме со левото копче од глувчето, се црта со зелена боја, а при клик на десното копче и движење на глувчето, се црта со сина боја.

Задача: Внеси ја програмата во Small Basic, изврши ја и пробај да црташ со притиснато лево иили десно копче. Ќе добиеш различни линии.
Обиди се да ставиш позадина на прозорчето и тоа, кога ќе црташ со левото копче, одбери жолта позадина, а кога ќе се црта со сина боја, одбери црвена позадина!

Monday, May 18, 2020

Примери за посложени алгоритми и програми

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


GraphicsWindow .Width =450
GraphicsWindow .Height =450
GraphicsWindow .PenWidth =10

For m=1 To 5

      For x=0 To 200 Step 10
         GraphicsWindow . PenColor ="red"
         GraphicsWindow . BackgroundColor ="green"
         GraphicsWindow .DrawEllipse (0+x,200+x,50,50)
         Program .Delay (50)
         GraphicsWindow . Clear ()
     EndFor

     For x=0 To 200 Step 10

         GraphicsWindow . PenColor ="black"
         GraphicsWindow . BackgroundColor ="green"
         GraphicsWindow .DrawEllipse (200+x,400-x,50,50)
         Program .Delay (50)
         GraphicsWindow . Clear ()
    EndFor

    For x=0 To 200 Step 10
         GraphicsWindow . PenColor ="blue"
         GraphicsWindow . BackgroundColor ="green"
        GraphicsWindow .DrawEllipse (400-x,200-x,50,50)
        Program .Delay (50)
        GraphicsWindow . Clear ()
    EndFor

    For x=0 To 200 Step 10
          GraphicsWindow . PenColor ="yellow"
          GraphicsWindow . BackgroundColor ="green"
          GraphicsWindow .DrawEllipse (200-x,x,50,50)
          Program .Delay (50)
          GraphicsWindow . Clear ()
    EndFor

EndFor




Задача: Внесете ја програмата во Small Basic, извршете ја и обидете се да промените нешто во неа за да добиете слика и анимација по ваша креација. Експериментирајте со боите, формите, брзината,...

Monday, May 11, 2020

Еднодимензионални низи - Вежби

Решете ги дадениве задачи користејќи еднодимензионални низи:


Задача1: Напиши програма (квиз со прашања и одговори) со две низи, која во една низа сместува имиња на играчи - спортисти (фудбалери, ракометари,..), а во друга имиња на спортски клубови во кои игра избраниот играч, го брише екранот и по случаен избор поставува прашања за играчот, а вие давата одговор за клубот во кој тој играч игра.

Задача2: Напиши програма (квиз со прашања и одговори) со две низи, која во една низа сместува наслови на песни, а во друга имиња на изведувачи (пеачи) кои ја пеат соодветната песна, го брише екранот и по случаен избор поставува прашања за песната, а вие давата одговор за изведувачот на таа песна.

Бројот на прашања и одговори за двете задачи нека е најмалку 5.

Monday, May 4, 2020

Еднодимензионални низи

Дефинирање и декларирање на еднодимензионални низи

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

Пример1: Анализа на пример програма во која се внесуваат повеќе податоци од ист тип кои потоа се користат во програмата. Односно, треба да внесеме 5 вида на јужно овошје кои се продаваат на нашиот пазар.

TextWindow.Write(“Vnesi juzno ovosje br.1:“)
ovosje1= TextWindow.Read ()
TextWindow.Write(“Vnesi juzno ovosje br.2:“)
ovosje2= TextWindow.Read ()
TextWindow.Write (“Vnesi juzno ovosje br.3:“)
ovosje3= TextWindow.Read ()
TextWindow.Write(“Vnesi juzno ovosje br.4:“)
ovosje4= TextWindow.Read ()
TextWindow.Write(“Vnesi juzno ovosje br.5:“)
ovosje5= TextWindow.Read ()
TextWindow.Write(“Na nasiot pazar se prodavaat slednite juzni ovosja: ")
TextWindow.Write(ovosje1+“, “+ovosje2+“, “+ovosje3+“, “+ovosje4+“,"+ovosje5+“, “)

TextWindow.WriteLine (““)

Што заклучуваме од овој пример на програмски код?

  • Програмскиот код е долг, се повторува истиот исказ за различна вредност на истиот тип на податок.


Што е подобро решение?

  • Наместо да се користи нова променлива за секој од податоците, податоците можат да се сместат во иста променлива која ќе додава различна ознака за секој нов податок.

Да запомниме:
  • Променливата која може да има повеќе од една вредност кои се различно означени се вика еднодимензионална низа или еднодимензионално поле.
  • Ознаките на податоците може да бидат бројни или текстуални и се викаат индекси
  • Податоците во низата обично се викаат и членови на низата.
  • Вредностите на членовите во низата може да бидат броеви или текстови.



Активност 1:Внеси ја пример програмата запишана со помош на низа и анализирај го кодот и излезот.


For i=1 To 5
     TextWindow . Write (“Vnesi juzno ovosje br.“+ i +“: “)
     ovosje[i] = TextWindow.Read ()
EndFor
TextWindow .Write (“Na nasiot pazar se prodavaat slednite juzni ovosja: “)
For i = 1 To 5
      TextWindow.Write (ovosje[i])
      if i<5 Then
          TextWindow.Write (“, “)
    EndIf
EndFor
TextWindow . WriteLine (““)

Воочи: Кое е името на низата? Како се означени членовите на низата? Колку членови има низата во програмата: Какви се вредностите на членовите; текстуални или бројни?

Активност 2: Напиши програма која внесува податоци за име, презиме и година на раѓање на 5 ученици од едно училиште.

For i=1 To 5

        TextWindow.Write (“Vnesi ime na ucenikot br.“ + i + “ : “)
        ime[i]= TextWindow.Read ()
       TextWindow.Write (“Vnesi prezime na ucenikot:“)
       prezime[i]= TextWindow .Read ()
       TextWindow.Write (“Vnesi ocenka po informatika na ucenikot:“)
       ocenka[i]= TextWindow .ReadNumber ()
EndFor
TextWindow . Clear ()
For i= 1 To 5
      TextWindow.Write (“Vnesi go redniot broj od 1 do 5 za ucenikot za koj sakas podatoci: “)
      indeks= TextWindow . ReadNumber()
      TextWindow . WriteLine (“Ucenikot “+ime[indeks]+“ “+prezime[indeks]+“ ima ocenka “ +   ocenka[indeks]+“ po informatika“)
EndFor


Размисли: Зошто е потребен исказот за бришење на екранот по внесување на податоци за членовите на низата?

Активност 3: Напиши програма (квиз со прашања и одговори) со две низи, која во една низа сместува имиња на држави, а во друга имиња на главни градови, го брише екранот и по случаен избор поставува прашања за главен град на секоја држава:

For i=1 To 5

      TextWindow.Write (“vnesi drzava:“)
      drzava[i]= TextWindow.Read ()
      TextWindow.Write (“Vnesi glaven grad:“)
      grad[i]= TextWindow.Read ()
EndFor
TextWindow.Clear ()
For i=1 To 5
      indeks= Math.GetRandomNumber (5)
     TextWindow.Write(“Koj e glaven grad na "+drzava[indeks]+“ ? ")
     odgovor= TextWindow.Read ()
    If odgovor = grad[indeks] Then
           TextWindow.WriteLine(“Odgovorot e tocen!“)
    Else
          TextWindow . WriteLine (“Odgovorot ne e tocen!“)
    EndIf
EndFor



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.

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

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

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

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