Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Технологии программирования. Учебно-методическое пособие для СПО
.pdf
которой должен соответствовать типу возвращаемого значения функции.
Функция может передать в вызывающую программу только одно значение. Для
передачи возвращаемого значения в вызывающую функцию используется
оператор return в одной из форм:
return(ВозвращаемоеЗначение);
return ВозвращаемоеЗначение;
Действие оператора следующее: значение выражения, заключенного в
скобки, вычисляется и передается в вызывающую функцию. Возвращаемое
значение может использоваться в вызывающей программе как часть некоторого
выражения.
Оператор return также завершает выполнение функции и передает
управление следующему оператору в вызывающей функции. Оператор return
не обязательно должен находиться в конце тела функции.
Функции могут и не возвращать значения, а просто выполнять некоторые
вычисления. В этом случае указывается пустой тип возвращаемого значения
void, а оператор return может либо отсутствовать, либо не возвращать
никакого значения: return;
Пример: Посчитать сумму двух чисел.
#include <stdio.h>
// Функция вычисления суммы двух чисел
int sum(int x, int y) // в функцию передаются два целых числа
{
int k = x + y; // вычисляем сумму чисел и сохраняем в k
return k; // возвращаем значение k
}
int main()
{
int a, r; // описание двух целых переменных
printf("a= ");
scanf("%d", &a); // вводим a
r = sum(a, 5); // вызов функции: x=a, y=5
printf("%d + 5 = %d", a, r); // вывод: a + 5 = r
return 0; }
Механизм передачи параметров является основным способом обмена
информацией между вызывающей и вызываемой функциями. Параметры,
перечисленные в заголовке функции, называются формальными, а параметры,
указываемые при вызове функции – фактическими.
Формальные и фактические параметры должны быть согласованы друг с
другом по количеству, типу и порядку следования. Это означает, что
количество формальных параметров должно быть равно количеству
фактических параметров, и каждый формальный параметр должен иметь тот же
тип и занимать в списке то же место, что и соответствующий ему фактический
параметр.
21

Каждая переменная имеет свою область видимости, то есть такую область, в
которой можно работать с этой переменной. За пределами этой области, о
данной переменной ничего известно не будет, а значит и использовать её
нельзя. Итак, переменная находится в области видимости, если к ней можно
получить доступ.
Существуют локальные и глобальные переменные. Так вот, переменные,
объявленные внутри функции, называются локальными. Локальные
переменные имеют свои области видимости, этими областями являются
функции, в которых объявлены переменные. Таким образом, в разных
функциях можно использовать переменные с одинаковыми именами, что в
свою очередь очень удобно. Разделение переменных на глобальные и
локальные соответствует одному из главных правил программирования, а
именно – принципу наименьших привилегий. То есть, переменные,
объявленные внутри одной функции, должны быть доступны только для этой
функции и ни чему другому, в конце концов, они создавались именно для этой
функции. Глобальные переменные объявляются вне тела какой-либо функции,
и поэтому область видимости таких переменных распространяется на всю
программу. Обычно глобальные переменные объявляются перед главной
функцией, но можно объявлять и после функции main(), но тогда данная
переменная не будет доступна в функции main().
Задание к практическому занятию
В соответствии с индивидуальным заданием, номер которого совпадает с
Вашим номером в журнале старосты, разработать алгоритмы и программу
на языке Си с использованием разработанных автором функций.
К поставленной перед Вами задаче следует отнестись так:
3. Разложить ее на подзадачи;
4. Написать для каждой подзадачи реализующую ее функцию на языке Си;
5. Написать главную (вызывающую) функцию main; Главная функция,
согласно алгоритму, обратится к функциям, чтобы решить
поставленную задачу.
Например:
2. Подзадачи:
а) формирование матрицы;
б) поиск строки с элементами меньшими 10;
г) нахождение произведения элементов этой строки;
д) поиск минимального произведения.
22

В подзадаче а) предусмотреть формирование матрицы двумя способами:
ввод данных в матрицу с клавиатуры; заполнение матрицы случайными
числами.
Варианты заданий:
ВАРИАНТ №1
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать целочисленную матрицу А(NхN);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество отрицательных чисел;
- вычислить суммы диагональных элементов( и главной и побочной )
отдельно, но в одной функции.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №2
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN).
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество положительных чисел;
- посчитать количество отрицательных элементов на главной и
побочной диагоналях отдельно, но в одной функции.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №3
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN).
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество нулевых элементов;
- найти максимальные элементы на главной и побочной диагоналях одной
функцией.
Написать функцию (main), вызывающую разработанные вами функции.
23

ВАРИАНТ №4
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице сумму отрицательных чисел;
- найти максимальный элемент матрицы и его порядковый номер.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №5
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхМ);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице сумму положительных чисел;
- вычислить количество отрицательных и положительных элементов
отдельно, но в одной функции.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №6
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхM);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице минимальное отрицательное число;
- вычислить суммы отрицательных и положительных элементов
отдельно, но в одной функции.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №7
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхM);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице минимальное положительное число и его индекс;
- определить, сколько в матрице элементов, равных минимальному.
Написать функцию (main), вызывающую разработанные вами функции.
24

ВАРИАНТ №8
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице максимальное отрицательное число и его порядковый
номер;
- определить, сколько в матрице чисел, равных максимальному.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №9
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице максимальное положительное число и максимальное
отрицательное числа;
- уменьшить элементы побочной диагонали на максимальное
отрицательное число.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №10
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхM);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти сумму минимального и максимального чисел матрицы;
- посчитать количество отрицательных чисел на побочной диагонали и
количество положительных чисел на главной одной функцией.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №11
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице сумму элементов главной диагонали;
25

- посчитать, сколько элементов матрицы превышаю эту сумму и сколько
меньше этой суммы (одной функцией).
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №12
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество отрицательных чисел над побочной
диагональю и под побочной диагональю отдельно, но одной функцией;
- увеличить элементы главной диагонали матрицы на число, полученное
в предыдущем пункте(количество отрицательных чисел над побочной
диагональю).
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №13
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN);
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество нулей на побочной диагонали матрицы;
- посчитать средние арифметические значения положительных и
отрицательных значений матрицы отдельно, но одной функцией.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №14
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN)
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество отрицательных чисел на главной диагонали
матрицы;
- найти значения индексов максимального и минимального элементов
матрицы, разработав одну функцию.
Написать функцию (main), вызывающую разработанные вами функции.
26

ВАРИАНТ №15
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN)
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество четных чисел над главной диагональю
матрицы;
- найти значения максимального на главной диагонали и минимального
элемента матрицы на побочной диагонали , разработав одну функцию.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №16
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN)
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество нечетных чисел под главной диагональю
матрицы;
- уменьшить все отрицательные значения матрицы на число, полученное
в предыдущем пункте задания.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №17
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN)
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество четных чисел на главной диагонали
матрицы;
- уменьшить значения элементов матрицы, стоящих под побочной
диагональю на число, полученное в предыдущем пункте задания.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №18
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN)
27

-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество отрицательных чисел на главной диагонали
и на побочной диагонали матрицы отдельно, разработав одну функцию;
- увеличить элементы матрицы на наименьшее число, полученное в
предыдущем пункте задания.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №19
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN)
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество отрицательных и количество
положительных чисел матрицы, разработав одну функцию;
- уменьшить все значения матрицы на наибольшее число, полученное в
предыдущем пункте задания.
Написать функцию (main), вызывающую разработанные вами функции.
ВАРИАНТ №20
1. Для каждого пункта задания написать подпрограмму-функцию
- сформировать матрицу А(NхN)
-вывести на экран значения матрицы, расположив каждую строку
матрицы на строку экрана;
- найти в матрице количество четных и количество нечетных чисел
матрицы, разработав одну функцию;
- уменьшить значения диагональных (главной и побочной) элементов
матрицы на наименьшее число, полученное в предыдущем пункте
задания.
Написать функцию (main), вызывающую разработанные вами функции.
Содержание отчета
1. Номер, тема и цель занятия
2. Задание к лабораторной работе.
3. Схема алгоритма.
4. Программа на языке Си.
28

5. Результаты решения.
Показать отчет преподавателю.
Контрольные вопросы
1. Типы функции в языке С/С++.
2. Структура функции, определенной пользователем.
3. Отличие типовой функции от бестиповой функции.
4. Типы параметров функции.
5. Глобальные и локальные идентификаторы.
29

Занятие № 4
Модульное программирование
Сборка библиотечного модуля
Цель работы: Приобрести навыки использования функций, разработанных
пользователем. Научиться собирать библиотечный модуль.
Подготовка к практическому занятию
1. Повторить такие элементы языка как: понятие функции, структура
типовой функции, структура бестипой функции, списки фактических и
формальных параметров, вызов функции.
Порядок выполнения работы
1. Собрать из функций, разработанных в предыдущей работе,
библиотечный файл ( файл с расширение .с);
2. Создать для библиотечного файла заголовочный файл (файл с
расширением .h);
3. Написать главную (вызывающую) функцию main, к которой
подключить созданную библиотеку;
4. Главная функция, согласно алгоритму, обратится к библиотечным
функциям, чтобы решить поставленную задачу.
5. Провести отладку программы.
6. Выполнить программу.
7. После проверки правильности результатов решения показать их
преподавателю.
Технология сборки библиотеки.
Библиотеки интенсивно используются в программной среде языка Си.
Обычно функции ввода-вывода, обработки строк и другие стандартные
функции языка Си собраны в одну библиотеку, а математические функции
поставляются в виде отдельной библиотеки.
Причина популярности библиотек кроется в распространенной практике прог-
раммирования на языке Си, многие программисты создают небольшие,
многократно используемые функции. Большинство сложных задач
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
