Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Операторы организации циклов.




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

for, while и do-while. Первый из них формально записывается в виде

 

for (выражение_1; выражение_2; выражение_3) {тело цикла}

 

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

1) присвоения начального значения управляющей переменной;

2) проверки выполнения условия продолжения цикла;

3) изменения значения управляющей переменной.

Таким образом, выражение 1 присваивает начальное значение управляющей переменной, выражение 3 изменяет его на каждом шаге, а выражение 2 - проверяет, не достигло ли оно граничного значения, устанавливающего необходимость выхода из цикла. Любое из трех выражений в цикле for может отсутствовать, однако точка с запятой должна оставаться. Таким образом,

 

for (;;) {...}

 

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

В языке С принято следующее правило. Любое выражение с оператором присваивания, заключенное в круглые скобки, имеет значение, равное присваиваемому. Например, выражение (a=7+2) имеет значение 9. После этого можно записать другое выражение, например: ((а = 7 +2) <10), которое в данном случае будет всегда давать истинное значение. Следующая конструкция:

((c = getch())==’i’ )

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

 

z=(х=у, у=getch())

 

определяет следующие действия: значение переменной у присваивается переменной х: вводится символ с клавиатуры и присваивается переменной у; z получает значение переменной у. Скобки здесь необходимы, поскольку операция запятая имеет более низкий приоритет, чем оператор присваивания, записанный после переменной z (см. табл. 1.2). Операция запятая находит широкое применение для построения выражений цикла for и позволяет параллельно изменять значения нескольких управляющих переменных.

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

Оператор whileформально записывается в виде

 

while (выражение) {тело цикла }

 

Выражение в скобках может принимать ненулевое (истинное) или нулевое (ложное) значение. Если оно истинно, то выполняется тело цикла и выражение вычисляется снова. Если выражение ложно, то цикл while заканчивается.

Основным отличием между циклами while и do-while является то, что тело в цикле do-while выполняется по крайней мере один раз. Оператор do-while формально записывается в виде

 

do {тело цикла} while (выражение);

 

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

Допускается вложенность одних циклов в другие, т. е. в теле любого цикла могут появляться операторы for, while и do-while.

В теле цикла могут использоваться новые операторы: break и continue. Первый из них обеспечивает немедленный выход из цикла. Оператор continue вызывает прекращение очередной и начало следующей итерации.

Операторы организации условных и безусловных переходов.

 Для организации условных и безусловных переходов в программе на языке С используются операторы: if - else, switch и goto. Первый из них записывается в следующем формальном виде:

 

if (проверка_условия) инструкция_1; else инструкция_2;

 

Если условие в скобках принимает истинное значение, то выполняется инструкция_1, а если ложное-то инструкция_2. Если вместо одной необходимо использовать несколько инструкций, то они заключаются в фигурные скобки. В операторе if слово else может и отсутствовать. В этом случае, если условие в скобках принимает истинное значение, то выполняется инструкция_1, а если ложное, то инструкция_1 пропускается. Таким образом, инструкциям_2 будет выполнена всегда.

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

Оператор switch позволяет выбрать одну из нескольких альтернатив. Он записывается в следующем формальном виде:

 

switch (выражение)

{

case константа 1: вариант 1; break;

..........................

case константа n-1: вариант n-1: break;

default: вариант n;

}

 

Здесь вычисляется значение целого выражения в скобках (его иногда называют селектором) и оно сравнивается со всеми константами (константными выражениями). Все константы должны быть различными. При совпадении выполняется соответствующий вариант (одна или несколько инструкций). Вариант с ключевым словом default реализуется, если ни один другой не, подошел (слово defaultможет и отсутствовать). Если default отсутствует, а все результаты сравнения отрицательны, то ни один вариант не выполняется. Для прекращения последующих проверок после успешного выбора некоторого варианта используется оператор break, обеспечивающий немедленный выход из переключателя switch.

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

 

goto метка;

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

 

Примеры программ

Пример1. Использование switch case

#include <stdio.h>

char A;

void main(void)

{

printf("? ");

scanf("%c",&A);

switch (A)

  {

   case 'c': printf(" small %c\n",A); break; /* выход из блока */

    case 'F':

   case 'G': printf(" big %c\n",A);

   break;

   default: printf("Error %c\n",A); //Если нажата не «с», «F» или «G»

}

}

 

Пример1. Использование do while

#include <stdio.h>

void main(void)

{

int A;

do

{

   printf("Zifra?");

   scanf("%d",&A);

   printf("Error %d\n",A);

}

while (A != 9);                                     //Пока А не равно 9

printf("OK %d\n",A);

}

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 158.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...