Добавил:
ФКН Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Семестр 1 / Алгоритмизация Практика 8 язык С

.pdf
Скачиваний:
106
Добавлен:
05.12.2019
Размер:
280.21 Кб
Скачать

Алгоритмизация и программирование Си

Практическое занятие №8

«Функции»

Общие сведения о функциях

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

Заголовок_функции

{

тело_функции

}

Заголовок функции имеет вид

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

type - тип возвращаемого функцией значения;

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

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

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

Передача параметров в функции в С

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

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

Область видимости переменных в функциях С

По месту объявления переменные в языке Си можно разделить на три класса:

локальные переменные, которые объявляются внутри функции и доступны только в ней;

глобальные переменные, которые описаны до всех функций; доступны из любой функции;

формальные параметры функций описываются в списке параметров функции.

Примеры использования функций при решении практических задач

П. 1. Функция для вычисления факториала

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

Практическоезанятие№8

Страница1

Алгоритмизация и программирование Си Функция вычисления факториала может выглядеть следующим образом:

long int factorial(int N)

{

long int i,f;

for(f=1, i=1; i<=N; i++) f*=i; return f;

}

Обращение к такой функции выглядит так же, как и к встроенным функциям языка.

П. 2. Вычисление чисел Фибоначчи.

Если нулевой элемент последовательности равен 0, первый – 1, а каждый последующий равен сумме двух предыдущих, то это последовательность чисел Фибоначчи (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... ).

П. 3. Простые числа.

Проверку простоты числа N оформим в виде отдельной функции с именем prostoe. Входным параметром функции будет целое число N, функция будет возвращать значение 1, если число простое и 0 - в противном случае.

Функция prostoe может выглядеть, например, так

int prostoe(long long int N) // 1 esli prostoe, 0 esli net

{

long long int i;

if (N <= 2) return 1; else

for(i=2; i<=N/2; i++) if (N%i==0) return 0;

return 1;

}

Задания для самостоятельного решения (2 балла)

Задание 1 (0.5 балла).

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

Задание 2 (0.5 балла).

Напишите программу, позволяющую вычислить N-е числo Фибонначи (N вводится с клавиатуры), используя функцию вычисления чисел Фибонначи.

Задание 3 (1 балл).

(0.5 балла) Напишите программу для проверки простоты чисел с использованием функций prostoe. Проверьте с ее помощью гипотезу: все числа 2^(2^n)+1 – простые. Для какого «n» эта гипотеза нарушается?

(0.5 балла) Поместите вызов функции prostoe в цикл, так чтобы можно было проверить простоту чисел в определенном диапазоне и сосчитать количество простых чисел в этом диапазоне. Сосчитайте с помощью программы и напечатайте таблицу: количество простых чисел среди 1й, 2й, ... 10й тысячи натуральных чисел.

Практическоезанятие№8

Страница2