Programiranje

Pomoć oko zadatka s mature

Hazar sri 24.6.2020 13:53

Pozdrav,

 

vjerujem da je lagan zadatak, ali ne mogu skužiti, ne znam jesam li na dobro podforumu.

 

Koju će vrijednost imati varijabla t nakon izvođenja dijela programa?
t := 0;
za i := 1 do 4 činiti
{
    t := i;
   za j := 1 do i činiti
        t := t + 2 * i;

Dodinho sri 24.6.2020 14:14
Hazar kaže...

Pozdrav,

 

vjerujem da je lagan zadatak, ali ne mogu skužiti, ne znam jesam li na dobro podforumu.

 

Koju će vrijednost imati varijabla t nakon izvođenja dijela programa?
t := 0;
za i := 1 do 4 činiti
{
    t := i;
   za j := 1 do i činiti
        t := t + 2 * i;

 Ako uzmeš da se ovo "do 4" znači da se 4 ne uzima onda i odmah možeš na korak gdje je t=i=3 i ideš u unutarnju petlju gdje sada imaš brojač do 3 jer je i=3 što onda opet znači da brojač uključuje 1 i 2 (znači bez 3).

 

Po tome imaš:

 

t = 3 + 2 * 3 = 9 (za j =1)

t = 9 + 2*3 = 15 (za j=2)

 

i po tome ispada da je t=15

 

Prvo se radi unutarnja petlja pa ideš prema van, ali nema puno smisla raditi prije i=3 jer ti se t uvijek postavi u vrijednost i na početku vanjske varijable.

 

EDIT: ipak ispada da se 4 mora uzeti (čudna mi je ova sintaksa na hrvatskom) pa je t=36 u tom slučaju, ali princip je isti.

Ivan(4) sri 24.6.2020 14:34

Definitivno je 36. 

 

Imaš spoljnu for ("za") petlju koja ide od 1 do 4 i unutrašnju koja ide od 1 do trenutne vrednosti brojača spoljašnje petlje.

 

Svaki put kad ti se promeni "i" (tj brojač spoljašnje petlje), prvo se uradi t:=i, što ti automatski uništi sav prethodni rad, tako da je sve što se dešava za i=1, 2 i 3 nebitno, bitan je samo poslednji prolaz kroz petlju, kada je i=4.

 

Elem, za i = 4, prvo se dodeli t=4, a zatim se u unutrašnjoj petlji još četiri puta (for j = 1 to i) uradi t := t + 2*i, tj t se uveća za dvostruku vrednost i. A pošto je i sve to vreme jednako 4, onda je 2*i=8, tj t koje je na početku 4 se još četiri puta uveća za 8, što daje rezultat 36.

Dodinho sri 24.6.2020 14:55
CalvinRi kaže...

Meni je dolazilo 15, s tim da sam isao i < 4, nisam bio siguran da li je to <= ili <

 Imaš solidan argument za žalbu kada budu bile. U programiranju kada se uzima "do 4" misli se <4 i to znači da se 4 ne uključuje.

Ivan(4) sri 24.6.2020 16:38

Ako takav pseudokod nije standardan u nastavnom programu, onda je autor zadatka napravio poveći faul.

 

Inače, upotreba domaćeg izraza koji je potrebno prevesti na engleski da bi se precizno znalo o čemu se radi je besmislena.

CyberK sri 24.6.2020 21:27
Dodinho kaže...

 Imaš solidan argument za žalbu kada budu bile. U programiranju kada se uzima "do 4" misli se <4 i to znači da se 4 ne uključuje.

Cesto je u jezicima kao C/C++ i poljima gdje indeksi pocinju s 0, no onda je obicaj i da petlja krene od 0, a ne 1 kao ovdje.
Ali opcenito bas i nema nekog pravila, tako da i dalje ima valjan razlog za zalbu - trebalo je naglasit tipa i=1 do 4 ukljucivo ili nesto tako.

 

 

@Ivan(4) - "Inače, upotreba domaćeg izraza koji je potrebno prevesti na engleski da bi se precizno znalo o čemu se radi je besmislena."

Ovo je problem prijevoda programskog koda u pseudokod, a ne hrv vs eng. Na engleskom imas isti problem "for i:=1 to 4" - jel 4 ukljucen ili ne. Tako da tu ne pomaze ni prijevod na engleski, ni travari ni voda sa korita Ivanova...

Ivan(4) sri 24.6.2020 21:41

Nikada nisam naišao na programski jezik niti primer pseudokoda u kome for i:=1 to 4 ne uključuje 4, a verujem da je isto i sa maturantima. Stoga ovu konstrukciju ne smatram ni najmanje dvosmislenom.

ihush sri 24.6.2020 23:47

-zadatak više liči na birtijski trik.. :) tj klasičan 'problem' calculatora tj pravila

2+2*2= .. 6 ili 8.

po redosljedu, običan calc =8, po pravilima mat. operacija =6.

-kompajler-interpreter..  basic-pithon ili c i ovisno o opcijama možemo imati različite rezultate.

-zato se koriste zagrade koje eliminiraju nedoumice-dubioze dok pseudokod u ovom primjeru služi upravo tome.. tj ako su školski primjeri tad točan rezultat može biti 8 jer tako radi običan calc (kojeg imate u win, probajte u standard .. probajte u znanstvenom modu).

-pošto je ovo programski zadatak, petlja.. tad nisu primarno matematička pravila ta koja određuju što zapravo trebamo-želimo, tj nije stvar točnog rezultata nego brojač ima sasvim drugu namjenu u programiranju, npr dohvaćanje podatka a tad ne vrijedi matematičko pravilo više operacije nego ono što programer želi-treba.

 

-zato, kad god je potrebno, treba koristiti zagrade.

-pseudo kod ovisi o jeziku-cilju.. pa tako i čitanje-interpretacija.

 

kao dodatni problem za školski zadatak, ima beskorisnu-nepotrebnu liniju t=nešto prije j-petlje..

 

rekao bi da je ovo primjer lošeg primjera.. :) da ne ulazimo u programske petlje koje mogu biti s uvjetima kao while-whend-until s izlazom na dnu ili vrhu + exit u sredini ili kad možemo po potrebi odrediti drugi uper-lower bound matrice (uobičanjeno sve kreće od nulte-0 ali može od bilo koje vrijednosti, npr 1.. dok u fornextu može biti i step itd. itd..

CyberK čet 25.6.2020 00:21
Ivan(4) kaže...

Nikada nisam naišao na programski jezik niti primer pseudokoda u kome for i:=1 to 4 ne uključuje 4, a verujem da je isto i sa maturantima. Stoga ovu konstrukciju ne smatram ni najmanje dvosmislenom.

Ako si uglavnom radio u Javi ili C/C++, onda nemas '1 to 4' vec imas i<4 ili i<=4, moras eksplicitno definirat jel 4 ukljucen ili nije, nema nagadjanja.

A sto se tice ovog "Nikada nisam naišao na programski jezik", slican primjer bi bio Python:

for x in range(1,4)
  print(x)

 

Vjerovao ili ne, ali ovo ce ispisat

1

2

3

 

Mozda je vecini prirodnije da je 4 ukljuceno, ali meni to nije nedvosmisleno ako ja moram pretpostavljat sto je konvencija izmisljenog jezika (pseudokod).

Ivan(4) čet 25.6.2020 01:13

Mislim da nepotrebno razvodnjavamo priču. Za C-olike jezike znam, ali, kao što si pomenuo, tu nije 1 to 4, nego lepo piše uslov izlaska iz petlje: i<4, i<=4 ili nešto sasvim deseto (uslov uopšte ne mora biti na brojaču). Primer za Python je ok, ali to je opet neka druga sintaksa. Međutim, jezici koji koriste sintaksu for i:=1 to 4 (ili for i=1 to 4), kao što su Pascal i BASIC, kao i sav pseudokod koji sam ikad video a koji sadrži tako napisanu for naredbu, uključuju 1 i 4. Takođe, razni načini "nasilnog" prekida petlje koje pojedini jezici dozvoljavaju utiču na kontrolu toka, ali to ne znači da sama for naredba znači bilo šta drugačije nego inače.

CyberDemonVZ čet 25.6.2020 11:36
Ivan(4) kaže...

Nikada nisam naišao na programski jezik niti primer pseudokoda u kome for i:=1 to 4 ne uključuje 4, a verujem da je isto i sa maturantima. Stoga ovu konstrukciju ne smatram ni najmanje dvosmislenom.

 Ali ta konstrukcija je razvila razgovor od jedne cijene stranice na forumu, od ljudi kojima je programiranje posao. Mislim da to znači da je ipak dvosmislena.

 

Ako mu ne priznaju, nek se žali, navede ovaj primjer iz Pythona, mislim da ga neće odbiti.

Hazar pon 29.6.2020 18:16

Koju će vrijednost imati varijabla t nakon izvođenja sljedećega dijela programa?
t := 0;
za i := 1 do 4 činiti
   za j := 1 do i činiti
        t := t + 2 * i;

 

A možete li probat objasnit ovaj

 

Rješenje je 60

CalvinRi pon 29.6.2020 19:48
Hazar kaže...

Koju će vrijednost imati varijabla t nakon izvođenja sljedećega dijela programa?
t := 0;
za i := 1 do 4 činiti
   za j := 1 do i činiti
        t := t + 2 * i;

 

A možete li probat objasnit ovaj

 

Rješenje je 60

i=1

t = t + 2 * 1   (2)

 

i=2

t = t + 2 * 2   (6)

t = t + 2 * 2   (10)

 

i=3

t = t + 2 * 3   (16)

t = t + 2 * 3   (22)

t = t + 2 * 3   (28)

 

i=4

t = t + 2 * 4   (36)

t = t + 2 * 4   (44)

t = t + 2 * 4   (52)

t = t + 2 * 4   (60)

ihush pon 29.6.2020 22:18
Hazar kaže...

Koju će vrijednost imati varijabla t nakon izvođenja sljedećega dijela programa?
t := 0;
za i := 1 do 4 činiti
   za j := 1 do i činiti
        t := t + 2 * i;

 

A možete li probat objasnit ovaj

 

Rješenje je 60

 -ponovo 'isti' (tip) zadatka? .. i opet isti problem tj tumačenje redosljeda operacija (sporedno školsko pravilo, jer ovo je programiranje, programska pravila) tj zato postoje zagrade.

ili zašto izbjegavati zagrade kad upravo zagradama možemo eliminirati nejasnoću, tj neovisno što pravilo kaže da prvo ide viša mat.operacija, programski to nije kriterij i ne mora biti ono što program-petlja radi tj može biti linearno a to ovisi o želji programera-potrebi appsa, ne pravilu škole nego kompajler-interpretera..

-ponovo, izračunajte win-calcom u standardnom i u znanstvenom modu, dobit ćete dva različita (točna) rezultata.

-zagradama se eliminira drugo rješenje i tad imamo jedan točan odgovor.

 

npr 2+2*2 može biti bez zagrada i po pravilu se tad računa 2+2*2=2+(2*2) =2 +4 =6  .. ako napišemo (2+2)*2 tad je 4*2=8.

 

zašto izbjegavati zagrade? zar je smisao nejasnoća ili filozofiranje? .. zagrade treba koristiti, nisu bauk, nisu zabranjene, nisu višak.. + svaki pristojan-uredan programer dodatno strukturira kod, uvlačenje-poravnavanje.. zbog preglednosti-čitljivosti-razumljivosti.. a to je smisao zagrada, razumljivost tj eliminiranje različitog redosljeda od željenog. Zagrada na jednostavan način to eliminira i upravo zato se 'mora' koirstiti kao što se u kodu koriste i REMovi mada su samo opisni text i može se reći da 'nemaju veze' s programom.. imaju, to je važno, čitljivost, suprotno od nejasnoća.

 

što bi se strašnog desilo da piše t := t + (2*i) .. no tad nema 'filozoforanja'? Prgramer koji želi taj rezultat će upravo tako napisati sa zagradom, onaj tko želi filozofirati može, no tad može dobiti i dva (točna) različita rezultata.

CalvinRi uto 30.6.2020 10:32

Mislim da taj dio uopce nije sporan. Jedino sporno je bio uvjet izlaska iz petlje i to je jedino sta moze utjecati na konacni rezultat.

Zagrade nisu potrebne bile, po svim pravilima prvo ide mnozenje, tako da je rezultat tih ocekivanih 60. AKo neki programski jezik radi drukcije, onda treba zagrade. Ja razmisljam na c++ovski nacin. 

 

A to sta si napisao vezano za zagrade i dvosmislenost, ja sam uvijek za stavljanje (nepotrebnih) zagrada, ako doprinosi citljivosti koda, cak i kad ne utjece na rezultat. Iako za ovaj trivijalni primjer stvarno nije potrebno. 

 

ihush uto 30.6.2020 11:14
CalvinRi kaže...

..

 

A to sta si napisao vezano za zagrade i dvosmislenost, ja sam uvijek za stavljanje (nepotrebnih) zagrada, ako doprinosi citljivosti koda, cak i kad ne utjece na rezultat. Iako za ovaj trivijalni primjer stvarno nije potrebno. 

 

 -ono što vidim kao 'problem' je što se ovakav tip zadataka postavlja kao trik-pitanje, ne kao osnove programiranja, pravila-nedvosmislenost-urednost.. + pseudokod koji ovisi o interpretaciji tj programskom jeziku-kompajleru koji ga čita i prevodi ili izvršava.. školski je basic-python tj interpreter a c je compiler.. kompajler prvo prevede kod (čitav) pa tek tad pokrene app i tad taj način može prevesti po pravilima formulu tj dati rezultat koji očekujemo po školskim-matematičkim pravilima, tj kao da stavimo zagradu na umnožak .. koje je po pravilima višak (ali od viška glava ne boli).

-da se vratimo vremeplovom unazad, u vrijeme numeriranih linija koda, 10-20-30.. bilo bi jasnije što mi 'smeta'.. kod se može pisati svakako, može u više redova jedna naredba-formula, može u jednom redu više neovisnih npr odvojeno dvotočkom je identično kao novi red.. tj to je samo stvar kontrolnih znakova kako će ih tumačiti računalo-jezik tj interpreter-kompiler koji to prevodi u strojni.

 

ponovo, nema točno-netočnog calculatora i ako istu stvar tipkamo u win-calcu u standard modu, tad će računati kako unosimo, redosljedom, tad će prvo izračunati 2+2 jer je tim redoslejdom dobio unos, tj tad calculator ne zna da to nije kraj unosa i izbacuje trenutni rezultat operacije zbrajanja. U znanstvenom modu isti calc će dati drugi rezultat, po pravilima viša-niža operacija tj prvo će pomnožiti pa tek tad zbrojiti, tj tad čeka unos do naredbe 'izračunaj' dok u prvom slučaju svaka nardba (operacija) izbacuje-okida izračunaj naredbu sekvencijalno.

-tko može znati želi li programer rezultat po mat.pravilima ili ne? tj onaj tko piše može to napisati na način da je neovisno o interpretaciji programskog jezika ili moda-opcije rada kompajlera tj stavljanjem zagrada može upravo to eksplicitno naglasiti i tad nema nedoumica tj nema različitih mogućih rezultata ovisno o razlici jezika-kompajera.. a programiranje bi trebalo biti upravo takvo + učenje programiranja. To nije matematika i matematička pravila, nego programska, ovisna o platformi itd. (kao što je nama službeni SI sustav i mjerne jedinice, ne moraju biti, tj imperijalne usa-uk, kao i PCjevska birnarna baza u kapacitetu memorije koja nema 1K=1000 nego KiBi... 1024 tj drugi set pravila koji nije nužno identičan 'našim' pravilima mada je možda sličan pa i isti u većem dijelu.

 

-treba uredno-struktirirati, čitljivost-samoobjašnjivost koda.. tj smisao nije kafanski trik nego da dva programera na različitim stranama svijeta, jezicima, platformama mogu biti 'kompatibilni' tj kao u matematici, razumjeti se ''binarno'' :) i mada je po pravilima zagrada nepotrebna, to vrijedi samo za ljude koji pišu na papiru i koji moraju-mogu pročitati čitavu formulu jer je vide, dok računalo ne vidi nego čeka unos kao i cpu koji tad idla.

-kao btw, cjevovodi (dubina keša u cpu) upravo te međurezultate korisiti i izračunava unaprijed, prije nego su potrebni tj cpu čeka-idla i u tom čekanju izračunava moguće rezultate tj postoji mogućnost da je iduća nareba = (izračunaj rezultat) i tad je cpu uštedio vrijeme tj već ima izračunato i time ne gubi cikluse tj = brzina.. u slučaju da je to neka druga naredba tad se taj izračun odbacuje tj ostaje u kešu ovisno o veličini keša kao i sadržaj neke web stranice.. tj tako radi cpu, optimizacija itd.

 

-nisu to krivi-pogrešni rezultati, nego su oba točna tj ako koristimo zagrade tad upravo imamo nedvosmisleno jedan mogući odgovor, dok bez zagrada imamo dva moguća  tj ovisimo o pravilima koje kompajler-jezik koristi a to ne znamo jer je ovo pseudokod primjer tj školski zadatak programerske petlje.. banalni-jednostavan .. nepotreban jer ne računa ništa 'pametnog' ali tako se uči, tj školski primjer programiranja nije identičan šskolskom primjeru matematike-pravila možemo dodati ni pravopisa ili redosljeda u rečenici objekt-predikat-subjekt.. jer to nije pravopis-gramatika itd. mada možemo i ta pravila primijeniti tj kad želimo neko pravilo striktno, tad upravo tako i napišemo, zagradama.. tad je jasno i tad je jedan moguć odgovor.

 

-drugi dio problema je ubond-lo-bond tj ovisno o jeziku, može se definirati, može biti različito ili različita sintaxa.. 1 to 4 može biti <=4 (uključno) ili <4(isključno) tj 3, dok je 4 prekid.. + zato postoje i različiti tipovi petlji, do-loop-until-while tj s izlazom na vrhu-dnu, ovisno što programer želi-treba u tom trenutku a to nema veze s matematičkim-gramatičkim pravilima jer tad je jedino važno što programeru treba u appsu-algoritmu, ne pravilo kao redosljed operacija jer s tim nema veze. Kao što je moguća nedozvoljena vrijednost npr dijeljenje s nulom i tad programer hendla izuzetak, tj mora definirati takav slučaj (predvidjeti ga) mada od pentač-peča to ne stvara error-brake no u programskom jeziku se mora hendlati i tad nam je uzaludno što znamo da je dijeljenje  nulom nedozvoljeno. Moramo imati if-then on error tj predvidjeti i takvu mogućnost ili rezultat ili ćemo imati brake-bsod-bug. Pseudo kod jednostavno to ne definira, ne zna se.. a traži se 'točan' odgovor i koriste se matematička pravila koja nisu primarna za programiranje + specifičnosti svake platforme-jezika.

 

-zagarada to efikasno eliminira.. nije bauk, treba je koristiti pa i kao višak jer u ovakvom (pogotovo školskom primjeru) je taj višak poželjan, osim da zadamo upravo takav tip zadatka 'optimizacije' tj da izbacimo sve što je višak, čak i remove ako je to potrebno (ograničene memorije ponekih eproma i sl. gdje je svaki byte možda važan.. za današnja računala nevažno jer imaju dovoljno resursa-rama..). Kao da u autoškoli učimo sigurnu vožnju, osim kad učimo pretjecanje-uguravanje-prestrojavanje u gužvi i sl.. ili iznenadne situacije kao poledica i sl. tad su to suprotni primjeri suprotnog cilja od 'normalnog'. Normalan programski kod trpi bezbrojne zagrade i možemo istu stvar napisati npr

t=t+2*2 kao i sve staviti u zagrade .. t=(t+(2*2))

.. ne smeta, isto je.. ali tad znamo 100% što je programer (ne matematičar-nastavnik u školi) želio izračunati tj koji rezultat je 'točan' a o tome ovisi grananje-app.. kompajler će sam izbaciti višak dok će u sourcekodu to jasno-nedvosmisleno reći drugom programeru što se i na koji način računa u tom dijelu programa-algoritma.. dok sam za sebe nije važan tj ne znači baš ništa, kao da sad napišemo 2+3 ili 4342423 .. beskorisno, dobija smisao tek kad npr na kasi računamo koliko kuna treba platiti i tad 2+3=5 ima konkretnu svrhu, cijenu, kilažu ili nešto deseto, do tad je samo broj-zadatak koji služi 'mučenju' školaraca na 'besmislenim' primjerima (jer uvjek pitaju-njurgaju.. što će im to..) :)

CalvinRi uto 30.6.2020 20:58
ihush kaže...
CalvinRi kaže...

..

 

A to sta si napisao vezano za zagrade i dvosmislenost, ja sam uvijek za stavljanje (nepotrebnih) zagrada, ako doprinosi citljivosti koda, cak i kad ne utjece na rezultat. Iako za ovaj trivijalni primjer stvarno nije potrebno. 

 

 -ono što vidim kao 'problem' je što se ovakav tip zadataka postavlja kao trik-pitanje, ne kao osnove programiranja, pravila-nedvosmislenost-urednost.. + pseudokod koji ovisi o interpretaciji tj programskom jeziku-kompajleru koji ga čita i prevodi ili izvršava.. školski je basic-python tj interpreter a c je compiler.. kompajler prvo prevede kod (čitav) pa tek tad pokrene app i tad taj način može prevesti po pravilima formulu tj dati rezultat koji očekujemo po školskim-matematičkim pravilima, tj kao da stavimo zagradu na umnožak .. koje je po pravilima višak (ali od viška glava ne boli).

-da se vratimo vremeplovom unazad, u vrijeme numeriranih linija koda, 10-20-30.. bilo bi jasnije što mi 'smeta'.. kod se može pisati svakako, može u više redova jedna naredba-formula, može u jednom redu više neovisnih npr odvojeno dvotočkom je identično kao novi red.. tj to je samo stvar kontrolnih znakova kako će ih tumačiti računalo-jezik tj interpreter-kompiler koji to prevodi u strojni.

 

ponovo, nema točno-netočnog calculatora i ako istu stvar tipkamo u win-calcu u standard modu, tad će računati kako unosimo, redosljedom, tad će prvo izračunati 2+2 jer je tim redoslejdom dobio unos, tj tad calculator ne zna da to nije kraj unosa i izbacuje trenutni rezultat operacije zbrajanja. U znanstvenom modu isti calc će dati drugi rezultat, po pravilima viša-niža operacija tj prvo će pomnožiti pa tek tad zbrojiti, tj tad čeka unos do naredbe 'izračunaj' dok u prvom slučaju svaka nardba (operacija) izbacuje-okida izračunaj naredbu sekvencijalno.

-tko može znati želi li programer rezultat po mat.pravilima ili ne? tj onaj tko piše može to napisati na način da je neovisno o interpretaciji programskog jezika ili moda-opcije rada kompajlera tj stavljanjem zagrada može upravo to eksplicitno naglasiti i tad nema nedoumica tj nema različitih mogućih rezultata ovisno o razlici jezika-kompajera.. a programiranje bi trebalo biti upravo takvo + učenje programiranja. To nije matematika i matematička pravila, nego programska, ovisna o platformi itd. (kao što je nama službeni SI sustav i mjerne jedinice, ne moraju biti, tj imperijalne usa-uk, kao i PCjevska birnarna baza u kapacitetu memorije koja nema 1K=1000 nego KiBi... 1024 tj drugi set pravila koji nije nužno identičan 'našim' pravilima mada je možda sličan pa i isti u većem dijelu.

 

-treba uredno-struktirirati, čitljivost-samoobjašnjivost koda.. tj smisao nije kafanski trik nego da dva programera na različitim stranama svijeta, jezicima, platformama mogu biti 'kompatibilni' tj kao u matematici, razumjeti se ''binarno'' :) i mada je po pravilima zagrada nepotrebna, to vrijedi samo za ljude koji pišu na papiru i koji moraju-mogu pročitati čitavu formulu jer je vide, dok računalo ne vidi nego čeka unos kao i cpu koji tad idla.

-kao btw, cjevovodi (dubina keša u cpu) upravo te međurezultate korisiti i izračunava unaprijed, prije nego su potrebni tj cpu čeka-idla i u tom čekanju izračunava moguće rezultate tj postoji mogućnost da je iduća nareba = (izračunaj rezultat) i tad je cpu uštedio vrijeme tj već ima izračunato i time ne gubi cikluse tj = brzina.. u slučaju da je to neka druga naredba tad se taj izračun odbacuje tj ostaje u kešu ovisno o veličini keša kao i sadržaj neke web stranice.. tj tako radi cpu, optimizacija itd.

 

-nisu to krivi-pogrešni rezultati, nego su oba točna tj ako koristimo zagrade tad upravo imamo nedvosmisleno jedan mogući odgovor, dok bez zagrada imamo dva moguća  tj ovisimo o pravilima koje kompajler-jezik koristi a to ne znamo jer je ovo pseudokod primjer tj školski zadatak programerske petlje.. banalni-jednostavan .. nepotreban jer ne računa ništa 'pametnog' ali tako se uči, tj školski primjer programiranja nije identičan šskolskom primjeru matematike-pravila možemo dodati ni pravopisa ili redosljeda u rečenici objekt-predikat-subjekt.. jer to nije pravopis-gramatika itd. mada možemo i ta pravila primijeniti tj kad želimo neko pravilo striktno, tad upravo tako i napišemo, zagradama.. tad je jasno i tad je jedan moguć odgovor.

 

-drugi dio problema je ubond-lo-bond tj ovisno o jeziku, može se definirati, može biti različito ili različita sintaxa.. 1 to 4 može biti <=4 (uključno) ili <4(isključno) tj 3, dok je 4 prekid.. + zato postoje i različiti tipovi petlji, do-loop-until-while tj s izlazom na vrhu-dnu, ovisno što programer želi-treba u tom trenutku a to nema veze s matematičkim-gramatičkim pravilima jer tad je jedino važno što programeru treba u appsu-algoritmu, ne pravilo kao redosljed operacija jer s tim nema veze. Kao što je moguća nedozvoljena vrijednost npr dijeljenje s nulom i tad programer hendla izuzetak, tj mora definirati takav slučaj (predvidjeti ga) mada od pentač-peča to ne stvara error-brake no u programskom jeziku se mora hendlati i tad nam je uzaludno što znamo da je dijeljenje  nulom nedozvoljeno. Moramo imati if-then on error tj predvidjeti i takvu mogućnost ili rezultat ili ćemo imati brake-bsod-bug. Pseudo kod jednostavno to ne definira, ne zna se.. a traži se 'točan' odgovor i koriste se matematička pravila koja nisu primarna za programiranje + specifičnosti svake platforme-jezika.

 

-zagarada to efikasno eliminira.. nije bauk, treba je koristiti pa i kao višak jer u ovakvom (pogotovo školskom primjeru) je taj višak poželjan, osim da zadamo upravo takav tip zadatka 'optimizacije' tj da izbacimo sve što je višak, čak i remove ako je to potrebno (ograničene memorije ponekih eproma i sl. gdje je svaki byte možda važan.. za današnja računala nevažno jer imaju dovoljno resursa-rama..). Kao da u autoškoli učimo sigurnu vožnju, osim kad učimo pretjecanje-uguravanje-prestrojavanje u gužvi i sl.. ili iznenadne situacije kao poledica i sl. tad su to suprotni primjeri suprotnog cilja od 'normalnog'. Normalan programski kod trpi bezbrojne zagrade i možemo istu stvar napisati npr

t=t+2*2 kao i sve staviti u zagrade .. t=(t+(2*2))

.. ne smeta, isto je.. ali tad znamo 100% što je programer (ne matematičar-nastavnik u školi) želio izračunati tj koji rezultat je 'točan' a o tome ovisi grananje-app.. kompajler će sam izbaciti višak dok će u sourcekodu to jasno-nedvosmisleno reći drugom programeru što se i na koji način računa u tom dijelu programa-algoritma.. dok sam za sebe nije važan tj ne znači baš ništa, kao da sad napišemo 2+3 ili 4342423 .. beskorisno, dobija smisao tek kad npr na kasi računamo koliko kuna treba platiti i tad 2+3=5 ima konkretnu svrhu, cijenu, kilažu ili nešto deseto, do tad je samo broj-zadatak koji služi 'mučenju' školaraca na 'besmislenim' primjerima (jer uvjek pitaju-njurgaju.. što će im to..) :)

 legendo:)

Uspio si napisat teksta koliko ja u 5 godina forumiranja, u temi skoro pa nebitnoj (pocelo je kao trivijalni programerski zadatak, pa je preraslo u filozofiju, a mogli bi sad dalje o skolstvu, reformi, radu od kuce, koroni, ustasama i partizanima i tako...)

U svakom slucaju, procitah, i ne mogu rec da se ne slazem. Nemam sta dodat na ovo tvoje.