Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Си.doc
Скачиваний:
31
Добавлен:
04.06.2015
Размер:
2.75 Mб
Скачать

Int main()

{

Int vector_min, vector_max, temp;

int i, i1, i2, i3, m, per;

time_t t; // текущее время для инициализации

// генератора случайных чисел

srand((unsigned) time(&t)); // инициализация генератора // случайных чисел

printf("\nВведите нижнюю границу:");

scanf(“%d”, &vector_min);

printf("\nВведите верхнюю границу:");

scanf(“%d”, &vector_max);

printf("\nВведите размер вектора:");

scanf(“%d”, &n);

Int vector[n];

printf("\nИсходный вектор:\n");

m= vector_max–vector_min + 1;

for (i=0; i<n; i++)

{

// получение случайного числа в диапазоне

// от vector_min до vector_max

vector[i]=rand()% m + vector_min;

printf(" %5d", vector[i]);

}

printf("\n");

i1=n-1;

while (i1>=1)

{

i1 /= 2;

i2=n-i1-1;

do

{

per=1;

for (i=0; i<=i2; i++)

{

i3=i+i1;

if (vector[i] > vector[i3])

{

temp=vector[i];

vector[i]=vector[i3];

vector[i3]=temp;

per=0;

} // if (vector[i] > vector[i3])

} // for (i=0; i<=i2; i++)

} // do

while (!per);

} // while (i1>=1)

printf("\nОтсортированный вектор:\n");

for (i=0; i<n; i++)

{

printf(" %5d", vector[i]);

}

printf("\n");

return 0;

}

Функции

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

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

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

Примерами подпрограмм являются программы вычисления отдельных функций, имеющихся в библиотеках языков программирования – стандартные функции, а также функции ввода-вывода. Эти подпрограммы размещены в системной библиотеке языка, подключаемой к программе пользователя при ее обработке. Значит, используя в своей программе, например, функцию printf, мы обращаемся к стандартной библиотеке ввода-выводаstdio.h, подсоединяемой к нашей программе директивой препроцессора#include <stdio.h>.

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

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

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

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

директивы препроцессора

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]