Professional Documents
Culture Documents
Projektni Zadatak1
Projektni Zadatak1
Tereza Švigir
TRANSKRIPT RAZGOVORA
Ja: Danas ćemo raditi matrice u Pythonu. Možeš otvoriti editor koji želiš.
Ja: Dobro, matrice nemaju svoju ugrađenu strukturu u Pythonu pa ih koristimo kao liste čiji su elementi ponovno liste.
Znaš li što je lista u Pythonu?
Student: Pa, znam da postoji ime liste i da se označava sa uglatim zagradama. Onda da sadrži elemente koji su odvojeni
zarezima i kojima možemo pristupiti uz pomoć indeksa. Svaki element ima svoj neki indeks u listi.
Student: Ako se lista zove 'a', onda ću napisat 'a' i pored toga u ugladim zagrada indeks tog elementa koji je 1 jer Python
broji od nule. Znači a[1].
Ja: Ok, super. Dakle, kao što sam već rekla, matrica u Pythonu je lista čiji su elementi liste i svaka ta unutarnja lista
predstavlja jedan red u matrici. Ako imamo matricu dimenzija 4x3, odnosno matricu od 4 redaka i 3 stupca, naša velika
lista imat će 4 elemenata, 4 liste od kojih će svaka ta mala lista imati 3 elementa. U Pythonu, ako uzmemo da su nam svi
elementi matrice jedinice, će to izgledati ovako: A = [ [1,1,1,1], [1,1,1,1], [1,1,1,1], [1,1,1,1] ] . Imaš li pitanja?
Student: Nemam.
Ja: Dobro, onda možemo rješiti prvi zadatak. Zadatak kaže, kreiraj i ispiši matricu dimenzija 4x5 koja se sastoji od brojeva
u intervalu od 1 do 20. Kako bi rješio ovaj zadatak?
Student: Prvo ću nazvati matricu 'A' i onda otvoriti uglatu zagradu. Kak matrica ima 4 retka, to znači da će ta lista imati 4
liste. Broj stupaca je 5 pa će svaka ta lista imati 5 brojeva u sebi. Napisat ću
A = [ [1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20] ] i printat ću je kao print(A).
Ja: Bravo, ovo je točno. Možeš li samo pokrenuti program da vidimo ispisuje li dobro?
Student: Može.
Student: Pa uzeo bi zadnju listu kao A[3] i onda bi nekak iz nje uzeo drugi element. Ne znam kako se to piše.
Ja: Početak je dobar. Sintaksa je sljedeća: A[3][1] . Dakle u prvu uglatu zagradu pišeš indeks retka, a u drugu indeks
elementa u tom retku kojeg želiš.
Student: Aha, kužim. Onda prvi element u matrici dobivam s A[0][0], a onaj ispod njega s A[1][0] i tak mogu dobiti stupac
matrice?
Student: Ne.
Ja: Onda možemo na sljedeći zadatak koji kaže: Zadane su dvije 3X3 matrice. Napišite program koji zbraja ove dvije
matrice. Znaš li zbrajati dvije matrice u matematici?
Student: Da. {Student pokazuje na papiru} Svaki element prve matrice zbrojim sa elementom druge matrice na istom
mjestu. I tu je bitno da su obje matrice iste…istih dimenzija.
Ja: Dobro. Prvo što ćemo napraviti u ovom zadatku je inicijalizirati matricu u koju ćemo zapisivati rezultat jer zbrajanjem
dvije matrice dobivamo novu matricu. Inicijalizirati ćemo je tako da stvorimo novu matricu 'C' istih dimenzija kao i
zadane matrice i popuniti je s nulama. Onda ćemo iskoristiti dvije ugnježđene for petlje. Znaš li što je ugnježđena for
petlja?
Student: Da. To je ono kada u jednoj for petlji imamo drugu pa kada se ta druga završi, tek onda se iterator u onoj prvoj
poveća za jedan.
Ja: Točno, bravo! Dakle, vanjska for petlja s iteratorom 'i' će ići po retcima matrica, a unutarnja petlja s iteratorom 'j' će
ići po elementima tih redaka. Tada ćemo uzeti element iz prve matrice A[i][j] i zbrojiti ga s elementom druge matrice na
istom mjestu B[i][j] i rezultat upisati na odgovarajuće mjesto u rezultantnoj matrici C. Koje je to mjesto u matrici C?
Student: C[j][i]? A ne, ne, prve uglate su za indeks retka, onda C[i][j].
Ja: Tako je! Trebaš biti oprezan s indeksima. Bi mogao ovaj zadatak isprogramirati?
Ja: Kod ovakvih programa uvijek je dobro provjeriti dobiveni rezultat jer nekada, kada pogriješiš u logici zadatka, Python
ti neće javiti grešku, a dobiveni rezultat može biti krivi. Python uvijek vraća greške u sintaksi ili nedozvoljenom
matematičkom računu.
Student: Ok.
Student: Je.
Ja: Idemo na sljedeći zadatak. U ovom zadatku zadana je 3x4 matrica koju treba transponirati. Znaš li što je
transponirana matrica?
Student: Znam. {Student pokazuje na papiru} Transponirana matrica ima zamjenjene retke i stupce od zadane matrice.
Student: Ok, znači, opet ću koristiti dvije for petlje jedna u drugoj. Onda ću uzet element A[i][j] i staviti ga na mjesto A[j]
[i] jer tako redak pretvorim u stupac i obrnuto.
Ja: Pazi. Ako na mjesto A[j][i] staviš element A[i][j], onda kada u iteraciji for petljom dođeš na element A[j][i] na njemu
ćeš naći broj koji je prije stajao na A[i][j], a ne broj koji je originalno stajao na ovoj poziciji. Time ćeš na oba mjesta dobiti
isti broj i to onaj s pozicije A[i][j] dok ćeš originalni broj s pozicije A[j][i] izgubiti. Sjeti se, što smo prvo napravili u
prethodnom zadatku?
Student: Ajoj daa. Moram prvo inicijalizirat rezultantnu matricu i onda njoj staviti prvi redak kao prvi stupac zadane
matrice.
Student: 4x3 jer mjenjam retke za stupce zadane matrice koja je 3x4.
Ja: Dobro, super. Probaj isprogramirati zadatak i budi oprezan sa indeksima. Pazi da odgovaraju dimenzijama matrica.
Ja: Bravo! Eto, ovo je bio zadnji zadatak. Do sljedećeg puta možeš probati sam napisati program koji će množiti dvije
matrice. Zadaj si dvije matrice i pomoću pravila za množenje matrica pokušaj rješiti zadatak pa ćemo ga onda sljedeći put
zajedno prokomentirati. Imaš li još nekih pitanja možda? Si sve shvatio što smo danas prošli?
Ja: U redu onda. U buduće probaj dobro pročitati zadatak i više puta ako je potrebno i budi oprezan kada dohvaćaš
elemente uz pomoć indeksa.
OSVRT
Rad sa studentom u trajanju od otprilike 20 minuta je ostavio pozitivan dojam. Student je komunikativan što mi je
uvelike olakšalo razgovor koji je tekao glatko i bez prekida. Pažljivo je i sa interesom slušao i opširno odgovarao na sva
postavljena pitanja. Veoma sam zadovoljna njegovim poznavanjem matematike, odnosno, poznavanjem matrica i
operacija nad matricama. Također, student je jako dobro upotrebljavao do sada stečeno znanje sintakse u Pythonu,
struktura podataka, poput lista, i osnovnih petlji kao što su for petlja i ugnježđena for petlja. Iz priloženog transkripta se
vidi da brzo shvaća i uči te da je sposoban odmah primijeniti novostečeno znanje na zadacima. Nije se ustručavao
postavljati pitanja i priznati da neki dio gradiva ne razumije. Smatram da je ovo vrlo važan aspekt poučavanja jer
kreiranjem sigurne atmosfere u razgovoru omogućavamo učeniku postavljanje i najjednostavnijih pitanja koja mogu
puno pomoći u razumijevanju složenijeg gradiva.
Najteži dio je bio započeti pojašnjavanje gradiva. Prije instrukcija nisam točno znala koliko je student upoznat s
programskim jezikom Python te koliko će vremena biti potrebno izdvojiti za pojašnjavanje same sintakse, a koliko za
logičko rješavanje zadataka s matricama. Zbog toga su se javile nedoumice oko težine zadataka koje sam namjeravala
zadati. Naposljetku, kretanje s lakšim i bazičnijim zadacima pokazalo se dobrim jer sam na taj način dobila bolji uvid u
studentovo predznanje. Ovim pristupom učeniku se mogu, ako je potrebno, dodatno pojasniti sve poteškoće u
osnovnom razumijevanju što će ga bolje pripremiti za složenije gradivo koje dolazi.
Drugi izazov bio je pratiti studentov tok misli i rješavanje zadataka. U samostalnom rješavanju zadatka, student je bio
brzoplet te je pokušao doći do rješenja što je brže moguće. Zbog toga je često griješio u sitnicama poput zaboravljanja
dvotočke ili zatvaranja zagrada. U ovoj situaciji raznim podpitanjima pokušala sam mu ukazati na moguću grešku i
navesti ga do točnog rješenja. Student je dobro reagirao na podpitanja. Usporio je i bolje razmislio o zadatku te na koncu
samostalno došao do konačnog rezultata. Ukratko,
razgovor je bio ugodan i produktivan. Uspijeli smo kvalitetno proći kroz svo gradivo i zadatke određene za taj termin.
Poznavanje matrica u programiranju izuzetno je bitno. Većina problema, bilo u fizici ili nekom drugom području, koji se
rješavaju numerički svode se upravo na rješavanje kompleksnih matrica. Stoga je bitno da se njihovo osnovno
poznavanje svlada već na početku studija.