JavaRush /Курсы /Harvard CS50 /Структура функции

Структура функции

Harvard CS50
2 уровень , 2 лекция
Открыта

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

cs50 функция

Если вы решали задачник первой недели, вы уже успели познакомиться с функциями GetInt (), GetString (), printf (). Каждая из них получает на вход определенные данные, выполняет определенные действия и возвращает определенный результат.

Зачем нужны функции

  • Упорядочивание кода. Код гораздо проще поддерживать, если он разбит на функции, и каждая из них делает чётко определенную небольшую часть работы.
  • Упрощение кода. Вам не нужно знать, как работает функция, главное — результат её работы. Это упрощает понимание большой программы.
  • Повторное использование. Если вам нужно сделать подобные действия в различных частях программы, можно написать всего одну функцию, и использовать её многократно.

Структура функции

Функции имеют следующую структуру:


      
  
      
  
      
  <тип результата>
    имя (список параметров) {     
   <тело функции>
     } 
    
  

Пример:

Структура функции - 1
#include &ltstdio.h>

int cube(int input); //Прототип функции cube

int main(void)
{
     int x = 2;
     printf("x is %i\n", x);
     x = cube(x);
     printf("x is %i\n", x);
}

int cube(int input)
{
     int output = input * input * input;
     return output;
}

Прототип функции

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

Тип результата (return type)

На Си нужно всегда указывать тип результата. То есть мы должны явно указать, какого типа будет то значение, которое должна вернуть функция. В примере выше, функция возвращает куб целого числа. Результат относится к типу int.

Имя функции (function name)

Любое название функции. Желательно называть функции так, чтобы было понятно, что они делают. В примере функция называется cube.

Список параметров (parameter list)

Перечень входных данных для функции. Функция может не иметь параметров, может иметь один или несколько параметров. Для каждого параметра нужно указать его имя и тип. В примере функция принимает единственный параметр — целое число int input.

Тело функции (body)

В теле описаны действия, которые выполняет функция. Слово return указывает на конец работы функции и указывает значение, которое возвращает функция в качестве результата её работы (значение переменной output в примере). Функция может и не возвращать никакого результата.

Комментарии (8)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
17 января 2022
Учите английский , и смотрите на сайте CS50 . Я например начал с фильмов , теперь смотрю всякие интересные видео на ютубе типа TED, И уже кое что понимаю на лекциях за 2020 год , даже больше чем кое-что .( за 2021 и 2022 не интересно: в первом нет студентов в зале , а во втором лектор в маске .
Юличка Уровень 32
26 сентября 2021
Artem Roomov Уровень 0
21 июня 2020
Помогите найти задачники, пожалуйста... гуляю по сайту и не могу найти их...
10 июля 2020
Мне кажется, что задачи аля Марио и есть задачи оттуда. Но возможно вам нужен оригинал для других целей?Тогда просторы этих ваших интернетов.
mak7imt Уровень 0
27 января 2021
http://cs50.tv/2015/fall
Иван Уровень 1
24 ноября 2017
Ivan Manvelov -x is -это просто текст к примеру hello.%i\n -заполнитель целого числа и перенос на новую строку.
Ivan Manvelov Уровень 3
22 ноября 2017
что значит "x is %i\n" ? подскажите
Anonymous #3604180 Уровень 11
5 августа 2025
" x is " - обычный текст "%i(сокращение от Integer)" - вместо этого будет выведено значение переменной, которое написано после запятой после кавычек, например:

int age = 20;
printf("I am %i years old", age)  //В результате будет выведено "I am 20(значение переменной age) years old"
\n - просто переход на следующую строку(Enter)