Программирование >>  Процедурные приложения 

1 ... 32 33 34 [ 35 ] 36 37 38 ... 150


В языках C/C++ цикл while обычно используется в тех случаях, когда число повторений цикла заранее не известно. Он является циклом с предусловием, как и цикл for. Другими словами, программа проверяет истинность условия цикла до того, как начать следующую итерацию. Поэтому, в зависимости от начального условия, цикл может выполняться несколько раз или не выполняться вообще. Цикл while имеет следующий синтаксис:

while(условие) выражение;

Если тело цикла состоит из нескольких строк, необходимо использовать фигурные скобки: while(условие) ( выражение1; выражение2; выражениеЗ; выражение-п; }

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

* while. с

* В этой программе на языке С демонстрируется использование цикла while.

#include <stdio.h>

#define WORD 16 #define ONE BYTE 8

int main()

int ivalue = 256,ibit position = 1; unsigned int umask = 1; printf( Число%d\n , ivalue);

printf( имеет следующий двоичный эквивалент: ); while(ibit position <= WORD) { if((ivalue>> (WORD - ibit position)) & umask) /* сдвигаем каждый */

printf( l );/* бит на нулевую */

else /* позицию и сравниваем */

printf( 0 );/* число с константой */ if(ibit position == ONE BYTE) /* umask */ printf ( ); ibit position++; return(0);

Данная программа начинается с описания двух констант, WORD и ONE BYTE, значения которых при необходимости можно модифицировать. Первая из них определяет длину в битах анализируемого числа, а вторая - позицию, после которой следует поставить пробел, чтобы отделить на экране одну группу разрядов от другой. В цикле while осуществляется поочередный (от старшего к младшему) сдвиг битов переменной ivalue в первую позицию, сравнение полученного числа со значением переменной umask (маска младшего разряда) и вывод нуля или единицы в зависимости от результата.

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

fwhile. с

В этой программе на языке С цикл while используется при работе с файлами. В программе демонстрируются дополнительные возможности файлового ввода/вывода.



#include <stdio.h> #define MAX CHARS 30 int main() { int c;

FILE *ifile, *ofile;

char szi file name [MAX CHARS] ,

szo file name[MAX CHARS] ; printf( Введите имя исходного файла: ); scanf( %s ,szi file name); if((ifile= fopen(szi file name, r >>== NULL)

printf( \nФайл%s не может быть открыт , szi file name); return(0);

printf ( Введите имя выходного файла: ); scanf( %s , szo f ile name) ;

if ((oflie = fopen(szp file name, w )) == NULL) {

printf ( \nФайл %s не может быть открыт , szo f ile name) ; return (0);

while (( с= fgetc(ifile)) != EOF)

fputc(c,of ile) ; return(0); }

В программе также показано использование функций файлового ввода-вывода данных, таких как fopen ( ) , fgetc( ) и fputc( ) (более подробно об этих функциях см. в главе Ввод-вывод в языке С ).

Цикл do/while

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

Цикл do/while имеет следующий синтаксис:

do .

выражение; while(условие) ;

Если тело цикла состоит более чем из одной строки, необходимо ставить фигурные скобки:

выражение1; выражение2; выражениеЗ;

выражение-n ; }

while(условие);

В следующем примере цикл do/while используется для получения от пользователя строки текста:

dowhile.cpp

В этой программе на языке C++ демонстрируется

использование цикла do/while.

#include <iostream.h>

#define LENGTH 80

int main()

char cSentence [LENGTH] ; 106



int iNumChars = 0, iNumWords = 1;

cout << Введите предложение : ;

cin.getline (cSentence, LENGTH); } while (cSentence [0]== \0); while (cSentence [iNumChars] != \0) { if (cSentence [iNumChars] !=&& cSentence [iNumChars] != \t&& (cSentence [iNumChars+1] == cSentence [iNumChars+1] == \t cSentence [iNumChars+1] == \0))

iNumWords++; iNumChars++;

cout<< Вы ввели << iNumChars символов\п ; cout<< Вы ввели << iNumWords<< слов ; return(0); }

В цикле do/while запрос будет повторяться до тех пор, пока пользователь не введет хотя бы один символ. При простом нажатии клавиши [Enter] функция getline( ) возвращает символ null, в таком случае цикл повторяется. Как только в массив будет записана строка, цикл завершится и программа произведет подсчет количества введенных символов и слов.

Инструкции перехода

В языках C/C++ имеется четыре инструкции перехода: goto, break, continue и return. Инструкция goto(или ее аналог) существует во многих языках высокого уровня и предназначена для принудительного перехода по указанному адресу, определяемому меткой. Ее синтаксис таков:

goto метка;

В отличие от языка типа Basic, где данная инструкция находит широкое применение, в C/C++ наличие в программе команды goto рассматривается как плохой стиль программирования, и считается, что в четко структурированной и грамотно написанной программе этой инструкции быть не должно.

Инструкция break

Инструкция break позволяет выходить из цикла еще до того, как условие цикла станет ложным. По своему действию она напоминает команду goto, только в данном случае не указывается точный адрес перехода: управление передается первой строке, следующей за телом цикла. Рассмотрим пример:

* break. с

* В этой программе на языке С демонстрируется использование

* инструкции break.

int main ()

{ int itimes = 1, isum = 0; while (itimes < 10) { isum += itimes; if (isum > 20) break; itimes++; return (0); }

Проанализируйте работу этой программы с помощью отладчика, контролируя значения переменных isum и itimes. Обратите внимание на то, что происходит, когда переменная isum достигает значения 21. Вы увидите, что в этом случае выполняется инструкция break, в результате чего цикл прекращается и выполняется первая строка, следующая за телом цикла. В нашем примере это инструкция return, которая завершает программу.



1 ... 32 33 34 [ 35 ] 36 37 38 ... 150

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика