KZE: Matematyka, fizyka i informatyka !

JavaScript, zadanie nr 1

 
Napisz nowy temat   Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi    Forum KZE: Matematyka, fizyka i informatyka ! Strona Główna -> Archiwum zadań
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
barszcz
Administrator



Dołączył: 20 Lut 2007
Posty: 307
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Pochodzenie: Przemyśl, zamieszkanie: Warszawa

PostWysłany: Nie 21:24, 27 Maj 2007    Temat postu: JavaScript, zadanie nr 1

Napisz skrypt, który:
- Wczyta za pomocą funkcji "prompt" liczbę nr 1
- Wczyta za pomocą funkcji "prompt" liczbę nr 2
- Wyświetli używając funkcji write i alert średnią arytmetyczną liczby nr 1 i liczby nr 2.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Krzych




Dołączył: 22 Lut 2007
Posty: 234
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Czw 21:21, 06 Wrz 2007    Temat postu:

jakbyś miał ochotę to zamknąć to proszę wstrzymaj się jeszcze

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Krzych




Dołączył: 22 Lut 2007
Posty: 234
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Pią 17:02, 07 Wrz 2007    Temat postu:

Kod:
<script type="text/javascript">
//zadeklarowanie zmiennej liczba1 i wywołanie okna dialogowego
var liczba1 = prompt("Podaj pierwsza liczbe..." ,"");
//sprawdzenie czy została podana jakaś liczba, jeśli nie to liczba1 = 0
if(liczba1 == null || liczba1 == "")
{
liczba1 = 0;
}
//zadeklarowanie zmiennej liczba2 i wywołanie okna dialogowego
var liczba2 = prompt("Podaj druga liczbe...", "");
//sprawdzenie czy została podana jakaś liczba, jeśli nie to liczba2 = 0
if(liczba2 == null || liczba1 == "")
{
liczba2 = 0;
}
//zadeklarowanie zmiennej wynik
var wynik = liczba1 + liczba2 / 2;
//wyswietlenie na ekranie sredniej arytmetycznej tych liczb
document.write(liczba1 + " + " + liczba2 + "/ 2 = " + wynik);
//wywołanie okna alert
window.alert(liczba1 + " + " + liczba2 + "/ 2 = " + wynik);
</script>


Edit: to jest źle ale zaraz poprawie

Edit2: nie wiem czemu ale zamiast dodawać do siebie wartości zmiennych np. 2 + 2 = 4 to skrypt traktuje je jako ciągi i wyświetla 2 + 2 = 22
jak zrobię analogicznie z mnożeniem to jest ok np. 2 * 2 = 4 a z dodawaniem już nie np. 2 + 2 = 22


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
barszcz
Administrator



Dołączył: 20 Lut 2007
Posty: 307
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Pochodzenie: Przemyśl, zamieszkanie: Warszawa

PostWysłany: Pią 19:05, 07 Wrz 2007    Temat postu:

Zamiast wpierw zainicjować zmienne, od razu do nich przypisujesz wartości (rezultat funkcji prompt, co na Twoje nieszczęście jest oczywiście stringiem).

'2'+'2'='22'
To jest oczywiste

Poczytaj o inicjacji zmiennych.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
barszcz
Administrator



Dołączył: 20 Lut 2007
Posty: 307
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Pochodzenie: Przemyśl, zamieszkanie: Warszawa

PostWysłany: Pią 19:18, 07 Wrz 2007    Temat postu:

Mam prośbę; w językach takich jak (począwszy od) JavaScript, przez Pascala, Javę, skończywszy w końcu na C++, bardzo ważną rzeczą jest czytelność kodu, a co za tym idzie stosowanie wcięć - bez nich sam się pogubisz; ale dobrze że stosujesz komentarze, to również bardzo ważna rzecz, wiedzieć do czego dana procedura, funkcja się odwołuje.

dla przykładu, rekurencyjna silnia w object pascalu:
Kod:

function silnia(n: Integer): Integer;
begin
if n=0 then
silnia:=1
else
silnia:=n*silnia(n-1);
end;


a teraz z wcięciami:
Kod:

function silnia(n: Integer): Integer;
begin
   if n=0 then
      silnia:=1
   else
      silnia:=n*silnia(n-1);
end;


O wiele lepiej wygląda, prawda?


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Krzych




Dołączył: 22 Lut 2007
Posty: 234
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Pią 19:36, 07 Wrz 2007    Temat postu:

tak - jak robię długie kody to zazwyczaj robię wcięcia jednak teraz mi się nie chciało

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Krzych




Dołączył: 22 Lut 2007
Posty: 234
Przeczytał: 0 tematów

Ostrzeżeń: 0/3

PostWysłany: Sob 12:51, 08 Wrz 2007    Temat postu:

Kod:
<script type="text/javascript">

//zadeklarowanie zmiennej liczba1 i wywołanie okna dialogowego
var liczba1 = 0;
liczba1 = prompt("Podaj pierwsza liczbe..." ,"");

//sprawdzenie czy została podana jakaś liczba, jeśli nie to liczba1 = 0
 if(liczba1 == null || liczba1 == "")
  {
   liczba1 = 0;
  }
liczba1 = parseInt(liczba1);

//zadeklarowanie zmiennej liczba2 i wywołanie okna dialogowego
var liczba2 = 0;
liczba2 = prompt("Podaj druga liczbe...", "");

//sprawdzenie czy została podana jakaś liczba, jeśli nie to liczba2 = 0
 if(liczba2 == null || liczba1 == "")
  {
   liczba2 = 0;
  }
liczba2 = parseInt(liczba2);

//zadeklarowanie zmiennej suma i wynik
var suma = 0;
suma = liczba1 + liczba2;

var wynik = 0;
wynik = suma / 2;

//wyswietlenie na ekranie sredniej arytmetycznej tych liczb
document.write(wynik);

//wywołanie okna alert
window.alert(wynik);

</script>


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
barszcz
Administrator



Dołączył: 20 Lut 2007
Posty: 307
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Pochodzenie: Przemyśl, zamieszkanie: Warszawa

PostWysłany: Sob 13:58, 08 Wrz 2007    Temat postu:

Niestety JavaScript jest bardzo elastycznym językiem (niekiedy typ zmiennej nie gra znaczącej roli), dlatego konwersja ze stringa to typu numerycznego było dobrym pomysłem. Jest kilka mało istotnych błędów:

- Zrobiłeś sprawdzenie poprawności wprowadzonych danych (elegancko, bo nie wymagane), lecz nie najlepszym rozwiązaniem jest wprowadzać domyślną wartość - 0; lepszym rozwiązaniem, byłoby dać użytkownikowi jeszcze jedną szansę na wprowadzenie danych, a kod nie byłby dłuższy:
Kod:

var liczba1=null;
while(liczba1==null) {
   liczba1=prompt("Podaj pierwszą liczbę:", "");
}
liczba1=parseInt(liczba1);


- Kod jest bardzo przejrzysty, jednak powinieneś również pamiętać o zajmowanej przez skrypt pamięci operacyjnej (na konkursach informatycznych jest to bardzo ważne); zamiast pisać:
Kod:

suma=liczba1+liczb2
wynik=suma/2

Można było od razu napisać:
Kod:

wynik=(liczba1+liczb2)/2


- No i wreszcie ostatni błąd, czyli kilkakrotne przypisanie do zmiennej, to oczywiście obciąża procesor (wyobraź sobie, gdyby system miał do zsumowania kilka milionów liczb, Twoim sposobem zrobiłby to dwa razy dłużej). Zamiast pisac:
Kod:

var suma=0
suma=liczba1+liczba2

Można by od razu napisać:
Kod:

var suma=liczba1+liczba2


Ale poza tym gratuluję fachowego rozwiązania. Udzieliłem Ci przedtem złej wskazówki, apropo odpowiedniej inicjacji zmiennej, oczywiście w marnej JavieScript, czegoś takiego nie ma, zasugerowałem się pascalem i javą, Twój pomysł z konwersją na inny typ był bardzo dobry!

ZADANIE ROZWIĄZANE


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi    Forum KZE: Matematyka, fizyka i informatyka ! Strona Główna -> Archiwum zadań Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Flower Power phpBB theme by Flowers Online.
Regulamin