34-блог: Айныўшылар ҳәм Объект ҳаққында 1-бөлим
JavaScript қaлай үйренемиз? 1-бөлим
JavaScript қaлай үйренемиз? 2-бөлим
JavaScript даўамы: Функция дегенимиз не? 3-бөлим
JavaScript даўамы: If/else дегенимиз не? 4-бөлим
JavaScript даўамы: Цикл (loop) дегенимиз не? 5-бөлим
JavaScript даўамы: Логикалық операторлар (&&, ||, !) 6- бөлим
Жоқарыда ҳәзирге шекем JavaScript бағдарлама тили ҳаққында жазған блогларымды келтирип өттим.
Және қосымша төмендеги еки блогты оқып шығыўды усыныс етемен.
Мағлыўмат типлери дегенимиз не? 1-бөлим
Мағлыўмат типлери дегенимиз не? 2-бөлим
Бул блог алдыңғы жазылған блоглардың даўамы ретинде JavaScript (ҳәм басқа бағдарлама тиллериндеги) тилиндеги айныўшы (variable) ҳәм объект (object) деген түсиниклер ҳаққында түсиндиреди.
"Айныўшы деген не өзи? Объект дегениң мен билген объект пе?" деп ойлап ҳайран қалмаўыңыз ушын да "Мағлыўмат типлери" туўралы жазған блогымды оқып шығыўды мәсләҳәт берер едим.
Сол блогта компьютер ядын гидимандай тартпаға мегзеген едик. Тартпалардың ишине зат қойсақ, ядқа мағлыўмат сақлағандай боламыз деп едик.
Әлбетте, бул уқсатыў оғыры әпиўайыластырылған.
Анық компьютер ядын алып қарасақ, ол сан-санақсыз киши клетка-ханалардан ибарат. Ҳәр бир хана 0 яки 1 деген мағлыўматты сақлап турады.
Мектепте информатика сабағында 0 ҳәм 1 деген санлар ҳаққында үйренгениң есиңизде ме? Оларды санлар деп айтыўға да болады. Және электр сигнал деп айтсақ та болады. Клеткадағы 1 бул жоқары вольтлы электр сигнал жәрдеминде көрсетиледи. Клеткадағы 0 электр сигнал азлығы яки жоқлығы арқалы көрсетиледи.
1 → клетка-хана жанық тур.
0 → клетка-хана өшик тур.
Компьютер ядында усы клетка-ханалар ҳәр түрли нәўбетте жанып, өшип мағлыўматлар (текст, файл, фото, видео, программа) сақлап қалынады.
Компьютер ядында мағлыўматты қалай сақлап қалатуғыны ҳаққында Youtubeта видео көрип едим. Мазмуны қызық болса да, оны түсиниў ушын мендеги базалық билим жетиспеди. Мүмкин, электр инженер, яки полупроводник (ярым өткизгиш, semiconductor), транзисторлар ҳаққында оқыған мамаңлар жақсы түсинер деп ойладым.
Бағдарлама жарататуғын адам ушын компьютер яды ҳаққында техникалық дәрежеде шуқыр билимге ийе болыў қәжет емес.
Бирақ компьютер яды туўралы билиў зәрүр болған бир-еки нәрселер бар. Олар төмендегише:
RAM ҳәм қатты диск
Стек (stack) ҳәм үйинди (heap)
Көрсеткиш (pointer)
Ҳәр бири ҳаққында қысқаша түсиндирип өтемен.
1. RAM ҳәм қатты диск
RAM дегенимиз бул оператив память еди. Компьютерде ядтың еки түри бар. Соның бири оператив яд. Екинши түри қатты диск. Оператив яд дата яки мағлыўматты ўақытша сақлап турыўға арналған болады. Кэш сыяқлы.
Мысал менен түсиндирейик. Қатты дискти компьютердиң үлкен китапханасы деп алайық. Ол жердеги текшелерде сан-санақсыз китаплар бар. Және китапхананың кирер жеринде "Көп/ең жақында оқылған китаплар" деген текше бар. Ол жерде сиз яки басқалар тәрепинен көп ямаса жақын арада оқылған китаплар, журналлар турады. Сизге бир китап керек. Китапханашы биринши "Көп/жақында оқылған китаплар" текшесин излеп көреди. Егер ол жерде жоқ болса, үлкен китапхананың ишин излеп кетеди. Сол китапты таўып алып келип, көп оқылған китаплардың текшесине қояды. Буның себеби кейинлеў және излеп келгениңизде тез таўып бериў ушын болады.
Бирақ ең көп яки ең жақында оқылған китаплар текшесиниң көлеми шекленген.
Егер текше толса, китапханашы бир-еки китапты алып таслап, бос орын жаратады.
Оператив яд тез ислейди, бирақ мағлыўматты көп ўақытқа сақлап қоя алмайды.
Қатты дискте мағлыўмат узақ ўақытқа, исенимли түрде сақланады, бирақ әсте ислейди.
Сонда қалай?
Мәселен, қандай да бир программаны иске қосқаныңызда яки файлды ашқаныңызда, сизиң компьютериңиз төмендеги ҳәрекетлерди әмелге асырады:
Қатты дискке барады.
Керекли мағлыўматты таўып, көширме нусқасын таярлайды.
Сол көширме нусқаны оператив ядқа жайлайды.
Көширме нусқаны иске қосады ҳәм сизге көрсетип береди.
2. Стек (stack) ҳәм үйинди (heap)
Программистлер stack ҳәм heap деген инглисше терминлер менен көп дусласады. Компьютердиң оператив ядында стек ҳәм үйинди деген яд түри жайласқан болады.
Олар физикалық көриниске ийе емес. Керисинше, бағдарлама компьютердиң оператив ядын қалай бөлистирип алып, пайдаланатуғыны бойынша еки түрли тәсили деп алсақ болады.
Стекти табақлар/тарелкалар топламы деп алайық. Кеширесиз, табақтан басқа мысал таба алмадым.
Stack деген инглисше сөз негизи топлам деген мәнисти аңлатады. Бирақ компьютер илиминде стек яды деп айтқан мақсетке муўапықлаў деп ойлайман.
Оператив ядта турған программа өз-өзин яғный не қылып, не қойып атырғанын билиўи керек. Стек яды усы хызметти атқарады. Ол программаның функцияларын, айныўшыларды бақлап барады.
Стек ядының ең тийкарғы қәсийети бул соңғы рет кирген биринши шығыўы керек деген қағыйда есапланады. Бул қасийетти инглис тилинде Last-In, First-Out (LIFO) деп атайды.
LIFO дегениңди түсинбедим десеңиз, жоқарыда айтып өткен тарелкалар топламын көз алдыңызға келтириң. Тарелкаларды бириниң үстине бирин қойып тақладыңыз. Пайдаланатуғын ўақытта тәбийий түрде сол топламның ең үстинде турған тарелканы аласыз. Ең астында турған тарелканы алмайтуғын шығарсыз?
Мине усы процести соңғы рет кирген биринши рет шығады деп айтады.
Компьютердиң оператив ядында стек деген бөлими усы LIFO қағыйда бойынша ислейди.
Стекқа айныўшылар, функцияларды жайластырамыз.
Heap бул инглис тилинде үйим, үйинди деген мәнисти береди. Үйинди ядты үлкен складқа/ сақлаў бөлмесине уқсатыўға болады. Ол жерде тәртип ямаса қағыйда деген жоқ. Бир нәрсени жайғастырыў ушын оператив ядтан бос орын барма деп сорайсыз. Оператив яд үйинди ядтың ишин излеп көрип, бос орын бар жердиң адресин сизге береди. Сол жерге затыңызды қойып турсаңыз болады.
Демәк, үйинди яд та стек яд сыяқлы нәрсени белгили бир ўақытқа сақлап турыў ушын қолланылады. Үйинди ядтың стек ядтан парқы оның LIFO деген қағыйдаларға бойсынбайтуғыны.
Үйинди яд объектлер яки еле өлшеми белгисиз мағлыўматларды сақлап турыў ушын қолланылады. Базыда үйинди яд сол мағлыўматларды узағырақ мүддетке сақлап тура алады.
Бирақ екеўи бир бири мен жүз көриспейтуғын яд бөлимлери емес. Стек ҳәм үйинди яды бир бири менен көп алыс-берис қылады. Усы қатнасыққа көмек берип отырған тил алғышымыз бул көрсеткишлер (pointers) есапланады.
3. Көрсеткиш (Pointer)
Көрсеткиш бул компьютердиң оператив ядындағы 'тартпалардың' адресин сақлап туратуғын айныўшы. Көрсеткишлер ҳаққында ҳәзирше терең шуңғып түсиндирмесек те болады деп ойлайман. Келеси блогларда өз алдына тема қылып жазыўды мақул көрдим.
"Сонда жоқарыдағының ҳәммесин неге айтып өттиң өзи?"
Дурыс, айныўшылар ҳаққында жазаман деп едим. Айныўшылардың компьютердиң қайсы ядында жаратылып, жасап, набыт болатуғынын билиў керек.
Айныўшылар компьютердиң оператив ядында жаратылады. Ҳәр бир бағдарлама тили айныўшылар менен ислейди. Оларды билиў шәрт.
Айныўшы бул мағлыўматты сақлап туратуғын аты бар бөлме (Тартпа, қорап деп те атаған едик). Инглисше variable деп атайды.
JavaScript тилинде айныўшыларды let ҳәм const деп аталатуғын гилт сөзлер (keyword) жәрдеминде жаратамыз.
let news;Мысалы, жоқарыда news деген айныўшыны жәрияладық. Бирақ оның ишинде еле мағлыўмат жоқ.
news = "Базарда нырқ асты,";Енди news деген айныўшымызға текст түриндеги мағлыўмат жүрин жайладық.
Айныўшыларға ат бергенимизде инглисше сөзлерден қолланыў стандарт (конвенция) сыпатында қабыл етилген.
Жоқарыдағы айныўшыны төмендегише жәриялаўға да болады.
let news = "Базарда нырқ асты.";
let company = 'Samsung';
let city = 'Нөкис';
let price = 100;Демәк, айныўшы бул оператив ядтың ишиндеги клетка. Ҳәр бир клетка-хананың адреси бар. Солардан биреўин пайдаланатуғын ўақытта айныўшымыздың атын қойып аламыз. Ол жерге қәлеген бир мәнисти жайғастырыўымыз мүмкин. Мәселен, сан, текст, булев, массив ҳәм тағы басқа. Яки алдыңғы мәнисти алып таслап, басқасын қойсақ та болады.
Айныўшылардың мәнисин төмендегише өзгертсек болады.
let news = "Базарда нырқ асты.";
news = "Базарда нырқ төменледи.";Енди news деген айныўшымыздың ишинде "Базарда нырқ төменледи." деген текстли мәнис жайласқан болады.
Айныўшының атын қәлегенимизше қоя алмайтуғынымызды айтып өтиў керек.
Мысалы, let 123news деген қәте.
JavaScript тилинде айныўшыларға ат қойғанымызда еки түрли қағыйдаға бойсынамыз.
Айныўшының атын ҳәриплерден, санлардан, $ яки _ деген символлардан қураса болады.
Айныўшының атының биринши ҳәриби сан болмаўы керек.
Демәк, news123 дурыс.
Бирақ 123news бул қәте атама.
Алдыңғы блогларда const деген гилт сөз жәрдеминде айныўшыларды жәриялаўды үйренген едик. Және бир рет еслеп өтейик.
const бул let деген гилт сөздей, айныўшыны жаратқанымызда қолланамыз.
const арқалы жаратқан айныўшының мәнисин өзгерте алмаймыз. const гилт сөзи менен жаратылған айныўшының мәниси турақлы болады.
const myBirthday = '12.02.2002';Мысалы, жоқарыда мениң туўылған күним деген айныўшыны жараттық ҳәм ишине туўылған сәнени жайладық.
Енди усы айныўшының мәнисин өзгертпекшимиз, бирақ бундай қылыў қәтени келтирип шығарады.
myBirthday = '05.02.1998';Ҳәзирше айныўшылар ҳаққында билиўиңиз керек болған затларды жазып өттим. Кейинги блогта объектлер ҳаққында үйренемиз.






