[{"data":1,"prerenderedAt":1038},["ShallowReactive",2],{"manifest":3,"hreflang-alternates":901,"doc-pl-volang\u002Fjezyk":904},{"site":4,"branding":6,"contact":8,"organization_schema":10,"languages":54,"website":62,"docs":187,"blog":867},{"title":5},"Voldeno",{"logo":7,"company_name":5},"\u002Fimages\u002Flogo\u002Flogo_310.png",{"email":9},"contact@voldeno.com",{"schema_name":5,"legal_name":11,"founding_date":12,"tax_id":13,"identifiers":14,"address":21,"primary_email":9,"knows_about":26,"contact_points":39,"contact_point_available_languages":51},"Voldeno sp. z o.o.","2024","PL7252346262",[15,18],{"name":16,"value":17},"KRS","0001123648",{"name":19,"value":20},"REGON","52946949200000",{"street_address":22,"address_locality":23,"postal_code":24,"address_country":25},"Ogrodowa 8, Lobby B, 3p.","Łódź","91-062","PL",{"en":27,"pl":34},[28,29,30,31,32,33],"Smart Home","Smart Home Systems","Smart Home Automation","Building Automation","IoT","Home Automation System",[35,28,36,37,32,38],"Inteligentny dom","System Smart Home","Automatyka budynkowa","System automatyki domowej",[40,43,46,49],{"email":41,"contact_type":42},"support@voldeno.com","technical support",{"email":44,"contact_type":45},"sales@voldeno.com","sales",{"email":47,"contact_type":48},"partners@voldeno.com","partnerships",{"email":9,"contact_type":50},"customer service",[52,53],"Polish","English",[55,59],{"code":56,"name":57,"default":58},"pl","Polski",true,{"code":60,"name":53,"default":61},"en",false,{"enabled":58,"navigation":63,"path_keys":158,"section_index_slugs":180},{"pl":64,"en":121},[65,71,77,83,93,99,105,116],{"title":66,"slug":67,"path":68,"order":69,"template":70},"Smart Home, Automatyka budynkowa - Voldeno","index","pl\u002Findex",0,"home",{"title":72,"slug":73,"path":74,"order":75,"template":76},"Twój Dom","twoj-dom","pl\u002Ftwoj-dom",1,"homeowners",{"title":78,"slug":79,"path":80,"order":81,"template":82},"Dla Profesjonalistów","dla-profesjonalistow","pl\u002Fdla-profesjonalistow",2,"professionals",{"title":84,"slug":85,"path":86,"order":87,"children":88},"Produkty","produkty","pl\u002Fprodukty",3,[89],{"title":90,"slug":67,"path":91,"order":75,"template":92},"Inteligentne produkty​ Smart Home Voldeno","pl\u002Fprodukty\u002Findex","products",{"title":94,"slug":95,"path":96,"order":97,"template":98},"Kontakt","kontakt","pl\u002Fkontakt",4,"contact",{"title":100,"slug":101,"path":102,"order":103,"template":104},"O nas","o-nas","pl\u002Fo-nas",5,"about",{"title":106,"slug":107,"path":108,"order":109,"children":110},"Prawne","prawne","pl\u002Fprawne",6,[111],{"title":112,"slug":113,"path":114,"order":75,"template":115},"Polityka prywatności","polityka-prywatnosci","pl\u002Fprawne\u002Fpolityka-prywatnosci","page",{"title":117,"slug":118,"path":119,"order":120},"Realizacje","realizacje","pl\u002Frealizacje",999,[122,125,129,132,139,142,145,154],{"title":123,"slug":67,"path":124,"order":69,"template":70},"Voldeno: Smart Home, Building Automation","en\u002Findex",{"title":126,"slug":127,"path":128,"order":75,"template":76},"Your Home","your-home","en\u002Fyour-home",{"title":130,"slug":82,"path":131,"order":81,"template":82},"For Professionals","en\u002Fprofessionals",{"title":133,"slug":92,"path":134,"order":87,"children":135},"Products","en\u002Fproducts",[136],{"title":137,"slug":67,"path":138,"order":75,"template":92},"Smart Home Products​ from Voldeno","en\u002Fproducts\u002Findex",{"title":140,"slug":98,"path":141,"order":97,"template":98},"Contact","en\u002Fcontact",{"title":143,"slug":104,"path":144,"order":103,"template":104},"About Us","en\u002Fabout",{"title":146,"slug":147,"path":148,"order":109,"children":149},"Legal","legal","en\u002Flegal",[150],{"title":151,"slug":152,"path":153,"order":75,"template":115},"Privacy Policy","privacy-policy","en\u002Flegal\u002Fprivacy-policy",{"title":155,"slug":156,"path":157,"order":120},"Projects","projects","en\u002Fprojects",{"module_1wire":159,"downloads":162,"module_hub":165,"module_analog_input":168,"module_io":171,"module_relay":174,"privacy":177},{"pl":160,"en":161},"produkty\u002F1wire","products\u002F1wire",{"pl":163,"en":164},"pobieranie","downloads",{"en":166,"pl":167},"products\u002Fhub","produkty\u002Fhub",{"pl":169,"en":170},"produkty\u002Fanalog-input","products\u002Fanalog-input",{"en":172,"pl":173},"products\u002Fio","produkty\u002Fio",{"en":175,"pl":176},"products\u002Frelay","produkty\u002Frelay",{"pl":178,"en":179},"prawne\u002Fpolityka-prywatnosci","legal\u002Fprivacy-policy",{"en":181,"pl":184},{"projects":182,"products":183},"projects\u002Findex","products\u002Findex",{"produkty":185,"realizacje":186},"produkty\u002Findex","realizacje\u002Findex",{"enabled":58,"navigation":188,"section_redirects":842},{"en":189,"pl":609},[190,203,228,241,558,572,585,594,604],{"title":191,"slug":192,"path":193,"order":75,"children":194},"Getting Started","getting-started","en\u002Fdocs\u002Fgetting-started",[195,199],{"title":196,"slug":197,"path":198,"order":75},"Core Concepts and Terminology","concepts","en\u002Fdocs\u002Fgetting-started\u002Fconcepts",{"title":200,"slug":201,"path":202,"order":81},"System Overview for Installers","system-overview","en\u002Fdocs\u002Fgetting-started\u002Fsystem-overview",{"title":204,"slug":205,"path":206,"order":81,"children":207},"Modules & Peripherals","modules","en\u002Fdocs\u002Fmodules",[208,212,216,220,224],{"title":209,"slug":210,"path":211,"order":75},"Hub Module Wiring","hub-wiring","en\u002Fdocs\u002Fmodules\u002Fhub-wiring",{"title":213,"slug":214,"path":215,"order":81},"I\u002FO Module Wiring","io-wiring","en\u002Fdocs\u002Fmodules\u002Fio-wiring",{"title":217,"slug":218,"path":219,"order":87},"Relay Module Wiring","relay-wiring","en\u002Fdocs\u002Fmodules\u002Frelay-wiring",{"title":221,"slug":222,"path":223,"order":97},"1-Wire Module Wiring","1wire-wiring","en\u002Fdocs\u002Fmodules\u002F1wire-wiring",{"title":225,"slug":226,"path":227,"order":103},"Analog Input Module Wiring","analog-input-wiring","en\u002Fdocs\u002Fmodules\u002Fanalog-input-wiring",{"title":229,"slug":230,"path":231,"order":87,"children":232},"Wiring Guidelines","wiring","en\u002Fdocs\u002Fwiring",[233,237],{"title":234,"slug":235,"path":236,"order":75},"Bus Topology & Wiring","bus-topology","en\u002Fdocs\u002Fwiring\u002Fbus-topology",{"title":238,"slug":239,"path":240,"order":81},"Power Supply Sizing and Distribution","power-supply","en\u002Fdocs\u002Fwiring\u002Fpower-supply",{"title":242,"slug":243,"path":244,"order":97,"children":245},"Logic Blocks","logic-blocks","en\u002Fdocs\u002Flogic-blocks",[246,252,303,543],{"title":247,"slug":248,"path":249,"order":69,"template":250,"translation_key":251},"Overview","overview","en\u002Fdocs\u002Flogic-blocks\u002Foverview","logic-block-index","logic-blocks-overview",{"title":253,"slug":254,"path":255,"order":75,"children":256},"Input","input","en\u002Fdocs\u002Flogic-blocks\u002Finput",[257,263,268,273,278,283,288,293,298],{"title":258,"slug":259,"path":260,"order":69,"template":261,"translation_key":262},"Binary input","binary_input","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fbinary_input","logic-block","logic-block-binary_input",{"title":264,"slug":265,"path":266,"order":69,"template":261,"translation_key":267},"Boolean constant","boolean_constant","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fboolean_constant","logic-block-boolean_constant",{"title":269,"slug":270,"path":271,"order":69,"template":261,"translation_key":272},"Numeric constant","numeric_constant","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fnumeric_constant","logic-block-numeric_constant",{"title":274,"slug":275,"path":276,"order":69,"template":261,"translation_key":277},"Numeric input","numeric_input","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fnumeric_input","logic-block-numeric_input",{"title":279,"slug":280,"path":281,"order":69,"template":261,"translation_key":282},"Mode monitor","operation_mode_monitor","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Foperation_mode_monitor","logic-block-operation_mode_monitor",{"title":284,"slug":285,"path":286,"order":69,"template":261,"translation_key":287},"PulseAt","pulse_at","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fpulse_at","logic-block-pulse_at",{"title":289,"slug":290,"path":291,"order":69,"template":261,"translation_key":292},"Schedule","schedule","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fschedule","logic-block-schedule",{"title":294,"slug":295,"path":296,"order":69,"template":261,"translation_key":297},"String constant","string_constant","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fstring_constant","logic-block-string_constant",{"title":299,"slug":300,"path":301,"order":69,"template":261,"translation_key":302},"Switch","switch","en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fswitch","logic-block-switch",{"title":304,"slug":305,"path":306,"order":81,"children":307},"Process","process","en\u002Fdocs\u002Flogic-blocks\u002Fprocess",[308,313,318,323,328,333,338,343,348,353,358,363,368,373,378,383,388,393,398,403,408,413,418,423,428,433,438,443,448,453,458,463,468,473,478,483,488,493,498,503,508,513,518,523,528,533,538],{"title":309,"slug":310,"path":311,"order":69,"template":261,"translation_key":312},"Binary limiter","binary_limiter","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fbinary_limiter","logic-block-binary_limiter",{"title":314,"slug":315,"path":316,"order":69,"template":261,"translation_key":317},"Boolean to string","boolean_to_string","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fboolean_to_string","logic-block-boolean_to_string",{"title":319,"slug":320,"path":321,"order":69,"template":261,"translation_key":322},"Climate regulator","climate_regulator","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fclimate_regulator","logic-block-climate_regulator",{"title":324,"slug":325,"path":326,"order":69,"template":261,"translation_key":327},"Climate regulator hub","climate_regulator_hub","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fclimate_regulator_hub","logic-block-climate_regulator_hub",{"title":329,"slug":330,"path":331,"order":69,"template":261,"translation_key":332},"Delay","delay","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdelay","logic-block-delay",{"title":334,"slug":335,"path":336,"order":69,"template":261,"translation_key":337},"Delayed Pulse","delayed_pulse","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdelayed_pulse","logic-block-delayed_pulse",{"title":339,"slug":340,"path":341,"order":69,"template":261,"translation_key":342},"Door, window","door_window_monitor","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdoor_window_monitor","logic-block-door_window_monitor",{"title":344,"slug":345,"path":346,"order":69,"template":261,"translation_key":347},"Edge detector","edge_detector","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fedge_detector","logic-block-edge_detector",{"title":349,"slug":350,"path":351,"order":69,"template":261,"translation_key":352},"HTTP Request","http_request","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fhttp_request","logic-block-http_request",{"title":354,"slug":355,"path":356,"order":69,"template":261,"translation_key":357},"Hysteresis","hysteresis","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fhysteresis","logic-block-hysteresis",{"title":359,"slug":360,"path":361,"order":69,"template":261,"translation_key":362},"Irrigation","irrigation","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Firrigation","logic-block-irrigation",{"title":364,"slug":365,"path":366,"order":69,"template":261,"translation_key":367},"JSON Get Boolean","json_get_boolean","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_boolean","logic-block-json_get_boolean",{"title":369,"slug":370,"path":371,"order":69,"template":261,"translation_key":372},"JSON Get Number","json_get_number","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_number","logic-block-json_get_number",{"title":374,"slug":375,"path":376,"order":69,"template":261,"translation_key":377},"JSON Get String","json_get_string","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_string","logic-block-json_get_string",{"title":379,"slug":380,"path":381,"order":69,"template":261,"translation_key":382},"Level to pulse","level_to_pulse","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flevel_to_pulse","logic-block-level_to_pulse",{"title":384,"slug":385,"path":386,"order":69,"template":261,"translation_key":387},"Logic::And","logic_and","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_and","logic-block-logic_and",{"title":389,"slug":390,"path":391,"order":69,"template":261,"translation_key":392},"Logic::Not","logic_not","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_not","logic-block-logic_not",{"title":394,"slug":395,"path":396,"order":69,"template":261,"translation_key":397},"Logic::Or","logic_or","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_or","logic-block-logic_or",{"title":399,"slug":400,"path":401,"order":69,"template":261,"translation_key":402},"Math::Abs","math_abs","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_abs","logic-block-math_abs",{"title":404,"slug":405,"path":406,"order":69,"template":261,"translation_key":407},"Math::Add","math_add","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_add","logic-block-math_add",{"title":409,"slug":410,"path":411,"order":69,"template":261,"translation_key":412},"Math::Average","math_average","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_average","logic-block-math_average",{"title":414,"slug":415,"path":416,"order":69,"template":261,"translation_key":417},"Math::Ceil","math_ceil","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_ceil","logic-block-math_ceil",{"title":419,"slug":420,"path":421,"order":69,"template":261,"translation_key":422},"Math::Divide","math_divide","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_divide","logic-block-math_divide",{"title":424,"slug":425,"path":426,"order":69,"template":261,"translation_key":427},"Math::Floor","math_floor","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_floor","logic-block-math_floor",{"title":429,"slug":430,"path":431,"order":69,"template":261,"translation_key":432},"Math::Max","math_max","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_max","logic-block-math_max",{"title":434,"slug":435,"path":436,"order":69,"template":261,"translation_key":437},"Math::Min","math_min","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_min","logic-block-math_min",{"title":439,"slug":440,"path":441,"order":69,"template":261,"translation_key":442},"Math::Modulo","math_modulo","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_modulo","logic-block-math_modulo",{"title":444,"slug":445,"path":446,"order":69,"template":261,"translation_key":447},"Math::Multiply","math_multiply","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_multiply","logic-block-math_multiply",{"title":449,"slug":450,"path":451,"order":69,"template":261,"translation_key":452},"Math::Random","math_random","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_random","logic-block-math_random",{"title":454,"slug":455,"path":456,"order":69,"template":261,"translation_key":457},"Math::Round","math_round","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_round","logic-block-math_round",{"title":459,"slug":460,"path":461,"order":69,"template":261,"translation_key":462},"Math::Subtract","math_subtract","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_subtract","logic-block-math_subtract",{"title":464,"slug":465,"path":466,"order":69,"template":261,"translation_key":467},"Motor axis","motor_axis","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmotor_axis","logic-block-motor_axis",{"title":469,"slug":470,"path":471,"order":69,"template":261,"translation_key":472},"Moving average","moving_average","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmoving_average","logic-block-moving_average",{"title":474,"slug":475,"path":476,"order":69,"template":261,"translation_key":477},"Number to string","number_to_string","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumber_to_string","logic-block-number_to_string",{"title":479,"slug":480,"path":481,"order":69,"template":261,"translation_key":482},"Numeric latch","numeric_latch","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_latch","logic-block-numeric_latch",{"title":484,"slug":485,"path":486,"order":69,"template":261,"translation_key":487},"Numeric predicate","numeric_predicate","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_predicate","logic-block-numeric_predicate",{"title":489,"slug":490,"path":491,"order":69,"template":261,"translation_key":492},"Numeric throttle","numeric_throttle","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_throttle","logic-block-numeric_throttle",{"title":494,"slug":495,"path":496,"order":69,"template":261,"translation_key":497},"PubSub::Publish","pubsub","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpubsub","logic-block-pubsub",{"title":499,"slug":500,"path":501,"order":69,"template":261,"translation_key":502},"Pulse counter","pulse_counter","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_counter","logic-block-pulse_counter",{"title":504,"slug":505,"path":506,"order":69,"template":261,"translation_key":507},"Pulse gate","pulse_gate","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_gate","logic-block-pulse_gate",{"title":509,"slug":510,"path":511,"order":69,"template":261,"translation_key":512},"Pulse throttle","pulse_throttle","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_throttle","logic-block-pulse_throttle",{"title":514,"slug":515,"path":516,"order":69,"template":261,"translation_key":517},"Sequencer","sequencer","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fsequencer","logic-block-sequencer",{"title":519,"slug":520,"path":521,"order":69,"template":261,"translation_key":522},"Shading","shading","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fshading","logic-block-shading",{"title":524,"slug":525,"path":526,"order":69,"template":261,"translation_key":527},"String format","string_format","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fstring_format","logic-block-string_format",{"title":529,"slug":530,"path":531,"order":69,"template":261,"translation_key":532},"String latch","string_latch","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fstring_latch","logic-block-string_latch",{"title":534,"slug":535,"path":536,"order":69,"template":261,"translation_key":537},"Toggle","toggle","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Ftoggle","logic-block-toggle",{"title":539,"slug":540,"path":541,"order":69,"template":261,"translation_key":542},"Variable Delayed Pulse","variable_delayed_pulse","en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fvariable_delayed_pulse","logic-block-variable_delayed_pulse",{"title":544,"slug":545,"path":546,"order":87,"children":547},"Output","output","en\u002Fdocs\u002Flogic-blocks\u002Foutput",[548,553],{"title":549,"slug":550,"path":551,"order":69,"template":261,"translation_key":552},"Mode controller","operation_mode_controller","en\u002Fdocs\u002Flogic-blocks\u002Foutput\u002Foperation_mode_controller","logic-block-operation_mode_controller",{"title":554,"slug":555,"path":556,"order":69,"template":261,"translation_key":557},"Relay","relay","en\u002Fdocs\u002Flogic-blocks\u002Foutput\u002Frelay","logic-block-relay",{"title":559,"slug":560,"path":561,"order":103,"children":562},"Volang Programming Language","volang","en\u002Fdocs\u002Fvolang",[563,567],{"title":564,"slug":565,"path":566,"order":75},"The Volang Language","language","en\u002Fdocs\u002Fvolang\u002Flanguage",{"title":568,"slug":569,"path":570,"order":81,"template":571},"Standard Library","stdlib","en\u002Fdocs\u002Fvolang\u002Fstdlib","api-reference",{"title":573,"slug":574,"path":575,"order":109,"children":576},"Software & Tools","software","en\u002Fdocs\u002Fsoftware",[577,581],{"title":578,"slug":579,"path":580,"order":75},"Voldeno Studio – Installation and Walkthrough","studio","en\u002Fdocs\u002Fsoftware\u002Fstudio",{"title":582,"slug":583,"path":584,"order":81},"Voldeno Studio – Schedules","schedules","en\u002Fdocs\u002Fsoftware\u002Fschedules",{"title":586,"slug":587,"path":588,"order":589,"children":590},"How-to Guides & Recipes","how-to","en\u002Fdocs\u002Fhow-to",7,[591],{"title":592,"slug":360,"path":593,"order":75},"Irrigation System","en\u002Fdocs\u002Fhow-to\u002Firrigation",{"title":595,"slug":596,"path":597,"order":598,"children":599},"Troubleshooting & Diagnostics","troubleshooting","en\u002Fdocs\u002Ftroubleshooting",8,[600],{"title":601,"slug":602,"path":603,"order":75},"Bus Communication Troubleshooting","bus-communication","en\u002Fdocs\u002Ftroubleshooting\u002Fbus-communication",{"title":605,"slug":606,"path":607,"order":608},"Frequently Asked Questions","faq","en\u002Fdocs\u002Ffaq",9,[610,623,648,661,798,810,821,830,839],{"title":611,"slug":612,"path":613,"order":75,"children":614},"Pierwsze kroki","pierwsze-kroki","pl\u002Fdocs\u002Fpierwsze-kroki",[615,619],{"title":616,"slug":617,"path":618,"order":75},"Podstawowe pojęcia i terminologia","pojecia","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fpojecia",{"title":620,"slug":621,"path":622,"order":81},"Przegląd systemu dla instalatorów","przeglad-systemu","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fprzeglad-systemu",{"title":624,"slug":625,"path":626,"order":81,"children":627},"Moduły i peryferia","moduly","pl\u002Fdocs\u002Fmoduly",[628,632,636,640,644],{"title":629,"slug":630,"path":631,"order":75},"Okablowanie modułu HUB","okablowanie-hub","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-hub",{"title":633,"slug":634,"path":635,"order":81},"Okablowanie modułu I\u002FO","okablowanie-io","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-io",{"title":637,"slug":638,"path":639,"order":87},"Okablowanie modułu RELAY","okablowanie-relay","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-relay",{"title":641,"slug":642,"path":643,"order":97},"Okablowanie modułu 1-Wire","okablowanie-1wire","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-1wire",{"title":645,"slug":646,"path":647,"order":103},"Okablowanie modułu Analog Input","okablowanie-analog-input","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-analog-input",{"title":649,"slug":650,"path":651,"order":87,"children":652},"Wytyczne okablowania","okablowanie","pl\u002Fdocs\u002Fokablowanie",[653,657],{"title":654,"slug":655,"path":656,"order":75},"Topologia i okablowanie magistrali","topologia-magistrali","pl\u002Fdocs\u002Fokablowanie\u002Ftopologia-magistrali",{"title":658,"slug":659,"path":660,"order":81},"Dobór i dystrybucja zasilania","zasilanie","pl\u002Fdocs\u002Fokablowanie\u002Fzasilanie",{"title":662,"slug":663,"path":664,"order":97,"children":665},"Bloki logiczne","bloki-logiczne","pl\u002Fdocs\u002Fbloki-logiczne",[666,670,692,790],{"title":667,"slug":668,"path":669,"order":69,"template":250,"translation_key":251},"Przegląd","przeglad","pl\u002Fdocs\u002Fbloki-logiczne\u002Fprzeglad",{"title":671,"slug":254,"path":672,"order":75,"children":673},"Wejścia","pl\u002Fdocs\u002Fbloki-logiczne\u002Finput",[674,676,678,680,682,684,686,688,690],{"title":258,"slug":259,"path":675,"order":69,"template":261,"translation_key":262},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fbinary_input",{"title":264,"slug":265,"path":677,"order":69,"template":261,"translation_key":267},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fboolean_constant",{"title":269,"slug":270,"path":679,"order":69,"template":261,"translation_key":272},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fnumeric_constant",{"title":274,"slug":275,"path":681,"order":69,"template":261,"translation_key":277},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fnumeric_input",{"title":279,"slug":280,"path":683,"order":69,"template":261,"translation_key":282},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Foperation_mode_monitor",{"title":284,"slug":285,"path":685,"order":69,"template":261,"translation_key":287},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fpulse_at",{"title":289,"slug":290,"path":687,"order":69,"template":261,"translation_key":292},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fschedule",{"title":294,"slug":295,"path":689,"order":69,"template":261,"translation_key":297},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fstring_constant",{"title":299,"slug":300,"path":691,"order":69,"template":261,"translation_key":302},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fswitch",{"title":693,"slug":305,"path":694,"order":81,"children":695},"Przetwarzanie","pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess",[696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788],{"title":309,"slug":310,"path":697,"order":69,"template":261,"translation_key":312},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fbinary_limiter",{"title":314,"slug":315,"path":699,"order":69,"template":261,"translation_key":317},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fboolean_to_string",{"title":319,"slug":320,"path":701,"order":69,"template":261,"translation_key":322},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fclimate_regulator",{"title":324,"slug":325,"path":703,"order":69,"template":261,"translation_key":327},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fclimate_regulator_hub",{"title":329,"slug":330,"path":705,"order":69,"template":261,"translation_key":332},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdelay",{"title":334,"slug":335,"path":707,"order":69,"template":261,"translation_key":337},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdelayed_pulse",{"title":339,"slug":340,"path":709,"order":69,"template":261,"translation_key":342},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdoor_window_monitor",{"title":344,"slug":345,"path":711,"order":69,"template":261,"translation_key":347},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fedge_detector",{"title":349,"slug":350,"path":713,"order":69,"template":261,"translation_key":352},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fhttp_request",{"title":354,"slug":355,"path":715,"order":69,"template":261,"translation_key":357},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fhysteresis",{"title":359,"slug":360,"path":717,"order":69,"template":261,"translation_key":362},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Firrigation",{"title":364,"slug":365,"path":719,"order":69,"template":261,"translation_key":367},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_boolean",{"title":369,"slug":370,"path":721,"order":69,"template":261,"translation_key":372},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_number",{"title":374,"slug":375,"path":723,"order":69,"template":261,"translation_key":377},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_string",{"title":379,"slug":380,"path":725,"order":69,"template":261,"translation_key":382},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flevel_to_pulse",{"title":384,"slug":385,"path":727,"order":69,"template":261,"translation_key":387},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_and",{"title":389,"slug":390,"path":729,"order":69,"template":261,"translation_key":392},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_not",{"title":394,"slug":395,"path":731,"order":69,"template":261,"translation_key":397},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_or",{"title":399,"slug":400,"path":733,"order":69,"template":261,"translation_key":402},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_abs",{"title":404,"slug":405,"path":735,"order":69,"template":261,"translation_key":407},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_add",{"title":409,"slug":410,"path":737,"order":69,"template":261,"translation_key":412},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_average",{"title":414,"slug":415,"path":739,"order":69,"template":261,"translation_key":417},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_ceil",{"title":419,"slug":420,"path":741,"order":69,"template":261,"translation_key":422},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_divide",{"title":424,"slug":425,"path":743,"order":69,"template":261,"translation_key":427},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_floor",{"title":429,"slug":430,"path":745,"order":69,"template":261,"translation_key":432},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_max",{"title":434,"slug":435,"path":747,"order":69,"template":261,"translation_key":437},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_min",{"title":439,"slug":440,"path":749,"order":69,"template":261,"translation_key":442},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_modulo",{"title":444,"slug":445,"path":751,"order":69,"template":261,"translation_key":447},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_multiply",{"title":449,"slug":450,"path":753,"order":69,"template":261,"translation_key":452},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_random",{"title":454,"slug":455,"path":755,"order":69,"template":261,"translation_key":457},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_round",{"title":459,"slug":460,"path":757,"order":69,"template":261,"translation_key":462},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_subtract",{"title":464,"slug":465,"path":759,"order":69,"template":261,"translation_key":467},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmotor_axis",{"title":469,"slug":470,"path":761,"order":69,"template":261,"translation_key":472},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmoving_average",{"title":474,"slug":475,"path":763,"order":69,"template":261,"translation_key":477},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumber_to_string",{"title":479,"slug":480,"path":765,"order":69,"template":261,"translation_key":482},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_latch",{"title":484,"slug":485,"path":767,"order":69,"template":261,"translation_key":487},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_predicate",{"title":489,"slug":490,"path":769,"order":69,"template":261,"translation_key":492},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_throttle",{"title":494,"slug":495,"path":771,"order":69,"template":261,"translation_key":497},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpubsub",{"title":499,"slug":500,"path":773,"order":69,"template":261,"translation_key":502},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_counter",{"title":504,"slug":505,"path":775,"order":69,"template":261,"translation_key":507},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_gate",{"title":509,"slug":510,"path":777,"order":69,"template":261,"translation_key":512},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_throttle",{"title":514,"slug":515,"path":779,"order":69,"template":261,"translation_key":517},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fsequencer",{"title":519,"slug":520,"path":781,"order":69,"template":261,"translation_key":522},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fshading",{"title":524,"slug":525,"path":783,"order":69,"template":261,"translation_key":527},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fstring_format",{"title":529,"slug":530,"path":785,"order":69,"template":261,"translation_key":532},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fstring_latch",{"title":534,"slug":535,"path":787,"order":69,"template":261,"translation_key":537},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Ftoggle",{"title":539,"slug":540,"path":789,"order":69,"template":261,"translation_key":542},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fvariable_delayed_pulse",{"title":791,"slug":545,"path":792,"order":87,"children":793},"Wyjścia","pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput",[794,796],{"title":549,"slug":550,"path":795,"order":69,"template":261,"translation_key":552},"pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput\u002Foperation_mode_controller",{"title":554,"slug":555,"path":797,"order":69,"template":261,"translation_key":557},"pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput\u002Frelay",{"title":799,"slug":560,"path":800,"order":103,"children":801},"Język programowania Volang","pl\u002Fdocs\u002Fvolang",[802,806],{"title":803,"slug":804,"path":805,"order":75},"Język Volang","jezyk","pl\u002Fdocs\u002Fvolang\u002Fjezyk",{"title":807,"slug":808,"path":809,"order":81,"template":571},"Biblioteka standardowa","biblioteka-standardowa","pl\u002Fdocs\u002Fvolang\u002Fbiblioteka-standardowa",{"title":811,"slug":812,"path":813,"order":109,"children":814},"Oprogramowanie","oprogramowanie","pl\u002Fdocs\u002Foprogramowanie",[815,818],{"title":816,"slug":579,"path":817,"order":75},"Voldeno Studio – Instalacja i przewodnik","pl\u002Fdocs\u002Foprogramowanie\u002Fstudio",{"title":819,"slug":583,"path":820,"order":81},"Voldeno Studio – Harmonogramy","pl\u002Fdocs\u002Foprogramowanie\u002Fschedules",{"title":822,"slug":823,"path":824,"order":589,"children":825},"Poradniki","poradniki","pl\u002Fdocs\u002Fporadniki",[826],{"title":827,"slug":828,"path":829,"order":75},"System nawadniania","nawadnianie","pl\u002Fdocs\u002Fporadniki\u002Fnawadnianie",{"title":831,"slug":832,"path":833,"order":598,"children":834},"Diagnostyka i rozwiązywanie problemów","diagnostyka","pl\u002Fdocs\u002Fdiagnostyka",[835],{"title":836,"slug":837,"path":838,"order":75},"Rozwiązywanie problemów z komunikacją magistrali","komunikacja-magistrali","pl\u002Fdocs\u002Fdiagnostyka\u002Fkomunikacja-magistrali",{"title":840,"slug":606,"path":841,"order":608},"Często zadawane pytania","pl\u002Fdocs\u002Ffaq",{"pl":843,"en":855},{"moduly":844,"bloki-logiczne\u002Finput":845,"okablowanie":846,"pierwsze-kroki":847,"diagnostyka":848,"bloki-logiczne\u002Foutput":849,"poradniki":850,"bloki-logiczne":851,"volang":852,"bloki-logiczne\u002Fprocess":853,"oprogramowanie":854},"moduly\u002Fokablowanie-hub","bloki-logiczne\u002Finput\u002Fbinary_input","okablowanie\u002Ftopologia-magistrali","pierwsze-kroki\u002Fpojecia","diagnostyka\u002Fkomunikacja-magistrali","bloki-logiczne\u002Foutput\u002Foperation_mode_controller","poradniki\u002Fnawadnianie","bloki-logiczne\u002Fprzeglad","volang\u002Fjezyk","bloki-logiczne\u002Fprocess\u002Fbinary_limiter","oprogramowanie\u002Fstudio",{"volang":856,"troubleshooting":857,"modules":858,"logic-blocks":859,"getting-started":860,"wiring":861,"logic-blocks\u002Finput":862,"logic-blocks\u002Foutput":863,"software":864,"logic-blocks\u002Fprocess":865,"how-to":866},"volang\u002Flanguage","troubleshooting\u002Fbus-communication","modules\u002Fhub-wiring","logic-blocks\u002Foverview","getting-started\u002Fconcepts","wiring\u002Fbus-topology","logic-blocks\u002Finput\u002Fbinary_input","logic-blocks\u002Foutput\u002Foperation_mode_controller","software\u002Fstudio","logic-blocks\u002Fprocess\u002Fbinary_limiter","how-to\u002Firrigation",{"enabled":58,"navigation":868},{"pl":869,"en":888},[870,876,882],{"title":871,"slug":872,"path":873,"order":69,"date":874,"translation_key":875},"Jesteśmy gotowi! Setki modułów Voldeno przygotowanych do wdrożenia w inteligentnych domach.","jestesmy-gotowi-setki-modulow-voldeno-przygotowanych-do-wdrozenia-w-inteligentnych-domach","pl\u002Fblog\u002Fjestesmy-gotowi-setki-modulow-voldeno-przygotowanych-do-wdrozenia-w-inteligentnych-domach","2025-08-17","2025_08_17_we_are_ready",{"title":877,"slug":878,"path":879,"order":69,"date":880,"translation_key":881},"Nowy czujnik temperatury Voldeno 1-Wire - kompaktowy, niezawodny i stworzony do dużych instalacji","nowy-czujnik-temperatury-1-wire-voldeno-kompaktowy-niezawodny-i-zaprojektowany-do-instalacji-na-duza-skale","pl\u002Fblog\u002Fnowy-czujnik-temperatury-1-wire-voldeno-kompaktowy-niezawodny-i-zaprojektowany-do-instalacji-na-duza-skale","2025-04-25","2025_04_25_new_voldeno_1wire_temperature_sensor",{"title":883,"slug":884,"path":885,"order":69,"date":886,"translation_key":887},"Odkryj przyszłość inteligentnych domów z Voldeno","odkryj-przyszlosc-inteligentnych-domow-z-voldeno","pl\u002Fblog\u002Fodkryj-przyszlosc-inteligentnych-domow-z-voldeno","2024-10-18","2024_10_18_future_of_smart_homes",[889,893,897],{"title":890,"slug":891,"path":892,"order":69,"date":874,"translation_key":875},"We are ready! Hundreds of Voldeno modules prepared for smart home deployment.","we-are-ready","en\u002Fblog\u002Fwe-are-ready",{"title":894,"slug":895,"path":896,"order":69,"date":880,"translation_key":881},"New Voldeno 1-Wire Temperature Sensor - Compact, Reliable, and Built for Large-Scale Installations","new-voldeno-1-wire-temperature-sensor-compact-reliable-and-built-for-large-scale-installations","en\u002Fblog\u002Fnew-voldeno-1-wire-temperature-sensor-compact-reliable-and-built-for-large-scale-installations",{"title":898,"slug":899,"path":900,"order":69,"date":886,"translation_key":887},"Discover the Future of Smart Homes with Voldeno","future_of_smart_homes","en\u002Fblog\u002Ffuture_of_smart_homes",{"pl":902,"en":903,"xDefault":902},"https:\u002F\u002Fvoldeno.com\u002Fpl\u002Fdocs\u002Fvolang\u002Fjezyk","https:\u002F\u002Fvoldeno.com\u002Fen\u002Fdocs\u002Fvolang\u002Flanguage",{"slug":804,"title":803,"description":905,"tags":906,"content_html":910,"headings":911,"order":75,"extra":1037},"Kompletna dokumentacja języka Volang - autorskiego języka programowania Voldeno do automatyki inteligentnego domu.",[560,907,908,909],"programowanie","język","automatyzacja","\u003Ch1 id=\"jezyk-volang\">\u003Ca href=\"#jezyk-volang\" class=\"anchor\">#\u003C\u002Fa> Język Volang\u003C\u002Fh1>\n\u003Cp>Witamy w dokumentacji języka Volang, autorskiego języka programowania Voldeno. Służy on jako podstawowe narzędzie do implementacji logiki bloków w naszym ekosystemie inteligentnego domu.\u003C\u002Fp>\n\u003Ch2 id=\"wprowadzenie\">\u003Ca href=\"#wprowadzenie\" class=\"anchor\">#\u003C\u002Fa> Wprowadzenie\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Volang\u003C\u002Fstrong> to wyspecjalizowany język programowania opracowany przez \u003Cstrong>Voldeno\u003C\u002Fstrong>, zaprojektowany specjalnie do implementacji logiki bloków w ekosystemie inteligentnego domu. Łączy możliwości sprzętowe z automatyzacją wysokiego poziomu, umożliwiając programistom tworzenie zaawansowanych scenariuszy sterowania w sposób wydajny i bezpieczny.\u003C\u002Fp>\n\u003Cp>Głównym celem Volang jest definiowanie zachowania \u003Cstrong>Bloków\u003C\u002Fstrong>. W systemie Voldeno blok reprezentuje autonomiczną jednostkę funkcjonalną (np. sterownik rolet, termostat lub licznik energii). Volang pozwala programistom określić, jak te bloki reagują na sygnały wejściowe, przetwarzają stan wewnętrzny i wyzwalają akcje na podstawie zdarzeń.\u003C\u002Fp>\n\u003Ch3 id=\"architektura-model-kompilowany\">\u003Ca href=\"#architektura-model-kompilowany\" class=\"anchor\">#\u003C\u002Fa> Architektura: Model kompilowany\u003C\u002Fh3>\n\u003Cp>W przeciwieństwie do prostych języków skryptowych interpretowanych bezpośrednio z tekstu, Volang wykorzystuje architekturę \u003Cstrong>Maszyny Wirtualnej (VM)\u003C\u002Fstrong>. Proces wykonania składa się z dwóch odrębnych etapów:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Kompilacja:\u003C\u002Fstrong> Kod źródłowy napisany przez programistę jest przetwarzany przez kompilator Volang. Ten krok weryfikuje składnię, typy danych i integralność logiczną, przekształcając kod w zoptymalizowany format binarny znany jako \u003Cstrong>bytecode\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Wykonanie:\u003C\u002Fstrong> Wynikowy bytecode jest ładowany do \u003Cstrong>Maszyny Wirtualnej Volang (Volang VM)\u003C\u002Fstrong> - dedykowanego środowiska uruchomieniowego działającego na kontrolerach Voldeno. VM odpowiada za interpretację instrukcji bytecode i ich bezpieczne wykonanie na sprzęcie fizycznym.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"dlaczego-volang-vm\">\u003Ca href=\"#dlaczego-volang-vm\" class=\"anchor\">#\u003C\u002Fa> Dlaczego Volang VM?\u003C\u002Fh3>\n\u003Cp>Przyjęcie architektury maszyny wirtualnej oferuje znaczące korzyści dla środowisk inteligentnego domu, unifikuje przepływ pracy programistycznej i rozszerza możliwości sprzętu:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Bezpieczeństwo (Sandboxing):\u003C\u002Fstrong> Kod użytkownika działa w izolowanym środowisku, oddzielonym od podstawowego systemu operacyjnego. Błąd wykonania (np. dzielenie przez zero) zatrzyma tylko konkretny skrypt w VM, zapewniając nienaruszalność ogólnej stabilności kontrolera.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Wydajność:\u003C\u002Fstrong> Wykonywanie kompaktowego binarnego bytecode jest znacznie szybsze i bardziej efektywne pod względem zasobów niż parsowanie plików tekstowych w czasie wykonania, co jest kluczowe dla systemów wbudowanych i mikrokontrolerów.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Przenośność:\u003C\u002Fstrong> Logika napisana w Volang jest niezależna od sprzętu. Może być wykonywana na dowolnym urządzeniu zdolnym do uruchomienia Volang VM, niezależnie od podstawowej architektury procesora.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Identyczna symulacja:\u003C\u002Fstrong> Ponieważ Volang VM działa spójnie na różnych platformach, dokładnie ta sama logika bloku może być wykonana w \u003Cstrong>Voldeno Studio\u003C\u002Fstrong>. Pozwala to programistom testować i debugować kod w środowisku desktopowym z gwarancją, że zachowanie będzie identyczne z rzeczywistym systemem produkcyjnym.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rozproszone wykonanie:\u003C\u002Fstrong> Wydajność VM pozwala na uruchamianie jej nie tylko na centralnym \u003Cstrong>Voldeno Hub\u003C\u002Fstrong>, ale także na modułach rozszerzeń peryferyjnych. Ta możliwość umożliwia prawdziwie rozproszoną logikę, gdzie złożone przetwarzanie może odbywać się lokalnie na urządzeniu (na brzegu sieci) bez ograniczenia do podstawowego raportowania zdarzeń.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"konwencje-leksykalne\">\u003Ca href=\"#konwencje-leksykalne\" class=\"anchor\">#\u003C\u002Fa> Konwencje leksykalne\u003C\u002Fh2>\u003Ch3 id=\"slowa-kluczowe\">\u003Ca href=\"#slowa-kluczowe\" class=\"anchor\">#\u003C\u002Fa> Słowa kluczowe\u003C\u002Fh3>\n\u003Cp>Następujące słowa są zarezerwowane w Volang i nie mogą być używane jako nazwy zmiennych lub funkcji. Tworzą one strukturalną podstawę języka.\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"text\">\n\u003Cpre>\u003Ccode class=\"language-text\">\u003Cspan style=\"color:#c0c5ce;\">and        break        else        \n\u003C\u002Fspan>\u003Cspan style=\"color:#c0c5ce;\">extern     false        fn           \n\u003C\u002Fspan>\u003Cspan style=\"color:#c0c5ce;\">if         or           shl\n\u003C\u002Fspan>\u003Cspan style=\"color:#c0c5ce;\">shr        return       true       \n\u003C\u002Fspan>\u003Cspan style=\"color:#c0c5ce;\">while      xor\n\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"literaly\">\u003Ca href=\"#literaly\" class=\"anchor\">#\u003C\u002Fa> Literały\u003C\u002Fh3>\n\u003Cp>W Volang \u003Cstrong>literał\u003C\u002Fstrong> to notacja reprezentująca stałą wartość bezpośrednio w kodzie źródłowym. To surowe wartości danych, które przypisujesz do zmiennych lub przekazujesz do funkcji. Volang obsługuje określone formaty dla literałów logicznych, łańcuchowych, całkowitych i zmiennoprzecinkowych.\u003C\u002Fp>\n\u003Ch4 id=\"literaly-logiczne-boolean\">\u003Ca href=\"#literaly-logiczne-boolean\" class=\"anchor\">#\u003C\u002Fa> Literały logiczne (Boolean)\u003C\u002Fh4>\n\u003Cp>Używane do reprezentowania stanów logicznych. Istnieją dokładnie dwa literały logiczne:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>true\u003C\u002Fcode>\u003C\u002Fstrong>: Reprezentuje stan pozytywny lub aktywny (Włączony).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>false\u003C\u002Fcode>\u003C\u002Fstrong>: Reprezentuje stan negatywny lub nieaktywny (Wyłączony).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"literaly-calkowite-integer\">\u003Ca href=\"#literaly-calkowite-integer\" class=\"anchor\">#\u003C\u002Fa> Literały całkowite (Integer)\u003C\u002Fh4>\n\u003Cp>Literały całkowite reprezentują liczby całkowite. Volang obsługuje dwie notacje:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Dziesiętna (Baza-10):\u003C\u002Fstrong> Standardowa reprezentacja numeryczna używająca cyfr \u003Ccode>0-9\u003C\u002Fcode>. Liczby ujemne są poprzedzone znakiem minus \u003Ccode>-\u003C\u002Fcode>. Wartości muszą się mieścić w przedziale od \u003Ccode>-9223372036854775808\u003C\u002Fcode> do \u003Ccode>9223372036854775807\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Szesnastkowa (Baza-16):\u003C\u002Fstrong> Często używana dla kodów kolorów, masek bitowych lub adresów sprzętowych. Te literały muszą zaczynać się od przedrostka \u003Cstrong>\u003Ccode>0x\u003C\u002Fcode>\u003C\u002Fstrong> po którym następują cyfry \u003Ccode>0-9\u003C\u002Fcode> i litery \u003Ccode>A-F\u003C\u002Fcode> (wielkość liter nie ma znaczenia).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"literaly-zmiennoprzecinkowe-float\">\u003Ca href=\"#literaly-zmiennoprzecinkowe-float\" class=\"anchor\">#\u003C\u002Fa> Literały zmiennoprzecinkowe (Float)\u003C\u002Fh4>\n\u003Cp>Literały zmiennoprzecinkowe reprezentują liczby z częścią ułamkową.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Składnia:\u003C\u002Fstrong> Zapisywane są w notacji dziesiętnej z kropką \u003Ccode>.\u003C\u002Fcode> jako separatorem dziesiętnym.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Wymaganie:\u003C\u002Fstrong> Prawidłowy literał float zazwyczaj wymaga co najmniej jednej cyfry przed lub po kropce dziesiętnej (np. \u003Ccode>0.5\u003C\u002Fcode>, \u003Ccode>10.0\u003C\u002Fcode>, \u003Ccode>23.34\u003C\u002Fcode>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"literaly-tekstowe-string\">\u003Ca href=\"#literaly-tekstowe-string\" class=\"anchor\">#\u003C\u002Fa> Literały tekstowe (String)\u003C\u002Fh4>\n\u003Cp>Literały tekstowe reprezentują sekwencje znaków i są używane do wiadomości, identyfikatorów lub etykiet.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Składnia:\u003C\u002Fstrong> Tekst musi być ujęty w podwójne cudzysłowy \u003Cstrong>\u003Ccode>&quot;\u003C\u002Fcode>\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Obsługa wieloliniowa:\u003C\u002Fstrong> Literał łańcuchowy w Volang może rozciągać się na wiele linii. Znaki nowej linii wewnątrz cudzysłowów są zachowywane.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"surowe-lancuchy-raw-strings\">\u003Ca href=\"#surowe-lancuchy-raw-strings\" class=\"anchor\">#\u003C\u002Fa> Surowe łańcuchy (Raw Strings)\u003C\u002Fh4>\n\u003Cp>Surowe łańcuchy są używane do reprezentowania tekstu dokładnie tak, jak został napisany, ignorując znaki specjalne lub formatowanie.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Składnia:\u003C\u002Fstrong> Surowe łańcuchy muszą być ujęte w potrójne podwójne cudzysłowy \u003Ccode>&quot;&quot;&quot;\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Użycie:\u003C\u002Fstrong> Wszystko wewnątrz potrójnych cudzysłowów jest traktowane jako tekst dosłowny. Jest to szczególnie przydatne do przechowywania bloków kodu, złożonych wzorców regex lub wstępnie sformatowanej dokumentacji.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zachowanie:\u003C\u002Fstrong> Podobnie jak standardowe łańcuchy wieloliniowe, wszystkie wcięcia i podziały linii są zachowywane dokładnie tak, jak pojawiają się między ogranicznikami \u003Ccode>&quot;&quot;&quot;\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Przykłady:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F --- Literały logiczne ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">swiatlo_wlaczone\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"boolean\">true\u003C\u002Fspan>\n\u003Cspan class=\"variable\">drzwi_zamkniete\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"boolean\">false\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Literały całkowite (Dziesiętne) ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">licznik\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">10\u003C\u002Fspan>\n\u003Cspan class=\"variable\">przesuniecie_ujemne\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"operator\">-\u003C\u002Fspan>\u003Cspan class=\"number\">5\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Literały całkowite (Szesnastkowe) ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">maska_statusu\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0xFF\u003C\u002Fspan>       \u003Cspan class=\"comment\">\u002F\u002F Dziesiętnie 255\u003C\u002Fspan>\n\u003Cspan class=\"variable\">kolor_czerwony\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0xFF0000\u003C\u002Fspan>  \u003Cspan class=\"comment\">\u002F\u002F Kod koloru\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Literały zmiennoprzecinkowe ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">temperatura\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">23.34\u003C\u002Fspan>\n\u003Cspan class=\"variable\">wspolczynnik_kalibracji\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0.95\u003C\u002Fspan>\n\u003Cspan class=\"variable\">napiecie\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">12.0\u003C\u002Fspan>            \u003Cspan class=\"comment\">\u002F\u002F .0 wskazuje, że to Float, nie Integer\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Literały łańcuchowe ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">nazwa_urzadzenia\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"Termostat salon\"\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Łańcuch wieloliniowy (zachowuje formatowanie)\u003C\u002Fspan>\n\u003Cspan class=\"variable\">komunikat_powiadomienia\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"\u003C\u002Fspan>\n\u003Cspan class=\"variable\">Ostrze\u003C\u002Fspan>ż\u003Cspan class=\"variable\">enie\u003C\u002Fspan>: \u003Cspan class=\"variable\">Wysoka\u003C\u002Fspan> \u003Cspan class=\"variable\">temperatura\u003C\u002Fspan>\u003Cspan class=\"operator\">!\u003C\u002Fspan>\n\u003Cspan class=\"variable\">Akcja\u003C\u002Fspan>: \u003Cspan class=\"variable\">Ch\u003C\u002Fspan>ł\u003Cspan class=\"variable\">odzenie\u003C\u002Fspan> \u003Cspan class=\"variable\">aktywowane\u003C\u002Fspan>\n\u003Cspan class=\"variable\">Czas\u003C\u002Fspan>: \u003Cspan class=\"number\">12\u003C\u002Fspan>:\u003Cspan class=\"number\">00\u003C\u002Fspan>\n\u003Cspan class=\"string\">\"\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Surowy literał łańcuchowy ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">configJson\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"\"\"\n{\n    \"status\": \"sukces\",\n    \"katalog\": \"C:\\users\\volang\\app\",\n    \"wzorzec\": \"\\b[A-Z0-9._%+-]+\",\n    \"opis\": \"Nie trzeba escapować backslashy ani \"cudzysłowów\" tutaj!\"\n}\n\"\"\"\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"wartosci-i-typy\">\u003Ca href=\"#wartosci-i-typy\" class=\"anchor\">#\u003C\u002Fa> Wartości i typy\u003C\u002Fh2>\n\u003Cp>Volang działa na \u003Cstrong>dynamicznym systemie typów\u003C\u002Fstrong>, oferując elastyczne podejście do zarządzania danymi. W Volang zmienne funkcjonują jako generyczne kontenery, a nie ściśle typowane magazyny. W związku z tym nie ma potrzeby jawnego deklarowania typów (takich jak \u003Ccode>int\u003C\u002Fcode> lub \u003Ccode>float\u003C\u002Fcode>) w kodzie. Informacja o typie jest nieodłączna od samej wartości, nie od przypisanej do niej zmiennej.\u003C\u002Fp>\n\u003Ch3 id=\"wartosci-pierwszej-klasy\">\u003Ca href=\"#wartosci-pierwszej-klasy\" class=\"anchor\">#\u003C\u002Fa> Wartości pierwszej klasy\u003C\u002Fh3>\n\u003Cp>Wszystkie wartości w Volang są wartościami pierwszej klasy. Oznacza to, że każda wartość, niezależnie od typu, może być:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Przechowywana w zmiennych.\u003C\u002Fli>\n\u003Cli>Przekazywana jako argumenty do funkcji.\u003C\u002Fli>\n\u003Cli>Zwracana jako wyniki z funkcji.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"spojnosc-typow-scisle-typowanie\">\u003Ca href=\"#spojnosc-typow-scisle-typowanie\" class=\"anchor\">#\u003C\u002Fa> Spójność typów (Ścisłe typowanie)\u003C\u002Fh3>\n\u003Cp>Chociaż Volang nie wymaga deklaracji typów, wymusza \u003Cstrong>stabilność typów\u003C\u002Fstrong>. Gdy zmienna zostanie przypisana wartość określonego typu (np. Integer), staje się związana z tym typem. \u003Cstrong>Nie można\u003C\u002Fstrong> następnie przypisać wartości innego typu (np. String) do tej samej zmiennej. Ten mechanizm zapobiega typowym błędom wykonania i zapewnia przewidywalne zachowanie kontrolera.\u003C\u002Fp>\n\u003Ch3 id=\"kategorie-wartosci\">\u003Ca href=\"#kategorie-wartosci\" class=\"anchor\">#\u003C\u002Fa> Kategorie wartości\u003C\u002Fh3>\n\u003Cp>Volang rozróżnia cztery podstawowe rodzaje wartości:\u003C\u002Fp>\n\u003Ch4 id=\"1-numeryczne-integer-i-float\">\u003Ca href=\"#1-numeryczne-integer-i-float\" class=\"anchor\">#\u003C\u002Fa> 1. Numeryczne (Integer i Float)\u003C\u002Fh4>\n\u003Cp>Używane do obliczeń matematycznych, odczytów czujników i liczników.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Integer:\u003C\u002Fstrong> Liczby całkowite bez części ułamkowej (np. \u003Ccode>0\u003C\u002Fcode>, \u003Ccode>42\u003C\u002Fcode>, \u003Ccode>-15\u003C\u002Fcode>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Float:\u003C\u002Fstrong> Liczby zmiennoprzecinkowe reprezentujące wartości ułamkowe (np. \u003Ccode>3.14\u003C\u002Fcode>, \u003Ccode>21.5\u003C\u002Fcode>, \u003Ccode>-0.001\u003C\u002Fcode>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"2-tekstowe-string\">\u003Ca href=\"#2-tekstowe-string\" class=\"anchor\">#\u003C\u002Fa> 2. Tekstowe (String)\u003C\u002Fh4>\n\u003Cp>Używane do komunikatów statusu, logów, nazw i przetwarzania tekstu. Łańcuchy to sekwencje znaków ujęte w podwójne cudzysłowy \u003Ccode>&quot;\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Obsługa wieloliniowa:\u003C\u002Fstrong> Volang obsługuje łańcuchy wieloliniowe. Możesz nacisnąć Enter wewnątrz cudzysłowów, aby utworzyć blok tekstu rozciągający się na kilka linii.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"3-logiczne-boolean\">\u003Ca href=\"#3-logiczne-boolean\" class=\"anchor\">#\u003C\u002Fa> 3. Logiczne (Boolean)\u003C\u002Fh4>\n\u003Cp>Wartości logiczne reprezentują wartości prawdy i są kluczowe dla logiki decyzyjnej (\u003Ccode>if\u003C\u002Fcode>, \u003Ccode>while\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Wartości:\u003C\u002Fstrong> \u003Ccode>true\u003C\u002Fcode> lub \u003Ccode>false\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"4-nieprzezroczyste-opaque\">\u003Ca href=\"#4-nieprzezroczyste-opaque\" class=\"anchor\">#\u003C\u002Fa> 4. Nieprzezroczyste (Opaque)\u003C\u002Fh4>\n\u003Cp>Wartości nieprzezroczyste reprezentują złożone struktury danych, których wewnętrzna implementacja jest zarządzana przez Volang VM. Użytkownik korzysta z nich za pośrednictwem dedykowanych funkcji Biblioteki Standardowej, a nie bezpośrednich operatorów składniowych. Przykłady typów nieprzezroczystych to m.in.:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Array (Tablica):\u003C\u002Fstrong> Uporządkowana, indeksowana kolekcja wartości.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Map (Mapa):\u003C\u002Fstrong> Kolekcja par klucz-wartość, gdzie każdy klucz jest unikalny.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>To tylko niektóre z dostępnych typów nieprzezroczystych - Biblioteka Standardowa może udostępniać kolejne. Wartości nieprzezroczyste podlegają tym samym regułom pierwszej klasy co inne typy - mogą być przechowywane w zmiennych, przekazywane jako argumenty i zwracane z funkcji. Nie mogą jednak być używane ze standardowymi operatorami arytmetycznymi ani logicznymi.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Przykład:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F 1. Dynamiczne typowanie\u003C\u002Fspan>\n\u003Cspan class=\"variable\">status\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">25.5\u003C\u002Fspan>    \n\n\u003Cspan class=\"comment\">\u002F\u002F 2. Łańcuchy wieloliniowe\u003C\u002Fspan>\n\u003Cspan class=\"variable\">info_konfiguracji\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"Urządzenie: Termostat\u003C\u002Fspan>\n    \u003Cspan class=\"variable\">Lokalizacja\u003C\u002Fspan>: \u003Cspan class=\"variable\">Salon\u003C\u002Fspan>\n    \u003Cspan class=\"variable\">Firmware\u003C\u002Fspan>: \u003Cspan class=\"variable\">v1\u003C\u002Fspan>.\u003Cspan class=\"number\">2\u003C\u002Fspan>\u003Cspan class=\"string\">\"\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F 3. Przekazywanie wartości\u003C\u002Fspan>\n\u003Cspan class=\"keyword\">fn\u003C\u002Fspan> \u003Cspan class=\"function\">logujStatus\u003C\u002Fspan>(\u003Cspan class=\"variable\">wiadomosc\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">print\u003C\u002Fspan>(\u003Cspan class=\"variable\">wiadomosc\u003C\u002Fspan>)\n}\n\n\u003Cspan class=\"function\">logujStatus\u003C\u002Fspan>(\u003Cspan class=\"variable\">info_konfiguracji\u003C\u002Fspan>)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"zmienne\">\u003Ca href=\"#zmienne\" class=\"anchor\">#\u003C\u002Fa> Zmienne\u003C\u002Fh2>\n\u003Cp>Volang stosuje uproszczone podejście do zarządzania zmiennymi. Nie ma słów kluczowych deklaracji (takich jak \u003Ccode>var\u003C\u002Fcode>, \u003Ccode>let\u003C\u002Fcode> lub \u003Ccode>int\u003C\u002Fcode>). Zmienna jest tworzona w momencie przypisania wartości do nazwy. Miejsce, w którym definiujesz zmienną, określa jej zakres (widoczność) w całym skrypcie.\u003C\u002Fp>\n\u003Ch3 id=\"tworzenie-zmiennych\">\u003Ca href=\"#tworzenie-zmiennych\" class=\"anchor\">#\u003C\u002Fa> Tworzenie zmiennych\u003C\u002Fh3>\n\u003Cp>Aby zdefiniować zmienną, po prostu użyj operatora przypisania \u003Cstrong>\u003Ccode>=\u003C\u002Fcode>\u003C\u002Fstrong>. Typ danych zmiennej jest wnioskowany z przypisanej wartości i staje się stały na czas życia tej zmiennej.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Składnia:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"variable\">nazwa_zmiennej\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">wartosc\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"zakres-zmiennych\">\u003Ca href=\"#zakres-zmiennych\" class=\"anchor\">#\u003C\u002Fa> Zakres zmiennych\u003C\u002Fh3>\n\u003Cp>Zakres określa, gdzie zmienna może być dostępna w kodzie. Volang rozróżnia dwa typy zakresu:\u003C\u002Fp>\n\u003Ch4 id=\"zmienne-globalne\">\u003Ca href=\"#zmienne-globalne\" class=\"anchor\">#\u003C\u002Fa> Zmienne globalne\u003C\u002Fh4>\n\u003Cp>Zmienne zdefiniowane na najwyższym poziomie skryptu (poza jakąkolwiek funkcją lub blokiem sterującym) są \u003Cstrong>Globalne\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Widoczność:\u003C\u002Fstrong> Są dostępne z dowolnego miejsca w skrypcie, ale \u003Cstrong>nie wewnątrz funkcji\u003C\u002Fstrong>. Aby użyć wartości globalnej w funkcji, przekaż ją jako argument.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zastosowanie:\u003C\u002Fstrong> Idealne do przechowywania ogólnego stanu urządzenia, takiego jak \u003Ccode>temperatura_docelowa\u003C\u002Fcode>, \u003Ccode>tryb_systemu\u003C\u002Fcode> lub \u003Ccode>status_alarmu\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"zmienne-lokalne\">\u003Ca href=\"#zmienne-lokalne\" class=\"anchor\">#\u003C\u002Fa> Zmienne lokalne\u003C\u002Fh4>\n\u003Cp>Zmienne zdefiniowane wewnątrz funkcji (\u003Ccode>fn\u003C\u002Fcode>) lub bloku sterującego są \u003Cstrong>Lokalne\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Widoczność:\u003C\u002Fstrong> Istnieją tylko w bloku, w którym zostały utworzone. Są niszczone, gdy wykonanie opuszcza ten blok.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zastosowanie:\u003C\u002Fstrong> Używane do tymczasowych obliczeń, liczników pętli lub pośrednich kroków logicznych.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Przykład:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F --- Zmienne globalne ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">status_systemu\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"BEZCZYNNY\"\u003C\u002Fspan>\n\u003Cspan class=\"variable\">nastawiona\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">21.5\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Zmienne globalne NIE SĄ dostępne wewnątrz funkcji.\u003C\u002Fspan>\n\u003Cspan class=\"comment\">\u002F\u002F Przekaż je jako argumenty:\u003C\u002Fspan>\n\u003Cspan class=\"keyword\">fn\u003C\u002Fspan> \u003Cspan class=\"function\">sprawdzTemperature\u003C\u002Fspan>(\u003Cspan class=\"variable\">aktualna_temp\u003C\u002Fspan>, \u003Cspan class=\"variable\">cel\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F --- Zmienna lokalna ---\u003C\u002Fspan>\n    \u003Cspan class=\"comment\">\u002F\u002F 'roznica' istnieje tylko wewnątrz tej funkcji\u003C\u002Fspan>\n    \u003Cspan class=\"variable\">roznica\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">aktualna_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">-\u003C\u002Fspan> \u003Cspan class=\"variable\">cel\u003C\u002Fspan>\n    \n    \u003Cspan class=\"keyword\">if\u003C\u002Fspan> \u003Cspan class=\"variable\">roznica\u003C\u002Fspan> \u003Cspan class=\"operator\">&gt;\u003C\u002Fspan> \u003Cspan class=\"number\">1.0\u003C\u002Fspan> {\n        \u003Cspan class=\"keyword\">return\u003C\u002Fspan> \u003Cspan class=\"string\">\"Wymagane chłodzenie\"\u003C\u002Fspan>\n    }\n    \n    \u003Cspan class=\"keyword\">return\u003C\u002Fspan> \u003Cspan class=\"string\">\"Stabilna\"\u003C\u002Fspan>\n}\n\n\u003Cspan class=\"comment\">\u002F\u002F Przekaż globalną 'nastawiona' jako argument\u003C\u002Fspan>\n\u003Cspan class=\"variable\">wynik\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"function\">sprawdzTemperature\u003C\u002Fspan>(\u003Cspan class=\"number\">22.8\u003C\u002Fspan>, \u003Cspan class=\"variable\">nastawiona\u003C\u002Fspan>)\n\n\u003Cspan class=\"comment\">\u002F\u002F 'roznica' nie jest tutaj dostępna\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"komentarze\">\u003Ca href=\"#komentarze\" class=\"anchor\">#\u003C\u002Fa> Komentarze\u003C\u002Fh2>\n\u003Cp>Komentarze to fragmenty kodu ignorowane przez kompilator Volang. Służą do wyjaśniania logiki, pozostawiania notatek dla innych programistów lub tymczasowego wyłączania określonych części kodu podczas testowania.\u003C\u002Fp>\n\u003Ch3 id=\"komentarze-jednoliniowe\">\u003Ca href=\"#komentarze-jednoliniowe\" class=\"anchor\">#\u003C\u002Fa> Komentarze jednoliniowe\u003C\u002Fh3>\n\u003Cp>Komentarze jednoliniowe zaczynają się od dwóch ukośników \u003Ccode>\u002F\u002F\u003C\u002Fcode>. Cały tekst następujący po tych znakach do końca linii jest traktowany jako komentarz.\u003C\u002Fp>\n\u003Ch3 id=\"komentarze-wieloliniowe\">\u003Ca href=\"#komentarze-wieloliniowe\" class=\"anchor\">#\u003C\u002Fa> Komentarze wieloliniowe\u003C\u002Fh3>\n\u003Cp>Komentarze wieloliniowe (blokowe) zaczynają się od \u003Ccode>\u002F*\u003C\u002Fcode> i kończą na \u003Ccode>*\u002F\u003C\u002Fcode>. Wszystko między tymi znacznikami jest ignorowane, niezależnie od liczby linii.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Przykład:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F To jest komentarz jednoliniowy\u003C\u002Fspan>\n\u003Cspan class=\"variable\">tempDocelowa\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">21.5\u003C\u002Fspan> \u003Cspan class=\"comment\">\u002F\u002F Komentarz na końcu linii\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F*\n   To jest komentarz wieloliniowy.\n   Przydatny do opisywania złożonej logiki\n   lub nagłówków bloków.\n*\u002F\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F* staraLogika = 10\nif (staraLogika &gt; 5) {\n   \u002F\u002F Ten kod jest wyłączony\n}\n*\u002F\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"instrukcje\">\u003Ca href=\"#instrukcje\" class=\"anchor\">#\u003C\u002Fa> Instrukcje\u003C\u002Fh2>\n\u003Cp>Volang jest zaprojektowany, aby minimalizować szum wizualny i maksymalizować czytelność. W przeciwieństwie do języków takich jak C++ czy Java, Volang \u003Cstrong>nie używa średników (\u003Ccode>;\u003C\u002Fcode>)\u003C\u002Fstrong> do oznaczania końca instrukcji.\u003C\u002Fp>\n\u003Cp>Znak \u003Cstrong>nowej linii\u003C\u002Fstrong> (naciśnięcie Enter) służy jako definitywny terminator instrukcji. Kompilator interpretuje koniec linii jako zakończenie bieżącego polecenia.\u003C\u002Fp>\n\u003Ch3 id=\"przypisania\">\u003Ca href=\"#przypisania\" class=\"anchor\">#\u003C\u002Fa> Przypisania\u003C\u002Fh3>\n\u003Cp>Operatory przypisania służą do przechowywania wartości w zmiennej. Volang obsługuje standardowy podstawowy operator przypisania oraz złożone operatory przypisania.\u003C\u002Fp>\n\u003Ch4 id=\"podstawowe-przypisanie\">\u003Ca href=\"#podstawowe-przypisanie\" class=\"anchor\">#\u003C\u002Fa> Podstawowe przypisanie\u003C\u002Fh4>\n\u003Cp>Operator \u003Ccode>=\u003C\u002Fcode> przypisuje wartość z prawej strony do zmiennej po lewej stronie.\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"variable\">temp_docelowa\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">21.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">licznik_zdarzen\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch4 id=\"zlozone-operatory-przypisania\">\u003Ca href=\"#zlozone-operatory-przypisania\" class=\"anchor\">#\u003C\u002Fa> Złożone operatory przypisania\u003C\u002Fh4>\n\u003Cp>Złożone operatory wykonują operację na bieżącej wartości zmiennej, a następnie aktualizują ją nowym wynikiem.\u003C\u002Fp>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Operator\u003C\u002Fth>\u003Cth>Opis\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>+=\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Dodaj i przypisz\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>-=\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Odejmij i przypisz\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>*=\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Pomnóż i przypisz\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>\u002F=\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Podziel i przypisz\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Kluczowe zachowania:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Wymaganie inicjalizacji:\u003C\u002Fstrong> Dla złożonych operatorów zmienna po lewej stronie \u003Cstrong>musi już istnieć\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Promocja typów:\u003C\u002Fstrong> Złożone przypisanie podlega tym samym regułom promocji typów co standardowa arytmetyka.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Przykłady:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Inkrementacja licznika\u003C\u002Fspan>\n\u003Cspan class=\"variable\">licznik_zdarzen\u003C\u002Fspan> \u003Cspan class=\"operator\">+=\u003C\u002Fspan> \u003Cspan class=\"number\">1\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Zmniejszenie nastawy\u003C\u002Fspan>\n\u003Cspan class=\"variable\">temp_docelowa\u003C\u002Fspan> \u003Cspan class=\"operator\">-=\u003C\u002Fspan> \u003Cspan class=\"number\">0.5\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Skalowanie jasności do 80%\u003C\u002Fspan>\n\u003Cspan class=\"variable\">jasnosc\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">100\u003C\u002Fspan>\n\u003Cspan class=\"variable\">jasnosc\u003C\u002Fspan> \u003Cspan class=\"operator\">*=\u003C\u002Fspan> \u003Cspan class=\"number\">0.8\u003C\u002Fspan>  \u003Cspan class=\"comment\">\u002F\u002F Wynik: 80.0\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Akumulacja energii\u003C\u002Fspan>\n\u003Cspan class=\"variable\">calkowita_energia_kwh\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">biezace_zuzycie\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">1.5\u003C\u002Fspan>\n\u003Cspan class=\"variable\">calkowita_energia_kwh\u003C\u002Fspan> \u003Cspan class=\"operator\">+=\u003C\u002Fspan> \u003Cspan class=\"variable\">biezace_zuzycie\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"sterowanie-przeplywem\">\u003Ca href=\"#sterowanie-przeplywem\" class=\"anchor\">#\u003C\u002Fa> Sterowanie przepływem\u003C\u002Fh3>\n\u003Cp>Instrukcja \u003Ccode>if\u003C\u002Fcode> jest podstawową strukturą decyzyjną w Volang. Wyrażenie warunkowe \u003Cstrong>musi zwracać wartość logiczną\u003C\u002Fstrong> (\u003Ccode>true\u003C\u002Fcode> lub \u003Ccode>false\u003C\u002Fcode>). Wartości innych typów (takie jak liczby całkowite, zmiennoprzecinkowe czy łańcuchy tekstowe) nie są niejawnie konwertowane - użycie ich jako warunku spowoduje błąd kompilacji.\u003C\u002Fp>\n\u003Ch4 id=\"podstawowy-if\">\u003Ca href=\"#podstawowy-if\" class=\"anchor\">#\u003C\u002Fa> Podstawowy \u003Ccode>if\u003C\u002Fcode>\u003C\u002Fh4>\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">warunek\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Kod do wykonania jeśli warunek jest prawdziwy\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch4 id=\"if-z-else\">\u003Ca href=\"#if-z-else\" class=\"anchor\">#\u003C\u002Fa> \u003Ccode>if\u003C\u002Fcode> z \u003Ccode>else\u003C\u002Fcode>\u003C\u002Fh4>\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">warunek\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Kod do wykonania jeśli warunek jest prawdziwy\u003C\u002Fspan>\n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> {\n    \u003Cspan class=\"comment\">\u002F\u002F Kod do wykonania jeśli warunek jest fałszywy\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch4 id=\"lancuchowe-warunki-else-if\">\u003Ca href=\"#lancuchowe-warunki-else-if\" class=\"anchor\">#\u003C\u002Fa> Łańcuchowe warunki (\u003Ccode>else if\u003C\u002Fcode>)\u003C\u002Fh4>\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">warunek_1\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Wykonuje się jeśli warunek_1 jest prawdziwy\u003C\u002Fspan>\n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> \u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">warunek_2\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Wykonuje się jeśli warunek_1 jest fałszywy I warunek_2 jest prawdziwy\u003C\u002Fspan>\n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> {\n    \u003Cspan class=\"comment\">\u002F\u002F Wykonuje się jeśli wszystkie powyższe warunki są fałszywe\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\u003Cp>\u003Cstrong>Przykład - Logika termostatu:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"variable\">aktualna_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">19.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">temp_docelowa\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">21.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">histereza\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0.5\u003C\u002Fspan>\n\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">aktualna_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">&lt;\u003C\u002Fspan> (\u003Cspan class=\"variable\">temp_docelowa\u003C\u002Fspan> \u003Cspan class=\"operator\">-\u003C\u002Fspan> \u003Cspan class=\"variable\">histereza\u003C\u002Fspan>)) {\n    \u003Cspan class=\"comment\">\u002F\u002F Za zimno -&gt; Włącz ogrzewanie\u003C\u002Fspan>\n    \u003Cspan class=\"function\">ustawOgrzewanie\u003C\u002Fspan>(\u003Cspan class=\"boolean\">true\u003C\u002Fspan>)\n    \n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> \u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">aktualna_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">&gt;\u003C\u002Fspan> (\u003Cspan class=\"variable\">temp_docelowa\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">histereza\u003C\u002Fspan>)) {\n    \u003Cspan class=\"comment\">\u002F\u002F Za gorąco -&gt; Włącz chłodzenie\u003C\u002Fspan>\n    \u003Cspan class=\"function\">ustawChlodzenie\u003C\u002Fspan>(\u003Cspan class=\"boolean\">true\u003C\u002Fspan>)\n    \n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> {\n    \u003Cspan class=\"comment\">\u002F\u002F Temperatura w optymalnym zakresie\u003C\u002Fspan>\n    \u003Cspan class=\"function\">ustawOgrzewanie\u003C\u002Fspan>(\u003Cspan class=\"boolean\">false\u003C\u002Fspan>)\n    \u003Cspan class=\"function\">ustawChlodzenie\u003C\u002Fspan>(\u003Cspan class=\"boolean\">false\u003C\u002Fspan>)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"petle\">\u003Ca href=\"#petle\" class=\"anchor\">#\u003C\u002Fa> Pętle\u003C\u002Fh3>\n\u003Cp>Volang obsługuje jedną konstrukcję pętli: pętlę \u003Ccode>while\u003C\u002Fcode>. W języku nie ma pętli \u003Ccode>for\u003C\u002Fcode> ani \u003Ccode>do-while\u003C\u002Fcode>. Podobnie jak w przypadku \u003Ccode>if\u003C\u002Fcode>, wyrażenie warunkowe \u003Cstrong>musi zwracać wartość logiczną\u003C\u002Fstrong> (\u003Ccode>true\u003C\u002Fcode> lub \u003Ccode>false\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Składnia:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">while\u003C\u002Fspan> (\u003Cspan class=\"variable\">warunek\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Kod do powtarzalnego wykonania\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\u003Cp>Volang obsługuje słowo kluczowe \u003Ccode>break\u003C\u002Fcode> wewnątrz pętli. Gdy napotkane zostanie \u003Ccode>break\u003C\u002Fcode>, pętla jest natychmiast zakończona.\u003C\u002Fp>\n\u003Cdiv class=\"callout callout-warning\">\n\u003Cdiv class=\"callout-title\">\u003Cspan class=\"callout-icon\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Cpath d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\"\u002F>\u003Cpath d=\"M12 9v4\"\u002F>\u003Cpath d=\"M12 17h.01\"\u002F>\u003C\u002Fsvg>\u003C\u002Fspan>\u003Cspan>Warning\u003C\u002Fspan>\u003C\u002Fdiv>\n\u003Cdiv class=\"callout-content\">\n\u003Cp>W systemach wbudowanych i kontrolerach inteligentnego domu nieskończone pętle mogą być niebezpieczne. Volang VM monitoruje czas wykonania, ale to twoja odpowiedzialność, aby upewnić się, że warunek pętli ostatecznie stanie się \u003Ccode>false\u003C\u002Fcode> lub że zostanie osiągnięta instrukcja \u003Ccode>break\u003C\u002Fcode>.\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\u003Cp>\u003Cstrong>Przykłady:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Podstawowy licznik\u003C\u002Fspan>\n\u003Cspan class=\"variable\">licznik\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">5\u003C\u002Fspan>\n\n\u003Cspan class=\"keyword\">while\u003C\u002Fspan> (\u003Cspan class=\"variable\">licznik\u003C\u002Fspan> \u003Cspan class=\"operator\">&gt;\u003C\u002Fspan> \u003Cspan class=\"number\">0\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">logujWartosc\u003C\u002Fspan>(\u003Cspan class=\"variable\">licznik\u003C\u002Fspan>)\n    \u003Cspan class=\"variable\">licznik\u003C\u002Fspan> \u003Cspan class=\"operator\">-=\u003C\u002Fspan> \u003Cspan class=\"number\">1\u003C\u002Fspan>\n}\n\n\u003Cspan class=\"comment\">\u002F\u002F Oczekiwanie z limitem czasu (używając break)\u003C\u002Fspan>\n\u003Cspan class=\"variable\">proby\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">max_ponowien\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">10\u003C\u002Fspan>\n\u003Cspan class=\"variable\">sukces\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"boolean\">false\u003C\u002Fspan>\n\n\u003Cspan class=\"keyword\">while\u003C\u002Fspan> (\u003Cspan class=\"variable\">proby\u003C\u002Fspan> \u003Cspan class=\"operator\">&lt;\u003C\u002Fspan> \u003Cspan class=\"variable\">max_ponowien\u003C\u002Fspan>) {\n    \u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"function\">sprawdzPolaczenie\u003C\u002Fspan>()) {\n        \u003Cspan class=\"variable\">sukces\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"boolean\">true\u003C\u002Fspan>\n        \u003Cspan class=\"keyword\">break\u003C\u002Fspan>\n    }\n    \u003Cspan class=\"variable\">proby\u003C\u002Fspan> \u003Cspan class=\"operator\">+=\u003C\u002Fspan> \u003Cspan class=\"number\">1\u003C\u002Fspan>\n}\n\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">sukces\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">rozpocznijProces\u003C\u002Fspan>()\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"funkcje\">\u003Ca href=\"#funkcje\" class=\"anchor\">#\u003C\u002Fa> Funkcje\u003C\u002Fh3>\n\u003Cp>Funkcje to wielokrotnego użytku bloki kodu zaprojektowane do wykonywania określonego zadania. W Volang funkcje definiuje się przy użyciu słowa kluczowego \u003Ccode>fn\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Składnia:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">fn\u003C\u002Fspan> \u003Cspan class=\"function\">nazwaFunkcji\u003C\u002Fspan>(\u003Cspan class=\"variable\">argument1\u003C\u002Fspan>, \u003Cspan class=\"variable\">argument2\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Kod do wykonania\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\u003Cp>\u003Cstrong>Kluczowe zasady:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Argumenty:\u003C\u002Fstrong> Funkcja może przyjmować wiele argumentów (oddzielonych przecinkami) lub nie przyjmować żadnych.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Wartości zwracane:\u003C\u002Fstrong> Użyj \u003Ccode>return\u003C\u002Fcode>, aby odesłać wartość. Jeśli pominięty, funkcja nie zwraca nic (void).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ograniczenia nazewnictwa:\u003C\u002Fstrong> Nazwy funkcji muszą być różne od nazw funkcji Biblioteki Standardowej.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zakres:\u003C\u002Fstrong> Zmienne zdefiniowane wewnątrz funkcji są lokalne dla tej funkcji.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Brak dostępu do globali:\u003C\u002Fstrong> Zmienne globalne \u003Cstrong>nie są dostępne\u003C\u002Fstrong> wewnątrz funkcji. Wszelkie zewnętrzne dane potrzebne funkcji muszą być przekazane jako argumenty.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Przykład:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">fn\u003C\u002Fspan> \u003Cspan class=\"function\">obliczSrednia\u003C\u002Fspan>(\u003Cspan class=\"variable\">a\u003C\u002Fspan>, \u003Cspan class=\"variable\">b\u003C\u002Fspan>, \u003Cspan class=\"variable\">c\u003C\u002Fspan>) {\n    \u003Cspan class=\"variable\">suma\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">a\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">b\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">c\u003C\u002Fspan>\n    \u003Cspan class=\"keyword\">return\u003C\u002Fspan> \u003Cspan class=\"variable\">suma\u003C\u002Fspan> \u003Cspan class=\"operator\">\u002F\u003C\u002Fspan> \u003Cspan class=\"number\">3\u003C\u002Fspan>\n}\n\n\u003Cspan class=\"variable\">srednia\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"function\">obliczSrednia\u003C\u002Fspan>(\u003Cspan class=\"number\">20.5\u003C\u002Fspan>, \u003Cspan class=\"number\">21.0\u003C\u002Fspan>, \u003Cspan class=\"number\">19.5\u003C\u002Fspan>)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"wyrazenia\">\u003Ca href=\"#wyrazenia\" class=\"anchor\">#\u003C\u002Fa> Wyrażenia\u003C\u002Fh2>\u003Ch3 id=\"binarne-operatory-arytmetyczne\">\u003Ca href=\"#binarne-operatory-arytmetyczne\" class=\"anchor\">#\u003C\u002Fa> Binarne operatory arytmetyczne\u003C\u002Fh3>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Operator\u003C\u002Fth>\u003Cth>Opis\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>+\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Dodawanie\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>-\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Odejmowanie\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>*\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Mnożenie\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>\u002F\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Dzielenie\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>%\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Modulo\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Priorytet:\u003C\u002Fstrong> Mnożenie, Dzielenie i Modulo są obliczane przed Dodawaniem i Odejmowaniem.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Przykłady:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Kalibracja czujnika\u003C\u002Fspan>\n\u003Cspan class=\"variable\">surowa_wartosc\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">50\u003C\u002Fspan>\n\u003Cspan class=\"variable\">wspolczynnik_skali\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">1.2\u003C\u002Fspan>\n\u003Cspan class=\"variable\">przesuniecie\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">5.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">skalibrowana_wartosc\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">surowa_wartosc\u003C\u002Fspan> \u003Cspan class=\"operator\">*\u003C\u002Fspan> \u003Cspan class=\"variable\">wspolczynnik_skali\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">przesuniecie\u003C\u002Fspan>  \u003Cspan class=\"comment\">\u002F\u002F 65.0\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Średnia z nawiasami\u003C\u002Fspan>\n\u003Cspan class=\"variable\">srednia_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> (\u003Cspan class=\"variable\">temp_1\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">temp_2\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">temp_3\u003C\u002Fspan>) \u003Cspan class=\"operator\">\u002F\u003C\u002Fspan> \u003Cspan class=\"number\">3\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Modulo dla zdarzeń cyklicznych\u003C\u002Fspan>\n\u003Cspan class=\"variable\">reszta\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">licznik_petli\u003C\u002Fspan> \u003Cspan class=\"operator\">%\u003C\u002Fspan> \u003Cspan class=\"number\">10\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"binarne-operatory-logiczne\">\u003Ca href=\"#binarne-operatory-logiczne\" class=\"anchor\">#\u003C\u002Fa> Binarne operatory logiczne\u003C\u002Fh3>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Operator\u003C\u002Fth>\u003Cth>Opis\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>and\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Logiczne I - Zwraca \u003Ccode>true\u003C\u002Fcode> tylko jeśli oba operandy są \u003Ccode>true\u003C\u002Fcode>\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>or\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Logiczne LUB - Zwraca \u003Ccode>true\u003C\u002Fcode> jeśli przynajmniej jeden operand jest \u003Ccode>true\u003C\u002Fcode>. Oba operandy są zawsze wyliczane (brak skróconej ewaluacji).\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Przykłady:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Warunkowe oświetlenie (AND)\u003C\u002Fspan>\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">ruch_aktywny\u003C\u002Fspan> \u003Cspan class=\"keyword\">and\u003C\u002Fspan> \u003Cspan class=\"variable\">poziom_jasnosci\u003C\u002Fspan> \u003Cspan class=\"operator\">&lt;\u003C\u002Fspan> \u003Cspan class=\"variable\">prog\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">ustawSwiatlo\u003C\u002Fspan>(\u003Cspan class=\"boolean\">true\u003C\u002Fspan>)\n}\n\n\u003Cspan class=\"comment\">\u002F\u002F Redundantne wyzwalanie (OR)\u003C\u002Fspan>\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">drzwi_otwarte\u003C\u002Fspan> \u003Cspan class=\"keyword\">or\u003C\u002Fspan> \u003Cspan class=\"variable\">wibracja_okna\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">wyzwolAlarm\u003C\u002Fspan>()\n}\n\n\u003Cspan class=\"comment\">\u002F\u002F Złożona logika (Grupowanie)\u003C\u002Fspan>\n\u003Cspan class=\"variable\">ogrzewanie_wl\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">reczne_nadpisanie\u003C\u002Fspan> \u003Cspan class=\"keyword\">or\u003C\u002Fspan> (\u003Cspan class=\"variable\">jest_weekend\u003C\u002Fspan> \u003Cspan class=\"keyword\">and\u003C\u002Fspan> \u003Cspan class=\"variable\">uzytkownik_w_domu\u003C\u002Fspan>)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"binarne-operacje-bitowe\">\u003Ca href=\"#binarne-operacje-bitowe\" class=\"anchor\">#\u003C\u002Fa> Binarne operacje bitowe\u003C\u002Fh3>\n\u003Cp>Operacje bitowe umożliwiają bezpośrednią manipulację pojedynczymi bitami w wartościach całkowitych.\u003C\u002Fp>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Operator\u003C\u002Fth>\u003Cth>Opis\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>&amp;\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Bitowe AND\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>|\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Bitowe OR\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>xor\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Bitowe XOR\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>shl\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Przesunięcie w lewo\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>shr\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Przesunięcie w prawo\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Przykład - Bitowe AND do maskowania:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"variable\">wartosc_czujnika\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0xA7\u003C\u002Fspan>    \u003Cspan class=\"comment\">\u002F\u002F Binarnie: 1010 0111\u003C\u002Fspan>\n\u003Cspan class=\"variable\">maska\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0x0F\u003C\u002Fspan>               \u003Cspan class=\"comment\">\u002F\u002F Binarnie: 0000 1111\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Wyodrębnij tylko dolne 4 bity\u003C\u002Fspan>\n\u003Cspan class=\"variable\">dolny_nibble\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">wartosc_czujnika\u003C\u002Fspan> \u003Cspan class=\"operator\">&amp;\u003C\u002Fspan> \u003Cspan class=\"variable\">maska\u003C\u002Fspan>\n\u003Cspan class=\"comment\">\u002F\u002F Wynik: 0x07 (Binarnie: 0000 0111)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>",[912,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034],{"level":75,"text":803,"id":913},"jezyk-volang",{"level":81,"text":915,"id":916},"Wprowadzenie","wprowadzenie",{"level":87,"text":918,"id":919},"Architektura: Model kompilowany","architektura-model-kompilowany",{"level":87,"text":921,"id":922},"Dlaczego Volang VM?","dlaczego-volang-vm",{"level":81,"text":924,"id":925},"Konwencje leksykalne","konwencje-leksykalne",{"level":87,"text":927,"id":928},"Słowa kluczowe","slowa-kluczowe",{"level":87,"text":930,"id":931},"Literały","literaly",{"level":97,"text":933,"id":934},"Literały logiczne (Boolean)","literaly-logiczne-boolean",{"level":97,"text":936,"id":937},"Literały całkowite (Integer)","literaly-calkowite-integer",{"level":97,"text":939,"id":940},"Literały zmiennoprzecinkowe (Float)","literaly-zmiennoprzecinkowe-float",{"level":97,"text":942,"id":943},"Literały tekstowe (String)","literaly-tekstowe-string",{"level":97,"text":945,"id":946},"Surowe łańcuchy (Raw Strings)","surowe-lancuchy-raw-strings",{"level":81,"text":948,"id":949},"Wartości i typy","wartosci-i-typy",{"level":87,"text":951,"id":952},"Wartości pierwszej klasy","wartosci-pierwszej-klasy",{"level":87,"text":954,"id":955},"Spójność typów (Ścisłe typowanie)","spojnosc-typow-scisle-typowanie",{"level":87,"text":957,"id":958},"Kategorie wartości","kategorie-wartosci",{"level":97,"text":960,"id":961},"1. Numeryczne (Integer i Float)","1-numeryczne-integer-i-float",{"level":97,"text":963,"id":964},"2. Tekstowe (String)","2-tekstowe-string",{"level":97,"text":966,"id":967},"3. Logiczne (Boolean)","3-logiczne-boolean",{"level":97,"text":969,"id":970},"4. Nieprzezroczyste (Opaque)","4-nieprzezroczyste-opaque",{"level":81,"text":972,"id":973},"Zmienne","zmienne",{"level":87,"text":975,"id":976},"Tworzenie zmiennych","tworzenie-zmiennych",{"level":87,"text":978,"id":979},"Zakres zmiennych","zakres-zmiennych",{"level":97,"text":981,"id":982},"Zmienne globalne","zmienne-globalne",{"level":97,"text":984,"id":985},"Zmienne lokalne","zmienne-lokalne",{"level":81,"text":987,"id":988},"Komentarze","komentarze",{"level":87,"text":990,"id":991},"Komentarze jednoliniowe","komentarze-jednoliniowe",{"level":87,"text":993,"id":994},"Komentarze wieloliniowe","komentarze-wieloliniowe",{"level":81,"text":996,"id":997},"Instrukcje","instrukcje",{"level":87,"text":999,"id":1000},"Przypisania","przypisania",{"level":97,"text":1002,"id":1003},"Podstawowe przypisanie","podstawowe-przypisanie",{"level":97,"text":1005,"id":1006},"Złożone operatory przypisania","zlozone-operatory-przypisania",{"level":87,"text":1008,"id":1009},"Sterowanie przepływem","sterowanie-przeplywem",{"level":97,"text":1011,"id":1012},"Podstawowy if","podstawowy-if",{"level":97,"text":1014,"id":1015},"if z else","if-z-else",{"level":97,"text":1017,"id":1018},"Łańcuchowe warunki (else if)","lancuchowe-warunki-else-if",{"level":87,"text":1020,"id":1021},"Pętle","petle",{"level":87,"text":1023,"id":1024},"Funkcje","funkcje",{"level":81,"text":1026,"id":1027},"Wyrażenia","wyrazenia",{"level":87,"text":1029,"id":1030},"Binarne operatory arytmetyczne","binarne-operatory-arytmetyczne",{"level":87,"text":1032,"id":1033},"Binarne operatory logiczne","binarne-operatory-logiczne",{"level":87,"text":1035,"id":1036},"Binarne operacje bitowe","binarne-operacje-bitowe",{},1777451248875]