Опубликован: 16.09.2005 | Уровень: для всех | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 8:

Основы языка Си: структура Си-программы, базовые типы и конструирование новых типов, операции и выражения

Функции

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

double sin(double x);

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

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

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

x = sin(1.0);

Здесь в результате вызова функции sin вычисляется синус числа 1.0, затем вычисленное значение записывается в переменную x при выполнении оператора присваивания " = ". Другой пример:

f();

Вызывается функция f, не имеющая параметров. Значение, возвращенное в результате выполнения функции f, не используется. Программа на Си состоит из функций. Работа программы всегда начинается с функции с именем main. Рассмотрим минимальный пример Си-программы

Программа "Hello, World!"

Приведенная ниже программа печатает фразу "Hello, World!" на экране терминала.

#include <stdio.h>

    int main() {
        printf("Hello, World\n");
        return 0;
    }

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

Тело любой функции заключается в фигурные скобки. В теле функции main вызывается функция printf. В данном случае ее единственным аргументом является строка, которая выводится в стандартный поток вывода. Строковые константы в Си заключаются в двойные апострофы. Строка заканчивается символом перевода курсора в начало следующей строки \n (читается как "new line", новая строка). Желательно любую печать завершать этим символом, иначе при следующей печати новая строка будет дописана в конец предыдущей.

Строка

return 0;

завершает выполнение функции main и возвращает нулевой результат ее выполнения. Операционная система трактует нулевой результат как признак успешного завершения программы.

Для выполнения данной программы надо сначала ввести ее текст в файл " hello.cpp ", используя любой текстовый редактор. Затем надо скомпилировать и собрать готовую программу. Конкретные команды зависят от операционной системы и установленного Си-компилятора. В системе Unix с компилятором gcc из пакета GNU это делается с помощью команды

g++ hello.cpp

В результате создается выполняемый файл с именем " a.out ". Для запуска программы следует выполнить команду

./a.out

Если необходимо, чтобы в результате компиляции и сборки создавался выполняемый файл с именем " hello ", то надо выполнить следующую команду:

g++ -o hello hello.cpp

Здесь в командной строке используется ключ " -o hello " (от слова "output"), задающий имя " hello " для выходного файла. В этом случае программа запускается с помощью команды

./hello

Заметим, что в системе Unix имена выполняемых файлов обычно не имеют никакого расширения. В системах MS DOS и MS Windows выполняемые файлы имеют расширение " .exe ".

Кирилл Юлаев
Кирилл Юлаев
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Денис Шестериков
Денис Шестериков
Россия
Сергей Мамойленко
Сергей Мамойленко
Россия, Московский государственный институт стали и сплавов (Технологический университет), 2000