Home >  > JavaScript خاتىرىسى: Math() ئوبىكتىنى چۈشىنىش ۋە ئىشلىتىش

JavaScript خاتىرىسى: Math() ئوبىكتىنى چۈشىنىش ۋە ئىشلىتىش

3

ھەرقانداق بىر پىروگىرامما تىلىغا ئوخشاشلا JavaScriptk تىمۇ ئاددى ماتىماتىكىلىق ھېسابلاش ئۇسسۇللىرى ۋە فورمۇلالار تەمىنلەنگەن. يەنى Math() ئوبىكتى ئىچىدىكى تەييار ئۇسسۇللار ئارقىلىق ئادەتتىكى ھېسابلاشلارنى بىمالال ئېلىپ بارالايمىز، شۇنداقلا بۇنىڭ ئۈنۈمى JS بىلەن ئۆزىمىز يازغان ئىپادىلەردىن كۆپ يۇقىرى بولىدۇ. ئويلاپ باقساق JS نى ئىشىتىش جەريانىدا ئۇنىڭ Math() ئوبىكتى تەمىنلىگەن ئۇسسۇللارنى بىلىپ - بىلمەي دائىملا ئىشلىتىمىز. مەسىلەن: ئىختىيارىي سان ھاسىللاش، ئونلۇق كەسىر سانلارنى پۈتۈنلەپ ئېلىش دېگەندەك... تۆۋەندە بۇ ئوبىكتنى قىيما قىلىپ چانايمىز(چاقچاق)!

مەزكۇر ئوبىكتنىڭ max() ۋە min() ئۇسسۇلى

بۇلار Math() ئوبىكتىنىڭ كۆپ ئىشلىتىلىدىغان ھېسابلاش ئۇسسۇللىرىدىن بولۇپ، ئادەتتە بىر گۇرۇپپا سانلىق مىقدار ئىچىدىن ئەڭ چوڭ ياكى ئەڭ كىچىك قىممەتنى تېپىپ چىقىشتا قوللىنىلىدۇ. بۇ ھەر ئىككى ئۇسسۇل خالىغان ئۇزۇنلۇقتىكى سانلىق مىقدار گۇرۇپپىسى پارامىتىرىنى قوبۇللايدۇ. مەسىلەن ئالايلۇق:

var max=Math.max(3,4,5,6,8,9,56,7,8,87);
		alert(max);  //87

		var min =Math.min(3,4,5,6,8,9,56,7,8,87);
		alert(min);  //3

يۇقىرىقى سان گۇرۇپپىسىنىڭ ئىچىدە ئەڭ چوڭ سان 87 ۋە ئەڭ كىچىك سان 3 ئىدى. Math() ئوبىكتىنىڭ مۇناسىۋەتلىك ئۇسسۇللىرى ئارقىلىق ئۇلارنى ناھايىتى ئاسانلا تېپىپ ئالغىلى بولىدۇ. بۇ خىل ئۇسسۇلدا if جۈملىسى ئارقىلىق تاپقانغا قارىغاندا بىكار ئىزدەشلەردىن خالىي بولىمىز. دېمەك، مىقدارلارنى بىر - بىرلەپ ئىزدىگەندىن ئۈنۈملۈك.

مەزكۇر ئوبىكتنىڭ سان پۈتۈنلەش ئۇسسۇللىرى

ئادەتتە ئونلۇق كەسىر سانلارن پۈتۈنلەپ ئېلىشنىڭ ئۇسسۇللىرى ھەرخىل. بىراق ئۈنۈمى ئەڭ قالتىس بولىدىغىنى يەنىلا Math() ئوبىكتىدا تەمىنلەنگەن مۇنۇ ئۈچ ئۇسسۇلدىن ئىبارەت:
1. Math.ceil() ئۇسسۇلى ==> يۇقىرىغا قاراپ پۈتۈنلەيدۇ. يەنى ئونلۇق كەسىر چېكىتى كەينىدىكى سانلار نۆلدىن يۇقىرى بولسىلا ئالدىنقى خانىگە پۈتۈنلەپ بېرىدۇ.
2. Math.floor() ئۇسسۇلى ==> تۆۋىنىگە قاراپ پۈتۈنلەيدۇ. يەنى ئونلۇق كەسىر چېكىتى كەينىدىكى سانلار 9 ۋە ئۇنىڭدىن كىچىك بولسىلا قالدۇرىۋىتىدۇ.
3. Math.round() ئۇسسۇلى ==> ئۆلچەملىك تۆتنى قالدۇرۇپ، بەشنى پۈتۈنلەپ ئېلىش بويىچە پۈتۈنلەيدۇ.
مەسىلەنلەر:

// ceil() ussulida putunlesh
		 alert(Math.ceil(24.9)); //25
		 alert(Math.ceil(24.5)); //25
		 alert(Math.ceil(24.1)); //25
		 
		 // floor() ussulida putunlesh
        alert(Math.floor(24.9)); //24
        alert(Math.floor(24.5));  //24
        alert(Math.floor(24.1)); //24

        // round() ussulida putunlesh
		 alert(Math.round(24.9)); //25
		 alert(Math.round(24.5));  //25
		 alert(Math.round(24.1));  //24

Random() ئىختىيارىي سان ھاسىللاش ئۇسسۇلى

دېمىسەممۇ بۇ random() نى ئەڭ كۆپ ئىشلىتىمىز. بۇ ئۇسسۇل ئەمەلىيەتتە 0بىلەن 1 ئارلىقىدىكى خالىغان بىر قىممەتنى قايتۇرىدۇ. بەزى ۋاقىتلاردا بۇ ئۇسسۇل ھەقىقەتەنمۇ قولايلىق. مەسىلەن: چەك تارتىش، ئختىيارىي تەرتىپكە تىزىش دېگەندەك. ئەلۋەتتە ئىشلىتىشىمۇ ئىنتايىن ئاسان. يەنى

qimmet=Math.floor(Math.random()* mumkin qimmet omumiy sani + mumkin qimmet bashlinish qimmiti)

مونۇ شەكىلدە قوللىنىشقا بولىدۇ. بۇيەردە Math.floor() ئۇسسۇلىنى ئىشلىتىشىمىزدىكى مەقسەت؛ ئادەتتە random() ئۇسسۇلى 0 دىن چوڭ، 1 دىن كىچىك كەسىر سان قايتۇرىدۇ بۇنىڭغا بىر پۈتۈن ساننى كۆپەيتىپ، يەنە بىر ساننى قوشۇپ بەرسەكمۇ ئوخشاشلا كەسىر سانلىق نەتىجە بولۇشى مۇمكىن، بىزگە لازىمى پۈتۈن سان. شۇڭا پۈتۈنلەيمىز! مەسىلەن: 1 دىن 10 غىچە بولغان ئىختىيارىي پۈتۈن سان ھاسىللىماقچى بولساق مۇنداق يازىمىز:

var num=Math.floor(Math.random()*9+2);

چۈشەنگەندە: 1- دىن 10 غىچە جەمئىي 9 مۇمكن سان بار؛ بۇنىڭ ئىچىدە لازىملىق مۇمكىن سانلار 2 دىن باشلىنىدۇ، شۇڭا يۇقىرىقىدەك يازىمىز.
ئەلۋەتتە بىر فۇنكىسىيە بولاقلىۋىلىپ، ئۇدۇل كەلگەن يەردە تېخىمۇ چۈشىنىشلىك قىلىپ ئىشلىتىشكە بولىدۇ. مەسىلەن تۆۋەندىكدەك:

function selectfrom(lowerValue, upperValue){
		var choices=upperValue-lowerValue+1;
		return Math.floor(Math.random()*choices+lowerValue);
	}
	var randNum=selectfrom(2,10);
	alert(randNum);

يۇقىرىقى فونكىسيەرىمىزگە ئىختىيارىي سان ھاسىللايدىغان دائىرىدىن ئەڭ كىچىك ۋە ئەڭ چوڭ سان ئۆتكۈزۈلىدۇ. ئەڭ چوڭىدىن ئەڭ كىچىكىنى ئېلىۋىتىپ، 1 نى قوشۇپ بەرسەك مۇمكىن قىممەتلەرنىڭ ئومىي سانى چىقىدۇ. ئاندىن يۇقىرىقى ئۇسسۇلغا بۇ قىممەتنى پارامىتىرلار قىلىپ ئۆتكۈزۈپلا كۆزلىگەن مەقسەتكە يىتەلەيمىز. ئەلۋەتتە بۇ فۇنكىسيەرىمىزنى جانلىق ئىشلىتىپ، تۆۋەندىكىدەك ئىختىيارىي رەڭ ھاسىللىيالايمىز:

 
function selectfrom(lowerValue, upperValue){
		var choices=upperValue-lowerValue+1;
		return Math.floor(Math.random()*choices+lowerValue);
	}
	 var colors=["red","green","blue","yellow","balck","pruple","brown"];
	 var color=colors[selectfrom(0,colors.length-1)];
	 	alert(color);  // yellow yaki balck digendek xalighan reng namini qayturidu

چۈشەنگەندە: selectfrom ناملىق فۇنكسىيەرىمىزنىڭ ئىككىنچى پارامتىرىنىڭ ئورنىغا colors گۇرۇپپىسىنىڭ ئۇزۇنلۇقىنى ئۆتكۈزدۇق. دېمەك، گۇرۇپپا ئىچىدىكى ھەرپ بەلگىلىرىنىڭ ئېندىكىس ئادرىسىنى ئختىيارىي ھاسىلاپ ئاندىن شۇ ئېندىكىستىكى قىممەتنى ئالساقلا بولىدۇ.

مەزككۇر ئوبىكتنىڭ باشقا ئۇسسۇللىرى

Math ئوبىكتىنىڭ يەنە تۆۋەندىكىدەك بىرقانچە ئۇسسۇللىرىمۇ بار بولۇپ، زۆرۈر بولغاندا جانلىق ئىشلىتىشكە بولىدۇ:
1. Maht.abs(num) -- مۇتلەق قىممەت تېپىش
2. Math.exp(num) -- يەنى e نىڭ دەرىجىسى
3. Math.log(num) -- تەبئىي لوگارىفما
4. Math.pow(num,power) -- مەلۇم ساننىڭ دەرىجىسى
5. Math.sqrt(num) -- كۋادرات يىلتىزى
6. Math.acos(num) -- تەتۈر كوسىنوس قىممىتى
7. Math.asin(num) -- تەتۈر سىنوس قىممىتى
8. Math.atan(num) -- تەتۈر تانگىنوس قىممىتى
9. Math.atan2(x,y) -- يەنى y/x نىڭ تەتۈر تانگىنوس قىممىتى
10. Math.cos(num) -- كوسىنوس قىممىتى
11. Math.sin(num) -- سىنوس قىممىتى
12. Math.tan(num) تانگىنوس قىممىتى
دېمەك يۇقىرىقى ئۇسسۇللار ئادەتتە JS تىكى ھېسابلاش ئىھتىياجىمىزنى تۈگەل قاندۇرۇپ كېتەلەيدۇ. تۆۋەندە موشۇ ئۇسسۇلارنى قوللىنىپ ئاددىيغىنە بىر ھىسابلىغۇچ ياساپ باقتىم. قىزىققۇچىلار كودلىرىغا قاراپ باققايسىلەر:
ھىسابلىغۇچنىڭ تەرقى - تۇرقى مۇنداق : ھەقىقى ئۈنۈمىنى بۇيەردىن كۆرۈڭ
jsCalculator
ئاندىن JS كود قىسمى تۆۋەندىكىدەك:

//Hisablash jeryanida lazim bolidighan paramitirlar
var formulaToShow="";  // korsitidighan hisablash ipadisi
var  formulaToCalcu="";//hisablaydighan formula
var result=" ";  //netije
var saved="0";   //saqlanghan miqdar


//hisablash ipadisi funkisiyesi turghuzush
function TypeFormula(com)
{
  //aldinqi ipadini hisaplap bolghan bolsa, ikranni tazlap qayta hisablaydu
  if((result!=" "||result=="0") && com!="save"){
    formulaToShow="";
    result=" ";
  }
  
  // konupka uchurlirigha irishish
  switch(com)
  {
    case "clear"://tazilash
       formulaToShow="";
       result=" ";
       break;
     case "back"://qaytish
       {
           var f=formulaToShow;
       if(f.substring(f.length-5,f.length)=="asin("||f.substring(f.length-5,f.length)=="acos("||f.substring(f.length-5,f.length)=="atan("||f.substring(f.length-5,f.length)=="sqrt(")
         formulaToShow=formulaToShow.substring(0,formulaToShow.length-5);
       else if(f.substring(f.length-4,f.length)=="sin("||f.substring(f.length-4,f.length)=="cos("||f.substring(f.length-4,f.length)=="tan("||f.substring(f.length-4,f.length)=="exp(")
         formulaToShow=formulaToShow.substring(0,formulaToShow.length-4);
       else if(f.substring(f.length-3,f.length)=="ln(")
         formulaToShow=formulaToShow.substring(0,formulaToShow.length-3);
       else 
         formulaToShow=formulaToShow.substring(0,formulaToShow.length-1);
       }
       break;     
     
     case "sign":
       {if (formulaToShow=="")formulaToShow="-";
       else if(formulaToShow[0]=="-")formulaToShow=formulaToShow.substring(1,formulaToShow.length);
       else formulaToShow="-"+formulaToShow;}
       break;
       case "save": // netijini saqlash
         saved=formulaToShow;
      break;
      case "getsave":  // saqlighanni elish
         formulaToShow=formulaToShow+saved;
      break;
      case "result":// hisablash netijisi
       {if(formulaToShow=="") result=" ";
       else {
         formulaToCalcu=formulaToShow.toString();
         formulaToCalcu=formulaToCalcu.replace(/sin/g, "Math.sin");
         formulaToCalcu=formulaToCalcu.replace(/cos/g, "Math.cos");
         formulaToCalcu=formulaToCalcu.replace(/tan/g, "Math.tan");
         formulaToCalcu=formulaToCalcu.replace(/asin/g, "Math.asin");
         formulaToCalcu=formulaToCalcu.replace(/aMath.sin/g, "Math.asin");
         formulaToCalcu=formulaToCalcu.replace(/acos/g, "Math.acos");
         formulaToCalcu=formulaToCalcu.replace(/aMath.cos/g, "Math.acos");
         formulaToCalcu=formulaToCalcu.replace(/atan/g, "Math.atan");
         formulaToCalcu=formulaToCalcu.replace(/aMath.tan/g, "Math.atan");
         formulaToCalcu=formulaToCalcu.replace(/exp/g, "Math.exp");
         formulaToCalcu=formulaToCalcu.replace(/ln/g, "Math.log");
         formulaToCalcu=formulaToCalcu.replace(/sqrt/g, "Math.sqrt");

       try {result=eval(formulaToCalcu);}
       catch (exception) {
                 window.alert(exception); }
         }
       }
       break;
       default:
       formulaToShow+=com; 
       break;
  }

   txtShow.innerHTML=formulaToShow+"
"+result+"
"; }

پايدىلغانغان مەنبە: JavaScript高级程序设计(第3版)

بۇلارنىمۇ ياقتۇرۇپ قالىسىز

ئۆز - ئۆزۈمنى ئىزدەش بوسۇغىسىدا...


ئۈنچىلەر (3)
نەقىللەر (0)
  1. بىلرام [ جۇغلانما: 13 نومۇر ] Google Chrome 41.0.2272.76Windows 7 دىۋان 2015/04/02 04:52

    ماۋۇ تەشنا بىلوگىغا دۇم ياتىدىغان يەرگە يەتتى . :eek: :razz:

  2. ھاجى [ جۇغلانما: 44 نومۇر ] Google Chrome 41.0.2272.101Windows 8 گىلەم 2015/04/02 07:49

    ئاداش پەچەتقۇ! مۇشۇنداق كىچىك تىپتىكى دائىم ئىشلىتىدىغان قۇراللارنى، ئويۇنلارنى بىر يەرگە جەملەپ قويساق… يېقىندا بىرقانچە كاتتا ئويۇن ئۇچراپ قالغان. :lol:

  3. مەردانە [ جۇغلانما: 3 نومۇر ] Google Chrome 35.0.1916.153Windows 7 كىگىز 2015/04/08 15:48

    داۋاملىق تىرىشىڭلاربۇرادەر،سىلەرنى ھەرۋاقىت قوللايمەن. :lol:

  • كۆچۈرۈلمە يوق

ئۈنچە قالدۇرۇش