C++ за 21 день седьмое издание



Download 1,38 Mb.
bet86/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   82   83   84   85   86   87   88   89   ...   437
Bog'liq
word1

#include




  1. using namespace std;

  2. :




    1. int main()




    1. {




    1. JumpToPoint:




    1. int Numl = 0, Num2 = 0;








  1. cout « "Enter two integers: " « endl;




  1. cin >> Numl;




  1. cin » Num2;

    1 1 :

    cout

    «

    Numl

    «

    " x "

    «

    Num2

    «

    "

    =

    " «

    Numl *

    Num2 «

    endl;

    12:

    13:

    cout

    «

    Numl

    «

    " + "

    «

    Num2

    «

    "

    =

    " «

    Numl +

    Num2 <<

    endl;

    14:

    cout

    «

    "Do

    you wish

    to perform

    another

    operation

    (y/n)?"




    15:




    1. endl;




  1. char Repeat = 'y';

Выполнение кода в циклах

127



cin » Repeat;

1В:


  1. if (Repeat == 'у')




  1. goto JumpToPoint;




  1. cout « "Goodbye!" « endl;




  1. return 0;



Результат


Enter two integers:


56
25


56 x 25 = 1400


56+25=81


Do you wish to perform another operation (y/n)?


У


Enter two integers:
95
-47


95 x -47 = -4465


95+-47=48


Do you wish to perform another operation (y/n)?


n


Goodbye!


Анализ

Обратите внимание на основное различие между кодом листинга 6.7 и листинга 6.1: последнему требуются два запуска, чтобы позволить пользователю ввести новый набор чисел и увидеть результат их сложения или умножения. Код листинга 6.7 делает это при одном запуске, циклически повторяя запрос пользователю, желает ли он выполнить дру­ гую операцию. Код, фактически обеспечивающий это повторение, находится в строке 20, где вызывается оператор g o to , если пользователь вводит символ ' у '. В результате ис­ пользования оператора g o to в строке 20 программа переходит к метке Jum pT oP oint, объ­ явленной в строке 5, что фактически перезапускает программу.



ВНИМАНИЕ!

Использование оператора goto не рекомендуется для создания циклов, по­







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




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




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




оставляя также переменные в непредсказуемых состояниях.




Тяжелый случай программы, использующей операторы goto, называется за ­




путанная программа (spaghetti code). Объясняемые на следующих страницах




циклы while, do...while и for вполне позволяют избежать использования




оператора goto.




Единственная причина упоминания здесь оператора goto в том, чтобы объ­




яснить код, который его использует.

128 ЗАНЯТИЕ в. Ветвление процесса выполнения программ




Цикл while

Ключевое слово w h ile языка C++ позволяет получить то, что оператор g o to делал в листинге 6.7, но правильным способом. Синтаксис таков:




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


{
I I Результат выражения = true


БлокОператоров;

}


Выполнение блока операторов повторяется до тех пор, пока выражение возвращ а­ ет значение t r u e . О чень важно, чтобы в коде бы ла ситуация, где выражение возвра­ щ ает значение f a l s e , иначе цикл w h ile никогда не заверш ится.

Листинг 6.8 является эквивалентом листинга 6.7, позволяющим пользователю повто­ рять цикл вычисления, но с использованием цикла w h ile вместо оператора g o to .


ЛИСТИНГ 6.8. Использование цикла while позволяет


пользователю повторно выполнять вычисления______________________________________



  1. #include




  1. using namespace std;



2 :



  1. int main()




  1. {




  1. char UserSelection = 'm'; // Исходное значение



6 :

  1. while (UserSelection != 'x')



8 : {

  1. cout « "Enter the two integers: " « endl;




  1. int Numl = 0, Num2 = 0;




  1. cin » Numl;




  1. cin » Num2;



13:


14: cout « Numl « " x " « Num2 « " = " « Numl * Num2



  1. endl;



15: cout « Numl « " + " « Num2 « " = " « Numl + Num2



  1. endl;



16:


17: cout « "Press x to exit(x) or any other key to recalculate"



    1. endl;




  1. cin » UserSelection;




  1. }

2 0 :
21: cout « "Goodbye!" « endl;


2 2 :



  1. return 0;




  1. }



Результат


Enter the two integers:


56

Выполнение кода в циклах

129



25


56 х 25 = 1400


56+25=81


Press х to exit(х) or any other key to recalculate r


Enter the two integers:
365
-5


365 x -5 = -1825


365 + -5 = 360


Press x to exit(x) or any other key to recalculate


x


Goodbye!


Анализ

Цикл w h ile в строках 7 -19 содержит больш ую часть логики этой программы . Об-ратите внимание, что цикл w h ile проверяет выражение ( U s e r S e l e c t i o n ! = ' х 1) и продолжает выполнение, только если оно возвращ ает значение t r u e . Для обеспечения первого запуска символьная переменная U s e r S e le c ti o n инициализируется в строке 5 значением ' i '. Это должно было быть любым значением, кроме *х 1 (иначе условие не будет выполняться с самого первого цикла и приложение закончит выполнение, не по­ зволив пользователю ничего сделать). Первый запуск очень прост — у пользователя в строке 17 спрашивают, не желает ли он выполнить вычисления снова. Строка 18 прини­ мает сделанный пользователем выбор; здесь вы изменяете значение выражения, которое проверяет цикл w h ile , давая программе шанс продолжить выполнение или завершить его. По завершении первого цикла выполнение возвращается к проверке выражения оператора w h ile в строке 7 и цикл повторяется, если пользователь ввел значение, отличное от ' х '. Если пользователь нажал клавишу <х>, то выражение в строке 7 вернет значение f a l s e и никл w h ile окончится. Приложение после этого также закончит работу, вежливо попро­ щавшись.




ПРИМЕЧАНИЕ Цикл также называется итерацией (iteration). Выражения, задействовавшие циклы while, do...while и f_or, также называют итерационными выра­ жениями.
Цикл do...while

Бывают ситуации (как в листинге 6.8), когда определенному сегменту кода, повторяе­ мому в цикле, необходимо гарантировать выполнение по крайней мере однажды. Для это­ го используется цикл d o . . . w h ile .


Его синтаксис таков:




do

{
БлокОператоров; // выполняется как минимум раз




} while(у с л о в и е ); // закончить цикл, если условие ложно



5 Зак. 3626


13:

14:

15:

16:
130 ЗАНЯТИЕ 6. Ветвление процесса выполнения программ

Обратите внимание, что строка, содержащая часть w h ile (у с л о в и е ), заканчивается точкой с запятой. Это является отличием от цикла w h ile , в котором точка с запятой фак­ тически завершила бы цикл в первой строке, приведя к пустому оператору.


ЛИСТИНГ6.9. Использование цикла do...while для повторного выполнения блока кода





  1. #include




  1. using namespace std;



2 :

  1. int main()




  1. {



5: char UserSelection = 'x ’; // Исходное значение



  1. do




  1. {



8: cout « "Enter the two integers: " « endl;



  1. int Numl = 0,Num2 = 0;




  1. cin » Numl;




  1. cin » Num2;

1 2 :


cout « Numl « " x " « Num2 « " = " « Numl * Num2



  1. endl;



cout « Numl « " + " « Num2 « " = " « Numl + Num2



  1. endl;



cout « "Press x to exit(x) or any other key to recalculate"



    1. endl;




  1. cin » UserSelection;




  1. } while (UserSelection != 'x');







20: cout « "Goodbye!" « endl;
2 1 :

  1. return 0;




  1. }




Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   82   83   84   85   86   87   88   89   ...   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish