Рекомендации по выбору цикла

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

Операторы break и continue

В теле любого цикла можно использовать операторы break и continue. Оператор breakпозволяет выйти из цикла, не завершая его. Оператор continue позволяет пропустить часть операторов тела цикла и начать новую итерацию.

Пример: Вывести числа от 0 до 99 ниже главной диагонали

#include <stdio.h>
#include <stdlib.h>
int main()

{

unsigned int i,j;

for(i=0; i<10; i++) {

for(j=0; j<10; j++) {

if(j>i)

break;

printf("%2d ",i*10+j);

}

printf("\n");

}

getchar();

return 0;
}

Результат выполнения программы
Рекомендации по выбору цикла - student2.ru
Пример: Вывести числа от 0 до 99 исключая числа, оканчивающиеся на 5 или 8

#include <stdio.h>
#include <stdlib.h>
int main()

{

unsigned int i,j;

for(i=0; i<10; i++) {

for(j=0; j<10; j++) {

if((j==8) || (j==5)))

continue;

printf("%2d ",i*10+j);

}

printf("\n");

}

getchar();

return 0;
}

Результатвыполнения
Рекомендации по выбору цикла - student2.ru

При вложенных циклах действия оператов break и continue распространяется только на самую внутреннюю структуру, в которой они содержатся.

Оператор безусловного перехода goto

Общая форма записи

goto метка;
метка : операция;

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

Пример

#include <stdio.h>
int main()

{

int k=5;
M1: if(k<0)

goto M2;

printf("%d ",k);

k--;

goto M1;
M2: getchar();

return 0;
}

Результат выполнения
Рекомендации по выбору цикла - student2.ru

Функции в языке Си

Функция — это самостоятельная единица программы, которая спроектирована для реализации конкретной подзадачи. Функция является подпрограммой, которая может содержаться в основной программе, а может быть создана отдельно (в библиотеке). Каждая функция выполняет в программе определенные действия.

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

Семантика функции определяет способ реализации функции. Обычно представляет собой тело функции.

Определение функции

Каждая функция в языке Си должна быть определена, то есть должны быть указаны:

· тип возвращаемого значения;

· имя функции;

· информация о формальных аргументах;

· тело функции.

Определение функции имеет следующий синтаксис:


Тип Возвращаемого Значения Имя Функции (Список Формальных Аргументов)

{

Тело Функции;

...

Return (Возвращаемое Значение);
}

Пример

float function(float x, float z)
{

float y;

y=x+z;

return(y);
}

В указанном примере возвращаемое значение имеет тип float. В качестве возвращаемого значения в вызывающую функцию передается значение переменной y. Формальными аргументами являются значения переменных x и z.

Если функция не возвращает значения, то тип возвращаемого значения для нее указывается как void. При этом операция return может быть опущена. Если функция не принимает аргументов, в круглых скобках также указывается void.

Различают системные (в составе систем программирования) и собственные функции.

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

Собственные функции - это функции, написанные пользователем для решения конкретной подзадачи.

Разбиение программ на функции дает следующие преимущества:

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

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

· Функции повышают уровень модульности программы и облегают ее проектирование.

· Использование функций облегчает чтение и понимание программы и ускоряет поиск и исправление ошибок.

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

Вызов функции

Общий вид вызова функции

переменная = Имя Функции (Список Фактических Аргументов);

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

Наши рекомендации