You are on page 1of 36

Strategije rješavanja

problema
Guide to Teaching Computer Science - Chapter 5

Tanja Radalj
Uvod
 Programiranje - proces rješavanja
problema
 Procesi rješavanja problema zajednički
su mnogim disciplinama
Faze rješavanja problema
 Proces rješavanja problema započinje skiciranjem
zahtijeva problema, a završava skicom rješenja
 Faze rješavanja problema su :
 Analiza problema
 Razmatranje alternative
 Odabir pristupa
 Dekompozicija problema
 Pisanje algoritma
 Ispravnost.
 Efikasnost
 Razmišljanje
Aktivnost 1: Tehnike rješavanja
problema u računalnoj znanosti
 Rad u grupi
 Zadatak: pogledajte popis tehnika rješavanja
problema koji se nalaze na Wikipediji ili neki drugi
izvor.
 Odaberite dvije tehnike rješavanja problema koje se
obično koriste u računalnoj znanosti i za svaku od njih
opisati barem jednu situacija u kojoj se može koristiti.
 Primjer: tehnika Analogija može se koristiti kada se
uvodi novi problem. U takvim slučajevima dobro je
proučiti sličan, već riješeni problem i na temelju
analogije između dva (ili više) problema dobiti
rješenje novog problema.
Razumijevanje problema
 Prva faza rješavanja problema koja vodi
do određivanja karakteristika problema
 Ova faza može početi prepoznavanjem
ulaza i odabirom izlaza
 Određivanje ulaza zapravo ukazuje na
to da se problem razumio
Aktivnost 2. Ispitivanje
reprezentativnih ulaza i izlaza
 Smišljanje problema, rad u paru
 Napišite dva problema koja ilustriraju važnost
ispitivanja reprezentativnih ulaza i izlaza
 Prvi problem bi treba neka bude jednostavan,
s osnovnim uvjetima i petljama
 Drugi problem trebao bi biti složeniji kao što
je npr. dvodimenzionalni niz, lista, stog ili red
Oblikovanje rješenja
 Tri strategije koje se mogu iskoristiti u
ovoj fazi:
 definiranje varijabli,
 bistrenje korak po korak i
 algoritamski uzorci
Definiranje varijabli
 Ispitivanje ulaza i izlaza pojašnjava
problem onome tko ga rješava.
 Sljedeća faza je definiranje varijabli koje
su potrebne kako bi se problem riješio.
Aktivnost 3: Odabir
varijabli
 Analiza problema, rad u paru
 Analizirajte problem koji ste smislili u
prethodnoj aktivnosti i napišite varijable
koje su potrebne za rješavanje tog
problema.
Uloge varijabli
 Nedavno uveden pristup koji se može
koristiti pri poučavanju programiranja
početnicima.
 Uloga varijable određuje se prema
dinamičnom karakteru varijable
 Na primjer, u ulozi brojača, varijabli je
dodijeljen niz vrijednosti unaprijed
poznat.
Uloge varijabli
Promjena uloge
Uloge varijabli
Uloga Primjer Neformalna definicija
Fixed value maxStrLength Podatak koji ne mijenja svoju vrijednost
nakon inicijalizacija
Stepper count Podatak koji mijenja vrijednosti prema
unaprijed poznatim vrijednostima
Most-recent holder inputData Podatak u kojem je spremljena
posljednja vrijednost dobivena unosom
Most-wanted holder maximum Podatak u kojem je spremljena najbolja
vrijednost do sad
Gatherer sum Podatak u koji se akumuliraju
vrijednosti drugih podataka
Follower prev Podatak koji uvijek poprime staru
vrijednost nekog podatka
Uloge varijabli
Uloga Primjer Neformalna definicija
One-way flag errorsOccurred Podatak koji može imati dvije vrijednosti i
koji ne može ponovno imati inicijalnu
vrijednost jednom kad se promijeni
Temporary temp Podatak koji sprema neku vrijednost kratko
vremena
Organizer sortArray Struktura podataka u koju su spremljeni
elementi koji se mogu preurediti
Container processQueue Struktura podataka u koju su spremljeni
elementi koji se mogu dodavati i brisati
Walker currNode Podatak prebačen u strukturu podataka
Određivanje uloga
Određivanje uloga
 character -
fixed value
 side - most-
recent holder
 i - stepper
 j - stepper
Aktivnost 4: Uloge varijabli

 http://www.cs.joensuu.fi/~saja/var_roles/
 Faza A: Učenje, rad u paru
 Učenje koncepta “Uloge varijabli” čitanjem “An Introduction to
the Roles of Variables”
 Izvedite aktivnost “Try to Classify Variables Yourself”

Pokušajte koristiti “The Role Advisor”
 Faza B: Razmišljanje o Fazi A, samostalni rad
 Koja nova znanja ste dobili iz ovog istraživanja?
 Slažete li se s interpretacijom koncepta “uloge varijabli”? Slažete
li se s kategorizacijom uloga varijabli?
 Sviđa li vam se ovaj način učenja? Da li vam se svidjela
aktivnost “ Try to Classify Variables Yourself ”?
 Navedi prednosti i nedostatke ovog načina učenja.
 Kao budući nastavnik računalne znanosti, razmisli o korištenju
ovog načina učenja kod učenika srednje škole; Smatraš li da
učenici mogu učiti na isti način kao i ti?
Aktivnost 5: Uloge varijabli
 Istražite sljedeće na početnoj stranici ”The roles
of variables” :
 Čemu uloge?
 Korištenje Uloge varijabli u poučavanju programiranja
 Literatura o ulogama varijabli
 Koji su vaši dojmovi s obzirom na istraživački
rad koji istražuje koncept uloga varijabli?
 Napišite 5-10 ideje koje su vam zanimljive i
inovativne. Objasnite izbor svake od tih ideja.
Bistrenje korak po korak
 Glavna svrha ove metodologije je da prvo
dobijemo pregled strukture problema i
odnose između njegovih dijelova
 Ovo je top-down metodologija jer se odvija
od općeg prema specifičnom.
 Tijekom ovog procesa, početni prikaz nekih
rješenja postupno se poboljšava kroz niz
prikaza koji će na kraju dati konačan program
Aktivnost 6: Vježbanje – ”razbijanje”
problema na manje dijelove

 Podijelite rješenje koje ste osmislili u 2.


aktivnosti u manje dijelove.
Aktivnost 7: Vježbanje –
analiza liste problema

 Studenti dobivaju popis problema i traži


se da ih analiziraju cjelovito, s obzirom
na ulaz i izlaza, izbor varijabli i s
obzirom na bistrenje korak po korak.
Algoritamski uzorci
 U ovom kontekstu uzorak označava stručno rješenje
za dizajn ili programski problem koji se često koristi
 Predstavljaju primjere elegantnih i učinkovitih
rješenja za neki algoritamski problem.
 Algoritamski uzorak je apstraktni model
algoritamskog procesa koji rješava određeni problem
i može se uskladiti ili mijenjati, a zatim integrirati u
rješenje različitih problema.
 Korištenje algoritamskih uzoraka može pomoći
učenicima u procesu razvoja rješenja algoritamskih
problema.
Aktivnost 8. Vježbanje –
ispitivanje dizajna uzorka
 Predstavlja se lista uzoraka. Svaki par
studenata odabire dva različita uzorka i zatim:
 Za svaki uzorak:
 Osmisle algoritamski problem čije rješenje koristi
taj uzorak
 Osmisle problem za čije rješenje je potrebno malo
izmijeniti uzorak
 Osmisle dva problem čije su rješenja
kombinacija ta dva uzorka.
Aktivnost 9. Vježbanje – Uzorci koji
koriste apstraktne tipove podataka

 Smislite barem jedan algoritamski


uzorak koji koristi apstraktne tipove
podataka kao što su vezane liste, red,
stog ili stablo.
Aktivnost 10. Vježbanje – oblikovanje radnih
listova kao pomoć učenicima pri korištenju
uzoraka

 Osmislite radni list koji pomaže


učenicima pri korištenju uzoraka
Provjeravanje rješenja
 Nakon što je rješenje konstruirano, treba
provjeriti njegovu ispravnost.
 Jedna od povezanih aktivnosti s
provjeravanjem rješenja je ispravljanje
pogreški (eng. debugging).
 Proces ispravljanja pogrešaka može
poboljšati učenikovo razumijevanje
računalne znanosti.
Aktivnost 11: Proces
ispravljanja pogrešaka
 Napišite program koji rješava neki
problem te pohranite kod i zabilježite
proces ispravljanja pogrešaka.
 Takvo iskustvo ne samo da povećava
svijest o strategijama ispravljanja
pogrešaka već potiče vještine
razmišljanja.
Aktivnost 12: Laboratorijske vježbe koje
se bave ispravljanjem pogrešaka

 Rad u grupi
 Zadatak je osmisliti vježbu kojoj je cilj
razvijanje vještine ispravljanja
pogrešaka.
Razmišljanje
 Razmišljanje se odnosi na preispitivanje i analizu metoda
prethodnih mentalnih procesa.
 Razmišljanje se može odvijati u različitim trenucima:
 Prije početka rješavanja problema: Nakon čitanja problema,
prilikom planiranja pristupa rješavanja, dobro je razmisliti o
sličnim, prethodno riješenim problemima kako bi odredili
relevantni algoritamski pristup, uzorak, itd.
 Tijekom rješavanja problema: Tijekom razvoja rješenja,
razmišljanje se odnosi na inspekciju, kontrolu i nadzor. Na
primjer, kada se pojavi poteškoća ili kada se otkrije pogreška,
dobro je razmisliti o izvoru.
 Nakon rješavanja problema: Kad je rješenje završeno,
razmišljanjem procjenjujemo i ispitujemo učinkovitost rješenja.
Takvo razmišljanje omogućuje da izvučemo zaključke iz procesa
rješavanja problema i da naučimo nešto o odlukama donesenim
tijekom njegove implementacije.
Razmišljanje
 Pitanja prije početka rješavanja problema
 Kako mogu odrediti težinu pitanja? Da li je pitanje
teško/jednostavno? Zašto?
 Da li imam poteškoća u shvaćanju nekog dijela problema?
Koji dio je nejasan?
 Da li sam prije rješavao slične probleme? Koje? Koje su
sličnosti?
 Pitanja nakon završenog procesa rješavanja
problema
 Da li je rješenje završeno?
 Zašto sam odabrao ovaj pristup? Da li sam donio dobru
odluku? Što mogu promijeniti u budućim sličnim
situacijama?
 Da li je bilo lako ili teško riješiti ovaj problem? Zašto?
 Mogu li riješiti ovaj problem na drugi način? Kako?
Aktivnost 13: Promišljajuće
aktivnosti
 Nakon što su učenici napisali test iz
relativno napredne teme računalne
znanosti, nastavnik shvati da su
postignuća učenika na testu niska te da
njihova rješenja ne pokazuju očekivano
razumijevanje koncepata.
Aktivnost 13. Faza A
 Nastavnikovo razmišljanje o neuspješnom
testu
1. Napišite razloge koji bi objasnili loše rezultate
učenika na testu.
2. Podijele razloge u dvije grupe: razlozi vezani za
nastavnika i razlozi vezani za učenika. Da li je
podjela bila očita? U kojim slučajevima ste se
dvoumili i zašto?
3. Predlože najmanje pet pitanja koja mogu voditi
razmišljanje nastavnika o neuspjehu u razredu.
Aktivnost 13. Faza B
 Rad u grupi
 Napišite nekoliko prijedloga kako vi, kao
nastavnik računalne znanosti, možete koristiti
proces razmišljanja kako bi pomogli
učenicima u učenju pritom uzimajući u obzir
dva aspekta: proces učenja učenika i
učenikovo shvaćanje naučenih koncepata.
 Drugim riječima vaš zadatak je oblikovati
aktivnost za učenike koja ima za cilj da
učenike navede na razmišljanje, uzimajući u
obzir navedene aspekte.
Aktivnost 13. Faza C
 Nastavnik spomenutog razreda odlučili koristiti proces
razmišljanja kako bi učenici poboljšali razumijevanje
navedenih koncepata računalne znanosti i kako bi
poboljšali rezultate testa.
 Nastavnik pita učenike da odgovore na sljedeća pitanja:
 Koje probleme ste riješili pripremajući se za test?
 Kako ste ih riješili?
 Koje su poteškoće bile tijekom pisanja testa?
 Jeste li se susreli s tim poteškoće samo tijekom testa ili i dok
ste učili za test?
 Ako ste se susreli s poteškoćama pripremajući se za test, što
vas je spriječilo da produbite razumijevanje?
 Ako ste se susreli s poteškoća samo tijekom testa, pokušajte
pretpostaviti zašto ste niste susreli s njima i prije.
Aktivnost 13. Faza C
 Podijelite pitanja u dvije grupe: pitanja koja se
odnose na učenikov proces učenja i pitanja
koja se odnose na učenikovo razumijevanje
naučenih koncepata.
 Smislite još barem dva dodatna pitanja za
svaku skupinu.
 Prema vašem mišljenju, kako takva pitanja
mogu pridonijeti učeniku u njegovom
budućem učenju općenito i posebno u procesu
rješavanja problema?
Aktivnost 13. Faza D
 Nakon što su učenici napisali svoja razmišljanja na
temelju prethodnih pitanja, zamoljeni su da dodatno
napišu sljedeće dvije faze:
1. Da sami smisle test sa istim sadržajem i strukturom
testa koji su pisali. Učenici su trebali i riješiti pitanja
koja su sastavili.
2. Da razmisle o svom trenutnom znanju imajući na umu
sljedeće pitanja nastavnika:
 Jeste li prevladali prethodne poteškoće?
 Kako ste ih prevladati?
 Osjećate li se spremno da ponovite testiranje?
 Koji pojmovi su vam još uvijek nejasni?
 Što mislite o konceptima računalne znanosti koje ste naučili -
interesantno /dosadno; važno/nepotrebno, teško/jednostavno?

You might also like