Стараюсь объяснить что такое Функции в программировании и зачем они нужны

Sdílet
Vložit
  • čas přidán 21. 08. 2024
  • Ссылки из видео:
    Самоучитель по JavaScript: www.crunchzill...
    Энциклопедия профессора Фортрана: djvu.online/fi...

Komentáře • 11

  • @ПубгМобил
    @ПубгМобил Před měsícem

    Благадорю за столь хорошее объяснение

  • @huskyfromalaska7647
    @huskyfromalaska7647 Před měsícem

    Боже, спасибо огромное! Читаю книгу по С# от Эндрю Троелсен, Филипп Джепикнса. Не все моменты понятны. Нашел альтернативную трактовку понятий в твоих видео. Очень классно рассказываешь и на понятных примерах. Спасибо!!!

  • @올래나
    @올래나 Před měsícem

    Ура-ура! Наш 왕 (ван) засветился. И галочки меняют цвет на зеленый. 감사합니다!

  • @drone_tales
    @drone_tales Před měsícem

    Блин, дядька, какая же у тебя каша в голове.
    Начнем с начала.
    Подпрограммы были всегда. Возможность вызова подпрограмм присутствует в любом языке программирования. В ассемблере, C, C++, Java. Даже в GCODE, который ты приводил в качестве примера, и там есть возможность писать и вызывать подпрограммы.
    Что такое подпрограмма? Это, как следует из термина - маленькая законченная программа, выполняющая некое конкретное действие. Например, подпрограмма вычисления квадратного корня. Программист может использовать как "встроенные" (или библиотечные) подпрограммы языка, так и написать свои для решения своих задач. Ты правильно заметил, что в подпрограммы выносят код, который часто повоторяется.
    Функции и процедуры.
    Функции и процедуры это тоже подпрограммы. Отличие в том, что процедуры не возвращает значение. Функция - возвращает. Пример: вычисление квадратного корня - функция. Рисования круга - скорее процедура. Не все языки программирования явно различают функции и процедуры. Часто говорят, что, например, в ассемблере нет функций (там все процедуры). А в си-подобных языках нет процедур - там все функция. Хотя по факту что в ассемблере что в си-подобных языках - есть и то и другое. Паскаль же явно различает процедуры и функции.
    Подпрограммы могут быть собраны в "библиотеки" (это такие специальные файлы, в которых содержится набор процедур и функций выполняющих некие логически связанные действия). Например функции вычисления корня, синуса, косинуса могут быть собраны в одну библиотеку. Для чего? Чтобы их было удобно использовать в разных программах. Однажды написав библиотеку вы легко можете ее "подключить" к другой своей программе или передать другому программисту.
    Подпрограммы могут принимать "параметры". К примеру у функции (подпрограммы) вычисления корня есть один входной параметр - значение, из которого нужно вычислить корень. И она возвращает значение (а значит это - функция) - результат вычисления корня. У подпрограммы рисования круга может быть три параметра: координаты центра и радиус. Так как значение не возвращается, то это - процедура.
    Теперь про методы
    Методы класса - это такие же точно подпрограммы, как и все остальные за буквально несколькими отличиями. Во-первых, методы принадлежат классу. Во-вторых, методы работают только с данными (полями) класса.
    Естественно, это не строгие ограничения. Никто не запрещает написать метод класса, который будет образаться к глобальным переменным и вызывать подпрограммы не принадлежащие классу. Но обычно так не делают. Для того, чтобы понять, почему так, нужно написать еще страниц 10 про классы.
    Не совсем понятно что значит "написать функцию в теле класса"? Они и так все пишутся в теле класса. Есть языки, где реализация может быть описана в теле класса. Есть где реализация отделена от декларации. Есть - где можно и так и так. Сишные шаблоны - так там только в теле шаблона реализация пишется.
    В общем дядьке, не обижаяся, но тебе еще рановато других учить (я помотрел твое видео про классы - там тоже довольно все "кашеобразно".

    • @FirinorHisimeon
      @FirinorHisimeon  Před měsícem

      Спасибо за разъяснение)
      1) "Блин, дядька, какая же у тебя каша в голове."
      Так никто не запрещает содержать кашу в голове)
      2) "Подпрограммы были всегда."
      Были времена, когда подпрограмм не было. Их придумали уже после появления первых компиляторов. (Но это не точно)
      3) "Функции и процедуры это тоже подпрограммы. Отличие в том, что..."
      Я специально решил в этом видео смешать Подпрограммы, Функции, Процедуры и Методы в единое понятие. Хотелось сделать видео попроще. Извиняй уж)
      4) "Не совсем понятно что значит "написать функцию в теле класса"? Они и так все пишутся в теле класса."
      Разве? А как же методы расширения?)

    • @drone_tales
      @drone_tales Před měsícem

      @@FirinorHisimeon
      1. Никто. Зачем ее нести в массы?
      2. Ключевое слово - ассемблер. Читай - машинные коды. Обработчики прерываний тоже можно рассматривать как частный случай подпрограммы.
      3. Ну хотябы вскользь упомянуть стоило.
      4. Ну я сразу написал что данное выражение я не понял. Что значит "написать функцию в теле класса"? И привел пример, как я это понимаю: есть языки с раздельной декларацией и реализацией (Pascal/Delphi). Есть, где реализация "совмещена" (с#, Java). А есть где можно и так и так (C++).
      Методы расширения - обычные классовые методы. Ну либо статические, здесь кому как нравится. Они скорее похожи на интерфейсы с реализацией и хитрым связыванием. Собственно, перегрузка операторов из той же оперы. Просто связывание идет не через полиморфизм и наследование, а через RTTI и классовые типы.

    • @FirinorHisimeon
      @FirinorHisimeon  Před měsícem

      Нравится мне, что ты делаешь наводки, для людей, которые посмотрят это видео и прочитают комментарии)
      Красава @drone_tales!
      А от себя могу сказать - просто воспринимай это видео, как ещё одну точку зрения)

    • @drone_tales
      @drone_tales Před měsícem

      @@FirinorHisimeon Мда. Тяжелый случай.

    • @user-ne4bd3ry1n
      @user-ne4bd3ry1n Před měsícem

      @drone_tales запишите свой видос, посмотрим