4. juuli 2019

Arvutivaba programmeerimine: keeruliste probleemide lahendamine

Suvi 2019 väljakutse on tutvustada arvutivaba programmeerimise tegevusi. Nende olulisusest programmeerimise õppimisel olen lähemalt kirjutanud programmeerimise baasoskuste õpetamise postitustes siin ja siin.

Selles postituses tutvustan arvutivaba tegevust, mis on üsna pingeline ja paneb õppijad kohati raskesse olukorda, mistõttu on äärmiselt oluline, et tegevuse läbiviija oleks toetav ja julgustav.


arvutivaba_arvutita_programmeerimine_algoritmiline_mõtlemine_Kristi_Proge_Blog
Progammeerimisel peab vahepeal lahendama keerulisi probleeme. Foto: Pixabay


Tegevuse eesmärk

... on demonsteerida, kuidas lahendada keerulisi probleeme kasutades algoritmilise mõtlemise nelja komponenti: probleemi väiksemateks osadeks võtmine, mustrite tuvastamine, üldistamine ja algoritmi väljatöötamine. 


Tegevuse kirjeldus

Selle arvutivaba programmeerimise tegevuse paremini õnnestumiseks on vaja suuremat hulka osalejaid, kuid põhimõtteliselt saab seda tegevust läbi viia ka ainult kahe osalejaga.
  • Ütle osalejatele, et nende ülesanne on liita kokku kõik arvud ühest kahesajani (1-200).
  • Teavita neid, et seda tuleb teha peas.
  • Aega on 30 sekundit.
    • Osalejad võivad olla ehmunud, mis on antud tegevuse puhul tahtlik. Et neid rahustada, anna oma kehakeele ja hääletooniga mõista, et sa palud neil midagi hullumeelset teha.
  • Pane stopper tööle ja ütle "Läks!"
  • Jälgi samal ajal osalejad: Kes on lihtsalt kohmetunud? Kes üritab arve kokku liita? jms
  • Kui aeg läbi, uuri, kas kellelgi õnnestus arvud kokku liita?
  • Uuri, kas oli keegi, kelle jaoks ülesanne oli nii keeruline, et ta isegi ei proovinud?
  • Uuri, kas keegi proovis küll, aga ei jõudnud lõpuni? Küsi, kuidas nad proovisid seda teha?
  • Juhenda õpilasi probleemi väiksemateks osadeks võtma. Seda tehes on ülesannet ehk probleemi lihtsam lahendada:
    • Alustame mõlemast otsast. Palju on 200 + 1?
    • Palju on 199 + 2?
    • Palju on 198 + 3?
    • Kas näete mustrit?
    • Palju selliseid paare kokku tuleb?
      • Milline on viimane paar? (V: 100 + 101)
      • See teeb kokku 100 paari
      • Kui meil on sada paari arvu 201, siis kuidas leiame nende summa?
      • Palju on 100 * 201?
    • Kas saame sama lahendust kasutada ka teiste arvude jaoks?
    • Kas saame seda kasutada 2 000 jaoks?
    • Aga 20 000?
    • Mis on lahenduses sama ja mis on erinev?
    • Kasutades üldistamist, saame lahenduse ehk algoritmi, mida saab rakendada kõigi arvude jaoks.
  • Töötage koos lahenduse kallal. Lahendus on: (arv/2)*(arv+1) = vastus
  • Katsetage mõnede arvudega (2, 3, 4 & 5) kontrollimaks algoritmi korrektsust.

Räägi osalejatele, et kasutasite probleemi lahendamiseks algoritmilist mõtlemist. Kõigepealt võtsite suure probleemi väiksemateks osadeks. Seejärel tuvastasite sarnasused probleemi väiksemate osade vahel ehk leidsite korduva mustri. Siis jõudsite järeldusele, et sama lahendust saab kasutada ka teiste arvude jaoks ehk toimus üldistamine. Lõpuks töötasite välja algoritmi, mis sobib kõigi sarnaste probleemide lahendamiseks. 

Selline probleemilahendamise oskus on vajalik programmide koostamisel, kuid samuti igapäevaelu probleemide lahendamisel.

Järeltegevused

Arutage koos:
  • Mida peaksid tegema, kui sul palutakse teha midagi, mida sa ei oska?
  • Mida peaksid proovima teha, kui probleem on liiga keeruline?
  • Mida sa sellest järeldad, kui erinevatel ülesannetel on lahendustes sarnasused?
  • Kui sul on probleem, mis erineb probleemist, mille oled juba lahendanud, siis mida sa teed?
Arvutivaba tegevuse idee on pärit lehelt code.org.

Lõppsõna

Kui oled programmeerimist õpetanud või ise õppinud, siis tead, et kirjeldatud arvutivaba tegevuse alguses kunstlikult tekitatud pingeline olukord ei ole programmeerimise juures üldse erakordne. Sellist ahastuse tunnet kogevad õpilased aeg-ajalt ikka, on selle põhjuseks siis ülesande keeruline sõnastus, suutmatus kohe lahendust välja mõelda või oskamatus programmis viga üles leida, et see tööle saada.

Olen selliste tunnete tunnistajaks olnud nii õppijana kui ka õpetajana. Seetõttu näen käesoleva arvutivaba programmeerimise tegevuse väärtusena ka seda, et selle kaudu saab õpetada õpilastele raskes olukorras rahulikuks jäämist.


Creative Commons litsents -Autorile viitamine, mitteäriline eesmärk, jagamine samadel tingimustel

Jälgi KristiProget ka Facebookis.