Войти на сайт

или
Регистрация

Навигация


3. Функции

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

3.1 Понятие

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

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

Тип имя функции (список параметров)

{

Соглашения

Инструкции

return (значение функции)

}

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

int quad (int x)

{

return (x * x);

}

содержит параметр с именем x типа Integer(целый).

При вызове функции формальные параметры заменяются актуальными параметрами, в качестве которых могут выступать определенные значения, константы или переменные величины. Например: y = quad (25); При этом тип актуального параметра должен обязательно соответствовать типу формального параметра.

3.2 Готовность и срок службы имен

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

1.         Готовность (Доступность). Этим свойством определяются места программы, в которых можно получить доступ к тем или иным объектам (переменным величинам или функциям). Здесь существует 4 основных программных области – программа, модуль, функция, блок. Объекты, которые определяются в самой программе или модуле являются глобальными объектами, а если определяются в пределах блока или функции, то являются локальными объектами.

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

Эти правила дают ряд преимуществ при написании программ:

·           Переменная получает определенное значение в пределах функции.

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

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

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

3.3 Рекурсия и итерация

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

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

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

-    Алгоритмы с заранее известным количеством шагов повторения.

-    Алгоритмы с заранее неизвестным количеством шагов повторения.

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

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

3.4 Функции ввода-вывода

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

Ввод и вывод данных в C происходит через файловый интерфейс. При этом с устройствами, как, например, принтер или консоль обращаются как с файлами. В стандартной C-библиотеке для нескольких устройств существуют стандартные файлы:

·           stdin (стандартный ввод данных, клавиатура)

·           stdout (стандартный вывод, монитор)

·           stderr (ошибки вывода, монитор)

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

Также существует специальная функция вывода информации – printf, которая имеет вид:

int printf(контрольная строка, аргумент1, аргумент2, ... ). Функция printf копирует символы из формата стандартного вывода либо до конца строки, либо до символа %. Чтобы определить тип формата вывода, функция ищет следующие за % символы. Самый часто используемым является формат %d, который выводит целые числа в десятичной системе счисления.

Стандартной функцией ввода данных в C является функция scanf, которая имеет следующий вид: scanf (контрольная строка, аргумент1, аргумент2,...). Она переводит соответственно в управляющую строку "контрольную строку" данного типа и формата. Она задает формат и назначает конвертированные значения через определенный адрес соответствующим переменным величинам arg1, arg2....



Информация о работе «Алгоритмы и структуры данных. Программирование в Cи»
Раздел: Информатика, программирование
Количество знаков с пробелами: 61871
Количество таблиц: 4
Количество изображений: 0

Похожие работы

Скачать
29246
1
2

... , которая определяет последовательность действий над некоторыми объектами и после конечного числа шагов приводит к по лучению требуемого результата. ЭВМ — исполнитель алгоритмов. Обсуждение методических вопросов изучения темы «Алгоритмы работы с величинами» буде проводить в программистском аспекте. Составление любой программы для ЭВМ начинается с построения алгоритма. Как известно, всякий ...

Скачать
29193
3
0

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

Скачать
17900
0
0

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

Скачать
9572
0
0

... процедуры и функция (программирование) функции макросы * глобальная переменная глобальные переменные * класс программирование классы * Обобщённое программирование шаблоны Обычно стандартная библиотека содержит основные алгоритмы и структуры данных, необходимые для: * работы с динамически распределяемая память динамической памятью * файловыми операциями ввода-вывода * операциями ввода- ...

0 комментариев


Наверх