Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla for...mały problem
slawek_master
post 9.01.2006, 22:22:30
Post #1





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 4.01.2006

Ostrzeżenie: (0%)
-----


mam pytanko odnosnie

Kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
<meta>
<title></title>


<script LANGUAGE="JavaScript">
<!--

function potega()
  {
   var wynik = 2;
   l = parseInt(document.forms["matma"].podstawa.value);
   w = parseInt(document.forms["matma"].wykladnik.value);
   for (i = 2; i <= w; i++)
    {
     wynik *= l;
    }
   window.alert("Wynik to: " + wynik);
  }


//-->
</SCRIPT>


<BODY>

<FORM name="matma">
<INPUT TYPE="text" VALUE=2 SIZE=2 name="podstawa"> do potęgi
<INPUT TYPE="text" VALUE=3 SIZE=2 name="wykladnik">
<INPUT TYPE="button" VALUE="Oblicz" onClick="potega()">
</FORM>
</body>
</html>


nie wiem na jakiej zasadzie dziala



Kod
...
  {
     wynik *= l;
    }
...



i ogolnie mozecie caly script opisac dla pewnosci:) z gory dzieki za wszelka pomoc
Go to the top of the page
+Quote Post
ikioloak
post 9.01.2006, 23:28:49
Post #2





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

Ostrzeżenie: (0%)
-----


Poczytaj o operatorach arytmeczynych w js: http://www.w3schools.com/js/js_operators.asp
i w ogole przydaloby ci sie poczytac cos o javascripcie skoro nie rozumiesz podanego przez ciebie kodu.
Go to the top of the page
+Quote Post
ArturS
post 10.01.2006, 12:34:11
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 8.01.2006
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


Kod
function potega()
{
  var wynik = 2;
  l = parseInt(document.forms["matma"].podstawa.value);  //l (czyt. małe L, a nie jeden) przyjmuje wartość z podanego formularza
  w = parseInt(document.forms["matma"].wykladnik.value);    //w przyjmuje wartość z podanego formularza
  for (i = 2; i <= w; i++)      //pętla zaczyna się od i=2 bo jeśli podniesiemy do pot. pierwszej to poco mnożyć?
   {        // i kręci się aż nie będzie większe od zmiennej "w" (wykładnik potęgi)
    wynik *= l;      // wynik = wynik * l (czyt. małe "L" a nie 1 (jeden)
   }
  window.alert("Wynik to: " + wynik); //komunikat z wynikiem
}


Przyjmijmy więc, że podstawa to 2, czyli l (małe L) = 2, a wykładnik potęgi to 3 czyli w=3
więc pętla będzie wyglądała tak
Kod
  for (i = 2; i <= 3; i++)

czyli w pierwszym przejściu
Kod

wynik *= 2    //czyli wynik = 2 * 2 = 4
  i = i+1 = 3

drugie przejście
Kod
wynik *= 2   //czyli wynik = 4 * 2 = 8
i = i+1 = 4

trzeciego przejścia już nie będzie bo i<=3, a i=4, czyli FALSE

tyle guitar.gif

Podejżewam, że niezrozumienie kodu wynikło z pomyłki małej litery L z jedynką, co i mnie na początku zmyliło (czasami przemnażam coś przez 1 żeby JS nie dodawał liczb do siebie jak znaków w stringu, ale jak liczby).


Jeszcze pozwoliłem sobie przeedytować odpowiedź. winksmiley.jpg

W takiej funkcji jak powyższa można bez problemu wykorzystać rekurencję, co będzie wyglądało następująco:
Kod
function potega(liczba, do_potegi) {
  return ((do_potegi == 0)? 1:(liczba * potega (liczba, do_potegi - 1)));
}


i w tym wypadku jej wywołanie znaleźć by się mogło wewnątrz funkcji alert:
Kod
<INPUT TYPE="button" VALUE="Oblicz" onClick="window.alert('Wynik to: '+ potega(parseInt(document.forms['matma'].podstawa.value), parseInt(document.forms['matma'].wykladnik.value)))">


smile.gif



prosze używać bbcode
poprawiam
(to juz drugie upomnienie z mej strony w tej kwestii...)
---
nospor


Ten post edytował ArturS 11.01.2006, 15:38:44
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 4.07.2025 - 23:25