Serijal tekstova: Zajedno naučimo Python (5. dio) – Iteracije

Pozdrav svima i dobro došli u još jedan Python tutorial. Ovoga puta neću napisati što trebate znati za ovaj tutorial, ali dovoljno je reći da svaki sljedeći donosi nešto novo i povezuje prethodna znanja.

Prošli smo put radili selekcije, odnosno grananje programa u ovisnosti o nekom uvjetu ili stanju u programu. Danas ćemo obraditi iteracije, koje nisu ništa kompliciranije, stoga zagrijte prste i krenimo s tipkanjem. 🙂

Što je uopće iteracija i čemu služi? Iteracija predstavlja dio programa koji možemo ponoviti određen broj puta. Na taj si način olakšavamo posao i nemamo potrebe pisati neki dio programa više puta. Ako vam je lakše, možete umjesto riječi iteracija reći i petlja.

Najjednostavniji primjer iteracije je onaj školski; napišite 5 rečenica „Nisam kriv!“. Iako je to relativno mali broj ponavljanja, nekima neće biti problem i napisat će pet redova i u svakom ispisati rečenicu s pomoću funkcije print(). Međutim što ako umjesto broja 5 piše broj 50? Naravno, možete se koristiti copy/paste metodom i brojiti redove, ali čemu se mučiti i filozofirati? Upravo zato upotrebljavamo iteracije. Postoji više iteracija a ja ću vam prikazati for i while iteraciju, odnosno iteraciju s brojačem (for) i iteraciju s uvjetom (while).

Prije nego što krenemo rješavati današnji „glavni zadatak“, hajde da na ovom prethodnom primjeru prikažem upotrebu iteracija. Prvo da vidimo kako bi to izgledalo s pomoću for iteracije:

for brojač in range(1,6):
print(brojač)

Na početku vidimo ključnu riječ for, koja nam objašnjava da se radi o iteraciji s brojačem. Nakon toga vidimo VARIJABLU brojač koja će poprimati vrijednosti iz funkcije range(). Unutar funkcije range() vidimo vrijednosti 1 i 6 odvojene zarezom. Ovdje treba napomenuti da je prva vrijednost početna, a druga završna, s tim da se ponavljanje izvršava do završne, a nju ne uključuje.

U ovom bi primjeru varijabla brojač u prvom koraku imala vrijednost 1 i zatim bi se s pomoću funkcije print() ispisao broj 1. Nakon toga se opet vraćamo na početak iteracije i varijabla ima vrijednost 2 te se opet to ispisuje. I tako sve do vrijednosti 6, gdje brojač dobiva upravo tu vrijednost. Budući da prema funkciji range() taj broj ne ulazi u interval, ne ulazi se u iteraciju, nego se izlazi van. I na taj način smo ispisali brojeve od 1 do 5.

Kod iteracija s uvjetom, odnosno iteracije while, obavezni smo sami napraviti brojač jer se u zaglavlju iteracije zapravo ispisuje uvjet, to jest, u ovom slučaju, je li naš brojač manji od 6, a to izgleda ovako:

 brojač = 1
while brojač < 6:
print(brojač)
brojač = brojač + 1

Za početak, prije same iteracije, moramo napraviti varijablu brojač u kojoj se nalazi naša početna vrijednost, u ovom slučaju to je broj 1. Nakon toga slijedi ulazak u iteraciju. Vidimo ključnu riječ while, koja označuje početak while iteracije, a nakon toga slijedi uvjet gdje se u slučaju ako je uvjet zadovoljen ulazi u iteraciju, a u suprotnome izlazi iz nje.

Pri prvom koraku iteracije vrijednost brojača je 1 i to je manje od 6, pa se ulazi u iteraciju i ispisuje vrijednost brojača. Nakon toga se brojaču povećava vrijednost za 1. Ovo je vrlo važno jer bi u protivnom vrijednost brojača ostala 1, tj. bila bi konstanta i u tom slučaju bi uvjet uvijek bio zadovoljen i petlja bi se stalno izvodila što nazivamo beskonačnom petljom. Ipak, ovdje smo povećali vrijednost varijable brojača koja se izvršava sve dok je brojač manji od 6. Kada vrijednost brojača dođe do broja 6, dolazimo do zaglavlja iteracije, ali uvjet nije ispunjen pa se zbog toga izlazi iz petlje.

NAPOMENA: ime varijable koje se ovdje upotrebljava kao ime brojača je brojač. Naravno, treba reći da je to proizvoljno, pa se u većini slučajeva za imena brojača koriste slova poput i, j, k i sl., na što ćete i naići ako malo pogledate na webu.

Ono što sada slijedi je malo kompliciraniji zadatak s for iteracijom, ali i s jednim novim pojmom, a to je skok. Skokovi su dijelovi programa koji ovisno o nekom stanju mogu skočiti na određeni dio koda odnosno programa. Pa recimo da imamo zadatak gdje unosimo 5 cijelih brojeva, a kao rezultat nam se ispiše zbroj samo pozitivnih cijelih brojeva. Ako se unese broj manji od nule, on se zanemaruje, dok se u slučaju unosa 0 prekida unos i ispisuje trenutačna suma pozitivnih cijelih brojeva.

Za rješavanje ovog zadatka trebamo dvije vrste skoka, a to su continue i break. Continue je vrsta skoka koji skače natrag na zaglavlje iteracije, a break prekida izvođenje iteracije.

Prvo što trebamo jest napraviti varijablu u koju ćemo spremiti sumu brojeva:

suma = 0

Nakon toga možemo napraviti for iteraciju za unos brojeva:

for i in range(0, 5):
broj = int(input(“Unesite cijeli broj: “))

Kako bismo zadovoljili uvjete, odnosno ignorirali brojeve manje od 0 ili prekinuli izvođenje iteracije u slučaju unosa 0, pišemo:

if broj < 0:
continue

if broj == 0:
break

I naravno, na kraj for iteracije moramo dodati da se suma pozitivnih cijelih brojeva poveća ako je unesen pozitivni cijeli broj:

suma = suma + broj

Kada smo to sve napravili i pokrenuli program, vidimo da se ne ispisuje suma. Da bi se ispisala, potrebno je izvan for iteracije dodati još ovaj dio koda:

print(“Suma pozitivnih brojeva je”, suma)

Na sljedećoj slici možete vidjeti kako bi to trebalo izgledati:

Python 05 - slika 1

Sada bi došao red na while iteraciju. Što ovog zadatka tiče, prikazao sam kako se koristiti brojačem u slučaju prebrojavanja elemenata ako ne znamo koliko će ih biti. Program računa aritmetičku sredinu unesenih brojeva, a iteracija se prekida u slučaju unosa 0.

Za početak se naprave dvije varijable: brojac i suma. Varijabla brojac će brojiti koliko je brojeva uneseno odnosno za svaki uneseni broj će se povećati za 1. Sukladno s tim, suma će se povećavati za uneseni broj. Pošto se unese nula, iteracija se prekida i zatim se vrlo lako iz sume i brojaca izračuna aritmetička sredina.

Ono što sam dodao jest mali okidač radi sigurnosti. Ako se kao prvi unos javi 0, iteracija se prekida. Budući da se ne može dijeliti s 0, aritmetička sredina se stavlja na 0 i tako se izbjegava pogreška.

Program i kȏd možete vidjeti u nastavku:

Python 05 - slika 2

Postoji još jedna stvar koju nisam spomenuo, a zapravo je vrlo jednostavna. Zove se ugniježđena petlja. Radi se o petlji unutar petlje, a najlakše ćemo to vidjeti kod tablice množenja.

Za početak napravimo nekakav naslov programa:

print(“Tablica množenja do 100”)
print(“———————–“)

Nakon toga slijedi ispis zaglavlja, odnosno brojeva od 1 do 10:

for broj in range(1,11):
print(“{:5}”.format(broj), end=””)
print()

Ono što je tu novo je end=””. Radi se o tome da se unutar petlje s „običnom“ print() funkcijom za svaki ispis odlazi u novi red. Međutim upravo napisanim kodom se ne prelazi u novi red, nego se nastavlja u istome. Zbog toga se nakon izlaska iz petlje „ručno“ odlazi u novi red.

Sad trebamo nekako odvojiti to zaglavlje od tijela tablice i to ćemo učiniti dodavanjem razmaka i crtica između zaglavlja i tijela tablice:

for crtica in range(1,11):
print(“{:3}{:2}”.format(“”,”–“), end=””)
print()

Vidimo da je način ispisa isti kao i zaglavlje. I sada, nakon ovoga, slijedi ispis tablice i ovdje prvi put susrećemo ugniježđenu petlju.

for red in range(1,11):
for stupac in range(1,11):
print(“{:5}”.format(red*stupac), end=””)
print()

Da pojasnimo što ovo radi. Kada prva iteracija krene, kreće od 1 i odmah ulazi u drugu iteraciju. U njoj se brojevi vrte od 1 do 10 dok je vrijednost varijable red iz prve iteracije nepromijenjena i ona je i dalje 1. Nakon toga se odlazi opet u vanjsku iteraciju, ali sada varijabla red (vanjska iteracija) poprima vrijednost 2. Opet se kreće u nutarnju iteraciju, i ona opet kreće od 1 do 10. I tako sve u krug dok vanjska iteracija ne dođe do 11, što zapravo znači da je došla do kraja i izlazi se iz iteracije.

Kȏd bi trebao izgledati ovako:

Python 05 - slika 3.1

 Nakon izvođenja program bi trebao izgledati ovako:

Python 05 - slika 3.2

Dobro provježbajte i naučite sve što je dosad obrađeno jer su selekcije i iteracije temelj svakoga programskog jezika i s pomoću njih je gotovo sve moguće napraviti. Stoga, priprema, pozor i gas do zadataka.

  1. Napišite program koji će od korisnika tražiti unos n brojeva, a ispisat će koliko je bilo uneseno neparnih brojeva i koliki je to postotak od ukupnoga broja unesenih brojeva. (Korisnik unosi broj n!)
  2. Napišite program koji će ispisati zbroj prvih 100 parnih brojeva. (PAZI! Prvih 100 parnih brojeva, a ne zbroj parnih brojeva do 100!)

U ovom tutorialu zadana su dva zadatka, ali probajte svaki od njih riješiti i s pomoću for i s pomoću while iteracije.

Do sljedećeg puta

Nikola

Click to rate this post!
[Total: 2 Average: 1]
VN:F [1.9.22_1171]
Stari sustav ocjenjivanja
Rating: 4.6/5 (15 votes cast)
Serijal tekstova: Zajedno naučimo Python (5. dio) - Iteracije, 4.6 out of 5 based on 15 ratings

You may also like...

18 komentara

  1. plav zmaj napisao:

    Pitanje,kada će ovaj tutorijal doći do kreiranja vlastitih objekata?ako već nije?

    • jurastublic napisao:

      Ovo je tutorijal za početnike u programiranju, tako da bi skakanje na objekte prije učenja najosnovnijih stvari bio čisti gubitak vremena i autora i čitatelja. Piton je odličan jezik za početnike, mislim da bi ga trebalo uvesti u škole.

  2. lazyMathematician napisao:

    Mrzim kada se kaže da je python odličan jezik za početnike. Stvara se dojam da je to jezik igračka koji nije za profesionalce već za početnike.

    Python je vrlo ozbiljan jezik, koji se aktivno razvija, koji ima odlične biblioteke, vrhunski web framework Django…

    Jedan od glavnih podržavatelja razvoja Pythona je Google, a to govori nešto. Ne samo da podržavaju razvoj već su i njihovi web sustavi dobrim dijelom građeni na pythonu.

    Autori pythona su jezik kreirali tako da sintaksa bude jasna i koncizna, ali nikako to nije jezik za početnike (ili samo za početnike). Zapravo da li uopće postoji jezik koji je za početnike? Mislim… od nečega moraš krenuti, ali da li postoji jezik na kojem počneš a onda ga prerasteš u nešto drugo?

    Sve što je obrađivano u ovih 5 serija python tutoriala nije ništa jednostavnije nego u hrpi drugih skriptnih jezika kao što su php, ruby, perl, lua itd. To su osnove koje su jednako lagane/teške u svim tim jezicima.

    This is just my two pennies.

    • 4ndY napisao:

      Ako je jezik odličan za početnike, kako ga to izuzima da je odličan i za profesionalce? Ne razumijem gdje se nameće ta tvrdnja? Ja koristim svakodnevno Python i ne osjećam se kao početnik u programiranju.

      Python jest praktičniji za učenje programiranja od recimo C-a jer skriva računalnu kompleksnost (tipa upravljanje memorijom ili kompajliranje u izvršni kod) i time ne opterećuje učenika tim dodatnim dimenzijama, a u odnosu na recimo Perl – ima puno manje mogućnosti da se neki izraz zapiše što također doprinosi jednostavnosti.
      PHP je neozbiljan jezik koji se iz verzije u verziju mijenja, stoga također nije dobar za učenje.

      Stoga Python u osnovnim postavkama jest dobar jezik za početnike, ali to ništa ne implicira o profesionalcima koji ga koriste. Jedino ako postoji profesionalac koji ne zna ni jedan drugi jezik pa se osjeća “povrijeđeno” što njegova ljubimca koriste i početnici.

      • lazyMathematician napisao:

        Čini mi se da nisi dovoljno pažljivo pročitao moj komentar. Python je jezik za profesionalce (kao i valjda svi ostali, skoro) a za početnike je jednako dobar kao i bilo koji drugi SKRIPTNI jezik, npr. php, ruby, lua, perl, …

        Budući da su svi navedeni jezici skriptni jezici niti jedan od njih ne zahtjeva složeno upravljanje memorijom niti kompajliranje u izvršni kod.

        Pokušat ću ti demonstrirati što mislim:

        Python:

        #!/usr/bin/python

        count = 0
        while (count < 9):
        print "The count is: ", count
        count = count + 1

        print "Good bye!"

        PHP:

        <?php

        $count = 0;
        while ($count

        Ruby:

        #!/usr/bin/ruby

        $count = 0
        while $count < 9 do
        puts("The count is = #$count" )
        $count = $count + 1
        end

        puts("Good bye!")

        Lua:

        local count = 0
        while count < 9 do
        print("The count is: " .. count)
        count = count + 1
        end

        print("Good bye!")

        Perl:

        #!/usr/bin/perl

        $count = 0;
        while ($count < 9) {
        print "The count is: $count";
        $count = $count + 1;
        }

        print "Good bye!";

        Kao što vidiš, semantika je svugdje identična a sintaktičke razlike su zapravo jako malene. Ista stvar vrijedi za apsolutno sve stvari koje netko tko uči programirati mora naučiti o jeziku kojeg koristi. Ista stvar vrijedi i za ostale jezične konstrukte, druge tipove petlji itd.

        Iako nisam obožavatelj PHP-a svakako ne možeš reći da je to neozbiljan jezik. Čak bi rekao, bez uvrede, da je to vrlo glupa izjava. PHP se mijenja iz verziju u verziju?? Da, PHP se nadograđuje i postaje sve moćniji i moćniji, no jezgra mu je ista i sve što je radilo u PHP-u verzije npr. 4 se prevede i pokrene sa zadnjom verzijom PHP interpretera. For, while petlje se nisu promijenile niti će se promijeniti.

        Rezime svega je da ono što se u kratkim lekcijama objašnjava početnicima je gotovo identično u svakom proceduralnom jeziku, a kada uzmemo samo podskup skriptnih jezika u koje python spada onda tu zapravo razlike niti nema. Python je za naučiti što je varijabla, kako nešto ispisati na stdout, kako iterirati kroz kolekcije itd. jednako lagan ili težak kao i bilo koji drugi SKRIPTNI jezik.

        • Zlatko napisao:

          tako je, mada nemam pojma o čemu pričate 🙂
          i gledano s moje tačke gledišta, svaki jezik je meni glup i na neki način zamršen, ali šta ćeš kad niko ništa pametnije nije izmislio. Ja volim automatizovane procese, ali šta ćeš kad mora da se piše do iznemoglosti, ako želiš da uradiš nešto što ne spada pod standarde.
          Svakako svaki jezik ima sličnosti (to sam do sad skontao) s drugim, i sa svakim jezikom može čuda-muda da se napravi. A dal je neki za početnike a drugi za amatere, mislim da ta podela nikako ne stoji i ne postoji.
          Dakle, u-či-ti, u-čiti i samo u-či-ti rekao je drug Tito.

          • Slamd64 napisao:

            Ako je tebi glup i zamrsen, napisi ti bolje ili nemoj gluposti pricati. Da bi se nesto automatizovalo iza toga mora stojati puno rucno unesenih naredbi. A to cesto nije dobro ako zelis nesto specificno uraditi, a to nije implementirano.
            Kazes tezak ti je programski jezik vise razine. Pogledaj asembler pa ces cijeniti sto je neko izmislio C, Python, Javu itd.
            To ti je isto kao sto francuzi kazu necemo mi uciti engleski jezik, jer je glup, nas francuski je bolji. A sta ako ti sutra zatreba taj jezik da mozes raditi odredjeni posao? O necemu sto ne znas bolje je sutiti.

            • Zlatko napisao:

              jel se razumes u programiranje i u javascript?

              • Slamd64 napisao:

                s obzirom da si sam rekao da nemas pojma o cemu se ovdje prica, bilo kakav dokaz je nepotreban. cim te ne interesuje sta je asembler i jezik visoke/niske razine.

          • lutherus napisao:

            Ma kako svaki jezik glup? Pa njemački je baš divan jezik. I japanski, kineski, hebrejski

        • 4ndY napisao:

          @lazyMathematician,

          Ako bolje pročitaš moj post, uvidjet ćeš da ja argumentiram zašto Python jest dobar za početnike i to kao odgovor na tvoje “Mrzim kada se kaže da je python odličan jezik za početnike.”

          Ok, tvrdim da su vjerojatno Ruby i Lua od nabrojanih dobri jezici za početnike. Nigdje nisam tvrdio da oni nisu dobri, no ovdje govorimo o Pythonu. Ne možeš sad okrenuti logiku i tvrditi da je tebi ok izjava “Python je odličan za početnike”, ako se uz tu izjavu doda “…kao i ostali skriptni jezici.” To bi bilo silovanje logike jer to nisi napisao. Napisao si: “Mrzim kada se kaže da je python odličan jezik za početnike.”

          Slažem se i općenito da su skriptni jezici bolji za početnike, ali također mislim da se Python ističe među njima. Možda su mu Lua i Ruby najbliže, ali oni imaju manje dokumentacije i slabiju zajednicu od Pythona, pa bih opet, da to mogu, odabrao Python da se recimo uči u školama.

          Perl nije dobar jer ima previše mogućnosti da se zapiše ista stvar što ne pridnosi jednostavnosti (to nije loše, ali nije dobro za početnike jer će ostati zbunjeni dok ne nauče sve zapise). I dalje tvrdim da je PHP neozbiljan pa makar godinama radio s njime. PHP5 nije čak ni u osnovnim funkcijama kompatibilan s četvorkom (!), tako da ne možeš svaki PHP4 kod pokrenuti s PHP5 (vidi http://www.php.net/manual/en/migration5.incompatible.php ). Mogu nabrojati još milijardu i jedan razlog što PHP radi posve krivo, srećom sve to već piše na netu ( https://www.google.hr/search?q=why+php+is+bad ).

          Kad daješ odgovor na tako neko široko pitanje kao “je li neki jezik prilagođen za početnike ili ne”, nećeš uzeti jednostavnost while-petlje kao jedini kriterij, već sve što početniku može biti relevantno. Stoga ne vidim što si zapravo pokazao ovim iscrpnim popisom while-petlji po jezicima?

          Tvrdnju da su skriptni jezici podskup proceduralnih ne znam kako bih komentirao… Recimo Python ili Lua vrlo su pogodni i za učenje drugih paradigmi, a ne samo imperativnih.

          • lazyMathematician napisao:

            Evo pročitao sam opet tvoj komentar i tvoji argumenti mi se opet čine nedovoljno dobrima.

            “Ok, tvrdim da su vjerojatno Ruby i Lua od nabrojanih dobri jezici za početnike…” Ja ne tvrdim da su samo oni, već svi (možda ne baš svi ali velika većina) skriptni jezici jednako pogodni (ili nepogodni) za početnike kao i python.

            “Možda su mu Lua i Ruby najbliže, ali oni imaju manje dokumentacije i slabiju zajednicu od Pythona, pa bih opet, da to mogu, odabrao Python da se recimo uči u školama…” Imaju poprilično dobru dokumentaciju i zajednicu. Ne kao python ali poprilično dobru. Za nekoga tko uči programirati (o njima je inače ovdje riječ) i više nego dovoljno. Ne samo za početnike već i za profesionalce dokumentacija i zajednica su poprilično dobre.

            “Perl nije dobar jer ima previše mogućnosti da se zapiše ista stvar što ne pridnosi jednostavnosti (to nije loše, ali nije dobro za početnike jer će ostati zbunjeni dok ne nauče sve zapise)…” Ovo stoji, to jest osobina Perl-a. Ali početnik ne mora filozofirati i pisati nekom “bolesnom” sintaksom već treba koristiti osnovnu, C-ovsku sintaksu i tada su razlike u sintaksi s većinom ostalih jezika minorne. Dokumentacija i zajednica su također odlične.

            Ali da sad ne vodimo polemiku oko svakog jezika posebno. Ove koje sam naveo su slučajno izabrani, a tvrdim da to vrijedi za većinu drugih jezika.

            “Kad daješ odgovor na tako neko široko pitanje kao “je li neki jezik prilagođen za početnike ili ne”, nećeš uzeti jednostavnost while-petlje kao jedini kriterij, već sve što početniku može biti relevantno. Stoga ne vidim što si zapravo pokazao ovim iscrpnim popisom while-petlji po jezicima?…” Pa najbolje da ću ti sada raspisati sve moguće primjere za svaki jezik!! Ipak se tu oslanjam malo na tvoju inteligenciju i na to da češ uvidjeti što primjer pokušava pokazati. Sam si uzmi druge primjere pa malo usporedi kako bi se to isto napisalo u nekom drugom jeziku. Ili još bolje probaj mi naći samo jedan primjer koji se uči u osnovama programiranja a da je u pythonu lakši nego u nekom drugom skriptnom jeziku. I nemoj sad miješati zajednicu i takve stvari u to jer početnik koji uči iteracije u nekom jeziu sigurno nije aktivan na newsgrupama, IRC-ovima, forumima i sl. vezano za te iteracije.

            “Tvrdnju da su skriptni jezici podskup proceduralnih ne znam kako bih komentirao… Recimo Python ili Lua vrlo su pogodni i za učenje drugih paradigmi, a ne samo imperativnih…” Ajde… potrudi se i komentiraj! Što hočeš reći s time? Izgleda da ti nije jasno pa da ti pojasnim što je pisac htio reći… ono što svi, ali svi, početnici u programiranju uče jest proceduralna paradigma. A jezici koji ju implementiraju nisu samo skriptni već su tu i npr. C koji si uzeo za primjer. Stoga ako razmatramo samo dio jezika (podskup) u kojima se može raditi ovo što se uči početnike (skriptni jezici), tada sve prednosti koje ima python ima i svaki drugi skriptni jezik. A pod tim prednostima sam mislio na one koje si ti naveo, brigu o memoriji ili kompajliranju u izvršni kod. To što ti u Pythonu možeš i funkcijsku paradigmu koristiti to nije uopće dio ove priče i to nije nešto što je za početnike.

            Tvrdnja da je neki jezik neozbiljan, a pogotovo PHP za kojeg se čak može doći do informacija da je 80% web-a izgrađeno na njemu, je neozbiljna. Vjerojatno najveći web sustav na svijetu, Facebook, je izgrađen upravo na PHP-u pa malo razmisli.

            Uglavnom, iznio sam svoje mišljenje koje sam argumentirao, mislim, poprilično dobro. I to je sve od mene, jer mi se čini da si malo previše raspoložen sa svađu, a to mi se ne da.

            Uživaj!

    • jurastublic napisao:

      @lazyMathematician: Nisam ni rekao da nije za profiće. Ali svakako je lakše te lekcije objasniti početniku pomoću pitona nego asemblera ili c++. Iskreno, mislim da je i obični c dobar za početnike.

      • lazyMathematician napisao:

        Assembler ili c++ svakako nisu dobar primjer za usporedbu. Ja sam u svojem komentaru referencirao skriptne jezike. U mom odgovoru @4ndY sam i detaljno obrazložio i argumentirao. Sve stvari koje programer početnik uči su ednko teške i lagane u bilo kojem jeziku.

        Ja sam učio programirati u C-u i mislim da je to zapravo najbolja stvar za učenje jer je to jezik koji je dovoljno “visoko” (high level language) da se shvate sve osnovne stvari programiranja a opet je i dovoljno “nisko” (low level language) da odmah u startu vidiš kako neke stvari rade ispod haube što ti znatno pomaže kasnije kada pređeš na neki objektno orijentirani jezik i počneš koristiti neke ugrađene strukture i funkcije da znaš kako one zapravo u pozadini rade i koja struktura je pogodnija za koristiti u određenom trenutku. Npr. u javi i c#-u imamo strukture koje predstavljaju stabla, liste, dvostruko povezane liste, stogove, redove… moje znanje C-a mi je jako puno pomoglo da ne koristim npr. liste za neke operacije gdje mogu iskoristiti klasična polja (arrayeve) iako objekti liste imaju funkcije koje mi znatno olakšavaju rad (za ubacivanje, izbacivanje elementa ne moram brinuti o tome gdje se taj element konkretno nalazi u listi, tj. na kojem je indeksu što moram s poljima).
        Isto tako, naučiš razmišljati o tipovima vrijednosti koje spremaš u varijable što puno pomaže kasnije ako programiraš u npr. Pythonu ili PHP-u kada su mnogi bugovi napravljeni zbog neočekivanih dinamičkih pretvaranja tipova varijabli.

        No, kao što sam rekao, što su varijable, što su petlje, kako napraviti nekakvo preračunavanje itd. svi skriptni jezici su jednako teški/lagani dok kompajlirani jezici poput C-a, Java-e, C#-a i sl. su samo malčice teži jer moraš malko više stvari upogoniti da bi napisao obični “hello world” program. Npr. Moraš imati jednu osnovnu klasu koja sadrži statičku metodu main() od kuda program kreće.

        Svjestan sam da mišljenje kako je upravo python najbolji za početnike ne prevladava samo u ovoj temi već je to opće poznata stvar. Ja sam samo htio obrazložiti zašto ta argumentacija zapravo i nema pravih temelja.

        Inače, drago mi je da se i na ovom portalu pojavljuju tekstovi koji pomožu ekipi da krene s programiranjem, stoga palac gore za trud.

        Kada budu naprednije teme ukoliko je potrebno voljan sam pomoći.

        LP

        • jurastublic napisao:

          @lazyMathematician: Da pažljivije čitaš, vidio bi da ni ja ni @4ndy nismo napisali da je piton najbolji za početnike. To si ti sam napisao i onda dalje pobijaš vlastite tvrdnje koje drugome pripisuješ. Assembler i c++ su također programski jezici. Dapače, za neke je smjerove programiranja najbolje početi s assemblerom (embedded, …). C++ je odavno uveden u škole i zato sam ga spomenuo, tako da ja osobno nisam mislio samo na skriptne jezike. Ja samo rekoh da je piton općenito odličan za početnike. Što se svega ostalog što si napisao tiče, s 99% se slažem, ali ja sam samo amater pa tebi nije ni bitno slažem li se. A za kojih 50-tak godina, mogli bi svi ti jezici polako i pasti u zaborav ako onaj tip Hawkins uspije nešto napraviti s hijerarhijskim temporalnim memorijama. Ne znam da li da mu držim fige da uspije ili da ne uspije. 🙂

          • lazyMathematician napisao:

            “…ali ja sam samo amater pa tebi nije ni bitno slažem li se” !? Ja zaista ne znam da li si ti amater niti to ima utjecaja na moje mišljenje. Htio sam pridonijeti konstruktivnoj raspravi samo, tako da nema nikakve zle namjere u mojim komentarima.

            Ali nekako i dalje tvoja usporedba sa assemblerom mi nije jasna ovdje. Kako je krenulo počet ćemo python uspoređivati sa binarnim strojnim jezikom i pikanjem žica z rupe u rupu kako bi prespojili vod struje. Ako uspoređuješ python s drugim jezicima i želiš reći kako je jednostavniji onda ga treba uspoređivati s jezicima koji su u istoj klasi. I @4ndY je gore bacio usporedbu sa C-om. WTF?

  3. lutherus napisao:

    Čitam ove komentare i mogu reći samo jedno.
    Borrrrrrrrrrrrrringgggggggggggggggggg.