Оператор CONTINUE

Язык С
Строк программы, исключая математическое обеспечение Является учебным введением в центральную часть языка “C” Hачинаем. Единственный способ освоить новый язык Оператор FOR Набор полезных программ Подсчет символов Подсчет слов Функции Аргументы - вызов по значению Область действия: внешние переменные Резюме Константы Описания Преобразование типов До 9 и буквы от а до F Операции и выражения присваивания Старшинство и порядок вычисления Операторы и блоки Переключатель Цикл DO - WHILE Оператор CONTINUE Основные сведения Функции, возвращающие нецелые значения Еще об аргументах функций Правила, определяющие область действия Статические переменные Блочная структура Рекурсия Указатели и адреса Указатели и массивы Адресная арифметика Указатели символов и функции Указатели - не целые До 12, а не от 0 до 11. Так как за экономию памяти у нас пока не награждают, такой способ проще, чем подгонка индек-сов Инициализация массивов указателей Указатели на функции Структуры Структуры и функции Указатели на структуры Мы продемонстрируем, как правильно выполнить эту задачу Поля Определение типа Обращение к стандартной библиотеке Форматный вывод - функция PRINTF Форматный ввод - функция SCANF Форматное преобразование в памяти Обработка ошибок - STDERR и EXIT Обращение к системе Низкоуровневый ввод/вывод - операторы READ и WRITE Произвольный доступ - SEEK и LSEEK Пример - распечатка справочников Пример - распределитель памяти Константы Синтаксическая нотация Преобразования Первичные выражения Унарные операции Аддитивные операции Операция присваивания Спецификаторы типа Описание структур и объединений Инициализация TYPEDEF Оператор SWITCH Внешнее определение функции Область действия внешних идентификаторов Неявные описания Явные преобразования указателей Анахронизмы Операторы
439386
знаков
0
таблиц
0
изображений

3.8. Оператор CONTINUE

 

Оператор CONTINUE родственен оператору BRеак, но исполь-

зуется реже; он приводит к началу следующей итерации охваты-

вающего цикла (FOR, WHILE, DO ). В циклах WHILE и DO это оз-

начает непосредственный переход к выполнению проверочной

части; в цикле FOR управление передается на шаг реинициали-

зации. (Оператор CONTINUE применяется только в циклах, но не

в переключателях. Оператор CONTINUE внутри переключателя

внутри цикла вызывает выполнение следующей итерации цикла).

В качестве примера приведем фрагмент, который обрабаты-

вает только положительные элементы массива а; отрицательные

значения пропускаются.

FOR (I = 0; I < N; I++) {

IF (A[I] < 0) /* SKIP NEGATIVE ELEMENTS */

CONTINUE;

... /* DO POSITIVE ELEMENTS */

 }

 

Оператор CONTINUE часто используется, когда последующая

часть цикла оказывается слишком сложной, так что рассмотре-

ние условия, обратного проверяемому, приводит к слишком глу-

бокому уровню вложенности программы.

 

Упражнение 3-6.

 

Напишите программу копирования ввода на вывод, с тем ис-

ключением, что из каждой группы последовательных одинаковых

строк выводится только одна. (Это простой вариант утилиты

UNIQ систем UNIX).

3.9. Оператор GOTO и метки

 

В языке “C” предусмотрен и оператор GOTO, которым беско-

нечно злоупотребляют, и метки для ветвления. С формальной

точки зрения оператор GOTO никогда не является необходимым,

и на практике почти всегда можно обойтись без него. Мы не

использовали GOTO в этой книге.

Тем не менее, мы укажем несколько ситуаций, где оператор

GOTO может найти свое место. Наиболее характерным является

его использование тогда, когда нужно прервать выполнение в

некоторой глубоко вложенной структуре, например, выйти сразу

из двух циклов. Здесь нельзя непосредственно использовать

оператор BRеак, так как он прерывает только самый внутренний

цикл. Поэтому:


·     72 -

FOR ( ... )

FOR ( ... ) {

...

IF (DISASTER)

GOTO ERROR;

}

...

 

ERROR:

CLEAN UP THE MESS

Если программа обработки ошибок нетривиальна и ошибки могут

возникать в нескольких местах, то такая организация оказыва-

ется удобной. Метка имеет такую же форму, что и имя перемен-

ной, и за ней всегда следует двоеточие. Метка может быть

приписана к любому оператору той же функции, в которой нахо-

дится оператор GOTO.

В качестве другого примера рассмотрим задачу нахождения

первого отрицательного элемента в двумерном массиве. (Много-

мерные массивы рассматриваются в главе 5). Вот одна из воз-

можностей:

 

FOR (I = 0; I < N; I++)

FOR (J = 0; J < M; J++)

IF (V[I][J] < 0)

GOTO FOUND;

/* DIDN'T FIND */

...

FOUND:

/* FOUND ONE AT POSITION I, J */

...

 

Программа, использующая оператор GOTO, всегда может быть

написана без него, хотя, возможно, за счет повторения неко-

торых проверок и введения дополнительных переменных. Напри-

мер, программа поиска в массиве примет вид:

 

FOUND = 0;

FOR (I = 0; I < N && !FOUND; I++)

FOR (J = 0; J < M && !FOUND; J++)

FOUND = V[I][J] < 0;

IF (FOUND)

/* IT WAS AT I-1, J-1 */

...

ELSE

/* NOT FOUND */

...

Хотя мы не являемся в этом вопросе догматиками, нам все

же кажется, что если и нужно использовать оператор GOTO, то

весьма умеренно.

·     73 -

4. Функции и структура программ.

 

Функции разбивают большие вычислительные задачи на ма-

ленькие подзадачи и позволяют использовать в работе то, что

уже сделано другими, а не начинать каждый раз с пустого мес-

та. Соответствующие функции часто могут скрывать в себе де-

тали проводимых в разных частях программы операций, знать

которые нет необходимости, проясняя тем самым всю программу,

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

Язык “C” разрабатывался со стремлением сделать функции

эффективными и удобными для использования; “C”-программы

обычно состоят из большого числа маленьких функций, а не из

нескольких больших. Программа может размещаться в одном или

нескольких исходных файлах любым удобным образом; исходные

файлы могут компилироваться отдельно и загружаться вместе

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

здесь не будем вдаваться в детали этого процесса, поскольку

они зависят от используемой системы.

Большинство программистов хорошо знакомы с “библиотечны-

ми” функциями для ввода и вывода /GETCHAR , PUTCHAR/ и для

численных расчетов /SIN, COS, SQRT/. В этой главе мы сообщим

больше о написании новых функций.

 


Информация о работе «Язык С»
Раздел: Информатика, программирование
Количество знаков с пробелами: 439386
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
48443
0
0

... основаниям. При этом философская абстракция языка оказывается неразрывно связана с основными темами и движениями философии в целом. Более конкретно, на ранние стадии традиционно рассматриваемого в рамках АФ анализа обыденного языка глубокое влияние оказала философия Дж. Э. Мура, особенно его учение о здравом смысле, согласно которому такие понятия, как «человек», «мир», «я», «внешний мир», « ...

Скачать
43709
0
0

... и других странах СНГ, а также облегчение доступа к русской и мировой культуре и науке. Таким образом, судя по данным наших исследований, востребованность русского языка осталась в республике достаточно высокой. Многие представители современной молдавской молодежи продолжают, как их отцы и деды, тянуться к русской культуре, научным и техническим достижениям России. Русский язык остается языком ...

Скачать
39778
0
1

... рисуночное словесно-слоговое письмо). Памятники среднеэламского периода (14—12 вв. до н.э.) выполнены аккадской клинописью. Памятники новоэламского периода относятся к 8—6 вв. до н.э. Был официальным языком в персидском государстве Ахеменидов в 6—4 вв. предполагается, что он, подвергшись влиянию древнеперсидского, сохранился до раннего средневековья. 7. Бурушаски язык Язык бурушаски ( ...

Скачать
64931
0
0

... /диалект), скифский, согдийский, среднеперсидский, таджикский, таджриши (язык/диалект), талышский, татский, хорезмийский, хотаносакский, шугнано-рушанская группа языков, ягнобский, язгулямский и др. Они относятся к индоиранской ветви индоевропейских языков. Области распространения: Иран, Афганистан, Таджикистан, некоторые районы Ирака, Турции, Пакистана, Индии, Грузии, Российской Федерации. Общее ...

0 комментариев


Наверх