Войти
Android, Windows, Apple, Ликбез. Социальные сети. Драйверы
  • Японские телефоны Новый японский смартфон
  • Lenovo G500S: характеристики, основные особенности
  • Определяем серию продукта видеокарт Nvidia Характеристики карты nvidia 9800 gt
  • А конкуренты у смартфона есть
  • Что такое расширение файла TRZ?
  • Не работает динамик в "айфоне"
  • Выглядит программный код. Исходный код программы

    Выглядит программный код. Исходный код программы

    Это вводная часть, посвященная теоретическим основам программирования. Читатель может ознакомиться с ней и затем перейти к изучению программирования на практике (ссылки в начале и в конце этого материала), может обратиться к практическим упражнениям сразу, а может продолжить знакомиться с теорией разработки программных продуктов, выбирая интересующие его вопросы из вышеприведенного списка. Что касается данной статьи, то вот ее основные разделы:

    Совет: Читая дальнейший материал, не старайтесь запомнить все встречающиеся по ходу повествования термины и определения. Все встанет на свои места со временем, тем более что гипертекст интернет страниц тем и хорош, что ссылки на развернутое изложение материала можно обнаружить там, где это необходимо. Вы всегда сможете вернуться на нужную страницу и сделать это ровно тогда, когда ощутите дефицит знаний. Если какой-либо раздел вызывает у вас трудности в плане его осознания – пропустите его. Если в дальнейшем вы к нему не вернетесь, то это означает, что он в процессе изучения основ программирования для вас оказался лишним.

    Что такое алгоритм, программирование и псевдокод

    Начнем с того, что определим, что такое алгоритм. Алгоритм – это порядок действий, которые необходимо выполнить, чтобы решить определенную задачу. Понятие алгоритма не связано только лишь с программами, выполняемыми на , поэтому на вопрос “кому необходимо выполнить” ответом может быть кто или что угодно: человек, робот, вычислительная техника и т.д. Алгоритм – это инструкция или руководство или, наконец, просто программа действий . В этом случае – это описание алгоритма средствами , конструкции которого компьютер умеет обрабатывать. Или же просто это процесс написания текста компьютерной программы. В такой интерпретации синонимом программированию является процесс кодирования (coding) . Почему я заговорил про интерпретации? Дело в том, что разработчики программного обеспечения очень трепетно относятся к тому, чем они занимаются, и могут быть крайне недовольны, когда их деятельность сводят только лишь к процессу кодирования на конкретном языке программирования. Сам – это не только кодирование, но и предваряющий этап проектирования, а также последующие этапы и сопровождения. Под программированием чаще имеют в виду процесс создания компьютерной программы в целом, в том числе и разработку алгоритма, а кодирование – это перевод уже разработанного алгоритма на язык, понятный объекту кодирования (имеется в виду компьютер или любое другое устройство, работающее по заданной кем-то программе).

    Итак, алгоритм любой задачи, описанный на любом алгоритмическом языке (процедурном языке программирования), в первом приближении предстает в виде последовательности инструкций или операторов . Оператор может быть простым или составным. Простой оператор – это атомарная единица языка программирования . К простым операторам относят (определение имени и типа переменной), (присвоение переменной значения), операции ввода и вывода информации и т.д.

    Переменная (в программировании) – это поименованная область оперативной памяти, предназначенная для временного хранения порции данных, обрабатываемой компьютерной программой. Переменная характеризуется размером занимаемой памяти и типом, который определяет то, каким образом эта память интерпретируется компьютером. Тип переменной может быть простым или составным (комплексным). К простым типам относится числовой, символьный и логический тип. Составной тип - это набор простых и/или других составных типов.

    Составные операторы используются для организации других операторов в последовательности и управления ходом выполнения программы. К составным операторам относят (повторение последовательности операторов), и т.п. и сами по себе операторами не являются. Они могут быть аргументами значений переменным или критериями выполнения циклов и условных операторов. Частью математических и логических выражений могут быть .

    Промежуточные итоги: Простейшая компьютерная программа – это последовательность операторов (программных инструкций), одни из которых модифицируют переменные, а другие управляют ходом выполнения программы (циклы, условные операторы), на основании условий, заданных логическими и арифметическими выражениями.

    Если что-то из всего этого вызывает вопросы, то предлагаю перейти по любой из приведенных выше ссылок и познакомиться с описанными мной конструкциями процедурного языка программирования подробнее.

    Раньше алгоритмы, перед тем как реализовать их на , представляли в виде . На сегодня, как мне кажется, к классическим блок-схемам прибегают довольно редко (в школах или на различных курсах основ программирования). Также, блок-схемы используют при описании бизнес-процессов совместно с диаграммами, но это уже относится к этапам макропроектирования. Я в своей практике весьма редко использую какие-то промежуточные формы описания алгоритмов, но если такая необходимость возникает, то делаю это с использованием псевдокода . Псевдокод – это псевдоязык программирования , на синтаксис которого стандартов не существует. Псевдокод лишен несущественных для понимания сути алгоритма деталей, без которых никак при написании программ на реальных языках программирования. Единственная цель псевдокода – формализовать описание алгоритма . Задачи, решения которых описаны на псевдокоде, очень легко переносятся на любой язык программирования, поскольку псевдокод и есть язык программирования с той лишь разницей, что для него не существует компилятора, а единственным интерпретатором для него является человеческий мозг. Что такое компилятор и интерпретатор я расскажу в конце этого материала.

    Примеры алгоритмов на псевдокоде и в виде блок-схем

    Вот пример описания алгоритма задачи деления одного числа на другое, выполненного на псевдокоде:

    A: ЦЕЛОЧИСЛЕННЫЙ ТИП ВВОД(A) B: ЦЕЛОЧИСЛЕННЫЙ ТИП ВВОД(B) ЕСЛИ B=0 ТО ВЫВОД(“ОШИБКА: ДЕЛЕНИЕ НА 0!”) ВЫХОД КОНЕЦ ЕСЛИ C: ВЕЩЕСТВЕННЫЙ ТИП C = A / B ВЫВОД(C)

    Интегрированная среда разработки (IDE, Integrated development environment) – совокупность программных средств, предлагающих пользователю инструменты для написания программного кода, поиска и выделения в нем синтаксических ошибок и запуска приложения в режиме отладки. В состав интегрированной среды разработки входят компилятор, компоновщик, отладчик, профайлер и другие компоненты. Наиболее популярной средой разработки программных продуктов на языках программирования C#, VB.NET и C++ является , а для учебных целей я предлагаю использовать следующий .

    Отладчик (debugger) – инструмент IDE, позволяющий выполнять программу в пошаговом режиме и отслеживать значения переменных на каждом из шагов, определенных точками останова или контрольными точками (break point).

    Профайлер (profiler) – инструмент IDE, используемый для оптимизации программного кода по скорости его выполнения и занимаемой им оперативной памяти. С помощью профайлера можно собрать статистику, какая часть кода выполняется чаще всего, и сколько времени и ресурсов на ее выполнение тратит компьютер. На основе этой статистики можно выявить “узкие места” вашей программы и направить свои усилия на их оптимизацию.

    Язык программирования – формальный язык, представленный набором инструкций (операторов), с помощью которых, с соблюдением определенного синтаксиса пишутся компьютерные программы. По-другому, язык программирования – это основной инструмент реализации алгоритма конкретной задачи на компьютере.

    Машинный код – система команд, которые процессор компьютера понимает “без перевода”.

    Языки программирования высокого и низкого уровня – классификация языков программирования по степени удобства их использования человеком для решения прикладных задач (языки высокого уровня) или по степени близости их к машинному коду (языки низкого уровня).

    Компилятор (compiler) – приложение, которое занимается процессом компиляции - переводом программы (трансляцией программного кода), написанной на языке программирования высокого уровня на язык низкого уровня или в машинный код. Под компиляцией на язык низкого уровня чаще всего подразумевается трансляция программы на язык ассемблера с тем, чтобы выполнить “тонкую” настройку отдельных “узких мест” перед тем как окончательно перевести ее в машинный код. Пример программы на ассемблере можно увидеть .

    Объектный модуль – файл, содержащий результат работы компилятора, а именно сам машинный код со ссылками на другие объектные модули, если программа сложная и состоит из множества компонентов.

    Компоновщик (linker) – приложение, которое вступает в процесс создания исполняемого модуля после компилятора. Если результат компиляции – это несколько объектных модулей, то компоновщик всех их находит и строит из них исполняемый модуль.

    Исполняемый модуль – файл, содержащий программу ровно в том виде, который способен обработать загрузчик конкретной операционной системы. Чаще всего это файлы с расширением exe или dll.

    Загрузчик (loader) – часть операционной системы, которая создает для программы отдельный , загружает в оперативную память (в область оперативной памяти, выделенную для процесса) данные исполняемого файла, инициализирует регистры процессора и стартует процесс. С этого момента программа начинает выполняться.

    Интерпретатор (interpreter) – программа, исполняющая программный код пошагово, транслируя в машинный код только ту его часть, которую необходимо исполнить в конкретный момент времени. Интерпретатор обрабатывает программу построчно. Отличие компилятора от интерпретатора в том, что компилятор транслирует в машинный код сразу всю программу, создавая при этом один или несколько объектных модулей, а интерпретатор, выполнив трансляцию только нужного ему фрагмента программы, сразу же этот фрагмент и выполняет. Таким образом, некоторые интерпретаторы – это компилятор, компоновщик и загрузчик в одном флаконе. Примером интерпретатора является блок обработки в интернет браузере.

    На этом с теорией я позволю себе закончить и перейду к практике. Начну с того, .

    Назначение

    Исходный код либо используется для получения объектного кода, либо выполняется интерпретатором. Изменения никогда не выполняются над объектным кодом, только над исходным, с последующим повторным преобразованием в объектный.

    Другое важное назначение исходного кода - в качестве описания программы. По тексту программы можно восстановить логику её поведения. Для облегчения понимания исходного кода используются комментарии . Существуют также инструментальные средства, позволяющие автоматически получать документацию по исходному коду - т. н. генераторы документации .

    Кроме того, исходный код имеет много других применений. Он может использоваться как инструмент обучения; начинающим программистам бывает полезно исследовать существующий исходный код для изучения техники и методологии программирования. Он также используется как инструмент общения между опытными программистами, благодаря своей (идеально) лаконичной и недвусмысленной природе. Совместное использование кода разработчиками часто упоминается как фактор, способствующий улучшению опыта программистов.

    Программисты часто переносят исходный код из одного проекта в другой, что носит название повторного использования кода (Software reusability ).

    Исходный код - важнейший компонент для процесса портирования программного обеспечения на другие платформы. Без исходного кода какой-либо части ПО, портирование либо слишком сложно, либо вообще невозможно.

    Организация

    Исходный код некоторой части ПО (модуля, компонента) может состоять из одного или нескольких файлов . Код программы не обязательно пишется только на одном языке программирования. Например, часто программы, написанные на языке Си , с целью оптимизации, содержат вставки кода на языке ассемблера . Также возможны ситуации, когда некоторые компоненты или части программы пишутся на различных языках, с последующей сборкой в единый исполняемый модуль при помощи технологии известной как компоновка библиотек (library linking ).

    Сложное программное обеспечение при сборке требует использования десятков, или даже сотен файлов с исходным кодом. В таких случаях для упрощения сборки обычно используются файлы проектов, содержащие описание зависимостей между файлами с исходным кодом, и описывающие процесс сборки. Эти файлы так же могут содержать и другие параметры компилятора и среды проектирования. Для разных сред проектирования могут применяться разные файлы проекта, причем в некоторых средах эти файлы могут быть в текстовом формате, пригодном для непосредственного редактирования программистом с помощью универсальных текстовых редакторов, в других средах поддерживаются специальные форматы, а создание и изменения файлов производится с помощью специальных инструментальных программ. Файлы проектов обычно включают в понятие «исходный код». В подавляющем большинстве современных языковых сред обязательно используются файлы проектов вне зависимости от сложности прочего исходного кода, входящего в данный проект. Часто под исходным кодом подразумевают и файлы ресурсов, содержащие различные данные, например, графические изображения, нужные для сборки программы.

    Для облегчения работы с исходным кодом, для совместной работы над кодом командой программистов, используются системы управления версиями .

    Качество

    В отличие от человека, для компьютера нет «хорошо написанного» или «плохо написанного» кода. Но то, как написан код, может сильно влиять на процесс сопровождения ПО . О качестве исходного кода можно судить по следующим параметрам:

    • читаемость кода (в том числе наличие или отсутствие комментариев к коду;
    • лёгкость в поддержке, тестировании, отладке и устранении ошибок, модификации и портировании;
    • низкая сложность;
    • низкое использование ресурсов - памяти, процессора, дискового пространства;
    • отсутствие замечаний, выводимых компилятором;
    • отсутствие «мусора» - неиспользуемых переменных, недостижимых блоков кода, ненужных устаревших комментариев и т. д.

    Неисполняемый исходный код

    См. также

    • Пример: Программа Hello world

    Ссылки

    Wikimedia Foundation . 2010 .

    Смотреть что такое "Программный код" в других словарях:

      программный пакет - 3.19 программный пакет: Архивный файл, содержащий программный код в бинарном или исходном виде, а также метаданные о программе, ее версии, зависимостях и другую информацию. Источник: ГОСТ Р 54593 2011: Информационные технологии. Свободное… …

      - (англ. Netscape Plugin Application Programming Interface, NPAPI кросс платформенная архитектура разработки плагинов, поддерживаемая многими браузерами. Интерфейс был разработан для семейства браузеров Netscape Navigator, начиная с Netscape… … Википедия

      В компьютерных науках программный агент это программа, которая вступает в отношение посредничества с пользователем или другой программой. Слово «агент» происходит от латинского agere (делать) и означает соглашение выполнять действия от… … Википедия

      Framework термин, имеющий размытое значение. Обычно используется в программировании, обозначая «простую концептуальную структуру, используемую для решения сложной, проблемной задачи». Значение этого термина существенно зависит от контекста его… … Википедия

      Эта статья о системе команд в целом; об инструкциях см.: Код операции. Машинный код (платформенно ориентированный код), машинный язык система команд (набор кодов операций) конкретной вычислительной машины, которая интерпретируется… … Википедия

      Официальная терминология

      Вирус (компьютерный, программный) - исполняемый программный код или интерпретируемый набор инструкций, обладающий свойствами несанкционированного распространения и самовоспроизведения. Созданные дубликаты компьютерного вируса не всегда совпадают с оригиналом, но сохраняют… … Словарь-справочник терминов нормативно-технической документации

      - (англ. managed code) термин, введённый Microsoft для обозначения кода программы, исполняемой под «управлением» виртуальной машины.NET Common Language Runtime. При этом обычный машинный код называется неуправляемым кодом… … Википедия

      Заплатка, или патч (англ. patch /pætʃ/ заплатка) автоматизированное отдельно поставляемое программное средство, используемое для устранения проблем в программном обеспечении или изменения его функционала, а также сам процесс установки патча (… … Википедия

      Pyramid Тип Программный каркас веб приложений Разработчик … Википедия

    Книги

    • Объектно-ориентированное проектирование: концепции и программный код , Гаст Хольгер. Эта книга призвана помочь читателю глубоко усвоить понятие объектов, раскрыть их истинный потенциал, чтобы писать код, эффективно работающий в реальных условиях. Вней рассматриваются…

    Кто-то ради шутки, кто-то чтобы доказать существование или опровергнуть гипотезу, кто-то для разминки мозгов (путешествуя по поверхности бутылки Клейна или в четырехмерном пространстве), но сотни людей создали «эзотерические» языки программирования. Я пролистал около 150 таких языков и больше никогда не смогу быть прежним.

    «Argh!», «Oof!», «2-ill», «Nhohnhehr», «Noit o" mnain gelb», «DZZZZ», «Ypsilax», «YABALL», fuckfuck - это заклинания, поэзия только названия… под катом - примеры кода на самых вырвиглазных языках программирования.

    Кроличья нора глубока.

    INTERCAL (тьюринг-полный)



    Don Woods и Jim Lyon

    Один из старейших эзотерических языков программирования. Как утверждают создатели, его название означает «Язык программирования с непроизносимой аббревиатурой» (англ. Compiler Language With No Pronounceable Acronym). Язык был создан в 1972 году студентами Доном Вудсом (Don Woods) и Джеймсом М. Лайоном (James M. Lyon) как пародия на существующие языки программирования и гимнастика ума.

    Hello, world

    Каждой команде программы можно задать вероятность, с которой она будет выполняться при запуске программы. Кроме того, существуют команды, которые блокируют выполнение последующих команд определенного типа или изменения переменных.

    Hello, world!

    // «Hello World» by Stephen McGreal.
    // Note that the views expressed in this source code do not necessarily coincide with those of the

    Gr34t l33tN3$$?
    M3h…
    iT 41n"t s0 7rIckY.

    L33t sP33k is U8er keWl 4nD eA5y wehn u 7hink 1t tHr0uGh.
    1f u w4nn4be UB3R-l33t u d3f1n1t3lY w4nt in 0n a b4d4sS h4xX0r1ng s1tE!!! ;p
    w4r3Z c0ll3cT10n2 r 7eh l3Et3r!

    Qu4k3 cL4nS r 7eh bE5t tH1ng 1n teh 3nTIr3 w0rlD!!!
    g4m3s wh3r3 u g3t to 5h00t ppl r 70tAl1_y w1cK1d!!!
    I"M teh fr4GM4stEr aN I"lL t0t41_1Ly wIpE teh phr34k1ng fL00r ***j3d1 5tYlE*** wItH y0uR h1dE!!! L0L0L0L!
    t3lEphR4gG1nG l4m3rs wit mY m8tes r34lLy k1kK$ A$$

    L33t hAxX0r$ CrE4t3 u8er- k3wL 5tUff lIkE n34t pR0gR4mm1nG lAnguidGe$…
    s0m3tIm3$ teh l4nGu4gES l00k jUst l1k3 rE41_ 0neS 7o mAkE ppl Th1nk th3y"r3 ju$t n0rMal lEE7 5pEEk but th3y"re 5ecRetLy c0dE!!!
    n080DY unDer5tAnD$ l33t SpEaK 4p4rT fr0m j3d1!!!
    50mE kId 0n A me$$4gEb04rD m1ghT 8E a r0xX0r1nG hAxX0r wH0 w4nT2 t0 bR34k 5tuFf, 0r mAyb3 ju5t sh0w 7eh wAy5 l33t ppl cAn 8E m0re lIkE y0d4!!! hE i5 teh u8ER!!!
    1t m1ght 8E 5omE v1rus 0r a Pl4ySt4tI0n ch34t c0dE.
    1t 3v3n MiTe jUs7 s4y «H3LL0 W0RLD!!!» u ju5t cAn"T gu3s5.
    tH3r3"s n3v3r anY p0iNt l00KiNg sC3pT1c4l c0s th4t, be1_1Ev3 iT 0r n0t, 1s whAt th1s 1s!!!

    5uxX0r5!!!L0L0L0L0L!!!

    ArnoldC

    Язык программирования терминатора.

    Hello, world!

    Необходимость иметь собственный сайт на сегодня испытывают многие компании, а также частные лица, поэтому так востребована информация на тему разработки и продвижения интернет-проектов. Многих интересует вопрос — как самостоятельно создать сайт, программный код для которого является подобием фундамента для дома? Попробуем разобраться в этом вопросе, углубившись в тему веб-разработки.

    Веб-сайт — это не просто объединение текста, ссылок, картинок и красочных баннеров, это еще и программный код, выполняющийся на компьютере пользователя или на стороне сервера. И если создать изображения требуемого формата в нужном разрешении и качестве сегодня может практически каждый, используя готовые изображения из Интернета или любой популярный графический редактор, то создать программный код сайта для неспециалиста чревато немалыми трудностями.

    Качество приложений и интернет-проекта в целом сильно зависит от мастерства программиста, разрабатывающего сайт, программный код которого может содержать ошибки, сильно влияющие на скорость загрузки веб-страниц и на многие другие аспекты работы всего сайта, в том числе связанные с безопасностью. Поэтому обнаружение и устранение ошибок в коде — обязательная составляющая при создании любого веб-сайта. Доверить разработку сложного корпоративного сайта лучше всего специалистам (если вы таковым не являетесь), ведь некоторые ошибки трудно обнаружить, а многие из них могут в дальнейшем приводить к замедлению загрузки и неправильному отображению веб-страниц в браузерах компьютеров интернет-пользователей. Слишком долгая загрузка может вызвать отток посетителей с сайта и снижение качества трафика, что снижает прибыль и эффективность от использования коммерческих интернет-проектов.

    Сперва HTML и CSS

    Основой веб-документа является код, написанный на языке разметки HTML. Язык разметки не стоит путать с языком программирования, а в чем собственно заключается разница подробно написано . В принципе, с помощью набора команд, который предлагает для разработчика сайта HTML, можно задавать все необходимые параметры статичного веб-документа — расположение элементов (блочная разметка), заголовки, абзацы, таблицы, изображения и т.д. А с помощью CSS, специальной надстройки для HTML, можно позиционировать все перечисленные объекты разметки, менять их стиль — цвет, размер, формат и т.п.

    Потом JavaScript

    Интерактивные и анимированные элементы, например — баннеры, бегущая строка, форма обратной связи, на веб-страницах работают благодаря присутствию сценариев и кода, написанного на серверных или клиентских языках программирования. Очень популярны сценарии, разрабатываемые при помощи языка программирования JavaScript. Такие клиентские сценарии в своей работе не используют возможности сервера и исполняются на стороне компьютера пользователя, то-есть в браузере. Благодаря этому приложения JavaScript отличаются простотой и высокой скоростью работы.

    И наконец PHP

    В случае, когда требуется написание сложных и объемных кодов, например для форумов или гостевых книг, программисты обращаются за помощью к серверным языкам программирования, и в частности к . Коды PHP выполняются на стороне сервера, поэтому их работа может быть несколько замедлена, поскольку зависит от скорости соединения с удаленным компьютером и степени его загруженности. С помощью PHP и команд SQL (специальный язык запросов к реляционной базе данных) можно организовать взаимодействие сайта с базами данных и создавать интерактивные интернет-проекты – форумы, интернет-магазины, доски объявлений, различные каталоги и т.д.

    Не слишком волнуйтесь по поводу того, какой язык вам стоит выбрать для изучения. Многие начинающие программисты затрудняются выбрать язык, когда они только начинают изучать написание программных кодов. Непосредственно сам язык, который вы выберете, не имеет значения, когда речь заходит об изучении структур и логики построения информации. Эти навыки являются намного более важными, и их можно выучить с любым языком программирования.

    • Выбирая язык, сконцентрируйтесь на том, в каких целях вы хотите создавать программные коды, и уже потом выбирайте начальный язык. К примеру, если вы хотите заниматься разработкой веб-сайтов, то вам следует начать с изучения HTML, а затем дополнить его языками CSS, JavaScript и PHP. Если вы хотите создавать программы для компьютеров, то начните изучать C ++ или любой другой основной язык программирования.
    • Если вы станете профессиональным программистом, то вы быстро поймете, что вы никогда не будете использовать тот язык, который вы изначально выучили, для вашей работы. Вместо этого, вы будете все время продолжать учить новые языки через документацию и эксперименты.

    Найдите бесплатные онлайн-ресурсы, посвященные вашему выбранному языку. Интернет - это сундук с сокровищами, который хранит в себе бесплатные пособия, курсы и видео, посвященные языку, который вы решили учить. Вы можете выучить основы почти любого вводного языка за день.

    • Вот только несколько популярных сайтов: Bento, CodeAcademy, Code.org, html.net, Khan Academy, Udacity, W3Schools и многие другие.
    • На wikiHow тоже можно найти большое разнообразие начальных пособий для разных языков.
    • Вы можете найти обучающие видео практически для любого языка на YouTube.
    • Stack Exchange - это один из самых популярных форумов, на котором профессиональные программисты отвечают на любые вопросы пользователей.
  • Скачайте хороший текстовый редактор. Многие языки программирования позволяют использование внешних текстовых редакторов для написания программ. Найдите текстовый редактор, который будет отображать отступы и кодовую разметку.

    • Популярные программы включают Notepad++ (Windows), TextWrangler (OS X) и JEdit (любая система).
  • Скачайте любые необходимые компиляторы. Некоторые языки программирования требуют компилятор для отображения исходного кода, который вы написали. Компиляторы транслируют исходный код в эквивалентную программу на языке низкого уровня, которая затем обрабатывается компьютером. Многие компиляторы являются открытыми и бесплатными программами. Языки, которые требуют использование компиляторов, включают:

    • BASIC
    • Fortran
    • Pascal
  • Начните ваш первый проект. Выберите хороший вводный проект, который позволит вам испробовать ваши новые навыки. В интернете существует множество предложений и пособий по этой теме; например, вы можете начать с создания простых веб-сайтов с HTML, простых баз данных и функций с PHP или простых программ на любом из языков, требующих использование компиляторов.