Состояние (информатика): различия между версиями
[непроверенная версия] | [непроверенная версия] |
Спасено источников — 5, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9.5 |
|||
(не показано 14 промежуточных версий 11 участников) | |||
Строка 1: | Строка 1: | ||
В [[Информатика|информатике]] и [[Теория автоматов|теории автоматов]] '''состояние''' цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ<ref name="Harris">{{книга |
|||
{{Инкубатор, Уведомление|wait=20160112}} |
|||
|заглавие=Digital Design and Computer Architecture |
|||
{{В инкубаторе}} |
|||
|издательство=[[Morgan Kaufmann Publishers|Morgan Kaufmann]] |
|||
{{Инкубатор, автопроверка}} |
|||
|год=2007 |
|||
{{Инкубатор, Проверить статью|20151221}} |
|||
|место=USA |
|||
В [[Информатика|информатике]] и [[Теория автоматов|теории автоматов]] '''состояние''' цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ. <ref name="Harris">{{cite book |
|||
|страницы=103 |
|||
| last = Harris |
|||
|ссылка=https://books.google.com/books?id=5X7JV5-n0FIC&pg=PA115&lpg=PA115&dq=state+definition+digital&source=bl&ots=UR5dOM0l02&sig=hh41cAzR_-srVbTf5DrQ7YTZrJM&hl=en&sa=X&ei=qwArUMaAHuP9iwKJ9YDADQ&ved=0CGAQ6AEwBw |
|||
| first = David Money |
|||
|isbn=0123704979 |
|||
| authorlink = |
|||
|ref=Harris |
|||
|автор=Harris, David Money; Sarah L. Harris |
|||
| title = Digital Design and Computer Architecture |
|||
|archive-date=2014-04-06 |
|||
| publisher = Morgan Kaufmann |
|||
|archive-url=https://web.archive.org/web/20140406213057/https://books.google.com/books?id=5X7JV5-n0FIC&pg=PA115&lpg=PA115&dq=state+definition+digital&source=bl&ots=UR5dOM0l02&sig=hh41cAzR_-srVbTf5DrQ7YTZrJM&hl=en&sa=X&ei=qwArUMaAHuP9iwKJ9YDADQ&ved=0CGAQ6AEwBw#v=onepage&q=state&f=false |
|||
| year = 2007 |
|||
}}</ref>. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяются её текущими входными данными и её состоянием. |
|||
| location = USA |
|||
| pages = 103 |
|||
| url = http://books.google.com/books?id=5X7JV5-n0FIC&pg=PA115&lpg=PA115&dq=state+definition+digital&source=bl&ots=UR5dOM0l02&sig=hh41cAzR_-srVbTf5DrQ7YTZrJM&hl=en&sa=X&ei=qwArUMaAHuP9iwKJ9YDADQ&ved=0CGAQ6AEwBw#v=onepage&q=state&f=false |
|||
| doi = |
|||
| id = |
|||
| isbn = 0123704979}}</ref> Вывод данных цифровой схемы или компьютерной программы в любой момент времени полностью определяется его текущими входными данными и его состоянием. |
|||
== Состояние цифровой логической схемы== |
== Состояние цифровой логической схемы == |
||
Цифровые логические схемы могут быть разделены на два типа: [[Комбинационная логика|комбинационной логики]], |
Цифровые логические схемы могут быть разделены на два типа: [[Комбинационная логика|комбинационной логики]], чьи выходные сигналы зависят только от входных сигналов, и [[Секвенциальная логика|секвенциальной (последовательной) логики]], чьи выходные данные являются функцией и от текущих, и от входных данных, поступавших на вход в прошлом<ref name="Kaeslin">{{книга |
||
|заглавие=Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication |
|||
| last = Kaeslin |
|||
|издательство=[[Издательство Кембриджского университета|Cambridge University Press]] |
|||
| first = Hubert |
|||
|год=2008 |
|||
| authorlink = |
|||
|место=UK |
|||
| title = Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication |
|||
|страницы=735 |
|||
| publisher = Cambridge University Press |
|||
|ссылка=https://books.google.com/books?id=gdRStcYgf2oC&pg=PA783&lpg=PA783&dq=state+definition+digital&source=bl&ots=MIAK2x-71J&sig=t1apKSXU1R2qy36V2djD1fOAbt4&hl=en&sa=X&ei=6ykrUOvqN6XNiwKcsoD4BQ&ved=0CDgQ6AEwATgU |
|||
| year = 2008 |
|||
|isbn=0521882672 |
|||
| location = UK |
|||
|ref=Kaeslin |
|||
| pages = 735 |
|||
|язык=en |
|||
| url = http://books.google.com/books?id=gdRStcYgf2oC&pg=PA783&lpg=PA783&dq=state+definition+digital&source=bl&ots=MIAK2x-71J&sig=t1apKSXU1R2qy36V2djD1fOAbt4&hl=en&sa=X&ei=6ykrUOvqN6XNiwKcsoD4BQ&ved=0CDgQ6AEwATgU#v=onepage&q=state&f=false |
|||
|автор=Kaeslin, Hubert |
|||
| doi = |
|||
|archive-date=2014-04-06 |
|||
| id = |
|||
|archive-url=https://web.archive.org/web/20140406213513/https://books.google.com/books?id=gdRStcYgf2oC&pg=PA783&lpg=PA783&dq=state+definition+digital&source=bl&ots=MIAK2x-71J&sig=t1apKSXU1R2qy36V2djD1fOAbt4&hl=en&sa=X&ei=6ykrUOvqN6XNiwKcsoD4BQ&ved=0CDgQ6AEwATgU#v=onepage&q=state&f=false |
|||
| isbn = 0521882672}}</ref> |
|||
}}</ref>. |
|||
В секвенциальной логике информация из последних входов сохраняется в памяти электронных элементов, таких как [[Триггер|триггеры]]. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое "состояние" схемы содержит всю информацию о прошлом, к которому схема имеет доступ.<ref name="Srinath">{{cite book |
|||
| last =Srinath |
|||
| first =N. K. | authorlink = |
|||
| title =8085 Microprocessor: Programming and Interfacing |
|||
| publisher =Prentice-Hall of India Pvt. Ltd |
|||
| date =August 2005 |
|||
| location = |
|||
| pages =326 |
|||
| url =http://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46 |
|||
| doi = |
|||
| isbn = 978-8120327856 |
|||
| accessdate = 7 December 2012 |
|||
| quote= page 46}}</ref> |
|||
В секвенциальной логике информация, поступившая ранее на входы сохраняется в памяти электронных элементов, таких как [[триггер]]ы, ячейки памяти. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое «состояние» схемы содержит всю информацию о прошлом, к которому устройство имеет доступ<ref name="Srinath">{{книга |
|||
Например, состояние [[Микропроцессор|микропроцессора]] (компьютерной микросхемы) представляет собой содержимое всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]]. Когда ноутбуки уходят в режим [[Гибернация (операционные системы)|"гибернации"]], чтобы сохранить энергию за счет отключения процессора, состояние процессора хранится на [[Жёсткий диск|диске]]компьютера, так что оно может быть восстановлено, если компьютер выходит из режима гибернации, и процессор может взяться за операции с того момента, где он их оставил. |
|||
|заглавие=8085 Microprocessor: Programming and Interfacing |
|||
|издательство=Prentice-Hall of India Pvt. Ltd |
|||
|страницы=326 |
|||
|ссылка=https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46 |
|||
|isbn=978-8120327856 |
|||
|ref=Srinath |
|||
|язык=en |
|||
|автор=Srinath, N. K. |
|||
|месяц=8 |
|||
|год=2005 |
|||
|archive-date=2018-06-11 |
|||
|archive-url=https://web.archive.org/web/20180611212925/https://books.google.com/books?id=FIYGSv3-C6IC&pg=PA46 |
|||
}}. — «page 46».</ref>. |
|||
Например, текущее состояние [[микропроцессор]]а (компьютерной микросхемы) определяется содержимым всех его элементов памяти: [[Аккумулятор (регистр процессора)|аккумуляторов]], [[Регистр процессора|регистров хранения]], [[Кэш процессора|кэшей данных]] и [[Флаг (компьютерная техника)|флагов]]. |
|||
Поскольку каждый бинарный элемент памяти, такой как триггер, имеет только два возможных состояния - "один" или "ноль", и есть конечное число элементов памяти, цифровая схема имеет конечное число возможных состояний. Если количество двоичных элементов памяти в схеме - '''''N''''', то максимально возможное количество состояний будет '''2<sup>''N''</sup>'''. |
|||
При переводе компьютера в режим [[Гибернация (операционные системы)|«гибернации»]] или перевод в "спящий режим", чтобы сохранить энергию за счет отключения процессора, памяти и других устройств, состояние процессора и [[Оперативная память|оперативной памяти]] записывается во внешнюю энергонезависимую память, обычно на [[Жёсткий диск|диске]] компьютера, при включении компьютера из спящего режима содержимое оперативной памяти и регистров процессора восстанавливается и исполнение прерванной гибернацией программы может быть корректно продолжено. |
|||
Аналогично сохраняется состояние процессора при обработке внешних прерываний программы внешними событиями, которые могут происходить в непредвиденные моменты времени. Для того, чтобы после завершения обработки прерывания прерванная текущая программа корректно возобновила свою работу, необходимо сохранение состояния тех регистров и памяти, которые используются обработчиком прерывания. Перед передачей управления прерванной программе, обработчик прерывания восстанавливает состояние регистров процессора и памяти и передает управление прерванной программе. Сохранение и восстановление состояния выполняет обработчик внешних прерываний. |
|||
Поскольку каждый двоичный элемент памяти, такой как триггер, или двоичный разряд регистра имеет только два возможных состояния — «логической единицы» или «логического нуля», и существует конечное число таких двоичных элементов памяти, всякая цифровая схема имеет конечное число возможных состояний. Если количество двоичных элементов памяти в схеме равно '''''N''''', то максимально возможное количество состояний будет '''2<sup>''N''</sup>'''. |
|||
== Состояние программы == |
== Состояние программы == |
||
Компьютерные программы хранят данные в [[Переменная (программирование)|переменных]], представляющих собой области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется ''состоянием'' программы |
Компьютерные программы хранят данные в [[Переменная (программирование)|переменных]], представляющих собой области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется ''состоянием'' программы<ref name="Laplante">{{книга |
||
|заглавие=Dictionary of Computer Science, Engineering and Technology |
|||
<ref name="Laplante">{{cite book |
|||
|издательство=[[CRC Press]] |
|||
| last = Laplante |
|||
|место=USA |
|||
| first = Philip A. |
|||
|страницы=466 |
|||
| title = Dictionary of Computer Science, Engineering and Technology |
|||
|ссылка=https://books.google.com/books?id=U1M3clUwCfEC&pg=PA24&dq=%22Program+state%22+%22 |
|||
| publisher = CRC Press |
|||
|isbn=0849326915 |
|||
| date = 2000 |
|||
|ref=Laplante |
|||
| location = USA |
|||
|язык=en |
|||
| pages = 466 |
|||
|автор=Laplante, Philip A. |
|||
| url = http://books.google.com/books?id=U1M3clUwCfEC&pg=PA24&dq=%22Program+state%22+%22 |
|||
|год=2000 |
|||
| doi = |
|||
}}</ref><ref name="Misra">{{книга |
|||
| id = |
|||
|заглавие=A Discipline of Multiprogramming: Programming Theory for Distributed Applications |
|||
| isbn = 0849326915}}</ref><ref name="Misra">{{cite book |
|||
|издательство=Springer |
|||
| last = Misra |
|||
|страницы=14 |
|||
| first = Jayadev |
|||
|ссылка=https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables |
|||
| title = A Discipline of Multiprogramming: Programming Theory for Distributed Applications |
|||
|isbn=0387952063 |
|||
| publisher = Springer |
|||
|ref=Misra |
|||
| date = 2001 |
|||
|язык=en |
|||
| location = |
|||
|автор=Misra, Jayadev |
|||
| pages = 14 |
|||
|год=2001 |
|||
| url = http://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables |
|||
|archive-date=2014-07-05 |
|||
| doi = |
|||
|archive-url=https://web.archive.org/web/20140705122213/https://books.google.com/books?id=eZtxLnc3NbYC&pg=PA14&dq=%22Program+state%22+variables |
|||
| id = |
|||
}}</ref><ref name="Prata">{{книга |
|||
|заглавие=C Primer Plus, 5th Ed |
|||
| last = Prata |
|||
|издательство={{Нп3|Pearson Education}} |
|||
| first = Stephen Prata |
|||
|страницы=113—114 |
|||
| title = C Primer Plus, 5th Ed. |
|||
|ссылка=https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables |
|||
| publisher = Pearson Education |
|||
|isbn=0132713608 |
|||
| date = 2004 |
|||
|ref=Prata |
|||
| location = |
|||
|автор=Prata, Stephen Prata |
|||
| pages = 113-114 |
|||
|год=2004 |
|||
| url = http://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables |
|||
|archive-date=2014-07-05 |
|||
| doi = |
|||
|archive-url=https://web.archive.org/web/20140705122036/https://books.google.com/books?id=MYWQbufdVU4C&pg=PT113&dq=%22Program+state%22+variables |
|||
| id = |
|||
}}</ref>. |
|||
[[Императивное программирование]] |
[[Императивное программирование]] — [[парадигма программирования]] (способ проектирования [[Язык программирования|языка программирования]]), которая описывает в терминах состояний и операторов, которые изменяют состояние программы. В [[Декларативное программирование|декларативных языках программирования]], напротив, программа описывает желаемый результат, не указывая изменения состояний напрямую. Более специализированное определение состояния используется в некоторых компьютерных программах, которые работают [[Последовательное соединение (информатика)|последовательно]] с потоками данных, таких как [[Синтаксический анализатор|синтаксические анализаторы]], [[Межсетевой экран|файрволы]], [[Протокол передачи данных|протоколы передачи данных]] и [[Шифрование|программ шифрования]]. Последовательные программы обрабатывают поступающие данные, символы или пакеты, последовательно, по одному за раз. В некоторых из этих программ, информация о предыдущих полученных символах или пакетах данных, хранится в переменных и используется, чтобы повлиять на обработку текущего символа или пакета. Это называется «протоколом состояния», и данные, перенесенные из предыдущего цикла обработки называется «состоянием». В других случаях, программа не имеет никакой информации о предыдущем потоке данных и начинает «чистый» с каждого ввода данных; это называется «протокол без состояния». |
||
== Конечные автоматы == |
== Конечные автоматы == |
||
Выходная последовательная цепь или компьютерная программа в каждый момент времени полностью определена текущими входными данными и текущим состоянием. Поскольку каждый бинарный элемент памяти имеет только два возможных состояния, 0 или 1, общее количество состояний сети предполагается конечным и фиксированным по числу элементов памяти. Если количество двоичных элементов памяти в схеме |
Выходная последовательная цепь или компьютерная программа в каждый момент времени полностью определена текущими входными данными и текущим состоянием. Поскольку каждый бинарный элемент памяти имеет только два возможных состояния, 0 или 1, общее количество состояний сети предполагается конечным и фиксированным по числу элементов памяти. Если количество двоичных элементов памяти в схеме — ''N'', то максимально возможное количество состояний будет ''2''<sup>''N''</sup>. Понятие состояния, оформленное в абстрактной математической [[Модель вычислений|модели вычислений]], называется [[Конечный автомат|конечным автоматом]], используемым для разработки как последовательные цифровые схемы так и компьютерных программ. |
||
== Типы состояний == |
== Типы состояний == |
||
Различают следующие типы состояний: |
Различают следующие типы состояний: |
||
* '''Совместимые состояния''' |
* '''Совместимые состояния''' — это такие состояния в [[Конечный автомат|конечных автоматах]], которые не противоречат никакими входным значениям. Таким образом, для каждого входного значения оба состояния должны иметь одинаковые значения на выходе, и оба состояния должны иметь одинакового наследника (либо, неопределенного), или оба должны остаться неизменными. Совместимые состояния являются избыточными, если имеют место в одном автомате. |
||
* '''Различимые состояния''' |
* '''Различимые состояния''' — это состояния в конечных автоматах, имеющие как минимум одну входную последовательность, вызывающую отличную от остальных выходную — независимо от того, какое состояние являлось начальным. |
||
* '''Эквивалентные состояния''' |
* '''Эквивалентные состояния''' — это состояния в конечных автоматах, которые для каждой возможной входной последовательности будут производиться одинаковые — независимо от того, какое состояние является начальным. |
||
== См. также == |
== См. также == |
||
* [[Данные (вычислительная техника)]] |
* [[Данные (вычислительная техника)]] |
||
* [[Прерывания]] |
|||
* [[Побочный эффект (программирование)]] |
|||
== Примечания == |
== Примечания == |
||
{{примечания}} |
{{примечания}} |
||
[[:en:State_(computer_science)]] |
|||
{{rq|recat}} |
|||
[[Категория:Информатика]] |
|||
[[Категория:Модели вычислений]] |
Текущая версия от 23:58, 15 ноября 2023
В информатике и теории автоматов состояние цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ[1]. Выходные данные цифровой схемы или компьютерной программы в любой момент времени полностью определяются её текущими входными данными и её состоянием.
Состояние цифровой логической схемы
[править | править код]Цифровые логические схемы могут быть разделены на два типа: комбинационной логики, чьи выходные сигналы зависят только от входных сигналов, и секвенциальной (последовательной) логики, чьи выходные данные являются функцией и от текущих, и от входных данных, поступавших на вход в прошлом[2].
В секвенциальной логике информация, поступившая ранее на входы сохраняется в памяти электронных элементов, таких как триггеры, ячейки памяти. Сохраненные содержимое этих элементов памяти, в данный момент времени, в совокупности именуемое «состояние» схемы содержит всю информацию о прошлом, к которому устройство имеет доступ[3].
Например, текущее состояние микропроцессора (компьютерной микросхемы) определяется содержимым всех его элементов памяти: аккумуляторов, регистров хранения, кэшей данных и флагов.
При переводе компьютера в режим «гибернации» или перевод в "спящий режим", чтобы сохранить энергию за счет отключения процессора, памяти и других устройств, состояние процессора и оперативной памяти записывается во внешнюю энергонезависимую память, обычно на диске компьютера, при включении компьютера из спящего режима содержимое оперативной памяти и регистров процессора восстанавливается и исполнение прерванной гибернацией программы может быть корректно продолжено.
Аналогично сохраняется состояние процессора при обработке внешних прерываний программы внешними событиями, которые могут происходить в непредвиденные моменты времени. Для того, чтобы после завершения обработки прерывания прерванная текущая программа корректно возобновила свою работу, необходимо сохранение состояния тех регистров и памяти, которые используются обработчиком прерывания. Перед передачей управления прерванной программе, обработчик прерывания восстанавливает состояние регистров процессора и памяти и передает управление прерванной программе. Сохранение и восстановление состояния выполняет обработчик внешних прерываний.
Поскольку каждый двоичный элемент памяти, такой как триггер, или двоичный разряд регистра имеет только два возможных состояния — «логической единицы» или «логического нуля», и существует конечное число таких двоичных элементов памяти, всякая цифровая схема имеет конечное число возможных состояний. Если количество двоичных элементов памяти в схеме равно N, то максимально возможное количество состояний будет 2N.
Состояние программы
[править | править код]Компьютерные программы хранят данные в переменных, представляющих собой области хранения данных в памяти компьютера, содержание этих областей памяти в любой момент времени исполнения программы называется состоянием программы[4][5][6].
Императивное программирование — парадигма программирования (способ проектирования языка программирования), которая описывает в терминах состояний и операторов, которые изменяют состояние программы. В декларативных языках программирования, напротив, программа описывает желаемый результат, не указывая изменения состояний напрямую. Более специализированное определение состояния используется в некоторых компьютерных программах, которые работают последовательно с потоками данных, таких как синтаксические анализаторы, файрволы, протоколы передачи данных и программ шифрования. Последовательные программы обрабатывают поступающие данные, символы или пакеты, последовательно, по одному за раз. В некоторых из этих программ, информация о предыдущих полученных символах или пакетах данных, хранится в переменных и используется, чтобы повлиять на обработку текущего символа или пакета. Это называется «протоколом состояния», и данные, перенесенные из предыдущего цикла обработки называется «состоянием». В других случаях, программа не имеет никакой информации о предыдущем потоке данных и начинает «чистый» с каждого ввода данных; это называется «протокол без состояния».
Конечные автоматы
[править | править код]Выходная последовательная цепь или компьютерная программа в каждый момент времени полностью определена текущими входными данными и текущим состоянием. Поскольку каждый бинарный элемент памяти имеет только два возможных состояния, 0 или 1, общее количество состояний сети предполагается конечным и фиксированным по числу элементов памяти. Если количество двоичных элементов памяти в схеме — N, то максимально возможное количество состояний будет 2N. Понятие состояния, оформленное в абстрактной математической модели вычислений, называется конечным автоматом, используемым для разработки как последовательные цифровые схемы так и компьютерных программ.
Типы состояний
[править | править код]Различают следующие типы состояний:
- Совместимые состояния — это такие состояния в конечных автоматах, которые не противоречат никакими входным значениям. Таким образом, для каждого входного значения оба состояния должны иметь одинаковые значения на выходе, и оба состояния должны иметь одинакового наследника (либо, неопределенного), или оба должны остаться неизменными. Совместимые состояния являются избыточными, если имеют место в одном автомате.
- Различимые состояния — это состояния в конечных автоматах, имеющие как минимум одну входную последовательность, вызывающую отличную от остальных выходную — независимо от того, какое состояние являлось начальным.
- Эквивалентные состояния — это состояния в конечных автоматах, которые для каждой возможной входной последовательности будут производиться одинаковые — независимо от того, какое состояние является начальным.
См. также
[править | править код]Примечания
[править | править код]- ↑ Harris, David Money; Sarah L. Harris. Digital Design and Computer Architecture. — USA: Morgan Kaufmann, 2007. — С. 103. — ISBN 0123704979. Архивировано 6 апреля 2014 года.
- ↑ Kaeslin, Hubert. Digital Integrated Circuit Design: From VLSI Architectures to CMOS Fabrication (англ.). — UK: Cambridge University Press, 2008. — P. 735. — ISBN 0521882672. Архивировано 6 апреля 2014 года.
- ↑ Srinath, N. K. 8085 Microprocessor: Programming and Interfacing (англ.). — Prentice-Hall of India Pvt. Ltd, 2005. — P. 326. — ISBN 978-8120327856. Архивировано 11 июня 2018 года.. — «page 46».
- ↑ Laplante, Philip A. Dictionary of Computer Science, Engineering and Technology (англ.). — USA: CRC Press, 2000. — P. 466. — ISBN 0849326915.
- ↑ Misra, Jayadev. A Discipline of Multiprogramming: Programming Theory for Distributed Applications (англ.). — Springer, 2001. — P. 14. — ISBN 0387952063. Архивировано 5 июля 2014 года.
- ↑ Prata, Stephen Prata. C Primer Plus, 5th Ed. — Pearson Education[англ.], 2004. — С. 113—114. — ISBN 0132713608. Архивировано 5 июля 2014 года.
Для улучшения этой статьи желательно:
|