Ауыспалылар
Ауыспалы – ол деректерді сақтау орны. Оның аты, мәні және түрі бар. Мысалы, осы хабарландыру (декларация деп аталады):
int pin = 13;
pin атымен, 13 мәнімен және int түрімен ауыспалыны жасайды. Одан кейін бағдарламада оның мәнімен жұмыс істеу мақсатында аты арқылы осы ауыспалыға жүгінуге мүмкіндік болады. Мысалы:pinMode(pin, OUTPUT);
бекітуде өткізгіштің (13) мәні бар, ол pinMode() атқарымына берілетін болады. Бұл жағдайда ауыспалыны пайдалану қажеттілігі жоқ. Бекіту мынадай түрде жұмыс істей алады:
7.2.1 Переменные.docx
«Роботты техника». 4ші деңгей. 13 сабақ.
Сабақтың тақырыбы: Arduinoда ауыспалылар.
Сабақтың ұзақтығы: 2 сағ.
Ауыспалылар
Ауыспалы – ол деректерді сақтау орны. Оның аты, мәні және түрі бар. Мысалы, осы
хабарландыру (декларация деп аталады):
int pin = 13;
pin атымен, 13 мәнімен және int түрімен ауыспалыны жасайды. Одан кейін бағдарламада
оның мәнімен жұмыс істеу мақсатында аты арқылы осы ауыспалыға жүгінуге мүмкіндік
болады. Мысалы:
pinMode(pin, OUTPUT);
бекітуде өткізгіштің (13) мәні бар, ол pinMode() атқарымына берілетін болады. Бұл
жағдайда ауыспалыны пайдалану қажеттілігі жоқ. Бекіту мынадай түрде жұмыс істей
алады:
pinMode(13, OUTPUT);
Ауыспалының артықшылығы ол өткізгіштің мәнін бір рет анықтап, сосын оны бірнеше рет
пайдалануға болады. Салдарынан 13 өткізгішті 12 өзгерту кезінде бағдарлама кодында тек
бір жолды ғана ауыстыру жеткілікті болады. Сонымен қатар ауыспалының мәніне көңіл
бөлу үшін арнайы аттарды пайдалануға болады (мысалы, RGB жарықдиодын басқаратын
бағдарламаның ауыспалы redPin, greenPin және bluePin болуы мүмкін).
Ауыспалылардың сан сияқты мәндердің алдында басқа артықшылықтары бар. Беруді
пайдалана отырып, ауыспалының мәнін өзгерту мүмкіндігі бар. Мысалы:
pin = 12;
ауыспалының мәнін 12 санына өзгертеді. Бұл мысалда ауыспалының түрі айқындалмайды,
себебі ол беру операциясымен ауысады. Ауыспалының аты үнемі түрмен байланысты, тек
мәні өзгереді. [1] Мән беру алдында ауыспалыны декларациялау керек. Ауыспалыны декларациялаусыз оған мән беруден келесі хабарлама келеді: error: pin was not declared in
this scope".
Бір ауыспалыны екіншіге беру кезінде бірінші ауыспалының мәнін екіншіге көшіріп алу
жүргізіледі. Бір ауыспалының мәнін өзгерту екіншіге әсер етпейді. Мысалы, жазбадан
кейін:
int pin = 13;
int pin2 = pin;
pin = 12;
тек pinнің мәні 12 болады, ал pin2 13ке тең.
Жоғарыда келтірілген қате туралы хабарламада "scope" сөзі нені білдіреді? Ол
бағдарламаның бөлігіне жатады, онда ауыспалы көрерлік жерде пайдаланылуы мүмкін.
Көрерлік жер оның декларациялау орнымен айқындалады. Мысалы, егер бағдарламалық
кодтың басында оған декларациялау жүргізілсе, онда ауыспалыны барлық бағларламада
пайдалану мүмкіндігі болады. Мұндай ауыспалылар ғаламдық деп аталады. Мысалы:
int pin = 13;
void setup()
{
pinMode(pin, OUTPUT);
}
void loop()
{
digitalWrite(pin, HIGH);
}
Pinнің setup() және loop() екі атқарымда да пайдаланылатыны мысалдан көрінеді. Екі
атқарым да бір ауыспалыға сілтеме жасайды, осылайша, бір атқарымнан оның мәнін
ауыстыру екіншінің де мәніне әсер етеді:
int pin = 13;
void setup()
{
pin = 12;
pinMode(pin, OUTPUT); }
void loop()
{
digitalWrite(pin, HIGH);
}
Loop()тан шақырылатын digitalWrite() атқарымымен 12 мәні беріледі, себебі ол setup()
атқарымында ауыспалыға берілген.
Егер ауыспалы атқарымда бір рет қана пайдаланылса, онда оны атқарымның жақшаларымен
шектей отырып, бағдарламалық кодтың осы бөлігінде декларациялайды. Мысалы:
void setup()
{
int pin = 13;
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);
}
Бұл мысалда ауыспалы setup() атқарым ішінде ғана пайдаланылады. Осы кодты сипаттау
кезінде:
void loop()
{
digitalWrite(pin, LOW); // wrong: pin is not in scope here.
}
«error: 'pin' was not declared in this scope» хабарламасы шығатын болады. Бұл хабарлама сіз
ауыспалыны бағдарламада бір жерде декларациялаған болсаңыз, бірақ оны көрерлік
жерден тыс пайдалансаңыз осы хабарлама шыға береді.
Барлық ауыспалыларды неге ғаламдық етіп істемеске? Ауыспалы қай жерде
пайдаланылатыны әлі белгісіз болса, онда оны неліктен бір атқарыммен шектеу керек?
Ауыспалы шектелген кезде оның өзгеру көзін табу оңай. Егер ауыспалы ғаламдық болса,
онда оның мәні бағдарламалық кодтың кез келген орнында өзгеруі мүмкін, ол барлық
бағдарлама бойынша оны қадағалау керектігін білдіреді. Мысалы, ауыспалының бірнеше
жаңылыс мәні болғанда, онда көрініс жері шектеулі болса себебін табу әлдеқайда жеңіл. [1] Python сияқты бағдарламалаудың кейбір тілдерінде түрлер ауыспалылардың аттарымен
емес, ал олардың мәндерімен байланыстырады. Осылайша, ауыспалының кез келген түрінің
мәнін иелену мүмкіндігі бар. Бұл динамикалық типтендіру деп аталады.
: Arduino-да ауыспалылар
: Arduino-да ауыспалылар
: Arduino-да ауыспалылар
: Arduino-да ауыспалылар
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.