Jump to content

Програмирање - дигресије

Оцени ову тему


Препоручена порука

пре 13 часа, Juanito рече

Најпре ми реци ово, пошто код мене не ради твој код (избацује гомилу syntax error-а). Да ли на крају добијаш 142.9, пошто не видим како би могао... Рекао бих да у овом твом коду мора негде око стотке да испадне. 

Dobijem 142.9

пре 12 часа, Juanito рече

Верзија у којој x повећаваш у телу петље је еквивалентна верији у којој га повећаваш у услову. Разлика је што си у другом случају унутар тела један корак иза, па мораш да додаш следећи (+ 0.7) кад рачунаш вишак. У Swift-у је бројач петље константан, не можеш да га промениш у телу, па сам одабрао други начин. У C#-у може и једно и друго и исто се добија. Можеш обе верзије да напишеш у PHP-у. 

Kada stavim incriment u uslov onda dobijem 143.

Ali kada pored toga dodam takođe onih 0.7 kao i ti pa bude ...$visak= $x+0.7 -100; ...  onda ispada 142.9.

Ne kapiram baš zašto smo jedan korak iza kada stavimo u telo petlje ... Mislim zar ne dodajemo sledeći 0.7 kada je incriment u uslovu?

Link to comment
Подели на овим сајтовима

@Tumaralo.

Може и мало једноставније са петљом for, чисто због примера а и није много практично извршавање превише "ифова" у петљи... Такође за "инкремент" можеш поставити $brojac++ који по дифоулту додаје +1 тако да ће истерати на 143 у петљи. 

<?php

	$brojac = 0;

	for ( $x = 0; $x <= 100; ) {
	    
	    $x += 0.7;

	    $brojac++;

	}
	    
	$broj_obrtaja = $brojac - ( $x -100 );
	 
	echo 'Broj prolaska: ' . $broj_obrtaja; // Prikazuje 142.9

?>

 

Link to comment
Подели на овим сајтовима

пре 8 минута, ИгорМ рече

@Tumaralo.

Може и мало једноставније са петљом for, чисто због примера а и није много практично извршавање превише "ифова" у петљи... Такође за "инкремент" можеш поставити $brojac++ који по дифоулту додаје +1 тако да ће истерати на 143 у петљи. 


<?php

	$brojac = 0;

	for ( $x = 0; $x <= 100; ) {
	    
	    $x += 0.7;

	    $brojac++;

	}
	    
	$broj_obrtaja = $brojac - ( $x -100 );
	 
	echo 'Broj prolaska: ' . $broj_obrtaja; // Prikazuje 142.9

?>

 

Чекај, у PHP-у је x дефинисано ван петље и има вредност коју је зарадило у петљи? 

Па то је ужас...

Link to comment
Подели на овим сајтовима

@ИгорМ

Ево како крштен језик реагује на то решење. 

35isi8g.jpg

У праву си да је елегантније решење да се увек дода цео корак и на крају одузме вишак, али за то је далеко боља while петља, тј. твоје прво решење где све променљиве дефинишеш ван петље. Ово са for петљом ради у PHP-у и вероватно нигде више. Јако је опасно. Мислиш да имаш посла с локалном променљивом, кад оно имплицитно глобална. confused1

Link to comment
Подели на овим сајтовима

пре 1 минут, Juanito рече

Мислиш да имаш посла с локалном променљивом, кад оно имплицитно глобална

Нарочито за неког ко тек учи па дође до колапса :) као мени када сам почео... Може се унсетовати после петље али је у суштини глупо, додатни код... Генерално избегавам фор петљу за слична решења. 

 

 

  • Волим 1
Link to comment
Подели на овим сајтовима

пре 6 часа, Tumaralo. рече

Dobijem 142.9

Kada stavim incriment u uslov onda dobijem 143.

Ali kada pored toga dodam takođe onih 0.7 kao i ti pa bude ...$visak= $x+0.7 -100; ...  onda ispada 142.9.

Ne kapiram baš zašto smo jedan korak iza kada stavimo u telo petlje ... Mislim zar ne dodajemo sledeći 0.7 kada je incriment u uslovu?

Додаје се 0.7 кад је инкремент у услову, али додаје након извршеног корака петље. Дакле, прво је x = 0, па се изврши једном тело петље јер је 0 < 100, па се тек онда дода 0.7 на x и циклус се понавља. Зато у датом кораку мораш да додаш 0.7 кад рачунаш вишак јер x касни један корак у односу на оно што имаш у глави. У суштини, проблем је што for петља није баш најбољи избор за овај и сличне проблеме.

Боље је ово Игорево решење са while петљом, ту нема никаквих забуна. 

 

Link to comment
Подели на овим сајтовима

Ка је та "for" петља у питању, многи језици омогућавају да се у услов стави било шта, или ништа. Виђао сам "досетљиве" програмере како уместо у тело, читав алгоритам сместе у заглавље што им изгледа много "паметно", а у ствари направе проблеме које је после мора неко да решава.

Зато, моја препорука је да се "for" петља користи само у најосновнијем облику:

for (int i = 0; i < n; i++)

Може и "уназад" са i-- и никако другачије. За све друго користити while или слично.

ΜΟΛΩΝ ΛΑΒΕ

Link to comment
Подели на овим сајтовима

пре 10 минута, Grizzly Adams рече

Ка је та "for" петља у питању, многи језици омогућавају да се у услов стави било шта, или ништа. Виђао сам "досетљиве" програмере како уместо у тело, читав алгоритам сместе у заглавље што им изгледа много "паметно", а у ствари направе проблеме које је после мора неко да решава.

Зато, моја препорука је да се "for" петља користи само у најосновнијем облику:

for (int i = 0; i < n; i++)

Може и "уназад" са i-- и никако другачије. За све друго користити while или слично.

То је управо логика дизајна Swift-a. Swift чак нема такву for петљу, већ само for in, што је еквивалентно C# foreach.

Ако ти заиста треба да прођеш кроз секвенцу бројева, онда урадиш буквално то - креираш дату секвенцу и прођеш кроз њу. Функција stride креира секвенцу еквивалентну тој горе:

stride(from: 0, to: n - 1, by: 0.7)

И онда можеш да користиш for петљу са том секвенцом:

for i in stride(from: 0, to: n - 1, by: 0.7) {

}

Мање је флексибилно од C-оликих петљи, али зато оставља много мање простора за грешке. Управо те тера да користиш while тамо где for није природно.

Link to comment
Подели на овим сајтовима

@ИгорМ

Koliko je potrebno otprilike da bih savladao php i mysql? Uglavnom ljudi kažu 6 meseci..

Na ovom kursu radimo samo osnove, završićemo ga za 2 nedelje pa planiram posle sam da slušam tutorijale, čituckam i uvežbavam sve šta treba. Mogao bih da izdvojim oko sat i po dnevno. Počeo bih sa ovim što je privremeno odsutni brat @Aquilius Cratus postovao ranije  :

 

Samo što je faktički ovo meni prvi programski jezik koji učim... :/

Link to comment
Подели на овим сајтовима

пре 50 минута, Tumaralo. рече

@ИгорМ

Koliko je potrebno otprilike da bih savladao php i mysql? Uglavnom ljudi kažu 6 meseci..

Na ovom kursu radimo samo osnove, završićemo ga za 2 nedelje pa planiram posle sam da slušam tutorijale, čituckam i uvežbavam sve šta treba. Mogao bih da izdvojim oko sat i po dnevno. Počeo bih sa ovim što je privremeno odsutni brat @Aquilius Cratus postovao ranije  :

 

Samo što je faktički ovo meni prvi programski jezik koji učim... :/

Само напред и не одустај. Можда има много да се учи и ради на томе али резултати ће доћи.

Зависи од посвећености, времена а највише практичних задатака и конкретног посла у ком се сусретнеш са конкретним проблемима. Имаш одличних књига и ваљало би их савладати поред видео туторијала... ако си добар са енглиш могао би ти проследити нешто од тога...

Иначе нема неког периода за који ће ти неко гарантовати да ћеш бити пхп нинџа... Кoд мене је било доста одрицања и много непреспаваних ноћи (као и данас уосталом ) па опет не смем да тврдим за себе да сам експерт.

Ја поред свега ( HTML,CSS3, jQuery,PHP,MySQL) још доста времена проводим са WordPress-ом који је заснован на пхп-у (прављење темплејта и плугинова)... и још увек се учим... Много ми помажу видео туторијали професионалаца. Ту се види практично знање и "пропер веј" како нешто треба да се одради. Мада ми набију комплекс када их видим како то они раде брзо али шта да радим, одабрао сам пут... и ја ћу тако једног дана када порастем :D

Јако битна ствар, одлично савладати класе, функције и низове... без тога нема озбиљно одрађеног посла. За све друго ту је брат гугл када затупим :) ... и наравно https://stackoverflow.com/ где вероватно већ имаш одговор на још не постављено питање како нешто да изведеш

Link to comment
Подели на овим сајтовима

@Grizzly Adams @ИгорМ

А овако некако би изгледало решење без променљивих (само константе да би било читљивије), без петље и без услова у сваком кораку. Functional programming rules! :)

GoyZzqH.jpg

Link to comment
Подели на овим сајтовима

пре 9 минута, Grizzly Adams рече

А још једноставније изгледа на језику пројект менаџера:

I want that done by Friday. :smeh1:

Ево ти пре рока, овога пута и без константи. :ani_biggrin:

owa0xjK.jpg

Link to comment
Подели на овим сајтовима

×
×
  • Креирај ново...