Esmaspäev, 25. september 2017

Tsüklid ja muutujad

Tsükli mõistet kasutatakse programmeerimises korduvate tegevuste puhul. Tsükli sisuks on tegevused, mida tuleb korrata ning tsükli "raamiks" on tingimus, kui palju ning mis tingimustel neid tegevusi tehakse.

Lihtne kordus
Tsükli alguses määratakse (arvuliselt), mitu korda tegevust tehakse. Tsükkel võib olla ka lõpmatu ehk tegevust jäädaksegi kordama.

Näide: retseptis on vaja taignasse lisada 3 muna. Kuna korraga saame lisada ainult 1 muna, siis peame muna lisamist tegema 3 korda.

Tingimuslik kordus
Tegevust tehakse juhul, kui on täidetud mingi tingimus. Tegevus võib alata siis, kui tingimus on täidetud või kesta seni, kuni tingimus on täidetud.

Näide pannkoogi algoritmist - lisame taignale piima seni, kuni tainas on piisavalt vedel


Muutujad

Selleks, et programm saaks sisestatud andmeid (kasutaja vastus, mõni välja arvutatud tulemus) ka edaspidi kasutada, tuleb kasutusele võtta muutujad.

Muutuja on nimega varustatud koht arvuti mälus, kuhu saab salvestada mingi väärtuse, näiteks arvu, teksti jms. Seda väärtust saab programm edaspidi kasutada, näiteks kuvab kogutud punktid, arvutab uue väärtuse või käivitab järgmise protsessi (kui muutuja väärtus saab võrdseks mingi muu väärtusega).

Allolev algoritm arvutab kasutaja sisestatud 5 arvu summa ning väljastab selle. Arvude loendamiseks ning summa arvutamiseks on kasutusele võetud muutujad SUM ja n.


Miks on vaja ülaloleva algoritmi puhul muutujate väärtus alguses 0-ga võrdsustada?

Ülesanne 1
Koosta plokkskeem, mis küsiks kasutajalt kõigepealt, mitu arvu ta soovib kokku liita ning laseks kasutajatel sisestada soovitud hulgal arve, liidaks need kokku ning väljastaks summa.

Pühapäev, 24. september 2017

Hargnev algoritm

Algoritme, kus edasiste sammude täitmine sõltub mingist tingimusest või vahetulemusest, nimetatakse hargnevateks algoritmideks.

Näide - plokkskeem, mis sisestatud punktide põhjal väljastab hinde.


Ülesanne 1. Kirjuta plokkskeem, mis kontrolliks, kas sisestatud arv on positiivne või negatiivne ning väljastaks vastavalt teksti "positiivne arv" või "negatiivne arv".
Lisaülesanne: täiusta oma algoritmi nii, et juhul kui arv = 0, väljastaks programm vastava teate!

Ülesanne 2. Täiusta näiteks toodud hinde plokkskeemi nii, et see kontrolliks, et sisestatavad punktid jääksid vahemikku 0-100.

Ülesanne 4. Keerulisem ülesanne (selle edukal lahendamisel on võimalik saada hinne Stuudiumisse, pead oskama ka oma lahendust selgitada).
Proovi välja mõelda ja kirja panna plokkskeem, mis:
1. Küsib kasutajalt maksimumpunktisumma, mis töö eest võib saada. 
2. Küsib kasutajalt töö eest saadud punktisumma. 
3. Arvutab välja protsendi
4. Väljastab protsendile vastava tähe (hinde).

Draw.io keskkonna kasutamine plokkskeemide joonistamiseks.

NB! Plokkskeemide joonistamiseks kasuta valikut Flowchart ja salveta valmis diagramm Google Drive programmeerimise kausta (Save as ... vali Google Drive ja siis logi vajadusel kooli e-postiaadressi ja parooliga sinna sisse).



Kolmapäev, 13. september 2017

Mis on programmeerimine?

Programm on käskude jada, mis on kirja pandud arvutile arusaadavas keeles. Programmeerimine on selle programmi kirjapanemine.

Programmeerimise töö sisaldab endas mitut etappi:
1. esmalt tuleb ülesannet analüüsida (seda tuleb loomulikult teha programmeerimise käigus pidevalt) - millised on eesmärgid, millistele vajadustele peab programm vastama jms
2. programmi kirjutamine ja analüüs
3. testimine ja vigade parandus

Erinevate rakenduste puhul lisandub programmeerimisele ka veel disain - selleks, et inimesel oleks mugav programmi kasutada või et inimene tahaks programmi kasutada, peab sel olema ka hea disain.

Kõikide nende tegevuste jaoks on vaja inimesi. Seega kõikidest ei peagi saama programmeerijad - vaja on ka testijaid, disainereid ja projektijuhte.

Programmeerimine on tänapäeval meeskonnatöö.


Teisipäev, 12. september 2017

Algoritmid ja plokkskeemid

Programm on enamasti teatud kindlate tegevuste jada, mis viib mingile lõpptulemusele (programm teeb midagi).

Programmeerimine on selle programmi kirjutamine.

Ülesande lahendamiseks vajalikku plaani, mida järgides on võimalik jõuda tulemuseni, nimetatakse algoritmiks. NB! Lahenduseni jõudmiseks on sageli mitu teed!

Algoritmi kohta öeldakse tihti ka lihtsalt protseduur.

Algoritmil on neli olulist omadust:
  1. Algoritmi iga samm peab olema täpne, st olema ühetähenduslik.
  2. Algoritm peab olema lõplik. Vastasel juhul me ei saa probleemile lahendust.
  3. Algoritm peab olema efektiivne, st ta peab andma probleemile korrektse vastuse.
  4. Algoritm peab olema üldine, st ta peab lahendama ülesande iga eksemplari. Näiteks ringi pindala leidmise algoritm peab sobima kõigi võimalike algandmete jaoks.

Allikas: https://courses.cs.ut.ee/MTAT.03.100/2012_fall/uploads/opik/04_algoritmid.html

Üks algoritmi näide (pannkookide valmistamine):
1. võta kauss
2. võta 3 muna
3. klopi munad lahti
4. lisa 3 supilusikatäit jahu
5. lisa maitse järgi suhkrut
6. lisa veidi soola
7. sega
8. lisa piima, kuni segu on piisavalt vedel
9. pane pann tulele
10. lisa pannile õli ja oota, kuni õli on kuum
11. võta kulbiga pannkoogitainast
12. vala tainas pannile
13. oota kuni üks pool on küpsenud kuldseks
14. keera pannkook ümber
15. oota, kuni teine pool on küpsenud kuldseks
16. tõsta pannkook pannilt taldrikule

Ülesanne 1
  1. Logi Google Drive keskkonda (kooli e-postiaadress ja parool!), loo sinna kaust nimega "Programmeerimine" ja jaga seda õpetajaga (vilve.roosioks@g.viimsi.edu.ee).
    • JUHEND kausta loomiseks ja jagamiseks
  2. Ava kaust ning loo sinna uus dokument (UUS -> Google'i dokumendid).
  3. Pane dokumenti kirja üks algoritm. Näited: mõni retsept, juhend kuidas jõuad kodust kooli või koolist koju, kuidas õpid inglise keele sõnud vms. Nummerda tegevused, et algoritmi oleks lihtsam jälgida (vt pannkoogi küpsetamise näidet eespool!).


Algoritme pannakse sageli kirja plokkskeemidena. Plokkskeemide komponendid võib lühidalt kokku võtta nii (vt allolevat pilti):

_images/l04_fig9.png
Pilt: https://courses.cs.ut.ee/MTAT.03.100/2012_fall/uploads/opik/_images/l04_fig9.png
Igast plokist saab väljuda üks nool, välja arvatud tingimusest (Otsustuse plokk), mille puhul väljub kaks noolt vastavalt pealkirjadega "jah" ja "ei", samuti ei välju lõpust ühtki noolt, siseneda võib rohkem nooli.

Eelpool toodud algoritm võiks plokkskeemina välja näha selline:

Plokkskeemide joonistamiseks on sobiv näiteks:


Veel mõni näide plokkskeemist (jõuluvana): http://progetiiger.cs.ut.ee/sites/default/files/Python/algoritm_jouluvana.png
(enne kooli): http://www.gliffy.com/go/publish/image/8913231/L.png

Ülesanne 2 - Pane ülesande 1 algoritm plokkskeemina kirja!
  1. Vali sobiv keskkond!
  2. Proovi ülesandes 1 kirja pandud algoritm plokkskeemiks kokku panna. Mõtle, milliseid plokke milliste tegevuste kirjeldamiseks võiks kasutada!
  3. Salvesta loodud plokkskeem Google Drive, ülesandes 1 loodud kausta "Programmeerimine".