СҰРАҚТАР:
2. For циклы
3. Break және continue командалары
4. Циклдарды кері бағытта программалау
6. JavaScript функциялары
6.1. Стандартты константалар
6.2. Стандартты функциялар
6.3. Тұтынушы функциялары
376.50K
Категория: ПрограммированиеПрограммирование

Лекция JavaScript

1.

1

2. СҰРАҚТАР:

1. while циклы
2. for циклы
3. break және continue командалары
4. Циклдарды кері бағытта
программалау
5. Цикл айнымалысын сипаттау
6. JavaScript ішкі функциялары
6.1. Константалар
6.2. Стандартты функциялар
6.3. Тұтынушы функциялары
2

3.

1. While циклы
Төменгі кестеде while циклының жалпы
жазылу түрі мен оны пайдалану мысалдары
келтірілген.
Жалпы жазылу түрі
Мысалдар
while (шарт)
команда;
Мысалды орындау
нәтижесі:
var i = 1;
var sum = 0;
while(i <= 100)
{
sum += i;
i ++;
}
alert("Сумма 1 + 2 +
... + 100 = " + sum);
3

4.

Цикл орындалуы: алдымен шарт
тексеріле-ді. Егер ол ақиқат
болса, командалар (цикл
тұлғасы)орындалады. Келесі жолы да
сол әрекеттер қайталанады, яғни
шарт тексеріледі. Егер ол ақиқат
болса, цикл орындалады, т.с.с.
Кезекті тексеру кезінде шарт
жалған болған кезде, цикл жұмысты
аяқтайды. Циклда шарт алдын ала
тексерілетін болғандықтан, ол бір
де бір рет орындалмауы да мүмкін.4

5. 2. For циклы

Төменгі кестеде for циклының жалпы жазылу
түрі мен алдыңғы мысалдың осы команда арқылы
орындалуы көрсетілген.
Жалпы жазылу түрі
for(цикл басы;
шарт; қадамы)
команда;
Мысалды орындау
нәтижесі:
Мысалдар
var i;
var sum = 0;
for(i=1; i<=100; i++)
sum += i;
alert ("Сумма 1 + 2 +
... + 100 = " + sum);
5

6.

Бұл мысалдың да нәтижесі алдыңғы
мысалдағы-дай. Цикл жұмысы былай
атқарылады.
Циклдағы алғашқы команда орындалады
(мысал-дағы i=1; командасы), ал цикл
мынадай әре-кеттер арқылы орындалады:
- шартты тексеру (мысалдағы i<=100);
- цикл тұлғасын орындау (мысалдағы
sum+=i);
- қадамды көрсету командасын орындау,
(мысал-дағы i++).
6

7.

Егер шарт бірден жалған болса, while
команда-сындағы тәрізді цикл тұлғасы бір
де бір рет орындалмауы да мүмкін.
Мұндайда қадам беру командасы да
орындалмайды. Ал циклдың алғаш-қы
командасы әрқашанда кем дегенде бір рет
орындалады.
Цикл басындағы for жолының үш
командасының - басы, шарты, қадамы кез
кедгені жазылмай кетуі де мүмкін, бірақ
олардың арасында тұратын нүктелі үтір
міндетті түрде сақталады. Егер шарт
көрсетілмесе, считается, что оның мәні
true болып саналады. Мұндайда, цикл
шексіз түрге айналып кетеді:
7
for (;;) команда

8. 3. Break және continue командалары

Бұл командалар циклдағы командалар
реттілігін өзгерту үшін қолданылады.
Continue командасы циклдың онан кейінгі
бар-лық командаларын аттап өтіп, цикл
параметрінің келесі мәніне көшіреді.
Break командасы жалпы цикл орындалуын
аяқтап, одан кейінгі келесі командаларға
көшіреді.
8

9.

1 мысал (continue). [1,20] аралығынан кездейсоқ
түрде алынған 5 жұп санның қосындысын табу
керек.
var len
= 5; // Количество чисел.
var a
= 1; // Левая граница
интервала.
var b
= 20; // Правая граница
интервала.
var sum
= 0; // Сумматор.
var counter = 0; // санауышы чисел.
var number;
// Случайное число.
var str = " ";
// Строка для вывода.
while (counter < len)
{ number = Math.floor(a + (b-a+1)*Math.random());
if (number % 2) continue;
sum += number;
str += number;
if (counter < len-1) str += " + ";
9
else
str += " = ";
counter++;

10.

Осы мысалды орындау кезінде экранға
келесі бейне шығарылады.
Math.random() стандартты функциясы [0,1]
аралығынан кез келген кездейсоқ сан береді.
Math.floor(num) стандартты функциясы
аргументке тең не одан кіші бүтін сан мәнін береді.
10

11.

2 мысал (break). Керекті сандар [1,20] аралығынан кездейсоқ түрде алынып отырылады. Осы сандардың кезектегі
келесісі 10-ға тең болғанша, солардың қосындысын табу
керек.
var a
= 1;
// Левая граница
интервала.
var b
= 20; // Правая граница
интервала.
var special = 10; // Критическое значение
// случайного числа.
var sum
= 0; // Сумматор.
var number;
// Случайное число.
var str
= "";
// Строка для вывода.
for ( ; ; )
// Бесконечный цикл.
{ number = Math.floor(a + (b-a+1)*Math.random( ));
sum += number; str += number ;
11
if (number == special) break;

12.

Мысалдың
нәтижесі
жоғарғы
немесе
төменгі суреттегідей де болуы мүмкін.
12

13.

2
y
x
x 1.5 функциясы берілген.
3 мысал.
Осы у функциясы мәндерін оның аргументі х 0-ден 3-ке
дейін қадамы 0,5 болып өзгерген сәтте табу кекрек.
var x0 = 0;
// Начальное значение х
var xk = 3;
// Конечное значение х
var dx = 0.5; // шаг изменения х
var x=x0;
// Присвоение х начального значения
var y;
// Объявление айнымалы у
while (x =< xk)
{ y = x*x - Math.sqrt(x) +1.5;
alert(" x= " + x + " y= " + y);
x+=dx ;
}
13

14.

Барлық мәндерді бір
терезеде орналасатындай ету үшін, alert командасы орнына
document.write
командасын қолдану
14
қажет.

15.

Осы мысалдың document.write арқылы орындалу
нәтижесі төмендегідей:
15

16.

x 2 x 1, если х 0
4-мысал. y
функциясы
x x 1, если х 0
берілген.
Осы функцияға х мәндерін енгізе отырып, у мәндерін
анықтау керек.
var x = prompt("Введите значение х:",
"1");
y = (x <= 0) ? x*x+x+1:x-Math.sqrt(x+1);
alert ("x="+x+"
y=" + y);
Енді осы функцияны х мәндерін 0-ден 3-ке дейін қадамы
0,5 болып өзгерген сәтте анықтау керек болсын делік.16

17.

// Начальное значение х
// Конечное значение х
// шаг изменения х
// Присвоение х
// начального значения
var y;
// Объявление у
while (x =< xk)
{ y = x*x - Math.sqrt(x) +1.5;
alert(" x= " + x + " y= " + y);
x+=dx ;
}
var
var
var
var
x0 = 0;
xk = 3;
dx = 0.5;
x = x0;
17

18. 4. Циклдарды кері бағытта программалау

Келесі мысалда set жиымы (массиві) элементтері қосындысын
табу жолы көрсетілген (элементтерді нөмірлеу 0-ден
басталады;
set.length – жиым қасиеті – оның ұзындығы):
var sum = 0;
for(var i=0; i < set.length; i++)
sum += set[i];
Былай да жазуға болады:
var sum = 0;
for(var i = set.length; --i >= 0; )
sum += set[i];
Екінші тәсіл дұрысырақ, өйткені санды нөлмен салыстыру
басқа санмен салыстыруға қарағанда, жылдамырақ
орындалады. Басқаша айтсақ, «--i >= 0» шарты «i <
set.length» шартынан гөрі тиімдірек. Жалпы ереже:
санауышы бар циклде санауыш мәні мүмкіндігінше нөлге
18
дейін төмендегені дұрыс болып табылады.

19.

Келесі мысалда мынадай мән 10!= 1*2*...*10 есептеледі.
var proizvedenie = 1;
for(var i=10; i; --i)
proizvedenie *= i;
alert("10!=1 * 2 *...* 10
= "+proizvedenie);
Бұл программа нәтижесі:
Келесі вариант:
var sum = 0;
for(var i = set.length; (i--) >= 0; )
sum += set[i];
қате болып табылады, өйткені ондағы является
ошибочным,в нем уменьшение i мәнін бірге кеміту шартты
тексеруден кейін жазылған, ол оның алдында тұруы тиіс.
19

20.

5. Цикл айнымалысын сипаттау
JavaScript тілінде былай жазуға болады:
for(var i = 100; i; i--) ...
– немесе былай:
var i;
for(i = 100; i; i--) ...
Браузер үшін бұл екеуі де бірдей. Мынадай цикл
конструкциясында:
for(басы; шарт; қадам)
команда;
басы командасы цикл басында бір-ақ рет
орындалады. Сондықтан i айнымалысы 100 рет
var сипаттауышы арқылы тексерілмейді.
20

21.

Мынадай ұсыныстар беріледі:
– i цикл санауышын функция немесе скрипт басында
басқа айнымалылар сипатталаған кезде сипаттап кету
керек;
– Егер бір санауыш бірнеше циклдарда пайдаланылатын болса, оны жалпы сипаттау бөлімінде көрсету
қажет;
– Егер функция құрамында цикл біреу ғана болса, онда
былай етіп for (var i = …,…; …) — жазған
дұрыс, өйткені i айнымалысы бір-ақ жерде кездеседі.
21

22.

Егер бір digit айнымалысы цикл ішінде
пайдала-нылып, сыртында кездеспесе, оны циклдың
ішінде локальды айнымалы ретінде сипаттаған дұрыс.
Төмендегі while командасының жазылуы:
while (...)
{ var digit = ...
... }
мынадай сипаттаумен бірдей болып саналады:
var digit;
...
while (...)
{... digit = ...}
22

23. 6. JavaScript функциялары

Барлық стандартты математикалық функциялар мен жиі қолданылатын константалар Math математикалық объектісінің тәсілдері мен қасиеттері түрінде беріледі.
Math объектісі JavaScript тілінің ішкі объектісі
болып табылады.
Мысалы, PI константасын пайдалану үшін
Math.PI түрінде жазу керек.
JavaScript константаларының дәлдігі үтірден
кейінгі 15-цифрды қамтиды.
Math функцияларын да тәсіл ретінде пайдаланып,
мысалы, синус функциясы - Math.sin(argument),
түрінде жазылады, мұндағы argument сөзі
23
функция аргументі болып табылады.

24. 6.1. Стандартты константалар

1. Натуралдық логарифм негізі – Е болып жазылады.
мысалы:
Alert(Math.E)
2. 10 санының натуралдық логарифмі – LN10.
мысалы:
Alert(Math.LN10)
3. 2 санының натуралдық
логарифмі – LN2.
мысалы:
Alert(Math.LN2)
24

25.

4. ПИ саны – PI
мысал:
Alert(Math.PI)
5.1/2 санының квадраттық түбірі – SQRT1_2
мысал:
Alert(Math.SQRT1_2)
6. 2 санының квадраттық түбірі – SQRT2
мысал:
Alert(Math.SQRT2)
25

26. 6.2. Стандартты функциялар

1. Аргументтің aбсолюттік мәні – abs(arg)
мысал:
var x = -25;
var y
y = Math.abs(x);
alert(y);
2. sin(arg), cos(arg), tan(arg) тригонометриялық
функциялары:
мысал:
var x = Math.PI/4;
var y
y = Math.sin(x);
alert(y);
3. Кері тригонметриялық функциялар asin(arg), acos(arg),
atan(arg) :
var x = 0.5;
var y
26
y = Math.asin(x);

27.

4. Экспонента және натуралдық логарифм: exp(arg),
log(arg)
var x = 1;
var y
y = Math.exp(x);
alert(y);
5. Аргументтен үлкен немесе
соған тең сан: ceil(arg)
var x = -2.69;
var y
y = Math.ceil(x);
alert(y);
6. Аргументтен кіші немесе
соған тең сан: floor(arg)
var x = -2.69;
var y
y = Math.floor(x);
alert(y);
27

28.

7. Аргументті жақын бүтін санға дейін дөңгелектеу: round(x)
var x = -2.69;
var y = Math.round(x);
alert(y);
8. Экспонента мен натуралдық
логарифм: exp(arg), log(arg)
var x = 1;
var y
y = Math.exp(x);
alert(y);
9. аргументтің квадраттық
түбірі : sqrt(arg)
var x = 3;
var y
y = Math.sqrt(x);
alert(y);
28

29.

10. Екі аргументтің үлкенін немесе кішісін анықтау
max(arg1, arg2), min(arg1, arg2) :
var x = 3;
var y = Math.min(x,10);
alert(y);
11. Санның дәрежесін табу
pow(arg1, arg2) :
arg1-дің arg2 дәрежесі
var x = 2;
var y = Math.pow(x,10);
alert(y);
12. [0,1] аралығынан кездейсоқ
сан алу: random()
alert(Math.random());
29

30. 6.3. Тұтынушы функциялары

Программалауда бір командалар тобын бірнеше рет
қайталауға тура келетін жағдайлар жиі кездеседі. Егер
қайталау «бір орында» орындалатын болса — (while,
for) циклдар қолданылады. Ал егер кодтарды программаның әр жерінде қайталау қажет болса — оны
тұтынушы функциясы ретінде жазу керек болады.
Функцияларды сипаттау және пайдалану. Мысалы,
егер берілген бүтін санның цифрларының қанша
екенін анықтау керек болса, оны бір рет анықтап
алып, одан кейін математикадағы сияқты F(num) деп
жазып, ол функцияның ішкі әрекетін қарастырмай,
кодтарын жазбай, нәтижесін есептеуге болады.
Мысалы, тұтынушы үш сан енгізіп солардың жалпы
30
цифрлары санын анықтауы қажет болсын.

31.

Осы мысалдың программасы:
// Количество цифр в целом положительном числе num.
// Вход: num (целое положительное число).
// Выход: количество цифр в num.
function F(num)
{
var len = num ? 0 : 1;
while(num)
{
num = (num - num % 10) / 10;
len ++;
}
return len;
}
var sum = 0;
var num1, num2, num3;
num1 = prompt("Введите первое число", "");
sum += F(numl) ;
num2 = prompt("Введите второе число", "");
sum += F(num2) ;
num3 = prompt("Введите третье число", "");
sum += F(num3) ;
alert("Общее число введенных цифр: " + sum);
31

32.

Браузер бұл скрипті былай орындайды. Мына жазу:
function F(num)
{
...
}
орындалмайды, бірақ браузер: «F атты функция
сипатталды» деген мәліметті есте сақтайды. Өйткені
function түйінді сөзі және оның блогы {...}
командалар тізбегі емес, тек декларация (хабарлама,
сипаттама) ғана.
Функциядан кейін орналасқан командалар әдеттегідей
орындалады. Соның ішінде F функциясы кездессе,
браузер функция сипаттамасына оралып, оның
формальды аргументі num орнына num1, num2, num3
тәрізді нақты параметрлерді қойып орындап шығады.
32

33.

Негізінде параметрлерді ауыстыру кезінде браузер F
функциясын
орындамай
тұрып,
мынадай
меншіктеулер жасайды:
num = num1; — сонан соң F(numl)орындау;
num = num2; — сонан соң F(num2) орындау;
num = num3; — сонан соң F(num3) орындау.
Жалпы функцияны сипаттау былай атқарылады:
function Функция_аты(үтірмен бөлінген
формальды аргументтер тізімі)
{
...
функция тұлғасы
...
return (мәні);
}
33

34.

return командасы программада қолданылатын функция
мәндерін анықтайды, ол бірнешеу болуы да мүмкін,
тіпті болмауы да мүмкін. Ол болмаса, функция
ешқандай мән бермейді, мұндайда функцияны
өрнектерге енгізуге болмайды. Мысалы, мәні жоқ
функцияны меншіктеу командасында пайдалануға
болмайды.
Функцияны шақыру (пайдалану) былай орындалады:
Функция_аты(үтірмен бөлінген нақты
аргументтер тізімі)
Нақты аргументтер ретінде константа, айнымалы,
өрнек немесе сан қолданыла алады.
34

35.

F атауын функцияға дұрыс берілген атау деп
айта алмаймыз, мұнда математикадағы сияқты
функция
бір
әріппен
белгіленген.
Программалауда бір әріппен емес бір сөзбен
белгілеу қалыптасқан, ол функция әрекетін
білдіретін сөз болуы тиіс. Жоғарыда,ы
мысалда
DlinaChisla
немесе
LenOfNumber атаулары F атауынан гөрі
түсініктілеу болар еді.
35

36.

Функция аты шектелмейді, бірақ ол бір-ақ сөзден
тұруы тиіс (бос орын болмауы тиіс). Атау латын
әріптері мен цифрлардан тұрады, астын сызу
таңбасын қолдануға болады. Орыс, қазақ әріптерін пайдалануға болмайды. Атаудың алғашқы
символы әріп немесе астын сызу таңбасы болуы
керек. Әріптер регистрі бірдей болып саналмайды. Мысалы,
«LenOfNumber» және
«Lenofnumber» атаулары бірдей емес болып
саналады.
36

37.

«Жоғарыдан төмен қарай» жобалау
Функцияны бірнеше рет пайдаланғанда ғана, оның
тиімділігі артады және оны әр түрлі программаларда
пайдаланған дұрыс.
Программалауда кітапханалық функциялар жиі
қолданылады. Мәліметтерді енгізу/шығару, математикалық есептеулер, терезелер жасау, тышқан шертулерін
өңдеу — осылар көптеген программаларда кездеседі.
Әрине, оларды бір рет дұрыстап программалап алу
керек. Кейбір жиі орындалатын функциялар программалау жүйелерінде де қолданылады, мысалы, alert және
prompt функциялары, олар браузердің өзінде кодталған.
37

38.

Дегенмен, функцияларды ең жиі әрі кең қолданылатын аймақ — программалар құру технологиясы,
мұнда алдымен мәселені шешудің көп сатылы
схемасы жобаланады да, әр сатысына жеке функция
тағайындалады. Программалау сатының төменгі
(түпкі) жағынан жоғары қарай біртіндеп жүргізіледі.
Осылай жобалау тәсілі «шашыраңқы (нисходящая)
технология» немесе «жоғарыдан төмен қарай» деп
аталады. Ол адамның ойлау қабілетіне сәйкес етіп
құрастырылған: біз жобаны барлық жағынан бірден
қарастыра алмаймыз.
38
English     Русский Правила