Može li informatika bez matematike?

gordana_SS

Gordana Sekulić-Štivčević

Sažetak

Posao sadašnjosti i budućnosti jest programiranje, stoga će dobri programeri brzo pronaći dobro plaćen posao. Većina programera voli i razumije matematiku. Moraju li programeri biti dobri matematičari? Koliko će nam znanje matematike olakšati rješavanje problemskih zadataka u programiranju?

Ključne riječi: programiranje, matematika, povijest, logičke pogreške.

Zavirimo u povijest

U prošlosti su matematičari dali velik doprinos razvoju računalstva. U nastavku ćemo se prisjetiti nekih matematičara.

Blaise Pascal

Blaise Pascal, francuski matematičar, fizičar i filozof, napravio je Pascalinu (prvi računalni stroj). Pascal je počeo raditi Pascalinu (aritmetički kalkulator koji je mogao zbrajati i oduzimati) kad je imao 19 godina kako bi pomogao svom ocu porezniku. Stroj je mogao raditi s brojevima do 9 999 999. Stroj je koristio dekadski brojevni sustav i nije bio dovoljno precizan pa je proizvodnja i prodaja prekinuta.

imageimage
Slika 1. Blaise Pascal                             Slika 2. Pascalina

Charles Babbage

Charles Babbage, engleski matematičar i filozof, tvorac je diferencijalnog i analitičkog stroja. Diferencijalni stroj mehaničko je računalo koje je dizajnirano za računanje polinomnih funkcija, ali se mogao koristiti i za aproksimaciju. Stroj nije dovršen za vrijeme Babbbageova života. U čast 200. godišnjice rođenja matematičara Londonski Muzej znanosti konstruirao je Diferencijalni stroj 2 koji je bio potpuno funkcionalan i ispisivao točno rješenje na 31 znamenku, što je tri puta više znamenaka nego što ispisuje današnji prosječan kalkulator.

Analitički je stroj radio s binarnim brojevnim sustavom i imao sastavne dijelove kao današnja računala (ulazno-izlaznu jedinicu, jedinicu za pohranjivanje podataka, centralnu jedinicu za obradu podataka – procesor, programski jezik).

imageimage
Slika 3. Charles Babbage               Slika 4. Babbageov stroj

Alan Turing

imageAlan Turing, britanski matematičar, kriptograf i teoretičar računarstva, smatra se ocem modernog računarstva. U vrijeme Drugog svjetskog rata sudjelovao je u izgradnji Colossusa, stroja koji je služio za dešifriranje poruka, a nakon rata proučavao je umjetnu inteligenciju.

Slika 5. Alan Turing

A kako je danas?

Vratimo se u sadašnjost i to na same početke učenja programiranja. Pri upoznavanju s novim programskim jezikom najveći problem učenicima predstavlja sintaksa programskog jezika. Kako bi počeli pisati programe, učenici moraju naučiti sintaksu programskog jezika, zapamtiti ključne riječi i pravila. No je li to najveći problem u programiranju? Nije. Programski će nas jezik upozoriti ako neispravno napišemo ključnu riječ. Obično su ključne riječi napisane u drugoj boji (npr. u Pythonu su to zelena, ljubičasta, crna i crvena boja). Možemo načiniti „šalabahter“ ili tablicu s popisom naredbi, funkcija i operatora te ju koristiti u početnom pisanju programa. U čemu je onda problem kod programiranja? Zašto je programiranje tako teško, ali i tako traženo?

Obično se kod početnika u programiranju, koji uspješno napišu program koji radi, dogodi euforija.

Pogledajmo nekoliko jednostavnih primjera.

Dijeljenje dva broja

Primjer 1. Napiši program koji će za dva učitana broja ispisati rezultat aritmetičkih operacija. Za rješavanje zadatka potrebno je poznavati naredbe za unos i ispis podataka te aritmetičke operatore (int, input, print, +, -, *, /).

imageSlika 6. Rješenje zadatka

Ako su ulazne vrijednosti argumenata 3 i 4, rezultat će biti kao na slici 7.

imageSlika 7. Ispis rezultata

Unesemo li argumente 4 i 0, dobit ćemo rezultat koji je prikazan na slici 8.

imageSlika 8. Ispis rezultata pri dijeljenju s 0

Program nas je porukom upozorio na grešku: dijeljenje s 0 nije dopušteno (ZeroDivisionError: division by zero).

Popravimo program da radi

Program ćemo popraviti tako što ćemo dodati ograničenje, odnosno ispitat ćemo je li djelitelj jednak 0. Ako jest, nećemo izvršiti operaciju dijeljenja.

imageSlika 9. Popravljen zadatak

Sada program radi za sve parove brojeva (unesene vrijednosti). U ovom primjeru olakšavajuća je okolnost što program ispisuje poruku o greški te ga lako možemo popraviti.

Pogledajmo sljedeći jednostavan primjer koji će ispisivati rezultate za sve ulazne vrijednosti bez upozorenja o greški, a neće dobro rješavati postavljeni zadatak.

Opseg trokuta

Primjer 2. Napiši program koji će zatražiti unos tri stranice trokuta te izračunati i ispisati opseg trokuta.

Formulu za računanje opsega trokuta znaju gotovo svi učenici prvog razreda srednje škole. Vjerojatno ova rečenica zvuči banalno, ali formulu za opseg i površinu kruga veliki broj učenika ne zna. Razlog je taj što i nakon završene gimnazije, kad se polaže matura iz više razine matematike , nije potrebno napamet znati spomenute formule. No vratimo se na naš zadatak.

image
Slika 10. Rješenje zadatka

image
image
image
Slika 11. Ispis rezultata

Upisali smo nekoliko primjera za dužinu stranica i program je izračunao opsege. Gotovo svi učenici „uspješno“ riješe zadatak te im nije jasno zašto rješenje nastavniku nije prihvatljivo. Kad ih se uputi da konstruiraju trokute s podacima iz primjera, postaje jasno da je prije računanja opsega potrebno ispitati postoji li trokut sa zadanim stranicama. I tu nastaje razočaranje u programiranje. Zapravo shvate da pisanje programa nije opušteno nizanje naredaba i da je potrebno puno razmišljati i promišljati.

Riješimo ispravno zadatak: prije računanja opsega trokuta trebamo ispitati je li zadovoljen uvjet da je svaka od stranica trokuta manja od zbroja druge dvije stranice.

image
Slika 12. Popravljen zadatak

Iz navedenog se postavlja pitanje jesmo li napretkom tehnologije i računala „oslobodili“ učenike od razmišljanja te ima li to koristi za njih? Trebaju li programeri poznavati matematiku?