русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Оператор передачи управления go to


Дата добавления: 2013-12-23; просмотров: 962; Нарушение авторских прав


Do

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

Если в программе имеет место периодическое повторение некоторой последовательности действий, то говорят о наличии цикла.

Циклические вычисления в языке Си реализуются операторами for ... , while ... , do ... while... . Операторы цикла for – со счетчиком , while- с предусловием; do...while- с постусловием.

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

for (выражение_1 ; выражение_2 ; выражение_3)

оператор;

где: выражение_1 устанавливает начальное значение параметра цикла;

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

выражение_3 задает правило модификации параметра цикла.

Каждое из этих трех выражений может быть групповым или может отсутствовать, в том числе и одновременно, но разделители ‘;’ обязательно должны быть. Если отсутствует выражение_2 , то оно считается истинным по умолчанию.

Конструкциии бесконечных циклов:

for (; ; ;) printf(“ Бесконечный цикл\ n”);

for (i =1; 1; i++) printf(“ Бесконечный цикл\ n”);

for (i =10; i >6; i++) printf(“ Бесконечный цикл\ n”);

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

Пример 3.4: Вычислим сумму первых n целых положительных чисел.

#include <stdio.h>

#include <conio.h>

void main()

{

int n; // количество суммируемых чисел

int sum; // сумма

int i ; // счетчик циклов

printf(“Вычисление суммы положительных чисел \n”);

printf(“введите количество суммируемых чисел \n”);

scanf(“%i”, &n);

sum = 0;

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

sum + = i;

printf(“ Сумма первых % i целых положительных чисел \n”);

printf(“ равна % i”, sum);

printf(“ \n Для завершения нажмите <Enter>”);



getch();

}

 

Наиболее универсальным является оператор цикла while (пока). Оператор while имеет следующую форму:

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

оператор;

Пока выражение в скобках (. . .) не равно нулю, повторяется выполнение оператора (простого или составного).

Пример 3.5:

/*Определение длины строки */

#include <stdio.h>

void main (void)

{

int dlina = 0 ;

puts (“ Введите строку , затем нажмите <Enter>”) ;

while (getchar () != ’\n’)

dlina ++ ;

printf (“\n Длина строки равна %d символам “, dlina) ;

}

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

В Си используется также оператор цикла с постусловием do ... while .Форма его записи следующая:

оператор;

while (выражение) ;

Сначала выполняется тело цикла (оператор), а затем вычисляется значение выражения. Если оно равно нулю (истинно), то тело цикла выполняется снова. Этот процесс повторяется до тех пор, пока значение выражения не станет равным нулю. После чего управление будет передано следующему оператору программы.

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

Замечание. Операторы цикла for, while, do...while могут завершаться досрочно при выполнении в их теле операторов break , go to и return.

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

Оператор продолжения continue. Оператор продолжения передает управление на следующую итерацию в операторах for, while , do ... while . Он может присутствовать только в теле этих операторов. Остающиеся в теле цикла операторы при этом не выполняются. В операторе for следующая операция начинается с вычисления выражения приращения, а затем происходит вычисление условного выражения. В операторах while и do ... while следующая операция начинается с вычисления условных выражений.

Пример 3.6: Программа печатает натуральные числа, кратные 7.

#include <stdio.h>

main( )

{

int i;

for (i = 1; i <1000; i++)

{

for (i % 7) continue ; // Вложенный

printf (“%8d” , i) // цикл

}

}

 

 

 

В языке Си используется также оператор безусловного перехода go to, хотя без него можно обойтись в любой ситуации. Для использования оператора go to надо ввести понятие метки (label). Синтаксис:

go to <метка>;

<метка>: <оператор>;

Действие: Оператор go to передает управление непосредственно оператору, помеченному меткой. Область действия метки ограничивается функцией, в которой она определена, поэтому нельзя передать управление оператору, находящемуся в другой функции. Имя метки должно быть уникальным.

При последовательном выполнении операторов метка игнорируется. Она имеет смысл только для оператора go to.

По метке можно передать управление любому оператору функции, например, войти внутрь цикла или в конструкцию if. Это само по себе довольно опасно. Поэтому применяются метки только в тех случаях, когда это действительно оправдано.

Одно из полных применений оператора go to – это выход из влажных циклов.

for (… ) { whlie (…) { for (…) { . . . go to exit;

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

} } } exit: printf (“Быстрый выход из вложенных циклов”);

 



<== предыдущая лекция | следующая лекция ==>
Вложение конструкции оператора if | Препроцессор языка Си и директивы условной компиляции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.