Что такое код return


Как использовать return в JavaScript?

Расскажите мне про функцию return как для ребёнка, я не могу понять как её использовать в JavaScript.

2 ответа 2

  1. Это не функция, а конструкция языка.
  2. Функция в JS обязана что-то вернуть. Даже без return будет возвращено undefined .
    А если нужно вернуть что-то осмысленное, то с помощью этого оператора можно это реализовать, сказав интерпретатору что именно надо вернуть.

У оператора return два назначения.

Во-первых, — это немедленный выход из функции. Т.е. оператор передаёт управление коду, вызвавшему текущую функцию.

Вообще говоря, выход из функции может быть осуществлён несколькими способами:

  • Достижение последнего оператора (код функции попросту заканчивается, аналогично return; или return undefined; )
  • Непосредственный вызов оператора return
  • Выбрасывание ошибки, исключения ( throw ‘something’ , throw new Error(‘Ошибка’) ) В этом случае производится «разворачивание стека», мы опускаемся по стеку вызовов, пока не встретим обработчик исключений (конструкцию try<>catch(e)<> )

Во-вторых, — это возврат значения, так называемого «результата функции».

PS: На самом деле, всё это относится ко многим языкам программирования, не только javascript.

Коды без возврата к нулю NRZ

Код NRZ (Non Return to Zero) — без возврата к нулю — это простейший двухуровневый код и представляет собой обычный цифровой сигнал (может быть только изменена полярность уровня сигнала). Нулю соответствует нижний уровень, единице — верхний. Информационные переходы происходят на границе битов. Вариант кода NRZI (Non Return to Zero Inverted) соответствует обратной полярности.

Несомненное достоинство кода — простота. Сигнал не надо кодировать и декодировать. Кроме того, скорость передачи данных вдвое превышает частоту. Наибольшая частота будет фиксироваться при чередовании единиц и нулей. При частоте 1 ГГц обеспечивается передача двух битов. Для других комбинаций частота будет меньше. При передаче последовательности одинаковых битов частота изменения сигнала равна нулю.

Код NRZ (NRZI) не имеет синхронизации. Это является самым большим его недостатком. Если тактовая частота приемника отличается от частоты передатчика, теряется синхронизация, биты преобразуются, данные теряются.

Рисунок.7.1 Двухуровневый код NRZ.

Для синхронизации начала приема пакета используется стартовый служебный бит, например, единица. Наиболее известное применение кода NRZI — стандарт ATM155. Самый распространенный протокол RS232, применяемый для соединений через последовательный порт ПК, также использует код NRZ. Передача информации ведется байтами по 8 бит, сопровождаемыми стартовыми и стоповыми битами.


Достоинства кода NRZ:

  • простота реализации;
  • при заданной скорости передачи требуется минимальная полоса пропускания.

Недостаток кода NRZ:

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

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

  • В первом случае длина линии станет больше в 2 раза.
  • Во втором случае, вводятся дополнительные биты (старт — стоповые, указывают на начало и конец передачи), передача ведется байтами, скорость передачи малая.

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

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: На стипендию можно купить что-нибудь, но не больше. 8992 — | 7236 — или читать все.

Возврат значений из функции. Оператор return

Функции могут передавать какие-либо данные из своих тел в основную ветку программы. Говорят, что функция возвращает значение. В большинстве языков программирования, в том числе Python, выход из функции и передача данных в то место, откуда она была вызвана, выполняется оператором return.

Если интерпретатор Питона, выполняя тело функции, встречает return, то он «забирает» значение, указанное после этой команды, и «уходит» из функции.

В данной программе в основную ветку из функции возвращается значение локальной переменной full . Не сама переменная, а ее значение, в данном случае – какое-либо число, полученное в результате вычисления площади цилиндра.

В основной ветке программы это значение присваивается глобальной переменной square . То есть выражение square = cylinder() выполняется так:

Вызывается функция cylinder() .

Из нее возвращается значение.

Это значение присваивается переменной square .


Не обязательно присваивать результат переменной, его можно сразу вывести на экран:

Здесь число, полученное из cylinder(), непосредственно передается функции print(). Если мы в программе просто напишем cylinder(), не присвоив полученные данные переменной или не передав их куда-либо дальше, то эти данные будут потеряны. Но синтаксической ошибки не будет.

В функции может быть несколько операторов return. Однако всегда выполняется только один из них. Тот, которого первым достигнет поток выполнения. Допустим, мы решили обработать исключение, возникающее на некорректный ввод. Пусть тогда в ветке except обработчика исключений происходит выход из функции без всяких вычислений и передачи значения:

Если попытаться вместо цифр ввести буквы, то сработает return, вложенный в except. Он завершит выполнение функции, так что все нижеследующие вычисления, в том числе return full, будут опущены. Пример выполнения:

Но постойте! Что это за слово None, которое нам вернул «пустой» return? Это ничего, такой объект – «ничто». Он принадлежит классу NoneType. До этого мы знали четыре типа данных, они же четыре класса: int, float, str, bool. Пришло время пятого.

Илон Маск рекомендует:  Что такое код getaspectratio

Когда после return ничего не указывается, то по умолчанию считается, что там стоит объект None. Но никто вам не мешает явно написать return None.

Более того. Ранее мы рассматривали функции, которые вроде бы не возвращали никакого значения, потому что в них не было оператора return. На самом деле возвращали, просто мы не обращали на него внимание, не присваивали никакой переменной и не выводили на экран. В Python всякая функция что-либо возвращает. Если в ней нет оператора return, то она возвращает None. То же самое, как если в ней имеется «пустой» return.

Возврат нескольких значений

В Питоне позволительно возвращать из функции несколько объектов, перечислив их через запятую после команды return:

Из функции cylinder() возвращаются два значения. Первое из них присваивается переменной sCyl , второе – fCyl . Возможность такого группового присвоения – особенность Python, обычно не характерная для других языков:

Фокус здесь в том, что перечисление значений через запятую (например, 10, 15, 19 ) создает объект типа tuple. На русский переводится как «кортеж». Это разновидность структур данных, которые будут изучены позже.

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

Таким образом, когда из функции возвращается несколько значений, на самом деле из нее возвращается один объект класса tuple. Перед возвратом эти несколько значений упаковываются в кортеж. Если же после оператора return стоит только одна переменная или объект, то ее/его тип сохраняется как есть.

Распаковка не является обязательной. Будет работать и так:

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

Практическая работа

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

Напишите функцию, которая считывает с клавиатуры числа и перемножает их до тех пор, пока не будет введен 0. Функция должна возвращать полученное произведение. Вызовите функцию и выведите на экран результат ее работы.

Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса.


Код «возврат каретки»

Код «возврат каретки» \r выполняет «возврат каретки», перемещая курсор к началу той же строки без перехода на следующую. Если вы вывели на экран какую-то информацию, перевели курсор назад к началу этой строки и затем вывели на экран другую информацию, то старое сообщение стирается, а на его месте появляется новое.

Рис. 4.2 иллюстрирует различия между escape-последовательностями «возврат каретки» и «новая строка». Когда вы работаете с клавиатурой, нажатие клавиши Enter производит действие, аналогичное тому, что в языке Си называется новой строкой. Некоторые программисты называют это комбинацией возврата каретки и перевода строки, сокращенно CR/LF (от английского carriage return/line feed). Использование кода «возврат каретки» в языке Си не приводит к переходу на новую строку.

Рис. 4.2. Различия между кодами «возврат каретки» и «новая строка»

Действие кода \r можно видеть на примере следующей инструкции:

В результате ее выполнения на экране появится только слово «Правый». И вот почему: после отображения на экране слова «Левый», код \r переводит курсор в начало этой строки, и при отображении слова «Правый» составляющие его символы замещают собой символы слова «Левый». Код \r сам по себе не уничтожает выведенные на экран символы, когда возвращает курсор, и только вывод новых символов после возврата курсора стирает уже существующий текст.

Код «возврат на шаг»

В отличие от кода \r, который возвращает курсор в начало строки, код «возврат на шаг» \b передвигает курсор только на одну позицию влево. При перемещении курсора существующие символы не уничтожаются, как и при возврате каретки.

Если вы используете коды «возврат каретки» или «возврат на шаг», а затем вводите код «новая строка», курсор переходит к следующей строке, не уничтожая существующий текст.

Код «перевод страницы»

Когда вы посылаете информацию на печатающее устройство (как именно это делается, вы узнаете позже), код «перевод страницы» \f вытягивает из него текущую страницу. Этот код распознается большинством принтеров.

После вывода сообщения на печать, большинство программистов использует код «перевод страницы», чтобы быть уверенными в том, что страница с последним сообщением готова и на нее не будет печататься другая информация. Если вывести изображение этого кода на экран при помощи функции puts() или putchar(), он появится в виде маленького графического символа, который никак не влияет на остальную информацию, отображаемую на дисплее.

Отображение специальных символов на экране монитора

Вы можете использовать escape-последовательности для вывода на дисплей специальных символов. Программисты часто используют их для вывода символов, изображение которых невозможно получить иным способом:

Код возврата — Return code

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

содержание

В системах программного обеспечения

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

В сетевом программном обеспечении


Сетевые протоколы обычно поддерживают возвращение кодов состояния. В стеке TCP / IP , это общая особенность протоколов более высокого уровня. Например:

Коды ошибок и обработка исключений

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

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

Илон Маск рекомендует:  Что такое код dba_exists

Сколько return’ов должно быть в функции/методе?

public static String getSystemLookAndFeelClassName() <
String systemLAF = ( String )AccessController.doPrivileged(
new GetPropertyAction( «swing.systemlaf» ));
if (systemLAF != null ) <
return systemLAF;
>
String osName = ( String )AccessController.doPrivileged(
new GetPropertyAction( «os.name» ));

if (osName != null ) <
if (osName.indexOf( «Windows» ) != -1) <
return «com.sun.java.swing.plaf.windows.WindowsLookAndFeel» ;
>
else <
String desktop = ( String )AccessController.doPrivileged(
new GetPropertyAction( «sun.desktop» ));
if ( «gnome» .equals(desktop)) <
// May be set on Linux and Solaris boxs.
return «com.sun.java.swing.plaf.gtk.GTKLookAndFeel» ;
>
if ((osName.indexOf( «Solaris» ) != -1) ||
(osName.indexOf( «SunOS» ) != -1)) <
return «com.sun.java.swing.plaf.motif.MotifLookAndFeel» ;
>
>
>
return getCrossPlatformLookAndFeelClassName();
>

* This source code was highlighted with Source Code Highlighter .

public static String getSystemLookAndFeelClassName() <
String result = getCrossPlatformLookAndFeelClassName();

String systemLAF = ( String )AccessController.doPrivileged(
new GetPropertyAction( «swing.systemlaf» ));
if (systemLAF != null ) <
result = systemLAF;
>
String osName = ( String )AccessController.doPrivileged(
new GetPropertyAction( «os.name» ));

if (osName != null ) <
if (osName.indexOf( «Windows» ) != -1) <
result = «com.sun.java.swing.plaf.windows.WindowsLookAndFeel» ;
>
else <
String desktop = ( String )AccessController.doPrivileged(
new GetPropertyAction( «sun.desktop» ));
if ( «gnome» .equals(desktop)) <
// May be set on Linux and Solaris boxs.
result = «com.sun.java.swing.plaf.gtk.GTKLookAndFeel» ;
>
if ((osName.indexOf( «Solaris» ) != -1) ||
(osName.indexOf( «SunOS» ) != -1)) <
result = «com.sun.java.swing.plaf.motif.MotifLookAndFeel» ;
>
>
>
return result;
>

* This source code was highlighted with Source Code Highlighter .

UPD: первый вариант — это функция, взятая без изменений из исходников Sun JDK 6.0, второй вариант — это наскоро переделаный мною первый вариант по стилю моего коллеги.

Функция (return, параметры) в JS

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

Представьте себе, что функция это банкомат. Вы передаете банкомату ваши данные (параметры): пин код, сумма для снятия, затем нажимаете на кнопочку (событие), банкомат там что-то вычисляет (производит действие) и выдает вам денежку, возвращает результат (return).

Мы не будем заморачиваться с алгоритмом работы банкомата, а напишем свой собственный, пофантазируем: пин код + сумма = наличные. Банкомат в своих вычислениях будет руководствоваться формулой сложения.

function bankomat(pin, sum) <
return pin + sum; // результат
>

Только что, мы написали функцию под названием bankomat, в которую переданы два параметра (pin, sum). Поскольку пользователей банкомата много, то значения у параметров (аргументы), у каждого будут свои.

Переменная user принимает аргументы функции, полученные от пользователя и выводит результат сложения, возвращает число 1025. Клиент получает свои 1025 руб.


let user = bankomat(25, 1000);
alert(user); // 1025

Таким образом, введенные новые данные (аргументы) следующего клиента, передаются через переменную в параметры функции, запускается формула вычисления и мы получаем результат. Приведенный пример не стоит воспринимать буквально, важно уловить суть таких понятий, как function, return, parameters, arguments.

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

function getPass() <
// тело функции
>

Внутри фигурных скобочек идет описание функции, для выполнения функции, пишется имя функции и круглые скобки.

getPass() // команда вызова функции

Область видимости функции

Функцию можно вызывать в любом месте скрипта, независимо от того, где эта функция описана.

Важная особенность! Переменные, объявленные внутри функции, считаются локальными и за пределами функции, программа их не видит, то есть к ним нельзя обратиться. Соответственно, переменные, объявленные в общем коде скрипта – глобальные.

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

let x = 5; // глобальная переменная
console.log(globalTest());
function globalTest() <
return x; // область видимости
>

Аргументы JavaScript функции

Рассмотрим на примере сложения двух чисел, что такое аргументы. В круглых скобочках функции передаются параметры – это переменные, вместо которых подставятся реальные значения, введенные пользователем или из базы данных.

function summa(x,y) <
console.log(x+y);
>

При вызове функции передаются аргументы.

Функция возвращает результат

Полученный результат от сложения чисел, не обязательно выводить в консоли, в alert окне или на странице. Функция, при помощи команды return, просто возвращает результат, который можно дальше применять в программе, обращаясь к итоговому результату.

Если программа дошла до return, то функция перестает выполняться и возвращает результат.

Способы объявления функции JS


В JavaScript объявить функцию можно двумя способами.

Первый способ через function:

Функцию можно вызвать, до и после её описания, где угодно.

Второй способ через выражение:

Переменной x присвоили анонимную функцию (без имени) и затем вызвали её, обратившись к имени переменной. Обратится к функции выражению, до её объявления, нельзя.

Заключение

Функция предназначена для многократного повторения кода, поэтому её писать надо так, чтобы функция что-нибудь возвращала. Она должна отлично выполнять какое-нибудь одно действие: возвратить сумму, строку. Не рекомендуется в одной функции программировать много действий.

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

Переменную, объявленную внутри какой-нибудь функции, не видно снаружи. А все, что объявлено снаружи может быть доступно внутри функции.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Илон Маск рекомендует:  Что такое код mb_eregi

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):

  • Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2020 Русаков Михаил Юрьевич. Все права защищены.

    Зачем return в программе?

    Вот если указано return 0; — то программа закончиться.Я правильно понимаю?

    Только если это return в main().

    return это команда закончить текущую функцию (и вернуть значение вызыающей функции)

    А если ничего не указать?Она будет в памяти висеть или что?

    Т.е. если указываешь 0, то это типа false.

    Implementation defined. Обычно работает так же как и EXIT_FAILURE.

    Фактически это код выхода. Он возвращается в ОС. Если программа была запущена из командной строки этот код выхода можно проверить чтобы узнать как была завершена программа.

    Форум

    Справочник

    Поиск по форуму
    Расширенный поиск
    К странице.

    Илья Кантор, 20 мая 2009 — 16:54

    return

    Возвратить результат работы функции

    Синтаксис


    Аргументы

    Описание, примеры

    См. также

    • function /Синтаксическая конструкция/

    почему ф-ция воззвращает текст??

    var screens=screen.width;
    var sl > var sl > if(sl > return 3;
    > else if(slidelength>=5) <
    return 5;
    >
    >
    alert(slideAll)

    ибо slideAll — функция. попрбуй alert(slideAll())

    Автор, выручай(( уже сил нет.. Создал трехмерную матрицу, сделал функции для перемещения по ней. функция должны принимать координаты ячейки в матрице и возвращать ССЫЛКУ на ячейку. Как это можно сделать?
    вот тут пример с одномерным массивом. хотя бы на этом примере.

    function ww(num) <
    return window.q[num]
    >

    ww(3) = 9999999 // тут ошибка, так как return в функции возвращает не ссылку

    Добрый день.
    Наткнулась в коде на такие конструкции:

    (function(value) <
    .
    return ;
    return true;

    >) (value)

    При этом перед первым return нет условия.
    Разве второй return не будет unreachable code?

    Не работает в IE. Плагин установлен, возвращает «ложь».

    Можно было бы ещё добавить как вариант [expression]:

    var z = function(t) <
    var y = 10;
    return t();
    >;

    вернут разные значения

    Люди, а кто может поведать чайнику смысл этого return? Ну хорошо, возвращает он результат, а какой в этом смысл?
    Заранее при много блпгодарен


    Думаю это самый нужный комментарий на сайте.

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

    Люди, пожалуйста, объясните чайнику, что это ва-аще за выкрутас такой:
    (function () < return 2; >)() ? Я имею в виду именно function () . Про это нигде не написано, или я не смог найти. Ведь функцию вызывают по имени.

    Именно function () . это анонимная функция. Всё выражение такого вида называется IIFE. Гугль в помощь.

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

    function /*Вызов функции*/ numbers /* Имя переменной, в вашем случае функция безымянная, но это не ошибка, функции могут быть безымянными */ ( /*Здесь должны быть аргументы (переменные) , например : */ a,b,c /* аргументы не могут использоваться внутри функции */) <
    /* Тело программы */
    a=0;b=0;c=0;/* чтобы не случалось казусов */
    a++;
    b++;
    c++;
    console.log(a+b+c); /*В консоль выведется 3*/
    >

    /* Функции можно вызывать */

    numbers(); /* Я вызвал функцию с именем numbers */
    numbers();
    numbers(); /* Обратите внимание, что результат будет не 9, а 3 */

    /* Если изучаете html , вот ещё инфа */

    /*На html странице такой код будет выполняться при загрузке страницы,
    можно, например, через атрибут onclick=»numbers()» вызвать функцию при нажатии на элемент */ Вот ссылка на ютубера, отлично обьясняет : https://youtu.be/M3ACkFObsQw?list=PL363QX7S8MfSxcHzvkNEqMYbOyhLeWwem

    Аргументы не могут использоваться в не функции* , ошибся

    Все это хорошо. Но где здесь return? Собственно вокруг чего и спор.

    Что делает этот код C с кодом возврата?

    Функция возвращает TRUE при сбое и FALSE при успешном завершении.

    Я вижу, что некоторые из таких функций делают это до самого конца:

    И в этой функции в каждом случае ошибки возвращается TRUE — это нормально и что он должен делать в случае ошибки.

    Но что означает код выше? Это попытка убедиться, что return_code FALSE — явно?

    Оба зависят от значения return_code:

    Я бы сказал, пытается свернуть все возможные значения целых чисел только с 0 и 1 . Я предполагаю, что функция возвращает целочисленный тип; оценивая результат как булево выражение, заставляет результат использовать только эти два значения.

    Просто еще одно объяснение —

    Скорее всего, где-то в программе определены TRUE и FALSE:

    Когда вычисляется логическое выражение, результат всегда равен 1 или 0, 1, если логическое выражение оценивается как true и 0, если оно ложно. Вот почему вы можете проверить, имеет ли логическое выражение TRUE или FALSE. Если вам просто интересно узнать о булевых выражениях и получить более основную информацию, вот достойный учебник.

    Простой пример, чтобы дать понять, с функцией, которая делит a на b. Возвращает true, если деление может быть оценено false иначе

    В этом простом примере, только если b == 0, return_code будет 0, так как Marc ответил, что он вернет false. В любом другом случае он вернет true. Конечно, нет никакой причины делать что-то подобное в такой простой функции. В более сложной функции, где успех или нет может измениться во многих местах, общепринятой практикой является использование таких операторов возврата.

    Посмотрите другие вопросы по меткам c error-handling return-value или Задайте вопрос

    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL