КампутарыПраграмаванне

JavaScript цыклы: for, while, do-while

Гісторыя адукацыі сучаснага сінтаксісу мовы праграмавання падобна спазнання працэсаў адукацыі Сусвету. Што і як было спачатку ... Але цяпер усё проста і даступна.

Алгарытм ў канчатковым выніку - заўсёды паслядоўная ланцужок каманд. Раўналежнасць у праграмаванні - сукупнасць неяк скамбінаванай паслядоўнасцяў. Цыклічны алгарытм ніколі не быў больш практычным паслядоўнай або паралельнай ланцужкі каманд. Пазнакі, пераходы і ўмовы - усяго было дастаткова для любога рашэння. Функцыянальныя мовы пазбавілі значнасці гэтыя ідэі, але неабходнасць паўтарэння участкаў кода засталася.

Браўзэр: DOM, яго мова + сервер

На JavaScript цыклы засталіся, хоць функцыянальныя ідэі набылі асаблівы сэнс. Магчыма нешта засталося ад "Лісп" і "Пралогу", але, хутчэй за ўсё, вобласць, дзе жыве JavaScript, прывяла да таго што ёсць, але сумнеўна што гэта апошняе рашэнне.

JavaScript працуе ўнутры браўзэра, які атрымлівае старонку, разбірае яе ў DOM і запускае першы скрыпт. Усе астатнія старонкі, у тым ліку загружаныя на дадзенай - справа рук распрацоўніка, маніпулюе мовай, з дапамогай якога можа быць выкліканы код на сэрвэры і атрыманы вынік пры дапамозе механізму AJAX.

Браўзэр выконвае JavaScript-код, які можа карыстацца аб'ектамі браўзэра, у тым ліку той, што забяспечвае перадачу інфармацыі на сервер і атрыманне адказу, у якасці якога можа выступаць як HTML-разметка, так і стылі і ўласна код. Адказ можа быць прадстаўлены масівамі і аб'ектамі. Сэнс выкарыстоўваць на JavaScript цыклы губляецца, магчымасцяў абысціся без іх звышдастаткова, а рызыкаваць павесіць браўзэр бясконцай паслядоўнасцю каманд не самае лепшае рашэнне.

Уласна цыклы прысутнічаюць у большасці сінтаксічных канструкцый JavaScript, распрацоўшчык можа дапоўніць стандартныя канструкцыі ўласнымі функцыямі.

Становішча JavaScript ў прасторы кода

Сучасны праграміст нават не задумваецца, што выкарыстоўваецца ім цыкл (for, while, do while, ...) - у канчатковым выніку серыя тактаў (цыклаў) працэсара, простая паслядоўнасць двайковых аперацый, перапыняемая праверкамі лічыльнікаў, то ёсць ўмовамі.

Як такога цыклу няма на ўзроўні машыннага мовы: ёсць камбінацыя звычайных каманд, умоўных аперацый і пераходаў. Ўзроўнем вышэй, якое б сродак ні было выкарыстана для распрацоўкі браўзэра і интерпритатора JavaScript, цыклы будуць адназначна. Прычым «кавалкі кода» будуць прадстаўлены рознымі часамі і рознымі пакаленнямі праграмістаў. Паверхам вышэй знаходзіцца «будынак» JavaScript. Сінтаксіс што прапануе сучасная JavaScript цыклы.

JS - выдатны мова: практычны, сучасны і поўнафункцыянальны. Сінтаксіс гэтага інструмента ўключае ў сябе ўсе канструкцыі, якія прайшлі праверку часам і сталі непарушным падмуркам любога алгарытму. Але ці так неабходныя цыклы на самай справе? Прагрэс у праграмаванні часта задаваў сабе пытанні фундаментальнага характару, але толькі ў некаторых выпадках знаходзіў рашэнне.

аб'ектыўныя падставы

Цыкл можа быць усяго двух варыянтаў: па ўмове або па лічыльніку, але па сутнасці (на самым нізкім узроўні) любы цыкл - толькі па ўмове. У некаторых мовах сустракаецца цыкл "па кожнаму". На JavaScript цыклы foreach прадстаўлены канструкцыяй prop in object, але можна выкарыстоўваць варыянт array.forEach (...).

У любым выпадку варыянтаў два: машынны код, які выконвае ў канчатковым выніку ўсё алгарытмы праграміста, нават пішучага на інтэрпрэтуюць мовах, не мае ніякіх іншых варыянтаў паўтору ланцужкі каманд: ён можа нешта выконваць яшчэ раз, пакуль:

  • лічыльнік лічыць;
  • пакуль ўмова выконваецца.

JavaScript - тыповы інтэрпрэтатар. Яго асаблівасць: ён функцыянуе ўнутры браўзэра, выкарыстоўвае яго аб'екты і дазваляе выконваць алгарытмы на баку кліента, як пры загрузцы старонкі ў браўзэр, так і ў працэсе яе працы.

Просты цыкл па-кожнаму

На JavaScript цыклы foreach выглядаюць як прымяненне да масіву функцыі:

Ужыванне такіх цыклаў не выклікае цяжкасцяў. Фармальна тут няма як такога цыклу. Ёсць паслядоўнае зварот функцыі да элементаў масіва.

Цыкл па лічыльніку

Больш звыкла выглядаюць на JavaScript цыклы for:

Тут лічыльнікам выступае зменная, значэнне якой змяняецца па формуле і прыкметай канца цыклу з'яўляецца ўмова. Не абавязкова, каб формула і ўмова ўключалі ў сябе зменную цыклу. Але кантроль за момантам заканчэння цыкла цалкам вызначаецца іх зместам.

ўмоўныя цыклы

Варыянт з while JavaScript прапануе ў залежнасці ад таго, калі трэба правяраць ўмова. Калі цела цыклу можа быць не выканана ні разу - гэта адно, калі цела павінна быць выканана хоць бы адзін раз, гэта іншае:

У першым выпадку, інтэрпрэтуючы канструкцыю while, JavaScript спачатку правярае ўмова, і калі яно праўдзівае, то выконвае цыкл. У другім выпадку спачатку будзе выкананы цыкл. Калі ў выніку змены зменных, указаных у ўмове канструкцыі do while, яно прыме ілжывае значэнне, выкананне цыкла спыніцца.

Масіўныя камбінацыі простых алгарытмаў

Асноўная задача (складнік частка) любога алгарытму - знайсці, толькі потым прыняць рашэнне датычна таго, што рабіць далей. Самы прымітыўны варыянт пошуку - зварот да зменнай, вынік атрымліваецца непасрэдна. Калі зменных шмат, ці ў яе шмат значэнняў (масіў), то для выбаркі значэння неабходна знайсці тое, што вызначыць далейшае паводзіны скрыпту.

Такая простая дактрына зрабіла цыкл са лічыльнікам ў мове JavaScript своеасаблівай панацэяй ад усіх задач. Сучасныя кампутары адрозніваюцца хуткасцю. Часу для выканання скрыптоў у браўзэры звышдастаткова, спяшацца няма куды. Прасцей простага перабраць нешта дзеля чагосьці. У выніку на J avaScript цыклы for набылі вялікую папулярнасць.

Дрэннага ў гэтым накшталт нічога няма. Але за такім падыходам лёгка губляецца сутнасць, дзеля якой пішацца той ці іншы алгарытм. Дадзеныя не бываюць беспрадметнасьцю. Усё, дзеля чаго пішацца любая праграма, мае сэнс. Празмерна ужываючы на J avaScript цыклы for, распрацоўшчык можа не разглядзець патрэбную сутнасць і не стварыць адэкватны алгарытм.

Функцыянальнасць, іншае адлюстраванне рэальнасці

однотипного кода можно представить функциями - алгоритм сразу преобразится, основное тело скрипта уменьшится в размере, все станет читаемым и понятным. Ужываючы JavaScript-цыклы, прыклады аднатыпнае кода можна ўявіць функцыямі - алгарытм адразу зменіцца, асноўнае цела скрыпту паменшыцца ў памеры, усё стане чытэльным і зразумелым.

Гэта не кардынальна новае рашэнне, але па сутнасці сваёй гэта не выходзіць за рамкі іншых канструкцый мовы. У прыватнасці, J avaScript цыклы можна выявіць у класічнай функцыі split ():

cResult = '9,8,7,6,5,4' ; var cResult = '9,8,7,6,5,4';
aResult = cResult . var aResult = cResult. ( ',' ); split ( ',');

Тут няма ніякага цыклу, але як інакш выконваецца гэтая функцыя, калі не шляхам пошуку сімвала ',' і выкарыстання яго для аддзялення аднаго ліку ад іншага.

Абстрагуючыся ад таго, як гэта рэалізуецца ўнутры функцыі split (), можна дапоўніць JavaScript сваім функцыяналам, якія выкарыстоўваюць цыклы, з пункту гледжання выкарыстання - больш зручным. Істотна, што такі падыход прыводзіць да распрацоўкі функцыяналу для кожнай задачы адпаведна, але агульнае ўсё ж будзе пры такім падыходзе.

Гэтыя функцыі allt (), padc (), padl () і padr () - тое, чаго няма ў JavaScript, але часам трэба прыбраць з радка прабелы або выраўнаваць даўжыню радка злева, справа ці з абодвух бакоў. У целе гэтых функцый - JavaScript-цыклы. Проста, даступна і ніколі не павісне алгарытм, які выкарыстоўвае гэта.

Варыянты функцый пераўтварэнні лікаў з 16-карычная ў 10-ную сістэму вылічэння і назад, прасцей сказаць, з аднаго фармату дадзеных у іншы, выкананы тут з дапамогай цыклаў do while. Вельмі кампактны і эфектыўны сінтаксіс мовы.

Правільныя цыклы - адлюстраваньне рэчаіснасьці

JavaScript - не пара іншым мовам праграмавання і не адрозніваліся разнастайнасцю версій, а галоўнае, імкнецца не мяняць сінтаксіс, а развіваць і пашыраць яго.

Мысленне праграміста, які выкарыстоўвае JS, адрозніваецца ад мыслення праграміста PHP (у прыватнасці, і іншых моў у сукупнасці, ну хіба што "Пролог" і яго паслядоўнікі не ўваходзяць ў агульнае рэчышча), калі алгарытм не абмяжоўваецца зменнымі, масівамі, аператарамі прысвойвання, цыклічнымі канструкцыямі .

Калі ўявіць, што цыклаў няма, а задачу вырашыць трэба, то самы просты варыянт (павязка на вочы) - выказаць здагадку, што праграма апрацоўвае дадзеныя, якія ёсць кропкай або сістэмай кропак у інфармацыйнай прасторы. Што такое кропка і што такое сістэма кропак - справа канкрэтнай прадметнай вобласці. Для праграміста гэты тэзіс пазначае: ёсць простае дадзенае і ёсць сукупнасць простых дадзеных. Натуральна, простае дадзенае аднаго ўзроўню для ўзроўню ніжэй будзе сістэмай, а для ўзроўню вышэй - кропкай.

Пры такім падыходзе клопат кропкі - праяўляць сваю сутнасць праз свае метады. Калі кропка ў надсыстэмаю, то функцыя сістэмы - праяўляць сваю сутнасць як сукупнасці сутнасцяў якія ўваходзяць у яе кропак.

Такі падыход стары, як ідэя моў праграмавання, але да гэтага часу не знайшоў свайго адэкватнага адлюстравання ў праграмаванні. Многія праграмісты мысляць правільна, але вынік іх творчасці пакідае жадаць лепшага.

Карысна часам апранаць павязку на вочы, каб убачыць свет!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 be.atomiyme.com. Theme powered by WordPress.