admin
|
|
« : Kwiecieñ 10, 2015, 07:35:51 » |
|
Podstawowym zadaniem funkcji jest przechowywanie oddzielnego fragmentu kodu. Cech± charakterystyczn± funkcji jest to, ¿e do funkcji mo¿emy wprowadzaæ parametry i po wprowadzeniu funkcja zwraca warto¶æ. UWAGA: funkcja zwraca warto¶ci , procedura nie zwraca warto¶ci (to jest ró¿nica pomiêdzy funkcj± i procedur±). Deklaracja funkcji i jej wywo³anie mo¿e byæ w dowolnym miejscu. Wa¿ne: deklaracja funkcji musi byæ wcze¶niej ni¿ jej wywo³anie. Zadanie 1. Deklaracja funkcji o nazwie adam, która wy¶wietla napis Piotr.
<HTML> <HEAD> <TITLE>Przyklad_1</TITLE> <SCRIPT> function adam() {document.write('Piotr');} adam(); </SCRIPT> </HEAD> </HTML>
W tym przyk³adzie deklaracja funkcji adam() i jej wywo³anie znajduj± siê w jednym bloku Java. Deklaracja funkcji polega na podaniu jej nazwy, nawiasów okr±g³ych w których mog± byæ argumenty funkcji, nawiasów klamrowych, w których znajduje siê tre¶æ funkcji: adam(){}
Przyk³ad 2. Umieszczanie argumentów funkcji. W funkcji powitanie pojawi³a siê zmienna tekst. Wywo³anie funkcji z parametrem "Witaj", powoduje podstawienie do zmiennej tekst s³owa Witaj.
<HTML> <HEAD> <TITLE>Parametry funkcji</TITLE> <SCRIPT> function powitanie(tekst) {document.write(tekst);} powitanie('Witaj'); powitanie('Do widzenia'); </SCRIPT> </HEAD> </HTML>
Przyk³ad 3. Wprowadzanie wielu argumentów do funkcji. Do funkcji mo¿emy wprowadziæ wiêcej ni¿ jeden argument(zmienn±). Wprowadzenie wiêcej ni¿ jednej zmiennej nie oznacza konieczno¶ci jej wykorzystania. Mo¿emy jako argument zadeklarowaæ dwie zmienne a wprowadziæ tylko jedn± w funkcji nale¿y uwzglêdniæ równie¿ tak± sytuacjê. Dzia³anie takie bêdziemy nazywaæ niedoci±¿eniem funkcji. W przedstawionym przyk³adzie wprowadzone powinny byæ dwie zmienne, pierwsza to ci±g znaków, drug± zmienn± jest liczba. Funkcja powitanie pozwala na wy¶wietlenie tre¶ci ( wprowadzonej jako pierwsza zmienna) tyle razy ile wynosi druga liczba. W funkcji ("polecenie if") sprawdzane jest, czy wprowadzona druga zmienna jest liczb±.
<HTML> <HEAD> <TITLE>Wiele parametrów w funkcji</TITLE> <SCRIPT> function powitanie(tekst, liczba) { if (liczba!=parseInt(liczba)||liczba<=0) liczba=1; for (x=0;x<liczba;x++) document.write(tekst+'<BR>'); } powitanie('Czesc',5); powitanie('do widzenia'); powitanie('wprowadzilem zero',0); powitanie('wprowadzilem liczbe rzeczywista',5.3); powitanie('Witajcie literki ABC','ABC'); powitanie('Witaj liczbo ujemna',-130); </SCRIPT> </HEAD> </HTML>
|
|
« Ostatnia zmiana: Kwiecieñ 10, 2015, 08:52:16 wys³ane przez admin »
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #1 : Kwiecieñ 10, 2015, 08:56:00 » |
|
Deklaracja zmiennych lokalnych w funkcji. Funkcje mog± mieæ zmienne wprowadzane z zewn±trz ( deklarowane w nawiasach okr±g³ych) lub zmienne deklarowane wewn±trz funkcji, które nazywaj± siê zmiennymi lokalnymi. Zmienne lokalne nie s± widoczne poza funkcj±. Nadanie zatem, nadanie warto¶ci zmiennej lokalnej, i próba jej wy¶wietlenia poza funkcj± jest niemo¿liwe. Zatem je¿eli w programie jest kilka funkcji, to ich zmienne lokalne mog± posiadaæ ró¿ne warto¶ci. jest to istotne je¿eli brakuje ju¿ liter na oznaczanie zmiennych. Podstawowe regu³y: 1. Zmienna zadeklarowana poza funkcjami nosi nazwê zmiennej globalnej, 2. Zmienna zadeklarowana wewn±trz funkcji nosi nazwê zmiennej lokalnej, 3. Zmienna lokalna o tej samej nazwie wewn±trz funkcji jest wa¿niejsza (przes³ania) zmienn± globaln±. 4. Zmienna lokalna zadeklarowana w funkcji, "nie istnieje" jako dana poza funkcj±.
<HTML> <HEAD> <TITLE>Zmienna lokalna</TITLE> <SCRIPT> x=5; function zmienx() { var x=10; document.write('Lokalna zmienna x = '+x+'<BR>');}
document.write('Globalna zmienna x = '+x+'<BR>'); zmienx(x); document.write('Globalna zmienna x= '+x); </SCRIPT> </HEAD> </HTML>
|
|
« Ostatnia zmiana: Kwiecieñ 10, 2015, 09:33:11 wys³ane przez admin »
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #2 : Kwiecieñ 10, 2015, 10:13:32 » |
|
Deklaracja klasy w Java Script.
Z obiektami praktycznie ka¿dy mia³ ju¿ do czynienia. Przyk³adem realnie istniej±cego obiektu mo¿e byæ np. komputer. Obiektem mo¿e byæ budynek, w którym wa¿na informacj± jest liczba pokojów lub jego cena. Je¿eli chcemy wykonaæ bazê danych budynków do sprzeda¿y, to ka¿dy z nich bêdzie posiada³ podobne atrybuty (liczba pokojów, cena). Budynki zatem bêd± mia³y pewne cechy wspólne, cechy te powoduj±, ze mo¿emy je zaliczyæ do klasy "budynek mieszkalny". Ka¿dy "budynek mieszkalny" w bazie danych jest jednak inny (ró¿ni± siê liczb± pokojów i cen±), stanowi w programowaniu pojêcie pochodne do klasy , czyli obiekt. Program poni¿ej pokazuje jak deklarowaæ klasê "budynek_m" w Java Script oraz jak tworzyæ pochodne czyli obiekty o nazwie dom1, dom2, ... .
Ka¿da klasa zbudowana jest z dwóch elementów: w³a¶ciwo¶ci -opisuj±cych cechy klasy (liczba pokojów, cena) metod - funkcji opisuj±cych cechy klasy (np. czy jest jeszcze do sprzeda¿y, czy zosta³ sprzedany).
W chwili tworzenia klasy okre¶lamy metody i w³a¶ciwo¶ci, które wchodz± w jej sk³ad. Java Script nie posiada specjalnych narzêdzi do tworzenia klasy jednak mo¿na to zrobiæ do¶æ prosto.
<HTML> <HEAD> <TITLE>Baza danych domu</TITLE> <SCRIPT> function Budynek(pokoje,cena,garaz) { this.pokoje=pokoje; this.cena=cena; this.garaz=garaz; }
dom1=new Budynek(4,100000,false); dom2=new Budynek(5,200000,true); with (dom1) document.write('Dom 1 posiada '+pokoje+' pokoje , '+(garaz?'tak':'nie')+' garaz, i cena PLN'+cena+'<BR>'); with (dom2) document.write('Dom 2 posiada '+pokoje+' pokoje, '+(garaz?'tak':'nie')+' garaz, i cena PLN'+cena+'<BR>'); </SCRIPT> </HEAD> </HTML>
Przyk³ad 2. Zmodyfikowany program wprowadzaj±cy metodê (funkcjê o nazwie widok) umo¿liwiaj±c± wy¶wietlanie danych.
<HTML> <HEAD> <TITLE>Baza danych domu 1</TITLE> <SCRIPT> function Budynek(nazwa,pokoje,cena,garaz) { this.nazwa; this.pokoje=pokoje; this.cena=cena; this.garaz=garaz; this.widok=widok; }; function widok() { with (this) document.write(nazwa+' posiada '+pokoje+' pokoje, '+(garaz?'tak':'nie')+' garaz, i cena PLN = '+cena+'<BR>'); };
dom1=new Budynek('Dom Wojtka',4,100000,false); dom2=new Budynek('Dom Zosi',5,200000,true); dom1.widok(); dom2.widok(); </SCRIPT> </HEAD> </HTML>
|
|
« Ostatnia zmiana: Kwiecieñ 10, 2015, 10:38:11 wys³ane przez admin »
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #3 : Kwiecieñ 10, 2015, 11:02:28 » |
|
Deklaracja klasy i deklaracja prototypu metody (funkcji). W poprzednich przyk³adach deklaracja metody widok(), by³a okropnie "pamiêcio-¿erna". Ka¿da deklaracja obiektu klasy budynek powodowa³a deklaracjê w klasie metody widok(). Wprowadzenie prototypu metody pozwala tylko raz zadeklarowaæ metodê, która bêdzie przypisywana do obiektu dopiero w chwili jej wywo³ania. Jak ogranicza to wielko¶æ pamiêci zadeklarowanej przez program mo¿na oceniæ tworz±c 10000 rekordów obiektów dom, z których ka¿dy posiada wbudowan± funkcjê widok. Tworzy to 10000 funkcji widok. Je¿eli zadeklarujemy prototyp metody widok(), to niezale¿nie od liczby nowych obiektów deklarujemy tylko jedn± wspóln± metodê widok().
<HTML> <HEAD> <TITLE>Baza danych domów</TITLE>
<SCRIPT> function Budynek(nazwa,pokoje,cena,garaz) { this.nazwa; this.pokoje=pokoje; this.cena=cena; this.garaz=garaz; }; function widok() { with (this) document.write(nazwa+' posiada '+pokoje+' pokoje, '+(garaz?'tak':'nie')+' garaz, i cena PLN = '+cena+'<BR>'); }; Budynek.prototype.widok=widok; dom1=new Budynek('Dom Wojtka',4,100000,false); dom2=new Budynek('Dom Zosi',5,200000,true); dom1.widok(); dom2.widok(); </SCRIPT> </HEAD> </HTML>
|
|
« Ostatnia zmiana: Kwiecieñ 10, 2015, 11:05:49 wys³ane przez admin »
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #4 : Kwiecieñ 10, 2015, 11:10:58 » |
|
Deklaracja klasy i deklaracja prototypu sta³ej. Wprowad¼my teraz now± metodê (koszt), która oblicza koszty ca³kowite zakupu domu, cena powiêkszona o mar¿ê sprzedaj±cego i koszty obs³ugi. Podobnie jak w poprzednim przypadku mar¿ê i stopê podatku mo¿na zadeklarowaæ jako prototypy sta³ych.
<HTML> <HEAD> <TITLE>Baza danych domów</TITLE>
<SCRIPT> function Budynek(nazwa,pokoje,cena,garaz) { this.nazwa; this.pokoje=pokoje; this.cena=cena; this.garaz=garaz; }; function widok() { with (this) document.write(nazwa+' posiada '+pokoje+' pokoje, '+(garaz?'tak':'nie')+' garaz, i cena PLN = '+cena+'<BR>'); }; function koszt() { with (this) document.write(nazwa+' ca³kowita op³ata za budynek w PLN wynosi: '+eval(cena+oplata+cena*prowizja)+'<BR>'); } Budynek.prototype.widok=widok; Budynek.prototype.koszt=koszt; Budynek.prototype.prowizja=.01; Budynek.prototype.oplata=1000;
dom1=new Budynek('Dom Wojtka',4,100000,false); dom2=new Budynek('Dom Zosi',5,200000,true); dom1.widok(); dom2.widok(); dom1.koszt(); dom2.koszt(); </SCRIPT> </HEAD> </HTML>
|
|
« Ostatnia zmiana: Kwiecieñ 10, 2015, 11:16:38 wys³ane przez admin »
|
Zapisane
|
|
|
|
|