cikal FOR na PASCAL!?
38 отговора
1215 прегледа
cikal FOR na PASCAL!?
to kvo izleze! ce stoinostra na broiaca sled izhod aot cikala NE E DEFINIRANA tocno!
primer:
FOR I:=1 TO 10 DO .... ;
sle dkato svarsi I moje da e 10 ili 11
pri BP7 e 10
pri DELPHI3 e 11
i koi znai dali i na tova moje da se razcita!?
EBASI I EZIKA!
primer:
FOR I:=1 TO 10 DO .... ;
sle dkato svarsi I moje da e 10 ili 11
pri BP7 e 10
pri DELPHI3 e 11
i koi znai dali i na tova moje da se razcita!?
EBASI I EZIKA!
Re: cikal FOR na PASCAL!?
i za novia standart na C99, a puk za C++ - tova otdavna ne e definirano.
Podobna "svoboda" pozwoljawa na kompilatora da generira po-dobur kod.
tirulirutatuutuu
Podobna "svoboda" pozwoljawa na kompilatora da generira po-dobur kod.
tirulirutatuutuu
Re: cikal FOR na PASCAL!?
ti oshte malko i she iskash da go znaesh kolko e i vytre v cikyla... 
Re: cikal FOR na PASCAL!?
loso!
to iasno ce e za po-optimalno!
ama vse si misla ce komputera e "cifrova tehnika" i pri nego nedefinirani nesta ne trebva da ima!
osven tova stiga s taia optimizacia! to se prekaliava vece! stom sam resil da pisa nesto na ezik ot visoko nivo znaci ne mi trebva da e optimalno!
ili po skoro malkoto ucastaci kadeto trebav da bade sa si gi napisa na assembler!
to iasno ce e za po-optimalno!
ama vse si misla ce komputera e "cifrova tehnika" i pri nego nedefinirani nesta ne trebva da ima!
osven tova stiga s taia optimizacia! to se prekaliava vece! stom sam resil da pisa nesto na ezik ot visoko nivo znaci ne mi trebva da e optimalno!
ili po skoro malkoto ucastaci kadeto trebav da bade sa si gi napisa na assembler!
Re: cikal FOR na PASCAL!?
emi to na pascal FOR-a e po-zle ot na basic - nqma STEP i nqmash pravo da promenqash broqcha vytre v cikyla
Re: cikal FOR na PASCAL!?
Хм, не го знаех това, явно последните години съм писал само MSVC съвместим код!
Къде ли не се крие злото...
The ones who live by the sword get shot by the ones who don't.
Къде ли не се крие злото...
The ones who live by the sword get shot by the ones who don't.
Re: cikal FOR na PASCAL!?
Ihh tolko vida cikli ima i v pascal(abe ne 4e sa bol mnogo...)...
Niklaus Virt taka e re6il taka go e napravil...Puk i pri != kompilatori povedenieto na FOR e != ...tova za men ne e problem...ako edinia cikul ne stava, to polzvame drugia :)
Tova gore ne e kritika :))))))))Ama tova dolu e ;)
Ne sum suglasen 4e kato e ezik ot visoko nivo triabva da prenebregvame proizvoditelnost i t.n....
Malko e sme6no zaradi 1 prom. da "obviniava6" daden ezik...puk i e glupavo da si pravi6 programata samo za DOS i t.n. kato i slaga6 po malko ASM...obi4am asm ama ne e tva re6enieto v niakoi slu4ai :)
Niklaus Virt taka e re6il taka go e napravil...Puk i pri != kompilatori povedenieto na FOR e != ...tova za men ne e problem...ako edinia cikul ne stava, to polzvame drugia :)
Tova gore ne e kritika :))))))))Ama tova dolu e ;)
Ne sum suglasen 4e kato e ezik ot visoko nivo triabva da prenebregvame proizvoditelnost i t.n....
Malko e sme6no zaradi 1 prom. da "obviniava6" daden ezik...puk i e glupavo da si pravi6 programata samo za DOS i t.n. kato i slaga6 po malko ASM...obi4am asm ama ne e tva re6enieto v niakoi slu4ai :)
Re: cikal FOR na PASCAL!?
ne samo assemblera! ako nesot trebva da e mnogo barzo! az ste namera nacin da go iztiskam do dupka! tova koeot ocakvam ot kompilatora e iasnota i vse pak prilicen kod!
po skoro mi e razbiraema optimizaciata za razmer, kogato pises nesto za ROM (a ne za CD-ROM) :-)
v smisal ce az s mnogo trud moga d anaprava edna programa po-malka, a s ne tolkova mnogo po-barza! (osven ako ne stava duma za promeni v algoritama)
A!!!! po toia povod:
programistite sa 2 vida: ednite pisat za ROM drugite za CD-ROM :-)
po skoro mi e razbiraema optimizaciata za razmer, kogato pises nesto za ROM (a ne za CD-ROM) :-)
v smisal ce az s mnogo trud moga d anaprava edna programa po-malka, a s ne tolkova mnogo po-barza! (osven ako ne stava duma za promeni v algoritama)
A!!!! po toia povod:
programistite sa 2 vida: ednite pisat za ROM drugite za CD-ROM :-)
Re: cikal FOR na PASCAL!?
ми това си е казано в описанието на езика,
който ползва разни недокументирани трикове рано или късно го издухва
казах
който ползва разни недокументирани трикове рано или късно го издухва
казах
Правило №1
Не разчитай на странични ефекти!
Щом в описанието на езика не е написано, че след края на цикъла брояча трябва да е еди какъв си, значи всеки може да прави компилатора както си реши. Забраната за промяна наброяча вътре в цикъла е направено с цел да ти спести евентуални главоболия. Като искаш да го променяш - имаш още два вида цикли + go to.
Същото се отнася и за начални стойности на неинициализирани променливи и др. подобни. Това е смисъла на Паскала - дисциплина и сигурност. Да не се разчита на разни неща по премълчаване и подразбиране.
"не съм ни ял, ни спал."
Ив.Вазов
Щом в описанието на езика не е написано, че след края на цикъла брояча трябва да е еди какъв си, значи всеки може да прави компилатора както си реши. Забраната за промяна наброяча вътре в цикъла е направено с цел да ти спести евентуални главоболия. Като искаш да го променяш - имаш още два вида цикли + go to.
Същото се отнася и за начални стойности на неинициализирани променливи и др. подобни. Това е смисъла на Паскала - дисциплина и сигурност. Да не се разчита на разни неща по премълчаване и подразбиране.
"не съм ни ял, ни спал."
Ив.Вазов
Re: Правило №1
В това, че се научаваш да не разчиташ някой друг да свърши твоята работа.
Освен това едно е да имаш в кода си:
j:=0;
r:=0.0;
S:='';
а съвсем друго да се чудиш кое колко е.
Освен това едно е да имаш в кода си:
j:=0;
r:=0.0;
S:='';
а съвсем друго да се чудиш кое колко е.
Re: cikal FOR na PASCAL!?
Доколкото съм копал вътре в програми на Делфи, това идва от оптимизацията им на циклите.
На операция от вида FOR ... се изчислява преди цикъла началната стойност и броя на завъртанията, след което цикъла се модифицира до (горе долу) следното:
Затова в Делфи накрая променливате е с единица повече. При BP7 конструкцията на цикъла е друга. Явно езика не е мислен да се ползва променливата на цикъла извън него.
При C/C++ това не може да стане, независимо от всякакви оптимизации. Просто защото промяната на променливата на цикъла явно се управлява в третата група на оператора FOR (;;)
На операция от вида FOR ... се изчислява преди цикъла началната стойност и броя на завъртанията, след което цикъла се модифицира до (горе долу) следното:
FOR I:=A TO B
I = A;
count = B - A + 1;
if (count > 0) {
do {
....
I++;
} while (--count);
}
Затова в Делфи накрая променливате е с единица повече. При BP7 конструкцията на цикъла е друга. Явно езика не е мислен да се ползва променливата на цикъла извън него.
При C/C++ това не може да стане, независимо от всякакви оптимизации. Просто защото промяната на променливата на цикъла явно се управлява в третата група на оператора FOR (;;)
Re: cikal FOR na PASCAL!?
В отговор на:При C/C++ това не може да стане, независимо от всякакви оптимизации. Просто защото промяната на променливата на цикъла явно се управлява в третата група на оператора FOR (;;)
Kakvo iskash da kazhesh s tova - che wuw C/C++ njama problem i che sled for() promenlivata winagi ima edna i sushto stojnost? Zashtoto wsushnost ima takuv problem :) - ne mozhe da se razchita na stoinosta na promenliva sled for() cikul.
tirulirutatuutuu
Re: cikal FOR na PASCAL!?
ot koia versia na C i C++ towa?
ako moje da citirash i sections w specifikaciiye kydeto se definira neopredelenoto systoianie.
thanks
ako moje da citirash i sections w specifikaciiye kydeto se definira neopredelenoto systoianie.
thanks
Re: Правило №1
iavno ne sma cel tova ce e po pravilo neopredeleno!
zatova sam go polzval! vidle sam ce raboti i sam og ostavil taka!
sled kato prekompilirah programata s drug kompilator problema iznikna! tokaga pitah kolegata i toi kaza ce naistina taka piselo...
inace ocevidno istinata e vav vida:
IF .... THEN GOTO ...
nema cikli nema gluposti!
osnovata na vsicko e uslovnia prehod! :-)
voobste koi go e izmislil tova ce ima 3vida cikli? FOR REPEAT i WHILE ??
i vav vsicki ezici da e taka?
pak nekoi matematik e skucal i sasdal PRAVILATA! :-)
zatova sam go polzval! vidle sam ce raboti i sam og ostavil taka!
sled kato prekompilirah programata s drug kompilator problema iznikna! tokaga pitah kolegata i toi kaza ce naistina taka piselo...
inace ocevidno istinata e vav vida:
IF .... THEN GOTO ...
nema cikli nema gluposti!
osnovata na vsicko e uslovnia prehod! :-)
voobste koi go e izmislil tova ce ima 3vida cikli? FOR REPEAT i WHILE ??
i vav vsicki ezici da e taka?
pak nekoi matematik e skucal i sasdal PRAVILATA! :-)
Re: cikal FOR na PASCAL!?
Naprotiv. Kakto ti nameknah po-gore - moje. for(;;) e prosto po-udoben zapis na chasten sluchay na while().