Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ponavljanje main funkcije

[es] :: C/C++ programiranje :: Ponavljanje main funkcije

Strane: < .. 1 2 3 4

[ Pregleda: 10293 | Odgovora: 61 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Ponavljanje main funkcije31.10.2012. u 21:50 - pre 139 meseci
Citat:
kosta90s: Zato sto se upotrebom naredbe break narusava strukturiranost koda.

goto naredba se ne koristi zato što se ne za kako je program došao do neke linije (što rezultira smanjenom čitljivošću koda), što sa break naredbom nije slučaj. Prvi put čujem da se break naredba izbegava.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Ponavljanje main funkcije31.10.2012. u 22:09 - pre 139 meseci
Boyka,

to što ti radiš je ispis niza u obrnutom redosledu, a ne obrtanje niza. Rezultat obrtanja niza je niz koji ima isti sadržaj, samo u obrnutom redosledu.

Recimo, ako si imao niz n dužine 3 sa članovima n[0]=2, n[1]=7 i n[2]=5, onda rezultat treba da bude niz k iste dužine, kod koga bi bilo k[0]=5, k[1]=7 i k[2]=2. Ti elementi ne moraju uopšte da se ispisuju, već da se formira taj novi niz ili da stari dobija takav sadržaj. Nakon toga, ako hoćeš možeš i da ih ispišeš.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kosta90s
Freelancer programmer
Srbija

Član broj: 306289
Poruke: 27
212.178.224.*



+3 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 06:22 - pre 139 meseci
Citat:
Nedeljko:
Citat:
kosta90s: Zato sto se upotrebom naredbe break narusava strukturiranost koda.

goto naredba se ne koristi zato što se ne za kako je program došao do neke linije (što rezultira smanjenom čitljivošću koda), što sa break naredbom nije slučaj. Prvi put čujem da se break naredba izbegava.



poincare.matf.bg.ac.rs/~filip/p1i/p1.pdf

106 strana

Citat:
Koriscenjem naredbe break se narusava strukturiranost koda, te moze da
ugrozi rezonovanje o njemu. Kod koji koristi naredbu break uvek se moze
napisati i bez nje, medutim koriscenje naredbe break moze da poboljsa citljivost.



62 strana u pdf (61 na strani)

http://www.singipedia.com/atta...chmentid=2640&d=1316604339

Citat:
Naredbe break i continue u programima treba koristiti samo kada su zaista neophodne, jer narušavaju strukturiranost programa.



Secam se i predavanja kad je profa pominjao da break treba izbegavati. Naravno, u switch naredbi je OK koristiiti break.

Naredba goto se izbegava zbog spageti koda, tj kao sto si rekao, smanjuje citljivost.


[Ovu poruku je menjao kosta90s dana 01.11.2012. u 07:37 GMT+1]

[Ovu poruku je menjao kosta90s dana 01.11.2012. u 07:44 GMT+1]
 
Odgovor na temu

Boyka
BPS

Član broj: 287185
Poruke: 338
*.dynamic.isp.telekom.rs.



+33 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 08:41 - pre 139 meseci
Citat:
Nedeljko:
Boyka,

to što ti radiš je ispis niza u obrnutom redosledu, a ne obrtanje niza. Rezultat obrtanja niza je niz koji ima isti sadržaj, samo u obrnutom redosledu.

Recimo, ako si imao niz n dužine 3 sa članovima n[0]=2, n[1]=7 i n[2]=5, onda rezultat treba da bude niz k iste dužine, kod koga bi bilo k[0]=5, k[1]=7 i k[2]=2. Ti elementi ne moraju uopšte da se ispisuju, već da se formira taj novi niz ili da stari dobija takav sadržaj. Nakon toga, ako hoćeš možeš i da ih ispišeš.


aha nisam razumeo, pa to je jos lakse..
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 09:10 - pre 139 meseci
kosta90s

Nemoj da se ljutiš, ali Univerzitet Singidunum nije nikakav autoritet nikome. Za goto naredbu postoji čuveni članak o tome zašto je opsana i odgovor Donalda Knuta na to situacijama gde goto povećava čitljivost koda. U tom članku je argumentovano zbog čega goto smanjuje čitljivost koda i to je razlog koji sam naveo. Taj razlog otpada kod break naredbe, a drugi razumni razlozi nisu navedeni.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kosta90s
Freelancer programmer
Srbija

Član broj: 306289
Poruke: 27
212.178.224.*



+3 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 10:00 - pre 139 meseci
Ne studiram ni na jednom od ova dva faxa(Singidunum, Matematicki ), tako da necu ulaziti u to kakav je kvalitet nastave na tim fakultetima (uostalom, drzava stoji iza svake diplome).Nemam razloga da se ljutim :) Student sam jedne Visoke skole u vlasnistvu drzave. Postoji problem kod koriscenja break-a jer npr ako imas dugacku petlju i koristis break, postoji mogucnost da jedan deo koda koji si zeleo da se izvrsi , ne izvrsi, jer si greskom stavio ispod break-a.
Pogotovo je to vidljivo ako se iz petlje izlazi na vise mesta.

Uostalom mozes da proguglas "why not to use break statement"

P.S. Nadam se da se ne ljutis. ;) Ti imas jedna, a ja druga saznanja, tehnike.

[Ovu poruku je menjao kosta90s dana 01.11.2012. u 11:33 GMT+1]
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 10:21 - pre 139 meseci
Vrlo dobar odgovor, upravo sa prvog Google searcha:
Citat:
Dogmatic adherence to strict guidelines sometimes does preclude the most elegant solutions. "Rules of Thumb" are not "Laws" for a reason.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 10:29 - pre 139 meseci
Citat:
maksvel: Vrlo dobar odgovor, upravo sa prvog Google searcha:


+1.
Suvise puta sam video ljude da se vise trude da zadovolje formu nego da funkcionalno rese problem.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 10:30 - pre 139 meseci
Malo mi je čudna ta logika, "X ne valja, jer ako se pogrešno koristi onda dolazi do neželjenih rezultata". Break instrukcija nije ljuta, senjor, godinama je koristim i ne smeta mi.
 
Odgovor na temu

kosta90s
Freelancer programmer
Srbija

Član broj: 306289
Poruke: 27
212.178.224.*



+3 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 10:41 - pre 139 meseci
Zasto bi nekom smetao kod koji je pun goto naredbi, ako taj kod koji je napisan radi?
Zasto je zabranjeno da vozim 120 km na sat tamo gde je ogranicenje 60, ako znam da necu nikog ubiti?

Stos je u tome da se sanse za gresku smanje. Zato i postoje neka pravila...


[Ovu poruku je menjao kosta90s dana 01.11.2012. u 11:51 GMT+1]
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 10:48 - pre 139 meseci
Citat:
kosta90s: Postoji problem kod koriscenja break-a jer npr ako imas dugacku petlju i koristis break, postoji mogucnost da jedan deo koda koji si zeleo da se izvrsi , ne izvrsi, jer si greskom stavio ispod break-a.


Tim rezonom, nista nije dobro koristiti :)
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 10:53 - pre 139 meseci
Problem nije kad kompajler čita kod, nego kad ga čita čovek. Drugi čovek mora da potroši nepotrebno mnogo vremena da se snađe u kodu. Čak i onaj ko je pisao kod posle dva meseca više ne može da ga čita tako lako, kao što ga je čitao onda kad je napisan. Proživeo sam to, i verovatno svaki programer to mora da proživi da bi shvatio poentu. U ozbiljnom projektima isplati se da potrošiš malo više vremena prilikom pisanja koda tako da učiniš kod čitljivijim, i lakšim za izmene. Izmene su neumitne. Ovo je bila opšta priča koja nema veze sa break instrukcijom.

Špageti kodovi pravljeni sa goto skokovima su stvar prošlosti, Fortrana i Cobola, i vremena "tvrdih muškaraca". Niko više tako ne programira. Povremeni goto tu i tamo neće pokvariti kod, a može čak i da doprinese čitljivosti. E sad, break instrukcija je još korisnija od goto instrukcije, i lakša za praćenje, i break, bar po meni, ne treba izbegavati.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
*.dip.t-dialin.net.



+7173 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 10:53 - pre 139 meseci
Smetace mu ako bude morao da radi na njemu, zato sto je kod pun goto naredbi manje citljiv.

A gde je kod manje citljiv, to povecava sanse da osoba koja bude radila na njemu u buducnosti nece razumeti sta se zaista desava.

To povlaci neke druge posledice, koje opet ne zelis u svom softverskom proizvodu. Nece se nista desiti ako koristis goto komande odjednom, na kraju krajeva - u C/C++ mozes da pises kod tako da ga niko drugi osim tebe nece razumeti, pa ni to nije "zabranjeno" :-) Samo nije dobra praksa.

Problem sa break naredbom je sasvim drugaciji - zapravo, nije problem sa break naredbom uopste vec sa potencijalnim korisnicima iste koji ne razumeju potpuno sve implikacije break/continue komandi na kod u kome ce se potencijalno nalaziti. Ali to se da resiti nekim dobrim kursom programiranja.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Boyka
BPS

Član broj: 287185
Poruke: 338
*.dynamic.isp.telekom.rs.



+33 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 11:22 - pre 139 meseci
Citat:
kosta90s:
Ne studiram ni na jednom od ova dva faxa(Singidunum, Matematicki ), tako da necu ulaziti u to kakav je kvalitet nastave na tim fakultetima (uostalom, drzava stoji iza svake diplome).Nemam razloga da se ljutim :) Student sam jedne Visoke skole u vlasnistvu drzave. Postoji problem kod koriscenja break-a jer npr ako imas dugacku petlju i koristis break, postoji mogucnost da jedan deo koda koji si zeleo da se izvrsi , ne izvrsi, jer si greskom stavio ispod break-a.
Pogotovo je to vidljivo ako se iz petlje izlazi na vise mesta.

Uostalom mozes da proguglas "why not to use break statement"

P.S. Nadam se da se ne ljutis. ;) Ti imas jedna, a ja druga saznanja, tehnike.

[Ovu poruku je menjao kosta90s dana 01.11.2012. u 11:33 GMT+1]


Visoka Poslovna? pitam, mozda si mi kolega lol
 
Odgovor na temu

kosta90s
Freelancer programmer
Srbija

Član broj: 306289
Poruke: 27
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 14:09 - pre 139 meseci
Citat:
Visoka Poslovna? pitam, mozda si mi kolega lol

Nije u pitanju Visoka Poslovna. ;)
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 16:10 - pre 139 meseci
@kosta90s, break nije nikakav bauk i treba ga koristiti. Evo primera pisanog slobodnijom sintaksom cisto da svi mogu da razumeju o cemu pisem:
Code (csharp):

List<Control> AllControls = Page.GetAllControls().ToList();
WantedControl result = null;
foreach(Control currentControl in AllControls)
{
     if(currentControl is WantedControl)
     {
          result = currentControl;
          break;
     }
}
 


Ovde seces foreach petlju cim ti nadje kontrolu zeljenog tipa jer nema potrebe da se dalje vrsi pretraga ako ti treba samo prvi element koji ispunjava uslov.

Obrnuto, bez break, morao bi cak da se postaras da ne dodje do sledeceg dodeljivanja ako ti treba samo prvi rezultat. Pritom tako pisan kod bi po meni bio za nijansu necitljiviji.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 18:01 - pre 139 meseci
Citat:
kosta90s: Uostalom mozes da proguglas "why not to use break statement"


Evo, proguglao sam i našao ovo na stackoverflow-u (koga inače cenim):

http://stackoverflow.com/quest...ice-to-use-break-in-a-for-loop

Neko je pitao i svi su se složili da nema ničeg lošeg u korišćenju break naredbe.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kosta90s
Freelancer programmer
Srbija

Član broj: 306289
Poruke: 27
212.178.224.*



+3 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 20:17 - pre 139 meseci
Citat:
plague:
@kosta90s, break nije nikakav bauk i treba ga koristiti. Evo primera pisanog slobodnijom sintaksom cisto da svi mogu da razumeju o cemu pisem:
Code (csharp):

List<Control> AllControls = Page.GetAllControls().ToList();
WantedControl result = null;
foreach(Control currentControl in AllControls)
{
     if(currentControl is WantedControl)
     {
          result = currentControl;
          break;
     }
}
 


Ovde seces foreach petlju cim ti nadje kontrolu zeljenog tipa jer nema potrebe da se dalje vrsi pretraga ako ti treba samo prvi element koji ispunjava uslov.

Obrnuto, bez break, morao bi cak da se postaras da ne dodje do sledeceg dodeljivanja ako ti treba samo prvi rezultat. Pritom tako pisan kod bi po meni bio za nijansu necitljiviji.


Potpuno je meni jasna break naredba. Retko je upotrebljavam jer obicno nemam potrebe za njom.

Code (csharp):

List<Control> AllControls = Page.GetAllControls().ToList();
WantedControl result = null;
foreach(Control currentControl in AllControls)
{
     if(currentControl is WantedControl && result == null)
     {
          result = currentControl;
     }
}
 

Svestan sam da bi tvoj kod bio brzi jer ne bi morao da izlista sve kontrole.
Taj kod pretpostavljam (slabo poznajem c#) bi mogao drugacije da se napise, da se foreach zameni sa obicnom for ili while petljom,sto bi omogucilo izlazak iz petlje cim nadje element bez upotrebe break-a.

Mislim da smo skrenuli u dubok off.
Nek svako koristi ono sto njemu najvise odgovara i prija.

[Ovu poruku je menjao kosta90s dana 01.11.2012. u 21:29 GMT+1]
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.dynamic.sbb.rs.



+373 Profil

icon Re: Ponavljanje main funkcije01.11.2012. u 20:47 - pre 139 meseci
Naravno da moze, ali to ubrzo postaje ruzno jer ti treba resenje i za slucaj da ne postoji trazena kontrola. Uslov je da izadje cim nadje kontrolu.
Znaci bez break bi nekako ovako isao while:
Code (csharp):

int index = 0;
while(result == null && index < AllControls.Count)
{
     if(AllControls[index] is WantedControl)
          result = currentControl;
     index++;

}
 

Za for:
Code (csharp):

for(int index = 0; result == null && index < AllControls.Count; index++)
     if(AllControls[index] is WantedControl)
          result = currentControl;
 


Ne zna se koji je lepsi. :]
 
Odgovor na temu

peromalosutra
Ivan Rajkovic
Software engineer
Luxoft
Berlin

Član broj: 54774
Poruke: 871
*.stat.customer.blic.net.



+148 Profil

icon Re: Ponavljanje main funkcije02.11.2012. u 09:37 - pre 139 meseci
Malo off topica .. u php-u break prima parametar koji oznacava iz koliko konteksta treba da se iskoci. Korisno je ponekad, npr. za izlazak iz dvostruke petlje, ali generalno je uzas za pratiti. :)

 
Odgovor na temu

[es] :: C/C++ programiranje :: Ponavljanje main funkcije

Strane: < .. 1 2 3 4

[ Pregleda: 10293 | Odgovora: 61 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.